随笔分类 -  程序设计

Design a high performance cache for multi-threaded environment
摘要:如何设计一个支持高并发的高性能缓存库不 考虑并发情况下的缓存的设计大家应该都比较清楚,基本上就是用map/hashmap存储键值,然后用双向链表记录一个LRU来用于缓存的清理。这篇文章 应该是讲得很清楚http://timday.bitbucket.org/lru.html。但是考虑到高并发的情况,... 阅读全文

posted @ 2014-04-02 18:13 absolute 阅读(501) 评论(0) 推荐(1)

使用Python和vim插件结合让Vim支持多文件夹比较
摘要:在Vim的官方网站上有一个支持2个文件夹比较的插件DirDiff, 链接:http://www.vim.org/scripts/script.php?script_id=102. 不过仅支持2个文件夹, 我对齐进行研究并改进后让其支持多个文件夹的文件进行比较.DirDiff插件的基本原理就是先生成要比较的几个文件夹中的所有文件列表文件, 该文件的每一行对应于一个文件以及它所在的文件夹. 启用文件夹比较模式时, 会载入这个列表文件, 当选中一行时会解析出文件路径, 然后以diff模式分别打开这个文件在不同文件夹下对应的文件进行比较.这里为了方便, 我就使用Python来生成这个特定格式的文件列表 阅读全文

posted @ 2012-02-07 22:52 absolute 阅读(1900) 评论(0) 推荐(1)

Windows安全机制
摘要:最近研究了点关于Windows安全机制以及COM的 Reg-Free方案。研究的原因是试图构造一个安全的第三方插件的沙箱环境,而第三方插件是实现为COM组件的,因此又涉及到在受限环境下的COM调用的问题,为了解决受限环境的COM注册问题引入了Reg-Free的方案。整个插件环境是和主程序隔离的,每个插件都使用一个独立进程,插件的宿主进程是一个进程外的COM组件,主进程启动宿主进程后,有宿主进程负责创建相应的插件对象,插件被创建起来后就在宿主进程中运行。为了保证插件不影响用户的系统,需要在宿主进程创建插件对象之前将宿主进程放进一个受限的沙箱环境中。Windows的安全模型主要由2个部分组成, 一 阅读全文

posted @ 2011-05-29 00:53 absolute 阅读(3198) 评论(0) 推荐(0)

使用某个文件夹下的所有文件去替换另一个文件夹下及其子文件夹下存在的同名文件(Python实现)
摘要:值此新年即将到来之际,在这献上今年最后一篇文章.产生这个需求是在项目的一次图标替换上,当时给了我一堆新图标要替换原来的老图标,可是原来的老图标分布在某个文件夹下的各个子文件夹下面,而新图标全是在同一个目录下的. 手动替换的话,只能是搜索文件名后替换,但是文件很多太麻烦了,没找到现成的工具可以实现我的需求.于是有了下面这个脚本,正好熟悉下刚刚学会的Python. 如果有人知道有什么工具可以完成的话不妨留言告知:).下面脚本实现的就是在dest目录及其子目录下面,寻找和src目录下的文件对应的同名文件,如果找到唯一的一个同名文件,用src里面的新文件替换dest里面对应的老文件. 如果没找到同名或 阅读全文

posted @ 2010-12-31 19:48 absolute 阅读(5842) 评论(0) 推荐(1)

用python实现一个按需生成用于vim跳转的tags文件的小程序
摘要:初学python,找个有用的来练手。选定了一个我早就想做的让vim按需生成tags跳转文件的小程序。vim的tags用于跳转的好处自是不用多说,但是如何生成tags确实困扰我的一大问题,用VS的都知道,VS会为每个解决方案生成一个ncb文件用于自动提示,相当于tags的功能,这个ncb文件很智能,它会根据你所包含的头文件来自动处理。这样,你只需包含一个头文件,就可以出现该头文件相关的自动提示了。但是vim就没有像VS这么智能了,目前我的做法就是在某个目录下调用ctags,然后加上递归参数,这样的缺点就是会生成一个很大的tags文件,里面很多都是项目根本没用到的头文件的tags。为了改善这种情况 阅读全文

posted @ 2010-12-04 22:57 absolute 阅读(1950) 评论(0) 推荐(0)

COM组件弱引用的简单实现(C++)
摘要:COM组件弱引用的简单实现The simple implementation of the weak reference of the COM object.说明:我们知道boost用shared_ptr,weak_ptr实现了指针的智能化管理,使用它们可以防止C++常见的内存泄露问题。COM组件的管理和指针类似却又不同,COM组件同样需要在使用的时候调用AddRef和Release来管理组件的引... 阅读全文

posted @ 2010-08-23 19:31 absolute 阅读(3629) 评论(2) 推荐(0)

[总结]最原始的COM组件调用过程(不使用注册表信息)
摘要:最近因为项目的关系开始研究COM组件了,以前都认为COM过时了,所以也没怎么接触. 现在好好补补课了.一般调用COM都是通过注册表找到它的位置, 然后调用COM库的标准函数. 这些封装无疑使得我这个初学者无法了解里面到底做了什么, 而且注册表和COM库标准函数都是windows提供的, 但是COM这个思想是可以在Linux下实现的. 只要知道它的实现原理就行了. 因此我就试着用最基本的调用方法来使... 阅读全文

posted @ 2010-07-28 11:40 absolute 阅读(2368) 评论(0) 推荐(0)

使用C#批量转换文本文件编码为UTF8
摘要:现在很多地方都要求程序源码用UTF8格式,因此需要将原来的源码转换一下,手动转显然太累了。发现c#还真是简单啊,几行代码就搞定了。 试了一下GBK转换成UTF8编码格式,没什么问题了。 阅读全文

posted @ 2010-07-04 09:28 absolute 阅读(4262) 评论(0) 推荐(1)

找工过程中碰到的笔试面试题整理(4)
摘要:继续我的找工笔试面试题整理。1.加法实现n*n,要求时间复杂度O(logN)要求不能用乘法,不考虑溢出问题,n为正整数。这个是面试的时候问到的,我没有想到较好的解决方案。只想到下面方法,思路就是每次加1倍,最后再判断不足一倍的部分。不知是否合乎要求。有人有好方法的不妨回复一下。:)代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->int mult_by_add(int n){ int sum=n; int totaladd =1; ... 阅读全文

posted @ 2010-05-26 16:44 absolute 阅读(2493) 评论(13) 推荐(4)

找工过程中碰到的笔试面试题整理(3)
摘要:继续我的找工笔试面试题整理。1. 快排的两种写法以前一直用第一种方式进行快排的,笔试中出现了第二种头尾指针的快排。第一种:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->template<class T,class TCOMP>void quicksort(T a[],int start,int end,TCOMP cmpf=NULL){ int i; if(start>=end) return; int mid... 阅读全文

posted @ 2010-05-24 10:23 absolute 阅读(3068) 评论(2) 推荐(4)

找工过程中碰到的笔试面试题整理(2)
摘要:继续我的找工笔试面试题整理。1.获取字符串最长数字串这个是baidu的一道笔试题,虽然简单,但是要当场写对还是要仔细点。代码2.完全二叉树的节点添加这个也是常出现的题目,完全二叉树是笔试面试经常碰到的,最好要熟悉的它的各种操作。代码3.链表反序链表是又一个重点,熟悉一下它的各种操作吧代码 阅读全文

posted @ 2010-05-21 10:27 absolute 阅读(664) 评论(0) 推荐(1)

找工过程中碰到的笔试面试题整理(1)
摘要:上述算法过后,前面nums个数就是所要求的了,注意这个只要求找到前nums个最大的,并不要求排序。再来一个:求循环小数的循环体,给两个整数a,b,求a/b的循环小数的循环体字符串,如果不是循环小数则输出空串。思路:每次将商追加到结果字符串,记录余数,当余数重复出现时,则从重复的位置开始到最后这一段的商字符串即为循环体。代码测试例子:get_circle_digits(70,11);get_circ... 阅读全文

posted @ 2010-05-20 11:13 absolute 阅读(645) 评论(0) 推荐(4)

MCI处理2G以上wav文件会有问题
摘要:这个问题在我测试查询大于2G的wav文件长度时遇到的,后来在google讨论组进行了讨论,初步可以确定这是MCI库函数中的BUG,在处理2G以上wav文件会出现,其他情况未验证。bug情况:用mciSendCommand函数查询文件长度或查询正在播放的位置会返回错误的结果。bug重现代码: MCI_SET_PARMS mciSetParms; mciSetParms.dwTimeFormat = ... 阅读全文

posted @ 2010-01-21 15:27 absolute 阅读(1311) 评论(2) 推荐(2)

导航