算法
chengjian1027
这个作者很懒,什么都没留下…
展开
-
迭代器模式
C++ stl引入的迭代器模式,除了本身为stl容器的操作提供了统一的接口,方便stl泛型算法以统一的方式操作所有stl容器外,在其它所有涉及遍历数据的应用地方,都有它的用武之地,下面列举几个我自己按迭代器模式封装的几个工具类,抛砖引玉。一、迭代分割的子串class CStrtok{public: //构造函数,接收参数 CStrtok (char *原创 2013-03-28 00:24:40 · 532 阅读 · 0 评论 -
C++封装使用隐式链表维护固定长度的内存池
所谓固定长度内存池是指每次从内存池申请的内存长度是不能变的,如果内存池初始化每块内存的大小是100字节,那么每次申请出来的内存长度就是100字节,不会多也不会少。固定长度的内存池有很多的应用场景,比如图像的编解码,码率的固定导致每帧图像的大小是比较固定的,因此可以使用固定长度的内存池来优化图像缓存的申请和释放。隐式链表是一个单向的链表,使用每块空闲内存块的前四个字节来保存下原创 2013-05-06 23:56:24 · 692 阅读 · 0 评论 -
网络设备链路发现算法
网管软件的ip拓扑用于直观的表现网络设备间的链路连接状况,实时刷新各条链路状态信息,排除故障如何自动的识别出设备间存在的链路,各条物理链路的两端连接了哪两个设备,用了哪两个接口,是实现ip topo的关键而网管软件计算设备间链路的关键数据就是设备arp表。windows下,使用arp命令即可显示arp信息:C:\Documents and Settings\cj>a原创 2013-03-23 01:05:09 · 1469 阅读 · 0 评论 -
C++标准库扩展,查找元素,使用修饰者模式构造查询条件
C++标准库的的查找算法std::find_if 允许提供一个pred函数用于在容器内查找满足pred函数调用为真的元素。同样以学生信息结构为例,常常会需要查找结构的某个成员是特定值的元素,比如查找所有计算机系的学生。每次为这种特定需求写一个函数对象不够灵活,我们也希望通过一组通用的函数对象构造模板来实现。下面这个函数对象用于比较对象的某个成员是否和输入的值相等:原创 2013-04-24 00:22:40 · 587 阅读 · 0 评论 -
使用xml描述的数据周期统计框架
项目中经常会用到对一些数据作周期统计,从而生成报表,通常原始的数据是存放在各种数据库表里的,需要根据特定的规则进行数据统计后输出,通过写数据库的存储过程是一种方式,但存储过程一般难以跨数据库统计,而且限制于特定的数据库脚本语言,支持不同类型数据库就需要重写脚本,不易维护。所以开发一套通用的数据统计框架以及统计规则描述模板,可以用更简洁的方式来描述出统计的规则,适原创 2014-03-18 22:54:19 · 740 阅读 · 0 评论 -
C++程序中如何规避子进程退出过程中出现的异常
linux下通过fork方式创建的子进程,在进程退出后原创 2014-04-09 23:59:53 · 2698 阅读 · 0 评论 -
异步ping的实现,如何在10秒内ping完20000个设备
ping报文的原理就是先向特定的ip地址发送一个ping请求消息即ping echo,然后如果对应ip地址的服务器收到这个请求的话就会发送ping回应消息即ping reply。通过抓包,还可以看到,如果本地主机的arp表里没有对应目的地址的表项,底下网络层会发送arp报文查询目的主机的mac地址,等收到对端的arp响应后,再发送ping echo请求,否则也会ping失败。正常的原创 2014-04-27 23:50:31 · 2974 阅读 · 1 评论 -
c++标准库容器使用概览
容器用于保存一组相同类型元素,因此一个容器可以看作是一类数据的集合。容器按其对元素的管理形式分为值容器和引用容器两种类型。值容器里,插入一个元素时,容器保存的是一个元素的副本,而引用类型容器则是保存该元素的引用或者地址。值容器可以简单的模拟引用容器,只需要把元素类型定义为指针就可以了,因此值容器更为通用。C++标准库里所有的容器都是值容器。容器按类型分类包括有序和无序两种。标准库的有序容器包括原创 2014-04-28 22:42:45 · 637 阅读 · 0 评论