自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

C++是促进脑死亡的最佳方式

一个老程序员坐在这个角落,看眼前人来人往。

  • 博客(82)
  • 资源 (1)
  • 收藏
  • 关注

原创 Protocol Buffers编码详解,例子,图解

Protocol Buffers编码详解,例子,图解本文不是让你掌握protobuf的使用,而是以超级细致的例子的方式分析protobuf的编码设计。通过此文你可以了解protobuf的数据压缩能力来自什么地方,版本兼容如何做到的,其Key-Value编码的设计思路。如果你详细了解此文,你应该就能具备自己造一套编解码轮子的能力(至少基本思路)。测试的例子阅读图片时请对比前面的例子和表格

2015-01-13 22:32:20 10095 1

原创 编译器对C++ 11变参模板(Variadic Template)的函数包扩展实现的差异

编译器对C++ 11变参模板(Variadic Template)的函数包扩展实现的差异 题目挺绕口的。C++ 11的好东西不算太多,但变参模板(Variadic Template)肯定是其中耀眼的一颗明星,在C++设计新思维中,你可以看到很多模版的代码为了支持不确定的参数个数,而要重载1个参数到N个模板参数的N个函数。虽然种代码一般也是用会用宏和脚步辅助生成。但我想也没有人愿意看到几千行这种...

2014-12-30 01:44:43 5377 1

原创 LuaTinker的bug和缺陷

LuaTinker的bug和缺陷LuaTinker是一套还不错的C++代码和Lua代码的绑定库,作者是韩国人Kwon-il Lee,作者应该是参考了LuaBind后,为了简化和避免过重而实现的。其官网在http://gpgstudy.com/gpgiki/LuaTinker ,但可惜全部是韩文的,而最新的代码可以在Git上下载,https://github.com/zupet/LuaTin

2014-12-30 01:31:52 6505 2

原创 MySQL前缀索引导致的慢查询

前端时间跟一个DB相关的项目,alanc反馈有一个查询,使用索引比不使用索引慢很多倍,有点毁三观。所以跟进了一下,用explain,看了看2个查询不同的结果。不用索引的查询的时候结果如下,实际查询中速度比较块。mysql> explain select * from rosterusers limit 10000,3 ;+----+-------------+-------------

2013-05-18 22:32:28 3861

原创 从密码学角度看TX常用的TEA加密算法

免责声明:此文档的目的是为了分析TX常用的TEA算法,参考信息全部根据网上公开的资料,关键信息也做了过滤,不存在任何攻击和泄密。TEA这个简单加密算法在中国如此有名,大概主要因为腾讯在大量协议,本地数据中使用这个算法。网上很多人甚至直接将TX的加密算法称为TEA算法。TX的算法,数据分块的加密的确采用的是TEA(第一代)算法,密钥16个字节,每次处理的分块数据是8个字节(2个32位整数),

2013-04-30 15:46:26 6624 2

原创 SHA1和MD5算法详解和源码

先吹一下牛,这个估计是带中文注释写的最清楚的MD5和SHA1源码。呵呵。1 吐槽一下最近在整理一些代码,发现自己的库里面缺少一些HASH的的代码,于是决定移植一套代码进来,本来认为是个极其轻松的事情,结果却搞的小小蛋痛了一把。很多开源代码都有一点凌乱。移植过程代码主要参考过rhash这个库,好处是后面发现,其实辛亏参考的是这套库。后面发现其他库,在某些环节陷得更深,这...

2013-02-24 21:55:33 15483 9

原创 Windows同步对象Event和Linux的条件变量

最近在看一些同步对象模拟的东东,特别对在Windows下如何模拟条件变量折腾了很久。1 Windows同步对象Event微软有一个很有意思的同步对象,某种程度上和Linux的条件变量很相似。但秉承微软一贯的作风,有些地方设计的又有点怪异。Event通过函数CreateMutex创建,可以分为手动模式和自动模式两种模式,两种模式下表现迥异。和其他同步对象一样,在WaitForSingleOb

2013-02-24 21:41:23 5629

原创 C++容器模板在共享内存中的使用

本文用于探讨在共享内存中使用容器的好处,以及几种在共享内存中C++模板容器的方法。1 为什么要在共享内存中使用模板容器?为什么要避开普通内存而选择共享内存,那肯定是使用共享内存的优势:l 共享内存可以在多进程间共享,到达进程间通信的方式。l 共享内存可以在进程的生命周期以外仍然存在。这就可以保证在短暂停止服务(服务进程coredump,更新变更)后,服务进程仍然可以继续使用这些共享

2013-01-24 22:54:15 6044 1

原创 BOOST的Singleton模版详解

首先要说明,这个准确说并不是BOOST的singleton实现,而是BOOST的POOL库的singleton实现。BOOST库中其实有若干个singleton模版,这个只是其中一个。但网上大部分介绍的介绍的BOOST的Singleton实现都是这个,所以大家也就默认了。而且这个的确算是比较特殊和有趣的一个实现。网上比较有名的文章是这篇《2B程序员,普通程序员和文艺程序员的Singleton实

2013-01-08 21:56:26 12621

原创 C++使用OLE高速读写EXCEL的源码

写了不少blog,也码了一点点文字,不知道为啥,被大家看的比较多几篇文章却总有那篇《C++读写EXCEL文件方式比较》。小小伤心一下,我blog里面写的很认真的文字还有几篇,这篇大概是最随意的文章。个人估计这是SEO的作用导致的。另外,由于文中提到了可以加快OLE读取的EXCEL的速度,总有一些哥们找我要代码。好吧,好吧,把代码放出来,因为我原来也是找人家的代码逐步改的。来而不往非礼也

2012-12-29 00:57:06 56932 36

原创 让Python使用Bing翻译API V2

最近要整点自动翻译的东东,发现最亲民的Google的翻译API关闭了。那么摆在码农的面前大概也只有2条路,一是,直接使用web版本的的google翻译,然后分析URL,和结果得到翻译结果。然后直接调用,网上好像已经有兄弟们这样干了。二是,投奔微软的阵营,使用Bing的API,由于我要翻译的东东好像在bing这儿的翻译效果还可以,另外也训练一下自己的Python能力,做点开源的事情。

2012-12-28 00:20:55 6207

原创 Python ElementTree的find,findall函数参数

这两天学习如何使用微软的一个API,用python写了接口代码使用HTTP方法测试,HTTP的API的最后返回是一个XML文件,翻了翻,看见python的xml的ElementTree这套接口的API看起来比较对胃口,于是使用了一下ElementTree进行解析但死活用find,和findall两个函数接口服务无法得到希望的tag,百思不得其借,Python的docamention上面对这

2012-12-25 23:09:39 18142 2

原创 VC++的文件描述符和内核文件句柄HANDLE

VC++的文件描述符和内核文件句柄HANDLE本文描述VC++中的C语言使用代码文件描述符(file descriptor),和内核文件句柄HANDLE之间关系,以及两者之间的转换函数_get_osfhandle,_open_osfhandle以及使用他们的风险。在Windows代码中代码中间文件描述符号和内核句柄HANDLE千万不要共用。在文章的开头,要声明这是我写的bug,但是是被两个

2012-10-21 02:40:28 8015 2

原创 匈牙利命名法的辩思

匈牙利命名法的辩思随手打开8月要检视的代码,发现这次两个组的代码风格居然都选择了匈牙利命名法。也就正好借着这个机会谈谈这种命名法。由于这种命名法的深厚群众基础,我先套用一句小龙的说法,我说的都是错的。请大家抱着兼听则明的态度看这篇文章,大部分资料来自网上,我不是原创只是整理者,请参见附录:BTW:2006年前我自己也是一个匈牙利命名发的坚定拥护者,直到sonicmao给我打开另外一扇门

2012-10-04 11:43:44 20715 6

原创 模板和多态策略化加锁

模版和多态策略化加锁关键词:策略化模式 模板策略化 多态策略化 策略化加锁模式 ACE BOOST C++ 设计模式 在ACE和BOOST的实现中都有大量的策略化加锁(Strategized Locking)的模式,这种模式能比较方便的让你的类兼容加锁和不加锁的两种情况。ACE大师Douglas C. Schmidt有一片专门的论文《Strategized Locking》对此做了

2012-07-31 00:21:35 4822 2

原创 一线咨询师的絮絮叨叨

一线咨询师的絮絮叨叨评《一线架构师实践指南》温昱先生的《一线架构师实践指南》在几乎所有的售书网站上都是一致推荐的一本书,当当4星半,china-pub 4星半,亚马逊卓越上也是4星,就连最客观的豆瓣上,也有7.3分之高。我这种买书大大咧咧的人有幸收了这本书也不算怪事,书大致收藏于2010年,最近清理书架,觉得薄,想顺手啃了,翻了几页,觉得不知所云,于是重新上网看了看资料和评论,担心自己是不

2012-03-25 16:04:45 3793 3

原创 设计极其糟糕的select函数

设计极其糟糕的select函数相较Windows而言,大部分UNIX API函数设计都比较考究,但也有少数简直就是奇葩,select函数正是这些奇葩中非常灿烂的一朵。我原来一致钟情于ACE,接触的只是reactor,最近由于开始自己设计网络层的类库,被迫和select打了一些交道,被迫和这个函数打了一些交道,结果只能是看着就吐了,吐着吐着就习惯了。UNIX下select这个API由主函数s

2011-11-06 22:25:20 5585 2

原创 CSDN 的blog改版后更加难用了。。。。。。

CSDN 的blog改版后更加难用了。。。。。。WORD 文档不能之间发布了。原来WORD格式可以之间粘贴的,现在也不行了。唉,国内的的blog提供商。。。。。。。goolge,你的blogger什么时候可以回来呀。

2011-10-07 18:24:27 2876

原创 VC++2010下编译STLport,Boost

VC++2010下编译STLport,Boost  最近在想向Boost转移,努力掌握Boost代码的过程中,STLport版本:5.2.1Boost版本:1.4.6.1  (1.4.7.0,1.4.9.0也OK)编译器Visual Studio2010 STLPort的编译,选择Microsoft Visual Studio 20010下面的Visual St

2011-10-07 18:21:37 9984

原创 多次HASH算法解决冲突的效果测试

多次HASH算法解决冲突的效果测试自己实现的共享内存的HSH算法解决冲突的方法是开链,最近在考虑做一个简化版本的数据存储时,需求的同事提出了希望能备份共享内存中的数据,当然这个有简单的方法,让使用者根据地址自己拷贝复制就可以了(当然如果你共享内存比较大,建议考虑64位的系统)。但是由于开链的算法天生弱点(开链的链表的处理不能分割),复制的事情只能让使用者解决,于是开始看公司另外一些同事的算法,多次HASH的解决冲突的算法。多次HASH由于所有数据的存储完全是序列化的,没有链子,而且可以使用一个不可能出现的数

2011-04-17 01:28:00 9296 18

原创 不要用多态方式处理数组以及数组的析构

今天Jackxu贴了一段代码说有一个奇怪的崩溃,希望一起看看,于是一研究了一下,代码如下,coredump崩溃的地方在delete,编译器是gcc 4.1.2版本。同时在visual studio 上,这个没有错误。崩溃前也没有任何输出。#includeclass Base{        char sz[12];    public:        virtual ~Base()            {        printf("Base::~Base/n");            }};clas

2011-03-31 03:03:00 3322 6

原创 密码的那些事儿

昨天注册了一个网站,收到他的确认邮件,本来是一项很好的服务,但赫然发现邮件中有我输入的注册密码。突然觉得中国互联网用户突破4亿人了,但是大家对于互联网安全的基本知识都还缺乏,甚至很多互联网企业也严重缺乏基本的安全知识。自己长期没有写blog了,就借这个问题写一下密码的那些事儿。虽然可能都是一些浅显的知识,但道不远人,希望能写的让大部分的网民看懂。1          密码安全重要吗?重要,因为你在互联网上已经不是孤立的个体,而是具有社会性的。即使你从不上网支付,从不玩网游,你的QQ密码的丢失也表示你的QQ社

2011-02-26 23:30:00 2461 3

原创 当东楼撞上西门

当东楼撞上西门1       “野路子”程序员写的山寨C++的书... 12       值得翻阅的地方和不足... 13       0bug的卖弄... 24       书中的瑕疵和bug. 25       别把自己太当回事... 5 本人声明,本文的目的就是帮肖先生炒作,以及骗取点击数量,旗帜鲜明参与骂战。但点穴就要点到点子上,一次足够了,没兴趣对战,当然我也

2010-04-13 01:14:00 4134 23

原创 注意cancel_wakeup等函数的返回值

1               注意cancel_wakeup等函数的返回值这是最近调试发现的一个问题,原来由于为了排查一个同事的暴力压力测试下的问题,我检查代码过程中发现原来的cancel_wakeup函数没有处理判断返回值。reactor()->cancel_wakeup(this,ACE_Event_Handler::WRITE_MASK);由于担心有什么错误处理被遗漏了

2010-03-27 23:00:00 2823

原创 环形缓冲区,魔戒lordrings,boost的circular_buffer

2月要过去,这个月几乎一点东西没有写,不想懒惰一个月,但有没有什么特别值得写的东西。所以翻了翻存货,抖抖尘土,找了这篇出来。这个文章Linker看见标题会笑的,呵呵,因为他在2007年就写过一篇类似的文章《环形缓冲区的实现》。但其实我的作品应该早于他的,我的当时作品名字是cycdeuque.Linker当时刺激我的不止他的文章,还有他的类名字,ring。比我的酷了很多。于是把我的实现名字改成了

2010-02-27 22:57:00 8458 8

转载 凑合的生活

<span id="vad_2" style="border-bottom: #00f 1px dashed; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; display: inline; cursor: hand; padding-top: 0px;" onmousedown="function onmousedown(

2010-02-16 17:44:00 1650

原创 单参函数前面加上explicit描述

单参函数前面加上explicit描述前两天,写到一个unsigned int 打印到ostringstream,编译居然报错,出错的地方如下:std::ostringstream & operator{        //test_uin_是一个unsigned int         //下面这一行报错,    ostr……}由于我使用了STLport

2010-01-02 21:21:00 1982 3

转载 北京某旅游公司的广告:

 北京某旅游公司的广告: 只要半个平米的价格,日韩新马泰都玩了一圈; 一两个平米的价格,欧美列国也回来了; 下一步只好策划去埃及南非这些更为神奇的所在; 几年下来,全世界你都玩遍,可能还没花完一个厨房的价钱; 但是那时候,说不定你的世界观都已经变了。生活在于经历,而不在于平米; 富裕在于感悟,而不在于别墅。

2009-12-26 17:55:00 2231 3

原创 对Visual Studio C++ hash_map严谨一点的测试

对Visual Studio C++ hash_map严谨一点的测试在上次测试完成后,有一个网友mm304321141 (明儿)在留言上对测试数据进行了质疑,先谢谢他的指正。 我的确不知道Visual Studio C++ 默认的Dinkumware STL hash_map的hash_compase有两个参数bucket_size 和min_buckets ,我自己实现的时候类是从stdex

2009-12-21 01:57:00 5303 13

原创 MSVC2005 +STLPort 编译ACE失败

   MSVC2005 +STLPort 编译ACE失败这个问题应该在ACE的5.6到5.7.5的的版本存在。目前我已经提交了bug,应该可以得到解决。常看我Blog的人应该知道(就那么点浏览量,纯属吹牛),我是一个MSVC的Dinkumware STL的怀疑者,我一方面觉得某些实现不地道(和未来的标准BOOST的不一样),一方面我对他的性能也表示不认可。当然主要是由于实现不标准,会导致我

2009-12-20 17:18:00 2569 2

原创 注意InnoDB的记录长度,控制Blob字段的数量

注意InnoDB的记录长度,控制Blob字段的数量由于熊熊内测希望换64位MySQL DB。有点担心稳定问题,研究了半天kavin当年给的innodb db bug 记录。我们用的MySQL都是5.0。090609 22:09:41InnoDB: Assertion failure in thread 696346 in file btr0cur.c line 3781InnoDB

2009-09-20 23:20:00 4111 1

原创 发现自己认识错误的C++问题还很多

今天一天,发现自己对C++的认识还处于低级水平。一天发现了3个以前的认识错误。1.虚函数指针的长度用sizeof是可以看到的,原来以为一直是不包括的。这个地方我一直以为是取决于实现的,好多年前看过《C++对象模型》,不知道是记错了还是记混了。原来看见penghao的一篇PPT上有一个问题是memset一个类(有虚函数),会导致什么问题,他当时的答案是覆盖虚表,我居然忽视了这个问题。今天在调

2009-08-12 13:44:00 3561 5

原创 一个很特别的TCP选项TCP_DEFER_ACCEPT

昨天自己在测试端口是否能链接,发现下载服务器链接后,不会在制定的时间内被踢下线。觉得是个bug,决定调试一下,看了一下Jovi下载服务的代码,里面有相应的超时处理,觉得有点怪,继续检查日志,发现日志里面完全没有Accept处理的过程。简单叙述症状就是客户端Telnet成功,服务器端没有任何相应。于是开始怀疑防火墙,换IP,换地点测试了半天无果。还是Sonicmao找到了问题原因。 Jo

2009-08-09 23:34:00 9675 1

原创 慎用TCP的选项SO_LINGER

1               慎用TCP的选项SO_LINGER最近有一次性能测试,通讯程序出现错误,表现为服务器处理速度明显降低,检查发现服务器的很多句柄出于TIME_WAIT状态,Justin这个流氓的自己承认测试用例写的有问题,在recv函数返回0后,没有close句柄。我很郁闷google了一下如何处理这类错误,发现了SO_LINGER这个选项,发现这个选项可以避免端口的状态进入

2009-08-08 01:01:00 21522 5

原创 ACE_DEBUG的溢出错误

 ACE_DEBUG的溢出错误 这个bug又是inmore发现,错误定位ACE_DEBUG在字符串处理中,可能会引发abort。这个bug在5.6.X,和5.4.X(不能确认),5.7.0的版本都存在,我提交了相应的bug后,也许会在5.7.1版本修正。我们可以用一个简单的程序验证这个BUG。#include #include #include  int main(

2009-07-13 23:21:00 3805 2

原创 面对查找需求如何选择容器

面对查找需求如何选择容器在写代码的时候,即使编程老手经常会遇到一个不知道如何抉择的事情,面对查询的需求如何选择容器,容器的大小等因素也会困扰我们的选择。为什么呢?新手面对查询往往会直接选择map,因为map是内部是支持查询函数的,但老手知道map是通过复杂性换取查询的性能的(map的实现往往是红黑树),那如果要保存的数据个数不多呢,是否值得使用map这样的容器呢?最近两天写了几行短小的代码

2009-06-27 22:31:00 4817 5

原创 慎用Visual Studio C++默认的hash_map

慎用Visual Studio C++默认的hash_map写了一个模块客户端和服务器共用,为了加快查询速度,用了hash_map,今天一个兄弟老卢测试说将其中的hash_map替换成map后速度更快,有点晕。自己写了一段代码在Windows下用Visual Studio C++测试hashmap。首先说明,hashmap目前还没有进入C++的规范,但是大部分厂商都实现了这个容器,测试的h

2009-06-01 01:50:00 10862 13

转载 chroot导致日志时间出错的BUG

下面都是Inmoreliu的总结,我只是抄袭了,如果哪天我集结出版了,我一定付他稿酬。首先要说明一下chroot函数是一个UNIX函数,用于改变整个程序的虚拟的根目录,这个函数的最主要的用途是保证运行系统的安全,降低被攻击的可能。问题现象:由于anna MM反映无法更新pet_def.db3文件,于是到dlsvrd上跟了一把日志。发现输出的日志时间不太对,也没有太在意,以为可能是谁

2009-05-09 16:10:00 2124

原创 三通机房

大概只有在中国互联网的人才能明白这个标题,呵呵。老外大概无论如何理解不了这种问题的。中国的运营商(ISP)是有势力范围的,这个势力范围往往是由于地域经营范围和行政等原因造成的,比如电信和联通(原网通),是由于老电信的拆分,造成了一个负责北方固定电话业务,一个负责南方固定电话业务,而由于教育网是原来教育部的管理的,和通讯运营商联系不紧密。所以中国的网络服务基本分成三块,电信,联通,和教育网,而中

2009-05-06 22:07:00 2861

原创 C++读写EXCEL文件方式比较

因为有些朋友问代码的问题,将OLE读写的代码分享在这个地方,大家请自己看。 http://blog.csdn.net/fullsail/article/details/8449448C++读取Excel的XLS文件的方法有很多,但是也许就是因为方法太多,大家在选择的时候会很疑惑。由于前两天要做导表工具,比较了常用的方法,总结一下写个短文, 1.OLE的方式这个大约是最常

2009-04-12 19:36:00 137936 12

且将新火试新茶-MySQL Benchmark

《且将新火试新茶-MySQL Benchmark》,在Blog的文档由于格式原因不是特别理想,将文档转换为PDF格式提交上来给大家,希望大家喜欢。 使用下载资源分出于无奈,我自己的下载分不多。呵呵。 我的Blog是: http://blog.csdn.net/fullsail 大家可以自由的转载使用这个文档,前提只是保证文档的完整性,我保留署名权。

2009-03-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除