- 博客(38)
- 资源 (1)
- 收藏
- 关注
原创 tdd开发学习
最近看了几本tdd方面的书,有《test driven development for embedded c》、《the art of unit testing in .net》,前面一本号称c++程序员也能学到很多,但我既是c++程序员,又不是嵌入式开发者,所以看了一半还是放弃了。第二本刚看了不久,书中介绍tdd对代码依赖性、代码质量都有益处。解决测试时的依赖性有两个组件,一个是mock,一
2014-02-06 16:07:03
641
翻译 what every programmer should know about memory
这篇文章还是很深的,很多看不懂,可能要以后回头再看了。根据这篇文章描述,现代cpu架构中,最重要的是指令预取和缓存的使用。如果cpu在读取连续地址的数据时,能很好的利用指令预取。有一个矩阵乘法的例子。最初的代码是:for (i = 0; i for (j = 0; j for (k = 0; k res[i
2013-07-17 20:55:22
745
原创 shell执行脚本
#!/bin/bashif [ ! -f $3 ]then echo '$$$FAIL$$$ sql file not found' exit 1fiexport ORACLE_SID=futures8;sqlplus $1/$2 start $3exit;EOF#search error message in the log
2013-06-09 11:19:51
501
原创 开发小记
2013-1-4 解决内存泄漏问题,方法是结合gflag和umdh工具。2013-1-8 解决c++av异常,方法是使用gflags, 命令行为gflags /p /enable XXX.exe /full,然后调试的时候在指针错误的时候就会停下来。2013-1-9 解决vc6 编译时的fatal error C1001 internal error问题,方法是调整头文
2013-01-10 15:56:41
396
原创 codejam old magician 问题
原文:https://code.google.com/codejam/contest/32004/dashboard#s=p0A magician does the following magic trick. He puts W white balls and B black balls in his hat and asks someone from the audience,
2012-07-31 21:43:52
627
原创 lock free 算法学习笔记
为了提高并发访问的性能,很多人提出了lock free算法。它的原理是避免了由于锁导致线程进入等待状态造成的开销,而且避免了锁导致的死锁,signal等问题。但是很多人指出lock free 算法在高度竞争的情况下效果不好。我没有测试过,目前现成的库有libcds。 lock free使用cas, faa等原子指令实现,有时也使用cas2指令,主要是为了解决aba问题。(aba问题的描述见
2012-06-05 19:43:56
1801
原创 用python查看linux进程路径
linux下直接用ps等命令看不到进程的路径,为此写了一段代码查看路径。其实可以用psutil来做,可惜我做完才发现。import subprocessimport sysimport osdef getprocpath(procid): os.chdir('/proc/' + procid) return os.readlink('exe'
2012-05-07 15:49:27
2108
原创 vc6调试缓冲区溢出的笨办法
从vc7以后对调试缓冲区溢出有了很多办法,vc6貌似没有直接的办法,要么用第三方工具。下面有一个土一点的办法:1. 一般函数调用前都有push ebp; move ebp, esp;这样的语句,这两条语句是为了保存返回地址。可以在move ebp, esp之前查看ebp的值,然后在内存窗口的地址中输入ebp的值,不要关闭内存窗口。2. 单步前进,同时关注内存窗口。如果发现值变了,(这个
2012-01-10 17:27:39
1027
原创 《大规模c++程序设计》笔记
头文件卫哨每个头文件一般会包含卫哨,即下面的定义: //foo.h#ifndef FOO_H#define FOO_H#endif另外还有一种卫哨称为包含卫哨,如://foo.h#ifndef FOO_H#define FOO_H#ifndef TOOLS_H#include "tools.h"#endif#e
2011-11-24 15:27:30
526
原创 系统设计学习体会
在用例中,一般要编写主流程和替代流程,也有人分为主流程、替代流程、例外流程,这里的替代流程相当于一种支路,最终还会回到主流程,例外流程则往往导致流程结束。在顺序图里面,发现很多设计文档不会把替代流程画出来,搞出很多if-else,但判断过程都会画出来。动作的发起者用户往往
2011-09-14 15:50:57
682
原创 工具的使用
正则表达式生成器 the regulatorsvn在分支间复制修改 http://www.subversion.org.cn/svnbook/1.4/svn.branchmerge.copychanges.html
2011-09-07 21:09:35
333
原创 ironpython2.6解析xml注意事项
1. 要设置好默认编码import sysreload(sys)sys.setdefaultencoding('cp936')其中reload(sys)是必须的,因为在启动后python会把setdefaultencoding去掉2.m
2011-08-25 15:49:20
736
原创 网络编程学习笔记
unix 网络编程第一卷tcp的特性:segment size: 一次发送到最大字节数window size:用于流量控制,随着send减小,随着read增大可靠性:每一个包都要求确认顺序性:每个包都有顺序号,接收方进行排序,重复包会丢弃rtt: tcp实
2011-08-18 14:44:52
349
转载 linux多线程编程精要
原文在http://blog.youkuaiyun.com/solstice/article/details/6181488创建线程:不要在库函数里悄悄地创建线程,这会给fork带来麻烦不要在main之前创建线程,不要在构造函数里创建线程不要根据连接数和请求来创建线程,这会导致scalabl
2011-07-28 16:19:51
527
原创 algorithm design manual 2nd学习笔记
algorithm design manual 2nd图相关算法:遍历算法,包括宽度优先和深度优先,两种算法都包括处理结点和处理边。宽度优先算法应用:宽度优先算法保证离root近的先找到,所以可以用来实现无权图的找路。连接部分,用于帮助找到最大的连接部分。双色问题,可以帮助判断是
2011-07-19 17:28:36
1628
原创 linux编程学习
进程:forkexec函数族,注意调用后是替换而不是生成新的进程 信号:signalraisekill传统的signal是oneshot还是其它并不确定,posix signal可以用flag来设置,posix signal另一个地方是可以得到来源进程信息poll:poll和select类似,但不受文件描述符的限制epoll在2.6内核作了很大优
2011-06-02 16:17:00
494
原创 堆栈输出函数
<br />public static void LogStack()<br /> {<br /> StackTrace trace = new StackTrace();<br /> Debug.WriteLine("Stack begin");<br /> foreach (StackFrame frame in trace.GetFrames())<br /> {<br />
2011-05-24 14:07:00
578
原创 开发经验总结
<br />SocketIO:new char[0]也会泄漏,在通信时发生的错误最好由一个长时间运行的现场专门处理,需要线程管理<br />POS:注重可支持性,多写日志,最好可以运行期动态设置日志级别<br />windbg: htrace, 子进程调用时中断
2011-04-20 09:49:00
369
原创 调试中的backtrace工具
<br />如果调试的时候有工具能帮助你回朔你的代码是怎么运行的,为什么会到现在的状态将是非常方便的。现在已经有不少工具支持:<br />vs2010提供的histroric debugging功能;<br />ddd/gdb的backtrace;<br />vmware的replay debugging工具<br /> <br />网上有一个简单的讨论<br />http://stackoverflow.com/questions/221806/debugging-backwards
2011-03-28 16:39:00
795
原创 python 正则表达式
<br />内容来自text process in python<br /> <br />re_show.pyimport re<br />def re_show(pat, s):<br /> print re.compile(pat, re.M).sub("{/g<0>}", s.rstrip()),'/n'<br /><br />s = '''Mary had a little lamb<br />And everywhere that Mary<br />went,
2011-03-25 10:31:00
819
原创 算法学习记录
<br />introduction to algorithms 3rd<br /><br />http://mitpress.mit.edu/algorithms/<br />目标:<br />算法理解<br />算法思想<br />经典问题<br />伪代码<br /><br />part IV<br />part V<br />chp27<br />chp32<br />chp35
2011-03-17 10:57:00
362
原创 http://www.dumpanalysis.org 内容一览
trace pattern中提到的关注对象:语句出现概率,线程和进程id, 用bird eye查看不同的地方(缩小显示比例,查看trace文件整体格式), trace语句间谍时间间隔,前台和后台组件的执行情况(可以考虑上色表示)todo:考虑怎样用各种格式输出trace文件,比如颜色,缩进等
2011-02-25 17:27:00
834
原创 python学习记录
整除, 复数表示, slice, range, pass关键字, 函数用参数名调用,函数的*arg和**arg, 默认参数, Unpacking Argument Lists
2011-02-11 16:19:00
647
原创 《代码大全2》读书笔记
软件的复杂性来自本质性和偶然性没有人的大脑装得下一个现代的计算机程序,所以必须把程序组织起来,一次只关注一小部分。信息隐藏要隐藏的是复杂度和变化源concept blockbusting有一些设计的习题,有助于锻炼智力How To Solve It: A New Aspect of Mathematical MethodHow to Solve It: Modern Heuristics
2011-01-20 13:15:00
485
转载 False share的影响或者解决
什么是False share:False sharing is a well-known performance issue on SMP systems, where each processor has a local cache. It occurs when threads on different processors modify variables that reside on the same cache line, as illustrated in Figure 1. Thi
2011-01-19 10:25:00
1067
转载 C语言:内存字节对齐详解[转载]
<br />一、什么是对齐,以及为什么要对齐:<br /><br />1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。<br /><br />2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况,
2011-01-17 10:58:00
346
原创 IT网文摘要
Sending Keystrokes to Any App, Calling .NET from an MFC App, and Morehttp://msdn.microsoft.com/zh-cn/magazine/cc163867%28en-us%29.aspx向另外一个程序发生键盘动作Sepia Tone, StringLogicalComparer, and Morehttp://msdn.microsoft.com/zh-cn/magazine/cc163866%28en-us%29.aspx介
2011-01-14 17:35:00
452
原创 《我编程我快乐》读后感
这本书不错。作者先指出,作为一个职业程序员,你要像商人一样考虑自己的投资,考虑风险和回报的问题。研究新技术还是老技术?新技术在开始的时候回报很高,但后续会有大量的人学习。老的技术会被替代,但老的系统需要有人帮助它尊严的死去,所以研究过时的技术有时也不错。作业:按时间顺序列出你知道的技术,找出你的强项,技术之间的关系。找出你感兴趣的地方。研究供给关系在发达国家,外包发展很快,所以中低级人员工作岗位大量流失,但相应需要人为外包软件设计规格、架构等。作业:上求职网站,概括高端技术和低端技术,考虑哪些高端技术岗位不
2011-01-12 17:25:00
901
原创 windows文件拷贝比较
shell方式代码如下:void ShellCopyFiles(TCHAR* Src, TCHAR* Tgt){ SHFILEOPSTRUCT op; op.hwnd=NULL; op.wFunc=FO_COPY; op.pFrom=Src; op.pTo=Tgt; op.fFlags=FOF_ALLOWUNDO; op.lpszProgressTitle=_T("Copying file"); SHFileOperatio
2011-01-10 11:14:00
2103
原创 stl学习笔记
stl中用到多个区间的算法都要求第二个区间大于等于第一个区间迭代器适配器是有迭代器的接口,但实际做的是其他事情。著名的有插入迭代器,流迭代器,反向迭代器stl的算法操作不从容器删除元素,一是由于算法不了解容器的知识,二是为了效率考虑到效率,stl没有很严格的异常检查,但保证两点:对于基于节点的容器(list, set, map等),单个元素的插入操作实现commit-or-rollback对于基于数组的容器,对结尾元素的插入实现success-or-no effectdeque的特性
2010-12-30 16:36:00
428
原创 vs2005的一些代码编辑功能
1 循环剪贴板,vs会记住20个剪贴板项,如果要使用的话,粘帖的时候使用ctrl+shift+v,会粘贴文本并且选中,如果不是需要的,可以再按ctrl+shift+v,直到出现想要的项2 在editor中按ctrl+j会列出一些方法,可以tab或者回车选中。3 c#默认代码段比较少,可以到http://msdn.microsoft.com/zh-cn/vstudio/aa718338.aspx下载
2010-12-28 11:01:00
486
原创 不要返回c++临时对象的指针
不要返回局部对象的指针,这个大家都知道,不要返回临时对象的指针,这个有时容易忽略。最近用vc+ado做了一个activex,里面有这样一段代码:BSTR fieldname = ptrRecord->Fields->GetItem(i)->Name;pOutputRecord->SetFieldValue(0, fieldname, val); SetFieldValue的声
2009-12-17 21:27:00
1299
原创 解决问题的方法
1.定义问题,越详细越好2.研究问题,尽可能获得具体资料3.分析问题4.提出解决方案5.用可控的方式执行解决方案 (摘自oracle 11g administration from novice to professional) 建议:写工作记录研究问题的根本原因记录问题环境
2009-10-10 16:47:00
446
原创 制作activex控件cab的方法
浏览器中使用的activex控件一般是打包成cab文件,然后申请证书。测试的时候可以使用一些免费的证书。整个过程用批处理比较方便,把下面存成批处理文件。signcontrol.batpath=c:/cabtool/bincabarc -s 6144 n ATLObjCtrl.cab ATLObjCtrl.dll ATLObjCtrl.infpath = "C:/Progra
2009-07-30 16:57:00
1538
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人