2018年4月23日

c++11 记录

摘要: #include #include #include #include #include #include struct A{ int a; std::string name; }; void fun(int) { std::cout : " : " : "; return a; } virtual ~Bar(){} publi...阅读全文

posted @ 2018-04-23 13:14 沐浴凌风 阅读(3) 评论(0) 编辑

2018年4月4日

golang语言编译的二进制可执行文件为什么比 C 语言大(转载)

摘要: 最近一位朋友问我“为什么同样的hello world 入门程序”为什么golang编译出来的二进制文件,比 C 大,而且大很多。我做了个测试,来分析这个问题。C 语言的hello world程序: 1 2 3 4 5 #include <stdio.h> int main() { printf("h阅读全文

posted @ 2018-04-04 13:11 沐浴凌风 阅读(5) 评论(0) 编辑

2018年3月27日

GDB 调试多线程多进程

摘要: GDB是linux下的调试利器,在c/c++程序开发过程中必不可少的。这里总结一下多进程和多线程的调试方法和技巧。 多进程的调试: 如下示例 编译 gcc -g process.c -o process -g一定要加上,否则没有调试信息。 1. 如果我想要锁定子进程/父进程该怎样? 这里在fork之阅读全文

posted @ 2018-03-27 15:14 沐浴凌风 阅读(185) 评论(0) 编辑

2018年3月22日

libevent中的基本数据结构---queue.h

摘要: 使用例子如下: 1 #include "list.h" 2 #include <stdlib.h> 3 #include <stdio.h> 4 5 struct Person{ 6 int age; 7 double length; 8 SLIST_ENTRY(Person) next; 9 };阅读全文

posted @ 2018-03-22 08:59 沐浴凌风 阅读(32) 评论(0) 编辑

2018年3月21日

TCP 连接关闭及TIME_WAIT探究

摘要: 这里主要记录一下TCP连接在关闭的时刻,有哪些细节问题。方便在以后的程序设计中能够注意这些细节, 以避免出现这些错误。首先我们来看一下TCP的状态转换图。如《unix网络编程》卷一所示如下图: TCP 四次挥手: 挥手时的序号问题 挥手过程中状态转换问题 TIME_WAIT 产生原因 挥手序号问题:阅读全文

posted @ 2018-03-21 11:12 沐浴凌风 阅读(280) 评论(0) 编辑

2017年12月26日

网络程序中常用的三种心跳机制----服务器端

摘要: 心跳检测在网络程序中常常被用到,在客户端和服务器之间暂时没有数据交互时,就需要心跳检测对方是否存活。心跳检测可以由客户端主动发起,也可以由服务器主动发起。在网上看了一下心跳的讲解,大多是千遍一律只是给出了客户端十分简单的Heartbeat。这里提供了三种Echo服务器的HeartBeat 实例可供参阅读全文

posted @ 2017-12-26 10:32 沐浴凌风 阅读(1489) 评论(1) 编辑

2017年12月19日

TCP程序中发送和接收数据

摘要: 这里我们来探讨一下在网络编程过程中,有关read/write 或者send/recv的使用细节。这里有关常用的阻塞/非阻塞的解释在网上有很多很好的例子,这里就不说了,还有errno ==EAGAIN 异常等等。首先我们拿一个简单的实例代码看一下。 read/write面临的是什么问题: 字节流套接字阅读全文

posted @ 2017-12-19 09:51 沐浴凌风 阅读(842) 评论(10) 编辑

2017年12月15日

如何编写一个稳定的网络程序(TCP)

摘要: 本节我们看一下怎样才能编写一个基于TCP稳定的客户端或者服务器程序,主要以试验抓包的方式观察数据包的变化,对网络中出现的多种情况进行分析,分析网络程序中常用的技术及它们出现的原因,在之后的编程中能早一点意识到这些潜在问题。实例代码如下: client.c 和server.c 因在试验过程中代码有所改阅读全文

posted @ 2017-12-15 11:51 沐浴凌风 阅读(1350) 评论(10) 编辑

2017年12月13日

Linux 编程--三种常用的定时器

摘要: 这节我们来探讨一下linux开发过程中常用的定时器,尤其在网络编程中被常常用到如heartbeat,断线重连等等。这里提供了三种定时器的方案,分别是链表形式的计时器,环型计时器,最小堆计时器。每个都有不同的作用和优势,可以结合实际项目选择或者改良。 链表计时器: 链表计时器是一个实现很简单的一种计时阅读全文

posted @ 2017-12-13 11:04 沐浴凌风 阅读(484) 评论(2) 编辑

2017年12月11日

Libevent 事件循环(2)---事件被加入激活队列

摘要: 由Libevent 事件循环(1) 在上文中我们提到了libevent 事件循环event_dispatch 的大致过程,以epoll为例,我们看一下事件被如何加入激活队列。 再看函数event_active_nolock_(ev, ev->ev_events & events, 1)。 我们在ti阅读全文

posted @ 2017-12-11 10:49 沐浴凌风 阅读(154) 评论(0) 编辑

导航