随笔分类 -  笔记

摘要:题: 给定一个序列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 泉子 阅读(2292) 评论(0) 推荐(0)
摘要:一次跑偏之旅! 对于一个惯用C++的人来说,使用Python这种语言的一大障碍就是许多集合类型的操作效率并不如传统的经典数据结构那样直观可见,以及许多实际上涉及到内存分配、对象复制之类的耗时操作被隐藏在看似简单的接口之中。加上Python的文档只强调如何使用,大部分时候都对实现的细节和效率语焉不详。 阅读全文
posted @ 2016-04-22 11:31 泉子 阅读(1416) 评论(0) 推荐(0)
摘要:环境:VS2008我们都知道,链接器在生成可执行程序时,会忽略那些没有用到的符号。但是昨天遇到一个链接问题,看起来与这条基本策略并不相符。首先看一个静态链接库的结构: lib | |---------------------| ... 阅读全文
posted @ 2015-04-24 18:07 泉子 阅读(821) 评论(0) 推荐(0)
摘要:Restart Manager(以下简称RM)可以减少或避免安装或更新程序所需要的系统重启次数。安装(或更新)过程中需要重启的主要原因是需要更新的某些文件当前正被一些其它程序或服务所使用。RM允许除关键系统服务(Critical System Services)之外的所有程序(或服务)关闭和重启。这... 阅读全文
posted @ 2014-08-22 10:21 泉子 阅读(5545) 评论(0) 推荐(0)
摘要:日前遇到一件事:WebBrowser中的网页会用到一个“大众”ActiveX控件,为了保证兼容性以及和其它程序互不干扰,我们采用这样一种方案:1. 我们的软件会自带该控件;2. 如果系统中已注册有该控件的话,我们不用会我们的控件进行覆盖注册;3. 不管怎么样,我们的程序都只会加载我们自带的控件。要做到第3条,显然要HOOK控件位置有关的注册表项。因为之前在做播放器时使用过同样的手段来处理媒体解码器,所以其实并没有什么难度。但事实上却差点阴沟里翻船。我一定确定以及肯定的是,我需要HOOK的只有几个API:RegQueryValue、RegQueryValueEx、RegGetValue。用ZwQ 阅读全文
posted @ 2014-03-29 22:46 泉子 阅读(1635) 评论(0) 推荐(0)
摘要:之前结合网上的一些代码及ATL::CImage的实现,自己写了一个将HBITMAP以PNG格式保存到文件到函数。见上一篇日记。不过,后来换了个环境又发现了问题,昨天和今天上午把《Windows程序设计》中位图处理相关的部分又粗略瞄了一下,然后把之前的函数改了一下,现在在新环境下也可以了,当然,这个函数也并不十分严谨,但是考虑到位图格式的历史渊源和复杂性,测试起来目测会相当麻烦,还是不要深究的好。而且,现在基本上都是32位图像,老的格式中很多东西都已无用武之地,所以且将就用着。首先,幸好需要处理的只是带Alpha通道的图像,而Alpha通道只有ARGB有,ARGB又不需要颜色表(每个像素值都是真 阅读全文
posted @ 2014-03-08 14:52 泉子 阅读(3124) 评论(1) 推荐(0)
摘要:带Alpha通道的图像(ARBG)在通过GDIPlus::Bitmap::FromHBITMAP等转为GDI+位图,再存储时,透明区域会变成纯黑(也有可能是纯白?)。网上找了两段保持透明的实现代码,列在下边,经测试,第一段无效,第二段有效,这两段代码正好可以对比说明:FromHBITMAP在拷贝图像数据时,原图中的Alpha数据确实没有Copy过来,而并非是未设置图像属性的问题。第一段的思路是:直接用FromHBITMAP创建一个GDI+位图,新建另一个带PixelFormat32bppARGB标识的位图,再从前者拷贝数据到后者;第二段的思路是:获取BITMAP数据,新建一个带PixelFor 阅读全文
posted @ 2014-03-03 20:14 泉子 阅读(4799) 评论(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 泉子 阅读(4169) 评论(0) 推荐(1)
摘要:半年的时间,办公室里的人已经走马灯似的换了一个又一个,除了两个领导和几个老资格的员工外,其它的座位似乎都已经至少换了一次主人了。 这是我心中难以思议的景象,在我的认知里,我们这个行业是世界上最依赖于无形资产的行业之一,这些无形资产,就是程序员脑袋里装着的那些有关公司产品的各种知识以及在工作过程中所积累的专业技能。 一个更加显然的事实则是,多半的企业,并没有将这些无形资产固化沉淀在公司的能力。人来人往,除了产品的源代码增加或变动了一些,公司依然还是那个公司,并没有任何变化。就如同学校一般,学生一茬一茬的换,而校园,除了今天打破块玻璃明天换了个广播喇叭之类的,不会有任何改变。 我已经在三家半大不小 阅读全文
posted @ 2011-05-05 08:51 泉子 阅读(588) 评论(5) 推荐(0)
摘要:VB一般可以生成两种特殊的DLL,一个是ActiveX DLL和ActiveX Control(*.ocx)。这两种DLL都是VB支持的标准类型,在VB自身的例子中有,你可以参考。更详细的介绍可以参考我写的《Visual Basic编程晋级:ActiveX控件》(http://china.zealsoft.com/articles/vbactivex/)一书的“第十六章 其他ActiveX部件 ”。 VB中创建的DLL只是COM组件,无法作为输出函数的DLL,其实这只是个错误的说法。其实MS非常狡猾,如果你是个VB疯狂发烧友的话,应该早就狂试出这种可以创建输出函数的DLL的方法。 VB编译文. 阅读全文
posted @ 2011-04-18 09:42 泉子 阅读(2627) 评论(0) 推荐(0)
摘要:VisualStudio6.0编译PWLib总结1. 我的环境Visual Studio 6.0Visual Studio.NET 2010Microsoft Platform SDK for Windows Server 2003 R2Microsoft SDKsMicrosoft DirectX 9.0 SDKMinGW2. 注意尝试编译前,请务必阅读http://www.cnblogs.com/yedaoq/archive/2011/02/22/1960866.html。本文只涉及部分我在我的编译环境中遇到的,并且官方编译说明中没有包含的问题。3. 项目变动、编译顺序在官方文档中,提到的 阅读全文
posted @ 2011-02-22 15:11 泉子 阅读(1854) 评论(0) 推荐(0)
摘要:作为英语小白,金山词霸是我电脑的必备软件。用金山词霸的历史几乎与用电脑的历史是相同的。之前好多年用的都是金山词霸2005,后来想起作为一个IT业人士,总用盗版似乎不够仗义。我一直比较尊敬金山,因为我觉得它是中国最早冒尖的技术型企业,办公软件WPS、词霸,快译等等在国内只此一家,毒霸等安全产品也在市场上占有三分地盘,另外还有一些诸如打字通之类的软件。应该说,在面向所有终端用户的通用软件领域,金山是产品比较丰富比较有技术含量的。或许金山这个名字也暗示着在求伯君眼中,互联网是一座巨大的金山。然而,显然这座金山并没能成为金山的金山。若论原因,或许盗版当为罪魁祸首。以金山词霸的装机量和零售价,如果大家都 阅读全文
posted @ 2011-01-13 17:13 泉子 阅读(2246) 评论(2) 推荐(0)
摘要:最近接触到这个函数,因此了解了一下,总结一下列在这。我了解它的出发点是如何通过它向活动窗口输入字符,这是很多程序都有的功能(我猜Visual Assist X就用了这个功能)。根据MSDN,此函数模拟按键操作,将一些消息插入键盘或鼠标的输入流中,Windows对它进行处理,生成相应的WM_KEYDOWN或WM_KEYUP事件,这些事件与普通键盘输入一起进入应用程序的消息循环,它们不仅可以转换为WM_CHAR消息,还可以转换为其它(诸如加速键)等消息。使用它来发送字符消息,并没有看起来那么简单。这有两个需要考虑的问题:1. 输入法的转换。例如需要向活动窗口发送一些英文字符,我们可能想象这样来实现 阅读全文
posted @ 2010-12-30 17:05 泉子 阅读(28014) 评论(2) 推荐(3)
摘要:今天去看了看传说中的华为招聘,结果没呆多久,做了几道笔试题和一道上机题,然后就回来了。没什么大意思,不过这道上机题还是个亮点,哈哈。 题目看起来是很简单的,就是给一个字符串,要求将其中的空格字符替换为逗号。 而且程序模板都已经定好,main的内容写好了,转换函数的原型也定义好了。实在是非常简单,简单得让我有点纳闷。很快写好程序: 运行一下,问题出来了,程序会在这行代码出现异常: memcpy(*pOutputString, pInputString, lInputStringLen); 异常内容是Access violation访问空指针,查看一下各变量值。发现问题是*pOutputStrin 阅读全文
posted @ 2010-12-12 23:07 泉子 阅读(1667) 评论(1) 推荐(0)
摘要:在上周完成的一项工作中,发现了一个当时有点困惑的问题: 当编写供VB调用的C++ DLL时,必须使用def文件来定义导出符号,否则VB程序将链接失败。我们都知道使用def文件是为了避免C++编译器对函数进行重命名,另一个达到相同效果的替代方式是使用extern "C"标识符。若DLL由C++、C#、Java等调用,后者可以工作得很好;然而VB不可以,即便使用了extern "C"来标识导出函数,... 阅读全文
posted @ 2010-11-17 14:19 泉子 阅读(2135) 评论(0) 推荐(0)
摘要:1. DLL的接口必须在.def中声明,否则VB无法调用。根据已有资料,.def文件完成的作用是与extern "C"相同,也就是说如果在接口定义的头文件中使用了extern "C",则不需要在.def中声明。在实际中,供C++、C#和Java调用的DLL都只需要使用extern "C"来声明接口即可,VB应属一个特例,具体原因尚不清楚。 2. VB声明原型时,对值类型参数时,传入参数需用ByV... 阅读全文
posted @ 2010-11-16 22:30 泉子 阅读(2449) 评论(0) 推荐(0)
摘要:注:此文在互动出版网的译文基础上修正了少数翻译问题,额,鉴于我的E文水平,也不排除改动后译得更烂的可能性。原版权信息如下: 组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm) E-mail:ouyang@china-pub.com ... 阅读全文
posted @ 2010-10-11 15:36 泉子 阅读(825) 评论(0) 推荐(0)
摘要:1. 前言.NET framework为计算机配置,应用程序配置和安全等信息定义了一组标准配置文件,这些配置文件的内存映射及存取由Configuration程序集支持。对于某些大型应用系统及专业领域软件而言,配置信息的编制和维护是一件复杂的事情。前阵子因为工作关系,借助Configuration程序集,设计了一个简单的定义配置信息结构的模型(简单得不能称为框架)和维护工具。虽然由于换工作而没有用上... 阅读全文
posted @ 2010-09-20 15:06 泉子 阅读(800) 评论(1) 推荐(0)
摘要:1. 背景首先,我们的产品是一个桌面程序,目前配置文件使用的是ini文件格式。在产品维护过程中,随着配置项不断扩充,配置文件逐渐地变得宠大和混乱,加之ini文件的层次性和可读性不够强,致使配置文件的可维护性越来越差。客户的增多和配置项的臃肿,让发布程序时维护初始配置的工作变得难以忍受。另一方面,在程序中,软件配置信息映射为一个静态类,每个配置项作为一个静态成员。这相当于一个一维结构,其层次甚至还不如ini文件的结构,好歹ini文件还分段了。写代码时,就算有智能感知,要从下拉列表中找到自己需要的那个配置项也是一项考验眼力和键盘上下键质量的工作。更糟糕的是,假如某个开发人员需要增加一个配置项,那么 阅读全文
posted @ 2010-09-18 13:15 泉子 阅读(1644) 评论(0) 推荐(0)
摘要:原文链接:http://blog.csdn.net/gogor/archive/2010/02/24/5323599.aspx 我们知道,计算机只能识别诸如0101这样的二进制数,于是人们必须以二进制数据与计算机进行交互,或者先将人类使用的字符按一定规则转换为二进制数。 那什么是字符呢?在计算机领域,我们把诸如文字、标点符号、图形符号、数字等统称为字符。而由字符组成的集合则成为字符集,字符集由于... 阅读全文
posted @ 2010-09-14 13:31 泉子 阅读(1953) 评论(0) 推荐(1)