自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

认知 行动 坚持

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

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

原创 用简单的方法实战演练搭建http服务器(Windows上)------专为http新手

在之前的博文中, 我陆续说过如何搭建ftp, sftp, tftp服务器, 在本文中, 我们来继续聊如何实战搭建一个http服务器。 http服务器有很多种, 如tomcat,apache等, 然而, 很多新手无法搭建和配置成功, 颇为受挫, 内心不爽。 我保证, 本文搭建http服务器的过程极简化。 搭建http服务器的步骤: 1. 下载

2016-11-25 14:14:16 41050 10

原创 sort | uniq -c | sort -rnk 1 在数据统计中的重要用途------按频率排序

我们来看看a.txt文件:taoge@localhost Desktop> cat a.txt1234561111456123123123taoge@localhost Desktop>        先对其排序(按串排序):taoge@localhost Desktop> cat a.txt | sort1111112312312323456456

2016-11-20 13:02:59 25246 6

原创 awk、sort等命令搞定几十行代码C++做的事------用好工具, 事半功倍

在后台开发中, 经常遇到服务波动的情况, 一般来说, 在监控系统中可以看到这种波动, 那是否与我们机器上的错误log对应起来了呢? 我们有必要对机器上的错误log进行统计! 规范log中一般会有时间, 假设时间格式为: xxx[2016-11-20 hh:mm:ss]yyy, 那么怎样统计错误log是否集中在某以时间段呢? 写个C++程序吧: 结果:

2016-11-20 12:35:19 7950 3

原创 如何用程序判定点是否在线段上?

之前说过点在直线上的判断, 用面积法。 那么如何判定点C是否在线段AB上呢?      1.  判断C是否在直线AB上      2.  判断Xc和Xa, Xb的大小关系      3.  判断Yc和Ya, Yb的大小关系

2016-11-20 10:36:35 10431 1

原创 去看刘晓庆演的话剧《武则天》

去看刘晓庆演的话剧《武则天》, 见到了刘晓庆本尊了, 演出非常成功。       刘晓庆的人生, 和武则天一样, 都是传奇!

2016-11-19 22:56:43 7549 1

转载 有趣的问题:C的表达式x == x,何时为假?!

转载地址:http://blog.chinaunix.net/uid-23629988-id-3126229.html作者:[email protected]博客:blog.focus-linux.net   linuxfocus.blog.chinaunix.net  本文的copyleft归[email protected]所有,使用GPL发

2016-11-19 17:54:03 7259 2

原创 如何用程序判定三点是否共线?

如何用程序判定三点是否共线? 别扯什么线性规划、直线方程, 不好操作啊, 还要分类讨论。 其实很简单, 只需要判定这三点组成的“三角形”面积是否为零! 有兴趣的朋友可以写程序代码来玩玩, 我之前写过了。 PS. 已知三点, 求面积很简单, 直接海伦公式搞起。

2016-11-19 16:24:00 14825

原创 《ACM程序设计》 曾棕根

我没参加过ACM, 也没有玩过ACM, 当初纯粹是为了兴趣, 才买这本书的, 而且这本书满是程序, 是我的菜。       这本书的前面章节把常用的STL都讲了一遍, 虽然基础, 但非常不错。 我目前工作中用到的STL也都是这些! 书中后面主要是习题的演练, 很多思路都很不错, 能学到不少东西。 建议刚学C++或者想玩ACM的同学, 可以好好玩玩这本书。       今天在家, 顺手拿起这

2016-11-19 16:06:55 8670 1

原创 《linux C从入门到精通》 xx科技

这类书的题目简直是噱头, 明明就只是入门而已, 谈何精通? 而且这些书都鲜有作者自己的思考, 无非就是拿网上的东西进行复制粘贴而已, 没有什么营养价值。 makefile那一张, 从网上拷贝了不少东西吧, 作者们?        好处就是比网上那些东西会正式一点点, 而且比较集中, 省去了在网上找这些东西的时间。        没事, 我当年接触linux C,  买这本书, 就是买来做科

2016-11-19 12:30:11 10871 9

原创 测试环境server的全量流水------节省了90%的时间

刚来公司的时候, 每当测试同学提一个bug, 我就去下载对应的app来重现, 各种蛋疼和浪费时间。 其实, 只要流水和log足够完善, 还怕啥?        后来做需求联调的时候, 由于整个线路比较长, 经常跟别的同学说, 你操作触发一下, 我来抓个包和log。 后来, 我发现这种方式真是太低效了, 完全是体力劳动啊。 反馈问题迎接不暇的时候, 整个人都崩溃了, 整个人都不好了。

2016-11-19 11:49:41 7140

原创 你应该在makefile中加上ldd -r和md5sum命令

在linux中, 当我们编译出so的时候, 会经常用ldd -r去查看依赖库(确实是否缺依赖, 便于在编译期间发现问题), 也会用md5sum命令来查看so库的md5值, 便于比对和确认。       别浪费体力每次去敲这两个命令了, 直接放在makefile中吧, 这么搞起后, 不用每次敲命令, 不用每次去找so库的路径, 每次至少省下10-20秒中的时间, 关键是, 心情爽爽哒。

2016-11-19 11:42:27 7773

原创 搭建环境时遇到core dump问题

刚来公司的时候, 需要搭建测试环境, 我部署包后, 不断提示core dump,   吓我一跳。 后来请老鸟帮解决了。        最近又搭建了测试环境, 部署包后, 又是一堆core dump提示, 冤枉不愿望, 我什么都没有做, 什么代码都没有写, 怎么会core dump呢?  原来, 是缺少配置文件, 系统在读取的时候, 找不到文件和配置了, 出错, core了。

2016-11-19 11:38:25 7231 1

原创 昨天听某哥说, 某变量没有初始化, 结果有概率性大坑, 浪费不少时间定位处理!

从入行那一天起, 公司的培训教材就写着变量要初始化, 否则呵呵哒。 在我的老东家, 这种规范执行地非常好。 如果变量不初始化, 会被系统检查出来, 然后责令改正。       但是, 在现在公司, 虽然也有类似规范, 但没有多少人遵守, 也没有人在意地check.         我思考了一下, 在现在“敏捷开发, 小步快跑”的模式下, 快字当头, 谁还在乎这些玩意儿?

2016-11-19 11:33:34 7181 1

原创 系统中负负得正的兼容逻辑也许暂时能跑起来, 但迟早会坑人!

客户端发布后, 一直运行良好, 但实际上有个bug(需要特定时间段才重现)。 后来, 真的就出现bug了, 没办法, 后台兼容处理吧。  两边产生负负得正的效果, 跑起来没问题, 看起来爽得很呢。       但是, 某天, 后台有新同学接手业务, 不知道之前的负负得正的兼容逻辑, 于是在后台代码中写了个正逻辑, 于是产生了负正得负的效果, 然后采坑, 呵呵哒。 我就踩了这个坑!

2016-11-19 11:07:45 7155

原创 不要过分相信基础函数, 因为那也是人写的------警惕负负得正的现有逻辑之坑

同学A调用基础函数, OK.  我调用基础函数,出错!  我的代码如下:#include #include #include #include using namespace std;int basicApi(vector &v, map &m){ vector::iterator it; for(it = v.begin(); it != v.end(); ++it)

2016-11-19 00:11:49 7392

原创 make又一编译错误: cannot find -lxxx

说来也怪, 我明明在LIB中增加了这个库:  LIB += -L../../.../ -lxxx , 且在对应目录有libxxx.a库啊,  但是却提示:cannot find -lxxx, 我的编译命令为:      g++ $(CXXFLAGS) $(INC) $(LIB) $(CPPLIST) -o  test.so  ,  于是, 我尝试把$(LIB)调整到最后, 居然就可以了。

2016-11-14 07:46:34 8268 1

原创 该写地址的地方, 却写了变量本身, 产生core, 导致系统异常

本来接口是: int fun(ST* ps, uint8_t * pb, int32_t * pi, char *p);       结果我在写第三个参数的时候, 直接把整数放在那个地方, 由于调用时, 我进行了int32_t*强转, 所以没有编译错误。       不过, 运行的时候, 呵呵哒了, 经定位core, 才发现是上述问题。

2016-11-13 15:52:51 6996

原创 对序列化后的buffer进行strlen操作, oh my god

最近找到一个服务框架, 我在里面写了几行代码, 进行序列化, 然后就没有达到我的预期结果, 跟踪了一下, 发现原有代码对序列化后的buffer进行了strlen操作, oh my god.  难怪解包失败。       实际上, 我们已经聊过类似话题, 请见:http://blog.csdn.net/stpeace/article/details/53046829        对

2016-11-13 14:40:11 7111 1

原创 makefile写错(多了.a)导致了cannot find -libtest.a------耗费10分钟才找出原因

对于cannot find -libtest.a这种编译错误, 我们已经说过多次, 直接去找对应的库文件为什么不存在即可。      最近写makefile, 出现了这个提示, 让我哭笑不得, 搞了10多分钟才查出原因。 明明test.a文件存在于对应目录吗, 怎么找不到呢?      原来, 我用-L指定的时候, 出了问题, 我是这么写的:  LIB += -L ../learn  -l

2016-11-13 14:22:27 7438

原创 log调试利器------__TIME__, __FILE__, __FUNCTION__, __LINE__, __VA_ARGS__搞起

来来来, 一起写个比printf更详细的log api接口:#include #include #include using namespace std;#define DEBUG_LOG(...) debug_log("DEBUG", __TIME__, __FILE__, __FUNCTION__, __LINE__, __VA_ARGS__)void debug_log(

2016-11-13 00:49:59 8598

原创 空格之坑------调用系统函数错误, 那是你自己的问题哈

最近部署一个日志工具, 启动工具进程, 输入参数的时候, log显示参数解析错误。  我有两个疑问:       1. 以前是好好的啊? 怎么现在会有问题呢?       2. 解析参数是基础系统函数做的, 怎么会出错呢?       麻蛋, 不卖关子了, 经定位, 发现在命令行输入参数时候, 前面多了个空格, 我靠

2016-11-12 11:02:42 7168

原创 如何把当前目录下的所有.c文件转化为对应的.cpp文件?------makefile的另类用途

如何把当前目录下的所有.c文件转化为对应的.cpp文件? 想了一下, 貌似不太好搞, 那就用makefile吧。 请参考之前的博文:       http://blog.csdn.net/stpeace/article/details/53054679

2016-11-12 02:34:45 11120 1

原创 cp时请考虑软链接------肯定有人在这里踩坑

       cp目录的时候, 软链会保存, 如下: taoge@localhost Desktop> ll linktotal 0-rw-r--r-- 1 taoge users 0 2016-11-10 23:06 a.txtlrwxrwxrwx 1 taoge users 5 2016-11-10 23:07 b.txt -> a.txttaoge@local...

2016-11-12 02:32:47 25837

原创 scp -r拷贝目录(其中有软链)之坑------被404问题折腾一个晚上啊!!!

最近在测试环境搭建一个http服务器, 为了简便起见, 我就直接从外网机器拷贝到测试机, 用的是scp -r命令, 然后糟糕的事情就发生了。 测试环境上有个问题(体现为404错误), 无论如何也调不通, 我怎么想也没有想明白。文件明明存在啊, 访问的路径也正确, 服务器上也接受到了网络包, 服务进程也起来了, 但就是无情得返回404

2016-11-12 02:28:48 19431 2

原创 不要给真理, 要给解决方案!

不要给真理, 要给解决方案!

2016-11-06 22:34:04 7016 1

原创 简单聊一下makefile中的 =, :=, ?=和+=

最容易混淆的是 =和:=, 我们先来看看makefile:x = helloy = $(x)x = worldtest1: test1.cpp @echo $(y)       执行make后, 结果为world,  再看改动后的makefile:x = helloy := $(x)x = worldtest1: test1.cpp @echo $(y)       执行m

2016-11-06 21:09:14 8437 1

原创 makefile中“模式规则“的引入和介绍------%:%.cpp

目录下有test1.cpp,test2.cpp, test3.cpp三个独立文件(彼此之间并无依赖与调用关系), 要编译成三个可执行程序, 怎么搞呢? 我们看看makefile:test1: test1.cpptest2: test2.cpptest3: test3.cppclean: rm -f test1 test2 test3 编译一下:taoge@localh

2016-11-06 16:39:30 14676

原创 makefile中的多target混乱依赖模式

来看个例子, makefile内容为:test1 test2: test1.cpp test2.cppclean: rm -f test1 test2        这是一种非常懒散的写法, 虽然可以work:taoge@localhost Desktop> make cleanrm -f test1 test2taoge@localhost Desktop> makeg++

2016-11-06 15:05:44 8435

原创 为什么执行make命令时, clean后面的命令不会执行?

来看个简单的makefile:test1: test1.cppclean: @echo $(CXX)         执行make命令后, clean后的命令为什么不执行呢?  它本来是要执行的, 但clean作为目标, 没有找到对应的依赖文件, 所以不执行。 那该怎么强制单独让clean后面的命令执行呢? 用make clean吧。 这里要明白, clean并不是makefile中一个规定的名字, 实际上, 你爱怎么取, 就怎么取。 在实际软件开发中

2016-11-06 13:29:54 12946 7

原创 makefile中的默认命令和默认参数------CXX和CXXFLAGS等

先来看makefile:test1: test1.cppclean: @echo $(CXX) @echo $(CC) @echo $(AR) @echo $(RM) @echo $(CXXFLAGS) @echo $(CFLAGS) @echo $(ARFLAGS)        再来看结果:taoge@localhost Desktop> make allm

2016-11-06 13:22:18 17676

原创 入口深, 效率低

很多软件, 把某功能的入口做得很深, 用起来就费劲。一般来说, 如果从主界面开始算(第1层), 一个功能的深度超过3, 我就不太想用了。 很多人的简历啊, 没有把关键信息放在简历文件名字中, 错失第一入口! 在我们工作中也一样, 查找常用资料, 深度最好不要超过3. 这让我想到了冷热数据、缓存, 其实都是一个道理。

2016-11-06 09:51:05 7200

原创 一个rm -rf ???*命令下去, 整个人都不好了

整理linux文件, 发现有个名为"???xxx"的文件, 于是我采用rm -rf ???*来删除, 然后, 整个人都不好了  所幸, 这个目录不是非常致命。   以后用rm一定要谨慎了, 不要用非预期行为。

2016-11-06 09:47:31 11791 4

原创 makefile中命令写在两行和写在一行的区别

来看mafile:main: main.o g++ -o main main.omain.o: main.cpp g++ -o main.o -c main.cppclean: cd test ; pwd cd . pwd        看看结果:taoge@localhost Desktop> make cleancd test ; pwd/home/taoge/

2016-11-06 00:17:04 12276

原创 makefile中“-“符号的使用

在makefile中, -用预告诉make命令忽略错误, 我们来简单看下:main: main.o g++ -o main main.omain.o: main.cpp g++ -o main.o -c main.cppclean: rm main *.o 执行结果为:taoge@localhost Desktop> make cleanrm main *.

2016-11-05 23:09:00 8338 2

原创 make -k(keep going)命令会在发现错误时继续执行(用于一次发现所有错误)

我们在执行makefile进行编译的时, 会经常遇到错误, 然后解决, 然后又make,  然后又发现错误, 然后又解决, 烦人, 能不能一次发现所有错误呢?         能的!        main.cpp很简单, 我们只看makefile(故意写成错误的g+++):main: main.o g+++ -o main main.omain.o: main.cpp

2016-11-05 22:55:58 12587 1

原创 make -n(仅列出命令, 但不会执行)用于调试makefile

我们先来看一个简单程序:#include using namespace std;int main(){ cout << "hello world" << endl; return 0;}       然后来看看makefile:main: main.o g++ -o main main.omain.o: main.cpp g++ -o main.o

2016-11-05 22:39:53 9134

原创 无protobuf协议情况下的反序列化------貌似无解, 其实有解!

用过protobuf的人都知道, protobuf的序列化过程是: 协议文件(.proto) + 原始数据 ====》 buffer 反序列化的过程是: buffer + 协议文件(.proto) ===>原始数据 那有没有办法实现:buffer ===》原始数据 呢? 这是一个貌似无解的问题, 其实有解。

2016-11-05 21:36:42 15567 15

原创 一起来看看protobuf中容易引起bug的一个细节

我们已经介绍过protobuf的使用了, 故不再赘述, 下面我们来看看如下代码的一个小bug:        test.proto内容为:package NS; message PointReq { required int32 x=1; required int32 y=2; }       main.cpp为:#include #includ

2016-11-05 19:59:41 11960 2

原创 我对C++ string和length方法的一个长期误解------从protobuf序列化说起(没处理好会引起数据丢失、反序列化失败哦!)

自认为C和C++基础知识还行, 于是以为下面程序的结果都是3, 看看:#include #include using namespace std;int main(){ char szTest[100] = "abc\0def"; // 右边串提前被'\0'截断 cout << strlen(szTest) << endl; string s; s.assign(

2016-11-05 18:54:11 12926 11

原创 为什么要实现程序指令和程序数据的分离?

就以linux的ELF为例吧, 程序放在text段(你也可以叫它code段), 这是程序指令。  而数据放在data端和bss段, 这是程序数据。 那为什么要实现程序指令和程序数据的分离呢?        1.   程序装载后, 程序指令放只读区域, 程序数据放在可读写区域。 可以防止程序被篡改。        2.   程序指令和数据指令分开, 可以提高CPU对cache的命中率, 集中

2016-11-05 16:19:33 10415 4

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

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