自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

认知 行动 坚持

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

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

原创 linux目录也可以用双斜线哈!

以前还真不知道,最近工作才发现, 原来linux目录也可以用双斜线, 网上找了一下, 也如此:

2016-10-31 23:54:50 13640 1

原创 限制内存对齐的 #pragma pack(1)

最近遇到一个结构体, 我拷贝出来, sizeof计算了一下, 发现是104,   但实际数字节数, 发现是95, 而且官方文档也介绍是95, 奇怪了。        原来, 数字节是95, 官方文档对应的实现加了#pragma pack(1), 限制内存对齐, 随意此时计算的sizeof也是95,   而我单独拷贝结构体出来, 没有拷贝#pragma pack(1), 所以就自然不是95咯。

2016-10-31 07:47:56 7827 1

原创 平时积累的重要性

为什么要积累?大话扯多了没有意思, 说说小话吧。 晚上11点的时候, 同事反馈一个问题, 外网有几个用户投诉了, 要赶紧看看。        看了一下, 是个概率行问题。 根据现有流水和log, 有一个地方需要确认, 貌似只能看代码了? 而我是不太喜欢这么做的, 鉴于代码只是本地操作, 那就拷贝出来测试吧。 但是, 其中会用到我之前写的一个函数:void unixTime2Str(int

2016-10-31 07:41:22 9622 1

原创 搬家送书咯!

大学毕业的时候, 送了所有电子电路的书, 转战通信。 研究生毕业的时候, 送了所有的通信系统的书, 转战嵌入式。 从前东家裸辞的时候, 送了所有嵌入式的书, 转战互联网。 最近搬家, 打算送掉所有与Windows相关的书和其他的一些书, 哈哈 不过, 如下的书, 我还是要自己带走的, 等我掌握得...

2016-10-23 22:45:01 9277 20

原创 用实例程序再聊makefile指定头文件和库出错的那点破事

在文章http://blog.csdn.net/stpeace/article/details/50985578中, 我说过makefile指定头文件和库文件出错的那点破事, 今天破事重提, 用实际例子来聊一下.taoge@localhost Desktop> cat basic_add.cint basic_add(int x, int y){ return x + y;}ta

2016-10-21 22:38:40 7870 1

原创 linux中的显式运行时链接---dlopen、dlsym、dlerror、dlclose搞起

        之前, 我们在linux下制作过动态库, 并卖过。 当时我们采用的是隐式链接, 也就是说, 在代码中, 我们不用去管如何打开动态库、如何链接(这些活都交给了链接器), 只需要管如何调用就行。  隐式链接的动态库被进程加载到内存后, 就一直站着这个坑, 直到进程终结。 费时费力, 浪费地盘, 而且不灵活。       于是, 一种动态加载(程序中指定加载)的方式就出现了, 这就是我们...

2016-10-21 21:54:36 8053 1

原创 为什么一些linux基础静态库(如libc.a)里面包含那么多目标文件.o呢? 为什么不将这些.o文件进行提前糅合呢?

我们来看个现象:taoge@localhost Desktop> ar -vt /usr/lib/libc.a | grep printf.orw-r--r-- 399/399 28564 Oct 26 00:26 2010 vfprintf.orw-r--r-- 399/399 988 Oct 26 00:26 2010 vprintf.orw-r--r-- 399/399

2016-10-21 19:58:30 10570 5

原创 a.out/libTest.so静态链接了libme.a, 为什么存在于libme.a中的符号没有在a.out/libTest.so中出现?

我们来看这样一个问题:a.out/libTest.so静态链接了libme.a, 为什么存在于libme.a中的符号没有在a.out/libTest.so中出现?  为了方便讨论, 我们只说a.out和libme.a.        我们知道, 静态库完全等价于目标文件(它们可逆), 当然, 这里很可能是众多目标文件.o . 而可执行文件a.out在链接libme.a时, 首先会对libme.

2016-10-21 19:45:02 7478 1

原创 两例栈溢出导致的core dump

main.cpp:#include #include using namespace std;int main(){ unsigned int m = (1<<31); string s(m, 'a'); string s1(m, 'a'); string s2(m, 'a'); return 0;}       main.c:#include int mai

2016-10-21 17:49:29 8299

原创 linux中的objdump命令(反汇编常用)

我们介绍过linux中的readelf命令, 但迟迟没有介绍objdump命令, 因为其实后者可以看作是前者的子集, 我们来看看官方文档怎么说:/* The difference between readelf and objdump: Both programs are capable of displaying the contents of ELF format ...

2016-10-21 16:43:29 15879 3

原创 简要介绍一下UTF-8编码和GBK编码------并利用linux中的iconv命令来实现UTF-8和GBK之间的相互转换

曾经的某个版本一发布, 外网一片乱码, 虽然最后影响不是很大, 但至今仍然记忆犹新, 这就是我们今天要说的UTF-8编码和GBK编码, 不容忽视哦! 在涉及编码格式时, 强烈建议使用UTF-8, 更具有普遍性和通用性。 对于一个汉字而言, UTF-8是三个字节, 而GBK是两个字节。 我们来看看UTF-8编码, “我”的16进制是:E68891 (从UltraEdit中可看), 我们从在线工具上查查:http://www.mytju.com/classcode/tools/en

2016-10-21 14:42:40 18108 1

原创 简要介绍一下Dos/Windows格式文件和Unix/Linux格式文件

我曾经在这里踩过坑, 也曾在博文中聊过Dos/Windows格式文件和Unix/Linux格式文件。 最近刚好在写文件格式的专题博文, 所以再次唠叨一次。       请参考之前的博文:        http://blog.csdn.net/stpeace/article/details/45767245    《 彻底解读剪不断理还乱的\r\n和\n, 以Windows和Linux

2016-10-21 11:52:57 9465

原创 简要介绍一下utf-8下bom文件的本质、bom文件的查找(linux命令)、去bom头的方法(linux命令)

之前玩php程序的时候, 出了一个问题, 但肉眼就是看不出来, 百思不得其解。 我明明没有改动自己的php文件啊, 怎么就突然有bug了呢? 后来请教某哥, 他先查了当前php文件的格式, 怀疑是bom问题, 但当前文件是没有bom头的啊, 于是怀疑是基础的php中加入了bom头, 导致当前php有问题了, 后来果真如此, 厉害! 我在旁边看得一脸懵逼, 什么bom? 听都没听

2016-10-21 11:03:57 10858 2

原创 linux中一切皆文件, 一切文件皆二进制

刚开始接触linux的时候, 看到过这样一句话:linux中一切皆文件。 当理解深刻后, 发现确实如此。        又记得当年学习C语言的时候, 看到书上介绍文本文件和二进制文件, 瞬间懵逼, 理解非常模糊。 后来玩h.264, 生成了一个test.264文件(深入了解了H.264的编码器和解码器), 才对二进制文件有了比较深入的了解, 无它, 唯01而已。        既然一切文件

2016-10-21 09:52:36 9522

转载 linux core文件开关、目录和名称的设置

间接转载地址:http://blog.chinaunix.net/uid-16979052-id-3431343.html  在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。1.core文件的生成开关和大小限制 1)使用ulimit -c

2016-10-21 09:40:33 21274

原创 一个与map下标操作有关的编译错误(花了5分钟才找到原因)

来, 看程序:#include #include #include using namespace std;class A{public: map m_map; };void test(const A &a){ string s = a.m_map["hello"]; cout << s << endl;}int main(){ A a; a.m_map

2016-10-21 09:22:26 10797 1

原创 linux预处理、编译、汇编、链接和运行的过程

看个简单的程序(test.c):#include int main(){ printf("abc\n"); return 0;} 我们可以这样搞定编译和运行:taoge@localhost Desktop> gcc test.c taoge@localhost Desktop> ./a.out abc 可是, 你知道它经历了

2016-10-21 08:45:35 8625 1

原创 linux中的hexdump命令

之前介绍过linux下的xxd命令, 现在说hexdump, 从含义来讲, 就是把文件中的hex   dump出来, 类似的有objdump, tcpdump,  我们来看看hexdump, 如下:taoge@localhost Desktop> xxd test.cpp0000000: 766f 6964 2066 756e 2829 0a7b 0a09 696e void fun().

2016-10-20 23:51:43 9199

原创 linux中的ELF文件有哪几类?(注意:静态库不是ELF文件)

ELF = executable linkable format   可执行、链接格式       linux中的中ELF文件主要包括四类, 也即:       1.  a.out       2.  core       3.  so文件       4.  .o文件       上述1.2是可执行文件, 3和4是可链接文件, 所以1.2.3.4统称为可执行、链接

2016-10-19 23:34:00 9212 1

原创 linux的ar命令: 目标文件(.o)&lt;===&gt; 静态库(.a)

       在之前的博文中,  我们说过静态库的制作和使用方法, 今天, 我们再来说说静态库中到底有什么。       我们已经很熟悉linux中的tar命令了, 英文原文是tape archive,  磁带归档。 今天, 我们要说的是ar命令, 也就是archive, 也是归档。 其实, 对目标文件.o进行归档, 就形成了静态库.a文件。实际上, ar命令可以对一个或者多个目标文件.o进行归档...

2016-10-19 23:12:55 17101 4

转载 天道不一定酬勤,深度思考比勤奋工作更重要

转载地址:http://www.kaoder.com/?m=thread&a=view&fid=53&tid=258264晨兴资本刘芹:天道不一定酬勤,深度思考比勤奋工作更重要Heystacy  首推于 11月02日 05:38浏览(25224)|回应(0)2011年7月小米获得4100万美元A轮投资,晨兴

2016-10-16 23:36:59 8124

原创 来来来, 考个问题:在调试某个函数的代码时, 如何快速获知每个变量的值?

来来来, 考个问题:在调试某个函数的代码时, 如何快速获知每个变量的值?         千万别说加log, 那可要累死了, 也不要说单步调试哈, 麻烦!         那该怎么搞呢? 主动core吧。

2016-10-15 23:38:30 7246 3

原创 编译错误导致浪费10多分钟, 编译错误的提示:xxx does not name a type xxx

最近, 我在google protobuf 协议文件xxx.pb增加了结构体(类)请求字段, 生成xxx.h和xxx.cpp文件, 然后放到对应目录进行编译, 奇葩的是, 编译出错, 提示:... does not name a type ..., 实际就是在名空间中没有找到类。查了至少10多分钟才找到原因。

2016-10-15 23:08:44 25669 6

原创 访问长度为0的vector引起的低概率coredump问题的定位

最近发布版本后, 发现了一个低概率的core dump告警,  其实, 在互联网千万甚至上亿的请求下, 再低概率的core都能被频繁触发, 所以也算不上低概率, 每隔几分钟就有core, 那就展开定位吧。        首先基本可以肯定的是, core是由本次代码修改引起的。  先来做做前戏准备动作:        1.  确保core文件是完成的, 没有被截断的        2.

2016-10-15 00:59:13 8185 4

原创 一个与stl有关的概率coredump问题的定位

昨晚快下班的时候, 同学X说自己的代码有core, 而且还是概率的, 不太好搞定,  W哥对此很感兴趣, 于是就展开定位。 我觉得这是个好的学习机会, 于是就在旁观背景:SVN库上的代码没有问题, 同学X加了代码后, 就有这个概率core了, 我们顺着W哥的思路来定位core.1. 直接上阵, gdb分析core, 没发现比较直观的线索。        2. 怀疑是编译

2016-10-15 00:21:40 7662 3

原创 修改.cpp后, 重新make all, 却提示nothing to be done for all

有时候, 如果makefile没有写好, 那么当修改啦.cpp后, 重新make all, 会提示nothing to be done for all, 此时怎么办呢?         如果蛮力make clean再make all, 那显然是费力不讨好了, 需要耗费太长的时间, 那怎么办呢? 我的常用方法是: 删除中间文件或者删除最后目的文件。 靠谱。

2016-10-11 23:36:44 9641

原创 基础库变更, 对应业务库make all时对变化无感知

我们知道, 当基础库变更后, 需要重新编译业务库, 重编的时候, 经常出现提示:nothing to be done for all,   也就是说, 业务库无感知了。 怎么办呢?           那就先make clean一下吧, 再make all

2016-10-11 23:30:44 7030 1

原创 linux scp命令的使用

最近远程vpn办公, 用sz/rz 传文件, 等得花儿也谢了。 还是用linux scp搞起吧:        本地到远端:        scp  -r   local_file   remote_username@remote_ip:remote_folder       远端到本地:       scp  -r   remote_username@remote_ip:

2016-10-10 23:40:15 7110

原创 makefile同时指定多个同名头文件/库文件, 那实际到底采用的是哪个呢?

虽然是10月8号了, 但仍然处在休假中, 这种感觉不错。 为了避免节后综合征导致上班没精神, 所以今天就开始在家玩玩代码, 提前进入工作状态。         今天, 我们来看看这样一个问题:makefile同时指定多个同名头文件或库文件, 那实际到底采用的是哪个呢?          我们先说头文件。         在实际开发中, 一些公共的头文件, 经常被到处拷贝, 这是常有的事

2016-10-08 12:47:41 11511 2

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关注的人

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