SNMP(Simple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。在RHEL中,SNMP的配置文件地址是/etc/snmp/snmpd.conf。snmpd.conf的配置项很多,但是真正常用的就那么几个,下面来逐个介绍。

com2sec命令,它的基本语法是“com2sec NAME SOURCE COMMUNITY”。这里要提一下SNMP的安全策略,其实SNMP的安全性并不好,在这个协议中使用COMMUNITY这个东西来做访问控制的。简单来理解就是现在有一个帮会的一个人找去了总舵,那么这个人怎么跟总舵相认呢?他们直接约定一个“暗号”,例如见面就说“床前明月光”,那么总舵的前台就会带你去“床前明月光”想对应的地方。现在回过头来看这行配置,假如有以下一句话

com2sec  magusu default  magus

意思就是做一个映射,把magus这个COMMUNITY串和magusu这个名字做好一对映射,那么以后在调用SNMP的时候,只要你声明你就是magus,那么就可以获得相应的权限了。有了映射以后下面需要做的是建立一个从magusu到组的一个映射,用到的命令是group,它的基本语法是“group NAME MODEL SECURITY”

group  magusg v2c  magusu

上面这句话的意思就是把magusu放到组magusg里面,用的协议是v2c,插一句,SNMP现在通常用的有3个版本。那好了,组建好了下来要做什么呢?就是要建立一个VIEW,VIEW的基本语法是“view NAME TYPE SUBTREE [MASK]”

view  magusv  included  .1.3.6.1.4.1.9129

像上面这句话的意思就是赋予magusv这个view能够查看1.3.6.1.4.1.9129下面所有节点的权限。最后要做的是设定哪些组的人,哪些view的用户可以做什么具体的事情,用access来设置,基本语法是“access NAME CONTEXT MODEL LEVEL PREFX READ WRITE NOTIFY”。

access   magusg   “”   any   noauth   exact   magusv   magusv   none

由于例子中用的是v2c版本的协议,所以CONTEXT必须为空,MODEL也就是协议的版本号,在这里例子里面可以是any也可以是v2c,还是由于v2c的缘故,所以LEVEL是noauth;READ、WRITE和NOTIFY分别需要指定一个view或者什么都不指定;在这里的设置就是magusv这个view可以对前面设置好的节点进行读和写操作。

到此,服务端的配置已经完成,重启一下snmpd就可以了,下面看看如何通过SNMP得到我们想要的数据

snmpwalk -v 2c -c magus localhost 1.3.6.1.4.1.9129.1.2.2

snmpwalk可以便利指定节点下的所有子节点,-v 参数指定SNMP的协议版本,这个跟我们之前配置服务器的版本是要一致的,也就是2c,然后-c参数就指定了community的字符串,也就是刚才定义的magus,然后就是主机地址,由于我在本机测试,所以用的localhost,实际中可以填上IP,最后就是OID的值。搞定!

对于刚刚接触SNMP的朋友来说,理解community的作用是关键,其实说的通俗点就是接头暗号,而且还是个明文的“暗号”。

No related posts.

现在我们在目标机上来写一些脚本来显标 MEM 、 CPU 、 DiskIO 
MEM 数据的抓取脚本: 
[root@wy1 root]# cat  mfree.sh    
#!/bin/sh 
/usr/bin/free -m | grep Mem |awk '{print $4}' 
/usr/bin/free -m | grep Mem |awk '{print $2}' 
[root@wy1 root]# sh  mfree.sh   ( 上面一个数据是内存使用量,下面的是内存总量 ,M) 
442  
1006 
CPU 数据的抓取脚本 
[root@wy1 root]# cat  cpustat.sh 
#!/bin/sh 
idle=`sar  -u 1 3 | grep Average | awk '{print $6}'` 
used=`echo "101 - $idle" | bc -l -s` 
echo $used 
echo $idle 
DiskIO 数据的抓取脚本 
[root@wy1 root]# cat  iostat.sh     (显示硬盘 IO , k/s ) 
#!/bin/sh 
used1=`sar -d 1 3 | tail -1 | awk '{print $4}'` 
used2=`echo "$used1 / 2" | bc -l` 
echo $used2 
echo $used2

好现在我们已经能得到这数据了,怎么才能让监控主机通过 snmpd 得到这些数据呢?可以在目标主机的/etc/snmp/snmpd.conf 文件下面加个这些行: 
exec .1.3.6.1.4.1.2021.53 mfree /bin/sh /root/mfree.sh 
 exec .1.3.6.1.4.1.2021.54 cpustat /bin/sh /root/cpustat.sh 
 exec .1.3.6.1.4.1.2021.55 iostat /bin/sh /root/iostat.sh 
service  snmpd  restart   重启目标主机上的 snmpd 服务。 
这样在监控主机上运行 : 
   [root@wy2 root]# snmpwalk -v 1  192.168.13.103 -c public .1.3.6.1.4.1.2021.53 
UCD-SNMP-MIB::ucdavis.53.1.1 = INTEGER: 1 
UCD-SNMP-MIB::ucdavis.53.2.1 = STRING: "mfree" 
UCD-SNMP-MIB::ucdavis.53.3.1 = STRING: "/bin/sh /root/mfree.sh" 
UCD-SNMP-MIB::ucdavis.53.100.1 = INTEGER: 0 
UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: "442" 
UCD-SNMP-MIB::ucdavis.53.101.2 = STRING: "1006" 
UCD-SNMP-MIB::ucdavis.53.102.1 = INTEGER: 0 
其中 UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: "442"  中的 442 就是 mfree.sh 输出的第一个数据, 1006 是mfree.sh 输出的第二个数据。 OK ,再做一下加工: 
[root@wy2 root]# snmpwalk -v 1  192.168.13.103 -c public .1.3.6.1.4.1.2021.53 | grep 53.101 | awk -F/" '{print $2}' 
443 
1006 
好,我们已经通过 snmpd 从监控主机上得到了目标主机上内存使用的这两个数据了:) , 其它的两个脚本也一样:
  CPU 使用、空闲。 
[root@wy2 root]# snmpwalk -v 1  192.168.13.103 -c public .1.3.6.1.4.1.2021.54 | grep 54.101 | awk -F/" '{print $2}' 
1.17 
99.83 
   DISK IO  状态: 
[root@wy2 root]# snmpwalk -v 1  192.168.13.103 -c public .1.3.6.1.4.1.2021.55 | grep 55.101 | awk -F/" '{print $2}' 
43.00000000000000000000 
43.00000000000000000000

最 后是编辑监控主机上的 mrtg.cfg 文件,在 Target[xxxx] 中加入上面的命令,下面是我的 mrtg.cfg 文件,前面的两个 Target 是我用 /usr/bin/cfgmaker --global 'WorkDir: /home/httpd/mrtg/net' --
global 'Options[_]:growright,bits' --ifref=ip public@192.168.13.103   命令生 成的,
后面的是我跟据 platinum  的 "mrtg 能做些什么 " 的贴子内的 mrtg.cfg 文件改的。(在精华里,大家可以看一下)。 
[root@wy1 root]# cat /home/httpd/mrtg/103/mrtg.cfg  
# Created by  
# /usr/bin/cfgmaker --global 'WorkDir: /home/httpd/mrtg/net' --global 'Options[_]:growright,bits' --ifref=ip public@192.168.13.103

### Global Config Options

#  for UNIX 
# WorkDir: /home/http/mrtg

#  or for NT 
# WorkDir: c:/mrtgdata

### Global Defaults

#  to get bits instead of bytes and graphs growing to the right 
# Options[_]: growright, bits

WorkDir: /home/httpd/mrtg/103 
Options[_]:growright,bits 
Language: chinese 
###################################################################### 
# System: wy1 
# Description: Linux wy1 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686 
# Contact: Root <root@wuying.com > (configure /etc/snmp/snmp.local.conf) 
# Location: wy1.wuying.com (edit /etc/snmp/snmpd.conf ) 
######################################################################

### Interface 2 >> Descr: 'eth0' | Name: '' | Ip: '192.168.13.103' | Eth: '00-06-5b-19-9d-ea' ###

Target[192.168.13.103_192.168.13.103]: /192.168.13.103:public@192.168.13.103: 
SetEnv[192.168.13.103_192.168.13.103]: MRTG_INT_IP="192.168.13.103" MRTG_INT_DESCR="eth0" 
MaxBytes[192.168.13.103_192.168.13.103]: 1250000 
Xsize[192.168.13.103_192.168.13.103]: 300 
Ysize[192.168.13.103_192.168.13.103]: 100 
#kmg[192.168.13.103_192.168.13.103]: K/s,M/s 
#kilo[192.168.13.103_192.168.13.103]: 1024 
Title[192.168.13.103_192.168.13.103]: Traffic for eth0 192.168.13.103 -- wy1 
PageTop[192.168.13.103_192.168.13.103]: <H1>Traffic for eth0 192.168.13.103 -- wy1</H1> 
#Options[192.168.13.103_192.168.13.103]: growright,gauge,nopercent

### Interface 3 >> Descr: 'eth1' | Name: '' | Ip: '172.16.0.188' | Eth: '00-06-5b-19-9d-e9' ###

Target[192.168.13.103_172.16.0.188]: /172.16.0.188:public@192.168.13.103: 
SetEnv[192.168.13.103_172.16.0.188]: MRTG_INT_IP="172.16.0.188" MRTG_INT_DESCR="eth1" 
Xsize[192.168.13.103_172.16.0.188]: 300 
Ysize[192.168.13.103_172.16.0.188]: 100 
MaxBytes[192.168.13.103_172.16.0.188]: 1250000 
#ShortLegend[192.168.13.103_172.16.0.188]:  
#kmg[192.168.13.103_172.16.0.188]: b/s,Kb/s 
#kilo[192.168.13.103_172.16.0.188]: 1024 
Title[192.168.13.103_172.16.0.188]: Traffic for eth1 172.16.0.188 -- wy1 
PageTop[192.168.13.103_172.16.0.188]: <H1>Traffic for eth1 172.16.0.188 -- wy1</H1> 
#Options[192.168.13.103_172.16.0.188]: growright,gauge,nopercent

###MEM status

Target[wy1_mem]:`snmpwalk -v 1  192.168.13.103 -c public .1.3.6.1.4.1.2021.53 | grep 53.101 | awk -F/" '{print $2}'` 
#Targey[wy1_mem]: memTotalReal.0&memAvailReal.0:holdata@holdata.3322.org 
Xsize[wy1_mem]: 300 
Ysize[wy1_mem]: 100 
Ytics[wy1_mem]: 7 
MaxBytes[wy1_mem]: 1006 
Title[wy1_mem]:Memory State of WY1 IP 192.168.13.103 Server 
PageTop[wy1_mem]:<H1>Memory State of WY1 IP 192.168.13.103 Server</H1> 
ShortLegend[wy1_mem]: MB 
kmg[wy1_mem]: MB 
kilo[wy1_mem]:1024 
YLegend[wy1_mem]: Memory Usage 
Legend1[wy1_mem]:  可用内存 
Legend2[wy1_mem]:  总内存量 
Legend3[wy1_mem]:  可用内存 
Legend4[wy1_mem]:  总内存量 
LegendI[wy1_mem]:  可用内存 
LegendO[wy1_mem]:  总内存量 
Options[wy1_mem]: growright,gauge,nopercent

###cpu status 
Target[wy1_CPU]:`snmpwalk -v 1  192.168.13.103 -c public .1.3.6.1.4.1.2021.54 | grep 54.101 | awk -F/" '{print $2}'` 
#Targey[wy1_CPU]: memTotalReal.0&memAvailReal.0:holdata@holdata.3322.org 
Xsize[wy1_CPU]: 300 
Ysize[wy1_CPU]: 100 
Ytics[wy1_CPU]: 7 
MaxBytes[wy1_CPU]: 100 
Title[wy1_CPU]:CPU State of WY1 IP 192.168.13.103 Server 
PageTop[wy1_CPU]:<H1>CPU State of WY1 IP 192.168.13.103 Server</H1> 
ShortLegend[wy1_CPU]:  
kmg[wy1_CPU]: % 
#kilo[wy1_CPU]:1024 
YLegend[wy1_CPU]: CPU Usage  
Legend1[wy1_CPU]:  已用 CPU:  
Legend2[wy1_CPU]:  可用 CPU:   
LegendI[wy1_CPU]:  已用 CPU:  
LegendO[wy1_CPU]:  可用 CPU:  
Options[wy1_CPU]: growright,gauge,nopercent

###iostat 
###cpu status 
Target[wy1_IO]:`snmpwalk -v 1  192.168.13.103 -c public .1.3.6.1.4.1.2021.55 | grep 55.101 | awk -F/" '{print $2}'` 
#Targey[wy1_IO]: memTotalReal.0&memAvailReal.0:holdata@holdata.3322.org 
Xsize[wy1_IO]: 300 
Ysize[wy1_IO]: 100 
Ytics[wy1_IO]: 7 
MaxBytes[wy1_IO]: 10000 
Title[wy1_IO]: DISK IO State of WY1 IP 192.168.13.103 Server 
PageTop[wy1_IO]:<H1>DISK IO State of WY1 IP 192.168.13.103 Server</H1> 
ShortLegend[wy1_IO]:  
kmg[wy1_IO]: K/s,M/s 
kilo[wy1_IO]:1024 
YLegend[wy1_IO]: DISK IO SPEED 
Legend1[wy1_IO]: IO 速度 : 
Legend2[wy1_IO]: IO 速度 : 
LegendI[wy1_IO]: IO 速度 : 
LegendO[wy1_IO]: IO 速度 : 
Options[wy1_IO]: growright,gauge,nopercent

用 indexmaker -o  /home/httpd/mrtg/103/index.html  /home/httpd/mrtg/103/mrtg.cfg   生成网页,在 crontab  中加入 */5 * * * * mrtg /home/httpd/mrtg/103/mrtg.cfg   
OK , 这样我们就能通过 mrtg 生成的图来监控我们 linux 的机器的状态了。在 IE 中打入 http: //192.168.13.105/mrtg/103,mrtg 的监控网页就出来啦
( /home/httpd/ 是我 appache 的主目录)。当然我们也 能用 snmpwalk 命令来得到安装有 snmp 服务的 win2000机器的状态的数据: 
如:

[root@wy1 103]# snmpwalk -v 1 192.168.1.5 -c public HOST-RESOURCES-MIB::hrStorage     
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 3800424 KBytes 
HOST-RESOURCES-MIB::hrStorageIndex.1 = INTEGER: 1 
HOST-RESOURCES-MIB::hrStorageIndex.2 = INTEGER: 2 
HOST-RESOURCES-MIB::hrStorageIndex.3 = INTEGER: 3 
HOST-RESOURCES-MIB::hrStorageIndex.4 = INTEGER: 4 
HOST-RESOURCES-MIB::hrStorageIndex.5 = INTEGER: 5 
HOST-RESOURCES-MIB::hrStorageIndex.6 = INTEGER: 6 
HOST-RESOURCES-MIB::hrStorageType.1 = OID: HOST-RESOURCES-TYPES::hrStorageRemovableDisk 
HOST-RESOURCES-MIB::hrStorageType.2 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk 
HOST-RESOURCES-MIB::hrStorageType.3 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk 
HOST-RESOURCES-MIB::hrStorageType.4 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk 
HOST-RESOURCES-MIB::hrStorageType.5 = OID: HOST-RESOURCES-TYPES::hrStorageCompactDisc 
HOST-RESOURCES-MIB::hrStorageType.6 = OID: HOST-RESOURCES-TYPES::hrStorageVirtualMemory 
HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: A:/ 
HOST-RESOURCES-MIB::hrStorageDescr.2 = STRING: C:/ Label:  Serial Number 581e89fe 
HOST-RESOURCES-MIB::hrStorageDescr.3 = STRING: D:/ Label:New Volume  Serial Number 1cde6e55 
HOST-RESOURCES-MIB::hrStorageDescr.4 = STRING: E:/ Label:DATA_BAK  Serial Number 30d29147 
HOST-RESOURCES-MIB::hrStorageDescr.5 = STRING: F:/ 
HOST-RESOURCES-MIB::hrStorageDescr.6 = STRING: Virtual Memory 
HOST-RESOURCES-MIB::hrStorageAllocationUnits.1 = INTEGER: 0 Bytes 
HOST-RESOURCES-MIB::hrStorageAllocationUnits.2 = INTEGER: 4096 Bytes 
HOST-RESOURCES-MIB::hrStorageAllocationUnits.3 = INTEGER: 4096 Bytes 
HOST-RESOURCES-MIB::hrStorageAllocationUnits.4 = INTEGER: 4096 Bytes 
HOST-RESOURCES-MIB::hrStorageAllocationUnits.5 = INTEGER: 0 Bytes 
HOST-RESOURCES-MIB::hrStorageAllocationUnits.6 = INTEGER: 65536 Bytes 
HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 0 
HOST-RESOURCES-MIB::hrStorageSize.2 = INTEGER: 2050287 
HOST-RESOURCES-MIB::hrStorageSize.3 = INTEGER: 15703529 
HOST-RESOURCES-MIB::hrStorageSize.4 = INTEGER: 53263499 
HOST-RESOURCES-MIB::hrStorageSize.5 = INTEGER: 0 
HOST-RESOURCES-MIB::hrStorageSize.6 = INTEGER: 89444 
HOST-RESOURCES-MIB::hrStorageUsed.1 = INTEGER: 0 
HOST-RESOURCES-MIB::hrStorageUsed.2 = INTEGER: 1233681 
HOST-RESOURCES-MIB::hrStorageUsed.3 = INTEGER: 591593 
HOST-RESOURCES-MIB::hrStorageUsed.4 = INTEGER: 23583930 
HOST-RESOURCES-MIB::hrStorageUsed.5 = INTEGER: 0 
HOST-RESOURCES-MIB::hrStorageUsed.6 = INTEGER: 50611 
HOST-RESOURCES-MIB::hrStorageAllocationFailures.1 = Counter32: 0 
HOST-RESOURCES-MIB::hrStorageAllocationFailures.2 = Counter32: 0 
HOST-RESOURCES-MIB::hrStorageAllocationFailures.3 = Counter32: 0 
HOST-RESOURCES-MIB::hrStorageAllocationFailures.4 = Counter32: 0 
HOST-RESOURCES-MIB::hrStorageAllocationFailures.5 = Counter32: 0 
HOST-RESOURCES-MIB::hrStorageAllocationFailures.6 = Counter32: 0 
上面显示的是 192.168.1.5 这台 win2000SERVER 的磁盘信息,可以看到盘符、每个分区的空间总量、使用量等。其它的相应建值还有: 
Diskused:                                 HOST-RESOURCES-MIB::hrStorageUsed 
CPU:                                    HOST-RESOURCES-MIB::hrProcessorLoad 
RUN Proc:                               HOST-RESOURCES-MIB::hrSWRunName 
SYS Uptime:                             HOST-RESOURCES-MIB::hrSystemUptime SNMPv2-MIB::sysUpTime 
SYS Date:                               HOST-RESOURCES-MIB::hrSystemDate 
SYS Device:                             HOST-RESOURCES-MIB::hrDeviceDescr 
SYS Descr:                              SNMPv2-MIB::sysDescr 
SYS Name:                               SNMPv2-MIB::sysName 
netcard speed:                          IF-MIB::ifSpeed 
netcard physcal address:                IF-MIB::ifPhysAddress 
这样我们就可以用一台 linux 主机通过 snmp+mrtg 来监控多台局域网内的 linux/win2000SERVER 了:)。 
现在我最关心的是如何让 snmp 包穿过防火墙,(我用 snmpwalk 试了一下,抓不到公司在 IDC 防火墙后的SERVER 的 snmp 数据)。

Linux下的snmpd.conf配置说明的更多相关文章

  1. Linux下/etc/resolv.conf 配置DNS客户

    文件/etc/resolv.conf配置DNS客户,它包含了主机的域名搜索顺序和DNS服务器的地址,每一行应包含一个关键字和一个或多个的由空格隔开的参数.下面是一个例子文件: search mydom ...

  2. Linux下/etc/resolv.conf 会被重新写入

    主要原因是因为安装了network manager,所以在启动后每次都会重写这个文件. 所以需要在network manager->eth0->ipv4->Automatic(DHC ...

  3. linux下Postgresql-9.2安装及数据库的创建过程

    公司写部署手册需要,现总结一些linux下postgresql的安装及数据库创建的详细步骤吧! 1.1.1  软件安装   1.设置用户组和用户级别 Postgresql不能以root身份运行,要以其 ...

  4. Linux下的sudo及其配置文件/etc/sudoers的详细配置说明

    http://www.osedu.net/article/linux/2011-01-03/178.html Linux下的sudo及其配置文件/etc/sudoers的详细配置说明 1.sudo介绍 ...

  5. Linux下hosts、host.conf、resolv.conf

    /etc/resolv.conf 该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数. resolv.conf的关键字主要有四个,分别是: nameserver   ...

  6. VMware Linux 下 Nginx 安装配置 - nginx.conf 配置 [负载两个 Tomcat] (三)

    首先启动Nginx 1. 相关浏览 两个 Tomcat 配置:  VMware Linux 下 Nginx 安装配置 - Tomcat 配置 (二) Nginx 安装配置启动: VMware Linu ...

  7. Linux下hosts、host.conf、resolv.conf的区别

    /etc/resolv.conf 该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数.resolv.conf的关键字主要有四个,分别是:nameserver   #定 ...

  8. linux下编译qt5.6.0静态库(使用./configure --help来看看都有哪些参数。超详细,有每一个模块的说明。如果改变了安装的目录,需要到安装目录下的bin目录下创建文件qt.conf)(乌合之众)good

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  9. 【Linux】snmp在message中报错: /etc/snmp/snmpd.conf: line 311: Error: ERROR: This output format has been de

    Apr 17 17:36:17 localhost snmpd[2810]: /etc/snmp/snmpd.conf: line 311: Error: ERROR: This output for ...

随机推荐

  1. helm的安装于与简单使用

    根据 csdn 博客整理学习 原始博客地址: https://blog.csdn.net/weiguang1017/article/details/78045013 1. 下载所需要的文件: 客户端文 ...

  2. MySQL的order by时区分大小写

    Mysql 查询区分大小写 mysql查询默认是不区分大小写的 如: select * from some_table where str=‘abc'; select * from some_tabl ...

  3. Codeforces 68D - Half-decay Tree

    题意 有一颗高度为 \(h\) 的完全二叉树(即点数为 \(2^{h+1}-1\) ),有两种操作: add x y 给 \(x\) 点的权值加 \(y\) decay 一次衰变定义为选择一个叶子节点 ...

  4. Degree Set CodeForces - 976D(双指针)

    题意: 构造一个无向图,使得无向图里的所有点的度数 所组成的集合 即为给出的几个数 解析: 题中的数是以上升的顺序给出的, 我们对于dn+1个数进行处理,对于当前数i,有两个操作 1.向后边的所有点连 ...

  5. BZOJ3193 [JLOI2013]地形生成 【dp】

    题目链接 BZOJ3193 题解 注意\(key\)是小于 第一问,显然按高度降序排序,逐个插入 如果高度各不相同,那么之前插入的都比当前插入的\(i\)大,可插入的位置个数就确定了 由于存在高度相同 ...

  6. Atcoder Grand 011 C - Squared Graph

    题意: 给出一个n个点的图,现在构造一个有n^2个点的新图,新图每个点表示为(a,b)(a,b<=n),两个点$(a,b),(c,d)$之间有边当且仅当原图中ac之间有边,bd之间有边. 问新图 ...

  7. isspace 对含有中文 的字符串进行检查的时候表现不正常!?

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> ...

  8. lca 欧拉序+rmq(st) 欧拉序+rmq(线段树) 离线dfs 倍增

    https://www.luogu.org/problemnew/show/P3379 1.欧拉序+rmq(st) /* 在这里,对于一个数,选择最左边的 选择任意一个都可以,[left_index, ...

  9. AdaBoost原理详解

    写一点自己理解的AdaBoost,然后再贴上面试过程中被问到的相关问题.按照以下目录展开. 当然,也可以去我的博客上看 Boosting提升算法 AdaBoost 原理理解 实例 算法流程 公式推导 ...

  10. harbor高可用集群配置

    目录 说明 双主复制 主从同步 双主复制说明 多harbor实例共享后端存储 方案说明 环境说明 配置说明 安装redis和mysql 导入registry数据库 配置harbor 挂载nfs目录 修 ...