自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (8)
  • 收藏
  • 关注

转载 如何使用Appverifier ?

AppVerifier 特别用于检测和帮助调试内存损坏、危险的安全漏洞以及受限的用户帐户特权问题。AppVerifier 有助于创建可靠且安全的应用程序,方法是监视应用程序与Windows操作系统的交互,并配置应用程序使用的对象、注册表、文件系统和 Win32 API(包括堆、句柄和锁)。AppVerifier 还包括检查,以便预测应用程序在非管理员环境中的执行情况。1、 Appverif

2013-01-22 17:42:50 3448 1

转载 关于VC静态库的合并

可能由于实际工作的需要,有时需要将多个lib合并成一个lib, 以方便使用。有两种方式来实现这个合并工作:1、使用VSIDE:1.1 建立一个最终的lib工程(当然也可以用最上层的工程),在Project\Property\Configuration Properties\Librarian\General\Additional Dependencies 中,加入要进行合并到当前Lib

2013-01-22 17:37:12 4645

转载 结构体对齐问题.

在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间;各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。   例如,下面的结构各成员空间分配情况。  struct tagTest { char x1; short x2; float

2012-08-16 11:27:08 15973 4

转载 解读IEEE标准754:浮点数表示

一、背景  在IEEE标准754之前,业界并没有一个统一的浮点数标准,相反,很多计算机制造商都设计自己的浮点数规则,以及运算细节。那时,实现的速度和简易性比数字的精确性更受重视。  直到1985年Intel打算为其的8086微处理器引进一种浮点数协处理器的时候,聪明地意识到,作为设计芯片者的电子工程师和固体物理学家们,也许并不能通过数值分析来选择最合理的浮点数二进制格式。于是Intel在请

2012-04-16 17:34:57 1406

原创 Flex和Bison的C++可重进入—多线程解决方案

目前我们部门用到flex & bison解析器的地方很多,除了编译器 & 汇编器外,还有其他蛮多地方均用到flex & bison解析器,但是没有一个是线程安全的,也就是说在多线程环境下是不能够正常work,因此研究线程安全性就很有必要性。使用flex(lex)和bison(yacc)可以非常方便的创建词法分析和语法分析器,典型的这类程序都是使用一些全局变量进行信息的传递,这也是这种程序默认的

2012-04-09 10:39:13 7033 2

原创 Try Me Mode & Normal Mode

目前市场上卖的玩具的类型很多,顾客去商场要购买玩具的时候,顾客可能会看到有的玩具可以随便试玩,功能全部裸露出来,但是有的游戏全部包装起来不能让顾客随意玩,顾客只有买回去把包装卸掉才能玩,对应我们顾客来说比较偏向可以随意玩的玩具,毕竟玩下感觉自己喜欢才买,不喜欢就不买。因此玩具全部包装起来对顾客来说或多或少都有点影响,因此,有的玩具设计公司意识到这种现状,设计出来的玩具有两种Mode, 一种为Try

2012-03-02 18:19:04 2078

原创 如何确定一个机器的字节顺序是大端还是小端

什么是大/小端呢?所谓大端就是指高位值在内存中放低位地址,所谓小端是指低位值在内存中放低位地址。比如0x11223344在大端机上是11223344,在小端机上是44332211,而一个机器是大端还是小端要看cpu类型以及运行在上面的操作系统。同一款cpu在不同的操作系统使用的大小端情况是不同的。当然我们通常使用的x86+windows是小端。那如何测试大小端呢?通常的技巧是使用一个指针:

2012-01-11 12:03:44 9839 1

原创 在VC2008上Build SDCC Compiler

If you want to build SDCC on Visual Studio 2008,there're some prerequisites.1. No empty space in the project path.2. Install the GnuWin32 tools. (No empty space in the installation path.)

2011-12-30 12:22:57 1554

原创 Yacc介绍与使用

概念•什么是YACC? yacc(Yet Another Compiler Compiler),是Unix/Linux上一个用来生成编译器的编译器(编译器代码生成器). 使用巴克斯范式(BNF)定义语法,能处理上下文无关文法(context-free)。出现在每个产生式左边(left-hand side:lhs)的符号是非终端符号,出现在产生式右边(right-hand side:

2011-12-28 13:21:11 49746

原创 Calling Convention

1.Background在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道

2011-12-28 12:32:32 810

原创 #pragma init_seg使特定的全局变量优先于其他的全局变量先构造

我们知道在C++中的全局变量的构造总是优先于Main之前(应该说程序的执行体),那对于同一个文件,不同文件中定义的全局变量的构造函数是怎么执行的呢?1)对于同一个文件来说:全局变量的构造顺序按照全局变量的声明来构造。如:C_C g_C;C_A g_A;C_B g_B;构造函数的执行顺序为:C_C(), C_A(), C_B(), 不管是在什么编译器上都是按照这样

2011-12-12 11:28:47 2700 2

转载 闲谈字符串转换

计算机发明后,为了在计算机中表示字符,人们制定了一种编码,叫ASCII码。ASCII码由一个字节中的7位(bit)表示,范围是0x00 - 0x7F 共128个字符。他们以为这128个数字就足够表示abcd....ABCD....1234 这些字符了。       咳......说英语的人就是“笨”!后来他们突然发现,如果需要按照表格方式打印这些字符的时候,缺少了“制表符”。于是又扩展了ASC

2011-12-09 17:38:21 954

原创 在VC6.0/VC2008中高效地使用flex & bison

由于 目前的主要工作是IDE,而IDE中主要负责Compiler & Assembler部分,这两部分中都会用到flex & bison(Lex & Yacc),所以通常的做法是在相应工程目录(如:工程为SDCC Compiler)下建立一个parser的目录,然后里面存放.l(lex文件)和.y(yacc文件)文件,还有一个.bat文件,这个.bat文件的作用是把.l和.y文件调用flex &

2011-12-06 14:13:18 1545

转载 在Visual C++2008中调用GCC/G++编译单文件

在VC2008中,如何编译单文件呢? 除了用cl.exe命令行方式外,能否在IDE中实现? 这里有一个技巧:在VC2008中不能编译单个cpp文件,必须把它放在工程中。但是,我们可以通过调用外部工具实现编译单文件。下面以调用GCC/G++为例说明如何编译cpp文件。首先下载Dev C++, 目前最新版为4.9.9.2。安装 Dev C++的同时就安装了MinGW,其中包含了GCC 3.

2011-12-06 13:52:08 1462 2

转载 C++中RTTI的编码实现

摘要:  RTTI(Run-Time Type Identification)是面向对象程序设计中一种重要的技术。现行的C++标准对RTTI已经有了明确的支持。不过在某些情况下出于特殊的开发需要,我们需要自己编码来实现。本文介绍了一些关于RTTI的基础知识及其原理和实现。RTTI需求:      和很多其他语言一样,C++是一种静态类型语言。其数据类型是在编译期就确定的,不能在运行

2011-12-06 12:27:13 1411

转载 关于C++中RTTI的思考?

RTTI(运行时类型信息),是所有RAD开发工具的基础。 这段时间,因为需要在自己的软件中加入扩展的RTTI功能,于是专门对RTTI进行了研究,现在一些心得写下来。RTTI是比较新的编程语言提供的能力,C、Fortran、Basic就没有,而现在几乎所有现代的、可视化的编程语言都提供了RTTI功能。C++的标准中也对RTTI作了规定。但相对其它语言而言,C++的RTTI信息是最简单的。

2011-12-06 10:55:48 862

转载 为什么EXE不能超过4GB

//原文来自于:http://www.cnblogs.com/lixiong/archive/2010/07/13/1776284.html为什么EXE不能超过4GB前几天看到大家在讨论EXE装载的问题,很新奇。有的说PE装载受到进程空间的限制,有的说PE一定是整体装入,有的用ZIP自解压包来举例子。我当时大概想了一下,觉得PE不一定是要整体装入的。PE文件包含一个PE heade

2011-12-05 18:40:13 1236

转载 如何在32位程序中突破地址空间限制使用超过4G的内存

众所周知,所有的32位应用程序都有4GB的进程地址空间,因为32位地址最多可以映射4GB的内存(对于虚拟地址空间概念不太熟悉的朋友建议去看一下《Windows核心编程》这本书)。对于Microsoft Windows操作系统,应用程序可以访问2GB的进程地址空间(32位Linux可以访问3GB地址空间),这就是称为用户模式的虚拟地址空间。这2GB的用户模式虚拟地址空间位于4GB地址空间的低一半,而

2011-12-05 18:24:49 6210

转载 构造函数中抛出的异常

构造函数中抛出的异常   1、标准C++中定义构造函数是一个对象构建自己,分配所需资源的地方,一旦构造函数执行完毕,则表明这个对象已经诞生了,有自己的行为和内部的运行状态,之后还有对象的消亡过程(析构函数的执行)。可谁能保证对象的构造过程一定能成功呢?说不定系统当前的某个资源不够,导致对象不能完全构建好自己(人都有畸形儿,更何况别的呢?朋友们!是吧!),因此通过什么方法来表明对象的构造失败

2011-12-03 09:10:30 1185

原创 关于“逻辑地址”、“线性地址”和“物理地址”

实模式下:一个地址(即物理地址)由“段值:偏移”确定。“段值”为16位的cs、ds等段寄存器,“偏移”可由16位的寄存器或常数(符号标识)给出。物理地址的计算公式为:        物理地址(Physical Address ) = 段值(Segment)x 16 + 偏

2011-10-19 11:30:50 1900

转载 软盘与FAT12文件系统的组织格式

根据《Orange's》第4章理解。 软盘的文件组织格式为FAT12,组织单位由大到小分为分区、簇(一个或多个扇区)和扇区(磁盘上的最小数据单元)。 对于1.44M的软盘有2面(磁头号为0和1),每面有80个磁道(0-79),每个磁道有18个扇区(1-18),每个

2011-10-19 11:19:17 1264

转载 使用IDropTarget接口同时支持文本和文件拖放

使用IDropTarget接口同时支持文本和文件拖放 关于Windows的外壳扩展编程,拖放是比较简单的一种,在网上可以找到不少介绍这个技巧的文章。大部分是介绍使用MFC的COleDropTarget实现的,我觉得一般使用COleDropTarget已经很好了,但是我习惯在一

2011-09-23 15:19:40 3081 1

转载 ubuntu使用超级管理员root登录

Ubuntu有一个与众不同的特点,那就是初次使用时,你无法作为root来登录系统,为什么会这样?这就要从系统的安装说起。对于其他Linux系统来 说,一般在安装过程就设定root密码,这样用户就能用它登录root帐户或使用su命令转换到超级用户身份。与之相反,Ubuntu默认安装

2011-09-14 23:40:28 10183

转载 WIN7下Virtualbox虚拟Ubuntu共享文件夹设置

找了好久找到一个比较完善的共享文件夹的方法 希望对大家有用 我ubuntu是新氧的ubuntu 9.04,oracle vitualbox1. 安装增强功能包(VBoxGuestAdditions)打开虚拟机,设置ubuntu 9.04,找到光驱选项加载VBoxG

2011-09-14 14:42:08 2718

原创 每天学习一算法系列(35)(递归和非递归俩种方法实现二叉树的前序遍历)

题目:递归和非递归俩种方法实现二叉树的前序遍历。 思路一:对二叉树的递归遍历我相信大家只要学了数据结构后应当都很容易就能写出,这里主要是讨论二叉树的非递归写法。按照二叉树前序遍历的定义,无论是访问整棵树还是其子树,均应该遵循先访问根结点,然后访问根结点的左子树,最后访问根结点的右子树的。在整个二叉树前序遍历的过程中,程序始终要做的工作分成俩个部分:(借用辅助栈来实现)1. 当前

2011-09-06 10:34:58 2680

原创 每天学习一算法系列(34)(求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数)

题目:求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间杂度。 思路一:计算一个二叉树的最大距离有两个情况:情况A: 路径经过左子树的最深节点,通过根节点,再到右子树的最深节点。情况B: 路径不穿过根节点,而是左子树或右子树的最大距离路径,取其大者。首先算

2011-09-02 11:27:09 7474 3

原创 每天学习一算法系列(33)(n 支队伍比赛,分别编号为0,1,2......n-1,已知它们之间的实力对比关系,存储在一个二维数组w[n][n]中,w[i][j] 的值代表编号为i,j 的队伍中更强)

题目:n 支队伍比赛,分别编号为0,1,2......n-1,已知它们之间的实力对比关系,存储在一个二维数组w[n][n]中,w[i][j] 的值代表编号为i,j 的队伍中更强的一支,所以w[i][j]=i 或者j,现在给出它们的出场顺序,并存储在数组order[n]中,比如order[n] = {4,3,5,8,1......},那么第一轮比赛就是4 对3, 5 对8。然胜者晋级,败者淘汰,

2011-08-30 17:32:20 5917 3

原创 VC IDE远程调试

序:通常在软件开发的过程中一个比较重要的阶段就是--测试,测试阶段中很可能会涉及到有这样的bug,在WIN7下不出现,在XP下出现…,对于作为一个开发人员来说,当遇到问题的时候我们必须要追踪问题并找出问题的根源,因此我们要进行Debugger,但是通常我们应该会头疼,头疼的原因是

2011-08-30 09:38:22 2300 1

原创 每天学习一算法系列(32)(求一个矩阵中最大的二维矩阵(元素和最大))

题目:求一个矩阵中最大的二维矩阵(元素和最大).如:1 2 0 3 42 3 4 5 11 1 5 3 0中最大的二维矩阵是:4 55 3 要求:(1)写出算法;(2)分析时间复杂度;(3)用C 写出关键代码. 思路一:这个题目要求出最大的二维矩阵,我们首先想到的一个解法就是:从行1到行N进行遍历,以二维矩阵为单元进行遍历,也就说(行x列x -- 行x+

2011-08-25 11:31:32 4537

原创 每天学习一算法系列(31)(实现一个队列,队列的应用场景为:一个生产者线程将int 类型的数入列,一个消费者线程将int 类型的数出列)

题目:实现一个队列。队列的应用场景为:一个生产者线程将int 类型的数入列,一个消费者线程将int 类型的数出列。 思路一:这就是操作系统中介绍的PV操作,队列的一个典型的应用模式。实现这个PV操作的过程中要注意两个线程之间的通信就可以了。 代码如下:/*-----------------------------Copyright by yuucyf. 2011

2011-08-25 09:26:38 3879

原创 每天学习一算法系列(30)(给一个很长的字符串str 还有一个字符集比如{a,b,c} 找出str 里包含{a,b,c}的最短子串。要求O(n).)

题目:给一个很长的字符串str 还有一个字符集比如{a,b,c} 找出str 里包含{a,b,c}的最短子串。要求O(n).比如,字符集是a,b,c,字符串是abdcaabcx,则最短子串为abc。 思路一:用两个变量Front, Rear 指向这个字串(str)区间的头和尾,开始的时候同指向字符串首地址,用一个变量int achSubCnt[256]={0}记录字符集a,b,

2011-08-24 11:21:32 4003 1

原创 每天学习一算法系列(29)(有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小)

题目:有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小。例如:var a = [100,99,98,1,2, 3];var b = [1, 2, 3, 4,5,40];最后的结果为:var a = [1,99,98,1,2,2]; var b = [100, 3,3,4,5

2011-08-19 12:09:02 10048 6

原创 每天学习一算法系列(28)(输入一个整数n,求从1 到n 这n 个整数的十进制表示中1 出现的次数)

题目:输入一个整数n,求从1 到n 这n 个整数的十进制表示中1 出现的次数。例如输入12,从1 到12 这些整数中包含1 的数字有1,10,11 和12,1 一共出现了5 次。注:这是一道广为流传的google 面试题。 思路一:我们每次判断整数的个位数字是不是1。如果这个数字大于10,除以10 之后再判断个位数字是不是1。(对每一个数x,x先与10取余,然后判断x/10

2011-08-18 15:05:07 6042 1

原创 每天学习一算法系列(27)(输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序)

题目:输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序。为了简单起见,我们假设push 序列的任意两个整数都是不相等的。比如输入的push 序列是1、2、3、4、5,那么4、5、3、2、1 就有可能是一个pop 系列,但序列4、3、5、1、2 就不可能是push 序列1、2、3、4、5 的pop 序列。 思路一:对Pop系列

2011-08-17 14:29:09 2742

原创 每天学习一算法系列(26)(输入一个整数,求该整数的二进制表达中有多少个1)

题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。 思路一:这是一道很基本的考查位运算的面试题。一个很基本的想法是,我们先判断整数的最右边一位是不是1,接着把整数右移一位,原来处于右边第二位的数字现在被移到第一位了,再判断是不是1。这样每次移动一位,直到这个整数变成0 为止。现在的问题变成怎样判断一个整数的

2011-08-16 15:36:42 2094

原创 每天学习一算法系列(25)(一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级,求总共有多少总跳法,并分析算法的时间复杂度。)

题目:一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级,求总共有多少总跳法,并分析算法的时间复杂度。注:这道题最近经常出现,包括MicroStrategy 等比较重视算法的公司都曾先后选用过个这道题作为面试题或者笔试题。 思路一:首先我们考虑最简单的情况:如果只有1 级台阶,那显然只有一种跳法,如果有2 级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1 级;

2011-08-16 14:51:23 10068 2

原创 每天学习一算法系列(24)(实现字符串左旋转的函数)

题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef 左旋转2 位得到字符串cdefab。请实现字符串左旋转的函数,要求时间对长度为n 的字符串操作的复杂度为O(n),辅助内存为O(1)。  思路一:分析:如果不考虑时间和空间复杂度的限制,最简单的方法莫过于把这道题看成是把字符串分成前后两部分,通过旋转操作把这两个部分交换位置。于是我

2011-08-15 11:35:33 1468

原创 每天学习一算法系列(23)(写一个程序,要求功能,求出用1、2、5这三个数不同个数组合的和为100的组合数)

题目:写一个程序,要求功能,求出用1、2、5这三个数不同个数组合的和为100的组合数。如100个1是一个组合,20个5是另外一个组合。 思路一:看到这样的问题我们首先会想到最简单穷举法,三层循环就可以解决了。 代码如下:/*=============================Copyright by yuucyf. 2011.08.11========

2011-08-11 15:50:20 7260 2

原创 每天学习一算法系列(22)(在字符串中找出连续最长的数字串,并把这个串的长度返回)

题目:写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr 所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr 后,函数将返回9,outputstr 所指

2011-08-10 17:36:10 3176

原创 每天学习一算法系列(21)(输入两个整数n 和m,从数列1,..n 中随意取几个数使和等于m)

题目:编程求解:输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数,使其和等于m ,要求将其中所有的可能组合列出来. 思路一:这是比较典型的背包问题,可以用贪心算法来解。分析:记整数p可以用1,2,3...q的所有不重复数之和表示的组合为C(p,q),则C(p,q)可以表示为以下的组合:{q} + C(p-q,q-1)  (如果q或者C(p,

2011-08-06 15:19:14 2380

TortoiseSVN.pdf

SVN比较完整的帮助档,需要的同志赶紧下吧。 对SVN的用法进行详细的说明,刚刚接触SVN的同志可以下来学习学习

2009-09-10

CSDN VC编程经验总结.chm

CSDN上达人对CSDN上VC编程的总结,其中的很多问题是非常容易碰到的,对大家会有很大的帮助.

2009-09-10

mfc类库详解.rar

本书对于刚刚使用MFC的程序员无非是有很大的帮助

2009-09-10

深度探索C++对象模型.pdf

这本书解决了过去令我百思不得其解的诸多疑惑,向所有具备C++多年程序设计的同行推荐这本书

2009-09-10

高质量C++编程指南

自从计算机问世以来,程序设计就成了令人羡慕的职业,程序员在受人宠爱之后容 易发展成为毛病特多却常能自我臭美的群体。 如今在Internet 上流传的“真正”的程序员据说是这样的: (1) 真正的程序员没有进度表,只有讨好领导的马屁精才有进度表,真正的程序员会让 领导提心吊胆。 (2) 真正的程序员不写使用说明书,用户应当自己去猜想程序的功能。 (3) 真正的程序员几乎不写代码的注释,如果注释很难写,它理所当然也很难读。 (4) 真正的程序员不画流程图,原始人和文盲才会干这事。 (5) 真正的程序员不看参考手册,新手和胆小鬼才会看。 (6) 真正的程序员不写文档也不需要文档,只有看不懂程序的笨蛋才用文档。 (7) 真正的程序员认为自己比用户更明白用户需要什么。 (8) 真正的程序员不接受团队开发的理念,除非他自己是头头。 (9) 真正的程序员的程序不会在第一次就正确运行,但是他们愿意守着机器进行若干个 30 小时的调试改错。

2008-11-12

3DGame

非常不错的内容,是游戏开发员和爱好者的挚爱

2008-01-18

空空如也

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

TA关注的人

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