摘要: 问题:如何给10^7个数据量的磁盘文件排序(《编程珠玑》第一章)下面的问题描述及相关文字都参考于CSDN中JULY的博客,在此对JULY表示感谢。JULY的博客地址如下:http://blog.csdn.net/v_JULY_v/article/details/64519901、问题描述:输入:一个最多含有n个不重复的正整数(也就是说可能含有少于n个不重复正整数)的文件,其中每个数都小于等于n,且n=10^7。输出:得到按从小到大升序排列的包含所有输入的整数的列表。条件:最多有大约1MB的内存空间可用,但磁盘空间足够。且要求运行时间在5分钟以下,10秒为最佳结果。2、算法描述: 在编程珠玑中, 阅读全文
posted @ 2011-07-02 11:52 harryshayne 阅读(9243) 评论(2) 推荐(1) 编辑
摘要: 任务定义:同一程序的多个实例共享一份数据,一个实例对数据的修改会影响到其他实例,具体到窗口中就是,一个实例中的数据显示变化引起其他各个实例中数据显示的更新。整体分析:编写一个dll,其中包含被同一程序的不同实例共享的内存数据;类似于document-view模式,document对应dll中的共享内存数据,view对应各个实例的显示窗口;由此可以实现一个实例对共享数据的修改,可以影响到其他实例,每次修改后当前实例向所有其他实例发送一个消息,使得各个实例窗口数据同步更新。关键代码分析:1、共享数据段//创建名为shared的共享数据段#pragmadata_seg("shared&qu 阅读全文
posted @ 2011-04-19 17:46 harryshayne 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 任务定义:进程DIPS和进程Explorer,前者使用窗口HOOK将DIPSLib.dll注入到后者的进程地址空间中,于是两个进程中都有同一个DIPSLib.dll,因此可以让两个dll共享一些数据,从而方便以DIPS作为客户端,以注入到Explorer的DIPSLib.dll为服务器端进行通信,完成对Explorer的一些操作。具体分析:DIPS中的函数:_tWinMain();Dlg_Proc();Dlg_OnCommand();Dlg_OnInitDialog();DIPSLib中的函数:DllMain();SetDIPSHook();GetMsgProc();Dlg_OnClose() 阅读全文
posted @ 2011-04-16 22:43 harryshayne 阅读(738) 评论(0) 推荐(1) 编辑