随笔分类 - 编程技术
关键不在于代码,而在于代码背后的思想
摘要:在软件开发过程中,不可避免的会遇到错误处理,而且这部分对于整个软件的健壮性有非常大的作用,它是软件除了功能性以外最重要的指标了,一个软件成功与否与其健壮性有很大的联系。我在以前的开发中也时常思考错误处理,因为这部分代码逻辑比较不容易梳理清楚。以异常的处理为例,以前通常就采用比较简单粗暴的处理方式:用try..catch加Exception把所有异常都包起来,这样简单省事,写的代码最少,相信很多童鞋曾经跟我一样写过这样的代码,很明显,这样写有很大的问题,最主要的问题在于:Exception会吃掉所有可以处理的异常,使得对于某些我们关心的异常无法捕获,因为对于不同的异常我们可能需要做不同的处理,有
阅读全文
摘要:最近一直在写一个基于QT-Webkit的浏览器插件,这个项目做了2个月了,一直是基于QT开发,也让自己对QT-Webkit有了一些了解,所以想把这些经验记录下来。 1 QT-Webkit介绍 QT-Webkit是将Webkit移植到QT的一个开源项目,目前最新的版本是QT-Webkit 2.2,其已经加入到QT 4.8中,正是由于这个开源项目,我们可以很方便的在QT中开发需要渲染网页的项目,甚至是通过信号和槽机制让js和C++交互,这些都要归功于QT-Webkit。使用它可以很方便的开发出一款功能相对完善的浏览器来,具体的例子可以看看QT自带的demo,其强大可见一斑。 2 QT-Webki.
阅读全文
摘要:今晚看到算法引论关于二分搜索的相关问题,想起了当年看编程珠玑的“无处不在的二分搜索”那章,记得作者说过能完全写对二分搜索的程序员寥寥无几,当时自己也写了下,确实不容易写,主要的难点在于写对,大致的框架可能大家都非常熟悉,但是里面的下标怎么确定是正确的呢?不对的下标很有可能造成死循环。不过,算法引...
阅读全文
摘要:仿函数(函数对象)和适配器可以说是STL中默默无闻的贡献者,它们没有容器、算法和迭代器那么有名但是其贡献却很大。这里总结的主要是书中第7、8章的内容。一 仿函数 仿函数又称函数对象,从名字上可以得出,它本质上是 一种具有函数特质的对象, 也即可以像使用函数一样使用该对象。怎么样做?重载operator()运算符即可,有了这个运算符,我们就可以在仿函数对象后面加上一对小括号,以此调用仿函数所定义的operator()。STL仿函数可以分为一元和二元,或者算术运算、关系运算和逻辑运算。 为什么要有仿函数?在算法的设计过程中,我们会发现其本质往往是不变的(例如排序算法的思想),变化的除了数据之外还.
阅读全文
摘要:说起STL就不能不提到迭代器,它是STL中非常关键的概念,正是它连接了容器和算法,要理解STL思想首先 要理解的便是迭代器,这篇笔记总结了我两次看《STL源码剖析》第三章的阅读笔记,其中也包含了自己的 一些想法,欢迎大家指正。 本文从三方面总结迭代器 迭代器的思想 迭代器相应型别及traits思想 __type_traits思想 一 迭代器思想 迭代器的主要思想源于迭代器模式,其定...
阅读全文
摘要:本身这个问题非常简单,直接用地址差值即可求得,最近在某本书上看到了一个非常牛的方法,第一次看还将信将疑觉得不太可能,后面上机验证发现确实可以,代码如下: [代码] 仔细看第14行代码,发现这个宏非常奇怪,没错,就是用来求偏移的。我们知道宏的本质是替换,在预编译的时候会替换代码,那么里面有什么玄机了?我发现其实此法是用了欺骗编译器的技巧来求得偏移的。取地址符‘&’...
阅读全文
摘要:最近在做实验室项目的时候需要在MFC下生成单文档多视图的结构,经过网上几个小时的寻找以及查书终于找到了一种可行的同时又较好理解的解法,记录下来: 首先,由于是静态创建,所以肯定是先初始化好想创建的视图啦。注意,我所有的操作都在**App类中做。[代码] 我在App类中声明了一个视图数组,并在InitInstance中初始化它,还包括视图的创建等。视图类初始化 我在菜单中加入Command...
阅读全文
摘要:最近由于项目需要,要在VC环境下做一个启动界面。当时拿到这个任务我想的是直接AfxBeginThread一下就行了,后来发现没这么简单。要解决这个问题首先需要了解以下知识点。一MFC将线程分为工作线程和用户界面线程。听名字就应该知道他们的区别在于用途不同,用户界面是用来创建界面并负责和用户交互的而工作线程则是负责处理后台的计算。从技术上讲,用户界面线程具有消息循环能处理消息,而工作线程则不行。二线...
阅读全文

浙公网安备 33010602011771号