自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

stpeace的专栏

涛哥不知何许人也,亦不详其姓字。好读书,求甚解。常著文章自娱,颇示己志。忘怀得失,有始有终......

原创 0-1背包问题与动态规划的C/C++代码

那一年, 非计算机专业的我听到0-1背包和动态规划, 觉得很高大上, 其实, 动态规划无非就是寻找高中数学中所说的递推公式而已。最近又复习到0-1背包问题和动态规划, 所以打算用代码来玩玩。        0-1背包问题: 一个小偷来出来活动了, 拿了一个背包, 最多可以装50斤的东西的小袋子...

2015-06-30 23:53:26

阅读数 26313

评论数 8

原创 fibonacci递归算法的“备忘录/Memo”优化法

我们先看一个简单的fibonacci递归程序: #include #include using namespace std; int fun(int n) { if(1 == n || 2 == n) { return n; } return fun(n - 1) + fun(...

2015-06-28 21:17:40

阅读数 7779

评论数 0

原创 2路bit-map的应用:test.txt中有42亿个无符号整数,从小到大打印其中只出现过一次的数 。限制: 可用内存为1.5GB.

先看这样一个问题:test.txt中有42亿个无符号整数,从小到大打印其中只出现过一次的数 。限制: 可用内存为1.5GB.           前面, 我们已经深入讨论了bit-map, 在本文中, 我们来看看2路bit-map, 其实, 它无非是对bit-map的扩展, 用了两个数组而已罢了。...

2015-06-28 18:17:11

阅读数 6430

评论数 2

原创 从rand5到rand7的思路和代码验证(某公司社招笔试题)

我们先来看这样一个问题, 已知rand5能等概率产生1, 2, 3, 4, 5, 现要用rand5来实现rand7(rand7的意思是要等概率产生1, 2, 3, 4, 5, 6, 7), 该怎么搞呢? 我看了一下网上资料, 很多都是凑出来一个结果, 没有什么过程思路, 我觉得虽然结果正确, 但总...

2015-06-28 16:42:50

阅读数 8252

评论数 2

原创 利用linux的mtrace命令定位内存泄露(Memory Leak)

一谈到内存泄露, 多数程序员都闻之色变。 没错, 内存泄露很容易引入, 但很难定位。  以你我的手机为例(假设不经常关机), 如果每天泄露一些内存, 那么开始的一个星期, 你会发现手机好好的, 当内存泄露积累到一定程度,  那就是各种卡死了, 系统异常, 最后死机, 不得不重启。         ...

2015-06-25 23:33:48

阅读数 26029

评论数 12

原创 linux中的strings命令简介

在linux下搞软件开发的朋友, 几乎没有不知道strings命令的。我们先用man strings来看看:        strings - print the strings of printable characters in files.          意思是, 打印文件中可打印...

2015-06-25 22:44:19

阅读数 40210

评论数 3

原创 bit-map再显身手:test.txt中有42亿个无符号整数, 求文件中有多少不重复的数(重复的数算一个)。限制: 可用内存为600MB.

来看看这样一个问题:test.txt中有42亿个无符号整数, 求文件中有多少不重复的数(重复的数算一个)。限制: 可用内存为600MB.           思路很简单, 还是用bitmap, 无需多啰嗦, 大家可以直接参考我之前的与bit-map有关的博文:        http://blog...

2015-06-24 23:13:15

阅读数 6599

评论数 0

原创 斗地主之洗牌(shuffle)程序的测试程序

在博文http://coolshell.cn/articles/8593.html中, 皓哥已经详细讨论了各种shuffle程序, 并给出了测试的结果, 但博文中没有提供测试代码。 其实, 测试代码也很简单, 在本文中, 我来写一下测试代码。         在之前的博文http://blog...

2015-06-24 22:16:50

阅读数 6670

评论数 2

转载 如何定位Android NDK开发中遇到的错误(内附我的总结补充)

转自:http://www.csdn.net/article/2014-12-30/2823366-Locate-Android-NDK 作者: 尹春鹏, Testin云测技术副总裁,Testin崩溃大师研发主管。毕业于清华大学工程物理系;专注于移动应用开发,2011年起参与创建Testin,专

2015-06-23 23:52:06

阅读数 6323

评论数 0

原创 linux程序调试命令addr2line之入门简介(本文先不聊gdb调试)

addr2line有什么作用呢? 可别小瞧它, 它可以定位到代码出错的位置。 下面, 我们来看看这个简单的代码: #include int main() { int *p = NULL; *p = 0; printf("bad\n&q...

2015-06-23 23:07:58

阅读数 9823

评论数 7

原创 bit-map再显身手:test.txt中有42亿个无符号整数, 求不存在于test.txt中的最小无符号整数。限制: 可用内存为600MB.

先看看这个题目:test.txt中有42亿个无符号整数, 求不存在于test.txt中的最小无符号整数. 限制: 可用内存为600MB. 又是大数据。 看到42亿, 有灵感没? 要知道, 2的32次方就是42亿多一点点啊。42亿个无符号整数存在于文件中, 我们可以考虑在内存中用...

2015-06-22 20:34:54

阅读数 6516

评论数 0

原创 bit-map牛刀小试:数组test[X]的值全部在区间[1, 8000]中, 现要输出test中重复的数。要求:1. 不能改变原数组; 2.时间复杂度为O(X);3.除test外空间不超过1KB

先来看看这个题目:数组test[X]的值全部在区间[1, 8000]中, 现要输出test中重复的数。要求:1. 不能改变原数组; 2.时间复杂度为O(X);3.除test外空间不超过1KB.        好, 我们先给出一个不限空间的解法(为了程序方便, 假设X为10, 实际上可能很大):...

2015-06-22 18:45:30

阅读数 6487

评论数 6

原创 并查集的“并优化”(leader合并)和“查优化”(路径压缩)

在博文http://blog.csdn.net/stpeace/article/details/46506861中, 我们已经详细地了解了并查集, 不过, 那个程序略显粗糙, 下面我们考虑来优化一下。        先给出没有优化的代码吧: // taoge的并查集 #include us...

2015-06-22 16:45:53

阅读数 7497

评论数 0

原创 不要被sizeof(i++)、sizeof(++i)、sizeof(fun())给绊倒了------杜绝写这种易误导人的代码

看程序: #include using namespace std; double fun() { cout << "oh, my god" << endl; return 0.0; } int main() { int i = 0; in...

2015-06-22 14:37:46

阅读数 7156

评论数 2

原创 斗地主之洗牌(shuffle)程序(某公司招聘笔试、面试试题)

一副poker通常有54张, 为了简便起见, 假设现有一副10张的poker牌, 试给出洗牌的C/C++代码。        嗯, 本质就是要生成10个随机数(1到10), 而且不能重复。  其实, 我们完全可以先保证不重复, 然后随机, 于是可以这么考虑:给定数列1, 2, 3, 4, 5,...

2015-06-21 18:55:32

阅读数 6878

评论数 2

原创 Effective C++条款36解读: 绝不重新定义继承而来的non-virtual函数

我们来看看这样一个简单的程序: #include #include using namespace std; class A { public: void fun() { cout << "A" << endl; } }; class ...

2015-06-21 16:40:09

阅读数 5716

评论数 0

原创 Effective C++条款22解读: 将成员变量生命为private

我们先来看一个简单的程序: #include #include using namespace std; // 类的提供者 class Programmer { public: string name; string address; // 如下的两个const不可少 void s...

2015-06-21 16:07:39

阅读数 5849

评论数 0

原创 《生命如一泓清水》俞敏洪

早年在读大学的时, 买了一本老俞的《生命如一泓清水》, 送给一位朋友。  今天, 又把这书看了一遍, 老俞的文字还是还是那么情真意切。 也感觉到岁月从指间流过。        下面这几章节, 是我比较喜欢的, 印象很深, 所以一看到题目就知道讲的啥:        1.  生命如一泓清水   ...

2015-06-21 14:58:07

阅读数 7165

评论数 0

原创 当才华配不上梦想,那就静心反思和修炼吧!

今天端午节, 老伴回家去了, 我一个人宅在家里, 看看书, 也不免对近况进行反思。毕竟, 这个月的躁动, 犹如大海波澜, 不停地在心中涌动。 内心总有一种声音在反复告诉自己: 走出去, 走出去, 外面的世界很精彩。

2015-06-20 22:19:16

阅读数 7167

评论数 3

原创 Effective C++条款16解读:成对使用new和delete时要采取相同形式

Scott Meyers说:成对使用new和delete时要采取相同形式。 意思很简单, 但我们程序员应该非常小心, 尤其是在处理堆内存问题的时候。 new和delete使用不恰当, 会产生未定义的不明确行为。 比如, 如下方式就是很好的方式: #include using namespace ...

2015-06-20 18:32:20

阅读数 5626

评论数 0

原创 Effective C++条款20解读:宁以pass by reference to const替换pass by value

我们先来看一个简单的程序: #include using namespace std; class A { private: string name; string addr; }; void fun(A a) { } int main() { A a; fun(a); re...

2015-06-20 18:04:23

阅读数 5693

评论数 0

原创 Effective C++条款26解读: 尽可能延后变量定义式的出现时间

Scott Meyers大师在Effective C++中说:尽可能延后变量式的出现时间。 我是很认可这个观点的。         每个人都有自己的习惯, 每次看到这样的代码, 我就感觉到不太舒服: #include using namespace std; int main() { i...

2015-06-20 16:47:01

阅读数 5778

评论数 0

原创 利用SQL语句查找姓“张”且分数大于80的记录(某公司招聘笔试试题)

某公司招聘的笔试试题中有这样一个题目:利用SQL语句查找姓“张”且分数大于80的记录。 其实, 这个题目很简单, 主要考察求职者有没有用过SQL, 下面, 我们来一起实战一下。         关于SQL练习环境的搭建, 其实非常简单(比如在Windows上, 你只需要下载一个sqlite3.ex...

2015-06-20 15:40:33

阅读数 7803

评论数 1

转载 程序员技术练级攻略(皓哥)

转载地址:http://coolshell.cn/articles/4990.html         作者:陈皓(也就是我经常提起的皓哥)                   程序员技术练级攻略(皓哥) 月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《A...

2015-06-20 13:00:12

阅读数 6139

评论数 0

原创 再次简介grep命令和wc命令(某公司招聘笔试试题)

在某公司招聘的笔试环节中, 有这样一个题目:用shell命令输出a.txt中含有good单词的行数(goodbye这样的不算). 其实, 这个题目还是比较基础的, 考察的是基本命令的用法。 其实主要考察grep和wc.         我们先来看一下错误的方法: $ cat a.txt goo...

2015-06-20 12:40:09

阅读数 6391

评论数 2

原创 连awk都不熟悉还搞什么Linux后台开发啊-----顺便分享一下与awk有关的笔试、面试经历

先来看看某公司的某次笔试题目: 如何用shell scrip打印出文件中的第二列?  当然, 可能有很多方法来实现这个功能, 但最简单的莫过于awk了。 下面, 我们来看看: Administrator@51B6904C3C8A485 ~/test $ cat a.txt lucy 90 lily...

2015-06-20 12:09:27

阅读数 7464

评论数 0

原创 Linux中xargs命令的重要作用------顺便分享一次面试经历和一次实战经历

在某公司的某次面试中, 被问到这样一个题目:如何删除当前目录和子目录下所有的.txt文件?  如果对linux命令不熟悉, 则看到题目就会有点傻眼。 当然, 如果你清楚xargs命令的作用, 那就好说了。 一句话:xagrs会接收管道传过来的参数, 并传给管道后面的命令。 下面, 我们来一起看看:...

2015-06-19 23:45:02

阅读数 7739

评论数 4

原创 绝对不要在析构函数中释放单例-----这个至少3000元的bug让人蛋疼两三天

某系统在某特殊情况下, 会出现bug, 经我非常保守地估计, 这个bug的定位修改费用至少3000元, 这还不包括其他的费用。 脱离具体场景, 我来抽象出一个简单的模型, 示例代码如下: #include using namespace std; class A { private: sta...

2015-06-19 19:10:19

阅读数 7481

评论数 4

原创 可变参数的add函数的实现: int add(int argc, ...){}

可变参数的函数, 看似神奇, 其实非常简单。 在本文中, 我就不高谈阔论了, 仅仅给出一个示例: #include using namespace std; int add(int argc, ...) { int sum = 0; int *p = &argc + 1; int...

2015-06-18 23:40:53

阅读数 6029

评论数 0

原创 结构体作为STL map的key时需要注意什么? (某公司招聘面试试题)

某公司招聘的面试环节, 有这样一个题目:结构体作为STL map的key时需要注意什么?   对于懂STL map的同学来说, 这个题目还是比较easy的, 先看程序: #include #include #include using namespace std; struct Info ...

2015-06-18 22:51:52

阅读数 7301

评论数 0

原创 Effective C++条款07解读:为多态基类声明virtual析构函数 (某公司招聘面试试题)

经历过某同一家公司的两次面试, 都被问到了基类虚析构函数问题, 其实, 很简单很基础。 下面我们来看程序: #include using namespace std; class A { public: ~A() { cout << "~A" <&...

2015-06-17 23:08:56

阅读数 5776

评论数 0

原创 Effective C++条款06解读 : 若不想使用编译器自动生成的函数, 就应该明确拒绝

我们知道, C++编译器经常在背地里捣鬼, 定义一些默认的函数。 那如果不想用编译器生成的这些默认函数, 该怎么办呢? 很简单: 我们自己去明确声明, 不让编译器来骚扰。        比如, 如果我们要阻止类的使用进行对象拷贝和复制, 可采用如下的方式: #include using name...

2015-06-17 22:31:29

阅读数 5693

评论数 0

原创 Effective C++条款05解读: 了解C++默默编写并调用哪些函数

C++编译器会在背后做许多事情, 这也是C++复杂的原因之一。  比如, 如果你写了一个空类: #include using namespace std; class Empty { }; int main() { return 0; }       实际上就好像写了如下的程序一样: ...

2015-06-16 22:55:15

阅读数 5805

评论数 0

原创 聊聊map和vector的迭代器失效问题(某公司招聘笔试试题)

当删除一个STL容器(比如map, vector)中的某个元素时, 会引起迭代器失效, 所以, 我们务必提高警惕。 某次笔试, 我遇到这样一个题目: 删除map<int, int>中value为5的倍数的元素。 该题看起来很自然很简单, 实则有迭代器失效的陷阱。        如...

2015-06-16 00:12:43

阅读数 13117

评论数 31

原创 并查集的简介及其C/C++代码的实现(某公司招聘笔试试题)

当年, 我在一个公司实习, 某次, 在一次算法交流的过程中, 我第一次听到了并查集这个看似高大上的概念, 也再一次感觉到了自己的无知。         对于一个非计算机专业的人来说, 你跟他说并查集, 就有点像你对着计算机专业的人说Gibbs现象或者FFT一样, 你懂的。 后来, 某公司的招聘笔试...

2015-06-15 20:10:24

阅读数 10625

评论数 1

原创 Effective C++ 条款01解读: 视C++为一个语言联邦

我在C/C++语言社区中混迹过一段时间, 发现有一种不太好的现象: 某些C程序员看不起C++, 以显得自己很牛逼。 当然, 一些人尝到C++的甜头后, 又看不起C.  其实, 何必这样呢? 任何语言都有自己的用武之地。 比如, 在图像处理领域, C语言确实让人不敢恭维, 但在嵌入式领域, matl...

2015-06-14 23:45:29

阅读数 5908

评论数 0

原创 Effective C++ 条款02解读: 尽量以const, enum, inline替换#define

其实, 尽量以const, enum, inline替换#define的意思是:

2015-06-14 22:35:59

阅读数 6068

评论数 0

转载 为什么要读书,有没有替代方法

基本赞同原作者的观点, 我也很爱读书, 所以转载过来。转载地址:http://blog.csdn.net/chgaowei/article/details/44925919 从我的理解上谈一下为什么要读书,以及读书的替代品。 读书的好处与本质: 好处很明显,增长知识和阅历,...

2015-06-14 18:17:08

阅读数 5904

评论数 0

原创 进程调度算法之“先来先服务”、“短任务优先”和“时间片轮选”

我们知道, 引入多进程后, 操作系统可以同时将多个进程载入到内存中。 如此一来, 在内存中便有多个进程存在, 但是, 对于单cpu来说, 任何一个时刻, 只有一个进程占据cpu. 那么, 为了让各个进程舒服满意, 操作系统该如何进行进程调度呢(也就是把cpu分配给谁)? 本文, 我们来介绍最简单的...

2015-06-14 17:18:46

阅读数 13728

评论数 6

原创 《计算机的心智:操作系统之哲学原理》 邹恒明(这本书写的不错, 非计算机专业的朋友可以读读, 补补操作系统知识和原理)

现在IT这么火, 大家基本都会写个printf("hello world\n");之类的东东, 很多半路出家的人, 热衷于画画界面之类的, 今天画个iOS的Button, 明天再画个Android的Label,  后天倒腾一下MFC的Edit, 或者用Qt弹个框框, 成就感满满...

2015-06-14 15:44:33

阅读数 8007

评论数 11

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