大纲:

NFS服务器运行原理

实战配置NFS服务器

配置Samba服务器配置现实文件共享

-----------------------------------------------

问题:

# 怎么查看文件系统类型?!

file -s /dev/sda #可查看未挂载的文件系统

df -T  #df -lhT #查看已挂载文件系统

mount #查看已挂载文件系统

fdisk /dev/sda  <输入 c 或 u 或 p 查看信息>

parted  <输入p  打印分区表>

cat /etc/fstab # 查看挂载信息

------------------------------------------------

NFS服务:网络文件服务系统(Network File System)

简述:NFS,是Network File System的简写,即网络文件系统。

网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS.

NFS允许一个系统在网络上与他人共享目录和文件。

通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。

功能:共享本地目录和文件给网络上的其他人

特点:用户和程序可以像访问本地文件一样访问远端系统上的文件.

模式:C/S模式

监听端口:2049

cat /etc/services | grep nfs

#/etc/services 是linux系统中,所有服务的端口的注册文件

安装:

yum -y install nfs*

因为我使用的是centos6.8版本的系统,有两个iso镜像.其中有部分安装包,在DVD2中,所以,在安装过程中出现如下错误!

Error Downloading Packages:

  libgssglue-devel-0.1-11.el6.x86_64: failure: Packages/libgssglue-devel-0.1-11.el6.x86_64.rpm from CentOS6-SERVER: [Errno 256] No more mirrors to try.

由此可知,在本地yum源中,找不到这个文件,手动从DVD2中拷贝这个包,并安装即可

rpm -ivh libgssglue-devel-0.1-11.el6.x86_64.rpm

rpm -ivh nfs-utils-lib-devel-1.1.5-11.el6.x86_64.rpm

继续安装即可!

安装成功!!!

设置开机自启动:

chkconfig --add nfs

chkconfig --list nfs

chkconfig nfs on

启动NFS服务:

/etc/init.d/nfs start

service nfs start

配置文件位置:

vim /etc/exports

查看服务是否正常:

showmount -e 192.168.171.120

showmount -e 127.0.0.1

配置文件详解:

默认格式:

<Shared File Path>  <allow IP>(权限)

一些特殊处理:

/tmp/a/no_root_squash      *(rw,no_root_squash)

/tmp/a/sync               192.168.0.0/24(rw,sync)

/tmp/a/ro                  192.168.1.64(ro)

/tmp/a/all_squash             192.168.0.0/24(rw,all_squash,anonuid=500,anongid=500)

/tmp/a/async                    192.168.3.0/255.255.255.0(async)

/tmp/a/rw          192.168.3.0/255.255.255.0(rw)    192.168.4.0/255.255.255.0(rw)

/tmp/a/root_squash   *(rw,root_squash)   

部分权限解析:

sync/async:数据同步写入硬盘/不同步写入在内存中缓存

root_squash(压制):如果用root登录nfs,使其身份自动切换成nfsnobody。

no_root_squash:如果用root登录nfs,使其身份就是root。

all_squash:用户登录nfs时,指定身份为UID/GID的用户。

注意:在发布共享目录的格式中除了共享目录是必跟参数外,其他参数都是可选的。并且共享目录与客户端之间及客户端与客户端之间需要使用空格符号,但是客户端与参数之间是不能有空格的

NFS服务,存在两种权限,一种是服务本身的权限,另一种是目录的访问权限!!

一般情况,远程登录的用户,是使用的nfsnobody(在安装nfs服务时,创建的用户)进行远程操作的.但是当我们要对目录进行读写操作时,要给予共享的目录对应的权限!!

chmod 777 -R  /test

tail -1 /etc/passwd #安装完成服务后,查看密码文件,可以看到创建的nfsnobody用户

部分问题解决方案:

当出现Permission denied或Read-only file system时,

解决方法:

设置访问权限一般包含2部分

1)服务本身权限

2)目录访问权限

首先,查看配置文件/etc/exports中,共享的目录是否有相应权限

在检查共享的文件目录,是否有对应用户的访问权限!

修改权限

chmod 777 -R /test/

chown nfsnobody.nfsnobody -R /test/

#############################

# NFS共享文件最常用配置如下:

# <Shared File Path>  *(rw)

#############################

实战:安装配置NFS服务器,并实现文件共享

第一步:服务端安装NFS服务,并设置开机自动挂载

yum -y install nfs*

yum -y install nfs-utils

主服务包是nfs-utils

chkconfig --add nfs

chkconfig nfs on

chkconfig --list nfs

第二步:修改配置文件如下:

#/etc/exports

/test/a/sync           192.168.0.0/24(rw,sync)

/test/a/async          192.168.3.0/255.255.255.0(rw,async)

/test/a/ro             192.168.171.121(ro)

/test/a/rw             192.168.171.121(rw)  192.168.172.0(rw)

/test/a/anonuid        192.168.171.0/255.255.255.0(rw,anonuid=500,anongid=500)

/test/a/all_squash     192.168.171.0/255.255.255.0(rw,all_squash,anonuid=500,anongid=500)

/test/a/root_squash    *(rw,root_squash)

/test/a/no_root_squash *(rw,no_root_squash)

第三步:创建相应目录,如上配置共享路径,并启动nfs服务

/etc/init.d/nfs start

第四步:查看服务运行状态并查看共享是否生效

netstat -anlptu | grep nfs #查看服务监听信息

showmount -e 127.0.0.1  #查看本地共享文件是否生效

第五步:客户端查看共享是否生效(使用与服务器相同网段的网卡)

showmount -e 192.168.171.120

第六步:挂载共享文件系统,并检测

mount -t nfs 192.168.171.120:/test/a/rw /test

df -h

当挂在时,出现如下错误:

mount.nfs: rpc.statd is not running but is required for remote locking.

是因为rpcbind服务没有启动,rpc服务是nfs的支持和依赖

第七步:添加开机启动,自动挂载NFS文件系统

echo "192.168.171.120:/test/a/rw /test nfs defaults 0 0" >> /etc/fstab

保证下次开机时,自动挂载

第八步:分别挂载其他目录,测试(在服务器端运行命令 chmod 777 -R /test)

[root@xiaogan121 ~]# mount -t nfs 192.168.171.120:/test/a/ro /test

[root@xiaogan121 ~]# touch /test/a.txt

touch: cannot touch `/test/a.txt': Read-only file system

[root@xiaogan121 ~]# umount /test

[root@xiaogan121 ~]# mount -t nfs 192.168.171.120:/test/a/anonuid /test

[root@xiaogan121 ~]# touch /test/a.txt

touch: cannot touch `/test/a.txt': Permission denied

[root@xiaogan121 ~]# touch /test/a.txt

[root@xiaogan121 ~]# ls -l /test/a.txt

-rw-r--r-- 1 nobody nobody 0 Sep 14 08:53 /test/a.txt

[root@xiaogan121 ~]# umount /test

[root@xiaogan121 ~]# mount -t nfs 192.168.171.120:/test/a/all_squash /test

[root@xiaogan121 ~]# touch /test/a.txt

[root@xiaogan121 ~]# ls -l /test/a.txt

-rw-r--r-- 1 nobody nobody 0 Sep 14 08:54 /test/a.txt

[root@xiaogan121 ~]# umount /test

[root@xiaogan121 ~]# mount -t nfs 192.168.171.120:/test/a/root_squash /test

[root@xiaogan121 ~]# touch /test/a.txt

[root@xiaogan121 ~]# ls -l /test/a.txt

-rw-r--r-- 1 nfsnobody nfsnobody 0 Sep 14 08:55 /test/a.txt

[root@xiaogan121 ~]# umount /test

[root@xiaogan121 ~]# mount -t nfs 192.168.171.120:/test/a/no_root_squash /test

[root@xiaogan121 ~]# touch /test/a.txt

[root@xiaogan121 ~]# ls -l /test/a.txt

-rw-r--r-- 1 root root 0 Sep 14 08:55 /test/a.txt

[root@xiaogan121 ~]# umount /test

[root@xiaogan121 ~]#

Samba服务---不同系统间资源共享(文件/打印机)

一. 简述:

Samba最先在Linux和Windows两个平台之间架起了一座桥梁,使我们可以在Linux系统和Windows系统之间互相通信.(例如:拷贝文件\实现不同操作系统之间的资源共享等等).利用Samba服务,我们可以将其架设成为一个功能非常强大的文件服务器,也可以将其架设成打印服务器提供本地和远程连接打印.

运行模式:C/S模式

二. Samba服务功能:

文件和打印机共享:文件和打印机共享是Samba的主要功能,SMB进程实现资源共享,将文件和打印机发布到网络之中,以供用户访问.

身份验证和权限设置:smbd服务支持user mode 和domain mode等身份验证和权限设置模式.

三. 监听端口:

port 139和445

NetBIOS是Network Basic Input/Output System的简称,网络基本输入/输出系统协议。协议,一般指用于局域网通信的一套API,是由IBM公司开发。主要作用:通过NETBIOS协议获得计算机名称,然后把计算机名解析为对应IP地址。

四. 安装:

yum -y install samba samba-client

Server:

samba-3.5.10-114.el6.x86_64.rpm # ----> 主程序包

Client:

samba-client-3.5.10-114.el6.x86_64.rpm  # ----> 客户端安装这个包

五. 配置文件位置:

ls /etc/samba/smb.conf

六. 配置文件详解及配置:

路径:/etc/samba/smb.conf

/etc/samba/smb.conf   ---> samba主要配置文件

samba存在很多的配置选项,在smb.conf中存在少量的介绍,大量介绍见下:

Samba-HOWTO-Collection   --->  查看安装\配置和使用信息

http://www.samba.org/samba/docs/Samba-HOWTO-Collection.pdf

Samba-Guid    ---->   smb.conf配置案例

http://www.samba.org/samba/docs/Samba-Guide.pdf

其中,以; 开头行,表示samba的配置信息,默认不生效,想要让配置生效,去掉;即可

以# 开头的行,表示注释信息

当配置完成后,可以使用testparm命令,对配置文件进行基本的语法检查

配置文件中,存在两种参数,全局参数和局部参数

全局参数,全局生效!局部参数,局部生效!

在配置文件中,全局参数从

[Global]

行开始!往下,到遇到下一个中括号结束

全局参数:

==== Global Settings ====

全局参数声明:

[Global]

字段值=设定值

---- Network Related Options ----

workgroup = <GroupName>  #组名或工作域名

server string = <Descript Information> #描述信息

netbios name = #指定特定的服务名称,而不予主机名相同

Interfaces =  #指定我们可以使用的端口,可使用多端口 (never omit localhost)

Hosts Allow/Hosts Deny #让我们可以设置谁可以连接,也可设置为局部参数

例如:

workgroup = MYGROUP

server string = Samba Server Version %v

netbios name = MYSERVER

interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

hosts allow = 127. 192.168.12. 192.168.13.

1)设置samba 服务器所在工作组或域名

我们设置samba 服务器的工作组为xuegod.cn

       workgroup = xuegod.cn  #工作组

2)服务器描述,服务器描述实际上类似于备注信息,

设置samba 描述信息为“xuegod.cn Samba Server  ”。

        server string = xuegod.cn Samba Server  #samba服务器描述

---- Logging Options -----

log file = <Log File Path>  #日志文件路径

max log size = <Size>  #日志文件大小

log file 设置samba 日志的字段。

---- Standalone Server Options ----

security = user #设置安全模式

# 安全模式 share user server domain AD

# share安全模式 不用用户名密码

# user安全模式  需要提交合法的帐号和密码 默认级别

passdb backend = tdbsam # 值:tdbsam(默认)/ldapsam

smbpasswd = <FilePath> # 值: samba 用户的passwd

3)设置samba 服务器安全模式。常见模式有两种:share 安全级别模式和user 安全级别模式

samba 服务器有share、user、server、domain 和AD活动目录 五种安全模式。

(1)share 安全级别模式

客户端登录samba 服务器,不需要输入用户名和密码就可以浏览samba 服务器的资源,适用于公

共的共享资源,安全性差,需要配合其他权限设置,保证samba 服务器的安全性。

(2)user 安全级别模式

客户端登录samba 服务器,需要提交合法帐号和密码,经过服务器验证才可以访问共享资源,服务器默认为此级别模式。

==== Share Definitions ====

#共享目录设置

Usage:

[<NAME>]   # ---> 共享名称

comment = <Descript>  # ---> 描述信息

browseable = <yes/no>  # ---> 是否可见

valid users = <user/@group> # ---> 共享给哪些用户或组

4)、Share Definitions 共享服务的定义

[homes]为特殊共享目录,表示用户主目录。

[printers]表示共享打印机。

配置一个共享资源:

[share]  #设置共享名

comment = Home Directories  #描述

browseable = yes   #是否允许查看此共享内容 。如果是否,后期通过绝对路径,可以查看到。

path = /share      #共享路径,写绝对路径

public = yes  #允许匿名查看

readonly = yes

5)设置访问用户

如果共享资源存在重要数据的话,需要对访问用户审核,我们可以使用valid users 字段进行设置

格式:

valid users = 用户名

valid users = @组名

6)设置目录只读

共享目录如果限制用户的读写操作,我们可以通过readonly 实现

格式:

readonly = yes #只读

readonly = no #读写

7)设置目录可写

如果共享目录允许用户写操作,可以使用writable 或write list 两个字段进行设置

writable 格式:

writable = yes #读写

writable = no #只读

write list 格式:

write list = 用户名

write list = @组名

samba服务安装后,默认共享用户的家目录和打印机

七. 服务使用和添加开机启动

1. Samba服务启动:

service smb start

/etc/init.d/smb restart

2. Samba服务重新加载

/etc/init.d/smb reload 

service smb reload

3. Samba开机自动加载

chkconfig smb on

4. 查看Samba端口

netstat -anlptu | grep smb

windows客户端访问共享文件方法:

在windows中,输入win + r 运行

\\<Server IP Address> #回车即可

实战:安装Samba服务,并配置服务(多个方案实现)

实验环境:

Server: xiaogan120.cn 192.168.171.120

Client(Linux): xiaogan121.cn 192.168.171.121

Client(Windows): Windowsn 10  192.168.171.1

配置文件:/etc/samba/smb.conf

案例:

例1:share安全级别

例1.1: windows客户端访问共享文件

例1.2: linux客户端访问共享文件

例2: user安全级别

例2.1: windows客户端访问共享文件

尝试创建文件(无法创建文件,解决办法)

例2.2: linux客户端访问共享文件

例3: write list #贡献目录可以进行写入操作的用户

例4: 隐藏共享的文件

例5: 创建独立的配置文件,不通用户显示不通的共享文件

例6: linux访问windows共享文件的方法

配置流程

1. 编辑主配置文件/etc/samba/smb.conf  指定共享目录,并设置共享权限

2. 在smb.conf中,找到日志文件名称和存放路径 

3. 设置共享目录的本地系统权限及samba共享权限

4. 重新加载配置文件或重新启动smb服务,使配置生效!

例1: share安全级别:

1. Server端xiaogan120.cn ---> 安装samba服务

yum -y install samba samba-client

2. Server端xiaogan120.cn ---> 修改配置文件如下:

[shared]

    comment = Shared File Directories

    path = /test

    public = yes

    readonly = yes

修改全局参数

security = share

3. Server端启动或重启smb服务

/etc/init.d/smb start #启动

/etc/init.d/smb restart #重启

chkconfig --add smb # 添加开机启动项

chkconfig smb on # 设置smb开机启动

chkconfig --list smb # 查看smb开机启动级别

4. 查看监听端口,并查看共享目录:

netstat -anlptu | grep smb

smbclient -L 127.0.0.1 #不用输入密码,直接回车即可

5. Client端xiaogan121.cn ---> 安装Samba Client服务

yum -y install samba-client

例1.1: Linux客户端访问共享文件

6. Client端xiaogan121.cn ---> 查看Server端共享文件

smbclient -L 192.168.171.120

smbclient //192.168.171.120/shared  

#注意, 这里的共享文件路径  //192.168.171.120/shared 

例1.2: Windows客户端访问共享文件

7. Client端windows系统 --- > 查看Server端共享文件

直接输入win + r ,然后输入 \\192.168.171.120

尝试创建文件,因为配置文件标注readonly = yes,所以我们无法写入文件,即使我们为/test目录给予写入权限,也不行,详情如下:

修改配置文件  readonly = no  或 writable = yes ,就可以创建成功了!

例2: user安全级别

1. 修改配置文件如下:

[Global]

security = user

passdb backend = smbpasswd

smb passwd file = /etc/samba/smbpasswd

2. 重新启动服务

/etc/init.d/smb restart

service smb restart

2.1 并创建实验用户和组

groupadd sales    #创建用户组

useradd -g sales sale1 #创建用户,并指定用户所属组

useradd -g sales sale2

smbpasswd -a sale1 #为sale1用户创建smb服务登录密码

smbpasswd -a sale2

例2.1: windows客户端访问共享文件

3. windows客户端,查看共享文件(使用USER: sale1 PASSWORD: 123456)

例2.2: linux客户端访问共享文件

4. Linux 客户端访问共享文件(使用USER:sale2 PASSWORD: 123456)

smbclient -L 192.168.171.120 -U sale1%123456

smbclient //192.168.171.120/shared -U sale1%123456

尝试创建文件(无法创建文件,解决办法)

writable = yes  #配置文件中,添加可写

chmod 777 -R <share file path>  #给予共享目录访问权限

NT_STATUS_MEDIA_WRITE_PROTECTED  #---> 配置文件没有给予写入权限

在Server端:修改配置文件 writable = yes 即可;

NT_STATUS_ACCESS_DENIED   #---> 共享目录没有访问权限

在Server端:修改共享文件访问权限

chmod 777 -R /test

或修改配置文件

readonly = no #删除这行

例2.3:为特定的组,或用户共享目录

修改配置文件,添加如下行:

[mytest]

   comment = Shared File Directories (name = mytest)

   path = /mytest

   public = yes

valid users = sale1

   writable = yes

重启服务,并在windows客户端登录分别使用sale1和sale2登录查看

使用sale1用户登录并访问mytest目录:

使用sale2用户登录并访问mytest目录:

扩展:windows系统,清除连接记录:

net use * /delete /y #在cmd命令行中,运行!

例3: write list #共享目录可以进行写入操作的用户

[shared]

   comment = Share File Directories (name = shared)

   path = /test

   public = yes

   browseable = yes

   readonly = yes

修改前,对共享目录执行chmod命令,并进行写入操作,发现写入失败.

chmod 777 -R /test

修改配置,添加行如下后,并重启smb服务:

writable list = @sales

例4: 隐藏共享的文件

修改配置文件,局部参数[shared]中的配置如下:

browseable = no

重启服务,后查看详情如下:

smbclient -L 192.168.171.120 -U sale1%123456 #查看共享目录列表

smbclient //192.168.171.120/shared -U sale1%123456 #进入共享目录

例5: 创建独立的配置文件,不同用户显示不同的共享文件

在配置文件/etc/samba/smb.conf中,添加全局变量

config file = /etc/samba/smb.conf.%U # %U 指定配置文件用户

保存退出后,编辑/etc/samba/smb.conf.boss 输入如下配置信息:

vim /etc/samba/smb.conf.boos

# /etc/samba/smb.conf.boss

[shared]

comment = share for boss

path = /test

public = yes

write list = boss,@sales

browseable = yes

保存退出后,创建boss用户,并设置smb密码后

在windows客户端,分别使用不同用户进行登录:

例6: linux访问windows共享文件的方法

试验环境:

windows: 192.168.171.1  共享目录:D:\AAA  账户:gan%0.0

Linux: 192.168.171.121

1. 设置windows共享

右键 D:\AAA 目录,属性

选中 共享 选项卡

点击 共享 ---> 共享

windows新建用户:gan 密码设置为:0.0

2. linux端,安装samba samba-client samba-swat cifs-utils

yum -y install samba samba-client samba-swat #客户端samba环境搭建

yum -y install cifs-utils #用于挂载windows共享目录

3. 挂载windows共享目录:

mount -t cifs -o username=gan,passwd="0.0" //192.168.171.1/AAA /cdrom

# 指定格式为 cifs

查看挂载情况

df | tail -1

4. 测试:

cd /cdrom

mkdir test

touch a.txt

echo "Hello World! " >> a.txt

2-5-NFS服务器配置和autofs自动挂载-配置Samba服务器配置现实文件共享的更多相关文章

  1. Linux:SAMBA共享、NFS共享、Autofs自动挂载

    SAMBA.NFS共享区别 NFS开源文件共享程序:NFS(NetworkFile System)是一个能够将多台Linux的远程主机数据挂载到本地目录的服务,属于轻量级的文件共享服务,不支持Linu ...

  2. Linux服务——二、配置NFS及autofs自动挂载服务

    一.NFS服务配置步骤 NFS的作用:能够使两台虚拟机之间实现文件共享.数据同步 准备:主机名.网络.yum源 Server端: 1.安装nfs-util和rpcbind:(图形化自带) [root@ ...

  3. linux autofs自动挂载

    autofs:自动挂载器 自动挂载器是一个监视目录的守护进程,并在目标子目录被引用时,自动执行预定义的NFS挂载 自动挂载器由autofs服务脚本管理 自动挂载器由auto.master配置文件进行配 ...

  4. autofs 自动挂载.

    autofs 自动挂载. 操作环境:redhat 6 一.autofs 说明 自动挂载器是一个监视目录的守护进程,并在目标子目录被引用时,自动执行预定义的挂载 自动挂载器由autofs服务脚本管理 自 ...

  5. Ubuntu - 硬盘分区、格式化、自动挂载配置

    Ubuntu系统的硬盘空间不够用了,需要增加新的硬盘扩容.将硬盘分区.格式化.自动挂载配置的整个过程记下来,备忘. 运行环境 | Enviroment Ubuntu 10.10 一.硬盘分区 | Ha ...

  6. NFS使用autofs自动挂载

    NFS自动挂载设置在/etc/fstab和/etc/rc.local可能挂载不成功,假如是服务端NFS宕机还可能导致客户端无法启动,可以使用autofs实现自动挂载 安装autofs yum -y i ...

  7. 实现nfs持久挂载+autofs自动挂载

    实验环境: 两台主机 node4:192.168.37.44 NFS服务器 node2:192.168.37.22 客户端 在nfs服务器,先安装nfs和rpcbind [root@node4 fen ...

  8. autofs自动挂载

    autofs是根据需要自动挂载,默认5分钟不使用自动卸载挂载点!nfs,smb,iso,sd*的挂载 环境:RHEL6.5/Centos6.5    172.24.0.25 01.安装autofs y ...

  9. Autofs自动挂载探讨

    Autofs介绍: mount是用来挂载文件系统的,可以在系统启动的时候挂载也可以在系统启动后挂载.对于本地固定设 备,如硬盘可以使用mount挂载:而光盘.软盘.NFS.SMB等文件系统具有动态性, ...

随机推荐

  1. OS知识点总结

    转自:https://blog.csdn.net/csdn_chai/article/details/78002202 1.什么是操作系统? OS是用户与硬件之间的接口,管理计算机的软件和硬件资源. ...

  2. 算法总结之动态规划(DP)

    适用动态规划的特点 所解决的问题是最优化问题. 所解决的问题具有"最优子结构".可以建立一个递推关系,使得n阶段的问题,可以通过几个k<n阶段的低阶子问题的最优解来求解. 具 ...

  3. memcache服务端与客户端的安装部署

    1)安装memcached前需要先安装libevent [root@aliyun tools]# tar -zxf libevent-1.4.13-stable.tar.gz [root@aliyun ...

  4. centos运行asp.netcore的正确姿势

    centos安装.netcore2.0 一切都很顺利,console app运行 dotnet run也ok 但是asp.net core app运行 dotnet run 会抛出Warn:“Unab ...

  5. ubuntu 12.04及12.10无法安装 ia32-libs

    administrator@ubuntu:~$ sudo apt-get install ia32-libs [sudo] password for administrator:  正在读取软件包列表 ...

  6. Mysql 默认编码问题

    新安装的数据库默认编码是 latin1 +--------------------------+----------------------------+ | Variable_name | Valu ...

  7. $.getJSON()函数内的数据不能传到全局变量是怎么回事?

    var json_obj2; $.getJSON("js/invite_panel.json",function(data){ json_obj2=data }) console. ...

  8. Centos7服务器搭建VNC Server环境

    在企业级项目的开发中,尤其是分布式项目,经常直接在服务器上进行开发工作,操作系统环境一般是Centos 7.普遍状况是,在服务器上安装IDE 开发工具,通过 Xshell等工具远程启动,本地通过虚拟桌 ...

  9. 洛谷 P2015 二叉苹果树(codevs5565) 树形dp入门

    dp这一方面的题我都不是很会,所以来练(xue)习(xi),大概把这题弄懂了. 树形dp就是在原本线性上dp改成了在 '树' 这个数据结构上dp. 一般来说,树形dp利用dfs在回溯时进行更新,使用儿 ...

  10. JDK 中的监控与故障处理工具-05 (jstack)

    jstack : stack trace for java jstack 命令用于生成虚拟机当前时刻的线程快照 (threaddump).线程快照是当前虚拟机中每一条线程正在执行的方法堆栈的集合,生成 ...