zabbix二次开发之从mysql取值在运维平台js图表展现
前沿:
集群控制平台已经要慢慢的灰度上线了,出问题的时候,才找点bug,时间有点空闲。正好看了下zabbix的数据库,产生了自己想做一套能更好的展现zabbix的页面。
更多内容请到我的个人的博客站点,blog.xiaorui.cc
zabbix的强点大家都感觉或者用出感觉了,确实很是方便。曾经的我,跟着公司的团队开发过一套不小的监控系统,看过我博客的人应该留意到那个用redis mongodb,后期改用golang,0mq支撑业务的监控平台。
其实对比起来,我个人还是喜欢zabbix,虽然和团队一起很爽,爽也只是设计一套监控平台框框,里面的东西填写起来那可真是吐血。。。 随着看zabbix的文档深入,越发的觉得,zabbix做的真不错。 但是大家有没有觉得,对于不熟系zabbix的人,让他一下在看zabbix的数据,绝对是有点发蒙,他数据展现的有点不清不白的,当然有过配置和运维经验的人,一眼就能看出哪是哪里。
旁边cdn部门在讨论东西的时候,我发现他们的那个报表不直观,而且不高端。。。
对于zabbix,我用的最多的反而是api,在上个公司做了一个简练的针对zabbix的api接口,可以迅速的增删改查主机,虽然时不时的抽风,但是那绝对我自己对zabbix理解的问题。
我期待的样子
1. 权限用公司的权限管理系统,集中单点登录。
2. 登录后输入ip地址,可以看到这个ip地址所属的情况,比如内存,cpu,流量等等。
3. 根据业务线做好分组,这样dba组的人,一登录就可以看到dba所属的服务器状况。
4. 数据库采用zabbix的从库,这样就能很好的免除了压力。
当然写完前三个大需求就成一个项目了,目标定的是很远,但是精力是有限。
我们可以先来个简单了,从数据库里面取出item监控项的时间和值,然后用前端的图表进行画图。
我们首先要从mysql里面取值,Zabbix中存储历史数据的表是以history开头的,目前zabbix 2.06 中主要有一下几张表。
>>>>>history Numeric(float)
>>>>>history_log -log
>>>>>history_str -Character
>>>>>history_text -text
>>>>>history_uint -Numeric(unsigned)
通过数据库可以看到这个值的 item 时间 value ns
我们看下zabbix的针对eth0监控的图表
流量的统计,这里只是简单的把数据塞到了jinja2的模板里面,然后用highcharts画图的 。
原文:http://rfyiamcool.blog.51cto.com/1030776/1385639
var d = new Date("{{ showdotime }}");$('#container').highcharts({chart: {zoomType: 'x',spacingRight: 20},title: {text: 'eth0 流量'},subtitle: {text: document.ontouchstart === undefined ?'滑动显示更多' :''},xAxis: {type: 'datetime',maxZoom: 10 * 1000, // fourteen daystitle: {text: null}},yAxis: {title: {text: '进来的流量'}},tooltip: {shared: true},legend: {enabled: false},plotOptions: {area: {fillColor: {linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1},stops: [[0, Highcharts.getOptions().colors[0]],[1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]]},lineWidth: 1,marker: {enabled: false},shadow: false,states: {hover: {lineWidth: 1}},threshold: null}},series: [{type: 'area',name: 'Byte',pointInterval: 10 * 1000,pointStart: d.getTime(),data: [1153,946,679,112,112,250,112,7631,2818,244,7781,2683,442197,806342,5191431,728543,418013,502684,127900,493,1151125,5573336,3348358,5213414,4482643,3575359,2698665,844558,4204725,4311682,4776592,3762035,5018876,4599467,1529725,4576385,3654153,3515204,2361854,815,4903,3947,2184,128,145,6102,13607,31939,3052,47821,97577,10760,50366,1046,254,1753,2661,581269,4299933,4113029,4267878,781296,885,3232,1430,2472,61669,103854,170090,112507,111455,162,322,112,2927,437,3116,13580,1125,3062,458,738,2961,4406853,3084219,945726,4712167,3476555,4042300,4646039,2964012,1728972,112,112,256,112,112,262,112,112,256,112,112,284,118,139,256,194,112,256,139,118,256,139,112,254,112,118,262,112,112,256,234,139,256,250,256,1711626,4722630,3606945,5026923,211202,649,408,118,521,462,145,675,418,265,1464972,3963484,4375091,942586,3019,127430,112220,37612,104421,109967,98548,58317,77624,172,172,481,171,172,316,31886,105022,57734,95642,86328,137027,65218,80590,48013,51634,67985,99618,84169,93314,36073,116393,79163,150923,89319,89091,133733,90220,94252,121016,144024,137263,127760,163344,122370,99454,45178,71369,90175,136685,52301,141410,137028,27751,2647301,4415498,3134557,2847034,4297467,3569987,118552,111,111,484,7941,287668,889281,400112,233295,2083,111,574,262,111,680,262,205,410,256,117,112,256,118,176,833,640,1004,256,433,703,798,377,698,351,300,112,262,150,437,428,477,128,461,244,261,289,112,118,262,112,112,262,118,130,268,112,112,262,112,112,256,118,277,570,112,112,262,431,167,351,228,238,1059,224,118,262,219,112,256,112,117,289,151,110,345,278,189,454,112,118,262,111,124,307,112,112,268,111,112,256,112,112,256,117,112,262,112,146,421,200,118,256,199,359,262,112,568,423,112,112,262,112,112,262,125,112,262,112,112,256,112,118,262,112,112,262,175,272,262,112,112,384,112,257,345,118,130,271,136,112,262,112,118,262,112,150,268,124,112,262,106,112,268,673,112,262,118,112,262,118,112,256,124,279,529,291,219,505,344,380,617,477,112,577,448,163,284,118,112,289,112,211,644,112,124,385,526,112,409,471,112,262,180,341,450,228,326,224,178,112,279,534,339,196,188,536,468,210,184,196,271,300,252,178,112,196,172,281,582,118,112,470,112,118,262,112,118,256,156,383,472,664,112,297,180,151,565,211,112,256,231,272,753,211,112,256,118,118,262,112,112,256,284,537,461,112,112,139,256,112,337,798,672,614,549,112,112,256,131,112,256,112,112,256,112,118,256,111,112,250,112,112,256,112,112,250,834,394,2934,155,111,250,124,0,250,111,117,250,28774,45960,2377859,3852873,4289316,4402594,4821490,3532899,4404084,3681347,4537306,4040884,304,236,131,112,265,185,357,508,118,112,306,118,112,262,118,118,300,454,449,876,557,205,279,516,195,256,112,421,662,200,112,250,112,112,250,112,118,250,112,112,250,112,112,256,112,112,250,112,112,250,118,136,274,112,112,250,112,118,250,194,266,761,321,287,444,452,303,333,112,112,250,118,112,250,118,214,250,112,118,346,118,112,250,112,112,256,112,112,256,112,112,250,118,112,250,118,112,250,112,118,284,112,118,250,112,112,284,112,112,256,112,118,250,112,145,250,194,112,250,112,118,250,112,112,250,221,240,588,421,1029,327,156,218,250,134,211,267,112,112,250,112,118,250,112,112,250,112,112,256,271,134,250,112,112,250,118,112,250,112,112,250,112,118,256,245,128,250,196,121,256,118,531,946,1259,453,4115,4691,527,285,9,172,2966,393,1496237,4133810,3555137,4391843,4734147,2365335,4309393,4816593,2865318,5075970,3642291,3712991,4050442,726911,782292,161,300,488,327,244,256,134,647,660,538,785,803,338,306,256,112,118,256,112,112,312,211,326,776,537,360,839,451,387,554,118,214,544,360,291,311,273,112,112,256,112,202,282,366,359,577,458,198,391,543,404,422,112,228,312,289,427,755,112,112,390,360,118,256,139,112,256,195,553,407,112,112,256,112,112,256,118,112,256,112,112,256,118,118,262,112,112,256,118,112,262,112,112,256,136,154,256,118,0,256,118,112,112,256,118,112,262,112,194,256,139,118,285,124,118,280,124,112,262,124,145,256,112,112,256,145,118,256,118,112,256,112,124,256,112,118,256,112,112,268,133,112,262,128,112,284,118,112,256,118,112,256,112,118,256,139,213,256,112,140,2694,961,972,268,256,111,111,117,194,112,127,130,111,130,139,111,329,419,627,494,294,333,433,163,3232,257,256,284,713,112,111,111,145,261,775,1253,433,403,616,382,503,133,357,876,601,742,671,553,273,814,261,128,112,112,112,145,1886446,4459752,4025218,4333118,3649335,4275277,3551729,3454440,3240775,4322114,3254331,3932662,4241105,2599449,4153879,2718555,529,208,384,1068,688,313,112,564,433,112,179,112,118,283,456,2612894,4136542,4381146,4788558,3434215,3880547,5053044,1464799,4943006]}]});
我们再来看看zabbix的几个主要的表:
一看就懂,在咱们创建主机的那几个选项。。。要留意下hostid,这个hostid在其他表做了数据字段的关联。
mysql> desc hosts; +--------------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+---------------------+------+-----+---------+-------+ | hostid | bigint(20) unsigned | NO | PRI | NULL | | | proxy_hostid | bigint(20) unsigned | YES | MUL | NULL | | | host | varchar(64) | NO | MUL | | | | status | int(11) | NO | MUL | 0 | | | disable_until | int(11) | NO | | 0 | | | error | varchar(128) | NO | | | | | available | int(11) | NO | | 0 | | | errors_from | int(11) | NO | | 0 | | | lastaccess | int(11) | NO | | 0 | | | ipmi_authtype | int(11) | NO | | 0 | | | ipmi_privilege | int(11) | NO | | 2 | | | ipmi_username | varchar(16) | NO | | | | | ipmi_password | varchar(20) | NO | | | | | ipmi_disable_until | int(11) | NO | | 0 | | | ipmi_available | int(11) | NO | | 0 | | | snmp_disable_until | int(11) | NO | | 0 | | | snmp_available | int(11) | NO | | 0 | | | maintenanceid | bigint(20) unsigned | YES | MUL | NULL | | | maintenance_status | int(11) | NO | | 0 | | | maintenance_type | int(11) | NO | | 0 | | | maintenance_from | int(11) | NO | | 0 | | | ipmi_errors_from | int(11) | NO | | 0 | | | snmp_errors_from | int(11) | NO | | 0 | | | ipmi_error | varchar(128) | NO | | | | | snmp_error | varchar(128) | NO | | | | | jmx_disable_until | int(11) | NO | | 0 | | | jmx_available | int(11) | NO | | 0 | | | jmx_errors_from | int(11) | NO | | 0 | | | jmx_error | varchar(128) | NO | | | | | name | varchar(64) | NO | MUL | | | +--------------------+---------------------+------+-----+---------+-------+ 30 rows in set (0.00 sec) mysql>
查询下: 可以得到我的hostid是 10085, 你为啥不是10086,不然以后再也不为花费发愁了 !!!
*************************** 25. row ***************************hostid: 10085proxy_hostid: NULLhost: 192.168.1.120status: 0disable_until: 0error:available: 0errors_from: 0lastaccess: 0ipmi_authtype: -1ipmi_privilege: 2ipmi_username:ipmi_password: ipmi_disable_until: 0ipmi_available: 0 snmp_disable_until: 0snmp_available: 0maintenanceid: NULL maintenance_status: 0maintenance_type: 0maintenance_from: 0ipmi_errors_from: 0snmp_errors_from: 0ipmi_error:snmp_error:jmx_disable_until: 0jmx_available: 0jmx_errors_from: 0jmx_error:name: 192.168.1.120
今晚就先做这出根据数据做图,明天再搞搞别的。
再来说说掌控主机监控项的表
mysql> desc items; +-----------------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------------+---------------------+------+-----+---------+-------+ | itemid | bigint(20) unsigned | NO | PRI | NULL | | | type | int(11) | NO | | 0 | | | snmp_community | varchar(64) | NO | | | | | snmp_oid | varchar(255) | NO | | | | | hostid | bigint(20) unsigned | NO | MUL | NULL | | | name | varchar(255) | NO | | | | | key_ | varchar(255) | NO | | | | | delay | int(11) | NO | | 0 | | | history | int(11) | NO | | 90 | | | trends | int(11) | NO | | 365 | | | lastvalue | varchar(255) | YES | | NULL | | | lastclock | int(11) | YES | | NULL | | | prevvalue | varchar(255) | YES | | NULL | | | status | int(11) | NO | MUL | 0 | | | value_type | int(11) | NO | | 0 | | | trapper_hosts | varchar(255) | NO | | | | | units | varchar(255) | NO | | | | | multiplier | int(11) | NO | | 0 | | | delta | int(11) | NO | | 0 | | | prevorgvalue | varchar(255) | YES | | NULL | | | snmpv3_securityname | varchar(64) | NO | | | | | snmpv3_securitylevel | int(11) | NO | | 0 | | | snmpv3_authpassphrase | varchar(64) | NO | | | | | snmpv3_privpassphrase | varchar(64) | NO | | | | | formula | varchar(255) | NO | | 1 | | | error | varchar(128) | NO | | | | | lastlogsize | bigint(20) unsigned | NO | | 0 | | | logtimefmt | varchar(64) | NO | | | | | templateid | bigint(20) unsigned | YES | MUL | NULL | | | valuemapid | bigint(20) unsigned | YES | MUL | NULL | | | delay_flex | varchar(255) | NO | | | | | params | text | NO | | NULL | | | ipmi_sensor | varchar(128) | NO | | | | | data_type | int(11) | NO | | 0 | | | authtype | int(11) | NO | | 0 | | | username | varchar(64) | NO | | | | | password | varchar(64) | NO | | | | | publickey | varchar(64) | NO | | | | | privatekey | varchar(64) | NO | | | | | mtime | int(11) | NO | | 0 | | | lastns | int(11) | YES | | NULL | | | flags | int(11) | NO | | 0 | | | filter | varchar(255) | NO | | | | | interfaceid | bigint(20) unsigned | YES | MUL | NULL | | | port | varchar(64) | NO | | | | | description | text | NO | | NULL | | | inventory_link | int(11) | NO | | 0 | | | lifetime | varchar(64) | NO | | 30 | | +-----------------------+---------------------+------+-----+---------+-------+
咱们来定位下,我的那个eth0 。
原文:http://rfyiamcool.blog.51cto.com/1030776/1385639
mysql> select * from items where hostid=10084 and name="eth0" \G; *************************** 1. row ***************************itemid: 23329type: 0snmp_community:snmp_oid:hostid: 10084name: eth0key_: net.if.in[eth0,bytes]delay: 10history: 90trends: 365lastvalue: 647lastclock: 1395938649prevvalue: 648status: 0value_type: 3trapper_hosts:units:multiplier: 0delta: 1prevorgvalue: 3687436151snmpv3_securityname:snmpv3_securitylevel: 0 snmpv3_authpassphrase: snmpv3_privpassphrase:formula: 1error:lastlogsize: 0logtimefmt:templateid: NULLvaluemapid: NULLdelay_flex:params:ipmi_sensor:data_type: 0authtype: 0username:password:publickey:privatekey:mtime: 0lastns: 101190560flags: 0filter:interfaceid: 1port:description:inventory_link: 0lifetime: 30 1 row in set (0.00 sec) ERROR: No query specified mysql>
简单说下他的账号,他默认是用md5入库的,可以让新老用户都登录到平台中。
继续继续 !
相关文章:
概率论中高斯分布(正态分布)介绍及C++11中std::normal_distribution的使用
高斯分布:最常用的分布是正态分布(normal distribution),也称为高斯分布(Gaussian distribution):正态分布N(x;μ,σ2)呈现经典的”钟形曲线”的形状,其中中心峰的x坐标由μ给出,峰的宽度受σ控制。正态分布由两个参数…

AI落地遭“卡脖子”困境:为什么说联邦学习是解决良方?
作者 | Just出品 | AI科技大本营(ID:rgznai100)毋庸置疑,在业界对人工智能(AI)应用落地备受期待的时期,数据这一重要支点却越来越成为一个“卡脖子”的难题。AI落地需要数据来优化模型效果,但大…

Linux下截取指定时间段日志并输出到指定文件
sed -n /2019-04-22 16:10:/,/2019-04-22 16:20:/p log.log > bbb.txt 转载于:https://www.cnblogs.com/mrwuzs/p/10752037.html

nginx+keepalive主从双机热备+自动切换解决方案
环境采集cenots 6.3 64位迷你安装,因为安装前,你需要做一些工作yum install -y make wget如果你愿意可以更新下系统,更换下yum源.1.安装keepalive官方最新版 keepalived-1.2.7tar zxvf keepalived-1.2.7.tar.gzcd keepalived-1.2.7在此之前。…
概率论中指数分布介绍及C++11中std::exponential_distribution的使用
指数分布:在深度学习中,我们经常会需要一个在x0点处取得边界点(sharp point)的分布。为了实现这一目的,我们可以使用指数分布(exponential distribution): p(x;λ) λlx≥0exp(-λx)指数分布使用指示函数(indicator function) lx≥…
肖仰华:知识图谱构建的三要素、三原则和九大策略 | AI ProCon 2019
演讲嘉宾 | 肖仰华(复旦大学教授、博士生导师,知识工场实验室负责人) 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 近两年,知识图谱技术得到了各行各业的关注,无论是企业公司还…

Docker mongo副本集环境搭建
1、MongoDB Docker 镜像安装 docker pull mongo 2、Docker容器创建 MongoDB Docker 容器创建有以下几个问题: 1- MongoDB 容器基本创建方法和数据目录挂载 2- MongoDB 容器的数据迁移 3- MongoDB 设置登录权限问题docker run -p 27017:27017 -v <LocalDirectoryP…

菜鸟学习HTML5+CSS3(一)
主要内容: 1.新的文档类型声明(DTD) 2.新增的HTML5标签 3.删除的HTML标签 4.重新定义的HTML标签 一、新的文档类型声明(DTD) HTML 5的DTD声明为:<!doctype html>、<!DOCTYPE html>、<!DOCTY…
激活函数之logistic sigmoid函数介绍及C++实现
logistic sigmoid函数:logistic sigmoid函数通常用来产生Bernoulli分布中的参数,因为它的范围是(0,1),处在的有效取值范围内。logisitic sigmoid函数在变量取绝对值非常大的正值或负值时会出现饱和(saturate)现象,意味着函数会变得…

NLP重要模型详解,换个方式学(内附资源)
(图片有AI科技大本营付费下载自视觉中国)作者 | Jaime Zornoza,马德里技术大学译者 | 陈之炎校对 | 王威力编辑 | 黄继彦来源 | 数据派THU(ID:DatapiTHU)【导语】本文带你以前所未有的方式了解深度学习神经…

大闸蟹的OO第二单元总结
OO的第二单元是讲多线程的协作与控制,三次作业分别为FAFS电梯,ALS电梯和三部需要协作的电梯。三次作业由浅入深,让我们逐渐理解多线程的工作原理和运行状况。 第一次作业: 第一次作业是傻瓜电梯,也就是完全不需要考虑捎…

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(31)-MVC使用RDL报表
原文:构建ASP.NET MVC4EF5EasyUIUnity2.x注入的后台管理系统(31)-MVC使用RDL报表这次我们来演示MVC3怎么显示RDL报表,坑爹的微软把MVC升级到5都木有良好的支持报表,让MVC在某些领域趋于短板 我们只能通过一些方式来使用rdl报表。 Razor视图不支持asp.net…

18段代码带你玩转18个机器学习必备交互工具
(图片有AI科技大本营付费下载自视觉中国)作者 | 曼纽尔阿米纳特吉(Manuel Amunategui)、迈赫迪洛佩伊(Mehdi Roopaei)来源 | 大数据(ID:hzdashuju)【导读】本文简要介绍将…
激活函数之ReLU/softplus介绍及C++实现
softplus函数(softplus function):ζ(x)ln(1exp(x)).softplus函数可以用来产生正态分布的β和σ参数,因为它的范围是(0,∞)。当处理包含sigmoid函数的表达式时它也经常出现。softplus函数名字来源于它是另外一个函数的平滑(或”软化”)形式,这…

windows server 2012 用sysdba登录报错 ORA-01031
报错显示:C:\Users\Administrator>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期三 4月 24 09:09:33 2019 Copyright (c) 1982, 2010, Oracle. All rights reserved. ERROR:ORA-01031: 权限不足 请输入用户名: 1、查看本地用户和组确认权…

[SignalR]初步认识以及安装
原文:[SignalR]初步认识以及安装1.什么是ASP.NET SignalR? ASP .NET SignalR是一个 ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信。什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以互相通知…
CUDA Samples:Vector Add
以下CUDA sample是分别用C和CUDA实现的两向量相加操作,参考CUDA 8.0中的sample:C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\0_Simple,并对其中使用到的CUDA函数进行了解说,各个文件内容如下:common.hpp:#ifndef FBC_CU…

你和人工智能的对话,正在被人工收听
(图片有AI科技大本营付费下载自视觉中国)作者 | 周晶晶编辑 | 阿伦来源 | 燃财经(ID:rancaijing)如今,智能设备越来越多地出现在每个人的生活中,在享受它们带来的便利时,很多人或许没有意识到&a…

python数据结构与算法总结
python常用的数据结构与算法就分享到此处,本月涉及数据结构与算法的内容有如下文章: 《数据结构和算法对python意味着什么?》 《顺序表数据结构在python中的应用》 《python实现单向链表数据结构及其基本方法》 《python实现单向循环链表数据…

自定义classloader中的接口调用
2019独角兽企业重金招聘Python工程师标准>>> 注意其中转型异常的描述,左边声明和强转括号内都是appclassloader加载的,而让自定义加载类的接口也由appclassloader加载,所以转型成功 转载于:https://my.oschina.net/heatonn1/blog/…

学点基本功:机器学习常用损失函数小结
(图片付费下载自视觉中国)作者 | 王桂波转载自知乎用户王桂波【导读】机器学习中的监督学习本质上是给定一系列训练样本 ,尝试学习 的映射关系,使得给定一个 ,即便这个不在训练样本中,也能够得到尽量接近…

python生成简单的FTP弱口令扫描
2019独角兽企业重金招聘Python工程师标准>>> 前言 Ftp这个类实现了Ftp客户端的大多数功能,比如连接Ftp服务器、查看服务器中的文件、上传、下载文件等功能,Ftp匿名扫描器的实现,需要使用FTP这个类,首先用主机名构造了一个Ftp对象(即ftp),然后用这个ftp调…

C++中const指针用法汇总
这里以int类型为例,进行说明,在C中const是类型修饰符:int a; 定义一个普通的int类型变量a,可对此变量的值进行修改。const int a 3;与 int const a 3; 这两条语句都是有效的code,并且是等价的,说明a是一个…

mongodb基础应用
一些概念 一个mongod服务可以有建立多个数据库,每个数据库可以有多张表,这里的表名叫collection,每个collection可以存放多个文档(document),每个文档都以BSON(binary json)的形式存…

【leetcode】1030. Matrix Cells in Distance Order
题目如下: We are given a matrix with R rows and C columns has cells with integer coordinates (r, c), where 0 < r < R and 0 < c < C. Additionally, we are given a cell in that matrix with coordinates (r0, c0). Return the coordinates of…
深度学习面临天花板,亟需更可信、可靠、安全的第三代AI技术|AI ProCon 2019
整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 在人工智能领域中,深度学习掀起了最近一次浪潮,但在实践和应用中也面临着诸多挑战,特别是关系到人的生命,如医疗、自动驾驶等领域场景时,黑盒…

java robot类自动截屏
直接上代码:package robot;import java.awt.Rectangle;import java.awt.Robot;import java.awt.event.InputEvent;import java.awt.p_w_picpath.BufferedImage;import java.io.File;import java.io.IOException;import javax.p_w_picpathio.ImageIO;import com.sun.glass.event…
激活函数之softmax介绍及C++实现
下溢(underflow):当接近零的数被四舍五入为零时发生下溢。许多函数在其参数为零而不是一个很小的正数时才会表现出质的不同。例如,我们通常要避免被零除或避免取零的对数。上溢(overflow):当大量级的数被近似为∞或-∞时发生上溢。进一步的运…

parsing:NLP之chart parser句法分析器
已迁移到我新博客,阅读体验更佳parsing:NLP之chart parser句法分析器 完整代码实现放在我的github上:click me 一、任务要求 实现一个基于简单英语语法的chart句法分析器。二、技术路线 采用自底向上的句法分析方法,简单的自底向上句法分析效率不高,常常…

图解Python算法
普通程序员,不学算法,也可以成为大神吗?对不起,这个,绝对不可以。可是算法好难啊~~看两页书就想睡觉……所以就不学了吗?就一直当普通程序员吗?如果有一本算法书,看着很轻松……又有…