• Linux


    在这里插入图片描述

    文章目录

    一、引言


    1.1 开发环境

    window10操作系统,MAC

    JDK java version “1.8.0_281”

    maven :settings.xml 文件 (本地仓库和远程仓库)

    idea :(要关联上本地安装的maven)

    mysql (可以用公司内部的)

    Git (svn)

    1.2 生产环境

    Linux

    JDK java version “1.8.0_281”

    Web服务器+mysql数据库服务器

    实施岗(开发测试好的代码,进行生产环境的部署)

    1.3 测试环境

    Linux

    JDK java version “1.8.0_281”

    Web服务器+mysql数据库服务器

    禅道 (项目开发测试管理工具,开发人员和测试人员会有自己的账号)

    1.4 操作系统的选择
    • 开发环境:windows , linux (桌面发行版,ubuntu )
    • 生产环境:Linux (99%)

    二、Linux介绍


    2.1 Linux介绍
    Linus Torvalds 和 Linux
    2.2 Linux的版本

    Linux的版本分为两种,一种是Linus团队正在维护的开源内核版本。另一种是一些厂商基于内核版本封装的发行版本。

    • Linux的内核版本官网:https://www.kernel.org/

    • Linux的发行版本,咱们需要学习的发行版本就时CentOS

    Linux的常见发行版本
    在这里插入图片描述
    2.3 Linux和Windows区别
    • Linux是严格区分大小写的,Windows无所谓。
    • Linux中一切皆是文件。
    • Linux中文件可以没有后缀,但是他有一些约定俗成的后缀。
    • Windows下的软件一般是无法直接运行的Linux中。
      • java程序为什么能再linux上运行呢?linux系统中装了 linux 版本的 jdk (jre,jvm)

    Ps:我们在学习Linux时,参考Windows下做了什么,就在Linux中做什么

    三、Linux安装


    • 安装Linux,我们需要一个虚拟机,为了安装虚拟环境:VMware或者Virtual Box(采用VMware)

      https://www.vmware.com/go/getworkstation-win

    • 为了安装Linux,我们需要一个Linux的镜像文件:CentOS7版本

      http://mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso

    • 安装一个连接Linux的图形化界面:Xterm,SSH,XShell(Xterm)

      https://download.mobatek.net/2012020021813110/MobaXterm_Portable_v20.1.zip

    3.1 安装VMware

    傻瓜式安装,下一步下一步下一步……

    3.2 安装Xterm

    解压即可以使用……

    3.3 在VMware中安装Linux

    按照下图步骤,逐步安装Linux操作系统……‘

    3.3.1 选择安装方式
    选择安装方式
    在这里插入图片描述
    3.3.2 指定镜像方式
    选择稍后安装操作系统
    3.3.3 选择操作系统类型
    选择操作系统类型
    在这里插入图片描述
    3.3.4 指定虚拟机名称
    指定虚拟机名称,和安装目录
    3.3.5 磁盘存储方式
    拆分成多个文件存储
    在这里插入图片描述
    3.3.6 指定虚拟机配置

    直接使用NAT可以

    指定虚拟机的设置
    3.3.7 开始安装CentOS
    开始界面选择语言
    在这里插入图片描述
         |
    
    • 1
    3.3.8 配置虚拟机网络连接
    配置安装位置以及网络和主机名(开启)
    在这里插入图片描述
    3.3.9 开始安装
    9、开始安装后,设置ROOT用户的密码
    在这里插入图片描述
    3.3.10 安装成功
    10、安装成功,并登录
    在这里插入图片描述
    3.4 使用Xterm连接Linux

    直接在Vmware中操作Linux有很多限制,我们可以在图形化界面中操作Linux操作系统

    具体步骤如下……

    3.4.1 查看ip地址
    查看ip地址
    在这里插入图片描述
    3.4.2 通过Xterm连接
    连接上Linux
    在这里插入图片描述
    连接成功
    在这里插入图片描述

    四、Linux的目录结构

    # 清屏
    clear
    # linux系统的根目录下有如下的目录 
    ls /   # 撇、捺 \
    
    bin      # linux 一些可执行文件  
    boot     # linux系统启动时需要的一些文件
    dev      # 硬件设备相关
    etc      # 系统配置相关的一些文件 
    home     # 系统用户相关的一些目录 
    lib      # 库相关
    lib64    # 库相关
    media    # 多媒体相关
    mnt      # 挂载点  
    opt      # 放咱们自己程序相关的目录和文件 
    proc     # linux系统运行时的相关信息
    root     # root用户自己的home 
    run      # 运行时目录
    sbin     # 一些可执行文件相关 
    srv      # 系统服务相关
    sys      # 系统相关
    tmp      # 临时目录 
    usr      # 第三方软件的安装目录 /usr/local/jdk  
    var      # 咱们自己的程序用到的目录和文件 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    五、Linux的基本命令


    Linux中命令的基本格式:命令 【选项】 【参数】

    个别命令是不遵循这个格式

    当命令中有多个选项时,可以写在一起的,并且选项也是由简写方式的 命令 -选项A选项B

    # 1. 我是谁
    who am i
    
    # 2. 我在哪 (当前的工作目录是什么)  print working  directory
    pwd 
    
    # 3. 查看ip 地址
    ip a 
    ip address
    
    # 4. 清屏
    clear
    
    # 5. ping域名|ip
    ping 地址
    
    # 6. 强制停止
    Ctrl + C
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    六、Linux目录命令【重点


    6.1 列出目录

    查看指定目录下的内容,默认查看当前目录下内容

    Linux中的隐藏文件是以.开头的,当前目录使用.表示,上一级目录使用…表示

    ls [-al] [目录名]
    # 目录名不填写,默认为当前目录。
    # -a:列出的全部的文件,包括隐藏文件
    # -l:列举出全部的信息
    
    • 1
    • 2
    • 3
    • 4

    关于目录的特殊写法:

    1. 一个点,代表当前目录 。就相当于 pwd命令的输出的目录
    2. 两个点,代表上一级目录,相当于pwd输出的上一级目录
    3. 波浪线~,代表当前用户的家目录
    6.2 切换目录

    实现目录间切换,使用绝对路径、相对路径、特殊符号

    cd 具体路径 | 特殊符号
    
    • 1
    特殊符号表达的路径
    .当前目录
    上一级目录
    /根目录
    ~当前登录用户的HOME目录
    -返回
    6.3 创建目录

    创建目录,以及创建多级目录方式

    mkdir [-p] 目录名
    # -p:代表创建多级目录时,使用
    
    • 1
    • 2
    6.4 删除目录

    删除非空目录或包含内容的目录

    # 只能删除空目录
    rmdir 目录名
    
    # 删除非空目录
    rm [-rf] 目录名  #  删库跑路
    # -r:代表递归删除目录下的全部内容
    # -f:不询问,直接删除
    
    rm -rf /   # 递归删除根目录下的所有内容,删库跑路
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    6.5 复制目录

    复制目录下的全部内容

    cp -r 来源目录 目标目录
    # -r:递归复制全部内容,必填项
    
    • 1
    • 2
    6.6 移动、重命名目录

    移动、重命名目录,会根据第二个参数指定具体操作逻辑

    mv 目录名 新目录名 | 路径
    # 如果第二个参数指定的路径不存在,就是重命名,如果第二个参数的路径存在,就是移动
    
    • 1
    • 2

    七、Linux的文件命令【重点


    7.1 创建文件

    创建空文件

    touch 文件名1 文件名2 ……
    
    • 1
    7.2 编辑文件

    编辑文件,后期最常的命令之一

    vi 文件名 				# 查看文件。(查看模式)
    i | a | o   		  # 进入编辑模式。(编辑模式)
                          # i:在当前光标处,进入编辑模式。 
                          # a:在当前光标后一格,进入编辑模式。 
                          # o:在当前光标下一行,进入编辑模式。
    esc				      # 退出编辑模式,回到查看模式。
    :				      # 从查看模式进入到底行命令模式。(底行命令模式)
                          # 在底行命令模式下,输入wq:保存并退出。输入q!:不保存并退出
                          # 在查看模式下,摁ZZ,可以快速保存并退出。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    7.3 vi文件时,其他操作

    编辑文件时,常用的快捷键,方便操作

    # 在vi文件时,在底行命令模式下可以输入以下常用内容
    # 行号操作
    set nu              # 查看文件的行号
    to rownum           # 快速的跳转到指定行
    set nonu            # 取消行号
    # 搜索操作
    /word               # 类似Windows的Ctrl + F搜索文件中的具体内容所在位置,查看下一个可以输入字母n
    # 快速定位
    G                   # 快速跳转到最后一行
    gg                  # 快速跳转到第一行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    7.4 查看文件

    根据不同的业务,可以选择不同的查看方式

    # 查看文件,直接展示到最后一行
    cat 文件名
    
    # 从最后一行开始看文件
    tac 文件名
    
    # 显示文件的用时,展示行号
    more 文件名
    # 查看大文件时,可以一页一页的向下翻
    # 嗯space向下翻页,退出时摁q
    
    less 文件名
    # 查看大文件时,可以任意的向上或者向下翻
    # 向上或向下翻页摁PageUp和PageDown,一行一行查看,摁光标的↑↓
    
    # 只查看前几行
    head 文件名
    
    # 只查看后几行
    tail 文件名
    # tail -f 日志 监控日志
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    7.5 移动、重命名文件

    移动、重命名目录,会根据第二个参数指定具体操作逻辑

    mv 文件名 新文件名 | 路径
    # 如果第二个参数指定的路径不存在,就是重命名,如果第二个参数的路径存在,就是移动
    
    • 1
    • 2
    7.6 复制文件

    复制文件到指定目录下

    cp 文件名 目录
    
    • 1
    7.7 删除文件

    删除文件方式

    rm [-f] 文件名
    # -f:是否询问
    
    • 1
    • 2

    八、Linux的压缩包命令【重点


    8.1 针对tar命令

    Linux中常用的压缩包,大多是.tar,.tar.gz,tgz的

    8.1.1 解压压缩包

    针对压缩包后缀的情况,采用不同的参数,否则可能会损失文件

    tar [-zxvf] 压缩包名称 [-C 路径]
    # -z: 代表压缩包后缀是.gz的
    # -x: 代表解压
    # -v: 解压时,打印详细信息
    # -f: -f选项必须放在所有选项的最后,代表指定文件名称
    # -C 路径: 代表将压缩包内容解压到指定路径
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    8.1.2 打包成压缩包

    可以将多个文件以及目录打包成压缩包,根据选择的参数指定压缩包名

    tar [-zcvf] 压缩包名称 文件1 文件2 目录1 目录2 ...
    # -c: 代表打包
    # 其他参数同上
    
    • 1
    • 2
    • 3
    8.2 针对zip类型压缩包

    Linux不仅仅针对tar类型的压缩包,也支持zip,rar这种Windows下的压缩包。

    不过需要安装软件针对对各种类型压缩包的操作

    8.2.1 安装软件
    yum -y install zip     # 打包程序
    yum -y install unzip   # 解压程序
    
    • 1
    • 2
    8.2.2 解压以及打包
    # 解压
    unzip 压缩包名称
    
    # 打包
    zip 压缩包名称 文件1 文件2 目录1 目录2 ...
    zip 包名 目录/* 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    九、文件权限的修改【重点


    首先我们要清楚Linux文件的权限信息

    在Linux中输入ls -l 或者 ll查看文件和目录的详细信息

    文件详情
    在这里插入图片描述

    实例中,a目录的第一个属性用“d”标识这个a是一个目录。

    anaconda-ks.cfg第一个属性用“-”标识他是一个文件。

    在Linux文件详情的后面属性需要分为三组查看

    • rwx: 代表文件拥有者的权限
    • rwx: 代表文件所属组用户的权限
    • rwx: 代表其他用户对当前文件的操作权限
      • r: 代表read,读的权限
      • w: 代表write,写的权限
      • x: 代表execute,代表执行权限

    其余信息

    • 后续的第一个root:代表当前文件的拥有者

    • 后续的第二个root: 代表当前文件的所属组

    • 后续分别为:文件的大小和最后修改时间等信息

    9.1 对文件的权限修改

    使用chmod对文件的权限进行修改,一种使用数字,一种使用符号……

    • 数字方式方便操作,不过要修改整体权限信息
    • 符号方式更细粒度华,不过操作麻烦
    9.1.1 数字方式
    chmod [-R] 777 文件|目录
    # rwx在这三个权限中r:4,w:2,x:1
    # -R: 当修改一个目录权限时,可以添加-R,将目录下的全部内容,都修改权限。
    
    • 1
    • 2
    • 3
    9.1.2 符号方式
    chmod [-R] o=rwx 文件|目录
    # user:u,group:g,other:o,all:a
    # read:r,write:w,execute:x
    # 赋予权限的方式 , 添加:+,减掉:-,设定:=
    chmod o+x 文件 // 为其他组的用户增加一个执行权限
    # -R: 当修改一个目录权限时,可以添加-R,将目录下的全部内容,都修改权限。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    十、Linux的其他操作命令【重点


    10.1 进程的操作

    需要用到类似Windows的结束进程时,在Linux下需要使用如下命令

    ps -ef 
    # 查看全部正在运行的进程
    ps -ef | grep 搜索的内容
    # 杀死进程
    kill -9 pid
    
    # 分析 ps -ef | less 的输出结果 , 观察PPID
    root       1584   1575  0 19:51 pts/1    00:00:00 -bash
    root       2363      2  0 19:58 ?        00:00:00 [kworker/0:0]
    root       2408      2  0 20:00 ?        00:00:00 [kworker/u256:0]
    root       2422      1  0 20:01 ?        00:00:00 /usr/sbin/anacron -s
    root       2455      2  0 20:01 ?        00:00:00 [kworker/0:3]
    root       2538      2  0 20:06 ?        00:00:00 [kworker/0:1]
    root       2552      2  0 20:09 ?        00:00:00 [kworker/0:2]
    root       2561   1584  0 20:11 pts/1    00:00:00 ps -ef
    root       2562   1584  0 20:11 pts/1    00:00:00 less
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    UID :程序被该 UID 所拥有

    PID :就是这个程序的 ID

    PPID :则是其上级父程序的ID

    C :CPU使用的资源百分比

    STIME :系统启动时间

    TTY :登入者的终端机位置

    TIME :使用掉的CPU时间。

    CMD :所下达的是什么指令

    10.2 服务的操作

    和Windows下的服务操作一致,只需使用如下命令,默认为centos7版本

    # 针对服务的启动,停止,重启,开机自动启动,禁止开机自动启动,查看服务状态。
    systemctl start|stop|restart|enable|disable|status 服务名称
    systemctl status firewalld
    systemctl stop firewalld
    
    • 1
    • 2
    • 3
    • 4
    10.3 端口号查看

    如发现端口号被占用,可以使用如下方式查找pid,并结束进程

    # 想使用指定的命令需要事先下载netstat
    yum -y install net-tools
    # 查看端口号占用情况
    netstat -natp | grep 端口号
    netstat -natp | grep 22 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    10.4 访问地址

    类似浏览器访问路径,无法图形化显示,一般用于测试

    curl 访问地址
    
    • 1
    10.5 查找文件

    在Linux中查找指定文件,参数较多,如下为根据文件名称查询

    find 路径 -type f | grep profile
    
    find /etc -name *ens33*  
    
    • 1
    • 2
    • 3

    十一、Linux下安装软件


    11.1 安装JDK

    在Linux下安装JDK,并配置JAVA_HOME环境变量……

    11.1.1 下载JDK的压缩包

    去逛网下载压缩包,由于oracle官网更新,需要登录并同意协议才允许下载

    https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

    11.1.2 将jdk压缩包拉取到Linux系统中

    需要使用图形化界面的Sftp拖拽到Linux操作系统

    Xterm的Sftp图
    在这里插入图片描述
    11.1.3 将jdk的压缩包解压

    后期大多软件都安装在/usr/local下,直接使用tar解压

    tar -zxvf jdk-8u241-linux-x64.tar.gz -C /usr/local
    
    • 1
    11.1.4 将jdk的目录名修改一下

    为了方便配置环境变量,修改一下目录名称

    cd /usr/local
    mv jdk1.8.0_241 jdk
    
    • 1
    • 2
    11.1.5 配置环境变量

    Linux提供了两种环境变量的文件

    • 第一个是用户级别的环境变量,存放在:~/.bashrc
    • 第二个是系统级别的环境变量,存放在:/etc/profile

    修改哪个文件都可以,毕竟虚拟机就我们自己使用

    # 在环境变量文件中,添加如下内容
    export JAVA_HOME=/usr/local/jdk
    export PATH=$JAVA_HOME/bin:$PATH
    # 重新加载环境变量文件
    source /etc/profile
    # 最终测试
    java -version
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    测试效果
    在这里插入图片描述
    11.2 安装MySQL

    在MySQL下用yum的方式安装MySQL……

    11.2.1 安装MySQL的YUM存储库

    使用wget下载即可,不过需要先下载wget,再通过wget下载rpm包

    # 首先通过yum下载wget命令
    yum -y install wget
    # 通过wget下载MySQL存储库
    wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    
    • 1
    • 2
    • 3
    • 4
    11.2.2 安装下载好的rpm包

    使用rpm包的命令直接安装

    # 安装rpm包
    rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
    # 导入gpg-key
    rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
    
    • 1
    • 2
    • 3
    • 4
    11.2.3 选择发行版本

    由于默认安装8.0版本的MySQL,我们需要修改为5.7版本

    # 查看一下默认选择的发行版本
    yum repolist all | grep mysql
    # 通过编辑/etc/yum.repos.d/mysql-community.repo文件,去修改发行版本
    # 将80的enabled更改为0,将67的enabled更改为1,保存即可,再次通过yum repolist all | grep mysql查看
    # 效果如下
    
    • 1
    • 2
    • 3
    • 4
    • 5
    MySQL安装版本
    在这里插入图片描述
    11.2.4 安装MySQL社区版服务

    开始安装,这一步需要下载一段时间,下载失败就是网络较差了,学会科学上网

    yum -y install mysql-community-server
    
    • 1
    11.2.5 启动MySQL服务,并连接

    安装成功后,手动启动,并使用日志中的密码登陆,而且第一个操作必须是修改密码,才可后续正常操作

    # 启动MySQL服务
    systemctl start mysqld.service
    # 查看初始化密码
    grep 'temporary password' /var/log/mysqld.log
    # 连接MySQL服务
    mysql -u root -p
    Enter password:随机密码
    # 修改密码
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@ssw0rd';
    # 要求密码,必须携带大写字母,小写字母,数字,特殊符号
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    11.2.6 开启远程连接

    默认MySQL禁止远程链接,需要单独创建一个用户开启远程链接,这样就可以在windows下使用图形化工具连接

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'P@ssw0rd' WITH GRANT OPTION;
    mysql> FLUSH PRIVILEGES;
    
    • 1
    • 2

    补充:如何排查线上java程序CPU占用率过高问题?

    top命令

    # 先通过top命令找到消耗cpu很高的进程id
    top
    # 执行top -p pid单独监控该进程
    top -p pid
    # 监控界面输入H,获取当前进程下的所有线程信息,找到消耗cpu特别高的线程编号
    # jstack 输出线程信息
    jstack pid >> stack.txt
    # 查找高占用线程,这里需要把线程转16进制
    printf "%x\n" pid 
    # 在  stack.txt 中查找线程信息,定位到问题线程的问题方法
    # 查找出问题的方法的源代码,解决问题。
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    community-server

    
    
    
    ##### 11.2.5 启动MySQL服务,并连接
    
    > 安装成功后,手动启动,并使用日志中的密码登陆,而且第一个操作必须是修改密码,才可后续正常操作
    
    ```sh
    # 启动MySQL服务
    systemctl start mysqld.service
    # 查看初始化密码
    grep 'temporary password' /var/log/mysqld.log
    # 连接MySQL服务
    mysql -u root -p
    Enter password:随机密码
    # 修改密码
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@ssw0rd';
    # 要求密码,必须携带大写字母,小写字母,数字,特殊符号
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    11.2.6 开启远程连接

    默认MySQL禁止远程链接,需要单独创建一个用户开启远程链接,这样就可以在windows下使用图形化工具连接

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'P@ssw0rd' WITH GRANT OPTION;
    mysql> FLUSH PRIVILEGES;
    
    • 1
    • 2

    补充:如何排查线上java程序CPU占用率过高问题?

    top命令

    # 先通过top命令找到消耗cpu很高的进程id
    top
    # 执行top -p pid单独监控该进程
    top -p pid
    # 监控界面输入H,获取当前进程下的所有线程信息,找到消耗cpu特别高的线程编号
    # jstack 输出线程信息
    #这里的pid是进程
    jstack pid >> stack.txt
    # 查找高占用线程,这里需要把线程转16进制
    #线程id
    printf "%x\n" nid 
    # 在  stack.txt 中查找线程信息,定位到问题线程的问题方法
    # 查找出问题的方法的源代码,解决问题。
    #可以看见关于java的进程
    jps 
    jps -lv #可以看见关于java的详细进程名称
    
    #在后台运行 jar   &代表这句话结束,固定写法
    nohup java -jar boot.jar & 
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    
    
    • 1
  • 相关阅读:
    (进阶)004 - AWS DeepRacer重要资料合集
    .net core跨平台桌面程序 avalonia:从项目创建到打包部署linux-arm系统ubuntu
    使用VBS编写xshell/SecureCRT自动化脚本
    hbase常用命令
    2023-9-25 耍杂技的牛
    ArkID开源IDaaS系统插件OAuth2轻松实现单点登录安心做应用服务集成
    招投标系统简介 企业电子招投标采购系统源码之电子招投标系统 —降低企业采购成本
    Redis缓存异常处理以及淘汰策略
    算法 - 归并排序
    kubernetes kube-apiserver 存在SSRF漏洞
  • 原文地址:https://blog.csdn.net/qq_53374893/article/details/132640640