自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 从ASM代码中分析MFC与ATL在COM组件开发中的差异和优劣

本文是[MFC与ATL在COM组件开发中的差异和优劣](https://blog.csdn.net/watergear/article/details/82219037)的续篇。主要是通过C++中的模板和多重继承的语言特性,从ASM汇编层面,来分析MFC与ATL的差异和优劣。

2018-09-14 17:36:16 417

原创 C++模板SFINAE实践

最近工作项目中,需要做一个字符串编码转换的工具库。在我之前的开发人员,提供了大量C风格的功能函数。每次转码之前,针对不同的编码,需要调用不同的功能函数。这种方式的问题很明显,就是每次都需要人工去判断字符串编码格式,并选择不同的功能函数。因此,还经常出现人为失误的情况。为了有效的改善这种情况,我决定采用C++模板技术,能够自动匹配字符串类型,并正确调用编码转换的功能函数。为此,我对C++模板SFINAE技术进行研究。

2018-09-07 17:42:55 333

原创 MFC与ATL在COM组件开发中的差异和优劣

从编写代码的角度,对比分析MFC(Microsoft Foundation Classes)与ATL(Active Template Library)在COM(component object model)组件开发中的差异和优劣。本文研究了ATL如何通过C++的多重继承和丰富的模板库,充分实现了COM组件多重接口的技术特点。

2018-08-31 00:13:07 2242

原创 在C#的Windows Forms中使用Preview Handler的实践

本文通过一个在C#语言编写的窗体中加载预览功能COM组件的例子程序,深入研究了如何在C#环境里调试C++代码的技术,以及分析COM组件的接口参数类型定义,并与C#语言中的参数类型定义进行比较,进而发现例子程序中的问题,并解决该问题。

2018-08-27 18:24:15 1093 1

原创 memcmp的性能分析

最近在优化软件运行速度,翻查C++代码的时候,发现了这么一处函数。功能很简单,就是比较内存值是否相同。函数如下:int cfunc_memcmp(char* src, char* dest, int n){ while (n--) if (*src++ != *dest++) return 1; return 0;}看起...

2018-03-13 12:50:44 6224 2

原创 在x64架构下混合C++和ASM编程,堆栈调试器信息错误的问题

本文讨论一个调试C++和ASM混合代码的技术案例。其中涉及到PE文件结构中UNWIND_INFO和UNWIND_CODE等概念。背景说明: 我在一个大型软件的开发调试过程中,遇到堆栈信息错误的问题。这个大型软件基于C++语言,支持二次开发,提供了数量若干的DLL库,并且内置了Origin C语言(简称OC)。通过OC语言可以访问内部或第三方的DLL库。具体问题就出现在某个OC代码调用内部...

2018-03-08 18:57:25 1818

原创 如何从文本里提出无重复的关键词,并保持原始排序

最近,需要从代码中提取出相关涉及的ISSUE,肉眼查找了十几行后,发现这个工作太枯燥且效率太低了。然后就想了一下高效的办法。

2016-05-25 16:37:12 473

原创 自制sublime text color scheme分享

一直以来,我都用IDE写代码,像TC,VS,Eclipse等,语法着色也一直是用默认的。时间长了,慢慢发现审美疲劳了,随着年龄的增加,眼睛也对高亮的背景色有了眩目感。而且,死板的颜色组合,也让本来就枯燥的工作环境,看上去更加消沉。 直到有一天,我遇到了sublime text,一个性感的编辑器。 于是,我想改造我的工作环境,增加更多的热情。那么,先从每天都长期面对的代码颜色开始吧。

2015-10-20 11:37:20 3910

原创 Splendor宝石游戏的策略分析

《璀璨宝石》是一个很好玩的游戏,易于上手并难以精通。游戏中出现的各种场景,常常成为我们讨论分析的战场,由此也引申出各种策略流派。孰好孰坏一直争论不休。 下面,我们针对一个具体的案例,尽量从客观分析各种决策的优劣,并与主观直觉进行比较,从而得出一些有用的经验模式。

2015-05-29 11:44:27 6884

原创 代码中的概率学(从理论到仿真的实践)

某日,我们几个同事在玩一个叫Splendor(璀璨宝石)的游戏。在翻贵族牌的时候,出现了一个极致的情况,连续翻出5块3x3宝石组合的牌。在众人惊呼这个奇迹的时候,突然有人提出,“这个概率有多少啊?”。于是,一帮理工科的死宅,开始了脑区的激活。

2015-05-04 13:56:02 846

原创 交换变量A,B的代码运行效率分析

我们写代码时,经常会碰到需要将两个数值变量互相交换的情况。 例如,要求交换变量A,B的值,写如下C代码。情况1,利用临时变量T: T = A; A = B; B = T; 情况2,不利用临时变量: A ^= B; B ^= A; A ^= B;那么,这两种实现方式的运行效率如何呢?

2015-04-28 09:40:04 866

原创 ThinkPad x200为何总是CPU占用50%

本文通过一个ThinkPad的例子,叙述一个CPU占用率过高时的问题分析过程。从系统进程到系统线程,再到系统内核程序,最后到系统中断功能模块,逐步初探各阶段可以使用的工具,开拓了操作系统研究爱好者的视野。

2013-09-17 15:26:59 2007

原创 关于安装WIN7系统的一些手记

最近买了一个SSD,打算分成两个区,安装WIN7 32位和64位双系统。期间碰到各种问题,最后逐一解决。特此记录一下问题和解决方法。SSD因为特殊的存储结构,所以分区的时候要注意4k对齐,否则就会出现存取效率很差的情况。其主要原因是因为SSD的最小存储单元是4k bytes,而HD是512 bytes,为了减少不必要的读写性能浪费,就要求分区时统一按照4k处理。包括分区起始偏移和簇

2012-11-26 04:36:51 1336

转载 XP更改用户注销方式

我用的ThinkPad的笔记本,默认装的XP。原来一直关机画面是3个图标的,后来不知怎么就变成下拉文字菜单了。因为看着不舒服,而且点击按键变小很不爽。于是研究一下如何恢复回来。网上有文章说,可在用户管理那里,更改登陆或注销方式。可是我一打开,就弹出对话框:“一个最近安装的程序已停用欢迎屏幕和快速用户切换。您必须卸载该程序以恢复这些功能。下列文件名可以帮您识别该程序所作的修改:tvt_gina.

2012-02-11 00:37:04 957

原创 VS2008调试器窗口假死问题

描述:Windows XP,Visual Studio 2008, C++ 环境下,调试控制台应用程序,中途强制退出。结果任务栏和任务管理弹出一个控制台窗口,点击关闭或结束任务无效。进程管理器里没有发现此窗口相关进程。如果选择关机,则无限等待ing,只能被迫关电源。 分析:很诡异的现象,以前没遇过,难道这个窗口是个幽灵窗口?嗯……科学不能迷信,虽然已是深夜,但还是着手研究一下。不能

2010-05-30 05:13:00 4713 2

转载 应用程序图标变了的解决方法

 某天开机,adobe reader 9 自动升级。结果似乎出了错,再次开机时,发现好多应用程序的图标都乱了。试了刷新多次,都没反应。杀毒扫描,无毒。右键点开其中一个图标属性,选更改图标,直接确定,图标又恢复了。似乎是图标链接缓冲坏了。但是机器里有大量的图标都乱了,我不能一个个去点吧,何况还有一些像“显示桌面”这样的图标根本打不开属性窗口。现在界面乱得跟中了病毒似的。心里很郁闷,又不想重装

2010-05-10 04:19:00 3378 2

原创 “向上兼容性”的思考

几年前,刚进入OriginLab公司。当时参与了Import File相关工作。我们这部分几乎所有的功能都是基于OriginC语言(下面简称OC)开发的。不单是是公司内部,连Origin的客户,都使用OC开发界面和附加功能。有一天,我们收到一个客户的抱怨,说他在Origin 7.5写的关于Import File的OC代码,不能在Origin 8.0下运行通过。于是我们的Leader Justi

2009-05-25 15:01:00 901

原创 PSP3000破解原理——缓冲区溢出漏洞随谈

一直很惊叹,黑客是如何利用缓冲区溢出,达到入侵,破解系统的。就如IE浏览器上曾出现的图片格式病毒一样,这次对PSP的破解,正是借助一个TIFF格式图片完成的。由于对PSP有爱,决定去了解一下这里面都发生了什么事情。一个神奇的图片是如何破解系统的?  缓存区溢出,学名是memory overflow,实际上就是内存越界。其结果大致表现为,程序死机,系统崩溃。这本来是软件编写的bug,很常见。为什

2009-05-04 14:46:00 5669 3

体育比赛自动生成赛程Excel表(循环制和淘汰制)

自己做的Excel表,2003,2007版下测试通过。 我某次参加网球比赛策划活动,负责人让我安排赛程。由于人数众多,于是我想做一个根据参赛人数自动生成赛程的Excel表。理论上,对任何有循环和淘汰制的体育比赛(如足球篮球啦)都能用的上。 用了VBA语言,设计一个分组循环对阵以及淘汰对阵算法。并利用Excel自带的脚本功能绘制表格边框。输入比赛人员名单后,点击蓝色的单元格,自动生成的赛程表,可以直接打印。 个人辛苦工作结果,希望大家不吝赐分。

2013-09-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除