自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

认知 行动 坚持

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

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

原创 printf("%02x\n", c) 之坑------浪费0.5小时

实际上, 在不久前, 我聊过这个, 为了再次强调(因为踩了坑, 浪费0.5小时), 故再次来玩一遍:#include using namespace std;int main(){ char c1 = -1; printf("%02x\n", c1); // ffffffff char c2 = 250; printf("%02x\n", c2); // fffffffa p

2016-06-30 23:24:52 13585 7

原创 自己生成随机序列号, 便于串起来

我们知道, 后台基本上可以大致分为接入层, 逻辑层, 存储层。 现在要在三层都记录流水操作。 每次请求对应3条流水信息, 但是, 当多次请求在很短时间内进行时, 流水的顺序会被打乱(网络流水涉及到网络操作, 先发送的, 不一定先到达流水机器), 那怎么办呢?        我的思路是: 在每次之间透传序列号, 这个序列号可以认为随机生成, 请直接看上篇文章讲述的linux下生成随机数的方法,

2016-06-29 23:39:23 11161 1

原创 用srand, rand产生的随机数有隐患------还是用利用linux的/dev/urandom文件产生随机数吧

我们知道, rand是伪随机的, 每次都会产生相同的序列(因为种子相同),  而srand可以产生种子, 我们经常用srand(time(NULL))来产生种子, 当种子随着时间变化时, 就会产生不同的序列, 然而这就够了吗?        今天碰到这样一个问题: 在很短时间(比如1s)内, 需要产生较好的随机数, 此时用srand(time(NULL))是失效的, 因为ime(NULL)的值

2016-06-29 23:31:27 9722 1

原创 淡疼的itoa和abs: 'itoa' was not declared in this scope; 'abs' was not declared in this scope

本来今天就被几个问题折腾得够呛, 结果下午写代码, g++又提示我:'itoa' was not declared in this scope,  尼玛, 我用itoa怎么啦? 后来发现:itoa函数不是ANSI(American National Standards Institute) C的标准, 应该避免使用这个函数.  OK, 是我糊涂了, 居然想着去用itoa这么危险恶心的非标准函数,

2016-06-29 23:20:28 14440

原创 bufToHexStr的C++实现------将buffer转为对应的16进制形式(与坑同在)

bufToHexStr还是很常见的, 也非常常用, 写个代码玩玩(别乱拷贝如下代码):#include #include using namespace std;string bufToHexStr(const char *pBuf, int bufLen){ if(NULL == pBuf || bufLen < 0) { return ""; } int i = 0; string

2016-06-26 23:24:51 9891

转载 为什么寄存器比内存快?

转载地址:http://www.ruanyifeng.com/blog/2013/10/register.html作者: 阮一峰日期: 2013年10月14日计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。同样都是晶体管存储设备,为什么寄存器比内存快呢?

2016-06-25 23:37:25 9197

原创 用内存做缓存

先看这样一个问题, 客户端需要前后三次请求服务端, 但在第三次请求的时候, value3的值可能为空, 也就是说, 会有大量无效的请求, 浪费网络流量和带宽, 那怎么优化呢?       可以采用缓存的思路, 先把value3是否存在的标示flag在value2中附带过去, 缓存在client端。 在client发key3的请求前, 先判断这个flag的值, 挡掉无效的网络请求。 思路很简单,

2016-06-25 23:35:20 9620 1

原创 cache(缓冲)是一个广义的概念

在以前面试的时候, 经常会遇到这样的题目, 以至于有些宁愿背诵下来:          今天, 我们就不说题目了, 而是来说说缓存(cache).         我快研究生毕业的时候, 第一次听说了cache命令率这个词, 听着学计算机的同学讲这个东东, 瞬间觉得高大上, 其实也不过如此。         上图中的cache是非常狭义的, 其实, cache是一个非常

2016-06-25 23:23:08 7535

原创 那点代码, 谁都会写!------以后我会在博客中多加入一些思路方面的东东, 少写一些实际的代码

我在第一家公司工作了两年, 当时非常注意代码的各种规范。 公司要求代码必须符合各种规范, 各种圈复杂度, 各种安全函数, 各种静态检查, 动态检查, 各种review, 各种提交前的本地构建, 如此等等等等, 后来我就有代码洁癖了, 仿佛感觉搞软件就是搞代码。 而且, 思维也依赖于僵化式的流程。        后来入职了现在的公司, 发现有很多不一样, 少了很多限制, 灵活性大了很多, 老板不

2016-06-25 21:48:01 7322 2

原创 map如何按value来排序------用带pair的vector吧

我们知道, map是按照key来排序的, 那么, map如何按value来排序呢?------用带pair的vector吧。 看代码, 不说话:#include #include #include // pair#include #include using namespace std;bool comp(const pair &a, const pair &b){ r

2016-06-25 21:11:34 8022 1

原创 做好参数校验, 不要过分信任前端传过来的值

最近遇到这样一个问题, 后台服务的某接口收到了异常的参数值, 导致后端服务异常。 而在用户正常访问的情况下, 前端肯定会进行参数校验的, 那为什么传到后端的参数是异常的呢? 原来, 不仅是前端在调后台服务, 某些坏人也经常来刷后台的服务, 妈蛋。 其实, 对于每一个参数输入, 咱都不要过分信任, 全面校验, 没有坏处。 再也不怕坏人刷刷刷了。

2016-06-25 20:47:56 9481 1

原创 source很重要

之前做了一个通用的写接口, 每个参数的修改都需要经过这里, 为了方便定位定问题, 我们通常需要知道修改的来源是哪里。       在软件开发时, 其实很大程度上是在维护这套软件, 所以, 要为后续维护做准备。       最近定义一个写接口, 没有注意加source字段, 定位问题的时候, 很蛋疼。       补补补。

2016-06-25 20:39:01 7131 1

原创 循环跑号码包的一个小建议

举个例子, 中国移动要对所有移动用户发送一条消息, 中国移动的程序猿准备些脚本来搞起, 我们看看最简单的方案:for循环一下, 对每个用户发消息。       打断一下, 这里有什么隐患呢? 假设, 该脚本因为某不可抗因素, 中断了, 那怎么知道哪些用户没有送, 哪些用户已经送了呢?       所以, 应该搞个标志位, 发了的记为1, 每次发送前, 检查一下。       标志位怎么

2016-06-24 22:13:55 7262 1

原创 栈溢出导致的core dump的定位------千年等一回

某服务在跑的时候, 从来没有core dump过, 某次, core dump了。 老大收到core dump告警后, 在群里贴了一下, 我开始着手定位。 这是个低概率的core dump, 重现原来问题几乎没有可能。        那就去看core吧, gdb xxx core一下发现, 程序core在一个字符串处理的地方, 但是,  无法进一步知道更具体的原因。 为了简便起见, 我对原来的

2016-06-24 22:07:17 10586 1

原创 何时更新缓存?

缓存是为了有更快速的访问, 那一般什么时候更新缓存呢?       如果需要拉取到实时信息, 那么每次写操作, 都要更新一下缓存, 如图:       如果不需要拉取到实时信息(比方说, 这个信息并不经常变动, 如年龄, 生日), 那么可以这么搞:

2016-06-20 23:56:47 8349

原创 缓存的本质是什么?

缓存的本质是让热数据接近目的地, 用简单程序结束本文:#include int a[100] = {0}; // 缓存int jieCheng(int n){ if(0 == n || 1 == n) { a[n] = 1; return a[n]; } if(0 == a[n]) { a[n] = n * jieCheng(n - 1); return a

2016-06-20 23:30:52 7805 5

原创 推写拉读

很多事情,只要把本质弄透彻, 其余的都是细节了。 正如爱因斯坦所说: 我需要知道的是宇宙的设计理念, 其余的都是细节。      比如说网络编程, 其本质是buffer内容的传递。       在后台开发中, 也就是推拉读写了, 这是我的感悟。 刚喝了一瓶啤酒, 头还没晕, 但愿不是胡说八道。

2016-06-19 22:52:27 7216 1

原创 第一次去游泳

昨天第一次去游泳, 和老伴一起, 我们都不会游泳, 但在好友的帮助和陪伴下, 我们感觉还是很安全的。        老伴学会了憋气, 我大概能游15米左右, 虽然动作很不标准。初学游泳的时候, 最重要的是安全。        第一次在1.2米的水中, 水的感觉很奇妙, 并不如我想象的那样。 我最开始以为, 1.2米嘛, 我站起来水只能到胸前,没有什么危险, 其实不是的。  如果不熟

2016-06-19 22:18:20 7242 1

原创 六年级数学期中考试只考了88分, 但试卷被老师写下:Good! very good!! very very good!!!

        我读小学六年级的时候, 数学老师是夏老师, 人很严, 不过本文暂时和他没有什么关系。        那是一次期中数学考试, 最后一题, 我用了初中的二元一次方程组(初一才学)解决了一个应用题, 结果不知被哪位老师在最后写下:"Good! very good!! very very good!!!".  那时候, 我并不知道这些英语的意思, 后来问了读初一的姐姐, 才知道的。    ...

2016-06-18 18:26:39 10806 15

原创 3分钟搞定杀手级的coredump问题

刚入职的时候, 遇到了一个必然出现的coredump问题, 当时查代码, 完全正确, 某哥在帮我调试, 后来我也没有改什么代码, 也不知道怎么滴, 那个coredump问题居然就消失了。 当时没有搞明白, 反正没有coredump了就OK了. 现在想起来, 呵呵哒。       后来, 就生硬地有碰到了类似问题, 花了一下午的时间, 独立搞定。 请见:http://blog.csdn.net/

2016-06-17 23:35:20 8580

原创 重启是“万能”的

之前说过后台某台服务的内存泄露问题, 如果实在解决不了, 那就定时重启呗。 后台服务那么多, 重启一个没啥问题。       最近, 工作得好好的某服务器出现了dumping message, 消息队列中的消息处理不及, 出现大量超时, 当时我的处理方式是将机器上的服务做下线处理, 也就没有超时问题了。 其实, 后来发现, 重启一下服务就可以了。 对于这类非常见问题, 能定位出来更好, 但能回

2016-06-17 23:20:04 7562 1

原创 linux中的wget命令

最近, 某同学给我一个url : http://xxx/xxx/xxx.js,  我要把这个下载下来, 哎哟, 还在那里思考怎么去下载, 是登录到对应的机器上取吗?  是用迅雷吗?        我晕, 还是用linux的wget命令吧“: wget http://xxx/xxx/xxx.js        当然, 要注意, linu机器必须要能解析这个域名哈。       

2016-06-13 23:35:35 7422

原创 求证调和级数发散

自娱自乐一下, 看看调和级数为什么会发散:

2016-06-10 22:51:23 8652 1

原创 求椭圆的切线方程------很有对称美

最近高考, 我在家闲着也是无聊, 来搞个题目玩玩, 虽然十年过去了, 但宝刀不老, 数学不在话下哈, 来看看椭圆切线:

2016-06-10 22:25:54 23213 3

原创 《解密中国女CEO董明珠》米晓海

听说我欣赏董阿姨, 老伴就给我买了这本书。       书没啥内容, 和常规的商业书一样, 就是扯, 以后不看类似的书了。

2016-06-09 22:27:27 8042 1

原创 《X光下看腾讯》 蓝狮子

今天端午节, 也出去玩了一下, 回来顺便finish了之前买的一本书。       OK,  看完了, 不想写读后感, 没啥想写的, 就说这么多。

2016-06-09 21:50:00 7873

原创 ascii控制字符(不可见字符)和可打印字符(可见字符)------浪费15分钟的一次经历

系统工作得好好的, 但某次却异常, 花了十多分钟, 才定位出是加载文件中包含了不可见字符导致的。 最后解决方法是: 增强系统的兼容性。 今天我们来聊聊ascii控制字符(不可见字符)和可打印字符(可见字符), 以后碰到类似问题就很敏感了。 网上有人说, 可以用printf来判断字符是否是可打印字符, 这不是扯淡么? 我在VC++6.0下试了一下,...

2016-06-09 09:36:10 55906 5

原创 两次碰到编译错误: crosses initialization of...

在实战中, 遇到过两次crosses initialization of... 编译错误, 这很easy啦, 两次的原因分别是:     1. switch的case中有定义变量     2. goto跳过了变量的定义     简单, 解决办法也很简单, 仅作备忘。

2016-06-09 08:48:03 16525 1

原创 const导致的编译错误, 浪费了10分钟

最近写了几个函数, 参数我是用const的, 但调用更底层接口的时候, 接口中对应的参数没有const, 结果编译错误cannot find ...  居然花了10多分钟才看出问题, oh, my god.      算好, 对const的用法比较熟, 不然就呵呵哒了。      先来记录一下, 以后1分钟搞定啦。

2016-06-09 08:40:32 7941 1

原创 C/C++中的%010u是个什么东东?

遇到这样一个小需求, 需要将无符号的整数(最大值是4294967295, 是个10位数)转为字符串, 不足10位时, 前面补0. 比如:0000000000 0000000001 0000000002 0000000003 0000000004 0000000005 0000000006 0000000007 000000000

2016-06-05 12:12:07 11458 1

原创 传p还是传*p

刚学指针那会儿, 没太搞明白p和*p的区别, 后来搞清楚后, 发现这个东西确实是太简单了。      在实际生活中, 有很多类似的例子:      某某某是收藏某片的高手, 收藏了很多很多, 大家都找他要资源, 他怎么提供资源呢? 有两种思路:      1. 分别把资源传给每个人, 也就是提供*p      2. 建立一个资源共享区, 提供p, 大家根据这个p(在本例中指url)

2016-06-05 11:17:31 7399

原创 C/C++为什么要短路求值?

我们知道, 在C/C++中有短路求值机制, 那为什么要这么做呢, 我自己思考,有两点:      1. 效率      2. 代码的优雅      如下:#include using namespace std;int main(){ string s = "abc"; if(!s.empty() && 'a' == s[0]) { cout << s.c

2016-06-05 10:56:41 8867

原创 截包与重放是个技术活

周六在家, 画两幅图, 不说话:

2016-06-04 11:27:05 8094 4

原创 http的refer头------说说最近遇到的http 403错误

最近遇到这样一个问题, 用php吐出html, 在html中, 用<a>指向了一个视频资源的url, 但是, 当去点击这个链接的时候, 视频的url地址出现在浏览器新窗口的地址栏中, 只是没有播放, 抓包看了一下, 原来, 在访问url时, 对端返回403错误码。 然后我在浏览器地址栏中按一下enter, 就可以播放了。 奇怪了, 为什么从anchor进去的url无法直接播放呢? 于是, 我把页面对应的html代码复制, 保存在PC桌面上的test.html中并在浏览器中打开, 然后

2016-06-01 23:41:45 10706 1

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

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