- 博客(119)
- 资源 (14)
- 收藏
- 关注
转载 描述程序员牛人
今天看到以下文字。描述程序员牛人——————————————————————————————————————有幸目睹了一位当时国内最牛程序员的一次编程作业,从此彻底颠覆了我的想法。先说说牛人的业绩,一个工作日,基本没加班,完成一个复杂 C/S软件的服务器端,用统计小工具数数代码,三万多行。这个软件经过简单的测试,第二天就上线实际运行了,每天数千人访问,没出过大问题。再说开发过程,开发环境是
2012-09-07 19:34:23
1591
1
翻译 中国与印度软件工程师的比较
在工作中,接触到印度软件公司开发出来的软件: 整个体系架构非常清晰,按照我们的要求实现了全部功能,而且相当稳定。但是打开具体的代码一看,拖沓冗长,水平不咋样。我们自己的一些程序员就有怪话了,说他们水平真低。但是! 印度人能够把软件整体把握得很好,能够完成软件,并得到相当好的设计文档。而中国人在那里琢磨数据结构、算法,界面人员就还没编码就想着是Outlook式的还是Visual Studio式的界面
2012-02-16 01:09:19
1419
原创 人生感悟
人生中真实的世界,就是一个不 完美的世界 。世界有 阴暗 也有光明,人生有高峰也有低谷,但在敢于应对挑战的人那里,真实的世界恰恰是一个富有的世界,总能找到希望!即便你看到的阴暗面再多,也不是世界的全部;即使黑夜再长,也还会有太阳升起的那一刻。 但是,也唯有这些艰难,才能突出生命的可贵与不凡,让我们可以笑着离开。唯有经过磨炼的生命,才能累积出坚强的生命力,也唯有历经风风雨雨的人,才知道生命的难得与珍
2012-01-28 01:13:49
924
转载 展望C++的未来
展望未来的时候。虽然C++从脱胎于C开始,一路艰难坎坷的走过来,但是无论如何C++已经取得了工业基础的地位。文章列举的大量相关资源就是最好的证明,而业界的大量用C++写成的产品代码以及大量的C++职业工程师则是最直接的证明。同时,我们可以看到各个高校的计算机专业都开设有C++这门课程,网络上对于C++的学习讨论也从来都没有停过。但是,在Java和.NET两大企业开发平台的围攻下,给人的感觉是C++
2012-01-22 13:10:58
1755
原创 COM的优点
重新看了潘爱民的《COM原理与应用》,觉得书中对COM的优点讲述得并不全面,或者说并没有把COM的最突出的优点讲出来。 比如该书的第一章 1.1.2 组件的产生 提到: 在计算机软件发展的早期,一个应用系统往往是一个单独的应用程序。应用越复杂,程序就越庞大,系统开发的难度也就越大。而且,一旦系统的某个版本完成以后,在下个版本出来之前,应用程序不会再有所改变。而对于庞大的程
2012-01-18 17:29:46
1191
原创 the books of computer
1.The Art of Computer Programming Author: Donald.E.Knuth Web site: http://www-cs-faculty.stanford.edu/~knuth/taocp.html Book Info: 这部书被誉为20世纪最重要的20部著作之一,与Einstein的相对论>>并列,是计算机科学领域的权
2012-01-01 00:00:07
3278
1
原创 可以让你少奋斗10年的工作经验
第一:不要认为停留在心灵的舒适区域内是可以原谅的。 每个人都有一个舒适区域,在这个区域内是很自我的,不愿意被打扰,不愿意被push,不愿意和陌生的面孔交谈,不愿意被人指责,不愿意按照规定的时限做事,不愿意主动的去 关心别人,不愿意去思考别人还有什么没有想到。这在学生时代是很容易被理解的,有时候这样的同学还跟“冷酷”“个性”这些字眼沾边,算作是褒义。然而相反,在
2011-12-19 11:26:54
1165
原创 思想是成功之因(转)
每一个人的成功,就像是太阳的东升西落,是可以被预期的、被肯定的。只要他做某些固定的事情,使用某些法则,任何人都可以成功。因为成功是靠思想,不是靠性别、不是靠经验、不是靠智慧、不是靠体力。思想,控制一切。到底成功者是做哪些事情,拥有哪些成功的想法呢?思想是原因,环境是结果。现在,就让我一一告诉大家。1、要明确你的梦想和你理想的生活方式 在多年前,我已明确知道我要的生活方式,明确知道自己要做
2011-12-16 16:43:53
1458
转载 Direct UI
在界面开发中,目前DirectUI是个热门的技术名称,因为众多的知名公司都是用DirectUI方式作出了很炫丽的界面。而对于大多数熟悉Win32控件,熟悉MFC开发的开发人员来说,我们应该做何选择?因为传统的Win32/ MFC大家都比较了解,所以首先我们分析DirectUI,看看DirectUI能完成哪些普通Win32控件难以实现的功能,同时实现一个完整的DirectUI有那些关键点
2011-11-30 16:31:20
34024
3
转载 探寻C++最快的读取文件的方案
在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式。相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据。还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急。难道C++真的低Pascal一等吗?答案是不言而喻的。一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法传说中很不错,
2011-11-29 09:03:57
2397
2
转载 深入剖析WTL框架(六)
WTL对框架窗口的封装ATL仅仅是封装了窗口函数和提供了消息映射。实际应用中,需要各种种类的窗口,比如,每个界面线程所对应的框架窗口。WTL正是在ATL基础上,为我们提供了框架窗口和其他各种窗口。所有的应用程序类型中,每个界面线程都有一个框架窗口(Frame)和一个视(View)。它们的概念和MFC中的一样。图示是WTL的窗口类的继承图。 WTL框架
2011-11-28 20:40:19
997
转载 深入剖析WTL框架(五)
ATL对窗口消息处理函数的封装 在本节开始部分谈到的封装窗口的两个难题,其中第一个问题是怎样解决将窗口函数的消息转发到HWND相对应的类的实例中的相应函数。下面我们来看一下,ATL采用的是什么办法来实现的。 我们知道每个Windows的窗口类都有一个窗口函数。 LRESULT WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
2011-11-28 20:39:05
685
转载 深入剖析WTL框架(四)
superclass superclass是一种生成新的窗口类的方法。它的中心思想是依靠现有的窗口类,克隆出另一个窗口类。被克隆的类可以是Windows预定义的窗口类,这些预定义的窗口类有按钮或下拉框控制等等。也可以是一般的类。克隆的窗口类使用被克隆的类(基类)的窗口消息处理函数。克隆类可以有自己的窗口消息处理函数,也可以使用基类的窗口处理函数。 需要注意的是,superclass
2011-11-28 20:38:00
754
转载 深入剖析WTL框架(三)
在上面的例子中,CDerived从CBase中派生出来。CDerived类通过定义一个WM_LBUTTONDOWN消息处理函数来改变CBase类代表的窗口的功能。这样,CBase类的消息映射定义了一个ProcessWindowMessage()函数,而CDerived类的消息映射也定义了一个ProcessWindowMessage()函数。那么,我们在窗口处理函数逻辑中怎样把这两个
2011-11-28 20:37:03
687
转载 深入剖析WTL框架(二)
ATL的消息处理宏消息映射的目的是实现ProcessWindowMessage()。ProcessWindowMessage()函数是窗口函数的关键逻辑。一共有三种消息处理宏,分别对应三类窗口消息——普通窗口消息(如WM_CREATE),命令消息(WM_COMMANS)和通知消息(WM_NOTIFY)。消息处理宏的目的是将消息和相应的处理函数(该窗口的成员函数)联系起来
2011-11-28 20:36:00
617
转载 深入剖析WTL框架(一)
WTL的基础是ATL。WTL的框架窗口是ATL窗口类的继承。因此,先介绍一下ATL对Windows窗口的封装。由第一部分介绍的Windows应用程序可以知道创建窗口和窗口工作的逻辑是: 1 注册一个窗口类 2 创建该类窗口 3 显示和激活该窗口 4 窗口的消息处理逻辑在窗口函数中。该函数在注册窗口类时指定。 从上面的逻辑可以看出,要封装窗口主要需解决怎样封装窗口消息处理机制
2011-11-28 20:34:31
1232
原创 TCP/IP协议与UDP/IP协议的区别
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:A --->B//主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;A <---B
2011-11-28 20:27:13
25106
2
原创 QQ界面技术(DirectUI)
DirectUI界面库 取名自微软的一个窗口类名“DirectUIHWND”,意为Paint on parent dc directly。即子窗口不以窗口句柄的形式创建,只是逻辑上的窗口,绘制在父窗口之上。微软的“DirectUI”技术广泛的应用于Window XP系统,Media Player播放器,即时通讯工具MSN Messager。传统的window界面,是用户窗口的层次排列,这种
2011-11-28 18:46:27
5922
转载 HOOK API 入门篇(六)
10)编译项目生成mousehook.dll。 2.创建钩子可执行程序 (1)用MFC的AppWizard(EXE)创建项目Mouse; (2)选择“基于对话应用”并按下“完成”键; (3)编辑对话框,删除其中原有的两个按钮,加入静态文本框和编辑框,用鼠标右键点击静态文本框,在弹出的菜单中选择“属性”,设置其标题为“鼠标所在的窗口标题”; (4)在Mous
2011-11-26 16:59:37
1127
转载 HOOK API入门篇(五)
(8)类Cmousehook的成员函数的具体实现: Cmousehook::Cmousehook() //类构造函数 { } Cmousehook::~Cmousehook() //类析构函数 { stophook(); } BOOL Cmousehook::starthook(HWND hWnd) //安装钩子并设定接收显示窗口句
2011-11-26 16:58:49
858
转载 HOOK API入门篇(四)
下面说说在VC6中全局共享数据的实现 在主文件中,用#pragma data_seg建立一个新的数据段并定义共享数据,其具体格式为: 仅定义一个数据段还不能达到共享数据的目的,还要告诉编译器该段的属性,有两种方法可以实现该目的(其效果是相同的),一种方法是在.DEF文件中加入如下语句:SETCTIONS shareddata READ WRITE SHARED
2011-11-26 16:58:00
938
转载 HOOK API入门篇(三)
3.卸载钩子 当不再使用钩子时,必须及时卸载。简单地调用函数 BOOL UnhookWindowsHookEx( HHOOK hhk)即可。 值得注意的是线程钩子和系统钩子的钩子函数的位置有很大的差别。线程钩子一般在当前线程或者当前线程派生的线程内,而系统钩子必须放在独立的动态链接库中,实现起来要麻烦一些。 在CChildView::OnPaint()添加如下代码:
2011-11-26 16:57:15
1055
转载 HOOK API入门篇(二)
8、WH_KEYBOARD Hook 在应用程序中,WH_KEYBOARD Hook用来监视WM_KEYDOWN and WM_KEYUP消息,这些消息通过GetMessage or PeekMessage function返回。可以使用这个Hook来监视输入到消息队列中的键盘消息。9、WH_KEYBOARD_LL Hook WH_KEYBOARD_LL Hook监视输入到线程消息
2011-11-26 16:56:21
1541
转载 HOOK API入门篇(一)
Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。这样,我们就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的输入,
2011-11-26 16:55:32
2383
转载 WinInet分析
WinInet(「Windows Internet」)API帮助程序员使用三个常见的Internet协议,这三个协议是:用于World Wide Web万维网的超文本传输协议(HTTP:Hypertext Transfer Protocol)、文件传输协议(FTP:File Transfer Protocol)和另一个称为Gopher的文件传输协议。WinInet函数的语法与常用的Win32
2011-11-23 21:06:44
1150
原创 线程、线程句柄、线程ID
什么是句柄:句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应
2011-11-21 13:36:43
3689
原创 WTL的两面性
WTL 具有两面性,确实是这样的。它没有MFC的界面(GUI)类库那样功能强大,但是能够生成很小的可执行文件。如果你象我一样使用MFC进行界面编程,你会觉得MFC提供的界面控件封装使用起来非常舒服,更不用说MFC内置的消息处理机制。当然,如果你也象我一样不希望自己的程序仅仅因为使用了MFC的框架就增加几百K的大小的话,WTL就是你的选择。当然,我们还要克服一些障碍: 1) ATL样式的模
2011-11-20 20:54:22
930
原创 MFC socket编程基础
CAsyncSocket 看类名就知道,它是一个异步非阻塞Socket封装类,CAsyncSocket::Create()有一个参数指明了你想要处理哪些Socket事件,你关心的事件被指定以后,这个Socket默认就被用作了异步方式。那么CAsyncSocket内部到底是如何将事件交给你的呢? CAsyncSocket的Create()函数,除了创建了一个S
2011-11-20 19:54:21
5586
2
转载 让程序只运行一个实例的四种方法
综述:让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定标志了,如果有说明已经有一个实例在运行了,则当前程序通知用户怎样怎样,然后程序退出,当然方法有这么多,各自也就有自己的优缺点了。方法一:我用得做多的方法是创建互斥体Mutex,使用Mutex代码比较简洁,但是此时不能取得已经启动的实例窗口局柄,因此无
2011-11-06 22:47:58
1257
1
原创 私有继承和聚合的分析比较
有时候程序员想利用现有的基类(即通过派生类使用现有的功能),但没有is-a关系,在这种情况下,私有继承就可以有用了。 使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员。这意味着基类方法将不会称为派生对象公有接口的一部分,但可以在派生类的成员函数中使用它们。使用私有继承,基类的公有方法将成为派生类的私有方法。简而言之,派生类不继承基类的接口。使用私有继承,类将继承实现。
2011-11-03 10:48:07
798
原创 CoCreateInstance用法
函数功能描述:用指定的类标识符创建一个Com对象,用指定的类标识符创建一个未初始化的对象。当在本机中只创建一个对象时,可以调用CoCreateInstance;在远程系统中创建一个对象时,可以调用CoCreateInstanceEx;创建多个同一CLSID的对象时, 可以参考 C
2011-10-06 14:35:54
5861
转载 通过COM技术实现Windows Shell编程
在Windows环境下,不论是使用Visual C++还是Delphi或是其他一些软件开发工具开发的应用程序,尽管存在着差别,但有一点是相同的:都是运行于Windows操作系统之下的。在程序开发过程中也经常要在自己的应用程序中加入一些Windows系统本身就有的功能,比如文件的拷
2011-10-04 00:42:37
652
转载 最新关于算法和数据结构的面试十六题 .
五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;......其他几只猴子也都是 这样分的。问:这堆桃至少有多
2011-09-25 22:23:09
1087
转载 十道海量数据处理面试题与十个方法大总结 .
第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件
2011-09-15 23:33:52
805
转载 面向对象设计的基础准则
对“多变”的部分进行封装尽量使用“组合”而少用“继承” 面向“接口”编程,而非面向“实现” 对象间的交互行为要尽可能“松耦合”设计 类要对“扩展”开放,对“修改”关闭 依赖“抽象”而不依赖具的类 只和朋友交谈(不要通过A类去获取B类并访问它) 等我的电话,别打给我 一
2011-09-15 22:14:43
583
原创 WINDOWS内核对象
WINDOWS内核对象 一.前言 Windows中有很多像进程对象、线程对象、文件对象等等这样的对象,我们称之为Windows内核对象。内核对象是系统地址空间中的一个内存块,由系统创建并维护。内核对象为内核所拥有,而不为进程所拥有,所以不同进程可以访问同一个内核对
2011-09-15 20:37:06
654
转载 windows时间函数
介绍 我们在衡量一个函数运行时间,或者判断一个算法的时间效率,或者在程序中我们需要一个定时器,定时执行一个特定的操作,比如在多媒体中,比如在游戏中等,都会用到时间函数。还比如我们通过记录函数或者算法开始和截至的时间,然后利用两者之差得出函数或者算法的运行时间。编
2011-09-15 12:53:00
722
原创 如何阅读一本好书
《如何阅读一本书》说的是“阅读好书的艺术”,这种阅读的目的是为了对某类问题想得比以前更清楚,是为了提高自己的理解力而图书,而非仅仅获得资讯或是消遣。(只有少数经典之作才需要用此方法) 一、一个好的阅读方式最重要的是要做到:主动阅读。作者认为真正地阅读必须是,充满主动的
2011-09-14 15:44:57
829
转载 如何高效地管理时间
如何高效地管理时间 现代人的生活节奏越来越快,压力也越来越大。经常会听到白领人士抱怨一个星期有三到四天的时间在加班,没有时间锻炼身体,身体经常处在一种透支的状态;也有人抱怨,虽然现在的职位已经到了中层管理层,但是没有安全感,因为知识的更新速度太快。其实大家都感觉到时间是个
2011-09-13 21:21:35
445
转载 PeekMessage与GetMessage .
BOOL PeekMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg);当消
2011-09-13 21:04:24
733
COM本质论.pdf
2011-12-03
windows网络编程(第二版)
2011-12-03
C++设计新思维(泛型编程与设计模式之应用)
2011-12-03
高级TCP/IP编程
2011-12-03
大规模C++程序设计
2011-12-03
ATL 开发指南
2011-11-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人