摘要: 这几本让读者和我在期待的C/C++巨著就是这期我要推荐的——《Essential C++中文版》、《Effective C++中文版》、《The C++ Programming Language》和《C++ Primer》。
Essential C++(Addison Wesley Pub Co.,1999年10月第一版)的作者Stanley B.Lippman更是C++领域一流的大师级人... 阅读全文
摘要: 本文主要讲述了symbian的开发过程和模拟器的简单介绍。其中给出了Helloworld示例的编译运行过程的详细介绍,供大家参考。 阅读全文
摘要: 『啊,葱爆羊肉真是香啊。』一边回忆着这个令人感动的美食,一边心不在焉地写了个程序。这个小程序实现了一个很简单的功能,将一棵树转换成bmp图片并自动排版。 阅读全文
摘要: CAsyncSocket 的 OnReceive() 阅读全文
Perfect是一套甘特图控件开发包,控件采用ATL+API开发,支持Windows平台所有编程语言(包括脚本语言),运行在Win2000(包括)以上操作系统上。基于该控件,程序员可以很容易的开发出类似MSProject、P3EC的管理软件。适合于项目管理、生产管理、大修项目。
开发包目前包括:
1、PMDocument:文档控件,运行时不可见,主要负责存储数据,是所有控件的基础。
2、PMGrid:表格控件,通过表格方式展示文本信息。
3、PMGantt:甘特图控件,通过各种图形丰富的展现时间信息。
4、PMADOAdapter:ADO数据库适配器,通过ADO方式桥接数据库和PMDocument,缓存关键信息,加速数据加载和信息查询。
目前版本:1.0.0-β,有一部分高级绘制接口暂时没有暴露。
示例采用VB6开发,更多语言的demo将会陆续开发出来。
运行示例前请执行bin目录的reg.bat注册控件(其中SplitterATLControl.dll不属于本产品,demo中用到),执行unreg.bat可以注销控件。
下载
摘要: 我们知道Yacc和Bison都是产生C++的代码作为编译器的前端的。但是有时候我们需要动态地产生一个编译器前端,极端一点讲,譬如“文法调试器”。调试器总不能动态生成.y文件,让yacc编译,让gcc再度编译,然后execute,最后将程序的输出结果读进来。这样就太麻烦了,于是我们需要重新写一个生成编译器前端的程序。 阅读全文
摘要: 现在的病毒越来越厉害,以前的时候种了毒之后,启动项里就多出来一些启动项,这样下次开机的时候可以开机运行。现在的病毒已经不用借助启动项也能开机的时候运行。
我以前对病毒也有点了解,不过了解不深。有几个问题想咨询一下: 阅读全文
摘要: 关于 TrueCrypt 第三集 阅读全文
摘要: Windows CE是微软推出的嵌入式操作系统,目前智能手机市场上著名的Windows Mobile就是基于CE定制的。那么它和其他嵌入式操作系统相比优势在哪,它的架构是甚么样的?谨以此文与大家一起探讨。 阅读全文
摘要: 32位系统,eax,ecx,edx,ebx这些寄存器都是32位的,而要使用一个64位的变量,需要用到2个寄存器,或者一个寄存器用到2次,往往在某些地方就会出现意想不到的问题。 阅读全文
摘要: 昨天被问到这个问题,我想了下,只想出了三种方法,不知道还有没有其它方法
阅读全文
摘要: 工作中使用 STL 的 vector , set, map, deque 等容器很方便, 很稳定, 但在我的一个关键任务中, 对性能要求特高, 使用 STL 组件将使系统不堪重负. 因此自己写了一个动态数组的 C++ 模板类. 性能的提升效果明显. 下面是源码:
#ifndef __ARRAY_DYNAMIC_H__ #define ... 阅读全文
谈起封装技术,我想大家并不陌生,从二进制到汇编,再到c语言和其它面向过程的语言,都是从简单易用的角度进行了封装,已经屏蔽了相当多的细节了,不光是不同的硬件,以及硬件的操作指令及其二进制结构。封装意味着开发者面对的一个个的功能块 ,一种逻辑上操作,并不真正面对具体的机器的指令形式,这确实给我们带来好处,我们不用懂很多的计算原理就可以控制计算机了。
语言的封装让我们简化了操作,那么操作系统的封装让我们简化了控制。我要多个任务执行那么我就调用一个库函数,或是几条语句,我要同步我就发信号量,一切变得那么简单,再也不用汇编或是机器指令去调用这一切。我们说封装好啊,操作计算机,简单的语句就可以了。
封装还演生了库函数,动态库等重用技术,很多操作或是计算都变得简单了。
由c语言进入到C++等面向对象的语言算是软件开发的一场革命,严格来说面向对象技术其实是一种面向现实世界的逻辑抽象和模型的提取,对于编译器来说只是增加了一些规则和约束,比如对像及其类的成员函数如何编译等。如果说面向过程语言的封装主要是侧重于算法的封装,那么面向过程就是侧重于现实模型的封装和关系建立。
比较好的封装如stl,或是mfc,确实到了快速开发的角度。但是还不够能够更加精细化模块化,对于一个大型的系统来说,模块分化,各自有一定的独立性,可以分配单独开发无论从模型抽象和实现上组合上都是最完美的。
封装是我们追求的目标,如何更简单化更方便使用更模块化,封装技术进入到操作系统对封装的支持。比如组件技术,支持组件的创建支持,组件的线程模式支持等。
组件模块化设计是我们追求的目标,那么如何在一个更为开放的应用中可以去调用其它程序的功能呢,控件和容器出现。
封装技术再多也是围绕软件工程开发而演生,服务于软件工程,服务于特定的操作系统,将后来软件开发工程可能工作越来越轻松,各种种样的库各种各样的封装,在引诱着我们,像鸦片一样,我在封装糊里糊途的写程序或是遇到开发时设计简单的结构软件重用度小,不对自己的技术进行封装思考,中国的软件可能再也发展不起来了。永远在别人的封装中写代码。
对于那些坚持用汇编或是c的开发者,我只能说你们是好样的,不屈服在某些封装技术下,具有牛的不怕苦不怕累的精神。
对于那些使用新封装技术的,我表示好样的,快速开发,省时省力,希望你们不要沉迷于这些封装技术,将这些技术的一些思路方法应用的软件中去。
对于那些在软件开发中运行这些封装技术原理来实施软件工程的,我说这样我们的软件开发将会上一个大的台阶。
对于对封装原理有透彻理解,进行封装库给别的开发者使用的,我敬佩你,中国的软件希望在这里。
摘要: 关于 TrueCrypt 续集 阅读全文
项目在分析、设计、实现、组装后,就进入测试环节,测试作为检测我们设计的软件是否满足设计的功能需求,及其性能需求及其隐性需求起着重大的作用,作为最后成形的产品,可能在一些功能或是设计上存在缺陷,或是对于用户的需求歪曲的设计,都可以在测试环节找出来,予以修正。
因此从这个角度上看,我们应该是重视软件测试,软件测试是提高软件质量的一个重要手段。据国外一些开发公司的统计,一般是设计:实现:测试人员投入的比例是1:3:3,可见对于测试的重视程度。
那么测试也应该有测试的工作方法,首先要制作测试计划,选好测试模型,制定好的测试用例,然后进行评审。我觉得测试用例设计很重要,测试用例,要覆盖软件的功能,操作的一般情情况,特殊情况,爆力等特殊操作,设计用例还要能兼顾到新的bug等。总之好的测试用例,使我们能更快的发现软件的软肋,减少重复性的工作,减少软件中遗露的缺陷。
测试用例设计也是一个经验的积累过程,一个优秀的测试工程师,必能找出一些通用的缺陷,即有些测试用例也是可重用的。
有了测试用例,我们就过可以按这些用例去,去一个个的检验我们的软件产品。找出其中的缺陷,然后交给开发组进行修正,再跟踪测试。
我们在提交测试后,一般会根据上轮测试,修正一些bug或是逻辑错误,产生一些新版本,然后再提交新的版本测试,那么在中间这一轮轮的测试中,是否每次都要进行覆盖测试呢,我个人觉得,如果前一两轮测试得较认真,那可以在有新版本的测试程序后,可以丢掉原版本的程序,在新版本的程序进行测试,测试的优先级别是先测bug是否修复,然后测上个版本没测的用例,直到全部测试完或是有一个新的版本出现,再丢弃用新的版本测试。
经过多轮测试修复好,最后再进行全方位的覆盖测试,我想软件这时的功能质量都应该是比较有保证的。
整个测试过程,均以需求基本要求,以测试用例为测试的指导。
摘要: VisualFC目前提供了EVC4上的插件,可以支持EVC4上WTL应用程序的可视化开发。 阅读全文
摘要: 远程控制程序(Spy)是笔者在学习网络编程时编写的一个网络程序,其功能有:
1、实现远程文件操作(上传,下载,复制,删除等);
2、远程启动命令提示符和其它控制台程序;
注:该软件仅用于交流和学习,请不要用于非法用途!!!
下载远程控制程序
下载源代码
该程序包含3个程序:
1、spysvc 服务端(受控端)
2、spycmd &nbs... 阅读全文
摘要: 关于 TrueCrypt 阅读全文
在分析评审完用户需求后,需要去需求进行分配,识别出用例和角色,并且对用例进行分析,得出业务流,和数据流及其数据逻辑结构,并且对相似或是同类的用例进行划分,划分出一个个的系统。为后期组件建模层次划分提供依据。
在完成需求分配后,我们会根据用例的子系统来划分模块,形成组件,并且根据定义好子系统之间的接口及其方法。
在完成需求分配和模块分配后,及其接口方法定义后,我们就进入下一环节,子系统设计,识别出子系统的角色和及其类对象的方法及其属性,类及其对象之间的关系。
在这些工作都完成评审后,就可以开始编码工作了。
对于一些隐性的未有挖掘出来的需求,可以经过分析后,将这些需求分配到某个子系统中去,从而不会影响整个系统的需求分配及其设计。
上面是我在日常开发设计中遇到的一些问题和工作中的处理方法。
感觉有时工作是前期的工作还没有做完评审,进入下一步,造成诸多的需求没有挖掘或是需求分配不合理或是需求分配没有覆盖用户的需求,造成对后面的子系统设计实现的重构,较为严重的影响开发计划。
摘要: 本章将介绍用于支持主机和路由器进行多播的Internet组管理协议( IGMP)。它让一个物理网络上的所有系统知道主机当前所在的多播组。多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。 阅读全文
摘要: 现在的OOP都提倡将操作与数据结构结合在一起。为什么这里要提出将算法与数据结构分开呢?第一个原因是一个算法可能是用来处理一组数据结构的。第二个原因是算法并不属于操作。我们可以借鉴访问者模式来实现这个分离,但是这里有一个特别之处:我们要将访问者模式带给我们的那个接口实现得让我们用起来很漂亮。 阅读全文
摘要: 就在SIGGRAPH大会刚结束之后,AMD和暴雪在AMD官方网站上放出了《星际争霸II》的官方技术文档,通过游戏引擎技术的展示让星际迷们感受到越来越多的惊喜。画面优化给CPU带来考验着色方面,在使用原型的基础上利用3D Studio MAX让程序员对整体效果做最大的优化,反复的提炼使得整个作品就像被艺术家精心雕琢一样,配合上8000个独特的、不重复的线性着色渲染代码,使得Starcraft II与... 阅读全文
摘要: 这份文档定义了在USENET主机间交换网络新闻消息的标准格式。它更新并替换了RFC850,参照了新闻程序B2.11。这份备忘录以RFC形式发布是为了使因特网社区更容易的得到这个信息。它没有指出一种因特网标准。备忘录的发行没有任何限制。
阅读全文
摘要: 比较了Windows CE在不同架构CPU的嵌入式系统中建立虚实地址映射的过程 阅读全文
摘要: C++身份证号验证
由于项目需要,所以添加了这个身份证号的验证的C++程序,想用正则表达式,但又不会,有哪个会的可以指点下,小弟我不胜感激啊!
可能有的地方写的不好,欢迎指点:
.H文件
.cpp
测试程序 阅读全文
摘要: 数独问题可以转换为729行324列的exact cover 问题。每一行代表每个方格的可选值,每一列代表每个格的限制,建立双向十字链表,即可用dancing links算法优化求解。
1Source Code 2 3Problem: 3074 User: t... 阅读全文