p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 5.0pt; line-height: 150%; font-size: 10.5pt; font-family: Consolas }
h1 { margin-top: 17.0pt; margin-right: 0cm; margin-bottom: 16.5pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 240%; page-break-after: avoid; font-size: 20.0pt; font-family: Consolas }
h2 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 172%; page-break-after: avoid; font-size: 18.0pt; font-family: Consolas }
h3 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 150%; page-break-after: avoid; font-size: 16.0pt; font-family: Consolas }
h4 { margin-top: 14.0pt; margin-right: 0cm; margin-bottom: 14.5pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 157%; page-break-after: avoid; font-size: 14.0pt; font-family: Consolas }
h5 { margin-top: 14.0pt; margin-right: 0cm; margin-bottom: 14.5pt; margin-left: 0cm; text-align: justify; text-indent: 5.0pt; line-height: 156%; page-break-after: avoid; font-size: 14.0pt; font-family: Consolas }
h6 { margin-top: 12.0pt; margin-right: 0cm; margin-bottom: 3.2pt; margin-left: 0cm; text-align: justify; text-indent: 5.0pt; line-height: 133%; page-break-after: avoid; font-size: 12.0pt; font-family: "Calibri Light", "sans-serif" }
p.MsoHeader,li.MsoHeader,div.MsoHeader { margin: 0cm; margin-bottom: .0001pt; text-align: center; text-indent: 5.0pt; line-height: 150%; border: none; padding: 0cm; font-size: 9.0pt; font-family: Consolas }
p.MsoFooter,li.MsoFooter,div.MsoFooter { margin: 0cm; margin-bottom: .0001pt; text-indent: 5.0pt; line-height: 150%; font-size: 9.0pt; font-family: Consolas }
p.MsoCaption,li.MsoCaption,div.MsoCaption { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 10.0pt; line-height: 150%; font-size: 10.0pt; font-family: "Calibri Light", "sans-serif" }
a:link,span.MsoHyperlink { color: #EE7B08; text-decoration: underline }
a:visited,span.MsoHyperlinkFollowed { color: #977B2D; text-decoration: underline }
p.MsoDocumentMap,li.MsoDocumentMap,div.MsoDocumentMap { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 5.0pt; line-height: 150%; font-size: 12.0pt; font-family: "Heiti SC Light" }
pre { margin: 0cm; margin-bottom: .0001pt; font-size: 10.0pt; font-family: "Courier New" }
p.MsoAcetate,li.MsoAcetate,div.MsoAcetate { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 5.0pt; font-size: 9.0pt; font-family: Consolas }
span.MsoPlaceholderText { color: gray }
p.MsoNoSpacing,li.MsoNoSpacing,div.MsoNoSpacing { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 5.0pt; font-size: 10.5pt; font-family: Consolas }
p.MsoListParagraph,li.MsoListParagraph,div.MsoListParagraph { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 21.0pt; line-height: 150%; font-size: 10.5pt; font-family: Consolas }
span.MsoIntenseReference { font-variant: small-caps; color: #99CB38; letter-spacing: .25pt; font-weight: bold }
span.MsoBookTitle { letter-spacing: .25pt; font-weight: bold; font-style: italic }
span.1Char
{ font-family: Consolas; font-weight: bold }
span.2Char
{ font-family: Consolas; font-weight: bold }
span.3Char
{ font-family: Consolas; font-weight: bold }
span.4Char
{ font-family: Consolas; font-weight: bold }
span.5Char
{ font-family: Consolas; font-weight: bold }
span.6Char
{ font-family: "Calibri Light", "sans-serif"; font-weight: bold }
span.Char { font-family: Consolas }
span.Char0 { font-family: Consolas }
span.Char1 { font-family: "Heiti SC Light" }
p.a,li.a,div.a { margin-top: 0cm; margin-right: 5.0pt; margin-left: 5.0pt; margin-bottom: .0001pt; text-indent: 5.0pt; line-height: 12.0pt; background: #F2F2F2; font-size: 10.5pt; font-family: Consolas; color: #333333 }
span.Char2 { font-family: Consolas; color: #333333; background: #F2F2F2 }
span.Char3 { font-family: "Times New Roman", "serif" }
p.a0,li.a0,div.a0 { margin: 0cm; margin-bottom: .0001pt; line-height: 150%; border: none; padding: 0cm; font-size: 10.5pt; font-family: "Times New Roman", "serif" }
span.Char4 { font-family: "Courier New"; color: #333333; background: #F0F7FE }
p.a1,li.a1,div.a1 { margin-top: 0cm; margin-right: 28.65pt; margin-left: 0cm; margin-bottom: .0001pt; text-indent: 18.4pt; line-height: 12.0pt; background: #F0F7FE; border: none; padding: 0cm; font-size: 10.5pt; font-family: "Courier New"; color: #333333 }
span.HTMLChar { font-family: "Courier New" }
p.01, li.01, div.01
{ margin: 0cm; margin-bottom: .0001pt; text-align: justify; background: white; border: none; padding: 0cm; font-size: 10.5pt; font-family: "Calibri", "sans-serif"; color: black }
p.1, li.1, div.1
{ margin: 0cm; margin-bottom: .0001pt; font-size: 12.0pt; font-family: 黑体 }
p.a2,li.a2,div.a2 { margin: 0cm; margin-bottom: .0001pt; line-height: 15.6pt; background: #D9D9D9; border: none; padding: 0cm; font-size: 12.0pt; font-family: 宋体 }
span.1Char0
{ font-family: 黑体 }
span.Char5 { font-family: 宋体; background: #D9D9D9 }
span.Char6 { font-family: Consolas }
.MsoChpDefault { font-family: "Calibri", "sans-serif" }
div.WordSection1 { }
ol { margin-bottom: 0cm }
ul { margin-bottom: 0cm }

注意:本文不涉及性能测试、性能优化中的监控,所有文字的出发点都是日常运维监控。

在开始之前,我们还是先统一下认识:要监控一个对象,需要掌握哪些东西呢?

监控对象的理解:要监控的对象你是否了解呢?比如CPU到底是如何工作的?

监控对象的指标:我们要监控这个东西的什么属性?比如CPU的CPU使用率、负载、上下文切换。

确定报警基准线:怎么样才算是故障,要报警呢?比如CPU的负载到底多少算高?

如果上述的条件不满足,那就先不要开始实施监控了,因为等做完了,你会发现,然并卵?

1.1Zabbix安装前准备

主机名

IP地址

描述

系统版本

linux-node1.com

192.168.90.11

Zabbix-Server

CentOS7

linux-node2.com

192.168.90.12

Zabbix-Proxy

CentOS7

1.2Server服务端安装配置

1.2.1zabbix-Server安装

Zabbix3整个web界面做了一个全新的设计。

Zabbix存储配置包以及yum配置文件。

[root@linux-node1 ~]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

Zabbix程序包安装,以及MySQL、Zabbix-agent

[root@linux-node1 ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-server

创建Zabbix数据库以及用户。对这样的说明,参考MySQL数据库创建脚本

[root@linux-node1 ~]# mysql -uroot -p

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';

Query OK, 0 rows affected (0.00 sec)

导入初始模式和数据

[root@linux-node1 ~]# cd /usr/share/doc/zabbix-server-mysql-3.0.3/

[root@linux-node1 zabbix-server-mysql-3.0.3]# zcat create.sql.gz |mysql -uroot zabbix

编辑Zabbix_server.conf数据库配置

[root@linux-node1 ~]# grep  ^[a-Z]  /etc/zabbix/zabbix_server.conf

LogFile=/var/log/zabbix/zabbix_server.log

LogFileSize=0

PidFile=/var/run/zabbix/zabbix_server.pid

DBHost=localhost

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

SNMPTrapperFile=/var/log/snmptrap/snmptrap.log

Timeout=4

AlertScriptsPath=/usr/lib/zabbix/alertscripts

ExternalScripts=/usr/lib/zabbix/externalscripts

LogSlowQueries=3000

启动Zabbix服务进程

[root@linux-node1 ~]#  systemctl start zabbix-server

Apache的配置文件/etc/httpd/conf.d/zabbix.conf默认PHP已经配置好了。取消注释,设置正确的时区

[root@linux-node1 ~]# vim /etc/httpd/conf.d/zabbix.conf

php_value max_execution_time 300

php_value memory_limit 128M

php_value post_max_size 16M

php_value upload_max_filesize 2M

php_value max_input_time 300

php_value always_populate_raw_post_data -1

php_value date.timezone Asia/Shanghai

通过改变配置文件重新启动Apache Web服务器

[root@linux-node1 ~]# systemctl start httpd

1.2.2配置Web界面

在你的浏览器,打开网址http://Zabbix_server_ip/zabbix。

你应该看到的web安装向导的第一个屏幕,如图1-1

图1-1

确保所有软件先决条件。如图1-2

图1-2

输入连接到数据库详细信息。Zabbix数据库必须已经创建好。如图1-3

图1-3

连接Zabbix服务细节,如果没有改变可选择默认如图1-4

图1-4

回顾一个设置概要,如图1-5

图1-5

完成安装,会在/etc/zabbix/web/zabbix.conf.php生成配置文件。如图1-6

图1-6

Zabbix登陆准备。默认的用户名/密码为Admin/zabbix。如图1-7

图1-7

1.3Agent客户端安装配置

Zabbix可以用Agent/Server的架构,客户端的采集方式分为Agent、SNMP等,通常情况都是使用Agent方式对服务器进行监控,后续再学习使用其他监控方式(SNMP、JMX、IPMI)

1.3.1zabbix-Agent安装

安装zabbix-agent使用yum即可.(agent版本可以低于Server版)

[root@linux-node2 ~]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

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

1.3.2zabbix-Agent配置

配置Agent和Server间通过Zabbix私有协议通信,需要了解主动模式和被动模式:

Server被动模式:Server端主动向Agent采集数据。(1000台机器以内机器推荐使用)

ServerActive主动模式:Agent主动像Server端发送数据。(1000台以上机器推荐使用)

[root@linux-node2 ~]# sed -i 's#Server=127.0.0.1#Server=192.168.90.11#g' /etc/zabbix/zabbix_agentd.conf #修改被动模式监听地址为zabbix-server的IP地址

[root@linux-node2 ~]# egrep -v '^#|^$' /etc/zabbix/zabbix_agentd.conf #查看修改后信息

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

LogFileSize=0

Server=192.168.90.11  #被动模式 zabbix-server的IP(Agent可以有多个Ip 用于向多个Master发送数据)

ServerActive=127.0.0.1  #主动模式(Agent自动像Server发送数据)

Hostname=linux-node2.com

Include=/etc/zabbix/zabbix_agentd.d/

1.4zabbix配置文件

Zabbix的配置虽然不是很复杂,但有的配置参数很难用上,接下来就针对ZabbixServer、ZabbixAgent的配置文件,对其每个参数进行介绍,不求大家都深入了解,但是希望大家通过对本小结的学习知道每个参数是干什么用的。

1.4.1Zabbix_server.conf

Zabbix_Server很显然这个是server的配置文件,参数具体作用如下1-1表格列出

参数名称

是否必须

默认值

解释

ListenPort

10050

Trapper类型Item监听的端口

SourceIP

在连接其他服务器时,使用的本机IP地址

LogType

file

syslog #系统日志

file #指定日志文件位置(指定位置方便管理)

console #输出至屏幕

LogFile

/var/log/zabbix/zabbix_server.log

LogType设置file时,使用文件来记录zabbixserver日志位置

LogFileSize

1

0表示禁用日志自动rotation,如果日志达到了限制,并且rotation失败,老日志文件将会被清空掉,重新生成一个新日志。

DebugLevel

3

0 - 有关的zabbix过程的启动和停止的基本信息

1 - 关键信息

2 - 错误信息

3 - 警告

4 - 用于调试(产生大量的信息)

5 - 扩展调试(产生更多的信息)

PidFile

/var/run/zabbix/zabbix_server.pid

记录Zabbix Server pid的文件位置

DBHost

localhost

ZabbixServer数据库位置,设置localhost默认使用MySQL端口

DBName

zabbix

数据库名称

DBScheme

对IBM DB2或者PostgreSQL生效

DBUser

zabbix

数据库用户

DBPassword

数据库密码

DNSocket

/tmp/mysql.sock

MySQL Socket文件

DBPort

3306

MySQL端口

StartPollers

5

pollers进程数,可以简单理解为zabbix工作的一个worker

StartIPMIPollers

0

IPMIPollers进程数

StartPollersUnreachable

1

检查unreachable hosts(包括IPMI)的进程数

StartTrappers

5

Trappers进程数

StartPingers

1

用于discover的discoverer的进程数

StartHTTPPollers

1

用于HTTP检查的进程数

StartTimers

1

Timers的进程数

StartEscalators

1

JavaGateway

Zabbix Java gateway使用的IP或者hostname

JavaGatewayPort

10052

Java gateway使用的端口

StartJavaPollers

0

Java pollers的进程数

StartVMwareCollectors

0

Vmware poller的进程数

VMwareFrequency

60

Zabbix从Vmware获取监控指的频率,单位是秒

VMwarePerfFrequency

60

多久Zabbix会连接到VMware服务获取性能数据

VMwareCacheSize

8M

Vmware的缓存,存储Vmware数据的共享内存大小,只有当Vmware collectors启动生效

VMwareTimeout

10

Vmware的超时时间

SNMPTrapperFile

/var/log/snmptrap/snmptrap.log

SNMP设备将在数据发送到Server前会将SNMP数据存在文件中

StartSNMPTrapper

0

SNMPTrapper开始

ListenIP

0.0.0.0

Trappers监听的IP

HousekeepingFrequency

1

Zabbix执行Housekeeper的频率

MaxHousekeeperDelete

5000

在Zabbix数据库中,有一张housekeeper表,里面记录了housekeeper要执行的任务

SenderFrequency

30

Zabbix发送报警的时间间隔

CacheSize

8M

存储Host、Item和Trigger数据的内存空间

CacheUpdateFrequency

60

将配置信息同步到内存中的频率

StartDBSyncers

4

将数据同步到数据库的内存大小

HistoryCacheSize

16M

存储History数据的内存大小

HistoryIndexCacheSize

4M

历史索引缓存大小

TrendCacheSize

4M

存储Trends数据的内存大小

ValueCacheSize

8M

历史值缓存大小,为0不缓存

Timeout

4

Zabbix等待Agent、SNMP设备或者自定义脚本的执行时间

TrapperTimeout

300

Trapper处理新数据的超时时间

UnreachablePeriod

45

当host保持unreachable状态后多久将其标记为unreachable状态

UnavailableDelay

60

当Host为unabailable状态时,检查Host的availability的频率

UnreachableDelay

15

当Host为unabailable状态时,检查Host的availability的频率

AlertScriptsPath

/usr/lib/zabbix/alertscripts

自定义报警脚本的位置

ExternalScripts

/usr/lib/zabbix/externalscripts

自定义监控脚本的位置

FpingLocation

/usr/sbin/fping

fping位置,fping可执行文件的owner要设置为root,并且设置suid

Fping6Location

/usr/sbin/fping6

同上。可以处理IPV6

SSHKeyLocation

使用SSH检查和action所需要的SSH公钥、私钥位置

LogSlowQueries

3000

记录数据慢查询,只有设置为3或者4才会生效。0默认关闭

TmpDir

/tmp

临时文件目录

StartProxyPollers

1

被动Proxy的poller进程数

ProxyConfigFrequency

3600

Zabbix Server将配置信息同步到Proxy的频率,这个参数只对被动的Proxy生效

ProxyDataFrequency

1

ZabbixServer请求Proxy历史数据的频率。这个参数只对被动的Proxy生效

AllowRoot

0

是否允许Server以root身份运行。0表示不允许,1表示允许。

User

zabbix

下降到特定用户权限

Include

指定存放自定义监控的文件位置

SSLCertLocation

${datadir}/zabbix/ssl/certs

SSL 客户端证书的位置(此参数只用于web监控)

SSLKeyLocation

${datadir}/zabbix/ssl/keys

私钥为 SSL 客户端证书

SSLCALocation

SSL 服务器证书验证的证书机构 CA文件的位置( 此参数只用于 web 监测和 SMTP 身份验证)

LoadModulePath

{libdir}/modules

loadable组件的位置

LoadModule

需要Server载入的loadable组件,格式为LoadModule=<module.so>

TLSCAFile

顶级CA证书的文件

TLSCRLFile

吊销证书文件路径

TLSCertFile

服务器证书或证书链的文件

TLSKeyFile

服务器专用密钥的文件

1.4.2Zabbix_agentd.conf

参数名称

是否必须

默认值

解释

PidFile

/var/run/zabbix/zabbix_agentd.pid

记录Zabbix Agent pid的文件位置

LogType

file

syslog #系统日志

file #指定日志文件位置(指定位置方便管理)

console #输出至屏幕

LogFile

/var/log/zabbix/zabbix_agentd.log

LogType设置file时,使用文件来记录zabbixserver日志位置

LogFileSize

0

0表示禁用日志自动rotation,如果日志达到了限制,并且rotation失败,老日志文件将会被清空掉,重新生成一个新日志。

DebugLevel

3

0 - 有关的zabbix过程的启动和停止的基本信息

1 - 关键信息

2 - 错误信息

3 - 警告

4 - 用于调试(产生大量的信息)

5 - 扩展调试(产生更多的信息)

SourceIP

对外发起网络时使用的IP

EnableRemoteCommands

0

是否允许zabbixserver控制agent执行命令。0表示不允许。1表示允许

LogRemoteCommands

0

Server

127.0.0.1

ZabbixServer的IP或者主机名。ZabbixAgent只会接受来自这些IP或者主机名。如果有多个可以使用逗号分割

ListenPort

10050

ZabbixAgent监听的端口

ListenIP

0.0.0.0

ZabbixAgent监听的IP

StartAgents

3

处理被动检查的Zabbix_agentd进程数。如果设置为0,那么这个Agent的被动检查功能将禁止。Agent不会监听在所有的TCP端口

ServerActive

127.0.0.1

Zabbix主动模式(主动发送采集数据给ZabbixServer)

Hostname

运行ZabbixAgentd的hostname。必须与server中配置的hostname相同(默认不写是主机名)

HostnameItem

system.hostname

如果Hostname为空,会时候用这个参数定义的key的值作为Hostname,比如默认的system.hostname这个Zabbix自带的Key

HostMetadata

在host autho-registration中使用。如果超过255个字符。Agent会报错。如果没有设置,那么会从HostMetadataItme这个参数中获取

HostMetadataItem

使用一个ket的值作为host metadate的值

RefreshActiveChecks

120

主动检查项目列表刷新的时间

BufferSend

5

在buffer中缓存多少秒的数据

BufferSize

100

在内存buffer中缓存数据的最大个数,当buffer中的数据个数达到最大值后,会将数据发送到server或者Proxy

MaxLinesPerSecond

20

对于log和logrt类型的item,这个参数定义了每秒发送给server或者Proxy的最大行数。

Timeout

3

处理数据的超时时间

AllowRoot

0

是否允许Server以root身份运行。0表示不允许,1表示允许。

User

zabbix

下降到特定用户权限

Include

/etc/zabbix/zabbix_agentd.d/

指定存放自定义监控的文件位置推荐:/etc/zabbix/zabbix_agentd.d/*.conf

UnsafeUserParameters

0

在用户自定义的parameter中,所有的参数都会传递给脚本

UserParameter

用户自定义脚本的parameter,parameter意为key和脚本的对应关系。格式为UserParameter=<key>,<shell command>

LoadModulePath

${libdir}/modules

loadable组件的位置

LoadModule

需要Server载入的loadable组件,格式为LoadModule=<module.so>

TLSConnect

unencrypted

连接不加密

TLSAccept

unencrypted

接受不加密的连接

TLSCAFile

顶级CA证书的文件

TLSCRLFile

吊销证书文件路径

TLSServerCertIssuer

TLS服务器证书签发

TLSServerCertSubject

服务器证书主题

TLSCertFile

服务器证书或证书链的文件

TLSKeyFile

服务器专用密钥的文件

TLSPSKIdentity

预共享密钥区分大小写字符串

TLSPSKFile

预共享密钥文件路径

1.5zabbix宏的概述

宏的作用是便于在模板、Items、Trigger中的引用

Zabbix有许多内置的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.NAME}等

详细信息请参考官方文档: https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location

为了更强的灵活性,Zabbix还支持全局宏-模板宏-主机宏级别使用用户自定义宏(user macro),用户自定义宏要使用”{$MACRO}”这种特殊的语法格式, 宏的名称只能使用大写字母、数字及下划线

宏可以应用在item keys和descriptions、Trigger名称和表达式、主机接口IP/DNS及端口、discovery机制的SNMP协议的相关信息中等。

1.5.1宏的替换次序

首先是主机级别的宏;其次是当前主机上一级模板中(直接链接至主机的模板)的宏,多个一级模板按其ID号排序;

再接着是二级模板中的宏;而后依次类推;最后检查的是全局宏;

Zabbix如果无法查找到某主机定义使用的宏,则不会对其进行替换操作。要使用用户自定义宏,有以下两种途径:

全局宏:Administration→General→Macros

主机或模板级别的宏:编辑相应主机或者模板的属性即可

1.5.2宏的使用示例

在主机级别定义一个名为{$NETWORK_NUMBER}的宏,以定义当前主机所接受的网卡进口流量的合理大小(当然这里值根据具体情况来做,仅供一个参考)如图1-8、图1-9

图1-8

而后在主机的triggers中使用此宏

图1-9

第1章1zabbix快速入门的更多相关文章

  1. Gradle 1.12 翻译——第九章 Groovy快速入门

    由于时间关系,没办法同时做笔记和翻译,关于Gradle的用户指南,本博客不再做相关笔记,而只对未翻译章节进行翻译并在此发表. 有关其他已翻译的章节请关注Github上的项目:https://githu ...

  2. 第17章 社区快速入门和模板 - Identity Server 4 中文文档(v1.0.0)

    IdentityServer组织不维护这些示例.IdentityServer组织愉快地链接到社区模板,但不能对模板做出任何保证.请直接与作者联系. 17.1 各种ASP.NET核心安全样本 https ...

  3. 第02章 Python快速入门

    007.快速入门,边学边用 008.变量类型 print(type(变量))    查看变量的了类型     现在常用的变量的类型有整型.浮点型.字符型 009.List基础模块 类型转换:str(8 ...

  4. 第1章 PHP快速入门

    1.最好使用<?php   ?> 即XML风格的PHP标记: 2.echo语句:将传递给其自身的字符串打印到浏览器: 3.注释:①C风格的多行注释/*  */ ②C++风格的单行注释// ...

  5. 第四章 istio快速入门(快速安装)

    4.1 环境介绍 K8s 1.9 以上版本. 4.2 快速部署Istio 下载:  https://github.com/istio/istio/releases/,  下载 1.1.0-snapsh ...

  6. 第二章 Vue快速入门-- 28 自定义按键修饰符

    事件处理-按键修饰符 js 里面的键盘事件对应的键码 <!DOCTYPE html> <html lang="en"> <head> <m ...

  7. 第二章 Vue快速入门-- 27 字符串的padStart方法使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  8. 第二章 Vue快速入门-- 26 过滤器-定义私有过滤器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  9. 第二章 Vue快速入门-- 25 过滤器-定义格式化时间的全局过滤器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

随机推荐

  1. Microsoft.Identity的IPasswordHasher的默认实现与运用

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文地址  www.cnblogs.com/tdws 相信了解了MS Identity认证体系的一定知道UserManager的作用,他是整个体 ...

  2. JSP 学习一

    今天开始JSP的学习,作为Web开发人员,对JSP的开发是必不可少的,因此有必要对JSP进行掌握和学习:为此开始JSP的学习: 今日目标: 1)什么是JSP? 2)JSP的运行机制? 3)JSP的三种 ...

  3. MegCup 2017 极客挑战赛 初赛试题

    看着像八卦,数数不是八卦,是29卦 每卦又有29个小弧 所以是29×29个bit 这29×29个bit怎么理解呢?并且从哪一卦开始到哪一卦结束?是先环向层层向里走还是先径向逐卦走? 我想不出来. 我猜 ...

  4. 【openstack N版】——可视化服务horizon

    一. openstack可视化服务horizon 1.1dashboard介绍 仪表盘依赖于功能核心服务,包括身份,图像服务,计算和网络两种(neutron)或传统网络(nova-neutron)与独 ...

  5. 最近发现的.net core中的一些bugs

    1.使用.net core的过程中发现TypeInfo.GetCustomAttributes()只能写在主线程中,否则如果该自定义特性存在于nuget中就会报错,貌似nuget中的dll仅在主线程使 ...

  6. Java学习——用户界面的布局

    使用布局管理器 FlowLayout管理器 面板的默认布局管理器是java.awt包中的FlowLayout类.使用FlowLayout时,像在页面中排列英文单词那样排组件:从左到右排列,当前行没有空 ...

  7. 完全理解Python迭代对象、迭代器、生成器

    在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...

  8. How to create a repository in Github with Eclipse?

    How to create a repository in Github with Eclipse? Here is an answer. I will teach you how to do it ...

  9. Django之admin

    django amdin是django提供的一个后台管理页面,改管理页面提供完善的html和css,使得你在通过Model创建完数据库表之后, 就可以对数据进行增删改查,而使用django admin ...

  10. 使用js实现ajax的get请求步骤

    (以下内容非原创,视频整合得来的) 1.创建XMLHttpRequest对象 2.浏览器与服务器建立连接 3.浏览器向服务器发送请求 4.服务器向浏览器响应请求 下面给出一个实例 1.创建一个test ...