- 博客(74)
- 资源 (19)
- 收藏
- 关注
原创 编译warning:call will abort at runtime
最近编译代码, 眼睛扫了一下, 无意中看到一个刺眼的warning: call will abort at runtime 回看代码, 果然有误, 虽然通过编译, 但运行时有出错危险。 在大型代码编译中, 几乎不可能清楚所有warning, 但至少要保证: 1. 编译出库 2. 搜索abort, 无对应信息
2016-03-30 23:48:52 7519
原创 这是得了core dump综合征么?
以前觉得core dump有些难搞, 现在解决也就那么回事。 最近写代码异常, 在该打印日志的地方嘎然而止, 第一想到的就是程序是不是又core了。 看了一下, 没core, 进程号没有变, 所以程序并没有core, 好吧。 抓个包, 包异常, 抓个日志, 日志嘎然而已, 尼玛, 来review一下代码吧: oh, my god, 是个死循环。
2016-03-30 23:23:29 7226
原创 makefile编译时候出现:commands commence before first target
我们知道, 在C/C++语言中, 可以用\来换行, 此时要注意, 在一行的最后面加上\, 而这个\后面不能再有任何字符, 哪怕是空格, 也不允许, 否则出错。 对于makefile, 也有类似的原则, 最近写makefile, 一不小心, 在\后多了个空格, 结果编译出现:commands commence before first target 要小心啊。
2016-03-30 23:14:35 43689 8
原创 strtok_r并不比strtok好多少
前面批判了strtok, 本文来说说strtok_r, 后者在linux中才有, 虽然可冲入且线程安全, 但也不是什么好东西, 因为会改变原串, 如下:#include #include #include #include using namespace std;int Str2Vector(const string& str, vector &v, const char *p)
2016-03-28 23:54:27 8348 1
原创 C/C++中最坑爷爷的垃圾函数strtok------浪费我1个小时
某次, 我调用了别人写的这样的一个函数:int Str2Vector(const string& str, vector &v, const char *p); 然后,继续把str在系统中传递, 奇怪的是, 传着传着, str的值就变化了。 当时的第一分析是: 调用Str2Vector函数, str绝对不会变化, 所以一定是系统在后续传递str时出了问题。 然而,
2016-03-28 23:29:24 11276 1
原创 教你用恶心的strtok函数来恶意修改const string &str 中的str
大概在两年前, 我踩了一次strtok的坑, 并在博文中做了记录, 永远不要用strtok, 最近再次遇到此坑, 先不多说。 我来教你用恶心的strtok函数来恶意修改const string &str 中的str:#include #include #include #include using namespace std;int Str2Vector(const string
2016-03-28 23:12:17 8208 1
原创 makefile文件没写好导致程序core dump的定位经历与反思------又是“协议“不一致产生的core dump
最近碰到这样一个问题: 原本好好的程序, 经我加一些代码后, 程序就core dump了。 于是, 我回退代码, 结果就没有core dump了, 我仔细审视了一下自己写的每行代码, 居然没有发现任何疑点, 怪哉。 我不太想用二分查找的方法来定位, 粗暴低效, 所以打算依赖于core文件来分析, 万幸的是, 抓到了core文件, 可是用gdb xxx cor
2016-03-27 00:11:57 9475
原创 协议文件不一致导致的coredump问题
客户端和服务端之间经常使用类似google protocol buffer这样的工具做应用层协议, 在之前的博文中, 我们说过协议不一致导致的解包失败问题。 本文说手协议不一致产生的core dump问题。 去年, 在去澳门玩之前, 遇到了一个core dump问题, 搞了一些时间, 也没有找到问题的原因。 后来请教别人, 说要怎样怎样解决, 还挺复杂的。 后来继续请教人, 才知道
2016-03-26 23:29:53 7367 1
原创 两次碰到协议文件不一致导致的解包失败
在网络交互中, 客户端和服务端之间进行发包时, 一般会约定好协议, 比如常见的google protocol buffer. (gpb), 实际上就是一个应用层的协议, 负责序列化打包、反序列化解包。 今年情人节前夕, 做了一个需求, 用的是类似gpb这种序列化、反序列化协议, 结果, 我在解析的时候出错, 当时真是百思不得其解答, 后来请教大牛, 才发现是协议文件没有更新所致, 踩到了坑, 吸取了教训啊。 其实, 协议文件不一致导致的解包失败, 是很自然的事。
2016-03-26 23:02:23 9323
原创 makefile指定头文件和库出错的那点破事
某模块提供了test.h头文件和libtest.a库, 供外部代码调用: 1. 如果在代码中包含了某头文件test.h, 但在makefle中没有指定头文件路径/或者头文件根本不存在, 会出现编译错误, 会提示缺少test.h. 2. 如果包含了test.h头文件,且指定了头文件路径, 且指定libtest.a库, 但实际此库并不存在(比如没有提前编译出来), 会出现编译错误, 提示缺少 cannot find -ltest 3.如果包含了头文件,且指定了头文件路径,
2016-03-26 10:38:06 15099
原创 GNU makefile英文官方介绍------干货
话不多说, 奉上干货:http://www.gnu.org/software/make/manual/make.html
2016-03-26 10:12:23 8057 3
原创 缺using namespace test1; using namespace test1::test2;导致的编译错误
最近遇到一个编译问题, 耗费了点时间才找到原因, 现在记录一下, 下次很快就能搞定类似问题了。 某基础功能库提供了test.h文件和libtest.a文件供外部调用, 在业务层比较成熟的A模块中, 需要用到test.h中的一个类Student, 在A模块中,包含了test.h, 然后指定了libtest.a, 编译、调用OK. 而我要搭建一个新的B模块, 也要用到t
2016-03-26 10:03:56 7204 1
原创 浅聊流水系统
这里的流水, 是不是流口水, 而是类似于流水账之类的记录。 电话费有电话费的流水账单, 银行有银行的流水账单。 之前做嵌入式开发, 非常依赖于本地日志定位问题。 当嵌入式设备发到用户家里后, 需要将异常信息上报网管系统。 现在做互联网后台开发, 监控系统尤为重要, 其中一项就是流水系统, 记录用户关键的操作。 便于问题查询和定位。 说白了, 就是在代码中, 朝流水server写记录数据, 记录出入信息。 最近定位好几个问题, 全依赖于这个, 爽爽哒。
2016-03-26 09:33:48 7665 2
原创 解决问题, 才是首要目的
就在刚才, 网络突然异常了, 于是我想抓包看看, 修复一下, 结果不管用。 手机能连接wifi, 但pc连接不上, 搞了20分钟, 网络还是没法恢复。 好吧, 那就用万能的重启方法, 搞定了。 某次, 某台机器出现了必然出现了内存泄漏, 大家定位很长时间都木有找到具体原因, 最后的解决方式是: 每隔3小时自动重启服务(经评估, 重启对用户没有影响)。 某次, 某重要
2016-03-26 08:57:10 7353 1
原创 函数该传递什么参数
最近, 一位qq好友问, 函数该传递什么参数, 怎样设计? 这个问题, 其实是比较简单的, 我个人比较喜欢的做法是: int fun(xxx input, xxx control, xxx output);
2016-03-26 08:49:07 7202 1
原创 那一夜, 我懂了视频帧
之前学过一段时间的视频, H.264吧, 开始一直不太理解视频帧的概念, 某日, 在寝室观看了“某老师”的“行为艺术”视频, 卡得不得了, 心急如焚, 视频播放出来是一幅一幅的图像, 从此, 懂了视频帧的概念。 粗略来说, 视频帧, 就是一幅图像。
2016-03-26 08:00:49 8158 6
原创 snprintf类型不匹配导致的core dump问题分析与定位
对于core dump, 我们应该很熟悉了。之前说过,printf打印日志不规范, 会导致core dump问题, 今天我们来说说类似的问题. 最近, 系统出现异常, 在改打日志的地方没有打日志, 程序戛然而止。 最古怪的是, 虽然开了ulimit -c unlimited, 但也没有发现core文件产生。 当时, 我自己加了为数不多的几行代码, 就出现了异常, 因此, 集中精力排
2016-03-26 07:53:40 10899 3
原创 垃圾的clear函数------stringstream类型对象的清空操作之坑(不是用clear)
平时经常用C++中的stringstream类型, 非常方便, 但最近踩了一个大坑浪费较长时间才定位到时清空stringstream对象时出现了问题, 上网搜索了一下, 原来, 很多人都踩过此坑。 我们先来看看demo代码:#include #include #include using namespace std;int main(){ stringstream ss; i
2016-03-25 00:26:15 9667 2
原创 全局变量未清空, 定位耗费一小时
都说全局变量是万恶之源, 可读性差, 而且还容易产生错误, 此话不假。 最近, 本来需要扩展函数参数,但当时为了图方便, 直接用了全局变量, 但每次结束后又没有清空, 结果出现异常: 1. 在测试环境下, 表现没有异常。 序列化打包OK. 2. 在灰度外网的时候, 开始表现也没有异常, 于是全量外网。 过一会发现非关键功能出现异常。
2016-03-24 23:52:33 8070 1
原创 C++ vector的排序------对于结构体vector, 需要自己实现比较
在很多面试中, 都会问到: 结构体作为map的key, 需要注意什么? 这个问题, 我在http://blog.csdn.net/stpeace/article/details/46553525中已经深入讨论过, 所以不再赘述。 本文来说说vector的排序, 最近刚好要涉及到, 所以来写个代码demo 由于结构体没有比较大小这一说法, 所以要实现结构体vector的排序, 必须自定义比较:
2016-03-20 23:42:13 14994 4
原创 毕业后是选择大公司还是小公司
最近有网友问我, 毕业后是选择大公司还是小公司。 我觉得这又是个扯淡的问题。 在校期间, 我在公司A实习, 正式员工小于20人。 后来又在B公司实习过, 正式员工小于10人。 毕业后, 我在公司C工作, 正式员工大于150000人。 后来又在D公司工作, 正式员工大于20000人。 本想就这个问题好好聊聊, 但发现常高伟先生早已写过, 且
2016-03-20 22:03:21 8574 5
原创 《华为研发》 张利华
最近整理书籍, 把这张利华的《华为研发》结了个尾。 文章没啥深度可言。 亲自感触太多, 不多说了。 该忘的, 就忘吧。
2016-03-20 21:20:13 9481 2
转载 刘宗泽:风雨江湖路
转载地址:《棋艺》 刘宗泽的寂寞 在异乡的一家小酒馆里,象棋高手刘宗泽要了一碟醋拌猪耳朵,二两老白干和一碗过了水的炸酱面。饭菜虽然简单,可他吃得
2016-03-20 20:24:49 8621 1
转载 Linux 压缩解压缩命令大全(我最常用tar)
转载地址:http://www.cnblogs.com/xd502djj/archive/2010/11/19/1881559.html .tar 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName ---------------------------------------------
2016-03-19 23:05:28 20012 1
转载 腾讯产品总监:我工作十年,内心仍无比恐慌
转载地址:http://www.chinaz.com/manage/2015/1127/476037.shtml本文是曹菲在馒头商学院发表的演讲记录,曹菲是腾讯产品研发中心总监 (腾讯,中国最大的网络公司,QQ 和微信都是它的)。本文有相当程度的专业性,行外人不一定能够咀嚼通透,但大略浏览可窥见中国互联网精英的思路,以及那个领域中的专业程度和分工流程。在中国互联
2016-03-19 22:50:11 10542 8
转载 确定性这剂毒药,你喝过没?
转自:http://blog.csdn.net/foruok/article/details/50762970 目录(?)[+] 假如你现在想换工作,你会怎么选择呢?薪水够多,工作够轻松,不加班,目标职位需要的技能你又刚好会,离家近,奖金多?满足这样要求的单位就可以去了,去了就会如你所愿一切都很美好?假如你是个程序员,不想做
2016-03-19 09:39:12 7407 1
原创 大白话解释互联网后台为什么常用异步server?
最近写了一个异步server, 所以来聊聊异步server: 互联网的后台开发就是一堆的server, 我们先来看看同步server的情况: 如上图, A是用户的请求, B是后台的某一个Server, C是数据库存储。 先来说一下同步server. A在第0s发起请求, B收到请求后去读数据库C,
2016-03-19 09:11:12 9064 3
原创 再来聊聊linux中的nm命令(nm与ldd命令实战)
在之前的博文中, 我们介绍了nm命令, 故无需过多赘述。在上一篇博文中, 我们介绍了ldd -r xxx.so的使用方法, ldd -r xxx.so主要是用来查询undefined symbol的项, 其实, nm命令同样可以做到。 在使用nm命令时, 会列出各种符号, 其中的U表示undefined symbol, 因此, 我们可以只用nm -u xxx.so来查看undefi
2016-03-19 08:16:29 11267
原创 ldd -r xxx.so命令的重要作用------见招拆招地解决缺库问题(undefined symbol)
在之前的博文中, 我们介绍了ldd这个重要的命令, 在本文中, 继续来强调一下, 顺便说说ldd的-r参数。 最近编译了一个动态库xxx.so, 但一加载的时候, 便报错, 提示信息是: dlopen ......, undefined symbol ...., 于是不断地修改, 不断地重新加载, 花了不少时间。 其实, 完全不用等到加载的时候去发现这个问题, 编译出xxx
2016-03-18 23:23:23 23242 1
原创 网络传输的本质(buffer传输)决定了序列化和反序列化的重要应用
序列化: 把对象转化为一段buffer, obj---->buf 反序列化:把buffer转化为一个对象 buf--->obj 程序猿喜欢obj, 网络传输喜欢buf. 知名的序列化、反序列化的工具是google protocol buffer, 在之前的文章中, 我们已经接触过了。 当然, 很多公司也有自己的序列化和反序列化工具。 我们知道, 网络传输的本质就是buffer的传输, 所以, 在网络传输中, 序列化和反序列化是非常常见的。
2016-03-18 23:08:08 10807
原创 txt中的内容复制到excel中无法对齐, 该怎么处理?
今天, 一同学反馈, 导出的文件是txt格式, 其中是表格类型的数据, 在导入到excel中后, 无法在对应的框中对齐, 他还以为是txt没有对齐。 有点苦恼。 我在群里看到这个问题, 回忆起excel的导入导出都是以tab来做分隔符的, 所以就想到现在txt中把空格转为tab. 试了一下, 果然靠谱。 至于txt中空格如何转tab, 这个就很俗套了-------正
2016-03-18 22:51:27 15645
原创 svn diff | grep work看修改的文件
用svn diff可以看所有修改的详细信息, 但若要看svn管理目录下改动的文件, 可以直接过滤working/work即可。 一直这么用, 挺顺手: svn diff | grep work 或者: svn diff | grep working
2016-03-18 22:45:05 7922 1
原创 修改svn中的文件名
今天想修改svn中的文件名, 感觉这种基本的功能应该会提供, 试了一下, 靠谱: 对于已经受svn源代码管理的文件或者文件夹,若想修改名字,如何搞起: 1.选中文件或者文件夹---右键---TortoiseSVN---改名。 2.svn 提交。 值得注意: 直接修改文件名是不可以的。
2016-03-18 22:39:54 22240 1
原创 php中的join函数
刚学写PHP的时候, 对很多现成的函数不熟悉, 导致还是在用C/C++的思路解决问题。 比如, 我曾经自己去吧join函数实现的功能给写了一遍。 下面, 我们来看看join函数的作用吧, 以后再也不要犯傻了:<?php $arr = array("hello", "world"); $str = join("|", $arr); echo $str;
2016-03-15 23:38:21 9259
转载 年薪千万的华为副总裁离职工作感悟------徐家俊
转自: 网上到处是。上周,我正式提交了离职报告,准备给自己的职业生涯一个很大的转折,这是我长时间的思考最后所做的决定。但真的提出离职后,回想在公司的十年,还是百感交集。转眼工作十年了,在华为的十年,正是华为从名不出专业圈子到现在成为路人皆知的大公司,高速发展的十年,见证了公司多年的奋斗历程。也投身其中,在大潮中边学边游泳,走到今天。现
2016-03-14 22:39:26 10188 2
原创 tcp三次握手都没有建立, 还谈什么业务包呢?------聊聊最近的一个扯皮问题
我们知道, udp是不要建立连接的, 我们甚至可以对着一个非实际的ip(比如1.1.1.1)的某端口发包, 此时, 如果抓包, 我们可以看到, 发送方是发了业务包的。 但是, 在tcp中就不一样了, 三次握手没有建立的话, 谈不上业务数据包。 来说说这样一个问题: 最近, 我作为客户端去请求服务端, 当请求量比较小的时候, 一切正常, 我能收到正确的返回包, 但是, 当请求量的
2016-03-14 22:38:06 7744
原创 对接联调是一个情商活
两年前, 毕业后第一次参加工作, 做了一个监控工具, 经常需要与别的公司的同事对接联调。 如今, 几乎每天都是对接联调, 不得不说, 需要技术, 但更是一个情商活。 知己知彼, 百战不殆。
2016-03-14 22:07:22 8093
原创 调用成熟接口、谨慎使用未知接口------遇到问题时, 不一定要死死纠缠原因
在实际开发中, 经常要调用一些其他接口。 最近遇到一个问题, 成熟接口在另外一个模块, 与它功能相似的接口在本模块, 于是, 我直接调用本模块的接口, 然后, 就不work了, 由于时间关系, 就没有去细究原因。 而是先解决问题, 移植成熟的借口过来, 测试了一下, 靠谱。 当一路行不通时, 不一定要死死纠缠, 工作就是要解决问题。 当方案1不work的时候, 我们可以快速启
2016-03-14 22:03:31 8113
linux protobuf安装文件
2016-11-04
linux tree命令的源码
2015-11-01
编译好的openssl库和头文件
2014-12-14
入门数据库sqlite3的最佳实践资料
2014-08-12
在Windows下学习Linux命令
2013-08-08
音频处理软件Gold Wave
2013-07-17
H.264visa软件
2013-07-13
YUVviewer :原始的YUV视频的播放器
2013-06-24
经典的C语言编译器:TC2.0
2013-06-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人