摘要:
一个驱动对象(DRIVER_OBJECT)可以对应多个设备对象(DEVICE_OBJECT)DEVICE_OBJECT有点类似于应用层的窗口,IRQ则是消息,只有有DEVICE_OBJECT,我们才可以接收IRQ来自为知笔记(Wiz) 阅读全文
摘要:
今天在写C++程序的时候,有一个使用了三年多的模型,大概是这样的:有一个界面捕获需要主窗口的鼠标事件的时候,那么他就需要从IMouseEvent继承接口,然后像RegisterEvent(IMouseEvent *event)注册,如果有鼠标事件,主窗口会通过调用虚函数来通知这个界面我们一般的代码是... 阅读全文
摘要:
项目管理的一个月 新年回来的时候,我接手了公司开发组的管理工作,其实从去年开始,我就已经开始接手主管的一部分工作,虽然工资也是普通程序员水平,不过当时因为一些问题所以留在这个公司 直到今年主管离职后,我也开始正式接手管理,虽然工资只有一点点的提升。。。 我在之前的文章里面那也提到过我们软件的几个问题,http://www.cnblogs.com/linyilong3/p/3475204.... 阅读全文
摘要:
最近在思考关于如何优化我们所做的软件的一个构想,是因为我们所做的软件在开发过程随意性很大,开发的时候准备不足,时间比较紧张,加上当时开发的时候软件几乎都是应届毕业生,反正没什么牛人,都是要自己一步一步研究过来的,现在公司的核心项目代码臃肿,结构混乱,维护麻烦,虽然需要增加的功能都能有,但是随着越来越臃肿的代码,现在问题已经凸现出来了,经常改动一个BUG需要动到好几个模块的地方1.最严重的是数据和界面没有分离,有些东西甚至是存储在界面里面的,比如一个物品的状态,当时的代码是存储在界面里面的,去年年末需要根据产品做一个东西,需要收集大量的数据,结果傻眼了,很多东西都是要从一个界面里面去拿,一个函数 阅读全文
摘要:
1.TCP是一个流协议.TCP跟UDP不一样的是,TCP发送过去的东西是stream,也就是说第一次发送的跟第二次发送的数据包可能会粘在一起,即所谓的粘包问题http://blog.csdn.net/binghuazh/article/details/4222516解决粘包问题一般有两个方法1.在两次发包的间隔sleep一段时间,很不稳定的方法,因为接收方可能会阻塞,导致两次发送的包还是粘在一起了2.在每一个包添加包头,现在比较常用的方法,在每个发送的包前面添加包的长度,发送的包类似于下面的结构体:struct pack{ size_t len; char *data;};然后在接收方处理.. 阅读全文
摘要:
1.编译器断言技巧大致跟后面的一样,都是利用偏特化,但是在C++ 0X里面已经有static_assert,所以感觉这东西也没什么用处了,更多的只是开阔眼界2.偏特化就是专门对一个类型去进行特殊的处理,毕竟template会给生成所有的类型相同的操作,但是有时候我们需要对特定的几个类型去处理,于是就有了特化和偏特化3.局部类一直被忽略的C++的语法,可以直接在类或者函数里面定义类,不过一直被忽视就对了,感觉这个还是挺有意思的4.常数映射为型别:template struct Int2Type{ enum { value = v;}}这样的话,每次用不同的数字去实例化Int2Type... 阅读全文
摘要:
http://blog.csdn.net/zhoudaxia/article/details/4486487这篇博客讲得挺清楚的,本来想自己写写看总结下的,不过看了下这个文章已经写得很清楚了,倒没有必要了,总得来说,要了解traits和policy,需要了解下面这三个点1.什么是特化,什么是偏特化顾名思义,特化就是针对一些特殊的类型进行变化,毕竟C++的模板是什么类型都能放进去的,但是有些类型就是比较独特,需要做特别的处理,这个就有了特化和偏特化,在这篇博客中作者特化了AccumulationTraits的int和char2.利用typedef来抽象数据类型当要把两个类中的不同的类型统一成一种 阅读全文
摘要:
1.lambda表达式lanbda表达式简单地来讲就是一个匿名函数,就是没有名称的函数,如果以前有接触过python或者erlang的人都比较熟悉这个,这个可以很方便地和STL里面的算法配合 std::for_each(list.begin(),list.end(), [ &tmp,id ](struct ComingVesselInfo *info) { if( info->m_nShipID == id) { ... 阅读全文
摘要:
这段时间一直在修改项目的BUG,有一些BUG是以前自己留下来,无意中也发现了好多个内存泄露的问题,当然更多的是资源清理不干净,虽然不会导致内存无限增长,但是对于程序来说都不是什么好事情 犯这些错误的原因很简单,就是因为我们采用的开发库有一个库会有内存泄露,而且不少,所以在程序结束后VS会有提示一大段 阅读全文
摘要:
match和findall的区别以及有括号和无括号的区别strvar = "hello\n\nworld"find_re = re.compile("hello[.|\n]*([\S]*)");rs = find_re.match(strvar);print rs.groups()#输出('world',)rs = find_re.findall(strvar);for x in rs: print x;#输出worldmatch是查找到匹配的字符串,也就是括号内的字符串,match应该是从一个字符串里面过滤出我们括号内需要的字符串,所以 阅读全文