《CCNP TSHOOT 300-135认证考试指南》——2.2节故障检测与排除及网络维护工具箱
本节书摘来自异步社区《CCNP TSHOOT 300-135认证考试指南》一书中的第2章,第2.2节故障检测与排除及网络维护工具箱,作者 【加】Raymond Lacoste , 【美】Kevin Wallace,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.2 故障检测与排除及网络维护工具箱
CCNP TSHOOT 300-135认证考试指南
如前所述,故障检测与排除和网络维护是相辅相成的,两者关系非常密切,因此故障检测与排除工具与网络维护工具非常相似(如果不是完全相同的话)。
第1章介绍了结构化故障检测与排除流程的实施步骤,除了修复故障以及可能的回退配置之外,这些步骤中很多都要用到常见工具,以帮助收集、检查和对比信息,下面将解释其中的4个步骤。
报告故障:利用专用报告工具主动监控网络设备,可以在用户受到故障影响并报告故障之前,就能发现即将出现的网络性能问题。
收集信息:利用专用的网络维护及故障检测与排除工具,可以在排查网络故障时大大提高信息收集的效率,从而收集更多有用信息,能够更清楚地发现故障的本质。
检查收集到的信息:排障人员在分析故障检测与排除过程中收集到相关信息时,需要知道网络的正常运行状态,然后才能将收集到的数据与正常运行数据相对比。为此,需要利用专用维护工具持续收集网络的基线运行数据,以备不时之需。
验证推断:专用的网络维护及故障检测与排除工具能够帮助排障人员实施故障解决方案,而且在故障解决方案无效的情况下,还能利用这些专用工具回退所做的修正操作。
经过分析可以发现,通常可以将收集到的信息分为以下3类。
关键
故障检测与排除信息:检测与排除由用户或NMS(Network Management Station,网络管理站)报告的网络故障时收集的信息。
基线信息:网络正常运行时收集的信息,故障排查时可以利用这些基准信息进行对比。
网络事件信息:通过设备响应特定条件(如超过了交换机、路由器或服务器上配置的利用率阈值)时自动生成的告警收集到的信息,这些告警可以是简单的通知消息,也可以是紧急消息,这些信息迟早有用。
由于故障检测与排除及网络维护之间的关系非常紧密,因而必须搞清楚为执行维护流程而需要准备的相关维护工具,这些维护工具应该以特定的维护流程和维护任务为目标,这样就才能聚焦自己的故障检测与排除工作,而不至于在无用信息上荒废大量时间和精力。本节将详细讨论故障检测与排除及网络维护工作中常用的各种工具。
2.2.1 网络维护工具
首先讨论网络维护工具是非常必要的,因为如果没有这些维护工具,没有记录这些工具发现的信息,那么使用其他工具也将毫无用处。第1章讨论了网络文档的重要性,不过,为了真正凸显网络文档的价值并将其视为宝贵资源,必须保证网络文档的易于检索性,最重要的是保证其时效性。对于绝大多数人来说,保持网络文档的时效性是一项极具挑战性的任务,主要原因就在于时间。当然,如果正确利用合理的维护工具来更新文档,那么这项工作的挑战性和时间消耗程度都会大大降低。
市面上提供了大量的网络维护解决方案,这些维护工具的功能特性决定了其产品的价格,不过通常并不需要购买最昂贵的工具,也不需要获得最好的产品,应该根据自己的业务需求,与工具提供商进行充分沟通,货比三家,可以先暂时使用免费的测试版本工具,试用是确定最终选择哪种产品的唯一有效方式。常见的文档管理系统如下所示。
故障工单报告系统:某些软件应用程序能够记录、跟踪和归档故障报告(即故障工单),通常将这些应用程序称为帮助台程序(help desk applications),不过它们的作用已经超出了帮助台环境。
Wiki(维客):Wiki是一种基于Web的协作式文档编制平台,最流行的Wiki应用是Wikipedia(维基百科,www.wikipedia.com),Wikipedia是一种基于Internet的可以由用户自行更新的百科全书。可以将这种Wiki技术应用于本地网络中,用来维护一个集中的文档存储库,不但易于访问,而且易于更新。
网络文档的真正作用体现在故障检测与排除过程中,如果拥有组织良好、可查询的信息库,那么其作用将更加明显。在故障检测与排除过程中,如果拥有存储了曾经解决过的故障以及解决这些故障所遵循的排障指南的可检索数据库,那么就能有效利用这些信息。但是在解决了故障工单之后千万要记得更新这些文档,正因为曾经报告并解决了类似故障,所以更不应该忽略网络文档的编制规程,有时可能需要通过故障工单报告系统中的故障条目数量,来判断是否存在更严重的潜在问题,从而多次重复出现一些小问题。
2.2.2 基本工具
网络维护工具的价格从免费到成千上万美元的都有,而这些工具在用于故障检测与排除工作时的复杂度及有用性也差距甚大,因此,在选择工具时必须在自己的故障检测与排除需求与预算限制之间做出平衡。
这里先不考虑预算问题。几乎所有的Cisco故障检测与排除及网络维护工具包都会包含一套可以在路由器或交换机提示符下运行的CLI(Command Line Interface,命令行界面)命令。此外,很多网络设备还提供了GUI(Graphical User Interface,图形用户界面)来帮助网络管理员进行日常的网络配置和监控工作。利用外部服务器(如备份服务器、日志服务器和时间服务器)还可以为故障检测与排除及网络维护工作收集、存储或提供有价值的网络日常运行状态信息。
1.CLI
Cisco IOS提供了大量丰富的CLI命令,这对故障检测与排除工作来说是非常有用的。例如,show命令(显示静态的信息快照)可以显示路由器的配置信息以及通过路由进程学到的所有路由信息,debug命令可以提供路由器或交换机进程的实时信息。本书的重点之一就是讨论利用这些show命令和debug命令解决故障工单的方法,从例2-1可以看出,路由器R2正在接收OSPF(Open Shortest Path First,开放最短路径优先)邻居发送来的OSPF链路状态更新信息(出现更新时)。

这只是本书介绍的众多show和debug命令之一。Cisco IOS提供了一个新的功能特性,允许路由器监控事件并根据预设操作自动响应某些特定事件(如达到预设阈值),该功能特性被称为Cisco IOS EEM(Embedded Event Manager,内嵌式事件管理器),有关EEM的详细信息将在后面进行介绍。
2.GUI工具
虽然Cisco提供了大量GUI工具,但是对于CCNP路由和交换认证体系的路由器与交换机配置及故障排查来说,需要将全部精力都投入到CLI中,因而不能指望依赖GUI就能通过CCNP的路由与交换认证。但是作为示例,大家可以使用CCP(Cisco Configuration Professional,Cisco配置专家)GUI工具来配置和排查ISR(Integrated Services Router,集成业务路由器)故障。图2-1给出了CCP主页界面。

可以看出,路由器R1的启动配置(startup configuration)文件被备份到了IP地址为192.168.1.74的FTP服务器上了。请注意,需要在copy命令中指定FTP服务器的登录凭证(即用户名cisco,密码cisco)。对于生产网络来说,需要使用更加健壮的用户名和密码,以免被轻易猜测破解。
如果需要经常性地将文件备份到FTP服务器上,那么就可以将这些登录凭证加入到路由器的配置文件中,从而无需每次都指定这些登录凭证(出于安全性考虑)。例2-3给出了将用户名和密码凭证添加到路由器配置中的方式,而例2-4则显示了无需在copy命令中显式指定这些登录凭证即可将路由器配置信息备份到FTP服务器上的方式。
例2-3 将FTP服务器的登录凭证添加到路由器配置中

利用show archive命令可以查看存储在配置归档中的文件(如例2-7所示)。
关键

命令show archive的输出结果显示归档配置数最多为10,但这并不完全正确。由于归档文件的路径指向的是FTP服务器,从而归档配置数量仅受限于服务器的存储空间,因此,路由器将仍然以计划间隔创建运行配置的归档文件。如果路由器上的归档列表已满(达到最大值10),那么show archive命令将清除文件Archive 1,将所有文件都前移一个位置,并将新文件添加到Archive 10(如例2-9所示)。不过需要注意的是,该操作并不会删除FTP服务器上的任何文件,而只是去掉show archive命令中的文件,从而为归档列表腾出空间。

将启动配置复制(合并)到运行配置之后,shutdown命令就会在运行配置中生效,这是因为启动配置中没有no shutdown命令来覆盖该命令(如例2-11所示)。为了解决这个问题,将启动配置复制到运行配置之后,必须在所有希望启用的接口上都应用no shutdown命令。

4.日志工具
在进行故障检测与排除操作时,设备日志常常能够提供非常有价值的信息。路由器上发生的许多事件都能自动报告给路由器的控制台。例如,路由器的某个接口出现关闭或启用操作时,会向路由器的控制台写入一条消息,不过对于生产网络来说,通常没有人会始终盯着控制台的输出界面,甚至根本就不会连接控制台端口。大多数情况是在需要时才通过Telnet或SSH(Secure Shell,安全外壳)连接设备,但是通过Telnet或SSH连接设备时默认并不显示这些日志消息。如果希望以Telnet或SSH方式连接路由器时能够看见这些控制台消息,那么就需要在特权EXEC模式下使用terminal monitor命令。
仅仅依靠控制台消息的缺点在于这些消息可能会滚动到屏幕之外,或者网络管理员可能会关闭终端仿真程序,之后将无法再看见这些控制台消息。因此,除了控制台消息方式之外,还可以将这些消息以日志方式记录到路由器的缓存中(即路由器的RAM)。为了让路由器在缓存中写入这些消息,可以使用命令logging buffered。在该命令中,可以指定路由器使用多少RAM来专门记录日志。当指定的缓存容量满了之后,将删除早期消息,以腾出空间记录新的消息。利用show logging history命令即可查看该日志缓存中的信息。如果希望清除缓存中的日志消息,可以在特权EXEC模式下使用clear logging命令。
日志的严重性等级(Severity level)范围为0~7级,每种严重性等级的名称及含义详见表2-2,请注意,严重性等级值越小表示越严重。在默认情况下,控制台、vty线路以及缓存将记录严重性等级在7及以下的所有消息,但是对于调试日志来说,仅在使用debug命令启用调试之后才进行记录。
关键

有时可能希望将某个严重性等级的消息记录到路由器的控制台,而将其他严重性等级的消息记录到路由器的缓存中,此时可以使用logging consoleseverity_level和logging buffered severity_level命令。例如,如果希望将6级及以下的消息记录到控制台,而将7级及以下消息记录到缓存中,那么就在全局配置模式下使用命令logging console 6和logging buffered 7。除了可以在命令中指定严重性等级编号之外,还可以在命令中指定严重性等级名称。
另一个日志选项就是将日志消息记录到外部Syslog服务器上。将日志消息发送到外部服务器上,可以保存时间更长的日志消息。根据Syslog服务器的软件情况,有时可以按照预定计划实现自动日志归档、配置高级脚本操作、创建高级告警并生成各种统计图。利用logging ip_address命令可以直接将路由器的日志输出到指定IP地址的Syslog服务器,利用logging trapseverity_level命令可以将指定严重性等级的消息记录到Syslog服务器。
例2-13给出了上面所说的多种日志记录配置情况。
关键

例2-13中严重性等级为告警(即4)或更低(即0~4)的事件都被记录到路由器的缓存中,利用show logging history命令即可查看缓存中的信息。该路由器最大可使用4096字节的RAM来缓存日志信息,同时控制台也被配置为记录相同严重性等级的事件。此外,本例还配置路由器将严重性等级为6及以下的日志消息输出到IP地址为192.168.1.50的Syslog服务器上。图2-2显示了Kiwi Syslog服务器(http://www.kiwisyslog.com)收集到的日志消息。
5.网络时间协议工具
假设收到了一个故障工单,用户抱怨每天下午5:30(本地时间)的时候网速很慢。该故障工单表明故障现象是每天发生的,因而浏览日志以查看这个时间段网络是否出现异常情况,但是仅当日志有时间戳的时候,这种日志查找操作才有意义,如果没有时间戳,那么就无法将日志消息与用户报告的故障问题关联起来。因此如果时间戳不精确,那么将毫无用处。例如,某条日志报告下午2:25的时候网络利用率非常高,那么真的是下午2:25还是下午5:30呢?时间戳的精确度对于故障检测与排除工作来说至关重要,必须确保每台设备的时钟设置完全正确。

虽然可以在每台设备上分别设置时钟,但这些时钟经过一段时间后会产生漂移,相互之间不再一致,从而导致日志项出现差异。就像一个人在仅有一块手表时候能够始终知道当前时间,但在拥有两块手表时反而无法确定当前时间了。这就说明所有网络设备都应该有一个公共的时间参考点,该参考点可以由NTP(Network Time Protocol,网络时间协议)来实现。NTP可以让网络设备均指向充当NTP服务器(时间源)的设备,不过,NTP服务器必须是一个可靠的时间源,如位于华盛顿特区的美国海军天文台是一级(stratum 1)时钟源,一级时钟源是最可靠最精确的时钟源。此外,由于不同时区的设备都可能以该NTP服务器为参考基准,因而每台设备都要设置自己的时区,表明自己的时区与GMT(Greenwich Mean Time,格林威治标准时间)之间的时间差。
关键
例2-14显示了位于东部时区的路由器的NTP配置情况。在DST(Daylight Savings Time,日光节约时间,也称为夏令时)未生效时,该时区与GMT相差5小时。clock summer-time命令可以指定DST的起止时间,本例中的DST起始于3月份第2个星期日的凌晨2点,结束于9月份第1个星期日的凌晨2点。命令ntp server用于指向NTP服务器。需要注意的是,出于冗余性考虑,在实际配置中可以出现多条ntp server命令,此时NTP将根据其协议原理确定最可靠的NTP服务器,也可以在ntp server命令中添加prefer选项来手工指定最可靠的NTP服务器。

NTP根据时钟等级1~15来使用层次化的时钟服务器,一级是最可靠的时钟源。由于NTP基于层次化架构,因而可能并不希望所有的网络设备都指向连接在Internet上的一级时钟源,此时可以在组织机构网络中设置一台或两台接收一级时钟源的设备(将这些设备配置为二级时钟源),然后再配置网络中的其他设备(配置为三级时钟)接收这些本地设备的时钟。
2.2.3 高级工具
密切关注网络流量模式和性能指标,有助于提前预判网络中可能出现的问题,并在问题演变为重大故障之前采取必要措施主动解决这些问题。这一点与被动式响应不同,被动式响应需要不断地对已发生的问题作出应对,因此通常所说的“不坏不修”方式并不适用于主动式网络维护环境,必须应该采取“防患于未然”的态度。如果要做到主动维护,那么就不仅仅使用基本的show和debug命令,还需要使用各种高级工具(如SNMP、NetFlow和EEM)来主动监控设备及网络流量的健康状况。
1.SNMP和NetFlow概述
SNMP(Simple Network Management Protocol,简单网络管理协议)允许被监控设备(如路由器或交换机)运行SNMP代理,来收集处理器和内存的利用率等统计信息,然后SNMP服务器就可以查询这些SNMP代理来检索相应的统计数据,从而判断设备的整体健康状况。
Cisco IOS NetFlow能够深刻揭示网络的流量模式,有些公司提供的商用Netflow采集器(软件应用程序),可以获取Cisco路由器报告的Netflow信息,并将这些原始信息转化为有用的反映流量模式的图形、曲线和表格。监控网络性能的原因如下。
确保遵从SLA:无论是服务提供商还是服务提供商的客户,都可能希望证实服务提供商网络提供给客户的性能等级满足事先约定好的SLA(Service Level Agreement,服务等级协定)或者客户从服务提供商网络接收到的性能等级满足事先约定好的SLA。
趋势监控:监控网络中的资源利用情况(如带宽利用率和路由器CPU利用率),有助于认识网络的发展趋势,并预测何时需要进行网络升级或者判断用户是否正在滥用网络资源。
检测与排除网络性能问题:在缺少基线数据的情况下很难检测与排除网络性能故障,通过日常性地网络性能监控,可以获得参考点(即性能基线),这样在用户报告性能故障后,可以将采集到的性能指标与基线数据进行对比,从而找出故障根源。
2.利用SNMP和NetFlow创建基线
关键
大多数Cisco IOS平台都提供了SNMP和NetFlow这两种自动收集统计信息的网络技术,利用这些统计信息可以创建网络基线,用于网络故障的检测与排除或者开展主动式网络管理和维护。表2-3对这两种技术做了详细比较。

例2-15给出了路由器R1的SNMPv2c配置示例,命令snmp-server communitystring [ro| rw] [ access_list_number ]指定了一个只读(即ro)团体字符串CISCO和一个读/写(即rw)团体字符串PRESS,并且只有访问列表10和访问列表11所允许的NMS才能利用SNMP分别读或读/写该设备。此外,还指定了该路由器的联系信息和位置信息。最后还配置了snmp-server ifindex persist命令,其作用是确保SNMP接口索引在数据采集阶段保持恒定(即使设备重启),因为收集基线数据时保持接口索引的恒定是非常重要的。

例2-16给出了路由器R4的NetFlow配置示例。请注意,接口Fast Ethernet 0/0和Fast Ethernet 0/1上都运行了ip flow ingress命令,这样就能监控所有流经该路由器的流(无论哪个方向),同时路由器R4仍被配置为将其NetFlow信息报告给位于IP地址192.168.1.50的NetFlow采集器(虽然并不必须这么做)。命令ip flow-export source lo 0表明路由器R4与NetFlow采集器之间的全部通信都将经由Loopback 0接口,本例使用的NetFlow版本是5,不过在实际使用时一定要检查NetFlow采集器的软件文档,以确定应配置的版本号。最后,ip flow-export destination 192.168.1.50 5000命令的作用是指定NetFlow采集器的IP地址为192.168.1.50,并且需要通过UDP端口5000与NetFlow采集器进行通信。由于NetFlow没有标准端口号,因而在选择端口时一定要查看NetFlow采集器的文档。

5.提供网络事件的通告信息
响应用户提出的故障报告是一种响应式故障检测与排除操作,而监控网络设备的重要事件并对这些事件做出响应则是一种主动式故障检测与排除操作。例如,在用户无法连接Internet之前,双归属到Internet的路由器可能会报告其至Internet的某条连接出现了故障。作为该事件的响应操作,路由器会使用冗余链路,因而可以在不影响用户使用的情况下解决网络故障。
Syslog和SNMP都能报告网络设备上发生的特定事件,NetFlow能够报告与网络流量流相关的事件,虽然这些网络协议在记录网络事件后本身都缺乏相应的机制(如电子邮件)来通告网络管理员,但可以采用第三方软件来完成该功能,在记录网络事件时有选择地通告给相应的管理人员。
前面说过,通过NMS可以从运行了SNMP代理的网络设备上查询信息,不过,运行了SNMP代理的网络设备也可以发起与NMS的通信。例如,接口出现故障后,运行在被管网络设备上的SNMP代理会向NMS发送一条包含了接口状态变化情况的信息,然后NMS就可以通过电子邮件通知网络管理员。这种由SNMP代理向NMS发送的通告消息称为trap(自陷)消息,由于trap消息的格式很难阅读,因而需要NMS来解析这些消息。
关键
例2-18解释了路由器向NMS发送SNMP trap消息的启用方式,命令snmp-server host 192.168.1.50 version 2c CISCOPRESS的作用是让路由器R4指向位于IP地址192.168.1.50的SNMP服务器(即NMS)。由于配置该SNMP服务器的SNMP版本为SNMPv2c且团体字符串为CISCOPRESS,因而在路由器配置中包含了上述信息以便与NMS进行通信。

命令snmp-server enable traps的作用是在路由器上启用所有trap消息,如果仅启用特定trap消息,那么就可以在snmp-server enable traps命令的后面添加相应trap的关键字(如snmp-server enable traps bgp),利用show run | include traps命令即可查看已启用的trap消息。
通过Syslog和SNMP接收到的消息都是Cisco IOS预定义的消息。虽然Cisco IOS提供了大量预定义消息,并且能够满足大多数网络管理要求,但Cisco IOS还提供了EEM(Embedded Event Manager,内嵌式事件管理器)特性,该特性允许用户创建自定义事件并指定针对这些事件的定制化响应,可以根据Syslog消息、SNMP trap消息甚至是特定应用的Cisco IOS命令来定义事件。在响应已定义事件时,EEM可以执行各种操作,包括向NMS发送SNMP trap、向Syslog服务器写入日志、执行特定的Cisco IOS命令、抓取特定show命令的输出结果、向相应的当事人发送电子邮件或执行Tcl(Tool command language,工具命令语言)脚本,因此可以看出EEM是一种非常强大的功能特性。
关键
下面以例2-19来说明配置EEM applet(小程序)的基本步骤,其目标是在有人使用命令clear counters清除路由器的接口计数器时创建一条Syslog消息,并将该消息显示在路由器的控制台上。显示该消息的目的是提醒网络管理员及时更新网络文档,并列出清除路由器接口计数器的原因。

event manager applet COUNTER-RESET命令创建了一个名为COUNTER-RESET的EEM applet并进入applet配置模式。event命令的作用是指在自定义事件中所要寻找的内容,本例所要寻找的就是CLI命令clear counters。请注意,即使使用了缩略形式(如cle co),仍然能够检测到命令clear counters。参数syn no表明EEM策略与CLI命令将按照异步方式运行,即执行CLI命令之前不执行EEM策略。参数skip no表示不忽略CLI命令(即执行CLI命令)。最后,参数occurs 1表明只要运行了命令clear counters就会触发EEM事件。
然后输入的是action命令,指定预定义事件发生后应采取的响应操作。对于例2-19来说,采取的响应操作就是赋予一个具有本地意义的名字A,并将Syslog的优先级分配为informational(报告)。执行该指定操作后将生成一条报告消息“Please update network documentation to record why the counters were reset(请更新网络文档以记录计数器被重置的原因)。”
为了验证例2-19中EEM配置的操作情况,例2-20给出了clear counters命令的执行情况。请注意,运行clear counters命令后将触发自定义事件,生成一条提醒网络管理员记录清除接口计数器原因的Syslog消息。

2.2.4 Cisco支持工具
Cisco在官方网站上提供了一些额外的故障检测与排除工具及网络维护工具:
http://www.cisco.com/en/US/support/tsd_most_requested_tools.html
请注意,该网站上提供的某些工具需要输入相应访问权限的登录凭证。
相关文章:

在linux系统下实现音视频即时通讯的部分代码
由于使用习惯,Linux在中国受欢迎程度远不如windows,相应的软件也比较少,尤其是音视频类的软件,但是,这并不代表就完全没有。下面介绍一款强大的音视频即时通讯平台给大家,它就是——Anychat for Linux SDK。AnyChat是一…
文本分类六十年
作者 | Lucy出品 | AI科技大本营文本分类是自然语言处理中最基本而且非常有必要的任务,大部分自然语言处理任务都可以看作是个分类任务。近年来,深度学习所取得的前所未有的成功,使得该领域的研究在过去十年中保持激增。这些文献中已经提出了…

web service 和 remoting 有什么区别
其实现的原理并没有本质的区别,在应用开发层面上有以下区别:1、Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Service就没有什么区别了,一般都喜欢定义为TCP,这样比Web Service稍为高效一…

《实施Cisco统一通信管理器(CIPT1)》一2.4 使用分布式呼叫处理的多站点WAN部署模型...
本节书摘来异步社区《实施Cisco统一通信管理器(CIPT1)》一书中的第2章,第2.4节,作者: 【美】Dennis Hartmann译者: 刘丹宁 , 陈国辉 , 卢铭 责编: 傅道坤, 更多章节内容可以访问云栖社区“异步社…

【转】 LDA必读的资料
时间总是不够用,这里就不自己写了,摘自一篇转发的博客,感觉挺有用! 一个大牛写的介绍,貌似需FQ http://tedunderwood.wordpress.com/2012/04/07/topic-modeling-made-just-simple-enough/David M.Blei主页:…

sizeof 操作符详解
1. 定义: sizeof是何方神圣? sizeof 乃 C/C 中的一个操作符(operator)是也。简单说其作用就是返回一个对象或者类型所占的内存字节数。 MSDN上的解释为: The sizeof keyword gives the amount of storage, in bytes, a…
石锤!谷歌排名第一的编程语言,死磕这点,程序员都收益
日本最大的证券公司之一野村证券首席数字官马修汉普森,在Quant Conference上发表讲话:“用Excel的人越来越少,大家都在码Python代码。”甚至直接说:“Python已经取代了Excel。”事实上,为了追求更高的效率和质量&#…

《关系营销2.0——社交网络时代的营销之道》一T表示Technology(技术)
本节书摘来异步社区《关系营销2.0——社交网络时代的营销之道》一书中的第1章,作者: 【美】Mari Smith 译者: 张猛 , 于宏 , 赵俐 责编: 陈冀康, 更多章节内容可以访问云栖社区“异步社区”公众号查看。 T表示Technologyÿ…

jquery拖拽实现UI设计组件
想做一个UI设计的组件,左侧是控件列表,右边是编辑区域,左侧的控件可以重复拖拽到右侧然后进行编辑。 效果草图: 部分js代码: function domop(){//set drag and drop $( "#compls .component" ).each(functi…
六年磨一剑,全时发布音视频会议平台TANG,多款新品亮相
作者 | 高卫华出品 | AI科技大本营时隔六年,全时于11月26日在北京举办了“时间的力量2020新产品发布会“。发布会现场,全时创始人&CEO陈学军回顾了全时近年来的发展历程,并正式推出了全时云会议2020版,全时小智和全时云直播三…

考察新人的两道c语言题目
1> 如何判断一个板子的cpu 是big-endian 还是 Little-endian的?用c实现非常简单,10行左右,就可以判断了, 关键考察新人是否了解了什么是endian ,big-endian与little-endian的区别在哪里, 如果…

《Adobe After Effects CC经典教程》——导读
前 言 After Effects CC提供了一套完整的2D和3D工具,动态影像专业人员、视频特效艺术家、网页设计人员以及电影和视频专业人员都可以用这些工具创建合成图像、动画和特效。After Effects被广泛应用于电影、视频、DVD以及Web的后期数字制作之中。After Effects可以以…

scanf()函数的用法和实践
scanf()函数的用法和实践摘要: 本文阐述了基于ANSI,Win 95,Win NT上的 C/C语言中scanf()函数的用法,以及在实际使用中常见错误及对策。 关键词: scanf()一、 序言 在CSDN论坛的C/C版块,我时常见…
邢波出任全球第一所AI大学校长,履历横跨三门学科
整理 | 高卫华出品 | AI科技大本营近日,世界上第一家研究型人工智能大学——Mohamed bin Zayed University of Artificial Intelligence,简称MBZUAI大学(MBZUAI),任命著名华人AI学术教授邢波为校长。据悉,首…

Ubuntu 10.10 安装 libx11-dev
今天(2013-04-11)尝试安装 ImageMagick,结果发现 config.log 文件中包含了如下错误信息: fatal error: X11/Xlib.h: No such file or directory 也就是说缺少了 libx11-dev 包,心想这有什么难的,直接通过 a…

《计算机组成原理》----2.6 浮点数
本节书摘来自华章出版社《计算机组成原理》一书中的第2章,第2.6节, 作 者 Computer Organization and Architecture: Themes and Variations[英]艾伦克莱门茨(Alan Clements) 著,沈 立 王苏峰…

javascript/dom:原生的JS写选项卡方法
来源:http://www.jb51.net/article/30108.htm <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"><head><meta http-…
CSDN 星城大巡礼,长沙“科技之星”年度企业评选正式开启
2020年,长沙市委主要领导发出“软件产业再出发”的号召,颁布了软件三年行动计划。今年5月,CSDN 作为专业的 IT 社区,与长沙高新区签约,将全国总部落户长沙,这一战略决策,让CSDN与长沙的联结进一…

Linux下用C获取当前系统时间
#include <time.h> time_t time(time_t calptr); 返回的是日历时间,即国际标准时间公元1970年1月1日00 : 00 : 00以来经过的秒数。然后再调用 char *ctime(const time_t calptr) ; 转化为字符串表示 #include <stdio.h> #inc…

Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)
计划按例如以下顺序完毕这篇笔记:Java程序猿的JavaScript学习笔记(1——理念) Java程序猿的JavaScript学习笔记(2——属性复制和继承) Java程序猿的JavaScript学习笔记(3——this/call/apply) J…
关于动态规划,你想知道的都在这里了!
作者 | Your DevOps Guy翻译| 火火酱~,责编 | 晋兆雨出品 | AI科技大本营头图 | 付费下载于视觉中国什么是动态规划?它又有什么重要的呢?在本文中,我将介绍由Richard Bellman在20世纪50年代提出的动态规划(dynamic pro…

Tcpdump命令的使用与示例——linux下的网络分析
顾名思义,TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。tcpdump就是一种免费的网络分析工具,尤其其提供了源代码&a…

document.getElementById与getElementByName的区别
document.getElementById( "id_Number ") 得到的是单个元素 document.getElementsByName( "name ") 得到的是数组 转载于:https://www.cnblogs.com/qiuh/archive/2013/04/16/3023596.html

HDU 3507:Print Article
HDU 3507:Print Article 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid3507 题目大意:给定$n$,$m$,输出序列$n$个数,每连续输出代价为连续输出的数字和的平方加上$m$. 斜率优化DP 定义$sum_{pq}\su…

Linux wait函数解析
进程一旦调用了 wait,就 立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait 就会收集这个子进程的信息, 并把它彻底销毁后返回;如果没有找到…
Python多阶段框架实现虚拟试衣间,超逼真!
作者 | 李秋键 责编 | 晋兆雨 头图 | CSDN下载自视觉中国 任意姿态下的虚拟试衣因其巨大的应用潜力而引起了人们的广泛关注。然而,现有的方法在将新颖的服装和姿势贴合到一个人身上的同时,很难保留服装纹理和面部特征(面孔、毛发)中的细节。故在论文《Do…

百度重置页面自动跳转脚本
大家都知道的原因,百度现在不允许其它搜索引擎直接进入的它旗下的所有站点,在痛苦的被增加了很多点击后写了这个自动跳转的脚本。 原来不只搜索引擎,其它网站的链接也被搞了,nnd,诅咒百度。 使用方法:用xxx…

MYSQL 数据库迁移 ***
1. 导出数据库数据mysqldump -uroot -p webCompile > webCompileOut.sql其中:root 是账户名webCompile 是需要导出的数据库名称webCompileOut.sql 存储导出的数据2. 将导出SecureCRT sz【下载】的数据webCompileOut.sql放到你的目标机器…

exec函数族的使用
调用shell脚本命令:execlp("sh","sh","filename",(char*)0);exec用被执行的程序完全替换调用它的程序的影像。fork创建一个新的进程就产生了一个新的PID,exec启动一个新程序,替换原有的进程,因此这…

全球首个突破200种语言互译的翻译引擎,百度翻译打破世界沟通壁垒
机器翻译作为人工智能关键技术之一,正日益成为企业智能化升级的重要应用场景。12月1日,百度大脑开放日举办了以“机器翻译 沟通全世界”为主题的专场活动。 IDC 中国副总裁兼首席分析师武连峰、百度 AI 技术生态部总经理刘倩、百度人工智能技术委员会主席…