自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

认知 行动 坚持

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

  • 博客(50)
  • 资源 (19)
  • 收藏
  • 关注

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

那一年, 非计算机专业的我听到0-1背包和动态规划, 觉得很高大上, 其实, 动态规划无非就是寻找高中数学中所说的递推公式而已。最近又复习到0-1背包问题和动态规划, 所以打算用代码来玩玩。 0-1背包问题: 一个小偷来出来活动了, 拿了一个背包, 最多可以装50斤的东西的小袋子。 他眼睛一亮, 发现了三件宝贝a, b, c. 其中a重10斤, 价值60元; b重20斤

2015-06-30 23:53:26 33272 11

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

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

2015-06-28 21:17:40 10218 1

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

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

2015-06-28 18:17:11 8125 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 10785 3

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

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

2015-06-25 23:33:48 37438 13

原创 linux中的strings命令简介

在linux下搞软件开发的朋友, 几乎没有不知道strings命令的。我们先用man strings来看看: strings-printthestringsofprintablecharactersinfiles. 意思是, 打印文件中可打印的字符。 我来补充一下吧, 这个文件可以是文本文件(test.c), 可执行文件(test

2015-06-25 22:44:19 69598 7

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

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

2015-06-24 23:13:15 8257 1

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

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

2015-06-24 22:16:50 8404 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 8317 1

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

addr2line有什么作用呢? 可别小瞧它, 它可以定位到代码出错的位置。 下面, 我们来看看这个简单的代码:#include int main(){ int *p = NULL; *p = 0; printf("bad\n"); return 0;} 这个程序很小, 我们可以一眼就看出程序在运行期出错。

2015-06-23 23:07:58 12081 7

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

先看看这个题目:test.txt中有42亿个无符号整数, 求不存在于test.txt中的最小无符号整数. 限制: 可用内存为600MB. 又是大数据。 看到42亿, 有灵感没? 要知道, 2的32次方就是42亿多一点点啊。42亿个无符号整数存在于文件中, 我们可以考虑在内存中用bit-map与之建立二值状态映射。 2的32次方个无符号整数, 需要内存空间为512M, 这个是很容易计算的。

2015-06-22 20:34:54 8184 1

原创 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, 实际上可能很大):#include using namespace std;#define X 10#

2015-06-22 18:45:30 8099 6

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

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

2015-06-22 16:45:53 9516

原创 不要被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; int a = sizeof(i++); // sizeof在编译期间计算, i++不执行 cout << i << endl; cout

2015-06-22 14:37:46 8902 3

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

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

2015-06-21 18:55:32 8545 2

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

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

2015-06-21 16:40:09 7162

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

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

2015-06-21 16:07:39 7261

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

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

2015-06-21 14:58:07 9603 1

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

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

2015-06-20 22:19:16 8866 3

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

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

2015-06-20 18:32:20 7141 1

原创 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); return 0;} 我们在调用fun函数的时候, 会有形参的拷贝, 会调用A的构造函数,

2015-06-20 18:04:23 7139

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

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

2015-06-20 16:47:01 7236

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

某公司招聘的笔试试题中有这样一个题目:利用SQL语句查找姓“张”且分数大于80的记录。 其实, 这个题目很简单, 主要考察求职者有没有用过SQL, 下面, 我们来一起实战一下。        关于SQL练习环境的搭建, 其实非常简单(比如在Windows上, 你只需要下载一个sqlite3.exe即可), 只需要参考我之前的博文即可:“为想学SQLite或练习SQL语言的朋友搭建简单的命令行环

2015-06-20 15:40:33 10926 2

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

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

2015-06-20 13:00:12 8295

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

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

2015-06-20 12:40:09 7935 2

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

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

2015-06-20 12:09:27 9114

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

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

2015-06-19 23:45:02 9547 5

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

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

2015-06-19 19:10:19 9615 4

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

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

2015-06-18 23:40:53 8666

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

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

2015-06-18 22:51:52 10609 1

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

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

2015-06-17 23:08:56 7183

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

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

2015-06-17 22:31:29 7094

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

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

2015-06-16 22:55:15 7250 1

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

当删除一个STL容器(比如map, vector)中的某个元素时, 会引起迭代器失效, 所以, 我们务必提高警惕。 某次笔试, 我遇到这样一个题目: 删除map<int, int>中value为5的倍数的元素。 该题看起来很自然很简单, 实则有迭代器失效的陷阱。 如果对迭代器失效问题一无所知, 则很容易写出如下的错误代码:#include #include using namespace std;typede

2015-06-16 00:12:43 16714 34

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

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

2015-06-15 20:10:24 15678 4

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

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

2015-06-14 23:45:29 7493 1

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

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

2015-06-14 22:35:59 7557

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

基本赞同原作者的观点, 我也很爱读书, 所以转载过来。转载地址:http://blog.csdn.net/chgaowei/article/details/44925919从我的理解上谈一下为什么要读书,以及读书的替代品。读书的好处与本质:好处很明显,增长知识和阅历,锻炼人的思想,提升专业技能。为什么读书有这些好处,这就涉及到读书

2015-06-14 18:17:08 7453 1

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

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

2015-06-14 17:18:46 18119 7

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

现在IT这么火, 大家基本都会写个printf("hello world\n");之类的东东, 很多半路出家的人, 热衷于画画界面之类的, 今天画个iOS的Button, 明天再画个Android的Label,  后天倒腾一下MFC的Edit, 或者用Qt弹个框框, 成就感满满的。       其实呢? 这些东西玩玩, 并无坏处,但倘若以为这样就是一个合格的程序员, 那就有点天真的。

2015-06-14 15:44:33 10885 15

ipscanner.rar

获取网络的ip, host name和mac地址。我想免费让大家下载, 但csdn规定了必须设置积分, 没办法。

2017-12-01

linux protobuf安装文件

linux, google protobuf, 安装文件。 使用方法:http://blog.csdn.net/stpeace/article/details/53029812

2016-11-04

linux tree命令的源码

很多linux上没有tree命令, 该资源提供了tree命令的源码, 大家可以下载, 编译并安装, 具体请参考:http://blog.csdn.net/stpeace/article/details/49524273

2015-11-01

编译好的openssl库和头文件

编译好的openssl库, 欢迎使用, 具体使用方法, 请见http://blog.csdn.net/stpeace/article/details/41921287

2014-12-14

入门数据库sqlite3的最佳实践资料

入门数据库sqlite3的最佳实践资料, 里面是我打包好的程序, 附加一些数据库工具, 非常可以。 当然你也可以参考我的博文http://blog.csdn.net/stpeace/article/details/38503843

2014-08-12

Wireshark抓包工具

Wireshark抓包分析工具, 非常好用, 非常实用。

2014-06-08

优秀的截图软件

截图软件fast stone. 解压即可使用。 解压后, 可能会产生一些依赖性文件, 请不要轻易删除。

2014-05-25

获取网卡信息所需的头文件和库

获取网卡信息所需的头文件和库:IPEXPORT.H Iphlpapi.h IPHLPAPI.LIB IPRTRMIB.H IPTYPES.H

2013-10-19

哈希值计算软件

可以计算md5, sha1, sha256等哈希值的工具软件,我无法形容它的优秀。

2013-10-18

在Windows下学习Linux命令

在Windows下想学linux命令的同志,你终于找到了该资料。用法:解压,然后双击其中的cmd.exe, 然后就可以输入linux命令了,比如ls等(千万要注意,不要进行路径切换,否则linux命令就执行不了,总之,要确保相应文件在当前目录下)。

2013-08-08

计算机网络第5版谢希仁编配套光盘资料

计算机网络第5版谢希仁编配套光盘资料,这是计算机考研的指定教材对应的资料,你应该拥有它。

2013-07-19

OllyDBG反汇编工具

OllyDBG反汇编工具,非常强大。深化功底,需此工具。

2013-07-19

masm汇编器

微软的汇编器,其中有关键的masm.exe和link.exe,我试过,发现可用。

2013-07-19

word转pdf的插件

word转pdf的插件,直接安装即可,安装完后,“另存”word文档的时候,可以选择pdf(我用的word版本为2007)。

2013-07-18

音频处理软件Gold Wave

一款强大的音频处理软件,可以对音频进行各种处理。例如:如果你在准备某考试,需要听音频资料,但是,你嫌音频太慢,而且你的MP3播放器无法加速,那么你可以用该软件对音频本身进行加速,即改变音频本身,使之变快。另外,在处理的时候,可以实现批处理(我亲自实践过,发现可行)。

2013-07-17

H.264visa软件

一款非常强大的H.264视频码流的解析软件,可以看到解码后视频的像素值,运动矢量,宏块等非常多的信息(也可以打开原始的YUV视频,并看到像素值,但必须先用该软件打开某一H.264视频码流),比Elecard StreamEye软件(有bug)更为强大,我一直用H.264visa,目前没有发现有什么bug. 另外,该软件安装后1个月就会过期,没有关系,1个月后,你重新安装一次即可。

2013-07-13

Elecard StreamEye

Elecard StreamEye,一款分析H.264视频码流的工具,如果你在学习H.264,那么,你应该拥有它。

2013-07-13

YUVviewer :原始的YUV视频的播放器

原始的YUV视频的播放器(软件不是我写的),如果你做视频处理、视频压缩编码、视频通信、视频检索、视频取证,那么你很可能需要它。该软件的缺点是:你无法看到YUV视频的像素值。

2013-06-24

经典的C语言编译器:TC2.0

一款经典的C语言编译器:Borland Turbo C 2.0. 怀念Borland产品的人可以用一下,体验一下DOS下的编程。如果是C语言初学者,建议用MS的VC++6.0. 我试过,该TC2.0可以正常使用。

2013-06-23

空空如也

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

TA关注的人

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