摘要: 题: 给定一个序列S以及它的一个子序列T,求S的所有包含T的子序列。例: S = [1, 2, 3, 2, 4] T = [1, 2, 4] 则S的所有包含T的子序列为: [1, 2, 3, 2, 4] [1, 2, 3, 4] [1, 2, 2, 4] [1, 2, 4] 解: 首先可以拆解为两个 阅读全文
posted @ 2016-09-05 01:04 泉子 阅读(2244) 评论(0) 推荐(0) 编辑
摘要: 一次跑偏之旅! 对于一个惯用C++的人来说,使用Python这种语言的一大障碍就是许多集合类型的操作效率并不如传统的经典数据结构那样直观可见,以及许多实际上涉及到内存分配、对象复制之类的耗时操作被隐藏在看似简单的接口之中。加上Python的文档只强调如何使用,大部分时候都对实现的细节和效率语焉不详。 阅读全文
posted @ 2016-04-22 11:31 泉子 阅读(1394) 评论(0) 推荐(0) 编辑
摘要: 环境:VS2008我们都知道,链接器在生成可执行程序时,会忽略那些没有用到的符号。但是昨天遇到一个链接问题,看起来与这条基本策略并不相符。首先看一个静态链接库的结构: lib | |---------------------| ... 阅读全文
posted @ 2015-04-24 18:07 泉子 阅读(771) 评论(0) 推荐(0) 编辑
摘要: Restart Manager(以下简称RM)可以减少或避免安装或更新程序所需要的系统重启次数。安装(或更新)过程中需要重启的主要原因是需要更新的某些文件当前正被一些其它程序或服务所使用。RM允许除关键系统服务(Critical System Services)之外的所有程序(或服务)关闭和重启。这... 阅读全文
posted @ 2014-08-22 10:21 泉子 阅读(5093) 评论(0) 推荐(0) 编辑
摘要: 日前遇到一件事:WebBrowser中的网页会用到一个“大众”ActiveX控件,为了保证兼容性以及和其它程序互不干扰,我们采用这样一种方案:1. 我们的软件会自带该控件;2. 如果系统中已注册有该控件的话,我们不用会我们的控件进行覆盖注册;3. 不管怎么样,我们的程序都只会加载我们自带的控件。要做到第3条,显然要HOOK控件位置有关的注册表项。因为之前在做播放器时使用过同样的手段来处理媒体解码器,所以其实并没有什么难度。但事实上却差点阴沟里翻船。我一定确定以及肯定的是,我需要HOOK的只有几个API:RegQueryValue、RegQueryValueEx、RegGetValue。用ZwQ 阅读全文
posted @ 2014-03-29 22:46 泉子 阅读(1552) 评论(0) 推荐(0) 编辑
摘要: 之前结合网上的一些代码及ATL::CImage的实现,自己写了一个将HBITMAP以PNG格式保存到文件到函数。见上一篇日记。不过,后来换了个环境又发现了问题,昨天和今天上午把《Windows程序设计》中位图处理相关的部分又粗略瞄了一下,然后把之前的函数改了一下,现在在新环境下也可以了,当然,这个函数也并不十分严谨,但是考虑到位图格式的历史渊源和复杂性,测试起来目测会相当麻烦,还是不要深究的好。而且,现在基本上都是32位图像,老的格式中很多东西都已无用武之地,所以且将就用着。首先,幸好需要处理的只是带Alpha通道的图像,而Alpha通道只有ARGB有,ARGB又不需要颜色表(每个像素值都是真 阅读全文
posted @ 2014-03-08 14:52 泉子 阅读(3041) 评论(1) 推荐(0) 编辑
摘要: 带Alpha通道的图像(ARBG)在通过GDIPlus::Bitmap::FromHBITMAP等转为GDI+位图,再存储时,透明区域会变成纯黑(也有可能是纯白?)。网上找了两段保持透明的实现代码,列在下边,经测试,第一段无效,第二段有效,这两段代码正好可以对比说明:FromHBITMAP在拷贝图像数据时,原图中的Alpha数据确实没有Copy过来,而并非是未设置图像属性的问题。第一段的思路是:直接用FromHBITMAP创建一个GDI+位图,新建另一个带PixelFormat32bppARGB标识的位图,再从前者拷贝数据到后者;第二段的思路是:获取BITMAP数据,新建一个带PixelFor 阅读全文
posted @ 2014-03-03 20:14 泉子 阅读(4593) 评论(3) 推荐(0) 编辑
摘要: DestroyWindow函数DestroyWindow销毁窗口的正牌函数。DestroyWindows的MSDN说明如下:The DestroyWindow function destroys the specified window. The function sends WM_DESTROY and WM_NCDESTROY messages to the window to deactivate it and remove the keyboard focus from it. The function also destroys the window's menu, flus 阅读全文
posted @ 2012-02-07 16:08 泉子 阅读(4094) 评论(0) 推荐(1) 编辑
摘要: 正在写的一段程序,需要将指针存入一个数组。出于简洁的考虑,不想用智能指针——若要使用智能指针,则必须再给智能指针加上一层包装,以屏蔽掉穿透性的取址操作符(见ATL::CAdapt)。因此,析构元素的操作就不得不自已动手了——erase前,得先对要删除的元素手动delete。std::for_each(objects.begin(), objects.end(), …);在清空数组时,需要对每个元素调用delete,很自然写出for_each时,问题来了,第三个参数传什么?stl提供了类似C#委托的函数包装对象,可以把全局delete关键词封装为函数对象吗?为此,特意百度了一下。结果还真有,像下 阅读全文
posted @ 2011-08-22 22:43 泉子 阅读(766) 评论(0) 推荐(0) 编辑
摘要: 上周四去了一家单位面试,据同学说,这家单位技术很牛,班子都某大学出来的,他还要我提前预习一下数据结构和算法,否则肯定被鄙视。结果过去后,做完笔试题,就发现自己还真真的要被鄙视了。题并不难在算法和数据结构,而是五花八门各个领域的题都有,还带很多关键字。做完后发现实在是有点惨不忍睹。同去的一海龟博士同学也有同感,休息的时候还和我感叹了一番。 不过本文想说的是其中一道编程题。我虽然略有眉目,却没能即时做... 阅读全文
posted @ 2011-05-24 09:02 泉子 阅读(1266) 评论(1) 推荐(0) 编辑