摘要: 细想一下这个基本的东西确实不好写, 实际上我是上面只是考虑了10进制和16进制, 没有考虑其他进制,也没有考虑小数,非法的字符串或是溢出等情况, 而真正工业级的库要考虑所有的情况, 另外还要考虑转换效率等问题。  阅读全文
posted @ 2013-09-23 22:39 Richard Wei 阅读(2708) | 评论 (0)编辑 收藏
     摘要: 我们知道Windows的窗口消息处理函数是C方式, 面向过程的, 所以窗口框架的基本任务就是将它转成面向对象的方式, 确切的说如何将消息处理函数第一参数HWND转成对象指针。  阅读全文
posted @ 2013-09-08 14:47 Richard Wei 阅读(4283) | 评论 (11)编辑 收藏
     摘要: 最近工作 中有个需求是抓取桌面截图, 这里的桌面是指点了“显示桌面”之后看到的桌面, 截图内容包括桌面背景和图标以及任务栏  阅读全文
posted @ 2013-08-30 20:30 Richard Wei 阅读(7809) | 评论 (2)编辑 收藏
     摘要: google test, 最好的单元测试框架  阅读全文
posted @ 2013-08-29 16:26 Richard Wei 阅读(2741) | 评论 (0)编辑 收藏
     摘要: 记录一些Windows 安全相关的概念, 分享自己对Windows安全机制的一些理解。  阅读全文
posted @ 2013-08-25 07:58 Richard Wei 阅读(10849) | 评论 (3)编辑 收藏
     摘要: 简单总结下, 语言不在多,在精。经常使用你觉得有价值的语言。深入掌握一门脚本。  阅读全文
posted @ 2013-08-17 19:32 Richard Wei 阅读(4230) | 评论 (2)编辑 收藏
     摘要: 很多人说COM过时了, 也许”纯正的标准COM“确实是使用的人越来越少了, 但是COM的思想却一直在后续的程序中被使用和发扬, 可以说COM技术是微软技术框架的“根”。  阅读全文
posted @ 2013-07-20 16:59 Richard Wei 阅读(4592) | 评论 (6)编辑 收藏
     摘要: 很多人说跟着微软跑真累,确实如此。 但是回头来想想, 那是因为你一直落后, 你一直在追赶, 你一直是被赶着走的, 所以你会觉得累。如果你一直是与微软起头并进, 甚至领先与微软(微软新加的东西是你意料到的), 你就不会有累的感觉,有新东西出来, 研究下原理, 写些测试代码,就大概知道怎么回事了。  阅读全文
posted @ 2013-07-18 00:05 Richard Wei 阅读(3095) | 评论 (8)编辑 收藏
     摘要: 越抽象的东西离底层机器就越遥远, C++隔着复杂的编译器, Java/C#隔着虚拟机, 脚本语言隔着解释器, 这就是高级语言的代价。  阅读全文
posted @ 2013-06-20 22:38 Richard Wei 阅读(3285) | 评论 (3)编辑 收藏
     摘要: 28个在64位平台上使用C/C++开发的注意事项  阅读全文
posted @ 2013-06-05 23:14 Richard Wei 阅读(1759) | 评论 (0)编辑 收藏
     摘要: FirstNext, IEnum, IEnumerator, Iterator, foreach  阅读全文
posted @ 2013-05-15 22:01 Richard Wei 阅读(3786) | 评论 (0)编辑 收藏
     摘要: 在cppblog从2012年5月份开通博客到现在正好一周年, 看了下文章数量,还是挺有收获,其中原创50多篇, 转载10多篇。
虽然文章质量不高, 但起码都是自己一些真实感悟和总结, 回头再看这些文章,一年的技术经历还是挺清晰的,感觉自己还是有挺大提高。  阅读全文
posted @ 2013-04-30 23:46 Richard Wei 阅读(2297) | 评论 (4)编辑 收藏
     摘要: 最近有机会看号称是公司最核心的代码, 因为这个代码以前一直是美国那边保密的, 这么重要的代码会是啥样子?
真正拿到手大致看了一下后却挺失望的,因为该代码风格基本上是我刚毕业时的C++风格----带类的C,单从代码上看写的挺滥,里面没啥设计模式, 也没有用模板, 代码里面甚至一个函数可以写上近千行。
这么重要的代码, 竟然是这种风格, 由此思考好的C++程序应该是什么风格?  阅读全文
posted @ 2013-04-27 23:28 Richard Wei 阅读(4736) | 评论 (11)编辑 收藏
     摘要: 博大精深的C++, 各类库, 总结的比较全  阅读全文
posted @ 2013-04-16 21:03 Richard Wei 阅读(1053) | 评论 (0)编辑 收藏
     摘要: 讲解C++11右值引用最详细的文章  阅读全文
posted @ 2013-04-12 17:09 Richard Wei 阅读(1160) | 评论 (0)编辑 收藏
     摘要: google的开源项目值得我们一用的,这些项目很有意义,甚至可以直接用在我们自己的工作上!学习编程的的一个比较好的方式就是阅读优秀项目的源代码,从而能够了解作者的方法、思路、技巧  阅读全文
posted @ 2013-04-09 21:20 Richard Wei 阅读(1227) | 评论 (1)编辑 收藏
     摘要: 总结下常见的C++内存池,以备以后查询。
应该说没有一个内存池适合所有的情况, 根据不同的需求选择正确的内存池才是正道.  阅读全文
posted @ 2013-04-08 20:53 Richard Wei 阅读(17023) | 评论 (0)编辑 收藏
     摘要: Windows的API封装了太多细节, 尽管大部分时候我们只要知道如何使用它们,而不用关心它们的内部如何实现。 但是当你写一些相对底层的东西,比如开发自己的DirectUI界面库时, 还是需要真正理解某些API的内部实现原理,才能继续深入下去  阅读全文
posted @ 2013-04-07 22:19 Richard Wei 阅读(5082) | 评论 (10)编辑 收藏
     摘要: 个人尝试山寨了下STL, 对STL的6大组件(containers, algorithms, iterators, functors, adaptors, allocators)都有涉及。 当然山寨STL不是为了重复造轮子,而是为了更好的理解和扩展STL。  阅读全文
posted @ 2013-04-03 16:54 Richard Wei 阅读(2485) | 评论 (2)编辑 收藏
     摘要: 关于宏的一些技巧,总结得挺好,写库的时候比较有用。  阅读全文
posted @ 2013-03-25 17:31 Richard Wei 阅读(1798) | 评论 (0)编辑 收藏
     摘要: 对系统原理和程序运行过程的理解,会熟练使用调试器是一个层次,能单独开发调试器又是另外一个层次。
下面是一个不错的系列,告诉你如何自己开发一款微型调试器  阅读全文
posted @ 2013-03-12 10:28 Richard Wei 阅读(1897) | 评论 (0)编辑 收藏
     摘要: 理解成员函数指针的最佳资料  阅读全文
posted @ 2013-03-02 18:43 Richard Wei 阅读(1366) | 评论 (1)编辑 收藏
     摘要: 通过WinDbg结合AppVerifier, 我们可以详细的跟踪堆中new出来的每一块内存。 很多时候在没有源代码的Release版本中,在程序运行一段时间后,如果我们发现有大内存或是大量同样大小的小内存一直没有释放, 我们就可以用上面的方法进行分析和快速的定位问题。  阅读全文
posted @ 2013-02-27 14:35 Richard Wei 阅读(18490) | 评论 (10)编辑 收藏
     摘要: 尽管这个概念已经让人说滥了 ,还是想简单记录一下, 以备以后查询。  阅读全文
posted @ 2013-02-25 22:13 Richard Wei 阅读(7590) | 评论 (2)编辑 收藏
     摘要: 从编译时到运行时,从面向对象到普通范型编程再到模板元编程,C++复杂得让人无语, 也强大得让人无语, 而且C++语言本身是在不断发展的(C++11), 同一问题在C++中往往有多种解决方案,这些解决方案有的简单,有的复杂,有的高效, 也有的低效, 而我们的目标就是利用C++这把利器寻找简单而高效的解决方案。


  阅读全文
posted @ 2013-02-14 20:31 Richard Wei 阅读(5323) | 评论 (10)编辑 收藏
     摘要: 第一种实现和接口混合继承的方法最简单,也最容易理解, 缺点是没法完全基于接口编程; 第二种基于模板的方法比较难理解,实现上也比较简单, 缺点是代码膨胀; 第三种多重继承的方法也比较容易理解, 缺点是我们要多做一些工作。  阅读全文
posted @ 2013-02-08 19:40 Richard Wei 阅读(2502) | 评论 (5)编辑 收藏
     摘要: 在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming, GP),后来为泛型而设计的模版,被发现及证明是图灵完备的,因此使C++亦可支持模版元编程范式(template metaprogramming, TMP)。C++继承了C的特色,既为高级语言,又含低级语言功能,可同时作为系统和应用编程语言。  阅读全文
posted @ 2013-02-02 20:25 Richard Wei 阅读(1301) | 评论 (0)编辑 收藏
     摘要: 在上文 在C++中实现事件(委托) 中我们实现的C#里委托方式的事件处理, 虽然使用很方便,但是似乎少了一点C#的味道, 下面我们尝试把它改成真正的C#版。
其实要改成真正的C#版,我们主要要做2件事, 一是吧CEventHandler放到外面,可以让外部直接构造, 二是实现operator +=和operator -=  阅读全文
posted @ 2013-01-31 15:39 Richard Wei 阅读(3396) | 评论 (1)编辑 收藏
     摘要: 在C++中实现回调机制的几种方式一文中,我们提到了实现回调的三种方式(C风格的回调函数, Sink方式和Delegate方式)。在面向对象开发中,delegate的方式是最灵活和方便的,因此很早就有人用复杂的模板去模拟, 实现起来很复杂。但是现在借助C++11的function和bind, 我们可以很方便的去实现。  阅读全文
posted @ 2013-01-31 14:16 Richard Wei 阅读(10243) | 评论 (8)编辑 收藏
     摘要: 软件系统的分析和设计的基本任务是:确立系统中的基本元素(完成系统的功能所必不可少的成分);确定这些元素之间相互作用的方式(这就是系统的体系结构)。  阅读全文
posted @ 2013-01-27 21:15 Richard Wei 阅读(3149) | 评论 (1)编辑 收藏
     摘要: 总之, 一开始我们会觉得WinRT很好奇, 但是后来我们逐步发现它其实并没有那么神秘, 它是很多微软现有技术的合成体。 微软的技术更新很多时候让人眼花潦兰,但是底层本质的东西(比如COM,D3D,Win32)其实一直很少改变。  阅读全文
posted @ 2013-01-13 16:31 Richard Wei 阅读(8202) | 评论 (6)编辑 收藏
     摘要: 微软在Intel处理器上开发Windows操作系统, 我们在Windows操作系统上开发应用程序,无非是一层层的封装, 其实具体到细节, 每层都没有太多神秘的东西。我们当然不可能掌握每层的细节, 只能理解每层的概念, 以帮助我们在应用层更好的开发。  阅读全文
posted @ 2013-01-13 13:26 Richard Wei 阅读(3520) | 评论 (0)编辑 收藏
     摘要: “SSDT”(System Service Descriptor Table,系统服务描述符表) Inline Hook FSD”(File System Driver,文件系统驱动)  阅读全文
posted @ 2013-01-12 22:32 Richard Wei 阅读(1408) | 评论 (0)编辑 收藏
     摘要: windows程序运行分为内核模式和用户模式,内核模式可以访问所有的内存地址空间, 并且可以访问所有的CPU指令。一般程序运行在用户模式, 通过系统调用切换到内核模式执行系统功能,Windows系统通过这种方式来确保系统的安全和稳定。  阅读全文
posted @ 2013-01-12 22:03 Richard Wei 阅读(8500) | 评论 (0)编辑 收藏
     摘要: 异步编程是个好东西,但是不该被滥用和误用。下文转自: http://msdn.microsoft.com/zh-cn/magazine/hh456402.aspx异步编程长时间以来一直都是那些技能高超、喜欢挑战自我的开发人员涉足的领域 — 这些人愿意花费时间,充满热情并拥有心理承受能力,能够在非线性的控制流程中不断地琢磨回调,之后再回调。 随着 Microsoft ...  阅读全文
posted @ 2012-12-16 21:15 Richard Wei 阅读(1650) | 评论 (0)编辑 收藏
     摘要: 现在小米2手机都已经4核了,更别说PC机了 。 多核,并发 ,异步编程是不可阻挡的趋势, 各种语言也都逐渐加入了对异步编程的支持。异步编程的本质是将主线程某些任务委托给某个线程处理,主线程继续无阻塞运行, 等另外一个线程处理完了再将结果通知主线程(在主线程中调用某个主线程的结果处理方法)。本来很好理解的概念,但是因为匿名函数(Lambda)导致的闭包和多线程以及编译器在背后做了很多事情,导致我们很...  阅读全文
posted @ 2012-12-16 20:28 Richard Wei 阅读(2594) | 评论 (0)编辑 收藏
     摘要: 有些人说GP的抽象能力高于OO,这个观点我并不认同,我感觉只是他们的抽象方式不一样,OO是基于接口, 而GP是基于concept。OO的基于接口的抽象,在源代码和最终运行时都能体现,源代码中是接口,运行时是虚表,所以他们是一致的, 符合普通人的思维习惯。GP基于concept的抽象, 主要体现在源代码中 ,只是你用来告诉编译器你的思维方式, 在运行时他可能是一个完全不同的世界,所以比较难理解。  阅读全文
posted @ 2012-11-10 14:25 Richard Wei 阅读(3197) | 评论 (7)编辑 收藏
     摘要: 通过上面的分析 ,相信我们知道了为什么ATL/WTL大量使用模板,但是生成的exe还是这么小的原因 :
不是模板不会使代码膨胀,而是ATL/WTL在设计时就关注了这个问题 ,它避免了在可能生成很多模板实例的模板类中编写大量代码(有些拗口,不知道你有没有读懂^_^)

总结下 ,如果你想用模板,但是又不想 让自己最终的可执行文件变的很大, 有2种方式:
(1)你的模板类不会生成很多模板实例,这样写成模板类还有意义吗?
(2)你的模板类的代码量或是函数个数很少,你可以仿照ATL的方式把模板无关的东西逐层剥离。  阅读全文
posted @ 2012-11-08 22:37 Richard Wei 阅读(4009) | 评论 (2)编辑 收藏
     摘要: 以我个人的经验,一些东西刚开始看不太懂就放一放,先去看一些基本的东西,比如不懂COM,先去学下C++ 中的虚函数;不懂C++模板,先去学下STL;不懂Thunk,先去看一下汇编,等有了一定的积累,回头再看,一切就觉得没这么难了。  阅读全文
posted @ 2012-10-23 00:23 Richard Wei 阅读(3219) | 评论 (0)编辑 收藏
     摘要: 在实际的应用中,SQLite作为目前最为流行的开源嵌入式关系型数据库,在系统的架构设计中正在扮演着越来越为重要的角色。和很多其它嵌入式NoSQL数据库不同的是,SQLite支持很多关系型数据库的基本特征,这在数据移植、程序演示等应用中有着不可替代的优势。从官方文档中我们可以获悉到,SQLite支持的数据量和运行效率都是非常骄人的,因此在海量数据的解决方案中,SQLite可以作为数据预计算的桥头堡,从而显著减少存储在关系型数据库服务器中的数据数量,最终提高系统的查询效率和运行期效率,同时也可以显著的降低数据备份的磁盘开销。  阅读全文
posted @ 2012-10-16 10:12 Richard Wei 阅读(5119) | 评论 (0)编辑 收藏
仅列出标题
共4页: 1 2 3 4