自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

stpeace的专栏

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

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

少说废话, 多玩程序: #include #include int main() { printf("%d\n", errno); int i = 0; for(i = 0; i < 5; i++) { errno = i; char sz...

2015-04-30 22:30:33

阅读数 5950

评论数 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; }     结果为:...

2015-04-30 21:23:26

阅读数 18651

评论数 12

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

我们经常使用telnet xxx port的形式登录服务器, 比如: C:\Documents and Settings\Administrator>telnet www.baidu.com 80        登录成功后, 我们通常都需要知道怎么退回到Windows的cmd...

2015-04-30 19:44:41

阅读数 13697

评论数 1

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

我们先来看一个程序: #include void fun1() { printf("fun1\n"); } void fun2() { printf("fun2\n"); } int main() { atexit(fun1); atexit...

2015-04-29 22:41:03

阅读数 6678

评论数 0

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

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

2015-04-29 22:04:10

阅读数 9655

评论数 0

转载 Linux下/proc目录简介

由于无法找到最原始的地址, 所以仅仅给出一个间接地址:http://blog.csdn.net/zdwzzu2006/article/details/7747977, 向原创作者表示致意.   (我会加上红色的注释部分)         1. /proc目录 Linux 内核提供了一种通过 ...

2015-04-29 21:27:00

阅读数 6059

评论数 0

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

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

2015-04-29 20:19:46

阅读数 5819

评论数 0

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

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

2015-04-29 00:13:17

阅读数 6201

评论数 0

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

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

2015-04-27 23:03:51

阅读数 7680

评论数 0

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

如果没有记错的话, 我应该是2012年买该书的, 夏天。 那个时候, 我想继续补一下自己的C/C++知识和功底, 也为笔试面试做一些准备。 买了该书之后, 有种如获至宝的感觉, 被林锐的《大学十年》深深触动。 边啃该书, 边做笔记, 这样, 新书就渐渐成了旧书了。 也经常对其中的一...

2015-04-27 21:59:50

阅读数 8296

评论数 0

原创 《乡土中国》 费孝通

老伴是学文科的, 爱买各种各样的书, 涉猎广泛, 她看的精不精, 我先不说。 我呢, 耳濡目染之下, 也喜欢看各种人文科学、社会学、历史学、心理学等方面的书, 对于一理工科出身的屌丝, 也是好事, 多了解一下外部世界, 不要天天就知道个coding和debugging.             ...

2015-04-26 21:51:23

阅读数 6264

评论数 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; // ...

2015-04-26 17:17:05

阅读数 6006

评论数 0

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

说明: 我用的编译器是VC++6.0, 支持.c和.cpp文件的编译。       很多朋友对在变量或者函数前面加extern比较熟悉了, 但对于extern "C"则有点措手不及, 有时。为什么需要extern "C"呢? 我认为这都是c++惹的祸, ...

2015-04-26 14:36:51

阅读数 7121

评论数 9

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

对linux的kill命令不太了解的一些朋友一直会有这样一个错觉: kill命令就是用来杀死一个进程啊!   我要说, 这种理解是比较初级的。  其实, kill这个命令的命名本来就误导了一大批人, 我不知道是谁取了kill这个名字, 我要是知道, 首先要为大家打他的屁股。         kil...

2015-04-25 23:34:48

阅读数 6767

评论数 2

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

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

2015-04-25 22:26:17

阅读数 6229

评论数 0

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

我们知道, 在linux中, 开启一个shell, 实际上就是开启一个shell进程, 如果在shell中运行一个ls命令, 实际上就是让shell进程拉起了一个ls进程, 且shell进程是父进程, ls进程是子进程。         某次, 我胡思乱想, 既然ls执行的时候对应一个进程, 那...

2015-04-25 21:13:14

阅读数 7994

评论数 3

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

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

2015-04-25 20:03:55

阅读数 7915

评论数 0

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

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

2015-04-24 23:00:23

阅读数 6999

评论数 0

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

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

2015-04-24 22:03:10

阅读数 6525

评论数 0

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

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

2015-04-24 21:39:40

阅读数 6393

评论数 0

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

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

2015-04-23 23:13:51

阅读数 6572

评论数 0

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

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

2015-04-20 21:23:28

阅读数 6251

评论数 4

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

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

2015-04-19 18:15:41

阅读数 8684

评论数 5

原创 《图解http》 上野宣

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

2015-04-19 17:42:27

阅读数 9995

评论数 1

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

在本文中, 我们首先来复习一下telnet命令, 然后聊聊我碰到过的“三次握手”失败经历。        在windows上利用wireshark启动抓包, 然后在cmd中执行telnet www.baidu.com 80, 去访问百度的80端口, 抓包结果如下:         我们看到,...

2015-04-18 23:44:55

阅读数 14099

评论数 4

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

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

2015-04-18 21:34:07

阅读数 18113

评论数 0

转载 其实Unix很简单

转载地址:http://blog.csdn.net/haoel/article/details/1533720/ 其实Unix很简单   陈皓       很多编程的朋友都在网上问我这样的几个问题,Unix怎么学?Unix怎么这么难?如何才能学好?并且让我给他们一些学好Unix的经验。在绝大...

2015-04-18 12:10:00

阅读数 6199

评论数 0

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

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

2015-04-18 11:56:57

阅读数 10028

评论数 12

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

前面, 我们玩过http, 颇有点意思, 在本文中, 我们继续来玩ftp(file transfer protocol).   http和ftp都是建立在tcp之上的应用层协议, 无论他们怎么包装, 怎么装bigger, 最终还是基于tcp端到端传输的。本文主要分为两个部分: 一. 用Wiresh...

2015-04-17 20:48:22

阅读数 15323

评论数 2

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

在本文中, 我们来玩一下http.   既然你看到了这篇文章, 那就说明你肯定直接或间接借助了http协议(浏览器的实现需要用到http协议)。 很多书本把http介绍得玄乎其玄, 高深莫测, 其实,  http也没什么大不了的。         当我们用浏览器看登录www.baidu.com...

2015-04-15 23:21:28

阅读数 26668

评论数 6

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

说明: 1. 本文的讨论和实验都以Windows为例, 其实在linux上也大同小异。 2. 在第一次写此博文时, 我对某些地方有一些误解, 现予以更正, 对文章结构做了较大调整,也欢迎大家提出质疑。 3. 在做实验玩代码的时...

2015-04-13 22:38:45

阅读数 17965

评论数 29

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

历时一年多, 终于相对认真且完整地把Bob Quinn和Dave Shuttle的名著Windows Sockets 这本书学了一遍(实际上有的章节学过好几遍), 受益较多。 以后就把这本书当做自己案头参考书, 有空的时候, 要随时再阅读一些, 有不懂的, 要再回来参考。        虽然是...

2015-04-12 17:25:41

阅读数 7500

评论数 2

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

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

2015-04-12 15:06:12

阅读数 10526

评论数 8

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

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

2015-04-12 11:30:35

阅读数 8040

评论数 4

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

那一年, 某哥让我写个tcp服务端客户端程序, 我草草写完, 然后他检查,并问我, 为什么客户端不用bind呢? 然后, 我卡壳了, 好尴尬啊。 现在, 我们来一起彻底了解一下这个问题。       先看看bind函数是干啥的。bind函数就是绑定, 将一个socket绑定到一个地址上, 也可以这...

2015-04-12 00:54:28

阅读数 18982

评论数 19

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

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

2015-04-11 23:53:55

阅读数 6095

评论数 0

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

我们首先来看这样一个场景: 某人很懒, 写信的时候, 经常用简写的形式代替完整的形式, 比如: 9494--->Yes, it is! asap--->as soon as possible sb--->se bi ....             现在, 要写一套程序, 将这些...

2015-04-11 21:18:13

阅读数 6041

评论数 0

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

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

2015-04-10 23:57:09

阅读数 6316

评论数 0

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

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

2015-04-10 23:11:46

阅读数 7400

评论数 0

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

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

2015-04-10 20:57:14

阅读数 9421

评论数 0

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