自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(38)
  • 收藏
  • 关注

原创 GCC和虚表

最近的一个项目中使用了一个特殊的技术,在VC下编译毫无问题,但到了GCC就遇到了问题——崩溃。研究两天之后发现了一些GCC的实现相关内容,总结一下GCC的实现中虚表指针已经放在对象的最前端,和很早之前版本不一致GCC的pointer to member function是普通指针

2011-07-12 10:25:41 425

转载 Bitwise Operations

<br />It's fairly convoluted though very efficient to encode lots of pieces of Boolean information into a single integer variable. Normal arithmetic and logical operations on such integer variables become unintuitive since we're not usually concerned with

2011-05-23 10:51:00 365

转载 Why did InterlockedIncrement/Decrement only return the sign of the result in win95?

<br /> Why did InterlockedIncrement/Decrement only return the sign of the result?6 May 2004 7:03 AM<br /><br />If you read the fine print of the InterlockedIncrement and InterlockedDecrement functions, you'll see that on Windows NT 3.51 and earlier and on

2011-05-18 11:13:00 380

原创 Description of Visual Studio 2010 Service Pack 1

<br />http://support.microsoft.com/kb/983509<br /> <br />2010 SP1 修正了一个 2008也存在的会导致在C++工程开启优化时导致对象不析构的Bug

2011-05-13 09:36:00 333

原创 VC2008 SP1的TR1在处理对齐时有问题

<br />在对如下结构使用其相同对齐结构时的结果是错误的<br /> <br />__declspec(align(16)) struct Vector{ float a, b, c, d;};printf( " std::alignment_of(Vector) = %d/n", ::std::tr1::alignment_of<Vector>::value );printf( " std::alignment_of(aligned_storage(Vector)) = %d/n",

2011-04-23 12:04:00 734

转载 Effective C++ in the C++0x (C++11) Age

<br />Yesterday, Herb Sutter posted the truly exciting news that the new version of C++ has reached FDIS status.  Practically (though not officially) speaking, this means that the new standard for C++ is finished, and we can stop using the code name "C++0x

2011-04-20 09:56:00 868

转载 导师语录

<br />大学时专业是机械,工作后来才干了软件。所以对于软件我可以说是半路出家。但一路走来还真应该感谢几位导师以及他们的几句话,这些话让我在钻研技术的同时也在不断思考。1 可以理解的才是代码,无法理解的是垃圾   这是我进入公司后印象深刻的第一句话,这句话也让我立刻意识到我之前写过的成千上万行曾经还让我自信满满的代码很可能就是垃圾,因为自从我写过后就不想再去看。从那以后,我就开始为不制造垃圾而努力! 2 最难的是命名   那时导师无论对设计还是代码都要求很严格。代码检查的时候会不时地提出一些命名问题。有的

2010-11-29 14:25:00 289

原创 空指针真的是0么?

<br />我们平常写程序时习惯使用NULL或者0作为空指针,而且已经是习以为常了。<br /> <br />今天在处理一个pointer to member指针时发现返回值为0下意识的以为返回的是个空指针,但是发现确进入了下面的if语句。<br />然后研究了下编译出来的代码,发现空指针值被换成了0xffffffff,因为pointer to member是可能为0的。<br />联想到其他平台有可能空指针实际上不是0的情况,现在实际上x86平台也有不是0的空指针了。<br />这倒是我孤陋寡闻了。<br

2010-07-29 13:48:00 729 1

转载 DLL, Manifest, Assembly, Search Path

 DLL, Manifest, Assembly, Search PathThe post is about the DLL hell, of course.Static and Dynamic DLL LoadingBasically, a DLL can be loaded and used by an executable in two ways: static and

2010-04-07 13:35:00 1366

原创 Windows 7 的100M保留空间

在安装Windows 7时如果是安装的分区是在Windows 7安装时创建的,会导致操作系统预留100M或者200M的一个预留分区。这个分区是为了Windows 7的BitLocker用的。BitLocker是用来加密磁盘文件的,但是启动文件不能被加密,所以,微软想出了这个办法,单独建立一个预留分区,把启动文件放进去,这样就可以保证BitLocker可以应用在Windows安装的分区上。

2010-03-24 17:15:00 1574

转载 Two Fixes You Must Have for Visual Studio 2008 SP1

The SP1 release of VS08 regressed some functionality compared to the original release, in a couple of critical areas. As a result it is highly likely youll need the following two patches for it. I

2009-07-31 15:43:00 354

转载 UTF

最近在网上看到一个ConvertUTF.c,实现了UTF-32、UTF-16和UTF-8这三种编码方式的相互转换。对于Unicode(UCS2)、GBK、UTF-8这些编码方式,我原来就了解。但这个程序让我有些糊涂,想不起来UTF-16和UCS2有什么关系。 查了查相关资料,总算将这些问题弄清楚了,顺带也了解了一些Unicode的细节。写成一篇文章,送给有过类似疑问的朋友。本文在写作时尽量做到通俗

2009-07-09 11:04:00 474

转载 MP3是什么

mp3吧可不是什么凭空制造出来的词汇,而是一个技术术语的缩写,即MPEG-1 AudioLayer-3的缩写拼法,这是什么意思呢?我来给大家解读一下:MPEG-1 AudioLayer-3就是mpeg1类型国际标准技术协议中的音频部分第三层协议,它说明的是一种音频格式,是不是看起来很复杂?不要紧我们一点一点来说,首先mpeg——这个词是Moving Picture Exp-erts Group的缩

2009-05-05 18:08:00 886

转载 比特率

一、计算机中的比特率比特率是指每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,传送的数据越大。比特率表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示,而比特就是二进制里面最小的单位,要么是0,要么是1。比特率与音、视频压缩的关系,简单的说就是比特率越高,音、视频的质量就越好,但编码后的文件就越大;如果比特率越少则情况刚好相反。计算机中的信息都

2009-05-05 18:08:00 1129

转载 音频编码基本概念介绍

自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。1-1 什么是采样率和采样大小(位/bit)。声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行

2009-05-05 18:08:00 1530

转载 MP3的频率、比特率、码率与音质的关系

想知道MP3的频率、比特率、码率与音质的关系,是不是频率越高,码率越高,音质就越好。好像MP3大多数的频率都是44100HZ的。码率有128,192等等。这里所说的频率是采样率,一般都是44100KHz的,因为这是音乐CD的标准。每一首歌,都是从CD抓轨、转成WAV文件、再用Lame等软件转为MP3的。所以肯定都是44100KHz的采样率。除非你的不是歌,而是自己录音成为WAV文件,而且录音时

2009-05-05 18:07:00 27010 3

原创 计算一个数组中的数加上和另外一个数组中的数经过一个值缩放的结果

实际上就是v1 += v2 * s;void fa_scaleadd( FLOAT *pv1, const FLOAT *pv2, DWORD dwCount, FLOAT s ){ // 应该使用A16分配对应的内存 assert( ( ((DWORD_PTR)pv1) & 0xf ) == 0 ); assert( ( ((DWORD_PTR)pv2) & 0xf ) ==

2009-03-10 14:39:00 154

原创 获得函数指针和虚表序号

在使用C语言进行编程时,我们经常会使用函数指针,但是我们拿到的函数指针真的就是函数的代码体么?答案当然是不是,如果我们直接拿到函数的代码体的指针的话,程序就没有办法进行代码的重定位了。进行函数体的重新定位在函数实现在一个DLL中时尤其重要,因为函数一般总是会被重新定位到以一个位置。当然如果在Vista和更新的系统中,启用了地址随机,连EXE的每次加载都不能保证代码在相同的位置上。所以编译器通过转向

2009-01-19 12:37:00 658

原创 VC如何实现的虚继承

大家知道C++中可以使用虚继承,而为什么虚继承基类的构造函数只会被构造一次呢?原来VC在生成虚继承基类子类对应的构造函数和调用代码时,给构造函数多加了一个参数,这个参数是一个布尔知。如果为True(1),则我们实际在构造实际的对象,这时构造函数会调用其所有虚继承基类的构造函数,无论这虚继承基类是这个类的多少辈祖先。而且只有这个对象才知道虚继承基类在自己类中的内存偏移,别人也无法进行虚继承基类的构造

2008-12-11 14:44:00 794 1

原创 如何调试崩溃dump文件

其实调试Dump文件很简单,双击自动打开VC然后F7运行。但是中间要注意很多事情。 1。Dump文件放在哪里 Dump文件不用非要放在你编译出来的位置,你完全可以建立一个新的文件夹来放它。 2。要恢复当时的现场 可能你要问,怎么可能,这个dump文件可是用户发给我的,我不可能去用户家里调试吧?这个恢复现场可不是指的非要到那台机器上去,而是要把产生dump文件

2008-11-06 13:54:00 7855

原创 看来CPU将在不久之后消失

nVIDIA 的 CUDA,Intel 的 Larrabee,新的世界要来临了

2008-10-17 18:58:00 588

原创 MFC的Visualizer

不知道为什么VS2005没有带MFC的Visualizer,调试起来实在别扭,所以自己写了一个。只有Container的部分,因为别的东西没有那么复杂。Visualizer是没有文档化的,所以,尝试了很久。。。这段是给CArray的,所有的Array都是类似的结构,所以可以通用:CArray|CObArray|CByteArray|CDWordArray|CPtrArray|CStri

2008-09-05 17:18:00 635

原创 如何加快VS2005的IDE使用

可以有几种方法:减少工程的加入关掉IntelliSense可以被Visual Assist代替的功能完全关掉IntelliSense直接使用Visual Assist1.  完全关掉VS2005的IntelliSense有两种方法将与sln的相同名称的ncb文件删除,创建一个相同名字的目录(这个有点像土法免疫病毒);将/Microsoft Visual Stud

2008-09-05 14:06:00 1752

原创 VisualSVN Server 1.6 将完全支持中文

不知道大家等待VisualSVN Server Manager支持中文多长时间了,但是这个问题一直没有解决。我前两天试着给VisualSVN的开发团队发了封信,描述了这个问题,他们很负责,并且很快解决了这个问题。 SVN完全支持所有UTF-8文件名,对中文的支持就是通过对UTF-8的支持实现的。即使是使用VisualSVN Server搭建的服务器也是支持UTF-8的,但是它的附带管理工具

2008-09-02 09:07:00 3446 1

原创 说说我理解的SVN操作

SVN是什么Svn是一个离线的代码管理,可以多个人一起修改,然后再将修改的内容提交到Svn中。每一个svn服务器中的数据存储单位叫做存储,但是你不仅仅可以把整个存储当作你维护的内容,也可以将其中的某个分支目录像根存储一样的使用。Svn是严格区分大小写的,存储中路径的名字只有大小写不同,也会当作不同的路径处理。注意这里会在windows平台下导致一些非常严重的问题。在windows下如果svn服务器

2008-08-21 15:22:00 2366 3

原创 游戏中的系统设置

用户选项是每一个软件都有的,游戏也是软件,所以也应该有选项。 游戏中的选项一共分几种:图形选项;声音选项;控制选项;游戏选项;游戏制作人员列表;其他的一些自定义选项。下面开始我们分别介绍这几个选项: 一、 图形选项 图形选项是用来配置游戏的渲染引擎相关的一些信息的,其具体的内容会跟着游戏引擎和游戏需要进行变化,但是一般都包括一些基本的显示设置

2008-08-01 11:11:00 554

原创 一个任意类型变量类,和variant_t有不同功能。

 就是一个直接能直接把一个内存数据当作任意类型读写的类,但是和variant_t不同,不会转换,而是直接通用二进制数据。可以当作寄存器使用 struct CX86Register{ uintptr_t v; template CX86Register operator =(T t) { *(T*)&v = t; return *this; } templ

2008-07-31 00:38:00 456

原创 再探Win32 SEH

很早之前就看了Matt Pietrek的A Crash Course on the Depths of Win32 Structured Exception Handling这篇巨作,真是前无古人,后有仿者。今天突发奇想研究了一下VS2005的SEH,又看到些新的东西,下面说明一下。 看一下文中引用的EXSUP.INC中的异常注册的定义:struct _EXCEPTION_REGIST

2008-07-31 00:00:00 1675 2

翻译 深入Win32 SEH

Matt Pietrek 著http://www.microsoft.com/msj/0197/Exception/Exception.aspx  在所有 Win32 操作系统提供的机制中,使用最广泛的未公开的机制恐怕就要数结构化异常处理(structured exception handling,SEH)了。一提到结构化异常处理,可能就会令人想起 _try、_finally 和 _e

2008-07-30 16:06:00 967

原创 D3D的矩阵变换

“物体坐标->世界坐标->视坐标->投影坐标->屏幕坐标”这部分的说明已经不能再多了,但是有些细节其实D3D的文档中也比较难发现出来,还有些在文档中的解释可能会让人比较迷惑。1。视矩阵是什么?参见“D3D的视矩阵是如何构造的”。2。投影矩阵把Z投影到哪里去了?我们在3D图形学中学的投影矩阵是给出一个平面,将3D空间中的图像都投影到这个平面上,这个平面一般选取Z=D这样的平面,所以构造出来的

2008-03-20 14:40:00 1571

原创 D3D的视矩阵是如何构造的

可以看到 D3DXMatrixLookAtLH 的说明中是用如下的说明来解释如何构造这个矩阵的zaxis = normal(At - Eye)xaxis = normal(cross(Up, zaxis))yaxis = cross(zaxis, xaxis)     xaxis.x           yaxis.x           zaxis.x          0 xaxis.

2008-03-10 16:01:00 805 1

转载 调试与Symbol

Debugging 工具与 Symbol: 入门Debugging Tools for Windows 是一组工具,可侦错 Microsoft® Windows® 操作系统家族的装置驱动程序。Windows Debugging 工具支持以下的侦错:应用程序、服务器、驱动程序及 Windows 核心 Native 32-bit x86、native Intel Itanium

2007-12-14 17:50:00 1335

转载 开发Winsock应用

开发Winsock应用 通常要开发网络应用程序并不是一件轻松的事情,不过,实际上只要掌握几个关键的原则也就可以了——创建和连接一个套接字,尝试进行连接,然后收发数据。真正难的是要写出一个可以接纳少则一个,多则数千个连接的网络应用程序。本文将讨论如何通过Winsock2在Windows NT? 和 Windows 2000上开发高扩展能力的Winsock应用程序。文章主要的焦点在客户机/服务

2005-12-28 20:44:00 881

转载 理解I/O Completion Port

欢迎阅读此篇IOCP教程。我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你心中对IOCP的烦恼。OK,但我不能保证你明白IOCP的一切,但我会尽我最大的努力。以下是我会在这篇文章中提到的相关技术:  I/O端口  同步/异步  堵塞/非堵塞  服务端/客户端  多线程程序设计  Winsock API 2.0在这之前,我曾经开发过一个项目,

2005-12-28 20:25:00 827

原创 关于c语言与c++语言的头文件

在c/c++语言中的头文件其实是为了搜寻对应的类型和函数信息的比如在头文件中可以声明一个函数,但这个函数可能定义在任何地方比如一个静态库或者动态导入库lib中,或者可以直接以原代码的方式写在cpp/c文件中头文件提供的服务叫做类型映射(phototype)函数在c/c++语言中也是一种类型函数在声明的时候其实仅仅是说明了对应的函数调用协议,函数名称和参数类型这样就可以明确的指导编译器如何创建这

2005-12-25 15:26:00 4102 1

原创 java的小细节

final的作用final 让value保持不变,但是用于object reference 时,让reference不变,但是对项内容却是可变的所有的private函数自然都会是final,当你你感觉好像覆写了的时候,其实你生成了一个新的函数。第一次知道重载不等于覆写。

2005-04-18 22:30:00 685

原创 最终解决domino中的画面迁移

我的解决方法:function setVoid() { return false;}self.onerror=setVoid;这个虽然简单但是运行一段时间发现所有的弹出事件都不好用了。但是去掉了还是会导致页面迁移;静静分析,原因是在tag里边由domino主动加入了 href="" 这才是移动的原因再加上要屏蔽未加载完的错误,所以用了下边的代码var g_error_retru

2005-04-17 22:10:00 729

原创 用户可能在网页没有完全加载完的时候点击,出错

在网速较慢的时候,用户可能在网页没有完全加载完的时候点击,出错同事的解决方法:var ArrObj = new Array();var timerID ;function addEvent() {//增加一个事件 document.attachEvent(onmouseover, setMouseOver);}addEvent();function setMouseOver

2005-04-17 22:03:00 862

空空如也

空空如也

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

TA关注的人

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