自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 资源 (4)
  • 收藏
  • 关注

原创 [Happy Coding] luabind 0.9.1版本尝试

luabind 0.9.1版本尝试1. 编译luabind 0.9.1 linux版本需要bjam binary直接copy boost/1.37.0目录中编译好的bjam binary到~/bin目录,然后在luabin根目录中运行bjam编译之前需要设置环境变量BOOST_ROOT=~/mylibs/boost/1.37.0/ 和LUA_PATH=~/mylibs/lua/

2014-01-14 12:43:12 1679 2

原创 [Happy Coding] 加速Windows GUI debug版本的编译

1. 问题描述我们重构我们的GUI程序时,增加了很多小的工程库,VC++编译GUI最顶层DLL库libpkgA的速度让人几乎无法忍受。以下是从我们的buildbot系统里截取出来的LOG:28>...28>Embedding manifest...28>Build Time 188:17编译时间**188分钟**。GUI app依赖于这个DLL库,同时也依赖

2014-01-10 16:02:18 1216

转载 [ZZ] 编写你的第一个垃圾收集器

这篇文章写的非常好,因此将此转载在这里:编写你的第一个垃圾收集器本文由 伯乐在线 - deathmonkey 翻译自 Bob Nystrom 。欢迎加入技术翻译小组 。转载请参见文章末尾处的要求。伯乐在线补充:本文作者 Bob Nystrom 是 Google Dart 团队的一名工程师,所以下文中”处理一些工作上的事情 “中的链接是指向了 Dart 官网。Bob 之前(曾在

2014-01-05 16:29:32 920

原创 [Effective WX] wxGTK上popup wxMenu的一个crash问题分析及解决方案

在GUI应用编程中,我们通常会提供给用户一些右键菜单选项。加入有这样的编程案例:右键菜单是依托某个窗口,如果某个右键菜单项提供这样的功能:当用户选择它之后,GUI代码做了一些事情后,需要跳转到其它窗口,在跳转之前或之后,我们不得不销毁之前右键菜单依托的窗口类对象。1. 问题描述:在wxGTK版本的程序中,当跳转到另一个窗口之后,GUI程序会crash。位置为$wxsrc/gtk

2014-01-02 21:41:48 1104

原创 [Effective WX] 有关wxGTK的模态对话框(modal dialog)弹出的非模态窗口的问题

有这样的wx gtk上的编程问题:已经有一个模态对话框(因为它是通过ShowModal()显示出来的),然后从它上面弹出一个非模态窗口(为什么会是非模态,应该是或者是业务需求,或者是产品代码中已存在所需功能的这样的非模态窗口类),调用它的Show()函数将其显示出来。结果我们发现,根本就不能在对这个非模态窗口最任何操作。它无法接受任何用户,反而它的父窗口(那个模态对话框)仍像之前一样可以接

2014-01-02 20:19:25 1823 1

原创 <C陷阱与缺陷>中的printf

中关于printf1. 格式符%g, %f, %e这3个格式项用于打印浮点值。%g格式项用于打印那些不需要按列对齐的浮点数特别有用。它在打印出对应的数值时,会去掉该数值尾缀的零,保留6位有效数字。printf("PI = %g\n", 4 * atan(1.0));PI = 3.14159  (共6位有效数字,不包括小数点和前缀0)printf("%g %g

2013-11-18 14:30:51 1090

原创 技术书籍推荐

1.对于C的学习,在学习C基础语法之后,建议一定阅读, 因为它能够帮助你深入理解C中晦涩而又奇怪的语法。

2013-11-14 18:45:50 1162

原创 关于<C专家编程>的笔记

重新阅读, 以下是关于的笔记,觉得要重点掌握的。1. 关于const的变量的赋值foo(const char** p) { }main(int argc, char** argv){    foo(argv);  // ***}上面代码段中//***会产生编译错误。原因在于const char** p = argv;赋值是不被允许的。

2013-11-14 18:30:11 875

原创 [Happy DSA] 如何对单链表进行快速排序

通常快速排序算法都是施行于数组,但它也可以作用于单链表。原理跟数组快速排序是一样的,先partition,然后再递归的解决子单链表的快速排序。以下是从c-algorithms代码中摘下来的代码段:static SListEntry *slist_sort_internal(SListEntry **list,

2013-11-12 10:54:39 1095

原创 [Happy DSA] 删除单链表中任意一个节点的方法

在阅读c-algorithms代码时,又看到如下的代码(删除单链表中任意一个节点)/* A singly-linked list */struct _SListEntry { SListValue data; SListEntry *next;};int slist_remove_data(SListEntry **list, SListEqual

2013-11-11 17:37:24 1166

原创 [读书笔记] Inside C++ Object笔记(第4章: Function语意学)

1. 调用方式经由一个class object调用一个virtual function,这种操作应该总是被编译器像对待一般的nonstatic member function一样的加以决议.// Point3d objobj.normalize();virtual void normalize() {... }2. static member f

2013-11-06 12:21:32 874

原创 [读书笔记] Inside C++ Object笔记(第5章: 关于ctor/dtor/copy-ctor/op=)

1. typedef struct{    float x, y, z;} Point;编译器并不会产生那个trivial的函数(ctor/dtor/copy-ctor/assign-op),因为它会认为它是一个POD数据结构,程序的行为跟C中的一样。注意,即使我们往里面增加有参数的构造函数,其它函数也不会被编译器构造出来。因为它们都是trivial的。2. C++

2013-11-05 20:38:27 1508

原创 [Effective WX] wx的UI UnitTest explained

在wx2.9.4中,wx支持了UI UnitTest。我们完全可以利用这个framework来实现我们自己的UI UnitTest机制。1. wxUIActionSimulator类wxUIActionSimulator类利用不同平台的API(windows:win32api, linux: X11)实现了基本事件发送机制。1. 鼠标相关事件, 2. 键盘按键相

2013-11-05 16:36:46 1285

原创 [Happy Coding] 关于system/exit/wait的解释

关于system/exit/wait的解释先看下面的代码段:static int system2(const char *command){ pid_t pid; int status; pid = fork(); if (pid == 0) { int null = open("/dev/null", O_RDWR); d

2013-10-29 20:44:31 1023

原创 启动我自己的<Effective Python>系列文章

Introduction:接触C++的程序员都知道,我们有系列,但是python好像并没有这样的系列文章或者书籍。但是我们在进行python编程时,常常遇到一个问题有好多种解决方案,我们该如何选择其中一个比较好的,甚至最好的解决方案呢?所谓比较好的解决方案有如下考查点:1. 代码的优雅度,代码是否简洁,简单。譬如一条python语句搞定的,可能会比用多条python语句写就,要简单优雅得多

2013-10-23 12:39:49 2027

原创 晒出自己的.vimrc配置

以下是我的.vimrc配置文件::let mapleader = "," set nuset ts=4 sw=4 expandtab smartindent nohlsearch number incsearch showmatchset bs=2set laststatus=2"set cursorlineset autoreadnmap a :set mouse=a

2013-09-11 19:26:14 1020

原创 [Effective WX] wxPropertyGrid遇上wxWS_EX_VALIDATE_RECURSIVELY产生的BUG

对于wxWidget的第三方库wxPropertyGrid,客户端代码实例化一个wxPropertyGrid时有时会发生CRASH。简单的说,就是下面的代码行在某种情况下会CRASH:wxPropertyGrid* pPG = new wxPropertyGrid(pParentWin, wxID_ANY);那么到底是在哪种情况下呢?编写了一个简单的测试代码,跟踪调试发现,C

2013-06-30 23:43:26 1213

原创 [Happy Coding] fprintf 不正确调用惹的祸

我们都知道C语言标准库操作文件写有一个函数叫做fprintf,用来写出字符串到文件里。这个函数如果不特别注意,会给我们带来很大的麻烦。比如下面的代码段:const char* outstring = "xxxxx";FILE* outfileH = fopen("test.txt", "w");if (!outfileH) { return false;}fprint

2013-06-25 23:33:46 1809

原创 [Happy Coding] 只用BIT操作,求解整型和浮点数的绝对值

Q: Given one integer number, how to solve its absolute with bitwise op, and how about floating number?A:Q1: For integer numbers:1. For positive number, its abs value is still itself2.

2013-01-16 14:50:11 897

原创 [Happy Coding] delete p;而不是delete [] p; 真的会导致内存泄漏吗?

给定下面的C++代码片段:class A { public: int m_data[10];};A* pA = new A[20];delete pA;我们知道这里应该用delete [] pA;,但是delete pA;真的会导致内存泄漏吗?要回答这个问题,我们得从delete pA;和delete [] pA;之间的区别说起。delete 和de

2013-01-13 14:48:05 1043

原创 [Happy Coding] C++中的多态遇上数组

在C++中,当多态遇上数组会发生什么事情,比如下面的代码:class A { public: A() { m_data = 10; } virtual void print() { printf("%d\n", m_data); } int m_data;};clas

2013-01-10 20:39:37 788

原创 [Happy DSA] Print all interleavings of given two strings

Given two strings str1 and str2, write a function that prints all interleavings of the given two strings. You may assume that all characters in both strings are differentExample:Input: str1

2013-01-05 19:09:00 570

原创 [Happy DSA] 求解最长回文子字符串

题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串google,由于该字符串里最长的对称子字符串是goog,因此输出4关于这个问题,有一个比较好的线性时间复杂度的算法Manacher's ALGORITHM这2篇技术博客非常好的阐述了它的算法思想:1) http://www.felix021.com/blog/read.php?2040 (中文

2012-12-23 17:30:50 594

原创 [Happy DSA] 求解直方图下的最大矩形面积

问题描述:比较给定直方图对应的值列表为[1, 2, 4, 2, 1],那么最大的矩形面积应该是[2, 4, 2]描述的区间矩形面积为6(宽度为3,高度为2)。关于这个问题,网上有比较多的解决方案,时间复杂度从O(n^2)、O(nlgn),到O(n) (需O(n)空间)。http://blog.csdn.net/arbuckle/article/details/710988

2012-12-22 22:21:11 1105

原创 [Happy DSA] 2D平面上n个点,求解最接近45度的2点连线

有这么一个几何问题:2d平面的n个点,怎么求解连线最接近45度的那些点的组合。1. 朴素方法:我们能想到的最naitive的方法就是求解平面上所有2点连线的斜率,斜率的绝对值最接近于1的那些点的组合,就是我们想要的。要知道n个点能构成n^2条线段,故这种方法的时间复杂度就是O(n^2)。但是我们期望有更好的,时间复杂度较小的解决方法。2. 一个比较好的方法如果熟悉计

2012-11-25 23:09:56 869

原创 [Happy DSA] 将已排序的元素序列快速的插入到stl set中

已知一个从小到大已排序的元素序列,如何插入到stl set中最快。1. stl set内部结构我们知道stl set内部是用红黑树来实现的。红黑树是一种平衡二叉查找树,它有以下4个用来平衡的条件:每个节点要么是红色,要么是黑色根节点为黑色红节点的子节点一定是黑色任一个节点至页节点的任何路径上,黑节点的个数相等所以当插入一个新的非根节点时,它一定要是红色,是为了不破坏

2012-11-25 21:52:37 1008

转载 有关僵死进程和孤儿进程的小结

一、定义:什么是孤儿进程和僵尸进程   僵尸进程:一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。   孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。示例:    僵尸进程:一个子进程在其父进程还没有调用

2012-11-06 00:25:42 599

原创 [Effective WX] wx中的反射机制:DANYMIC_CLASS的实现

两个宏:DECLARE_DYNAMIC_CLASSIMPLEMENT_DYNAMIC_CLASS当一个类想借助于wx实现的dynamic_class的机制,必须得继承于wxObject或者是它的子类。有了这个前提条件之后,在你的类中,你只需要这样操作:1. 在类的声明中,写下:DECLARE_DYNAMIC_CLASS($your_class_name);

2012-11-05 14:23:14 1666

原创 [Happy DSA] 2个浮点数的最大公约数的算法小结

我们知道2个整数有最大公约数(GCD)和最小公倍数(LCM)的说法。而且最大公约数GCD有一个公认的欧拉算法GCD。它的算法如下:GCD(a, b) { return b ? GCD(b, a % b) : a;}有了GCD,当然也很好求解LCM。现在,问题来了,给定2个浮点数,怎么求解它们的GCD?1. 数学上的方法一个比较的想法就是,既然我们已有的工

2012-10-30 22:32:25 1320

原创 [Happy BASH] 关于BASH程序的输入方式小结

在*NIX环境中,内部命令或外部命令(Utility)支持以下三种输入方式:1. 命令自己提供的输入参数,更准确地说是处理的对象,譬如AWK中的文件。不是那些控制参数。2. 从STDIN输入。3. 从文件重定向到STDIN作为输入。对于2,用户每输入一行(ENTER键结束),程序就输出它。而3不同,看到重定向操作符,SHELL会将文件的输入重定向到STDIN中,作为命令的标

2012-10-26 18:28:29 963

原创 [Happy Coding] 一段调用STL算法的程序代码的效率分析

已知一个STD::SET,想要根据一个predicate来从中去除所有的满足predicate(返回true)的元素。我们首先想到的是STL提供的remove_if函数。下面我们来看看这个函数是如何实现的:1133   template1134     _ForwardIterator1135     remove_if(_ForwardIterator __fir

2012-10-24 19:41:05 830

原创 [Happy BASH] BASH 编程学习点点滴滴2

1. 算数表达式:let Y=(X+2)*10Y=$(( ( X + 2 ) * 10 ))let 命令不允许参数带有任何的空格,因为那是作为一个独立的参数传入的。而$((...))操作符却没有这些限制。里面可以包含任何的空格等。let X+=5 Y*=3echo $(( X+=5 , Y*=3 ))上述let中,2个参数之间不需要增加任何','。

2012-10-24 18:13:55 632

原创 [Happy BASH] BASH 编程学习点点滴滴

1. 用ECHO命令,但不想要它输出行末的换行符,可以采用以下3种方法:a) printf "xxxx"  b) echo -n "xxxxx"c) echo -e "xxx\c"注意:-e选项代表启用ESCAPE字符,\c代表不输出其后的所有字符. 所以"xxxx\cyyyy"将只会输出“xxxx"。2. 将ls命令的输出导出到一个文件中。ls > somefil

2012-10-23 19:11:21 1236

原创 [Happy BASH] BASH中麻烦的空格处理

想写一个BASH脚本,LOOP某个目录下所有的文件和子目录,然而目录下的文件或子目录文件名字有些是包含空格的。BASH脚本处理时需要特别小心。如果我们按照下面的方式来写:for e in `ls`do echo "$e"done你将得不到你想要的。因为ls命令返回的文件名项中可能包含有空格。比如目录包含A.TXT, B C.TXT, CD.TXT。那么BASH展开

2012-10-20 11:34:03 2808

原创 [Happy BASH] BASH中的$*和$@的区别

首先来看一段BASH代码:echo "\$@=" $@echo "\"\$@\"=" "$@"echo "print each param from \$@"for var in $@do echo $vardoneecho "print each param from \"\$@\""for var in "$@"do echo "$v

2012-10-17 20:59:13 2414

原创 [Happy BASH] Assigns the file descriptor (fd) to file for output

File descriptors 0, 1 and 2 are reserved for stdin, stdout and stderr respectively. However, bash shell allows you to assign a file descriptor to an input file or output file. This is done to improve

2012-10-16 23:49:22 961

原创 [Happy BASH] BASH的case语句学习

The case statementSyntaxThe syntax is as follows: case $variable-name in pattern1) command1 ... ....

2012-10-16 20:28:31 8482

原创 [Happy BASH] BASH的loop学习笔记

1. For Loop:BASH中for loop有以下几种写法:The for loop syntax is as follows: for var in item1 item2 ... itemN do command1 command2

2012-10-16 19:48:32 4020

原创 [Happy DSA] 图像的contour trace算法C++实现

问题提出:给定一个二维图像,基于某个threshold,来提取contours。在图形图像学中,这个问题有比较好的解决方案,google "coutour trace",可以得到以下2个比较好的参考文献:1. http://en.wikipedia.org/wiki/Moore_neighborhood2. http://www.imageprocessingplace.com/d

2012-10-15 16:21:57 4754 7

原创 boost::assign的用法浅析

在boost中看到这样的代码:#include // for 'operator+=()'#include ; using namespace std;using namespace boost::assign; // bring 'operator+=()' into scope{ vector values; values += 1,2,3,4,5,6,7

2012-09-26 19:59:46 3944

java解惑中文

java puzzerls的中文版,java大牛又一本著作。

2015-12-23

The Design of the unix operating system-CN

这是一本相当经典的书,传说Linus是在读过它之后,参考它实现最初的linux系统的。这本书深入浅出的介绍unix system V R2的实现细节,包括文件系统和进程。非常简明和清晰。

2015-12-23

编写可读代码的艺术

这本书是前google工程师所著,解释了好的代码应该是人可读的,而且如何写出这样的好的代码。

2015-12-23

The Design and Implementation of the 4.4 BSD Operating System

经典的4.4 BSD设计与实现,描述了4.4BSD的内部结构、概念、数据结构以及在实现4.4BSD系统功能时采用的算法,侧重于UNIX系统伯克利版本的功能、数据结构和采用的算法

2015-12-05

空空如也

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

TA关注的人

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