自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

认知 行动 坚持

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

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

原创 玩玩linux下的errno, perror, strerror

少说废话, 多玩程序:#include #include int main(){ printf("%d\n", errno); int i = 0; for(i = 0; i < 5; i++) { errno = i; char szTest[100] = {0}; snprintf(szTest, sizeof(szTest), "%d", errno

2015-04-30 22:30:33 7390 4

原创 linux下的四个简单函数介绍:getpid, getppid, getuid, getgid

直接看程序:#include int main(){ printf("pid:%d, ppid:%d, uid:%d, gid:%d\n", getpid(), getppid(), getuid(), getgid()); return 0;}     结果为: [taoge@localhost learn_c]$ echo $$2774[taoge@localh

2015-04-30 21:23:26 24893 16

原创 telnet www.baidu.com 80后怎么退出到Windows的cmd中来呢?

我们经常使用telnet xxx port的形式登录服务器, 比如:C:\Documents and Settings\Administrator>telnet www.baidu.com 80       登录成功后, 我们通常都需要知道怎么退回到Windows的cmd中来, 具体方法是:先执行ctr + ],  然后执行quit即可。  如图: 

2015-04-30 19:44:41 32589 1

原创 玩玩linux下的atexit函数------负责登记的函数

我们先来看一个程序:#include void fun1(){ printf("fun1\n");}void fun2(){ printf("fun2\n");}int main(){ atexit(fun1); atexit(fun1); atexit(fun2); printf("main\n"); return 0;}      结果为(注

2015-04-29 22:41:03 8145 2

原创 玩玩linux下的kill、raise函数

之前说过kill命令, 我们也知道了, kill命名并没有杀死的意思, 而仅仅是发送信号, 今天, 我们继续学习它的函数形式。 raise这个单词的意思太多, 其中的一个意思是提出、抛出、发出, 实际上raise函数也是发出信号的。 kill和raise有如下等价关系:       kill(getpid(), xxx) 等价于rase(xxx),  意思是, raise函数就是向当前进程发信

2015-04-29 22:04:10 12278 1

转载 Linux下/proc目录简介

由于无法找到最原始的地址, 所以仅仅给出一个间接地址:http://blog.csdn.net/zdwzzu2006/article/details/7747977, 向原创作者表示致意.   (我会加上红色的注释部分)       1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制(也就是说/proc

2015-04-29 21:27:00 7786 1

原创 工作效率提升之创建桌面快捷方式------不是不知道, 而是没有意识到

我先说说这么一个场景, 在linux服务器上编译后, 生成的库文件通常保存在很深的路径下, 现在Windows通过samba映射到linux上, 也就上说, linux服务器相当于挂载在Windows上, 可以看到Windows多了一个盘符。        为了把那些库文件取到Windows本地, 我每次都是从Windows上进入Linux的深深目录, 一级一级地进, 找到库文件, 每

2015-04-29 20:19:46 7214

原创 仅从代码可读性来看void fun(const void *p, int len)中const的重要性

const可以增强程序的安全性, 让运行期的错误提前到编译期, 编译器强迫程序猿做出修改, 提高软件质量, 这个我早就介绍过了。 下面, 我从代码可读性的角度来说说const的重要性。 我看到类似于这样的一份代码:#include #include typedef struct _node{ int a; int b; int c;}Node;void fun(void

2015-04-29 00:13:17 7867 1

原创 如何用C程序获取www.baidu.com的ip地址?---实际是请求dns server解析

怎样用C程序获取www.baidu.com的ip地址呢? 实际上, 这个问题我们之前间接讨论过, 今天我们继续来说一下。 当然啦, 你得配dns地址, 也就是要指定dns服务器, 否则, 怎么能解析www.baidu.com呢? 当然了, 你可以直接ping www.baidu.com获取, 结果如下:C:\Documents and Settings\Adminis

2015-04-27 23:03:51 10400

原创 《高质量程序设计指南---C++/C语言》 林锐、韩永泉

如果没有记错的话, 我应该是2012年买该书的, 夏天。 那个时候, 我想继续补一下自己的C/C++知识和功底, 也为笔试面试做一些准备。 买了该书之后, 有种如获至宝的感觉, 被林锐的《大学十年》深深触动。 边啃该书, 边做笔记, 这样, 新书就渐渐成了旧书了。 也经常对其中的一些知识点不太懂, 放着就放着了, 后来又陆续地看, 不懂的知识在慢慢减少。 但是, 总有一些东西没有去深入涉猎。

2015-04-27 21:59:50 10818 2

原创 《乡土中国》 费孝通

老伴是学文科的, 爱买各种各样的书, 涉猎广泛, 她看的精不精, 我先不说。 我呢, 耳濡目染之下, 也喜欢看各种人文科学、社会学、历史学、心理学等方面的书, 对于一理工科出身的屌丝, 也是好事, 多了解一下外部世界, 不要天天就知道个coding和debugging.             2003年(我还在读初中), 全国高考语文试卷的阅读部分引用了柯灵先生的《乡土情结》, 我被柯老先生的对乡土的情结所打

2015-04-26 21:51:23 8593 2

原创 C++编译器会为类产生哪些默认的成员方法?---聊聊C++的Big Three

C++会为类产生哪些默认的成员方法?看代码:#include using namespace std;class A{};int main(){ A a; // 调用了A(); A b(a); // 调用了A(const A &x); A c = b; // 注意, 调用的还是A(const A &x); c = b; // 调用了A& operato

2015-04-26 17:17:05 7523 1

原创 再谈谈只针对C++编译器/链接器的extern “C“------C与C++的相互调用

说明: 我用的编译器是VC++6.0, 支持.c和.cpp文件的编译。 很多朋友对在变量或者函数前面加extern比较熟悉了, 但对于extern "C"则有点措手不及, 有时。为什么需要extern "C"呢? 我认为这都是c++惹的祸, 如果没有C++这个恐龙, 也就没有所谓的C与C++的相互调用,那也就不用纠结什么extern "C"了。 在本

2015-04-26 14:36:51 9857 10

原创 谁再把kill命令说成“杀死“就应该打屁股了

对linux的kill命令不太了解的一些朋友一直会有这样一个错觉: kill命令就是用来杀死一个进程啊! 我要说, 这种理解是比较初级的。 其实, kill这个命令的命名本来就误导了一大批人, 我不知道是谁取了kill这个名字, 我要是知道, 首先要为大家打他的屁股。 kill命令的真正作用是:将某信号发送给某进程或者进程组。 下面, 我们先来看

2015-04-25 23:34:48 9130 2

原创 利用thread来简要模拟signal函数功能

对于程序员来说, 代码比文字有趣多了, 所以我们少说废话, 多玩代码。 我们先来看一个简单的多线程程序(test.c):

2015-04-25 22:26:17 7802

原创 如何获取linux shell中ls进程的进程号?---有趣的问题!

我们知道, 在linux中, 开启一个shell, 实际上就是开启一个shell进程, 如果在shell中运行一个ls命令, 实际上就是让shell进程拉起了一个ls进程, 且shell进程是父进程, ls进程是子进程。        某次, 我胡思乱想, 既然ls执行的时候对应一个进程, 那么怎么获取ls进程的进程号码呢? 执行一下ls, ls很快执行完毕了, 进程消失了啊。 于是, 我想到

2015-04-25 21:13:14 10337 3

原创 模拟linux的shell---顺便复习一下fork,execlp和waitpid函数

我们知道, 如果在linux的shell中执行ls, 那么实际上shell对应的进程是父进程, ls对应的进程是子进程。 我们已经模拟过ls了, 下面, 我们来模拟一下shell, 让我们模拟的shell来执行linux的ls, pwd等命令, 模拟linux shell程序如下(也就是说, 下面程序就相当于一个shell):#include #include #define M

2015-04-25 20:03:55 10047

原创 linux下ls命令的简要模拟---顺便学学opendir、readdir函数

我们来简要模拟一下linux中的ls命令, 代码如下:#include <stdio.h>#include <dirent.h> // DIR,struct dirent,opendir, readdir

2015-04-24 23:00:23 9159 3

原创 我常用的gcc编译器选项

本文来小结一下我常用的gcc编译器选项:      1. gcc test.c      这个最直接, 会在当前目录下生成a.out, 然后执行./a.out就可以运行程序了。 我在玩程序的时候, 最喜欢用这个, 简洁清晰。      2. gcc -o test test.c       这个o, 是小写的, 并不是指定什么目标文件(object file), 而是指定可

2015-04-24 22:03:10 8217 1

原创 我修改的问题单居然回归不通过?---趣闻二则

趣闻一:        测试MM反馈, 我改的问题单, 回归不通过啊。 我当时挺纳闷的, 我这么认真, 居然有问题单回归不通过? 我亲自一侧, 果然有问题。 遇到这种情况, 我已经很有经验了, 别瞎定位, 先看看谁改了配置库上的对应模块的修改记录, 一看, 还真有人改了东东。在我修改之后, 他又引入了新问题。 好吧,责成让他修改。         趣闻二:       测试MM说:

2015-04-24 21:39:40 9298

原创 linux服务器开户:groupadd, useradd, passwd的使用

linux服务器下通常有很多用户, 当有新员工入职的时候, 经常需要为他们开户, 也就是开个账号, 这样他/她才能工作啊。 在本文中, 我们来简要了解一下linux的开户。 要注意, 如下操作都需要在root权限下执行, 普通用户执行不了。     1. groupadd embed         增加一个组, 名称为embed     2. useradd -G embed

2015-04-23 23:13:51 8500

原创 C++智能指针auto_ptr源码完全解析---以微软auto_ptr为例来探讨auto_ptr的用法

对于C/C++程序员来说, 内存泄露是一个谈之色变的话题, 很多时候, 机器运行1天2天都是ok的, 但运行到一个星期后, 就卡得要死。 实际上, 很多时候是内存泄露造成的。 内存泄露很容易引入, 但是定位起来非常非常难, 在内存泄露初期, 通常没有异常症状, 但随着内存泄露的累积, 内存逐渐被啃光, 最终导致卡死或者死机。 申请堆内存, 又没有正确释放, 就会导致内存泄露

2015-04-20 21:23:28 7816 5

转载 Linux下IP冲突检测程序源码及分析(利用免费arp)---感谢原作者

由于没有找到源代码的原作者, 所以就给出一个间接的转载地址:http://blog.csdn.net/wanxiao009/article/details/5622296, 再次感谢源代码原作者       该程序运行在linux环境下,可以检测ip冲突, 我试过, 挺靠谱的,现摘录如下:#include #include #include #include #inclu

2015-04-19 18:15:41 11169 6

原创 《图解http》 上野宣

先说明一下, http大牛请绕道行走, 请直接看高手推荐的《HTTP权威指南》 之前, 工作中涉及到一些html, css, js语言, 当初就简单地学了一下, 能顺利处理工作中遇到的问题。 后来又需要进军新的领域, 需要熟悉基于http的soap协议, 于是决定粗略地学习一下http, 期望对http有个基本清晰的了解。

2015-04-19 17:42:27 12014 2

原创 从telnet www.baidu.com 80 聊聊我经历过的tcp“三次握手”失败---顺便验证telnet是基于tcp协议的

在本文中, 我们首先来复习一下telnet命令, 然后聊聊我碰到过的“三次握手”失败经历。 在windows上利用wireshark启动抓包, 然后在cmd中执行telnet www.baidu.com 80, 去访问百度的80端口, 抓包结果如下: 我们看到, 前面两个包是dns请求和回应, 其中101.226.4.6是360推荐给我的dns服务器,

2015-04-18 23:44:55 18013 4

原创 为什么有时ping不通www.baidu.com但可以访问www.baidu.com网页?

了解网络的人, 基本上都用过ping命令, 这个优秀的小工具通常能非常靠谱地检测网络的连通性。 但是, 某次, 在某个特殊环境中, 我发现ping不通www.baidu.com但可以访问www.baicom.com网页. 刚开始一看, 这不是矛盾了么? 后来仔细想想, 觉得没什么不合理的。       ping www.baidu.com会利用到dns协议和icmp协议, 在上述特殊环

2015-04-18 21:34:07 31014

转载 其实Unix很简单

转载地址:http://blog.csdn.net/haoel/article/details/1533720/其实Unix很简单 陈皓     很多编程的朋友都在网上问我这样的几个问题,Unix怎么学?Unix怎么这么难?如何才能学好?并且让我给他们一些学好Unix的经验。在绝大多数时候,我发现问这些问题的朋友都有两个特点:1)对Unix有畏难心理,对其没有信

2015-04-18 12:10:00 7783

原创 《Windows 网络编程》 罗莉琴

当初为了学习网络编程, 买了罗莉琴主编的《Windows 网络编程》, 书上有大量的代码实例, 非常符合我的胃口。  我花了较多时间调试修改书上的代码, 在网络编程方面有所进步。       学习网络编程, 最重要的不是拿着厚厚的《unix网络编程》和《TCP/IP详解》死啃, 看天书, 看理论yy, 尽管很多网上所谓的“大牛”每次发言都不离《unix网络编程》和《TCP/IP详解》。

2015-04-18 11:56:57 12344 12

原创 用Wireshark抓包来揭开ftp client GG和ftp server MM的勾搭内容并用C代码来简要模拟实现Windows自带的ftp client

前面, 我们玩过http, 颇有点意思, 在本文中, 我们继续来玩ftp(file transfer protocol). http和ftp都是建立在tcp之上的应用层协议, 无论他们怎么包装, 怎么装bigger, 最终还是基于tcp端到端传输的。本文主要分为两个部分: 一.用Wireshark抓包来揭开ftp client GG和ftp server MM的勾搭内容。二.用C代码来简要模

2015-04-17 20:48:22 17517 3

原创 走进http的世界------用C代码模拟浏览器IE(http client)访问web(http server)的行为

在本文中, 我们来玩一下http. 既然你看到了这篇文章, 那就说明你肯定直接或间接借助了http协议(浏览器的实现需要用到http协议)。 很多书本把http介绍得玄乎其玄, 高深莫测, 其实, http也没什么大不了的。 当我们用浏览器看登录www.baidu.com的时候, 浏览器相当于客户端, 而服务端是百度公司掌控着。 要想大致了解http, 网上资料可

2015-04-15 23:21:28 31037 6

原创 心跳机制tcp keepalive的讨论、应用及“断网”、“断电“检测的C代码实现(Windows环境下)

说明: 1. 本文的讨论和实验都以Windows为例, 其实在linux上也大同小异。 2. 在第一次写此博文时, 我对某些地方有一些误解, 现予以更正, 对文章结构做了较大调整,也欢迎大家提出质疑。 3. 在做实验玩代码的时候, 意料之中地发现腾讯QQ也在玩心跳, 不清楚具体怎么实现的, 但有点意思哈。

2015-04-13 22:38:45 26450 38

原创 《Windows Sockets 网络编程》. Bob Quinn & Dave Shuttle (非常实用的Windows编程书籍)

历时一年多, 终于相对认真且完整地把Bob Quinn和Dave Shuttle的名著Windows Sockets 这本书学了一遍(实际上有的章节学过好几遍), 受益较多。 以后就把这本书当做自己案头参考书, 有空的时候, 要随时再阅读一些, 有不懂的, 要再回来参考。       虽然是1995年写的, 但到现在,书还是很权威的, 足见分量。 作者毕竟是WinSock的相关开发人员

2015-04-12 17:25:41 9736 2

原创 如何偷窥到socket对应的内核缓冲区中有什么数据? 有多少数据?---利用recv的MSG_PEEK和ioctlsocket的FIONREAD

很多时候, 应用程序仅仅想知道内核缓冲区中有什么数据, 或者想知道有多少数据可读, 也就是说, 应用程序仅仅想偷窥一下里面的数据, 并不是想偷取, 那怎么办呢? 事实上, 我们之前已经大致说过, 现在, 我们继续来复习一下recv的MSG_PEEK: 服务端程序为:#include #include // winsock接口#pragma comm

2015-04-12 15:06:12 12810 8

原创 什么是socket的name? 怎样给socket取一个name? --- 以生宝宝并取名的过程再谈socket、name、bind和socket name

在网路编程中, 我们经常听说到socket, 今天, 我们来详细了解一下socket的name. 一个socket name有三要素, 以WinSock为例, 它是在结构体SOCKADDR_IN中定义的, 三要素就是: 协议, ip, port. 下面, 我们以生宝宝并取名的过程来叙述。对应关系为 socket ------ 宝宝

2015-04-12 11:30:35 10926 5

原创 为什么TCP服务端需要调用bind函数而客户端通常不需要呢?

那一年, 某哥让我写个tcp服务端客户端程序, 我草草写完, 然后他检查,并问我, 为什么客户端不用bind呢? 然后, 我卡壳了, 好尴尬啊。 现在, 我们来一起彻底了解一下这个问题。 先看看bind函数是干啥的。bind函数就是绑定, 将一个socket绑定到一个地址上, 也可以这么说:bind函数对一个socket进行命名(注意:socket名称包括三要素: 协议, ip,

2015-04-12 00:54:28 28249 28

原创 我赞同Bob Quinn和Dave Shute的说法: WinSock中的SO_REUSEADDR就是个鸡肋, 最好不用它

本文, 我们讨论的范围是WinSock, 不是unix/linux中的socket. 在Windows Sockets这本书中, 作者Bob Quinn和Dave Shute说:SO_REUSEADDR很少有正当的需要, 我们应该尽量不用它。 不高谈阔论了, 我们来程序:(说明, 我pc的ip是192.168.1.100)#include #include

2015-04-11 23:53:55 7561 1

原创 利用map将“简写信件”转化为“原始信件”

我们首先来看这样一个场景: 某人很懒, 写信的时候, 经常用简写的形式代替完整的形式, 比如:9494--->Yes, it is!asap--->as soon as possiblesb--->se bi.... 现在, 要写一套程序, 将这些简单的直接还原为原始的完整形式。 其实, 思路是很自然的, 对简写信中的每一个单词进行判断, 如果需要转化,

2015-04-11 21:18:13 7675

原创 经典的单词计数程序---利用关联数组map和互斥集合set

在前面的文章中, 我们详细讲述了map这个关联数组, 并介绍了经典的单词计数程序, 下面, 我们看看这个场景: 单词计数的时候, 不考虑一系列的单词, 如不考虑"a", "kj"等等。 我们知道, set是个互斥集合, 所以在此可以排上用场了, 且看:#pragma warning(disable : 4786)#include #include #include #include

2015-04-10 23:57:09 7954 1

原创 关联容器map的下标操作(特殊)---map的本质就是关联数组, 数组的本质就是映射!

下标操作,说白了, 就是一种映射关系。 高中的数列, C语言中的内置数组, 都应该学过吧, 这些都可以理解为下标操作。 我们知道, 典型的顺序容器中, string, vector, deque都是支持下标操作的, 当然, 很多地方都说支持随机访问, 其实这个随机访问实际上就是只下标操作。 对于关联容器而言, set, multiset中的元素就是其关键字本身

2015-04-10 23:11:46 9304 1

原创 STL中的multimap---顺便说说如何查找同一关键字对应的所有值(利用count, lower_bound/upper_bound, equal_range)

我个人感觉哈, map的应用场景比multimap更多, 不过, 我们还是来学一下multimap。 我们知道, multimap中, 一个关键字可能对应多个不同的值, 怎么获取呢?我们来看程序, 接招(介绍三种方法):#pragma warning(disable : 4786)#include #include #include using namespace std;int main(){ multimap mp; mp.insert(pair(3, "hehe")

2015-04-10 20:57:14 12645 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关注的人

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