摘要: ASM基本必要,至于高级语言就很难说了。去osdev wiki上一翻一堆各种语言实现的玩意。一个模拟OS其实不太容易完整搭出来,反倒是直接构造内核的后顾之忧少(如果还有真的想在SIGALRM里耍什么异常控制流的还是算了吧,挺悲催的)。不过如果是子系统模拟还是可以的:1. 进程的模拟一般强调调度算法多于基本抽象,所以可以考虑用原生的线程搭配k个互斥量模拟忽略超线程的SMP调度。实时调度的发生频率用一个timer就可以解决。2. 地址空间和MM是比较不容易模拟的东西,但国内老湿们往往喜欢啃buddy heap或者一般向header/footer-based heap而不是基础MM本身所以其实反倒好 阅读全文
posted @ 2014-03-05 13:14 foo__hack 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 首先解释一个原理:就无损压缩来说,如果一个算法能压缩一个文件,就必然存在另一个文件是压缩之后比原文件还要大的,这个原理还想不通的话可以参考抽屉原理。于是,设计一个压缩算法,首先就要考虑什么文件是能压缩的,什么文件是不能压缩的。对通用压缩算法来说,我们通常只会做一个基本的假设:在文件中如果出现了一个串Sx,那么其它地方出现Sx的概率相对会比别的串概率要高。就目前来说,ZIP/RAR这一类算法都是基于这个原理,所以它们也无一例外不能压缩完全随机生成的文件。于是给出两个命题:1.如果你设计的一个压缩算法不是出于对重复串的建模,那么它基本不可能成为通用的压缩算法。2.如果你设计的算法〔能压缩任何文件〕 阅读全文
posted @ 2014-03-05 13:11 foo__hack 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 如果是多核也是一样的,在关键资源竞争上还是要用单线程,多线程继续执行可重入代码,单线程队列来处理关键资源竞争,处理完一个完成回调按我看来需要上锁不是简单交换,赋值的操作就是关键资源,特别会影响性能,还是排队单线程执行比较好,上锁了相当于是把其他需要竞争的线程时间给剥夺了,不划算其实同步的粒度小的话开销也不小,光是同步的内核句柄就占了一大把为了同步一次切入内核执行系统调用开销也是很大 阅读全文
posted @ 2014-03-05 13:10 foo__hack 阅读(335) 评论(0) 推荐(0) 编辑
摘要: #include#pragma comment(linker,"/entry:Test")#include char * str="012345aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ567890";char * szPath = "z:\\Test.txt";char * szFormat = "总共用时:%d\r\n";__declspec(naked) void Test(){__asm{push ebpmov ebp,espsub esp,0x 阅读全文
posted @ 2014-03-05 13:08 foo__hack 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 首先,搞清楚需求。第二,底层和低级是两回事。前者是指受到的依赖程度大,后者是指抽象程度低。但不论是哪个角度,封装本身并不会阻碍你使用任意层次的接口。可能的问题在于接口设计者没有充分考虑需求,不恰当地认为封装的结果足以能替代被封装的东西。搞清楚必要的接口,依赖接口而非实现。对于大多数用户,“不知道它底层是GDI”是一种必要的自由,而非义务;知道“底层”对于一知半解的用户来说是累赘,经常导致代码的质量更烂;并且因为缺乏控制依赖的手段,可对实际的工作(例如移植)造成本不必要的阻碍。第三,“封装之后却变成三四个类,多了大堆方法和属性”多出来的复杂度显然不是必要的。这样的示例只能说明封装质量烂,不表示这 阅读全文
posted @ 2014-03-05 13:05 foo__hack 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 原因:WDK在编译驱动时,是不允许源文件所在的路径(全路径)中包含空格的,如果你包含了空格,就会出现上述错误。 解决方法:把源文件放在一个没有空格的路径下。reference:http://blog.csdn.net/crazyingbird/article/details/7305776 阅读全文
posted @ 2014-03-05 11:45 foo__hack 阅读(258) 评论(0) 推荐(0) 编辑
摘要: To build OpenCV as static library you need to setBUILD_SHARED_LIBSflag to false/off:cmake -DBUILD_SHARED_LIBS=OFF ..reference:http://stackoverflow.com/questions/7583172/opencv-as-a-static-library-cmake-options 阅读全文
posted @ 2014-03-04 09:14 foo__hack 阅读(2569) 评论(0) 推荐(0) 编辑
摘要: .vmx VM的配置文件 .vmdk VM的虚拟硬盘 .vmsd VM快照和相关联的vmdk的字典文件 .vswap 虚拟交换文件 .nvram 虚拟机的BIOS信息。VM会生成VMX, VMDK, NVRAM, VMEM, VMSN, VMSD, 以有LOG等类型的文件,vmx:虚拟机配置文件vmdk:虚拟磁盘pln:静态磁盘索引这三个不能删,其他的是快照、coms、内存映像、日志、临时文件等,删了也不会有大问题温馨提示:VMware 6.X不能安装windows 8,请改用VMware 8或者之后版本在VMware上安装windows 8和windows server 2012的步骤:ht 阅读全文
posted @ 2014-02-27 11:32 foo__hack 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 放在这里,以免以后用着,"a+"是追加文本.http://www.cppblog.com/woaidongmao/archive/2012/07/20/184358.html 阅读全文
posted @ 2014-02-26 17:12 foo__hack 阅读(114) 评论(0) 推荐(0) 编辑
摘要: Compile your script with /DNAME=value or /X"nsis command" passed on to makensis.exe as command line arguments. The /D switch of the compiler will define NAME as value in the script. The /X switch will add "nsis command" to the top of the script.Example:In the compiling script:Exe 阅读全文
posted @ 2014-02-26 16:01 foo__hack 阅读(281) 评论(0) 推荐(0) 编辑