第12章 使用Samba或NFS实现文件共享

章节简述:

本章节为读者讲述文件共享系统的作用,了解Samba与NFS服务程序的开发背景以及用法。

详细逐条讲解Samba服务配置参数,演示安全共享文件的配置策方法,并使用autofs服务程序自动挂载设备,

学会后即可实现Linux系统之间或与Windows系统之间的文件共享,以及在共享文件时如何配置防火墙与SELinux策略规则。

 

本章目录结构

  • 12.1 了解文件共享服务
  • 12.2 Samba服务
    • 12.2.1 安装服务程序
    • 12.2.2 安全共享文件
  • 12.3 NFS网络文件系统
  • 12.4 AutoFs自动挂载服务
12.1 了解文件共享服务

早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了NFS开源文件共享程序:NFS(NetworkFile System)是一个能够将多台Linux的远程主机数据挂载到本地目录的服务,属于轻量级的文件共享服务,不支持Linux与 Windows系统间的文件共享。

samba服务logo

随后在1991年时大学生Tridgwell为了解决Linux与Windows系统之间共享文件的问题,便开发出了SMB协议与Samba服务程序。

SMB(Server Messages Block)协议:实现局域网内文件或打印机等资源共享服务的协议。

当时Tridgwell想要注册SMBServer这个商标,但却被因为SMB是没有意义的字符被拒绝了,经过Tridgwell不断翻看词典,终于找到了一个拉丁舞蹈的名字——SAMBA,而这个热情舞蹈的名字中又恰好包含了SMB(SAMBA),于是这便是Samba程序名字的由来。

Samba服务程序是一款基于SMB协议并由服务端和客户端组成的开源文件共享软件,实现了Linux与Windows系统间的文件共享。

Samba舞蹈

12.2 Samba服务
12.2.1 安装服务程序

通过安装Samba服务程序后细致的分析其配置文件参数,更能够帮助读者们理解Samba服务的安全验证方式。

安装Samba服务软件包:

[root@linuxprobe Desktop]# yum install samba
Loaded plugins: langpacks, product-id, subscription-manager
………………省略部分安装过程………………
Installing:samba           x86_64           4.1.1-31.el7            rhel7           527 k
………………省略部分安装过程………………
Complete!
浏览Samba配置文件:
[root@linuxprobe ~]# cat/etc/samba/smb.conf
配置文件竟然有320行!有没有被吓到?其实Samba服务配置文件中大部分是注释信息,我们可以来筛选过滤下:

备份原始的配置文件:

[root@linuxprobe ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

过滤掉无用的内容:
先使用cat命令读入Smb配置文件后通过grep命令-v参数(反向选择)去掉所有注释信息,然后分别删选掉包含#号的行("#"),包含;号的行(";")以及所有的空白行("^$"),最后最后将过滤后的信息覆盖写入到/etc/samba/smb.conf文件中。

cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf
让我们来看看过滤后的配置文件吧:
编辑
[global] #全局参数。
 workgroup = MYGROUP#工作组名称。
 server string = Samba Server Version %v#服务器介绍信息,参数%v为显示SMB版本号。
 log file = /var/log/samba/log.%m#定义日志文件存放位置与名称,参数%m为来访的主机名。
 max log size = 50#定义日志文件最大容量为50Kb。
 security = user#安全验证的方式,总共有4种。
 #share:来访主机无需验证口令,更加方便,但安全性很差。
 #user:需由SMB服务验证来访主机提供的口令后才可建立访问,更加的安全。
 #server:使用独立的远程主机验证来访主机提供的口令(集中管理帐号)。
 #domain:使用PDC来完成验证
 passdb backend = tdbsam#定义用户后台的类型,共有3种。
 #smbpasswd:使用SMB服务的smbpasswd命令给系统用户设置SMB密码。
 #tdbsam:创建数据库文件并使用pdbedit建立SMB独立的用户。
 #ldapsam:基于LDAP服务进行帐户验证。
 load printers = yes#设置是否当Samba服务启动时共享打印机设备。
 cups options = raw#打印机的选项
[homes] #共享参数
 comment = Home Directories#描述信息
 browseable = no#指定共享是否在“网上邻居”中可见。
 writable = yes#定义是否可写入操作,与"read only"相反。
[printers] #打印机共享参数
 comment = All Printers 
 path = /var/spool/samba#共享文件的实际路径(重要)。
 browseable = no 
 guest ok = no#是否所有人可见,等同于"public"参数。
 writable = no 
 printable = yes 
标准的Samba共享参数是这样的:
编辑
参数作用
[linuxprobe]共享名称为linuxprobe
comment = Do not arbitrarily modify the database file警告用户不要随意修改数据库
path = /home/database共享文件夹在/home/database
public = no关闭所有人可见
writable = yes允许写入操作
我们将上面的配置参数直接追加到SMB服务配置文件(/etc/samba/smb.conf)并重启SMB服务程序即可生效。
但此时SMB服务默认的验证模式为user,我们需要先创建用户数据库后才可以正常使用,现在来学习下如何创建吧~
12.2.2 安全共享文件

使用Samba服务口令验证方式可以让共享文件更加的安全,做到仅让信任的用户访问,而且验证过程也很简单,要想使用口令验证模式,我们需要先需要创建Samba服务独立的数据库。

第1步:检查当前是否为user验证模式。

[root@linuxprobe ~]# cat /etc/samba/smb.conf
修改SMB服务为帐户验证模式

 

第2步:创建共享文件夹:

[root@linuxprobe ~]# mkdir /database

第3步:描述共享文件夹信息。

SMB服务主配置文件最下面追加共享文件夹的配置参数:

[database]
comment = Do not arbitrarily modify the database file
path = /database
public = no
writable = yes

保存smb.conf文件后重启启动SMB服务:

[root@linuxprobe ~]# systemctl restart smb

添加到开机启动项:

[root@linuxprobe ~]# systemctl enable smb
ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'

第4步:使用Windows主机尝试访问

读者按照下表的IP地址规划动手配置下Windows的网卡参数,应该都会吧~

编辑
主机名称操作系统IP地址
Samba共享服务器红帽RHEL7操作系统192.168.10.10
客户端红帽RHEL7操作系统192.168.10.20
客户端微软Windows7操作系统192.168.10.30

Windows运行框输入远程主机信息

在Windows主机的运行框中输入远程主机的信息
访问Samba服务报错

此时访问Samba服务报错

此时访问Samba服务是报错的,如果读者已经看完Apache(httpd)服务程序的章节,应该还记得防火墙和SELinux规则吧。

第5步:清空防火墙规则链:

Windows访问Samba主机提示报错,我们怀疑是Iptables阻止了访问操作,于是执行:

[root@linuxprobe ~]# Iptables -F
[root@linuxprobe ~]# service iptables save

因为Windows系统的缓存关系,可能需要先重启Windows主机再尝试访问Samba共享。

Windows提示验证密码

Windows系统被要求验证帐户口令

那么这个问题就是出在Iptables防火墙的默认规则中了,所以请对SELinux多一点耐心,不要直接关闭SELinux。

第6步:创建SMB服务独立的帐号。

现在Windows系统要求先验证后才能访问共享,而SMB服务配置文件中密码数据库后台类型为"tdbsam",所以这个帐户和口令是Samba服务的独立帐号信息,我们需要使用pdbedit命令来创建SMB服务的用户数据库。

pdbedit命令用于管理SMB服务的帐户信息数据库,格式为:“pdbedit [选项] 帐户”。

编辑
参数作用
-a 用户名建立Samba用户
-x 用户名删除Samba用户
-L列出用户列表
-Lv列出用户详细信息的列表

创建系统用户:

[root@linuxprobe ~]# useradd smbuser

将此系统用户提升为SMB用户:

[root@linuxprobe ~]# pdbedit -a -u smbuser
new password:设置SMB服务独立的密码
retype new password:
Unix username: smbuser
NT username:
Account Flags: [U ]
User SID: S-1-5-21-4146456071-3435711857-2069708454-1000
Primary Group SID: S-1-5-21-4146456071-3435711857-2069708454-513
Full Name:
Home Directory: \\linuxprobe\smbuser
HomeDir Drive:
Logon Script:
Profile Path: \\linuxprobe\smbuser\profile
Domain: LINUXPROBE
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Sat, 11 Jul 2015 18:27:04 CST
Password can change: Sat, 11 Jul 2015 18:27:04 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
第7步:使用Windows主机验证共享结果:
请您按照下面的幻灯片逐步操作,可点击图片两侧箭头或下方小圆点“○”切换步骤。
  • Windows验证SMB服务口令
  • Windows成功访问SMB服务
  • Windows进入共享目录失败

第8步:允许SELinux规则

使用Windows主机访问Samba共享果然可以使用smbuser用户登入,但对于共享文件这么重要的事情,SELinux一定会强制管理,刚刚没有妥当的配置好SELinux,现在果然又报错了。

将共享目录的所有者和所有组设置为smbuser用户:

[root@linuxprobe ~]# chown -Rf smbuser:smbuser /database

允许SELinux对于SMB用户共享家目录的布尔值:

[root@linuxprobe ~]# setsebool -P samba_enable_home_dirs on

将共享目录的SELinux安全上下文设置妥当:

[root@linuxprobe ~]# semanage fcontext -a -t samba_share_t /database

使新的安全上下文立即生效:

[root@linuxprobe ~]# restorecon -Rv /database/
第9步:使用Windows主机验证共享结果
我们配置好Samba服务后又陆续的调整好了Iptables防火墙与SELinux安全规则,现在终于可以正常的使用共享了。
使用SMB服务并创建文件
使用SMB服务并创建文件
第10步:使用Linux主机验证共享结果
刚刚好像让读者产生了一些小误解,Samba服务程序并不仅仅是能够实现Linux与Windows系统间的文件共享,还可以实现Linux系统之间的文件共享哦,先动手配置下客户端主机的IP地址吧:
编辑
主机名称操作系统IP地址
Samba共享服务器红帽RHEL7操作系统192.168.10.10
客户端红帽RHEL7操作系统192.168.10.20
客户端微软Windows7操作系统192.168.10.30

在客户端安装cifs-utils软件包:

[root@linuxprobe ~]# yum install -y cifs-utils
Loaded plugins: langpacks, product-id, subscription-manager
………………省略部分安装过程………………
Installing:cifs-utils          x86_64          6.2-6.el7             rhel7           83 k
………………省略部分安装过程………………
Complete!

创建挂载目录:

[root@linuxprobe ~]# mkdir /database

在root家目录创建认证文件(依次为SMB用户名、SMB用户密码、SMB共享域):

[root@linuxprobe ~]# vim auth.smb
username=smbuser
password=redhat
domain=MYGROUP

此文件太重要了,权限应该给小一些:

[root@linuxprobe ~]# chmod -Rf 600 auth.smb

配置其挂载信息(内容依次为远程共享信息、本地挂载目录、文件系统类型、认证文件以及开机自检选项):

[root@linuxprobe ~]# vim /etc/fstab
//192.168.10.10/database /database cifs credentials=/root/auth.smb 0 0

使用mount命令的-a参数挂载所有在fstab文件中定义的文件信息:

[root@linuxprobe ~]# mount -a

成功挂载Samba的共享目录(能够看到共享文件了):

[root@linuxprobe ~]# cat /database/Memo.txt
i can edit it .
Samba服务真的是太强大了,不仅能够实现Linux系统之间分享数据还能与Windows主机进行文件共享。

出现问题?大胆提问!

因读者们硬件不同或操作错误都可能导致实验配置出错,请耐心再仔细看看操作步骤吧,不要气馁~

Linux技术交流请加A群:560843(),B群:340829(推荐),C群:463590(推荐),点此查看全国群。

*本群特色:通过口令验证确保每一个群员都是《Linux就该这么学》的读者,答疑更有针对性,不定期免费领取定制礼品。

12.3 NFS网络文件系统

NFS(Network Files System)即网络文件系统,NFS文件系统协议允许网络中的主机通过TCP/IP协议进行资源共享,NFS客户端可以像使用本地资源一样读写远端NFS服务端的资料,需要注意NFS服务依赖于RPC服务与外部通信,所以必需保证RPC服务能够正常注册服务的端口信息才能正常使用NFS服务。

有个学员问过NFS是不是need for speed的缩写啊?哈哈,NFS配置和使用都是非常快捷,所以这么说也是有道理的。

红帽RHEL7系统已经默认安装NFS服务:

[root@linuxprobe ~]# yum install nfs-utils
Loaded plugins: langpacks, product-id, subscription-manager
(1/2): rhel7/group_gz | 134 kB 00:00
(2/2): rhel7/primary_db | 3.4 MB 00:00
Package 1:nfs-utils-1.3.0-0.el7.x86_64 already installed and latest version
Nothing to do

本次的实验需要两台Linux主机,网络配置情况:

编辑
主机名称操作系统IP地址
NFS服务端红帽RHEL7操作系统192.168.10.10
NFS客户端红帽RHEL7操作系统192.168.10.20

第1步:创建NFS服务端的共享目录。
清空iptables默认的规则链:

[root@linuxprobe ~]# iptables -F

保存清空后的iptables规则:

[root@linuxprobe ~]# service iptables save

创建nfsfile共享目录:

[root@linuxprobe ~]# mkdir /nfsfile

为共享目录设置权限(让其他人可以有写入权限):

[root@linuxprobe ~]# chmod -Rf 777 /nfsfile

写入一个文件,用于NFS客户端读取:

[root@linuxprobe ~]# echo "welcome to linuxprobe.com" > /nfsfile/readme

NFS服务端配置文件是"/etc/exports",用于定义要共享的目录以及相应权限。

[root@linuxprobe ~]# vim /etc/exports
//格式为:共享目录的绝对路径 允许访问NFS资源的客户端(权限参数)
/nfsfile 192.168.10.* (rw,sync,root_squash)

NFS配置共享的参数有:

编辑
参数作用
ro只读默认
rw读写模式
root_squash当NFS客户端使用root用户访问时,映射为NFS服务端的匿名用户。
no_root_squash当NFS客户端使用root用户访问时,映射为NFS服务端的root用户。
all_squash不论NFS客户端使用任何帐户,均映射为NFS服务端的匿名用户。
sync同时将数据写入到内存与硬盘中,保证不丢失数据。
async优先将数据保存到内存,然后再写入硬盘,效率更高,但可能造成数据丢失。

看完后来分析下/etc/exports文件中参数作用吧“/nfsfile 192.168.10.* (rw,sync,no_root_squash)(答案模式)

答案:将/nfsfile目录共享给192.168.10.0/24网段,运行NFS客户端读写数据、同步数据并映射为NFS服务器的root用户。

第2步:启动NFS服务端

刚刚讲到NFS服务是依赖于RPC服务的,但在红帽RHEL7系统中RPC服务已经默认运行(active)了,所以无需再配置RPC服务啦。

[root@linuxprobe ~]# systemctl status rpcbind

启动nfs-server程序:

[root@linuxprobe ~]# systemctl start nfs-server

设置NFS服务端为开机启动:

[root@linuxprobe ~]# systemctl enable nfs-server

第3步:配置NFS客户端
如果NFS客户端也是红帽RHEL7系统,那么软件包nfs-utils一定也是已经默认安装,直接挂载共享就可以了。
showmount命令用于查询NFS服务端共享信息,格式为:“showmount [参数] [远程主机]”。

编辑
参数作用
-e显示NFS服务端的共享列表
-a显示本机挂载NFS资源的情况
-v显示版本号

查询远程NFS服务端中可用的共享资源:

[root@linuxprobe ~]# showmount -e 192.168.10.10
Export list for 192.168.10.10:
/nfsfile (everyone)

创建本地挂载目录:

[root@linuxprobe ~]# mkdir /nfsfile
[root@linuxprobe ~]# mount -t nfs 192.168.10.10:/nfsfile /nfsfile

顺利查看到刚刚写入文件内容:

[root@linuxprobe ~]# cat /nfsfile/readme
welcome to linuxprobe.com

如果希望开机后自动将NFS资源挂载到本地,那么就可以通过修改fstab文件来实现:

[root@linuxprobe ~]# vim /etc/fstab
192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0
12.4 AutoFs自动挂载服务

AutoFs服务与Mount/Umount命令不同之处在于它是一种守护进程,只有检测到用户试图访问一个尚未挂载的文件系统时才自动的检测并挂载该文件系统,换句话说,将挂载信息填入/etc/fstab文件后系统将在每次开机时都自动将其挂载,而运行AutoFs后则是当用户需要使用该文件系统了才会动态的挂载,节约网络与系统资源。

模拟训练:每次进入/media/iso目录时都会自动挂载镜像。

编辑
主机名称操作系统IP地址
NFS服务端红帽RHEL7操作系统192.168.10.10
NFS客户端红帽RHEL7操作系统192.168.10.20

安装autofs服务:

[root@linuxprobe ~]# yum install autofs
………………省略部分安装过程………………
Installing:
autofs x86_64 1:5.0.7-40.el7 rhel 550 k
Installing for dependencies:
hesiod x86_64 3.2.1-3.el7 rhel 30 k
………………省略部分安装过程………………
Complete!

启动autofs服务并加入到开机启动项中:

[root@linuxprobe ~]# systemctl start autofs
[root@linuxprobe ~]# systemctl enable autofs
ln -s '/usr/lib/systemd/system/autofs.service' '/etc/systemd/system/multi-user.target.wants/autofs.service'

修改autofs主配置文件(格式为:挂载目录 映射配置文件):

[root@linuxprobe ~]# vim /etc/auto.master
/media /etc/iso.misc

编辑挂载配置参数文件(映射文件):

[root@linuxprobe ~]# vim /etc/iso.misc
iso   -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom

重新加载启动autofs服务:

[root@linuxprobe ~]# systemctl restart autofs

进入自动挂载目录中:

[root@linuxprobe ~]# cd /media/iso

查看当前目录下的文件:

[root@linuxprobe iso]# ls
addons images Packages RPM-GPG-KEY-redhat-release
EFI isolinux release-notes TRANS.TBL
EULA LiveOS repodata
GPL media.repo RPM-GPG-KEY-redhat-beta

转载于:https://www.cnblogs.com/linux130/p/5759612.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ExtClassLoader和AppClassLoader是Launcher类的两个内部类

sun.misc.Launcher他是一个java虚拟机的入口应用 看下Launcher类 ExtClassLoader和AppClassLoader是Launcher类的两个内部类

系统输入输入出设计相关知识介绍

1、输出设计输出设计主要包括:确定输出内容、选择输出设备与介质、确定输出格式三个方面的内容。确定输出内容:输出内容的设计首先要确定用户在使用信息方面的需求,然后设计输出信息的内容,包信息形式(括文字、图形、表…

计算机知识:电脑系统盘文件夹详解

今天给大家介绍一下电脑系统盘(C盘)的相关知识。C盘变红,是存储空间告急。C盘里通常都是安装的系统文件,一般情况下不放其他文件,如果放了可以转移到其他盘里去。还有一个就是电脑桌面,通常也是属于C盘空间…

【代码笔记】iOS-字体抖动动画

一,效果图。 二,代码。 ViewController.m #import "ViewController.h"interface ViewController ()endimplementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typicall…

ElementUI+VUE 日期控件禁用用法

今天给大家整理一下ElementUIVUE 日期控件禁用用法&#xff0c;希望对大家有所帮助&#xff01;HTML文件<el-date-pickerv-model"value"type"date":editable"false"placeholder"开始日期"value-format"yyyy-MM-dd":picke…

利用rfcomm实现树莓派与手机通信_工业物联网 | 怎么用NodeRed实现树莓派与阿里云物联网平台通信?虹科告诉你!...

想获取更多IIOT干货请点击蓝字&#xff0c;关注我们虹科工业树莓派高性能多接口宽温--适应恶劣环境★★★★★Node-RED是构建物联网(IoT)应用程序的强大工具&#xff0c;它使用可视化的编程方法&#xff0c;允许开发人员将预定义的代码块(称为“节点”)连接在一起以执行任务。当…

mysql的mtr是指什么_MySQL中MTR的概念

MTR全称是Mini-Transaction&#xff0c;顾名思义&#xff0c;可以理解为"最小的事务"&#xff0c;MySQL中把对底层页面的一次原子访问的过程称之为一个Mini-Transaction&#xff0c;这里的原子操作&#xff0c;指的是要么全部成功&#xff0c;要么全部失败&#xff0…

前端:Element UI 多选框组用法笔记

今天给大家分享一下Element UI 多选框组用法笔记&#xff0c;直接上代码&#xff01;<html><head></head><body><el-form> <el-form-item label"兴趣爱好:"> <el-checkbox-group v-model"form.checkList"> <…

xiaocms 关于搜索功能 添加搜索字段

自己折磨了好几天 就是没研究个出像样的的东西 看了一下 core/controller/index.php searchAction()方法 但是不知从何下手。查了sql语句&#xff0c;还是没实现 请教了一位自学php的小弟 &#xff0c;人家三下五除二的功夫就做出来了 解决的思路是一样的&#xff0c;可我就是…

python编程第四版_清华编程教授强力推荐《Python编程》,指导你如何学习python

Python编程真的那么容易吗&#xff1f;仅仅是看理论就可以学以致用吗&#xff1f;今天我给你介绍的这本书&#xff0c;也许会让你开始改变这种想法&#xff0c;因为这本书上的练习和案例以及指导本身就足够学好Python了。清华编程教授强力推荐《Python编程》&#xff0c;指导你…

微信终于可以发送大文件了!

来源丨扩展迷EXTFANS&#xff08;ID&#xff1a;infinitydaily&#xff09;https://mp.weixin.qq.com/s/EAwYnq7435oMQnz6JqkHYg微信作为一款国民级的通讯软件&#xff0c;虽然用户基数庞大&#xff0c;但在用户体验方面一直饱受诟病&#xff0c;尤其是在部分功能方面&#xff…

Iterable 超级接口

这是一个老祖宗,一代一代往下拨 collection 的方法如下,是一个跟接口方法如下,见API collection : add():添加一个元素     addAll():添加一组元素 clear();清空     remove(Object o) &#xff1a;移除     removeAll():移除一组元素     isEmpty();判断集合…

pc寄存器or程序计数器

一&#xff1a;PC寄存器解释 二&#xff1a;PC寄存器的作用

项目设计基础:处理过程设计相关知识介绍​

处理过程设计关键是用一种适当的表示形式来描述每个模块执行过程。常用的表示形式有图形、语言、表格。比如传统的框图、判定表等。1、程序流程图&#xff08;Program Flow Chart&#xff09;程序流程图也成为程序框图&#xff0c;是最早、流行最广泛的一种图形表示方法。程序流…

git冲突“accept theirs”和“accept yours”

Accept Yours 就是直接选取本地的代码&#xff0c;覆盖掉远程仓库的 Accept Theirs 是直接选取远程仓库的&#xff0c;覆盖掉自己本地的 我们选择Merge,自己手动行进选择、修改。 这里左边部分是你本地仓库的代码&#xff0c;右边部分是远程仓库的代码&#xff0c;中间的res…

系统实施基础:系统实施的相关知识介绍

1、系统实施的目的系统实施属于新系统开发工作的最后一个阶段&#xff0c;属于交付系统给客户的最后阶段。2、系统实施的任务硬件准备&#xff1a;按照总体设计方案准备服务器、配置网络系统。主要包括计算机主机/云服务器、输入输出设备、存储设备、通信设备等。软件准备&…

线程同步以及yield()、wait()、Notify()、Notifyall()

一、线程同步 1、线程同步的目的是为了保护多个线程访问一个资源时对资源的破坏。2、线程同步方法是通过锁来实现&#xff0c;每个对象都有切仅有一个锁&#xff0c;这个锁与一个特定的对象关联&#xff0c;线程一旦获取了对象锁&#xff0c;其他访问该对象的线程就无法再访问该…

面试:整理面试中常被问到的8种数据结构

数据结构是一种特殊的组织和存储数据的方式&#xff0c;可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。几乎所有已开发的程序或软件系统都使用数据结构。此外&#xff0c;数据结构属于计算机科学和软件工程的基础。当…