- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 恶意广告程序shellpro.dll
<br />欢迎访问我的新博客,地址 www.sheenspace.wordpress.com<br /> <br />最近几天每次机器重启后都会弹出一个windows消息框<br /> <br /><br /> <br />似乎是某程序要访问public document目录失败,很可能是前几天访问某中国绿色软件网站并下载某绿色软件安装后开始出现的症状。打开Task Manager,右键单击提到的windows消息框项目,选择Go to Process,可以跳到具体的进程项目,<br /><br /> <
2010-09-29 04:06:00 903
原创 回调(Callback), 委托(Delegate), 事件(Event)
<br />本文通过认识Observer Pattern,以及对比C++,C#对这个模式的实现来理解C#中的委托(delegate)和事件(event)。<br />http://sheenspace.wordpress.com/2010/09/21/callback_functor_delegate_event/ <br /> <br />委托就是对拥有相同签名的函数/方法的类型定义;事件就是委托实例的集合,包含0个或多个委托函数实例。事件这个名字稍微有点迷惑性。他更多的表达的是这个委托集合在应用上的一般
2010-09-22 04:43:00 1438
原创 .NET Garbage Collection 导致 unmanaged handle 提前释放 (SafeHandle)
这里是整理编辑一下我的原博文http://sheenspace.wordpress.com/2010/09/19/question-about-net-gc/从.NET 2.0开始,加入了SafeHandle类用来避免unmaged资源被提前非预期的释放。关于SafeHandle,参看MSDN:http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.safehandle.aspx这里用一个例子重现IntPtr被提前释放的情
2010-09-20 02:10:00 1000
原创 Intel架构CPU的CPUID指令和Visual Studio的__cpuid/__cpuidex函数
简要介绍Intel架构处理器的CPUID指令的规范,在程序中的一般作用,以及微软Visual C++中对应的__cpuid / __cpuidex函数,和我对这两个函数做的简单的类封装。
2010-09-15 22:36:00 4576
原创 多处理器系统下的伪共享(false sharing)问题 2 - 程序演示
原文:http://blog.csdn.net/sy8111/archive/2006/09/05/1178107.aspx下面用一个简单的小程序来验证False Sharing对性能的影响。
2010-09-15 20:45:00 1397
原创 如何理解C++中的动态绑定(dynamic binding)
在浏览C++论坛时,我总是能发现很多C++初学者的提问帖子,都是关于动态绑定的。基本大意就是不完全理解动态绑定该如何理解,造成一些面试或者实际编程上的困扰。本文就是针对这个问题作出的解答。作者并非技术大牛,不当之处还请大家在评论中指出,在下万分感谢。 我对于C++动态绑定的理解,一句话,就是编译器用静态分析的方法加上虚拟函数的设计实现在程序运行时动态智能执行正确虚拟函数的技术。因
2007-05-09 22:10:00 6113 6
转载 关键字Const与Volatile的使用
关键字const有什么含意? 我只要一听到被面试者说:“const意味着常数”,我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着“只读”就可以
2006-11-15 23:07:00 1051
原创 用WinHex直接修改磁盘分区表找回丢失的分区
1. 为什么写这篇blog 上个星期SATA开始不停地出问题,经常性的在使用中分区信息丢失。开始只是C盘信息丢失,也就忍了,每次用Ghost还原。最后一次居然整个扩展分区没了,所有电影音乐游戏一概报销。只好临时把系统又装回老硬盘。虽然丢失的没有重要资料,毕竟是一大堆攒下来的东西,很不爽,决定找回来。在网上搜硬盘工具没找到理想的,倒是顺便又温习了一遍分区表知识,于是决定自己动手,丰衣足食。装上
2006-09-12 21:18:00 11358
原创 C++中打印函数调用情况
在Java 中,如果产生异常,程序员可以很方便地调用printStackTrace()显示堆栈情况,这是因为Java虚拟机掌握所有运行时系统的信息。但是在C++中就没有相应的功能了,为了方便在调试时观察堆栈调用情况,我写了个很简单的框架来实现基本功能。 #include string>#include list>#include exception>#include iostrea
2006-09-09 23:56:00 4185
原创 类和接口的设计
我这篇文章的主旨是介绍一部分类和接口的高质量设计的准则。这些准则不但应该保证设计并且实现的类或者接口本身有高质量代码,而且更重要的是在工业领域应该尽可能的使代码的更新和维护不影响客户的活动,主要也就是保持二进制代码兼容(binary compatibility)和源代码兼容(source compatibility)。我希望这些准则能帮助刚从学校进入工业领域的朋友尽快适应更高标准的编程要求,尽
2006-09-06 23:36:00 1727
原创 C++ 变量和函数的声明和定义
有一部分C++程序员对于多个源文件一起编译链接时,变量,函数或者类声明和实现到底如何定义模糊不清,现在分类澄清一下。 变量 (variable) 在C++中,变量声明(declaration)只有在使用extern关键字时才成立,其他情况下都是定义(definition),而在使用extern的同时给变量赋初始值,则声明变为定义,extern关键字也将
2006-09-05 06:33:00 5317 2
原创 多处理器系统下的伪共享(false sharing)问题
1. 背景介绍 首先简单说一下计算机中处理器-内存体系结构。由于CPU速度远大于内存访问速度,现代CPU设计中都引入了缓存(cache)作为CPU和内存两者之间交流的缓冲中介。缓存的速度也介于两者之间。缓存中存放了最经常被访问的内存数据,CPU在很大程度上只需要访问高速缓存,大大提高了系统性能。系统对缓存进行读写的单位被称作缓存行(cache line)。大家知道系统对内存的操
2006-09-05 06:18:00 10843 2
Intel Processor Identification and the CPUID Instruction
2010-09-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人