Jeff Dean , 一位著名的 Google 工程师, 推出了一个 每个人都必须知道的数字的潜在数字列表。这个列表对设计大型基础架构的系统是一个巨大的资源。算法及其复杂性总是会在计算机系统的关键部分出现,但我发现很少有工程师对一个O(n!)级算法相较一个 O(n5) 算法会怎样有很好的理解。在编... Read More
通过例子讲解python是最好的办法,利于学习,利于记忆,做好笔记string.replace(str, old, new[, maxreplace])import strings='123456789123'print s#替换算法 string.replace(s, old, new, maxreplace)print string.replace(s, '123', '*****')print string.replace(s, '123', '*****',1)print s.replace('12 Read More
hashlib是个专门提供hash算法的库,现在里面包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单、方便。 md5经常用来做用户密码的存储。而sha1则经常用作数字签名使用Python进行文件Hash计算有两点必须要注意:1、文件打开方式一定要是二进制方式,既打开文件时使用b模式,否则Hash计算是基于文本的那将得到错误的文件Hash(网上看到有人说遇到Python的Hash计算错误在大多是由于这个原因造成的)。2、对于MD5如果需要16位(bytes)的值那么调用对象的digest()而hexdigest()默认是32位(bytes),同 Read More
在看libevent源码中TAILQ的时候发现了一些让我迷惑的地方,就是里面的双端队列以及链表中节点的next与prev指针,它的设计与我们一般的链表以及linux内核的list完全不一样,因为里面的prev根本不是指向前一个节点,而是指向前一个节点的next元素的地址:#define TAILQ_HEAD(name, type) \struct name { \ struct type *tqh_first; /* first element */ \... Read More
libevent自己是不提供在线下载的文档的,用户可以自己去http://libevent.org/在线查看,如最新的文档是2.0.15:http://www.wangafu.net/~nickm/libevent-2.0/doxygen/html/ 但是,在线文档毕竟没有离线的看起来舒服和方便,下面我教大家如何制作自己的离线document,以后的每个版本就可以自己制作省的去问google和baidu了: 一、工具准备 1. 首先下载下你要制作的那个版本对应的lievent源代码,现在最新的是2.0.15,ok,那我们就做个这个版本的文档吧,去下载: https://github.com/d Read More
1. 数据类型:在开发过程中,无论哪种平台,只使用最通用的数据类型char,unsigned char,int,unsigned int,void *以及它们组合的结构体类型。对于数据长度敏感的代码,则只使用下面的数据类型: Common Win32 Linuxint8INT8int8_tuint8UINT8uint8_tint16INT16int16_tuint16UINT16uint16_tint32INT32int32_tuint32UINT32uint32_tint64INT64int64_tuint64UINT64uint64_t在VS.Net 2008的项目中,使用多字节字符集,对 Read More
在Windows上编写代码的时候,都应该使用Unicode,但是往往在项目中,总会遇到一些 不方便的地方,例如,读写磁盘,加密等等。因此,以下给出2个函数,用于多字节与宽自己的转换,主要使用Windows提供的 WideCharToMultiByte与MultiByteToWideChar函数。123456789101112131415// 将Unicode字符串转换为Ansicode字符串void ConvertUnicodeToAnsi(wchar_t* source, char* dest){ int len = 0; len = WideCharToMultiByte(CP... Read More
C++获得计算机网卡MAC地址,以下程序采用静态加载的办法来实现的,建议在实际项目中,动态加载iphlpapi.dll,来实现获得网卡MAC地址,因为不是每台计算机都有iphlpapi.dll这个问题的,如果是静态加载的话,就可能直接报错。代码如下:#include <stdio.h>#include <Windows.h>#include <iphlpapi.h>#pragma comment(lib, "iphlpapi.lib")void main(){ IP_ADAPTER_INFO adapter[5]; DWORD bufle Read More
#include <stdio.h>#include <stdlib.h>#include <memory.h>#define POLY 0x04C11DB7Lunsigned long get_sum_poly( unsigned char top_byte ){ /// sum all the polys at various offsets unsigned long sum_poly = top_byte << 24; for( int j = 0; j < 8; ++ j ) { /// check the top bit if( Read More
uuid库是一个小的使用工具,可以表示和生成UUIDUUID是University Unique Identifier的缩写,它是一个128位的数字(16字节),不需要有一个中央认证机构就可以创建全国唯一的标示符。别名:GUIDuuid位于名字空间boost::uuisd,没有集中的头文件,把功能分散在了若干小文件中,因此为了使用uuid组件,需要包含数个头文件,即:#include <boost/uuid/uuid.hpp>#include <boost/uuid/uuid_generators.hpp>#include <boost/uuid/uuid_io. Read More