管理Linux软件包和进程

news/2024/11/15 3:05:06/

管理Linux软件包和进程

1. 源码下载安装软件

1.1 概念

  • 源码文件:程序编写者使用C或C++等语言编写的原始代码文本文件
  • 源码文件使用.tar.gz或.tar.bz2打包成压缩文件

1.2 特点

  • 源码包可移植性好,与待安装软件的工作环境依赖性不大
  • 由于有编译过程,其代码运行效率较高,是针对当前使用者环境的“量体裁衣”
  • 安装功能可以定制,可以选择需要的功能进行安装
  • 卸载方便,只需删除对应安装目录即可,没有Windows“注册表”的概念
  • 安装过程较为麻烦

1.3 安装过程

  • 下载解压缩源码压缩包
  • 分析安装软件环境
  • 编译软件
  • 安装软件

2. RPM管理工具

2.1 概念

  • RPM

    • RPM(Redhat Package Manager)由Red Hat公司提出的一种软件包管理标准。
    • 是Linux各发行版中应用最广泛的软件包格式之一(还有debian的发行版deb安装包)。
    • 产生原因:软件制作者在其工作环境下将软件编译完毕后再进行发布,以此减少安装编译时间,要求:软件安装环境与编译时的环境要相同。
  • RPM安装软件要求

    • 软件安装环境必须与打包软件环境一致。
    • 必须满足软件依赖性;
    • 软件卸载时必须小心,最底层软件不能先卸载。
  • rpm软件包命名格式

    • 含义:软件名-版本号-发行号.操作系统版本.硬件平台的类型.rpm。

    • 如:zsh-5.0.2-14.el7.x86_64.rpm

      zsh-502-14el7x8664
      软件名主版本号次版本号修订号软件发布次数发行商RHEL7cpu架构支持系统位数
  • rpm包相关网站

    • http://rpmfind.net/
    • http://rpm.pbone.net/

2.2 rpm软件安装

  • 格式:

    rpm	 -参数  软件包名
    
  • 参数

    参数作用
    -i,–install安装软件包
    –nodeps不验证软件包安装
    –force安装时提示已安装时覆盖安装
    -v,–verbose提供更多的详细信息输出
    -U软件包升级
    -e软件包卸载
  • 安装过程

    • 读取PRM软件包头部数据,进行软件依赖性查询;
    • 若满足条件则安装否则安装失败。
  • 例:

    # 从网站上获取软件包
    [root@server /]# wget https://dldir1.qq.com/qqfile/qq/QQNT/2355235c/linuxqq_3.1.1-11223_x86_64.rpm
    [root@server /]# rpm -ivh linuxqq_3.1.1-11223_x86_64.rpm
    错误:依赖检测失败:
    libXScrnSaver 被 linuxqq-3.1.1_11223-1.x86_64 需要
    # 手动解决依赖,在阿里云的镜像站中查询所需依赖的软件包
    [root@server /]# wget https://mirrors.aliyun.com/rockylinux/9.4/devel/x86_64/os/Packages/l/libXScrnSaver-1.2.3-10.el9.x86_64.rpm
    [root@server /]# rpm -ivh linuxqq_3.1.1-11223_x86_64.rpm
    

2.3 rpm的查询功能

  • 格式:

    rpm –q 包名
    # -q常与下面参数组合使用
    
  • 参数:

    参数作用
    -a查询所有已安装的软件包
    -l显示已安装软件包的相关文件列表和信息
    -f查询文件所属软件包
    -i显示已经安装的rpm软件包信息
  • 例:

    [root@localhost ~]# rpm -qa
    [root@localhost ~]# rpm -ql linuxqq
    [root@localhost ~]# rpm -qf /usr/bin/ls
    coreutils-8.32-35.el9.x86_64
    [root@localhost ~]# rpm -qf /usr/bin/qq
    file /usr/bin/qq is not owned by any package
    [root@localhost ~]# ls -l /usr/bin/qq
    lrwxrwxrwx. 1 root root 10 Nov 11 20:49 /usr/bin/qq -> /opt/QQ/qq
    [root@localhost ~]# rpm -qf /opt/QQ/qq
    linuxqq-3.2.13_29271-1.x86_64
    [root@localhost ~]# rpm -qi linuxqq
    Name        : linuxqq
    Version     : 3.2.13_29271
    Release     : 1
    Architecture: x86_64
    Install Date: Mon 11 Nov 2024 08:49:18 PM CST
    Group       : default
    Size        : 533913684
    License     : unknown
    Signature   : (none)
    Source RPM  : linuxqq-3.2.13_29271-1.src.rpm
    Build Date  : Fri 01 Nov 2024 06:07:00 PM CST
    Build Host  : ci1727710254707a-0.ci1727710254707a.default.svc.cluster.local
    Relocations : / 
    Packager    : Tencent <QQ-Team@tencent.com>
    Vendor      : Tencent <QQ-Team@tencent.com>
    URL         : https://im.qq.com
    Summary     : QQ
    Description :
    QQ
    

3.YUM/DNF管理工具

3.1 概念

  • yum:

    • YUM (Yellow dog Updater,Modified)
    • RHEL9中默认使用的软件批量管理工具由原版本的yum换成了速度更快的dnf(DNF = Dandified YUM),原有的yum命令仅为dnf的软链接,当然依旧可以使用。
  • yum/dnf功能:

    • 在线下载、 安装、 卸载、 升级rpm软件包
    • 自动查找并解决rpm包之间的依赖关系,一次性安装所有具有依赖关系的rpm包,而无需管理员逐个、 手工地去安装每一个rpm包。
  • 工作原理:

    • 将编译好的软件放置在YUM服务器中,并将这些软件的依赖性等信息记录下来形成表格组成数据库;
    • 用户安装软件时会向网络中的YUM服务器下载对应表格并与本机RPM数据库进行比较,最后一同下载全部软件进行安装,自动解决依赖性;
    • YUM软件仓库:记录软件依赖性等信息的数据库;

    在这里插入图片描述

  • 系统会去读取 /etc/yum.repos.d/ 目录下的 .repo 结尾的文件,从该文件中读取以下内容实现装包:

    • 包含各种rpm安装文件的软件仓库(rhel8开始有两个仓库,rhel7只有一个仓库)

      • BaseOS存储库:提供一套核心的底层操作系统功能,为基础软件安装库

      • AppStream存储库:包括额外的用户空间应用程序、运行时语言和数据库

3.2 命令

# 查看包、包组相关信息
dnf repolist [all] # 查看系统中yum资源库配置信息
dnf list all # 列出仓库里所有可安装的软件包
dnf list installed [包名] # 列出己经安装的所有的或指定的rpm包(包名中可使用匹配符)
dnf list available [包名] # 列出没有安装的所有的或指定的rpm包(包名中可使用匹配符)
dnf info 包名 # 查看指定软件包的详细信息
dnf grouplist [--hidden]# 查看仓库里而所有包组[显示隐藏]
dnf groupinfo 包组名 #查看指定包组里而的详细信息
# 安装、更新包和包组
dnf install [-y] 包名 # 安装指定的软件包,-y则在工作过程中需要使用者响应, 这个选个参数可以直
接回答yes
dnf update [-y] 包名 # 升级指定的软件包或主机中所有已安装的软件包
dnf groupinstall 包组名 # 安装指定包组里面的所有包
# 卸载软件包
dnf remove [-y] 包名 # 卸载已经安装在系统中的指定的软件包
# 搜索文件由哪个包产生
dnf provides 文件名 # 查找指定的文件属于哪个包
dnf whatprovides /etc/fstab # 查看这个文件是由那个包提供的
# 模糊搜索包名
dnf search 模糊包名 # 查看模糊包名的软件包
# 清空缓存
dnf clean packages all # 清除下载到本机的指定的软件包或所有软件包的yum源缓存

3.3 配置yum/dnf源

  • 建立本地源

    # 新建本地目录/RHEL9,用来挂载光盘
    [root@localhost ~]# mkdir /RHEL9/
    [root@localhost ~]# mount /dev/cdrom /RHEL9    #临时挂载
    # 永久挂载:将挂载命令添加到系统启动脚本中/etc/rc.d/rc.local
    [root@localhost init.d]# cd /etc/rc.d/
    [root@localhost rc.d]# vim rc.local
    [root@localhost rc.d]# cat rc.local 
    #!/bin/bash
    # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
    #
    # It is highly advisable to create own systemd services or udev rules
    # to run scripts during boot instead of using this file.
    #
    # In contrast to previous versions due to parallel execution during boot
    # this script will NOT be run after all other services.
    #
    # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
    # that this script will be executed during boot.touch /var/lock/subsys/local
    mount /dev/cdrom  /RHEL9/# 配置yum源
    [root@localhost rc.d]# cd /etc/yum.repos.d/
    [root@localhost yum.repos.d]# vim rhel.repo
    [root@localhost yum.repos.d]# cat rhel.repo
    [AppStream]
    name=AppStream
    baseurl=file:///RHEL9/AppStream
    gpgcheck=0
    enabled=1
    [BaseOS]
    name=BaseOS
    baseurl=file:///RHEL9/BaseOS
    gpgcheck=0
    enabled=1# 清除缓存
    [root@localhost yum.repos.d]# dnf clean all
    # 重建缓存
    [root@localhost yum.repos.d]# dnf makecache
    ## 软件仓库信息会储存在/var/cache/dnf/
    
  • 建立网络源

    Redhat9暂时无公开的网络源,可以使用Centos9的yum源
    使用xftp将配置文件上传到/etc/yum.repos.d目录
    重建缓存生效
    [root@localhost yum.repos.d]# pwd
    /etc/yum.repos.d
    [root@localhost yum.repos.d]# vim epel.repo
    [root@localhost yum.repos.d]# cat epel.repo
    [epel]
    name=epel
    baseurl=https://mirrors.aliyun.com/epel/9/Everything/x86_64/
    gpgcheck=0
    
  • 安装EPEL红帽扩展源

    官网:https://docs.fedoraproject.org/en-US/epel/
    安装:
    [root@localhost ~]# dnf install https://dl.fedoraproject.org/pub/epel/epel-releaselatest-9.noarch.rpm
    

4. 管理进程

4.1 概念

  • 程序、进程、线程
    • 程序: 二进制文件,文件存储在磁盘中,例如/usr/bin/目录下。
    • 进程:进程是已启动的可执行程序的运行实例。
    • 进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程。
    • 线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
    • 一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有。
    • 线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执行。
  • 进程分类

在这里插入图片描述

4.2 查看进程

  • 图形界面查看进程

    [root@localhost ~]# gnome-system-monitor   ##系统监控器
    
  • ps命令

    • 作用:ps显示某个时间点的程序运行情况

    • 格式:

      ps	-参数
      
    • 参数:

      • unix风格
      参数作用
      -a显示当前shell的进程
      -u显示指定用户的进程
      -e显示所有进程,包括没有控制终端的进程
      -l长格式显示,显示更详细内容
      -w宽行显示,可以使用多个 w 进行加宽显示
      -f做一个更完整的输出,可以看见命令的参数
      • bsd风格

        参数作用
        x显示无字符终端(tty)的进程
        a显示有字符终端(tty)的进程
        u利用用户信息进行归类
        f显示进程的层级关系
      • GNU风格

        # 自定义显示字段
        [root@localhost ~]# ps axo user,pid,ppid,%mem,command
        # 按指定字段进行排序显示
        [root@localhost ~]# ps ax --sort [+|-]%cpu -o %cpu,pid  ## +升序,-降序
    • 例:

      # 查看当前用户的进程
      [root@localhost ~]# ps -l
      F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
      0 S 0 32343 32342 0 80 0 - 56088 do_wai pts/2 00:00:00 bash
      4 R 0 33566 32343 0 80 0 - 56375 - pts/2 00:00:00 ps
      说明:
      F:代表这个程序标志(process flags),说明这个程序的权限。常见号码有:4表示此程序的权限为root;1表示此子程序仅进行复制(fork)而没有实际执行(exec)
      S:代表这个程序的状态(STAT),主要的状态有:R(Running):该程序正在运作中;S(Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒;D:不可被唤醒的睡眠状态,通常可能是在等待I/O的情况;T:停止状态(stop),可能是在工作控制(后台暂停)或traced状态;Z(Zombie):僵尸状态,程序已经终止但却无法被移除至记忆体外。+:位于后台的进程组
      UID/PID/PPID:代表此程序被该UID所拥有/程序的PID号码/此程序的父进程PID号码。
      C:代表CPU使用率,单位为百分比;
      PRI/NI:Priority/Nice的缩写,代表此程序被CPU所执行的优先顺序,数值越小代表该程序越快被CPU执行。
      ADDR/SZ/WCHAN:都与内存有关,ADDR是kernel funcition,指出该程序在内存的哪个部分,如果是running的程序,一般会显示-。SZ代表此程序用掉多少内存,WCHAN表示目前程序是否运作中,若为-表示正在运行。
      TTY:登入者的终端机位置,若为远程终端登入则使用动态终端界面(pts/n)。
      TIME:使用掉的CPU时间,即此程序实际花费CPU运作的时间。
      CMD:触发此进程的指令是什么。# 查看所有用户执行的进程的详细信息
      [root@localhost ~]# ps -le
      F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
      4 S 0 1 0 0 80 0 - 44776 do_epo ? 00:00:01 systemd
      1 S 0 2 0 0 80 0 - 0 - ? 00:00:00 kthreadd
      1 I 0 3 2 0 60 -20 - 0 - ? 00:00:00 rcu_gp
      
      # 查看当前用户的进程
      [root@localhost ~]# ps -u
      USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
      root 1280 2.2 0.2 237304 5408 tty1 Ss+ 15:54 0:00 -bash
      root 1415 0.1 0.2 237172 5092 pts/0 Ss 15:55 0:00 -bash
      root 1452 0.0 0.2 268484 4008 pts/0 R+ 15:55 0:00 ps -u
      [root@localhost ~]# ps aux | less
      USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
      root 1 0.0 0.0 2164 648 ? Ss 08:47 0:00
      init [5]
      #############################
      说明:
      USER: 运行进程的用户
      PID: 进程ID
      %CPU: CPU占用率
      %MEM: 内存占用率
      VSZ: 占用虚拟内存
      RSS: 占用实际内存 驻留内存
      TTY: 进程运行的终端
      STAT: 进程状态 man ps (/STATE)R  运行S  可中断睡眠 SleepD  不可中断睡眠T  停止的进程Z  僵尸进程X  死掉的进程s  进程的领导者,父进程<  <优先级较高的进程N  N优先级的进程+  +表示是前台的进程组l  以线程的方式运行
      START: 进程的启动时间
      TIME: 进程占用CPU的总时间
      COMMAND: 进程文件,进程名
      
      # 自定义显示字段
      [root@localhost ~]# ps axo user,pid,ppid,%mem,command
      USER PID PPID %MEM COMMAND
      root 1 0 0.7 /usr/lib/systemd/systemd --switched-root --system
      root 2 0 0.0 [kthreadd]
      root 3 2 0.0 [rcu_gp]
      
      # 查看进程树
      [root@localhost ~]# pstree
      
      # 查看指定进程的PID
      [root@localhost ~]# ps aux | grep sshd
      # cat /run/sshd.pid# 查看指定进程的PID
      [root@localhost ~]# pgrep -l sshd
      [root@localhost ~]# pidof sshd
      # 查看指定进程的PID
      [root@localhost ~]# pidof sshd
      
  • top命令

    • 格式:

      top [-d 数字] | [-bnp]
      
    • 参数:

      参数作用
      -d后面可以接秒数,就是整个进程界面更新的秒数,默认是3秒
      -b以批次的方式执行top,还有更多的参数可用。通常会搭配数据流重定向来将批处理的结果输出为文件。
      -n与-b搭配,监控几次top的输出结果后结束
      -i不显示闲置或者僵死的进程信息
      -c显示进程的整个命令路径,而不是只显示命令名称
      -s使top命令在安全模式下运行,此时top的交互式指令被取消,避免潜在危险
      -p指定某些个PID来进行查看检测
    • top的输出可以分为统计信息区进程信息区两个部分,即前5行为统计信息区,后面为进程信息区。

      • 统计信息区

        top - 18:35:47 up  1:42,  2 users,  load average: 0.41, 0.23, 0.21
        Tasks: 298 total,   1 running, 297 sleeping,   0 stopped,   0 zombie
        %Cpu(s):  0.9 us,  2.6 sy,  0.0 ni, 94.8 id,  0.0 wa,  1.6 hi,  0.2 si,  0.0 
        MiB Mem :   3627.1 total,   1327.8 free,   1400.3 used,   1150.1 buff/cache
        MiB Swap:   4012.0 total,   4012.0 free,      0.0 used.   2226.9 avail Mem 
        
        #############################
        第一行为任务队列信息:top - 18:35:47 up  1:42,  2 users,  load average: 0.41, 0.23, 0.21
        8:35:47表示当前系统时间;
        up  1:42表示系统已经启动1小时42分钟了;
        2 users表示当前登录系统的用户数;
        load average: 0.41, 0.23, 0.21表示系统1分钟、5分钟、15分钟前到现在的平均负载(如果是1表示满负载)第二行:Tasks: 298 total,   1 running, 297 sleeping,   0 stopped,   0 zombie
        298 total进程的总数
        1 running正在运行的进程数
        297 sleeping处于休眠状态的进程数
        0 stopped停止的进程数
        0 zombie僵死的进程数第三行:%Cpu(s):  0.9 us,  2.6 sy,  0.0 ni, 94.8 id,  0.0 wa,  1.6 hi,  0.2 si,  0.0 st 
        0.9 us表示用户进程占用CPU的百分比
        2.6 sy系统进程占用CPU的百分比;
        0.0 ni用户进程空间内改变过优先级的进程占用CPU的百分比
        94.8 id空闲CPU占用的百分比
        0.0 wa代表I/Owait表示等待输入、输出的进程占用CPU的百分比;
        1.6 hi表示cpu服务于硬件中断所耗费的时间总额
        0.2 si表示cpu服务于软件中断所耗费的时间总额;
        0.0 st表示虚拟机被hypervisor偷去的cpu时间
        另外,如果是多内核设备,可按下数字键“1”来切换成不同cpu的负载率。第四行、第五行
        MiB Mem : 1790.0 total, 1278.5 free, 240.5 used, 271.0 buff/cache
        MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1393.8 avail Mem
        total系统的内存大小
        free目前空余内存大小
        used已经使用的内存大小
        #############################
        
      • 进程信息区:显示了每个进程的运行状态

          PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ 1970 root      20   0  281064  73252  45864 S   6.6   2.0   1:18.57 2078 root      20   0 3992192 359096 132192 S   4.6   9.7   2:39.01
        
        #############################
        PID:进程的id
        USER:进程所有者的用户名
        PR:进程优先级
        NI:nice值。负值表示高优先级,正值表示低优先级
        VIRT:进程使用的虚拟内存总量,单位为KB
        RES:进程使用的、未被换出的物理内存大小,单位KB
        SHR:共享内存大小,单位KB
        S:进程状态,D表示不可中断的睡眠状态,R表示运行状态,S表示睡眠状态,T表示跟踪/停止,Z表示僵死进程
        %CPU:上次更新到现在的CPU时间占用百分比
        %MEM:进程占用的物理内存百分比
        TIME+:进程总计使用的CPU时间,单位为1/100秒
        COMMAND:正在运行进程的命令名或者命令路径
        #############################
        
      • 注意:可以在RHEL9中安装epel-release源后安装htop,是top的升级版

4.3 进程的前后台调用

Ctrl + z  将进程暂停,挂起
jobs   查看后台正在运行或已停止的进程
fg + 作业号(job号)    将后台作业(通过&符号放到后台运行的作业或者被Ctrl + Z暂停的作业)恢复到前台运行。
bg + 作业号(job号)    将在后台被暂停(使用Ctrl + Z暂停)的作业在后台继续运行

4.4 kill命令

  • 作用:强制结束进程

  • 格式

    kill 进程名/pid
    killall 进程名/pid
    

状态,D表示不可中断的睡眠状态,R表示运行状态,S表示睡眠状态,T表示跟踪/停止,Z表示僵死进程
%CPU:上次更新到现在的CPU时间占用百分比
%MEM:进程占用的物理内存百分比
TIME+:进程总计使用的CPU时间,单位为1/100秒
COMMAND:正在运行进程的命令名或者命令路径
#############################
```

- 注意:可以在RHEL9中安装epel-release源后安装htop,是top的升级版

4.3 进程的前后台调用

Ctrl + z  将进程暂停,挂起
jobs   查看后台正在运行或已停止的进程
fg + 作业号(job号)    将后台作业(通过&符号放到后台运行的作业或者被Ctrl + Z暂停的作业)恢复到前台运行。
bg + 作业号(job号)    将在后台被暂停(使用Ctrl + Z暂停)的作业在后台继续运行

4.4 kill命令

  • 作用:强制结束进程

  • 格式

    kill 进程名/pid
    killall 进程名/pid
    

http://www.ppmy.cn/news/1547108.html

相关文章

普通电脑上安装属于自己的Llama 3 大模型和对话客户端

#大模型下载地址&#xff1a;# Llama3 因为Hugging Face官网正常无法访问&#xff0c;因此推荐国内镜像进行下载&#xff1a; 官网地址&#xff1a;https://huggingface.co 国内镜像&#xff1a;https://hf-mirror.com GGUF 模型文件名称接受&#xff0c;如上述列表中&…

golang go语言 组建微服务架构详解 - 代码基于开源框架grpc+nacos服务管理配置平台

整体介绍&#xff1a; 本文主要介绍如何用go语言 来组建微服务的框架&#xff0c;grpc服务管理 示例框架 代码由grpcnacos go sdk 组成。 grpc负责将调用序列化并传递到远端&#xff0c;nacos负责服务发现和服务管理。 grpc和nacos都是开源产品。代码复制下来就能跑。 微服…

Ubuntu20.04 安装build-essential问题

#sudo apt-get install build-essential问题 The following packages have unmet dependencies: build-essential : Depends: libc6-dev but it is not going to be installed or libc-dev Depends: g (> 4:9.2) but it is not going to be installed E: Unable to correct…

2024年11月6日Github流行趋势

项目名称&#xff1a;twenty 项目维护者&#xff1a;charlesBochet, lucasbordeau, Weiko, FelixMalfait, bosiraphael 项目介绍&#xff1a;正在构建一个由社区支持的现代版Salesforce替代方案。 项目star数&#xff1a;19,714 项目fork数&#xff1a;2,200 项目名称&#xf…

【ShuQiHere】️计算机架构:x86 与 ARM 指令集架构的对比与发展

【ShuQiHere】️ &#x1f680; 目录 引言什么是指令集架构&#xff08;ISA&#xff09;&#xff1f;x86 指令集架构 &#x1f3db;️ 3.1 x86 的发展历史3.2 x86 架构的核心特点3.3 x86 在现代计算中的应用 ARM 指令集架构 &#x1f4f1; 4.1 ARM 的发展历史4.2 ARM 架构的核…

CSS的综合应用例子(网页制作)

这是html的一些最基本内容的代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <t…

Web安全之SQL注入---基础

文章目录 SQL注入简介SQL注入基础SQL注入分类SQL注入流程 SQL注入简介 什么是SQL注入&#xff1f; SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理…

深度学习——优化算法、激活函数、归一化、正则化

文章目录 &#x1f33a;深度学习面试八股汇总&#x1f33a;优化算法方法梯度下降 (Gradient Descent, GD)动量法 (Momentum)AdaGrad (Adaptive Gradient Algorithm)RMSProp (Root Mean Square Propagation)Adam (Adaptive Moment Estimation)AdamW 优化算法总结 经验和实践建议…