当前位置: 首页 > news >正文

Linux中的yum源仓库和NFS文件共享服务

一.yum简介

1.1 yum简介

        yum,全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。类似于windows系统的中电脑软件关键,可以一键下载,一键安装和卸载。yum 是改进型的 RPM 软件管理器,它很好的解决了 RPM 所面临的软件包依赖问题。yum 在服务器端存有所有的 RPM 包,并将各个包之间的依赖关系记录在文件中,当管理员使用 yum 安装 RPM 包时,yum 会先从服务器端下载包的依赖性文件,通过分析此文件从服务器端一次性下载所有相关的 RPM 包并进行安装。


1.2 yum实现过程

1.光驱里自带   挂载提供软件包

        先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。

2. yum需要依赖于环境,依赖于服务端和客户端,允许跨网络

服务器:

  • RPM包 (Packages文件夹中)

  • 元数据(repodata文件夹:目录(软件的目录),软件的依赖关系,软件的位置)

客户端的配置文件

baseurl=地址 一定要写到到 这两个文件夹 repodata packages 的上级目录

最终形成两个文件夹Packages (包文件夹一般取名packages)和 repodata(元数据文件夹)

仓库类型

  • 光盘的仓库基本仓库 比较常用的

  • epel扩展仓库 比较新

1.3 如何实现安装服务

元信息是一个文件 里面记录了安装包的路径  安装包的依赖关系

  1. 客户端根据配置文件找到服务端
  2. 客户端将元信息下载到本地仓库(元信息:安装包的位置,以及安装的依赖关系)
  3. 根据元信息去下载对应的安装包到本地后,然后安装
  4. 安装完成后再删除安装包

二.yum配置文件及命令

1. yum 配置文件

1.1 主配置文件

主配置文件 : /etc/yum.conf

[root@localhost]#vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever 
//yum下载的RPM包的缓存目录 $basearch代表硬件架构 $releasever系统版本比如7
keepcache=0                        //是否保存缓存  0代表不保存,1代表保存
debuglevel=2                       //调试级别
logfile=/var/log/yum.log		   //日志文件位置
exactarch=1						   //是否允许不同版本的rpm安装
obsoletes=1						   //update 的一个参数是否可以允许旧版本的运行	
gpgcheck=1                         //验证秘钥
plugins=1                          //是否允许插件1代表可以
installonly_limit=5                //保存几个内核 5代表5个
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-releaseyum的repo配置文件中可用的变量:
$basearch:系统基础平台;i386, x86_64
$releasever: 当前OS的发行版的主版本号,如:8,7,6
$arch: CPU架构,如:aarch64, i586, i686,x86_64等
$contentdir:表示目录,比如:centos-8,centos-7
$YUM0-$YUM9:自定义变量

1.2 仓库设置位置

yum仓库文件位置: /etc/yum.repos.d/*.repo

1.3 日志文件

日志文件位置: /var/log/yum.log

2. yum命令解释

命令不加关键字加入关键词、软件包、软件包组
yum list显示所有可用包单个的可安装包
yum info显示所有可用包的信息单个具体的信息
yum search\模糊查找所有的相关信息
yum provides\精确查找
yum grouplist显示所有可用包组显示具体的包组
yum groupinfo显示所有的包组具体信息显示具体的包组的具体信息
yum install\安装具体软件包
yum groupinstall\安装具体软件包组
yum update所有软件升级具体软件升级
yum group update所有包组升级所有包组升级
yum remove\卸载具体软件
yum groupremove\卸载具体包组软件
yum history查看当前yum操作历史\
yum history undo加入序号卸载序号里安装的软件\
yum history redo加入序号重新执行序号里的操作\

① 软件查询

2.1 yum list [软件名]

显示可用的安装包

2.2 yum info [软件名]

显示安装包的详细信息

2.3 yum search <关键字>

根据关键字查找软件安装包

2.4 yum provides <关键字>

想知道某个命令却不知道具体的包用此命令查找

必须要写路径

2.5 yum grouplist [包组名]

安装包组的查询   不加包组名就是显示所有(此处例子由于安装了中文环境,无法显示英文包组名称无法直接复制中文使用,建议直接安装英文操作系统)

2.6 yum groupinfo <包组名>

显示具体的包组的具体信息

② 安装升级

2.7 yum install [软件名]

安装软件包

2.8 yum groupinstall <包组名>

安装具体软件包组

2.9 yum update 

更新包组,可以单个也可以全部 后面加具体包组名称就是单个更新,不加就是全部更新。

2.10 yum groupupdate

组包更新和单个安装包更新

③ 软件卸载

2.11 yum remove <软件名>

卸载已安装的软件必须加软件名

2.12 yum groupremove <包组名>

2.13 yum history

查看历史的使用记录

2.14 yum history undo

加入序号卸载序号里安装的软件

可以使用yum history undo 4 进行卸载,这样对比remove好处是可以将所有的依赖都删除

2.15 yum history  redo 

加入序号重新执行序号里的操作

如果后悔卸载可以使用两种方式

yum history redo 4 (重新安装一遍)

yum history undo 4 (反悔卸载等于重新安装一遍)

3. 搭建仓库的方式

软件仓库的提供方式

FTP服务:ftp://ip地址/站点里路径

HTTP服务:http://域名或者ip地址/站点里的路径

本地目录:file://绝对路径 (file:///mnt 此处第三个/为根目录)

3.1 搭建本地yum仓库

① 首先将光驱中的镜像文件进行挂载

② 切换到yum.repo.d 目录下,将自带的仓库移走,因为多个开启仓库文件可能会造成冲突

③ 新建yum仓库文件

④ 测试

3.2 搭建阿里云仓库

(http方式外网环境)

不想搭了,放个牛

娱乐:

3.3 ftp方式搭建云仓库

服务端:

客户端:

客户端测试:

3.4 http 方式搭建

服务端:

客户端:

测试:

4.一些操作

4.1 误将rpm软件删除

进入急救模式

1 继续

切根

重启就可以重新安装回来

4.2 自行打包后建立元数据

实验目的:如果想将自己研发的软件上线可以本地安装,需要配置一个本地元,需要打包安装包和配置元信息

这里使用tree作为案例

① 将tree的安装包打包到一个文件夹

② 生成元信息

createrepo    -v   /data/test/      ##在/data/test/   生成元信息

③ 在/data/test/ 查看  有安装软件不可缺少的两项 安装包和元数据

④ 移走之前网络元,搭建本地元,自建yum 仓库

⑤ 清理缓存,重新下载元数据

4.3 将 epl 源下载到本地使用

① 下载额外元

[root@localhost ~]#yum install epel-release  -y
#安装epel源    生成epel仓库文件

② 同步 epl 元到指定文件夹

[root@localhost ~]# reposync  -r  epel  -p  /root/
#下载同步epel源  根据epel仓库文件去找目录

③ 现在只有安装包,还需要建立元数据,先安装建立元数据的命令

[root@localhost ~]# yum -y  install  createrepo
#安装建立元数据命令

④ 建立元数据

[root@localhost ~]# createrepo  -v  /root/epel 
#建立元数据    软件目录  依赖关系 

4.4 离线安装软件

实验目的:客户机没有任何网 ,服务机只下载不安装,再把安装包一个一个拷给客户机

[root@localhost yum.repos.d]# yum install tree --downloadonly --downloaddir=/opt/

--downloadonly     #只下载相关包默认至某一目录

--downloaddir=绝对目录路径    #下载到某一目录 

4.5 升级内核

① 安装  https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

② 找到元位置,并修改元配置文件

③ 找到内核软件包

④ 查看版本内核

⑤ 升级内核

⑥ 升级内核后,并不会覆盖原来的内核

三.网络文件服务——NFS

1.NFS简介

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

  • NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。

  • 通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源

  • 特点:

    • 采用TCP/IP传输网络文件

    • 安全性低

    • 简单易操作

    • 适合局域网环境

2.NFS原理

NFS优势:节省本地存储空间,将常用的数据如:/home 目录,存放在NFS服务器上且可以通过网络访问,将减少本地磁盘的使用率。

3.NFS软件介绍

软件包:nfs-utils(包括服务器端和客户端)

相关软件包:rpcbind(必须)

nfs端口号不固定  RPC端口号111

rpc  UDP协议  远程过程调用

NFS服务主要进程

  • rpc.nfsd 最主要的NFS进程,管理客户端是否可登录

  • rpc.mountd 挂载和卸载NFS文件系统,包括权限管理

  • rpc.lockd 非必要,管理文件锁,避免同时写出错

  • rpc.statd 非必要,检查文件一致性,可修复文件

日志位置: /var/lib/nfs/

NFS配置文件:

        /etc/exports

        /etc/exports.d/*.exports

4. NFS共享配置文件

文件格式:

共享目录       可以访问的主机地址(权限)

/share            *()

服务器端:

#关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
​
#安装软件包
[root@localhost ~]# yum install nfs-utils.x86_64 rpcbind -y
​
#新建共享目录
[root@localhost ~]# mkdir /share
​
[root@localhost ~]# cd /share/
​
#修改权限
[root@localhost share]# chmod -R 777 /share/
​
#编辑配置文件
[root@localhost share]# vim /etc/exports
/share *
/share 192.168.91.0/24(rw,sync,no_root_squash)
#共享目录  网段           读写,同步,无root权限
[root@localhost ~]# systemctl start rpcbind 
[root@localhost ~]# systemctl start nfs 
​
#查看详细的nfs信息
[root@localhost share]#exportfs -v
​
#重读配置文件
[root@localhost share]#exportfs -r
​
#查看本机发布的 NFS 共享目录
[root@localhost ~]# showmount -e 

客户端:


#挂载服务器至本地文件夹
[root@localhost ~]# mount 192.168.44.20:/share /mnt
​
#查看是否挂载成功
[root@localhost ~]# df -Th

测试:

#服务器端在共享文件夹下创建目录
[root@localhost share]# cd /share/
[root@localhost share]# touch xyl.txt
​
#在客户端的挂载目录下查看是否成功看到文件
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
xyl.txt

操作:

服务端:

客户端:

测试:

权限问题:

客户端

服务端增加读写权限

服务端查看

因为客户端使用root用户访问时,映射为服务端的匿名用户

如何创建文件属主为root用户?

添加权限

此时想修改后的配置文件生效,又不想让正在操作的用户断开连接,就需要使用exprotfs -r 命令来刷新配置文件

rw表示允许读写,ro  表示为只读
sync表示同步写入到内存与硬盘中
no_root_squash表示当客户机以root身份访问时赋予本地root权限(默认是root_squash)
root_squash表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户
all_squash所有访问用户都映射为匿名用户或用户组
async将数据先保存在内存缓冲区中,必要时才写入磁盘
subtree_check(默认)若输出目录是一个子目录,则nfs服务器将检查其父目录的权限
no_subtree_check即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
anonuid和anongid指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用

如何将客户端新建文件都指定一个用户,需要设置anonuid 和 anongid

指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用

现在服务端上新建一个用户并指定uid号

修改服务端的配置文件,并刷新使其生效

此时去客户端创建文件

但是服务端查看发现,文件属主就是指定用户

5. exportfs  用于管理NFS导出的文件系统  

选项:

选项说明
-v查看本机所有NFS共享
-r重读配置文件,并共享目录
-a输出本机所有的共享
-au停止本机所有共享

6. showmount  显示NFS服务器加载的信息

-e显示服务器上所有的共享目录

7.mount.nfs

NFS 相关的挂载选项

fg         #(默认)前台挂载
bg       #后台挂载
hard    #(默认)持续请求
soft     #非持续请求
intr     #和hard配合,请求可中断
rsize  #和wsize 一次读和写数据最大字节数,rsize=32768
_netdev  #无网络连接不挂载
vers     #指定版本,客户端centos8默认4.2 ,centos7默认4.1 centos6默认4.0

mount -o  临时挂载

在 /etc/fstab 里面开机挂载

8 . 搭建一台NFS共享服务器

实验准备

NFS服务端192.168.44.20
NFS客户端192.168.44.10
NFS客户端192.168.44.30

步骤:

① 关闭防火墙和防护

② 服务端配置

先开启NFS服务

创建共享文件

写一点东西供客户端读取

给文件夹拉满权限,方便后续操作,配置完刷新配置文件

③ 客户端

在客户端下载并开启httpd服务,然后挂载使用

去浏览器访问这两个网址会得到相同的NFS服务器上的信息

相关文章:

Linux中的yum源仓库和NFS文件共享服务

一.yum简介 1.1 yum简介 yum&#xff0c;全称“Yellow dog Updater, Modified”&#xff0c;是一个专门为了解决包的依赖关系而存在的软件包管理器。类似于windows系统的中电脑软件关键&#xff0c;可以一键下载&#xff0c;一键安装和卸载。yum 是改进型的 RPM 软件管理器&am…...

【LeetCode2744】最大字符串配对数目

1、题目描述 【题目链接】 标签&#xff1a;数组&#xff0c;哈希表&#xff0c;字符串&#xff0c;模拟  给你一个下标从 0 开始的数组 words &#xff0c;数组中包含 互不相同 的字符串。  如果字符串 words[i] 与字符串 words[j] 满足以下条件&#xff0c;我们称它们可以…...

安全加速SCDN是什么

安全加速SCDN&#xff08;Secure Content Delivery Network&#xff0c;SCDN&#xff09; 是集分布式DDoS防护、CC防护、WAF防护、BOT行为分析为一体的安全加速解决方案。已使用内容分发网络&#xff08;CDN&#xff09;或全站加速网络&#xff08;ECDN&#xff09;的用户&…...

Android 布局菜鸟 android中的布局类型和特点?

一、LinearLayout(线性布局) 1、 特点: 主要以水平或垂直方式来排列界面中的控件。并将控件排列到一条直线上。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能放一个控件。 2、适⽤场景: Android开发中最常见的 ⼀种布局⽅式,排列…...

2023总结与2024寒假计划

王泽政 2023 的总结 学习总结 关于 2023 学习总体上来讲&#xff0c;2023 学的东西还是不少的&#xff0c;有对技术栈广度的扩展&#xff0c;也有对计算机深度的挖掘。 学习内容总结&#xff1a; 学习 React 学习浏览器渲染原理 学习计算机网络 学习 Next.js 学习 Nest.…...

016-Vue-黑马2023:前后端分离开发(在线接口文档),前端工程化、Element、vue编写一个完成页面、Vue路由、vue打包部署到nginx

第三节 前后端分离开发 1、介绍 开发模式 前后端混合开发&#xff1a;传统开发模式 前后端分离开发&#xff1a;当前最为主流的开发模式 页面原型需求案例&#xff1a;分析出接口文档 离线开发文档示例&#xff1a; 2、YAPI&#xff08;官网已停用&#xff09; 202…...

如何给新华网投稿发稿?新华网的媒体发稿方法步骤

现如今&#xff0c;互联网已经成为了人们获取信息的主要途径&#xff0c;各大媒体网站也成为了发布自己作品的首选平台。其中&#xff0c;新华网作为中国最具影响力的新闻媒体之一&#xff0c;其内容覆盖面广、触及人群众多&#xff0c;因此&#xff0c;能够在新华网上发表文章…...

为什么 macOS 比 Windows 稳定?

在计算机操作系统领域&#xff0c;macOS 和 Windows 分别是苹果公司和微软公司的主打产品。尽管两者都拥有大量的用户群体&#xff0c;但在稳定性和用户体验方面&#xff0c;macOS 常常被认为优于 Windows。那么&#xff0c;为什么 macOS 比 Windows 更稳定呢&#xff1f; 我们…...

从matlab的fig图像文件中提取数据

这里用的是openfig&#xff08;&#xff09;函数打开的fig文件 →→→【matlab 中 fig 数据提取】 很简洁 →→→【MATLAB提取 .fig 文件中的数据】 这个给出了包含多个曲线的情况 →→→【提取matlab fig文件里的数据和legend】 chatgpt给出的方法 打开fig文件并保存数据 我的…...

基于网络爬虫的微博热点分析,包括文本分析和主题分析

基于Python的网络爬虫的微博热点分析是一项技术上具有挑战性的任务。我们使用requests库来获取微博热点数据&#xff0c;并使用pandas对数据进行处理和分析。为了更好地理解微博热点话题&#xff0c;我们采用LDA主题分析方法&#xff0c;结合jieba分词工具将文本分割成有意义的…...

前端图片转base64 方法

在uni-app、Vue.js或其他前端框架中&#xff0c;将图片转换为Base64编码的过程是相似的。以下是一个简单的示例&#xff0c;说明如何在这些环境中使用JavaScript将图片转换为Base64编码。 1. HTML部分 首先&#xff0c;你需要在HTML中放置一个文件输入元素&#xff0c;用于选…...

Go语言数据结构(一)双向链表

list容器 Go语言中list容器定义在"container/list"包中&#xff0c;实现了一个双向链表。本文第一部分总结源码包中的方法&#xff0c;第二部分展示使用list包的常见示例用法以及刷题时的用法。 食用指南&#xff1a;先看第二部分的常用示例用法然后再用到时在第一部…...

【MySql】MySQL 如何创建新用户

具体代码与实现方法 登录 MySQL&#xff1a; 使用 root 用户或具有相应权限的用户登录到 MySQL。可以使用以下命令&#xff1a; mysql -u root -p这里 -u 后面跟的是用户名&#xff0c;-p 表示提示输入密码。 创建新用户&#xff1a; 使用以下 SQL 命令创建新用户&#xff1a;…...

【DFS】200.岛屿数量

题目 法1&#xff1a;DFS 最简单的DFS必须掌握&#xff01;&#xff01;&#xff01; class Solution {public int numIslands(char[][] grid) {int m grid.length, n grid[0].length, ans 0;if (m 0 || n 0) {return ans;}boolean[][] visited new boolean[m][n];for…...

Vue动态添加新的属性到实例上(vue的问题)

当我们去看vue文档的时候&#xff0c;发现如果在实例创建之后添加新的属性到实例上&#xff0c;它不会触发视图更新。比如我们我们开始创建了一个对象实例&#xff0c;在实例创建之后为其增加新的属性&#xff0c;我们发现这个属性不能生效,此时需要使用this.$set()方法。 &…...

HarmonyOS应用开发者高级认证

一、判断题 云函数打包完成后&#xff0c;需要到AppGallery Connect创建对应函数的触发器才可以在端侧中调用&#xff08;错&#xff09; 在column和Row容器组件中&#xff0c;aligntems用于设置子组件在主轴方向上的对齐格式&#xff0c;justifycontent用于设置子组件在交叉轴…...

设计模式复盘

一、背景 在项目中&#xff0c;对于单据的扩展是基于类似于接口扩展实现的。从业务横行来看&#xff0c;业务有A、B、C&#xff1b;从纵向来看&#xff0c;单个业务逻辑编排也可以划分为基础数据查询&#xff0c;决策判断&#xff0c;逻辑执行三大块。 单据扩展&#xff1a;平…...

电力能源三维可视化合集 | 图扑数字孪生

电力能源是现代社会发展和运行的基石&#xff0c;渗透于工业、商业、农业、家庭生活等方方面面&#xff0c;它为经济、生活质量、环境保护和社会发展提供了巨大的机会和潜力。图扑软件应用自研 HT for Web 强大的渲染引擎&#xff0c;助力现代化的电力能源数字孪生场景&#xf…...

What is `@Repository` does?

Repository 是Spring注解&#xff0c;标识数据访问层组件&#xff08;DAO, Data Access Object&#xff09; 当一个类被标记为 Repository 时&#xff1a; 1、组件扫描与自动代理&#xff1a; Spring通过组件扫描&#xff08;Component Scan&#xff09;机制发现带有 Reposit…...

c# 自定义 滑块TrackBar

辛苦半天做出来的&#xff0c;如果觉得好用&#xff0c;记得点赞 效果图如下&#xff1a; 具体操作&#xff1a; 1 、添加代码&#xff08;代码在下面&#xff09;&#xff0c;重新生成下整个工程&#xff0c;在工具栏中就出现控件&#xff0c;将控件拖到窗体中 2、只需要调整…...

MyBatis整合分页插件PageHelper的使用和说明

MyBatis&#xff0c;作为目前流行的ORM框架&#xff0c;大大方便了日常开发。而对于分页查询&#xff0c;虽然可以通过SQL的limit语句实现&#xff0c;但是比较繁琐。而MyBatis PageHelper的出现&#xff0c;则解决了这一痛点。这里将介绍如何在Spring Boot、MyBatis的环境中通…...

情人节专属--HTML制作情人节告白爱心

💕效果展示 💕html展示 <!DOCTYPE html> <html lang="en" > <head>...

带你学C语言-指针(4)

目录 ​编辑 ⚾0.前言 &#x1f3c0;1.回调函数 ⚽2.qsort &#x1f3c9;2.1 qsort函数的模拟实现 &#x1f3be;3.sizeof与strlen对比 &#x1f3be;4.结束语 ⚾0.前言 言C之言&#xff0c;聊C之识&#xff0c;以C会友&#xff0c;共向远方。各位CSDN的各位你们好啊&…...

ACL访问控制列表

ACL&#xff1a;访问控制列表 在路由器流量进或出接口上&#xff0c;匹配流量产生动作-- 允许 拒绝 &#xff08;访问限制&#xff09;定义感兴趣流量--- 匹配流量后&#xff0c;将流量提交给其他的协议进行策略 匹配规则&#xff1a; 至上而下逐一匹配&#xff0c;上条匹配按…...

sqli-labs关卡25(基于get提交的过滤and和or的联合注入)

文章目录 前言一、回顾上一关知识点二、靶场第二十五关通关思路1、判断注入点2、爆字段个数3、爆显位位置4、爆数据库名5、爆数据库表名6、爆数据库列名7、爆数据库数据 总结 前言 此文章只用于学习和反思巩固sql注入知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的…...

机器学习周刊第六期:哈佛大学机器学习课、Chatbot Ul 2.0 、LangChain v0.1.0、Mixtral 8x7B

— date: 2024/01/08 — 吴恩达和Langchain合作开发了JavaScript 生成式 AI 短期课程&#xff1a;《使用 LangChain.js 构建 LLM 应用程序》 大家好&#xff0c;欢迎收看第六期机器学习周刊 本期介绍10个内容&#xff0c;涉及Python、机器学习、大模型等,目录如下&#xff…...

【算法与数据结构】Java实现查找与排序

文章目录 第一部分&#xff1a;查找算法二分查找插值查找分块查找哈希查找树表查找 第二部分&#xff1a;排序算法冒泡排序选择排序插入排序快速排序 总结 第一部分&#xff1a;查找算法 二分查找 也叫做折半查找&#xff0c;属于有序查找算法。 前提条件&#xff1a;数组数据…...

边缘计算的挑战和机遇(结合RDH-EI)

边缘计算的挑战和机遇 边缘计算面临着数据安全与隐私保护、网络稳定性等挑战&#xff0c;但同时也带来了更强的实时性和本地处理能力&#xff0c;为企业降低了成本和压力&#xff0c;提高了数据处理效率。因此&#xff0c;边缘计算既带来了挑战也带来了机遇&#xff0c;需要我…...

详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议_ipsec esp

目录 IP安全概述 IPSec协议簇 IPSec的实现方式 AH&#xff08;Authentication Header&#xff0c;认证头&#xff09; ESP&#xff08;Encapsulating Security Payload&#xff0c;封装安全载荷&#xff09; IKE&#xff08;Internet Key Exchange&#xff0c;因特网密钥…...

【图论】树的直径

树的直径即为一棵树中距离最远的两点之间的路径 方法一&#xff1a;DFS 先以任意一点为起点跑一遍dfs&#xff0c;记录离起点距离最远的点p&#xff08;这个点一定是直径的一个端点&#xff0c;感性理解一下不证明了&#xff09;&#xff0c;然后再以最远点再跑一遍dfs&#…...