zoukankan      html  css  js  c++  java
  • Zabbix之四---Zabbix主被动模式监控、主被动模式proxy使用以及主动模式tomcat监控

    实战一:通过Zabbix实现主动模式监控

    1、主被动模式介绍

    (1)主动/被动介绍

      被动检测:相对于agent而言;agent, server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server;

      主动检测:相对于agent而言;agent(active),agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server;

    2、在zabbix网页上全克隆Template OS Linux模板

    (1)全克隆Template OS Linux模板

    (2)命名全克隆后的名称,然后在下面点击添加

     (3)将全克隆后的模板的监控项改为主动模式

     (4)点进去之后点击上面的对号,将模式全部选中,然后在最下面选中批量更新

       

    (5)将Zabbix默认的被动模式改为主动模式

    (6)修改完配置之后,点击更新即可。

     3、在node3主机上安装zabbix-agent包

    (1)在node3主机上配置zabbix.repo源仓库(/etc/yum.repos.d目录下配置阿里云仓库),并安装zabbix-agent包

    [root@nginx yum.repos.d]# cat zabbix.repo 
    [zabbix]
    name=Zabbix Official Repository - $basearch
    baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
     
    [zabbix-non-supported]
    name=Zabbix Official Repository non-supported - $basearch
    baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
    enabled=1
    gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX
    gpgcheck=1
     
    [zabbix-debuginfo]
    name=Zabbix Official Repository debuginfo - $basearch
    baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/debuginfo/
    enabled=0
    gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
    gpgcheck=1
    

    安装zabbix-agent包

    [root@nginx yum.repos.d]# yum install zabbix-agent -y
    

    (2)修改zabbix-agent配置文件:vim  /etc/zabbix/zabbix_agentd.conf

    Server=192.168.7.100  # zabbix-server服务器端的IP地址
    ServerActive=192.168.7.100  # zabbix-server服务器的IP地址
    Hostname=192.168.7.103  # 本机的IP地址(主动模式的IP地址)
    

    (3)重启zabbix-agent服务,并设置为开机启动

    # systemctl restart zabbix-agent
    # ststemctl enable zabbix-agent

    (4)在zabbix网页上创建主机

     (5)添加主机相关配置

     (6)添加上面创建主动模式的模板

    (7)查看此时添加的zabbix-agent已经变绿,说明配置正确

     (8)也可以在zabbix-server服务器端的主机进行测试zabbix-agent的状态:

    [root@zabbix yum.repos.d]# zabbix_get -s 192.168.7.103 -p 10050  -k "agent.ping"  # 提示结果为1,说明正确
    1
    

    (9)可以查看到主动模式的监控信息

     实战二:proxy代理的主动模式监控

    1、主被动模式介绍

     zabbix agent工作模式

    被动模式:由zabbix server向zabbix agent发出指令获取数据,即zabbix agent被动的去获取数据并返回给zabbix server,zabbix server周期性的向agent 索取数据,这种模式的最大问题就是会加大zabbix server的工作量,在数百台服务器的环境下zabbix server不能及时获取到最新数据,但这也是默认的工作方式。

    主动模式:由zabbix agent主动采集数据并返回给zabbix server,不再需要zabbix serve进行干预,因此主动模式在一定程度上可减轻zabbix server的压力。

    zabbix是一个分布式的监控系统,支持通过代理服务器zabbix  proxy收集zabbix  agent的数据,然后把收集保存在本地数据库并发送给zabbix  server进行统一存储和展示。

    工作模式:

    2、环境准备

    (1)环境配置

    机器名称

    IP配置

    服务角色

    zabbix-server

    192.168.7.100

    监控

    agent-node1

    192.168.7.101

    被监控端

    agent-node2

    192.168.7.102

    被监控端

    agent-node3

    192.168.7.103

    数据库

    agent-node4

    192.168.7.104

    代理proxy-主动模式

    agent-node5

    192.168.7.105

    代理proxy-被动模式

    3、在node4上安装zabbix-proxy-mysql包

    (1)在node4主机上配置zabbix.repo源仓库(/etc/yum.repos.d目录下配置阿里云仓库),并安装zabbix-proxy-mysql包

    [root@nginx yum.repos.d]# cat zabbix.repo 
    [zabbix]
    name=Zabbix Official Repository - $basearch
    baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
     
    [zabbix-non-supported]
    name=Zabbix Official Repository non-supported - $basearch
    baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
    enabled=1
    gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX
    gpgcheck=1
     
    [zabbix-debuginfo]
    name=Zabbix Official Repository debuginfo - $basearch
    baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/debuginfo/
    enabled=0
    gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
    gpgcheck=1

    (2)安装zabbix-proxy-mysql包

    # yum install zabbix-proxy-mysql  -y

    4、在node3上安装数据库

    (1)在node3主机上安装数据库

    [root@nginx yum.repos.d]# yum install mariadb-server  -y  # 安装mariadb数据库
    [root@nginx yum.repos.d]# systemctl start mariadb  # 启动数据库
    [root@nginx yum.repos.d]# systemctl enable mariadb  # 设置为开机启动
    [root@nginx yum.repos.d]# chown mysql.mysql -R /var/lib/mysql  # 将数据库的所有者和所属组改为mysql
    

    (2)配置数据库信息: /etc/my.cnf.d/mariadb-server.cnf 

    [server]
    skip_name_resolve = on
    innodb_file_per_table = on
    innodb_buffer_pool_size = 256M   #buffer缓存大小
    max_connections = 2000   #最大连接数
    log-bin = master-log    #二进制日志
    

    (3)创建主动模式的数据库(zabbix_proxy_active)  

    [root@nginx yum.repos.d]# mysql
    Welcome to the MariaDB monitor.  Commands end with ; or g.
    Your MariaDB connection id is 9
    Server version: 10.3.10-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    MariaDB [(none)]> create database zabbix_proxy_active  character set utf8 collate utf8_bin; 
    Query OK, 1 row affected (0.000 sec)
    
    MariaDB [(none)]> grant all privileges on zabbix_proxy_active.* to zabbix_proxy_active@'192.168.7.%' identified by '123456'; # 对zabbix_proxy_active数据库进行授权
    

    (4)在node2的mysql客户端进行连接测试

    [root@node2 ~]# mysql -uzabbix_proxy_active   -p123456 -h192.168.7.103
    Welcome to the MariaDB monitor.  Commands end with ; or g.
    Your MariaDB connection id is 22
    Server version: 10.3.10-MariaDB-log MariaDB Server
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    MariaDB [(none)]> 
    

    (5)在node4主机进行(安装了zabbix-proxy-mysql)初始化数据库,(此初始化数据库,使用的是代理的数据)

    [root@node4 yum.repos.d]# zcat  /usr/share/doc/zabbix-proxy-mysql-4.0.17/schema.sql.gz | mysql -uzabbix_proxy_active -h192.168.7.103 -p zabbix_proxy_active # 其中4.0.17是zabbix-proxy-mysql的版本,可以写成zabbix-proxy-mysql*初始化。
    Enter password:  # 输入数据库密码:123456
    

    (6)在node4主机上验证查看zabbix_proxy_active数据库中是否有数据

    [root@node4 yum.repos.d]# mysql -uzabbix_proxy_active -h192.168.7.103 -p123456
    Welcome to the MariaDB monitor.  Commands end with ; or g.
    Your MariaDB connection id is 13
    Server version: 10.3.10-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    MariaDB [(none)]> show databases; # 查看zabbix_proxy_active数据库。
    +---------------------+
    | Database            |
    +---------------------+
    | information_schema  |
    | zabbix_proxy_active |
    +---------------------+
    2 rows in set (0.001 sec)
    
    MariaDB [(none)]> use zabbix_proxy_active; # 切换到zabbix_proxy_active数据库
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    MariaDB [zabbix_proxy_active]> show tables; # 查看是否有表
    | Tables_in_zabbix_proxy_active |
    +-------------------------------+
    | acknowledges                  |
    | actions                       |
    | alerts                        |
    | application_discovery         |
    | application_prototype         |
    | application_template          |
    | applications                  |
    | auditlog                      |
    | auditlog_details              |
    

      (7)在node4主机上配置zabbix-proxy.conf文件(proxy端的文件)

        vim  /etc/zabbix/zabbix_proxy.conf

    [root@node4 zabbix]# grep "^[a-Z]" /etc/zabbix/zabbix_proxy.conf 
    ProxyMode=0  #改为主动模式
    Server=192.168.7.100 # zabbix-server服务器端的IP地址
    ServerPort=10051  # zabbix-proxy开启的端口
    Hostname=zabbix_proxy_active # 主动模式的hostname(代理服务器名称)
    ListenPort=10051  # 监听的端口
    DebugLevel=3 # 日志级别
    EnableRemoteCommands=1 # 允许远程连接
    LogRemoteCommands=0 # 关闭log日志记录
    PidFile=/var/run/zabbix/zabbix_proxy.pid
    SocketDir=/var/run/zabbix
    DBHost=192.168.7.103 # 数据库服务器地址
    DBName=zabbix_proxy_active # 使用数据库的名称
    DBUser=zabbix_proxy_active # 连接数据库的名称
    DBPassword=123456  # 数据库的密码
    ProxyLocalBuffer=720 # 已经提交到zabbix serverd的数据保留时间
    ProxyOfflineBuffer=720 # 未提交到zabbix serever的数据保留时间
    HeartbeatFrequency=120 # 心跳检测时间,默认是60s,被动模式不使用
    ConfigFrequency=60 # 间隔多久时间从zabbix server获取监控数据(一般设置五分钟)
    DataSenderFrequency=60 # 数据发送间隔时间,默认为1s。
    StartPollers=20 # 启动数据采集器数量
    JavaGateway=192.168.7.102 # zabbix-java-gateway主机的IP地址
    JavaGatewayPort=10052 # gateway主机的端口
    StartJavaPollers=20 # 启动多少个线程采集数据
    SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
    ListenIP=0.0.0.0 # 监控IP地址
    CacheSize=128M  # 保留监控项占用的最大内存(生产中是2G)
    HistoryCacheSize=128M # 保留监控历史数据占用的最大内存(生产中是2G)
    HistoryIndexCacheSize=32M  # 监控项历史数据的索引信息(生产中是2G)
    Timeout=30   # 监控项超时时长,单位为秒
    ExternalScripts=/usr/lib/zabbix/externalscripts
    LogSlowQueries=3000 #单位为毫秒,多久数据库查询会被记录到日志
    AllowRoot=0  # 暂时不允许root登陆
    User=zabbix  # 允许zabbix用户登录

     (8)修改完/etc/zabbix/zabbix_proxy.conf配置文件之后,重新其中zabbix-proxy服务。

    [root@node4 zabbix]# systemctl restart zabbix-proxy  # 重启zabbix-proxy服务
    [root@node4 zabbix]# systemctl enable zabbix-proxy   # 设置为开机启动
    [root@node4 zabbix]# tail -f /var/log/zabbix/zabbix_proxy.log   # 查看zabbix-proxy日志是否存在异常
     18333:20200223:192321.819 proxy #52 started [poller #15]
     18328:20200223:192321.821 proxy #47 started [poller #10]
     18334:20200223:192321.830 proxy #53 started [poller #16]
     18329:20200223:192321.832 proxy #48 started [poller #11]
     18339:20200223:192321.841 proxy #58 started [unreachable poller #1]
     18330:20200223:192321.843 proxy #49 started [poller #12]
     18338:20200223:192321.852 proxy #57 started [poller #20]
     18340:20200223:192321.876 proxy #59 started [icmp pinger #1]
     18335:20200223:192321.876 proxy #54 started [poller #17]
     18337:20200223:192321.887 proxy #56 started [poller #19]
    

    5、在node1被监控主机上安装zabbix-agent包

     (1)配置zabbix.repo阿里云仓库

    [root@localhost yum.repos.d]# cat zabbix.repo
    [zabbix]
    name=Zabbix Official Repository - $basearch
    baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
      
    [zabbix-non-supported]
    name=Zabbix Official Repository non-supported - $basearch
    baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
    enabled=1
    gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX
    gpgcheck=1
      
    [zabbix-debuginfo]
    name=Zabbix Official Repository debuginfo - $basearch
    baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/debuginfo/
    enabled=0
    gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
    gpgcheck=1
    

    (2)安装zabbix-agent包

    [root@node1 ~]# yum install zabbix-agent -y
    

    (3)修改node1被监控主机的zabbix-agent配置文件:/etc/zabbix/zabbix-agentd.conf

    Server=192.168.7.100,192.168.7.104  # zabbix-sever服务器端的IP地址及proxy代理的IP地址
    ServerActive=192.168.7.104  # zabbix-proxy代理服务器的IP地址
    Hostname=192.168.7.101  # 本地node1主机的IP地址
    

    (4)重启zabbix-agent服务,并设置为开机启动

    [root@node1 yum.repos.d]# systemctl restart zabbix-agent
    [root@node1 yum.repos.d]# systemctl enable  zabbix-agent
    

    (5)在zabbix网页上添加新的主机,将node1主机的IP地址及主动模式的模板添加上

     (6)将创建的主动模式的模板关联上

     (7)修改template OS Linux-active模板中的自动发现规则里边的被动模式

     (8)将网络的被动模式、监控项原型和系统、监控项原型的被动模式都改为主动模式

     (9)将系统的被动模式改为主动模式,时间间隔改为5s,实际生产中改为五分钟。

     (10)修改监控项原型里边的被动模式和时间间隔5s,生产中改为5m,因为时间有限,这里只演示一个示例,其他的就不在此操作,但是已经全部修改完。

     (11)此时查看proxy主动模式已经变为绿色的图标

     (12)此时监测的图形也已经有了信息。

     实战三:实现proxy代理被动模式的zabbix监控服务(不常用)

    1、在数据库上创建被动模式数据库  

    (1)在数据库上创建被动模式数据库并授权

    [root@nginx doc]# mysql
    Welcome to the MariaDB monitor.  Commands end with ; or g.
    Your MariaDB connection id is 160
    Server version: 10.3.10-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    MariaDB [(none)]> show databases;
    +---------------------+
    | Database            |
    +---------------------+
    | information_schema  |
    | mysql               |
    | performance_schema  |
    | zabbix_proxy_active |
    +---------------------+
    4 rows in set (0.000 sec)
    
    MariaDB [(none)]> create database zabbix_proxy_passive  character set utf8 collate utf8_bin;
    Query OK, 1 row affected (0.000 sec)
    
    MariaDB [(none)]> grant all privileges on zabbix_proxy_passive.* to zabbix_proxy_passive@'192.168.7.%' identified by '123456';
    Query OK, 0 rows affected (0.000 sec)
    
    MariaDB [(none)]> 
    

    2、在node5上安装zabbix-proxy-mysql包

    (1)安装zabbix-proxy-mysql包

    [root@node5 yum.repos.d]# yum install zabbix-proxy-mysql -y
    

    在node5主机上查看log,可以看到此时的数据库不是zabbix的数据库,需要初始化数据库

    (2)在node5主机上初始化zabbix_proxy_mysql数据库(被动模式的主机)

    [root@node5 ~]# zcat  /usr/share/doc/zabbix-proxy-mysql*/schema.sql.gz   | mysql -uzabbix_proxy_passive -h192.168.7.103 -p123456 zabbix_proxy_passive  # 192.168.7.103是远程连接的数据库地址

     将node4主机的主动模式的zabbix-proxy配置文件传到被动模式的主机上,并稍微修改即可

    [root@node4 zabbix]# scp /etc/zabbix/zabbix_proxy.conf  192.168.7.105:/etc/zabbix/zabbix_proxy.conf
    

    (3)修改被动模式的zabbix proxy代理配置文件:vim /etc/zabbix/zabbix_proxy.conf,主要修改以下几项,其他的都与主动模式的配置一致

    [root@node5 yum.repos.d]# grep "^[a-Z]" /etc/zabbix/zabbix_proxy.conf 
    ProxyMode=1
    Server=192.168.7.100
    Hostname=zabbix_proxy_passive
    DBName=zabbix_proxy_passive
    DBUser=zabbix_proxy_passive
    EnableRemoteCommands=1
    LogRemoteCommands=0

    启动zabbix-proxy服务:systemctl start zabbix-proxy

    (4)在zabbix网页上进行创建被动模式的代理

    (5)此时查看zabbix网页,被动模式的图标已经变为绿色

    3、在node2上安装zabbix-agent服务

    (1)安装zabbix-agent包

    # yum install zabbix-agent -y
    

    (2)配置zabbix-agent文件:vim /etc/zabbix/zabbix_agentd.conf

    Server=192.168.7.105  # 被动模式proxy主机的IP地址
    Hostname=192.168.7.102 # 本地主机的IP地址
    

    4、在zabbix网页上创建被动模式的主机

    (1)创建主机

     (3)关联被动模式模板

     (4)此时网页监控的被动模式显示比较慢,可以在node5上安装zabbix-get包进行测试验证:

    # yum install zabbix-get  -y
    # zabbix_get -s 192.168.7.102 -p 10050 -k "agent.ping"  # 验证返回的结果是1,说明配置正确
    1
    

    实战四:主动模式监控tomcat服务

    1、安装tomcat服务

    (1)在node1主动模式的主机上安装tomcat服务,具体安装过程见以下链接:https://www.cnblogs.com/struggle-1216/p/12307115.html

    [root@node1 yum.repos.d]# yum install java-1.8.0-openjdk -y  # yum安装jdk版本
    [root@node1 yum.repos.d]# java -version   # 查看此时jdk版本
    openjdk version "1.8.0_242"
    OpenJDK Runtime Environment (build 1.8.0_242-b08)
    OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
    

    (2) 从官网下载tomcat二进制安装包 http://tomcat.apache.org/

    下载路径:https://archive.apache.org/dist/tomcat/

    [root@node2 ~]# tar xvf apache-tomcat-8.5.42.tar.gz  -C /usr/local
    [root@node2 ~]# ln -sv  /usr/local/apache-tomcat-8.5.42/  /usr/local/tomcat
    ‘/usr/local/tomcat/apache-tomcat-8.5.42’ -> ‘/usr/local/apache-tomcat-8.5.42/’
    

    (3)配置tomcat参数vim /usr/local/tomcat/bin/catalina.sh

    CATALINA_OPTS="$CATALINA_OPTS
    -Dcom.sun.management.jmxremote  #启用远程监控JMX
    -Dcom.sun.management.jmxremote.port=12345 # 默认启动的JMX端口号,要和zabbix添加主机时候的端口一致即可
    -Dcom.sun.management.jmxremote.authenticate=false # 不使用用户名密码
    -Dcom.sun.management.jmxremote.ssl=false #不使用ssl认证
    -Djava.rmi.server.hostname=192.168.7.101" #tomcat主机自己的IP地址,不要写zabbix服务器的地址
    

    (4)启动tomcat服务

    [root@node2 tomcat]# ./bin/catalina.sh start
    Using CATALINA_BASE:   /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr/java/default
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Tomcat started.
    [root@node2 tomcat]# ss -nlt
    State       Recv-Q Send-Q                           Local Address:Port                                          Peer Address:Port             
    LISTEN      0      100                                  127.0.0.1:25                                                       *:*                 
    LISTEN      0      128                                          *:22                                                       *:*                 
    LISTEN      0      50                                        [::]:12345   # 验证监听了12345端口                                               [::]:*                 
    LISTEN      0      100                                      [::1]:25                                                    [::]:*                 
    LISTEN      0      1                           [::ffff:127.0.0.1]:8005                                                  [::]:*                 
    LISTEN      0      50                                        [::]:22567                                                 [::]:*                 
    LISTEN      0      100                                       [::]:8009                                                  [::]:*                 
    LISTEN      0      50                                        [::]:35756                                                 [::]:*                 
    LISTEN      0      100                                       [::]:8080     # 监听8080的tomcat端口                                             [::]:*                 
    LISTEN      0      128                                       [::]:22   
    

    2、在数据库(node3主机上安装zabbix-java-gateway包)并配置

    (1)安装zabbix-java-gateway包

    [root@nginx doc]# yum install zabbix-java-gateway -y
    

    (2)配置zabbix_java_gateway.conf文件

    [root@nginx doc]# vim /etc/zabbix/zabbix_java_gateway.conf 
    LISTEN_IP="0.0.0.0"  # 默认监控0.0.0.0的IP地址
    LISTEN_PORT=10052 # 默认监控10052端口
    START_POLLERS=5  # 启动多少个进程轮询java,要和java 应用保持一定关系
    TIMEOUT=30   # 超时时间30s,最大时间也就是30s,尽量超时时长改大点,否则后端服务器还未响应,当大于超时时长才进行响应,此时java-gateway已经显示超时。
    

    (3)重启zabbix-java-gateway服务:systemctl restart  zabbix-java-gateway  

    3、在zabbix网页上配置JMX接口

    (1)在zabbix网页上添加主动模式的tomcat服务(在原有的主动模式模板的基础上进行添加)

     (2)添加JMX接口

    (3)关联自定义的tomcat的JMX模板,如果没有自定义的模板,也可以添加Template APP Apache Tomcat JMX模板即可。

     (4)此时可以看到JMX接口已经变绿

      

      

      

      

      

     

      

      

      

  • 相关阅读:
    记录慕课学习爬取中国大学排名(由上交大计算的排名结果)
    SuperMap iMobile for Android室内导航APP
    Android studio入坑记录(SuperMap iMobile开发)
    2019年的十月和十一月
    python学习国庆期间
    学习python——collections系列
    又是快乐学习python的一天
    学习MATLAB
    Python学习练习题
    使用javaScript来实现一个有序链表
  • 原文地址:https://www.cnblogs.com/struggle-1216/p/12354813.html
Copyright © 2011-2022 走看看