自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

认知 行动 坚持

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

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

原创 别再耍流氓了: 请别再用strcpy, 而用strncpy

我们先来看看strcpy, 下面的程序没有问题:#include using namespace std;int main(){ char str[4] = {0}; char *p = "abc"; strcpy(str, p); cout << str << endl; return 0;} 但是,我运行下面程序的时候,就有问题了:#in

2014-03-30 14:31:48 28835 1

原创 看似山重水复,其实有可能柳暗花明(跳出程序猿思维之外)

经历一:      上个月,系统中某程序出现了异常,我知道是哪个部位出现了问题,但不知道出问题的根本原因是什么,找相关人, 他自己也不知道问题出在哪。哎。 我周五搞了一天,周末两天加班,都没有把这个异常搞定。反正, 加上它就有问题,没有它,就没有问题。      单步调试,抓日志?狗屁! 都分析不出来,什么多线程,信号量,链表,队列,还概率性发生,搞得我头都大了。周五让他帮忙定位一下,也定

2014-03-30 13:17:48 8249 3

原创 串口是个什么玩意儿?

没图你说个N, 直接上图:      串口有公口和母口,这么取名,真是太形象了,不服都不行,牛逼。串口通常可以叫做COM(communication)口, 一般是9口,4+5.  有的电脑有多个串口,比如com1和com2.在嵌入式开发中,常用这个东西来打印日志,强大啊。          嵌入式系统通过串口把日志输入到电脑上,便于调试,示意图如下:

2014-03-30 12:46:35 10299 2

原创 如何大致判断对方电脑的操作系统类型?

ping一下百度:C:\Documents and Settings\Administrator>ping www.baidu.comPinging www.a.shifen.com [61.135.169.125] with 32 bytes of data:Reply from 61.135.169.125: bytes=32 time=46ms TTL=5

2014-03-30 00:41:21 10804

原创 某牛人说:C和C++的区别不大

爱讨论这个话题的,有两种人呢,一种是牛逼的人,一种是装逼的人,不说了。        某牛人说过, C语言中的全局变量和函数,就类似于C++中的成员变量和方法, 我肤浅地认为这句话相当有道理。不多说,看两个程序吧:#include using namespace std;int weight = 100;void print(int w){ cout << w << end

2014-03-29 23:41:26 7493 1

原创 昨天踩到一坨臭狗屎(与无损压缩有关)

昨天踩到一坨臭狗屎, 经过如下:      同事给我一个.zip包的地址,不知怎么搞的,我一download下来, 居然是download里面的文件,也就是说,我解压缩了,这应该没有问题吧。可是某系统需要的是压缩包,于是我又把它压缩成.zip包,后来用就一直有问题,无法定位,思前想后,找不到问题出在哪里。     没办法了,郁闷,后来停下手头工作,放松了一下。突然想起来,草,这两个压缩包肯

2014-03-29 23:17:57 7758 2

原创 机试中一个投机取巧的方法(先声明一下,我不负任何责任哈)

在机试题目中,经常需要使用动态数组或链表。大家可能很容易想到stl, 但有些机试禁止你用stl.        1.你可能说,定义一个超级大的数组就可以,你牛。但后台测试用例一运行,你就挂了。       2. 想冒险的人, 可以考虑用realloc. 挂的可能性有,但不是很大。       3. 正统的、最好的办法,你还是用链表吧。       下面我来说一个投机取巧的用

2014-03-28 00:02:50 7893 1

原创 上次机试, 栽倒在求最值的问题上, 哎

上次机试, 有个大程序中有求最值这个环节,最后阴沟翻船, 哎。       为了简化, 我仅仅用伪代码来示意,我的程序为:int max = p[0];int min = p[0];int i = 0;for(i = 0; i < n; i++){ if(p[i] is valid) { if(max < p[i]) { max = p[i]; } i

2014-03-27 23:43:54 7588

原创 从抓包的角度来分析tcp建立时的三次握手(好几次笔试面试,都有tcp三次握手)

三次握手过程如下: 来搭建一个网络环境: 利用CommView来抓包(因为它可以抓环回包包),开启它, 捕捉8888端口的包包。 服务端程序为:#include #include // winsock接口#pragma comment(lib, "ws2_32.lib") // winsock实现int ma

2014-03-27 23:32:01 10514 1

原创 什么是抓包?为什么要抓包?

前面讲了抓日志,现在来聊聊抓包。这里讲的抓包,并不是说用手去挠你头上的包包。       我们来看一个初三的物理实验题目:           现在灯泡不亮, 请定位分析。           这个很好办啊,无非就是搞个电压表和电流表呗。           在与网络相关的问题中,也会经常遇到类似的网络问题,遇到问题后, 该怎么办呢?猜测?估计?推脱? 我晕

2014-03-27 23:04:19 95812 21

原创 为什么飞机上要安装黑匣子呢? 也谈程序中log和debugger的应用场景

最近飞机出了不好的事,我表示深深地哀悼。实时监控系统出了问题, 大家都在急忙找黑匣子这个black box, 因为black box中有飞机飞行的一些记录。        下面,我从软件开发的角度来探讨一下log(black box)和debugger的应用场景。         最开始学C语言的时候,经常用printf函数来打印变量的值。后来学会了单步调试,便了此不疲, 彻底爱上

2014-03-26 23:40:09 8441

原创 今天看到的一个有趣面试题:return *this和return this有什么区别?

别跟我说, return *this返回当前对象, return this返回当前对象的地址(指向当前对象的指针)。 正确答案为:return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是克隆, 若返回类型为A&, 则是本身 )。return this返回当前对象的地址(指向当前对象的指针), 下面我们来看看程序吧:#include using namespace std;class A{public: int x; A

2014-03-26 22:53:40 45211 21

原创 void的两个奇葩用法

先看:int main(){ int x; return 0;}      该程序会有warning, 可以改为如下:int main(){ int x; (void)x; return 0;}     再看, 如下程序不会有warningvoid fun(){}int main(){ fun(); return 0;}      但

2014-03-25 23:48:01 7859

原创 TCP能检测到"断网""断电"事件吗(面试可以问倒很多人)?

我们知道, tcp的建立和拆除需要经历三次握手和四次挥手, 那么当客户端与服务器建立了tcp连接之后,突然断掉网线或者掉电, 两侧的tcp状态会有什么变化呢? 对于不了解tcp的人, 肯能会直接说: 能检测。 我曾经给出了一个貌似正确的答案: 不能检测。

2014-03-25 23:30:12 23037 10

原创 为什么cpu要一心二用:浅谈多线程编程的一个具体例子

什么是多线程,多线程就是多个执行序列。就是让cpu执行下这个序列,又执行下那个序列,不停地切换, 正所谓一心二用。       考虑一个实际场景: 客户端要向服务端发送文件,服务端会对发送文件进行检查,如果文件的头信息非法,则立即通知客户端不必继续发送,那么这个场景应该怎么处理呢?       1. 屎办法, 客户端先把文件发送完毕,然后服务端来检查。 这样肯定不好,假设文件是非法的, 那

2014-03-25 23:15:08 10382 1

原创 127.0.0.1和0.0.0.0

先说0.0.0.0吧, 他是本机上所有IP的集合。 而127.0.0.1是本机的环回地址,我要说,这就是个鸡肋。      假设PC1(client)的IP为192.168.1.105, PC2(server)的IP为192.168.1.106, 现在考虑网络编程。      pc1去连接 127.0.0.1:8888,     pc2监听0.0.0.0:8888,   连个鸟啊,

2014-03-24 00:07:42 16741

原创 利用STL中的map来写一个自己的命令行界面

居然没有用过命令行?那你怎么会关注这篇文章呢?我晕。      你看,司机师傅安按个按钮,门就开了,按那个按钮, 就唱歌。 按钮实际对应一个命令,真正解析并执行这个命令的,是里面的函数。在windows的cmd中,输入一个命令,就可以执行对应的功能,那个黑色的界面会把人的想法传给系统,系统来处理。下面,我们利用STL中的map来模拟简单的命令行,主要是了解map的功能和用法。在实战中,

2014-03-22 22:18:25 7899 1

原创 ssh, telnet在发起什么连接请求?

先看一个服务器程序:#include #include // winsock接口#pragma comment(lib, "ws2_32.lib") // winsock实现int main(){ WORD wVersionRequested; // 双字节,winsock库的版本 WSADATA wsaData; // winsock库版本的相关信息

2014-03-19 23:12:12 7878

原创 如何让recv函数有点脾气?(让你知道select函数的威力)

我们知道, recv是一个阻塞的函数,没有到数据的时候,会傻傻地等待数据。那么怎么让recv函数有点脾气, 不傻傻地等待呢? 服务器为(先跑起来):#include #include // winsock接口#pragma comment(lib, "ws2_32.lib") // winsock实现int main(){ WORD wVe

2014-03-17 23:59:30 13954 7

原创 从netstat看网络编程

不想学网络编程的屌丝说: 我只有一台电脑,不能模拟服务端和客户端,没法进行网络编程; 或者说:我没有网络,没法进行网络编程。 其实,你只需要一台电脑即可, 没有联网也没有关系。靠!你没电脑? 在cmd中输入netstat -nao | findstr 8888, 然后回车,你一般会得到nothing. 运行下面程序:#include #includ

2014-03-16 23:53:40 8378 2

原创 对象间是如何进行勾搭的?

什么是对象?在int a; 中, a就是对象。那么如何与对象a进行通信呢? 简单啊,且看程序:#include using namespace std;int a;int main(){ a = 1; //往对象中写数据 cout << a << endl; //从对象中读取数据 return 0;} 继续上菜,爱吃不吃:#in

2014-03-16 22:39:53 7639

原创 你能否真正搞定单例?

笔试面试让写个单例,不一定每个人都能搞出来。我们以前也谈论过单例,现在继续来看看: 可以写为:#include using namespace std;class A{private: int x; static A *pInstance;public: void set(int m) { x = m; } int get() { ret

2014-03-16 00:27:58 7727 1

原创 分割字符串遇到麻烦了? 也许你在找strrchr函数!

废话少说,直接上代码:#include using namespace std;int main(){ char str[100] = "aacacbxcxybxxxxx"; char *p = strrchr(str, 'c'); if(NULL != p) { cout << *(p + 2) << endl; } else { cout << "no" <

2014-03-15 23:39:20 7235 1

原创 memchr函数与strchr函数的区别

先看看原型吧:原型:extern void *memchr(const void *buf, int ch, size_t count);用法:#include 功能:从buf所指内存区域的前count个字节查找字符ch。说明:当第一次遇到字符ch时停止查找。如果成功,返回指向字符ch的指针;否则返回NULL。      看个程序吧:#include using n

2014-03-13 22:15:25 9545

原创 select函数何时返回?

先运行一下如下代码:#include #include // winsock接口#pragma comment(lib, "ws2_32.lib") // winsock实现int main(){ WORD wVersionRequested; // 双字节,winsock库的版本 WSADATA wsaData; // winsock库版本的相关信息

2014-03-13 00:10:33 8939 3

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

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