C语言中宏的高级应用

关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号。比如下面代码中的宏: #define WARN_IF(EXP)     /      do{ if (EXP)     ...

2018-08-08 14:37:50

阅读数 30

评论数 0

Unix domain socket 实例

server端:#include <arpa/inet.h>#include <stdio.h>#include <stdlib.h>#include &am...

2018-06-07 15:51:38

阅读数 128

评论数 0

Socket的理解和应用

“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的...

2018-06-07 14:15:19

阅读数 188

评论数 0

非阻塞socket调用connect, epoll和select检查连接情况示例

我们知道,linux下socket编程有常见的几个系统调用:对于服务器来说, 有socket(), bind(),listen(), accept(),read(),write()对于客户端来说,有socket(),connect()这里主要要讲的是客户端这边的connect函数。对于客户端来说,...

2018-05-30 18:42:21

阅读数 90

评论数 0

pthread_join 详解

pthread_join在Linux中,新建的线程并不是在原先的进程中,而是系统通过一个系统调用clone()。该系统copy了一个和原先进程完全一样的进程,并在这个进程中执行线程函数。不过这个copy过程和fork不一样。 copy后的进程和原先的进程共享了所有的变量,运行环境。这样,原先进程中...

2018-05-30 10:20:40

阅读数 430

评论数 0

linux下的7种文件类型

普通文件(-)我们用 ls -lh 来查看某个文件的属性,可以看到有类似 -rw-r--r-- ,值得注意的是第一个符号是 - ,这样的文件在Linux中就是普通文件。这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具... .... 或 cp工具等。这类文件的删除方式是用r...

2018-05-30 10:19:30

阅读数 622

评论数 0

浅谈时间函数gettimeofday的成本 ——gettimeofday是由底层do_gettimeofday返回的?!

转自 https://blog.csdn.net/lqxandroid2012/article/details/51487547       我们在程序中会频繁地取当前时间,例如处理一个http请求时,两次调用gettimeofday取差值计算出处理该请求消耗了多少秒。这样的调用无处不在,所以我们...

2018-04-25 14:33:59

阅读数 26

评论数 0

字符串匹配的KMP算法

https://kb.cnblogs.com/page/176818/字符串匹配是计算机的基本任务之一。  举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD&q...

2018-03-26 15:34:16

阅读数 23

评论数 0

TCP四次挥手(图解)-为何要四次挥手

当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次挥手”。第一次挥手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个...

2018-03-12 10:09:28

阅读数 66

评论数 0

Linux Kernel 4.9 中的 BBR 算法与之前的 TCP 拥塞控制相比有什么优势?

转自 知乎:https://www.zhihu.com/question/53559433作者:李博杰中国科技大学微软亚洲研究院 博士在读

2018-03-04 00:13:40

阅读数 200

评论数 0

Linux TCP拥塞控制算法原理解析

TCP拥塞控制名词解释:1.awnd(advised window) 通告窗口,由接收端tcp发送给发送端tcp,告诉发送端自己能用于接收新的数据包的当前可用空间。2.cwnd(congestion window)拥塞窗口,人为引入的变量,用于拥塞控制。因为如果单独使用awnd,每次都按接收端最大...

2018-03-04 00:12:45

阅读数 78

评论数 0

使用Docker运行Nginx

转自:http://www.ruanyifeng.com/blog/2018/02/nginx-docker.html?from=timeline一、HTTP 服务Nginx 的最大作用,就是搭建一个 Web Server。有了容器,只要一行命令,服务器就架设好了,完全不用配置。 $ docker...

2018-02-27 13:05:54

阅读数 604

评论数 0

Linux程序开发经验总结

转自:http://blog.csdn.net/lotus302/article/details/187059531.  进程和线程1.1.  进程进程终止有8种方式使进程终止,其中5种为正常终止,3种异常终止方式:1)  从main返回2)  调用exit3)  调用_exit或_Exit4) ...

2018-02-24 16:16:07

阅读数 359

评论数 0

Linux 技巧:让进程在后台可靠运行的几种方法

我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题。nohup/s...

2018-02-24 15:27:31

阅读数 61

评论数 0

linux yum 命令

yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提...

2018-02-24 14:35:14

阅读数 48

评论数 0

互斥量、条件变量与pthread_cond_wait()函数的使用

1.Linux“线程”     进程与线程之间是有区别的,不过linux内核只提供了轻量进程的支持,未实现线程模型。Linux是一种“多进程单线程”的操作系统。Linux本身只有进程的概念,而其所谓的“线程”本质上在内核里仍然是进程。     大家知道,进程是资源分配的单位,同一进程中的多个线程共...

2018-02-23 15:21:16

阅读数 36

评论数 0

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