• 基础运维(一)YUM仓库


    一  自定义YUM仓库

    1  Yum仓库特点

    作为yum源需要准备的内容

    • 大量的rpm 软件安装包文件
    • 针对这些软件包的 repodata/ 仓库档案

    repodata/ 仓库档案数据

    • filelists.xml.gz    // 软件包的文件安装清单
    • primary.xml.gz   // 软件包的基本/主要信息
    • other.xml.gz       // 软件包的其他信息
    • repomd.xml       // 提供. xml.gz下载和校验信息

    2  使用第三方RPM包建库

    需要额外创建 repodata/档案,将搜集的.rpm 包文件集中到指定目录

    1. [student@server1 ~]$ ls /linux-soft/s1
    2. # 准备从互联网下载的软件包传递到虚拟机中
    3. [student@server1 ~]$ scp /linux-soft/s1/tools.tar.gz root@192.168.88.240:/root
    4. # 虚拟机A进行tar解包
    5. [root@server ~]# tar -xf /root/tools.tar.gz -C
    6. [root@server ~]# ls /tools
    7. [root@server ~]# ls /tools/other
    8. # 生成仓库数据文件
    9. [root@server ~]# createrepo /tools/other
    10. [root@server ~]# ls /tools/other/
    11. [root@server ~]# vim /etc/yum.repos.d/mydvd.repo
    12. ……此处省略一万字
    13. [myrpm] # 唯一标识
    14. baseurl=file:///tools/other # 指定Yum仓库的路径
    15. gpgcheck=0
    16. [root@server ~]# yum repoinfo
    17. # 测试软件安装
    18. [root@server ~]# yum -y install sl
    19. [root@server ~]# yum -y install cmatrix

    3 自定义Yum仓库的更新:更新的顺序不能颠倒

    • 仓库数据文件的更新
    • Yum仓库缓存的更新
    1. [root@server ~]# mv /tools/other/sl-5.02-1.el7.x86_64.rpm /root
    2. [root@server ~]# ls /tools/other/
    3. # 更新仓库数据文件
    4. [root@server ~]# createrepo --update /tools/other
    5. # 更新缓存数据
    6. [root@server ~]# yum makecache
    7. [root@server ~]# yum repoinfo

    二  网络Yum仓库

    1  FTP服务方式

    1. 虚拟机A:提供仓库内容(FTP服务)
    2. 1.构建FTP服务
    3. [root@server ~]# yum -y install vsftpd
    4. [root@server ~]# vim /etc/vsftpd/vsftpd.conf
    5. anonymous_enable=YES # 开启无需密码验证功能
    6. [root@server ~]# systemctl restart vsftpd # 重启服务
    7. [root@server ~]# systemctl enable vsftpd # 设置开机自启
    8. Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
    9. 2.通过FTP提供仓库内容
    10. [root@server ~]# cp -r /tools/other /var/ftp/rpms
    11. 虚拟机B:进行访问仓库内容
    12. [root@pc2 ~]# vim /etc/yum.repos.d/mydvd.repo
    13. ……此处省略一万字
    14. [haha]
    15. baseurl=ftp://192.168.88.240/rpms
    16. gpgcheck=0
    17. [root@pc2 ~]# yum clean all # 清空Yum的缓存
    18. [root@pc2 ~]# yum repoinfo
    19. 虚拟机A:提供仓库内容(FTP服务)
    20. [root@server ~]# mkdir /var/ftp/dvd
    21. [root@server ~]# mount /dev/cdrom /var/ftp/dvd
    22. [root@server ~]# curl ftp://192.168.88.240/dvd/
    23. [root@server /]# vim /etc/fstab # 修改配置
    24. /dev/cdrom /var/ftp/dvd iso9660 defaults 0 0
    25. [root@server /]# umount /var/ftp/dvd
    26. [root@server /]# ls /var/ftp/dvd
    27. [root@server /]# mount -a
    28. mount: /dev/sr0 写保护,将以只读方式挂载
    29. [root@server /]# ls /var/ftp/dvd
    30. ........
    31. [root@server /]# vim /etc/yum.repos.d/mydvd.repo
    32. [aa]
    33. baseurl=ftp://192.168.88.240/dvd/AppStream
    34. gpgcheck=0
    35. [bb]
    36. baseurl=ftp://192.168.88.240/dvd/BaseOS
    37. gpgcheck=0
    38. [myrpm]
    39. baseurl=ftp://192.168.88.240/rpms
    40. gpgcheck=0
    41. [root@server ~]# yum clean all # 清空Yum的缓存
    42. [root@server ~]# yum repoinfo
    43. 虚拟机B:进行访问仓库内容
    44. [root@pc2 ~]# vim /etc/yum.repos.d/mydvd.repo
    45. [aa]
    46. baseurl=ftp://192.168.88.240/dvd/AppStream
    47. gpgcheck=0
    48. [bb]
    49. baseurl=ftp://192.168.88.240/dvd/BaseOS
    50. gpgcheck=0
    51. [myrpm]
    52. baseurl=ftp://192.168.88.240/rpms
    53. gpgcheck=0
    54. [root@pc2 ~]# yum clean all # 清空Yum的缓存
    55. [root@pc2 ~]# yum repoinfo

    2  Web服务方式

    1. 虚拟机A:提供仓库内容(Web服务)
    2. 1.构建Web服务
    3. [root@server ~]# yum -y install httpd
    4. [root@server ~]# systemctl restart httpd
    5. [root@server ~]# systemctl enable httpd
    6. 2.通过Web提供仓库内容
    7. [root@server ~]# mkdir /var/www/html/dvd
    8. [root@server ~]# mount /dev/cdrom /var/www/html/dvd
    9. 虚拟机B:进行访问仓库内容
    10. [root@pc2 ~]# vim /etc/yum.repos.d/mydvd.repo
    11. [aa]
    12. baseurl=http://192.168.88.240/dvd/AppStream
    13. gpgcheck=0
    14. [bb]
    15. baseurl=http://192.168.88.240/dvd/BaseOS
    16. gpgcheck=0
    17. [root@pc2 ~]# yum repoinfo
    18. 虚拟Web主机:
    19. [root@server ~]# vim /etc/httpd/conf.d/nsd01.conf
    20. <VirtualHost *:80>
    21. ServerName www.qq.com
    22. DocumentRoot /var/www/qq
    23. </VirtualHost>
    24. <VirtualHost *:80>
    25. ServerName www.baidu.com
    26. DocumentRoot /var/www/baidu
    27. </VirtualHost>
    28. <Directory "/var/www/qq">
    29. Options Indexes FollowSymLinks #显示目录内容
    30. </Directory>
    31. [root@server ~]# mkdir /var/www/qq /var/www/baidu
    32. [root@server ~]# echo wo shi QQ > /var/www/qq/index.html
    33. [root@server ~]# echo wo shi baidu > /var/www/baidu/index.html
    34. [root@server ~]# systemctl restart httpd
    35. [root@server ~]# mkdir /var/www/qq/dvd
    36. [root@server ~]# mount /dev/cdrom /var/www/qq/dvd

    三  DNS服务器基础

    1  DNS工作原理

    DNS解析的作用

    为什么需要DNS系统

    www.baidu.com 与 119.75.217.56,哪个更好记?

    互联网中的114查号台/导航员

    DNS服务器的功能

    • 正向解析:根据注册的域名查找其对应的IP地址
    • 反向解析:根据IP地址查找对应的注册域名,不常用

    DNS的分布式结构

    常见的顶级/一级域名

    • 国家/地区域:.cn、.us、.kr、.hk、.tw、……
    • 组织域: .com、.net、.edu、.org、.gov、.mil、……

    DNS域名管理

    IANA,互联网数字分配机构

    Internet Assigned Numbers Authority

    整个域名系统的最高权威机构

    CNNIC,中国互联网络信息中心

    China Internet Network Information Center

    主管国家顶级域 .cn

    域名注册/购买服务商

    阿里云,https://www.aliyun.com/

    华为云,https://www.huaweicloud.com/

    腾讯云,https://cloud.tencent.com/

    2  BIND服务分析

    BIND (Berkeley Internet Name Daemon

    伯克利Internet 域名服务

    官方站点:https://www.isc.org/

    1. [root@server ~]# yum -y install bind bind-chroot
    2. bind(主程序) // 域名服务包
    3. bind-chroot(提供牢笼政策) // 提供虚拟根支持

    BIND服务器端程序

    主要执行程序:/usr/sbin/named

    系统服务:named

    默认端口:TCP/UDP 53

    运行时的虚拟根环境:/var/named/chroot/

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

    地址库文件:/var/named/

    named,conf 配置文件

    全局配置部分

    设置监听地址/端口、地址库存放位置等

    1. options (
    2. listen-on port 53[192.168.88.1; // 监听地址和端口
    3. directory"/var/named"; // 地址文件的默认位置
    4. allow-query {any;l}; // 允许任何客户机查询
    5. ……
    6. //listen-on-v6 port 53 [ ::1; };
    7. //Include"/etc/named.rfc1912.zones"; //可载入其他配置
    8. 清理元余配置,三种注释方法:
    9. # 注释一整行或行内的部分文字
    10. // 注释一整行或行内的部分文字
    11. /* */ 可注释连续的多行文字

     区域配置部分

    定义DNS区域、类型、地址文件路径等

    关键词IN 表示Internet,可省略

    1. zone "baidu.cn" IN { // 定义正向区域
    2. type master; // 区域类型为主DNS
    3. file "baidu.cn.zone"; // 地址库文件
    4. };

    检查配置语法

    格式:named-checkconf[配置文件]

    1. [root@svr1~]# named-checkconf /etc/named.conf
    2. etc/named.conf:3: expected quoted string near
    3. [root@svr1 ~]# vim etc/named.conf // 如果有错,则修正错误
    4. [root@svr1 ~]# named-checkconf /etc/named.conf
    5. [root@svr1~]# // 无错误,无输出

    地址库文件

    全局TTL配置项及SOA记录

    $TTL (Time To Live,生存时间)

    SOA (Start of Authority,授权信息开始)

    分号“;”开始的部分表示注释

    1. # 在当前文件内,本区域名可简写为 @
    2. IN SOA 区域名,区域管理邮箱.(
    3. ……

    NS,域名服务器 (Name Server) 记录

    A,地址 (Address) 记录,仅用于正向解析区域

    1. NS server # 声明DNS服务器为server
    2. server A 192.168.88.240 # server解析结果为192.168.88.240
    3. www A 1.1.1.1
    4. ftp A 2.2.2.2

    案列

    虚拟机A:构建DNS服务器

    1.安装软件包

    2.修改主配置文件

    1. [root@server ~]# cp -p /etc/named.conf /root # 备份数据
    2. [root@server ~]# ls -l /root/named.conf
    3. [root@server ~]# vim /etc/named.conf # 大致浏览内容
    4. [root@server ~]# vim /etc/named.conf
    5. options {
    6. directory "/var/named"; # 定义地址库文件存放路径
    7. };
    8. zone "tedu.cn" IN { # 定义负责的解析tedu.cn域名
    9. type master; # 权威主DNS服务器
    10. file "tedu.cn.zone"; # 地址库文件名称
    11. };

    3.建立地址库文件

    保证named用户对地址库文件有读取权限

    如果没有以点作为结尾,那么默认补全本地库文件负责的域名

    1. [root@server ~]# cd /var/named/
    2. [root@server ~]# cp -p named.localhost tedu.cn.zone # 保持权限不变
    3. [root@server ~]# ls -l tedu.cn.zone
    4. [root@server ~]# vim tedu.cn.zone
    5. ……此处省略一万字
    6. NS server # 声明DNS服务器为server
    7. server A 192.168.88.240 # server解析结果为192.168.88.240
    8. www A 1.1.1.1
    9. ftp A 2.2.2.2
    10. [root@server named]# systemctl restart named

    虚拟机B:测试DNS服务器

    1.指定DNS服务器地址

    1. [root@server ~]# echo nameserver 192.168.88.240 > /etc/resolv.conf
    2. [root@server ~]# cat /etc/resolv.conf

    2.命令测试域名解析

    1. [root@server ~]# nslookup www.tedu.cn
    2. [root@server ~]# host ftp.tedu.cn

    /etc/hosts文件与/etc/resolv.conf文件

    1. 1./etc/hosts文件域名解析最高优先级
    2. 2./etc/resolv.conf文件指定DNS服务器地址

    3  特殊解析

    DNS的泛域名解析

    虚拟机A:

    1. [root@server /]# vim /var/named/tedu.cn.zone
    2. ……此处省略一万字
    3. NS server
    4. server A 192.168.88.240
    5. www A 1.1.1.1
    6. ftp A 2.2.2.2
    7. * A 6.6.6.6
    8. tedu.cn. A 7.7.7.7
    9. [root@server /]# systemctl restart named

    虚拟机B测试:

    1. [root@pc2 /]# nslookup wwwwww.tedu.cn
    2. [root@pc2 /]# nslookup tedu.cn

    •DNS有规律的泛域名解析

    stu1.tedu.cn-------->192.168.1.1

    stu2.tedu.cn-------->192.168.1.2

    stu3.tedu.cn-------->192.168.1.3

    stu4.tedu.cn-------->192.168.1.4

    .........

    stu50.tedu.cn-------->192.168.1.50

    内置函数:$GENERATE 制造连续的数字

    虚拟机A:

    1. [root@server /]# vim /var/named/tedu.cn.zone
    2. ……此处省略一万字
    3. NS server
    4. server A 192.168.88.240
    5. www A 1.1.1.1
    6. $GENERATE 1-50 stu$ A 192.168.1.$
    7. [root@server /]# systemctl restart named

    虚拟机B测试:

    1. [root@pc2 /]# nslookup stu1.tedu.cn
    2. [root@pc2 /]# nslookup stu23.tedu.cn

    DNS的解析记录的别名

    虚拟机A:

    1. [root@server /]# vim /var/named/tedu.cn.zone
    2. ……此处省略一万字
    3. NS server
    4. server A 192.168.88.240
    5. www A 192.168.4.20
    6. ftp A 2.2.2.2
    7. vip CNAME ftp #vip解析结果与ftp解析结果一致
    8. [root@server /]# systemctl restart named

    虚拟机B:测试

    [root@pc2 ~]# nslookup    vip.tedu.cn

    DNS服务器资源解析记录的类型:

    NS:DNS服务器声明记录

    A:正向解析记录

    CNAME:解析记录的别名

    4  递归查询(递归解析)与迭代查询(迭代解析)

    递归查询:客户端发送请求给首选DNS服务器,首选DNS服务器与其他的DNS服务器交流,最终将解析结果带回来过程

    迭代查询:客户端发送请求给首选DNS服务器,首选DNS服务器告知下一个DNS服务器地址

    四  邮件服务器

    电子邮件服务器的基本功能

    为用户提供电子邮箱存储空间(用户名@邮件域名)

    处理用户发出的邮件 —— 传递给收件服务器

    处理用户收到的邮件 —— 投递到邮箱

    1. [root@server /]# yum -y install postfix
    2. [root@server /]# rpm -q postfix #提供邮件功能的软件
    3. postfix-2.10.1-9.el7.x86_64
    4. [root@server /]# systemctl status postfix
    5. [root@server /]# useradd yg
    6. [root@server /]# useradd xln

    mail 发信操作: mail -s '邮件标题' -r 发件人 收件人

    1. [root@server /]# yum -y install mailx #提供mail命令软件
    2. [root@server /]# mail -s 'test01' -r yg xln
    3. hahaxixiehehelele
    4. . #一行只有一个点表示提交
    5. EOT

    mail 收信操作: mail [-u 用户名]

    1. [root@server /]# mail -u xln
    2. >N 1 yg@server.tedu.cn Fri Sep 18 17:24 18/510
    3. & 1 #输入邮件编号
    4. & quit #退出

    非交互式发邮件:

    1. [root@server ~]# echo 123456 | mail -s 'test02' -r yg xln
    2. [root@server ~]# mail -u xln

    五 NTP时间服务器

    作用:提供标准时间

    Network Time Protocol(网络时间协议)

    它用来同步网络中各个计算机的时间的协议

    210.72.145.39 (国家授时中心服务器IP地址)

    Stratum(分层设计)

    Stratum层的总数限制在15以内(包括15)

    虚拟机A:时间服务器

    1.安装软件包chrony

    1. [root@server /]# yum -y install chrony
    2. [root@server /]# rpm -q chrony

    2.修改配置文件

    1. [root@server /]# vim /etc/chrony.conf
    2. #pool 2.pool.ntp.org iburst # 与谁同步时间,iburst表示快速同步
    3. allow all # 开头的#去掉,修改为允许所有客户端
    4. local stratum 10 # 开头的#去掉,本机为第10层的时间服务器

    3.重启时间服务

    [root@server /]# systemctl    restart    chronyd

    虚拟机B:客户端

    1.安装软件包chrony

    [root@pc2 /]# yum  -y  install   chrony

    2.修改配置文件

    1. [root@pc2 /]# vim /etc/chrony.conf
    2. server 192.168.88.240 iburst #与192.168.88.240同步时间

    3.重启时间服务

    [root@pc2 /]# systemctl   restart   chronyd

    虚拟机B:

    1. 4.测试:
    2. [root@pc2 /]# date -s "2008-1-1"
    3. [root@pc2 /]# date
    4. [root@pc2 /]# systemctl restart chronyd
    5. [root@pc2 /]# date
    6. [root@pc2 /]# date

    六  常见DNS工单要求

    DNS服务器搭建要求:

    实现DNS服务器,在192.168.88.240上构建

    负责域名为sina.com,实现站点名www的解析

    实现www.sina.com解析结果为192.188.16.17

    1. 虚拟机A
    2. 1.安装软件包bind与bind-chroot
    3. 2.修改主配置文件
    4. [root@server /]# vim /etc/named.conf
    5. ........此处省略一万字
    6. zone "sina.com" IN {
    7. type master;
    8. file "sina.com.zone";
    9. };
    10. 3.建立地址库文件
    11. [root@server ~]# cd /var/named/
    12. [root@server ~]# cp -p named.localhost sina.com.zone
    13. [root@server ~]# vim sina.com.zone
    14. ........此处省略一万字
    15. NS server
    16. server A 192.168.88.240
    17. www A 192.188.16.17
    18. [root@server /]# systemctl restart named

    案例:搭建单区域DNS服务器

    1 问题

    本例要求要求为DNS区域tedu.cn搭建一台DNS服务器,以便用户能通过域名的方式访问网站。测试阶段主要提供以下正向记录:

    1. svr1.tedu.cn ---> 192.168.88.240
    2. pc2.tedu.cn ---> 192.168.88.2
    3. www.tedu.cn ---> 192.168.4.100

    配置完成后在客户机上验证查询结果。

    2 方案

    快速构建DNS服务器的基本过程:

    1. 安装 bind、bind-chroot 包
    2. 建立主配置文件 /etc/named.conf
    3. 建立地址库文件 /var/named/.. ..
    4. 启动 named 服务

    配置及使用DNS客户端的基本过程:

    1. 修改配置文件/etc/resolv.conf,添加nameserver=DNS服务器地址
    2. 使用host命令查询,提供目标域名作为参数

    3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:配置DNS服务器svr1

    1. 1)安装 bind、bind-chroot 包
    2. [root@svr1 ~]# yum -y install bind bind-chroot
    3. .. ..
    4. 2)建立主配置文件 /etc/named.conf
    5. [root@svr1 ~]# mv /etc/named.conf /etc/named.conf.origin //备份默认配置
    6. [root@svr1 ~]# vim /etc/named.conf //建立新配置
    7. options {
    8. directory "/var/named"; //地址库默认存放位置
    9. };
    10. zone "tedu.cn" { //定义正向DNS区域
    11. type master; //主区域
    12. file "tedu.cn.zone"; //自定义地址库文件名
    13. };
    14. 3)建立地址库文件 /var/named/tedu.cn.zone
    15. [root@svr1 ~]# cd /var/named/ //进地址库目录
    16. [root@svr1 named]# cp -p named.localhost tedu.cn.zone //参考范本建地址库文件
    17. [root@svr1 named]# vim tedu.cn.zone //修订地址库记录
    18. $TTL 1D //文件开头部分可保持不改
    19. @ IN SOA @ rname.invalid. (
    20. 0 ; serial
    21. 1D ; refresh
    22. 1H ; retry
    23. 1W ; expire
    24. 3H ) ; minimum
    25. @ NS svr1 //本区域DNS服务器的FQDN
    26. svr1 A 192.168.88.240 //为NS主机提供A记录
    27. pc2 A 192.168.88.2 //其他正向地址记录.. ..
    28. www A 192.168.4.100
    29. 4)启动 named 服务,并设置开机自启
    30. [root@svr1 named]# systemctl restart named
    31. [root@svr1 named]# systemctl enable named
    32. Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

    步骤二:配置DNS客户机pc2并测试

    1. 1)修改配置文件/etc/resolv.conf,指定默认使用哪一台DNS服务器
    2. [root@pc2 ~]# vim /etc/resolv.conf
    3. nameserver 192.168.88.1
    4. .. ..
    5. 2)使用host命令查询,提供目标域名作为参数
    6. [root@pc2 ~]# host svr1.tedu.cn
    7. svr1.tedu.cn has address 192.168.88.240
    8. [root@pc2 ~]# host pc2.tedu.cn
    9. pc2.tedu.cn has address 192.168.88.2
    10. [root@pc2 ~]# host www.tedu.cn
    11. www.tedu.cn has address 192.168.4.100
    12. 使用host测试DNS查询结果时,如果不方便修改/etc/resolv.conf文件,也可以采用“host 目标域名 DNS服务器地址”形式临时指定使用哪一台DNS服务器。
    13. [root@pc2 ~]# host pc2.tedu.cn 192.168.88.240
    14. Using domain server:
    15. Name: 192.168.88.1
    16. Address: 192.168.88.1#53
    17. Aliases:
    18. pc2.tedu.cn has address 192.168.88.2

    案例:NTP时间同步

    1 问题

    本例要求配置一台NTP时间服务器,需要完成下列任务:

    1. 部署一台NTP时间服务器
    2. 设置时间服务器上层与0.centos.pool.ntp.org同步
    3. 设置本地服务器层级数量为10
    4. 允许192.168.88.0/24网络的主机同步时间
    5. 客户端验证时间是否同步

    2 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:虚拟机A构建NTP时间服务器

    1. 1)使用yum安装bind、bind-chroot软件包
    2. [root@svr1 ~]# yum -y install chrony
    3. 已加载插件:fastestmirror, langpacks
    4. Loading mirror speeds from cached hostfile
    5. dvd | 3.6 kB 00:00
    6. 软件包 chrony-3.2-2.el7.x86_64 已安装并且是最新版本
    7. 无须任何处理
    8. [root@svr1 ~]# rpm -q chrony
    9. chrony-3.2-2.el7.x86_64
    10. [root@svr1 ~]#
    11. 2)修改配置文件/etc/chrony.conf
    12. [root@proxy ~]# vim /etc/chrony.conf
    13. server 0.centos.pool.ntp.org iburst //server用户客户端指向上层NTP服务器
    14. allow 192.168.88.0/24 //允许那个IP或网络访问NTP
    15. local stratum 10 //设置NTP服务器的层数量
    16. .. ..
    17. 3)重启chronyd服务
    18. [root@mail ~]# systemctl restart chronyd

    步骤二:虚拟机B构建NTP时间同步的客户端

    1. 1)修改/etc/chrony.conf文件
    2. [root@pc2 ~]# vim /etc/chrony.conf
    3. server 192.168.88.240 iburst
    4. 2)重启chronyd服务
    5. [root@pc2 ~]# systemctl restart chronyd
    6. 3)修改时间进行测试
    7. [root@pc2 ~]# date -s "2008-9-1"
    8. 20080901日 星期一 00:00:00 CST
    9. [root@pc2 ~]# date
    10. 20080901日 星期一 00:00:01 CST
    11. [root@pc2 ~]# systemctl restart chronyd
    12. [root@pc2 ~]# date
    13. 20080901日 星期一 00:01:42 CST
    14. [root@pc2 ~]# date
    15. 20200413日 星期一 18:44:56 CST

  • 相关阅读:
    java-net-php-python-springboot办公自动化系统计算机毕业设计程序
    计算机毕业设计Java的音乐网站管理系统(源码+系统+mysql数据库+lw文档)
    Nissi商城首页(三):仿唯品会的商品分类和品牌导航功能(完美)
    软件测试高频面试题真实分享/网上银行转账是怎么测的,设计一下测试用例。
    共同一作到底是什么含金量
    阿里云有奖体验:如何使用 PolarDB-X
    Vue项目的详细目录结构解析
    数据仓库性能测试方法论与工具集
    有向无环图的拓扑排序
    画法几何及工程制图考试卷A卷
  • 原文地址:https://blog.csdn.net/2301_79227925/article/details/133281257