自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (3)
  • 收藏
  • 关注

原创 各种路径遍历二维数组

比如蛇形遍历,螺旋形遍历等等。可以将遍历过程想象成一个状态机。当前状态为蛇行方向(上行/下行/左行/右行等等),遇到墙壁时将修改当前状态,走到终点时结束。以蛇形遍历为例,一共有两种状态:上行(↗)和下行(↙)。上行(↗)时检查是否遇到top和right,如果遇到right则下走一步(↓),如果遇到top则右走一步(→),然后将状态改为下行;下行(↙)时检查是否遇到left和bott

2016-10-29 17:44:16 1721

原创 利用Windows API实现精确计时器

class CPreciseTimer{public: CPreciseTimer(unsigned int, ITimerObserver*); void Start(); void Pause(); void Terminate(); ~CPreciseTimer(void);private: TimerThreadParam m_param; CWinThread *m

2016-09-22 22:42:18 2633

原创 windows API 实现精确的打点计时器

利用windows API QueryPerformanceFrequency()和QueryPerformanceCounter()写了一个计算精确时间差的类.用法:initStart()的时候开始计时,此后每调一次GetTickDelta()返回的是距离上次调用GetTickDelta()所经过的毫秒数。class MyTick{public: MyTick() { LARG

2016-09-22 22:37:05 625

原创 Refactor: replace type code with class (c++)

重构前class Person {public: static const int A = 0; static const int B = 1; static const int AB = 2; static const int O = 3; Person(int bloodType) { this->bloodType = bloodType; } int getB

2016-07-15 15:46:30 462

原创 输入一个整数数组,返回所有元素两两之差绝对值最小的值,O(n)算法

输入一个整数数组,返回所有元素两两之差绝对值最小的值(只要得出最 小值即可,不需要求出是哪两个数)。两两之差的绝对值的最小值,也就是在找所有元素中离得最近的两个元素的距离。我有一个O(n)的算法,用空间换来的。方法如下:申请一个长度为UINT_MAX的bool型数组isExist[],初始值均为false。第一阶段,遍历输入数组,并记录数组的最大值最小值对于ai,将isEx

2013-01-30 10:18:35 4020 3

原创 排列组合问题汇总

问题一 打印出一个集合中的元素的所有可能的组合.思路如下:元素个数为n,可以用一个n位二进制数的每一个bit对应集合中的每一个元素。任取一个n位二进制数即能够表示对该集合中元素的一种选择方案。规则如下:某bit为1,表示选中该元素,为0表示不选中该元素。则从1,累加到(2^n) - 1,即可得到所有组合方案。程序如下:void combine(const char* str, cons

2013-01-18 17:17:25 1106

原创 判断一个二叉树是否是平衡二叉树 Cracking the coding interview 4.1

平衡二叉树的定义是:任意节点的左子树的高度和右子树的高度之差小于等于1.那么一个二叉树是平衡二叉树 当且仅当 (1,左子树是平衡二叉树, 2. 右子树是平衡二叉树; 3, 左右子树的高度之差小于等于1).所以用递归的方法判断的话,递归函数就需要返回两个信息:是否平衡,树高度. 代码如下。bool IsBalance(Node *pRoot, int & nDeepth){ if

2013-01-15 17:25:06 1876

原创 二维数组中的查找 Cracking the coding interview 9.6

Cracking the coding interview 9.6Given a matrix in which each row and each column is sorted. write a method to find an element in it.  实现一个函数,在一个行列都排序的二维数组中查找某个元素是否存在。思路:如果待搜索元素小于一行中最左边的元素或者大于一行中最

2013-01-10 14:49:07 865

原创 Anagrams 变位词

本文要讨论的是变位词,也就是说通过交换一个单词的各个字母的顺序能变成另一个单词,那么这两个单词互为变位词。问题一:判断给定的两个单词(标准ASCII)是否变位词方法一:用两个数组分别统计两个字符串里每个字符出现的个数,如果完全一致,则是变位词,否则不是.这个方法是大小写敏感的。这个方法能支持的输入字符串的最大长度 将受 用来统计字符个数的数组的类型 的限制。如果用unsigned ch

2013-01-09 15:40:52 1292

原创 Rotated array related program. 和旋转数组相关的几个程序

问题一:将一个具有n个元素的数组向右旋转i个位置。EXAMPLE:Input: 将(1, 2, 3, 4, 5, 6, 7, 8, 9)旋转3个位置Output: (7, 8, 9, 1, 2, 3, 4, 5, 6)问题二:(Cracking the coding interview 9.3)Given a sorted array of n integers that

2013-01-08 17:36:43 10775

原创 两个已排序数组的归并

Cracking the coding interview 9.1You are given two sorted arrays, A and B, and A has a large enough buffer at the end to hold B. Write a method to merge B into A in sorted order.思路:从后向前归并。这里有个问题需要

2013-01-06 16:37:22 1226

原创 输出n对括号的所有有效(左右括号成对匹配)排列

原题:Implement an algorithm to print all valid (e.g., properly opened and closed) combinations of n-pairs of parentheses.EXAMPLE:input: 3 (e.g., 3 pairs of parentheses)output: ()()(), ()(()), (())

2012-12-26 16:38:58 2336

原创 Excel sheet的列名到列序号的转换

序列 seq=[a,b,…,z,aa,ab,…,az,ba,bb,…,bz,…,za,zb,…,zz,aaa,…]类似于excel的列名从小到大依次排列。任意给一字符串 s=[a-z]+(由a-z字符串组成的任意长度字符串),返回s是序列seq的第几个(0-based)字符串。解法1: 先计算1-based下标,返回时减1。注意,这个方法没考虑越界.unsigned int ColumnT

2012-12-14 14:22:36 3385

原创 从Stream中读取字符串长度,数值过大导致后期操作Crash

某字符串类型的记录,按该记录的定义,第一个DWORD表示该字符串的长度,后面是字符串内容。Load时,从Stream中读取该记录的过程:首先读出一个DWORD,保存为长度,然后malloc相应长度的内存,用来保存字符串。问题:stream中的内容被破坏,读出的字符串长度非常大,但是当前代码中对该数据的判断仅有:if (nlength >0 &&nlength *size

2012-11-26 16:02:54 1286

原创 我自己写的atoi(). 字符串转整型.

我自己写的atoi(). 字符串转整型.enum ErrCode{ Err_OK, Err_InvalidParam, Err_Overflow, Err_Underflow,};ErrCode myAtoI(const char* pch, int&result){ // param checking. if (NULL == pch) return Err_Inval

2012-09-07 13:28:04 882

原创 自定义TRACE函数,用于向Output Window、控制台和文件输出Log

自己写了一个Multi-Byte和UNICODE两个版本的TRACE函数。#include #include #define BUFSIZE_MAX 1024#ifdef _DEBUG#ifdef UNICODEstatic void MYTRACE(wchar_t *fmt, ...){ // 取得时间戳 [年-月-日 时:分:秒] SYSTEMTIME time; Ge

2012-05-05 07:24:26 1554

原创 利用数组实现双端队列(C++)

/* * 用数组实现一个两端都能插入和删除操作的双端队列 */static const int nLength = 5;static int deque[nLength];static int nIdxHead = 0;static int nIdxTail = 0;enum Err{ NoErr, errOverFlow, errUnderFlow,};// 头进

2012-04-07 19:58:00 3808

原创 排序算法 - 基数排序(C++)

/* * Get the spcific digit of given number. * For example, number 234, * the 0st digit is 4, * the 1st digit is 3, * the 2nd digit is 2, * the 3th digit is 0. */int GetNDigit(int nNumber, i

2012-04-07 15:36:25 6567 1

原创 排序算法 - 计数排序(C++)

/*************************************************** * array: * array that to be sorted. * nLength: * length of array * nK: * 可能出现的最大数字(对10进制数排序则nK=9).******************************************

2012-04-07 15:25:12 928

原创 从预编译结果中得到某个符号被include的路径

当头文件很多,引用关系比较复杂的时候,怎样知道编译过程中,编译器是通过怎样的路径找到某个符号(变量,函数,类)的声明的. 这可以通过查看预编译的输出结果来得到。举例说明.三个头文件,一个cpp文件.Simple1.h#ifndef Project1_Simple1_h#define Project1_Simple1_hclass Circle{public: Circle(in

2012-04-07 14:29:52 649

原创 排序算法 - 快速排序(C++)

// 单向扫描就地重排int Partitation_1Way(int array[], int nIdxLeft, int nIdxRight){ assert(NULL != array); if (nIdxLeft == nIdxRight) return nIdxLeft; // Take the last element as middle value. int nM

2012-04-07 11:21:59 519

原创 排序算法 - 堆排序 (C++)

堆排序的基本过程:1. 找到最大的元素,放到最后面去2. 找到第二大的元素,放在倒数第二个位置。。。依次类推,直到所有元素完成排序。其中每一步中,找最大元素的方法是借助堆。堆可以看成是一个完全二叉树,且每个节点的值都大于它的子节点的值。对于数组来说,就是任意第[i]个元素大于第[2i+1]和第[2i+2]个元素。为了将无序数组变成堆,需要从叶到根依次建堆。也就是从 从后往前第一个有

2012-04-06 18:04:46 594

原创 clang编译器, __declspec(novtable)修饰的class 如果虚函数不声明为纯虚则链接失败.

遇到一个和novtable有关的编译链接问题。class __declspec(novtable) Base{public: // clang 3.1 cannot build without following "=0". But VC can build. virtual bool function(int i)/*=0*/;}; class Child : pu

2012-03-22 15:03:43 955

原创 递归方法反转单向链表(C/C++)

struct Node* RevertLink_Recursive(struct Node* pHead){ if (NULL == pHead) return NULL; if (NULL == pHead->pNext) return pHead; struct Node* pCur = pHead->pNext; // 暂存pHead->pNext struct Node*

2012-02-20 13:33:34 1080

原创 Unix Shell中运行批处理的方法

1. 创建文本文件aaa.sh2. 在该文件中写入要执行的命令3. 赋予该文件可执行的权限 chmod +x aaa.sh4. 运行这个批处理:csh aaa.sh

2012-01-05 10:29:10 1738

原创 用Apple script 将给定文本放入剪切板(相当于Cmd+C)

tell Application "Finder"    set the clipboard to "WhatYouWantoCopy" as textend tell

2012-01-05 10:28:45 1945

原创 Shell中用命令运行Apple script

1. 编辑文本文件aaa.scpt 2. Shell中运行 osa  script  aaa.scpt

2012-01-05 10:27:59 1115

原创 Python 遍历文件夹

import osfor root, dirs, files in os.walk("rootdirectory"):    for f in files:    fileFullName  = os.path.join(root, f)    #  do what you want to. 注:os.walk("rootdirectory")为每个以“rootDi

2012-01-05 10:27:06 1059

原创 Unix批处理(.sh)中 实现按任意键继续

用以下的命令:>/dev/null read -n 1

2012-01-05 10:25:38 1730

原创 Python 逐行读写文本文件

fileReadObj = open("input.txt")fileWriteObj = open("output.txt", 'w')fileLineText = fileReadObj.readline()while ('' != fileLineText): string = fileLineText fileWriteObj.write(string) fileLineTex

2012-01-05 10:25:00 15043

原创 过滤服务器的重复消息

需求场景描述:C/S结构的程序. 客户端监听服务器端发来的信息,并向用户报告. 内容相同的信息,服务器端可能会重复发送3到5次, 每次间隔0.01秒. 用户希望, 对于这些重复发送的信息, 只报告一次即可. 分析:这里面有几个关键的问题:首先, 如何判断当前的消息是否是重复消息. 可以通过保存一个消息列表来实现.这里有两种实现方法: 1, 保证消息列表是绝对最新的, 这样,

2008-04-22 15:52:00 1270

原创 “在强签名的程序集上运行单元测试失败”问题调查

问题背景最初的时候程序集没有签名,单元测试都可以正常运行,并且可以得到代码覆盖率。程序集加上强名称签名,密钥文件有密码保护,由此导致所有单元测试全部运行失败。错误信息如下Strong name verification failed for the instrumented assembly SignedLibrary, Version=1.0.0.0, Culture=neutral, Pub

2008-03-12 15:22:00 1502

C++语言的设计和演化

C++语言的设计和演化

2013-03-19

Inside_the_C++_Object_Model

Inside_the_C++_Object_Model

2013-03-19

Dtrace用户指南(中文版)

Dtrace用户指南(中文版) DTrace 内置在 Solaris 中,是一个全面的动态跟踪工具。DTrace 可以由管理员和开发者使用,并且可以在实时生产系统上安全使用。使用 DTrace,可以检查用户程序的行为和操作系统的行为。DTrace 的用户可以通过 D 脚本语言创建定制程序。定制程序提供了动态检测系统的能力。定制程序为有关特定应用程序行为的具体问题提供了即时简明的回答。

2011-12-19

空空如也

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

TA关注的人

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