啦啦啦

取法其上,得乎其中,取法其中,得乎其下,取法其下,法不得也

新博客地址

现在新的博客地址 www.rpz105.com

2019-06-09 16:41:11

阅读数 8

评论数 0

0. 网络编程目录

至今已经在第二次写网络编程的博客了, 去年将网络分析和系统编程一起进行整理的, 而且没有对每一个知识点进行归纳和总结. 前段时间还是又回顾了TCP编程的一点基础, 为了以后回顾还有学习网络编程的看到写的博客后能够成系列的来学习, 还是决定还是重新整理一下更好. 现在模块分为四个部分 : TCP通信...

2019-05-16 12:23:32

阅读数 70

评论数 0

libevent 目录

自己将libevent的基本功能实现的地方差不多看了几次, 其实最初写这些博客的时候还是有好些地方没有理解透彻, 所以写了又删掉了一些. 最终感觉大致还是讲清楚才决定用于分享, 在看源码的时候真的有时会很痛苦, 主要里面很多的逻辑关联以及函数之间的关联. 最开始看的时候根本摸不到头脑, 网上都是分...

2019-02-24 16:01:49

阅读数 148

评论数 0

线程简单实现

github地址 https://github.com/FunctionDou/mythread/tree/master 环境 如果make之后出现无法编译的情况, 那么可能缺少了-m32条件的环境. 解决 缺少链接32位的环境, ubuntu中需要下载 sudo apt-get install ...

2019-01-17 21:45:46

阅读数 173

评论数 0

STL源码分析目录

SIG STL源码分析 前言 本专栏主要以STL源码剖析分析路线来分析SIGSTL3.0源码. 整个模块准备对学习STL源码剖析之后做一个系统的总结, 这些都是我个人的理解, 如果分析有什么问题欢迎各位大佬们指出. 也很感谢作者以及网络中各个大佬的总结, 让我也能更容易更深刻的理解到STL强大和方...

2018-12-11 20:24:43

阅读数 319

评论数 0

记一则shadowsocks问题

背时, 前几天因为想在服务器上安装某软件搭建自己的博客, 结果导致自己的shadowsocks突然间不能作用. 其实故障的原因很大就是软件导致的, 但让室友帮忙查看网页是否能够访问时却又发现默认网页似乎也不能访问了甚至连该软件提供的端口也无法访问. 最终还是消停了几天看看是不是端口被攻击了(虽然可...

2019-05-25 16:42:44

阅读数 47

评论数 0

gdb 多线程和多进程调试

gdb 多进程和多线程调试 多进程调试 info inferiors : 显示当前的多进程信息. 前面有 * 表示当前调试的进程 inferiors num : 指定当前调试的进程. num表示当前跳转到调试的进程番号. 如果要调试子进程的话, 可以用 ps 命令查看在使用该...

2019-05-10 15:49:18

阅读数 55

评论数 0

53. 线程池

一般在web服务端使用线程池是比较常见的, 本节呢, 就已以实现一个简单的web服务端为目标, 仅仅实现GET请求, 最多在加上POST请求. 如果对web服务端并不熟悉的, 可以回过头去看一下http请求与应答以及一个500行左右的web服务端源码tinyhttpd(整理了源码以及修改和加注释后...

2019-05-10 15:19:54

阅读数 42

评论数 0

52. 线程-IO复用(EPOLLONESHOT)

线程怎么与IO复用联系起来, IO复用中创建线程? 还是线程中IO复用? 这个问题用在进程也是一样的. 其实两种方式都可以. 本节采用在 IO复用中创建线程, 接下来就来看看具体怎么实现的吧. epoll 的EPOLLONESHOT事件 还记得 epoll 的 event 可设置的状态吗? ...

2019-05-10 15:17:54

阅读数 53

评论数 0

51. 线程-服务端

在最开始实现并发服务端的时候, 最开始想到的办法便是使用多进程, 使每个 TCP 连接对应一个进程; 之后我们又将多进程并发改写成了 IO 复用的方式实现了相同的功能; 但现在唯一没有将服务端改写成线程, 本节就来改写服务端. 线程服务端 在改写成多线程之前, 要对 [线程创建], [线程同步]...

2019-05-10 15:14:41

阅读数 70

评论数 0

50. 进程池

一般进程池和线程池都是并发编程中常见的, 如nginx采用进程池, 也有实现协程降低上下文切换的代价等等, 使用和实现这些方法都是为了提高我们服务端的并发能力. 进程池和线程池都是避免服务端频繁的创建进程(线程), 毕竟创建进程(线程)的代价很大. 所以可先在程序运行时便分配出一定的进程(线...

2019-05-10 15:12:31

阅读数 48

评论数 0

49. HTTP 请求/应答

HTTP 协议是 Hyper Text Transfer Protocol (超文本传输协议) 缩写, 并且是基于 TCP/IP 通信协议来传递数据. HTTP 协议特点 无连接 : 每次进行一次 HTTP 通信. 服务器处理完客户的请求并收到客户的应答后立即断开连接, 这种方式被称为短连接....

2019-05-10 15:10:16

阅读数 64

评论数 0

48. 半同步/半异步

本节说到的半同步与半异步跟同步和异步并不是一个概念, 请不要混淆了. 也为了避免混淆, 下面也会对同步和异步做一个简要的说明. 同步/异步 同步和异步是属于IO模型中, 前面已经对IO模型有过接触了( 如 非阻塞IO[1]). 同步 : 内核通知进程有数据到来, 进程从内核空间中将数据复制到应...

2019-05-10 15:08:57

阅读数 57

评论数 0

47. web 客户程序

前面铺垫了非阻塞 connect 以及 HTTP 请求, 本节就已 unp 书上的例子实现一个简单的 web 客户端程序. 客户程序 使用非阻塞式connect 保证同时能建立多个 TCP 连接. 如果使用阻塞式 connect, 每次都必须等待上一个连接成功后才能建立下一个连接; 而我们所写的...

2019-05-10 15:07:27

阅读数 74

评论数 0

46. 域名解析

前面我们使用的所有客户端建立连接都是在知道对方的 IP 地址基础上进行的. 但是如果我们需要使用前面的客户端程序与网页建立连接难不成还要记住该网页的 IP 不成? 当然. 有过网络基础上肯定知道 DNS域名服务器. 该类域名系统通过主机名就可以查询得到其 IP 地址, 之后便顺利进行连接. 当然操...

2019-05-10 15:05:10

阅读数 47

评论数 0

45. connect 实现定时

我们需要先连接 getaddrinfo, 而 getaddrinfo 的特性实在太多, 本节也仅仅只是简单的做一个小结, 如果想要了解更加全面可以参考 unp 第245页. getaddrinfo 函数 getaddrinfo 函数是与协议无关 (TCP, UDP都可以) 并且不仅支持 IPV4...

2019-05-08 16:26:29

阅读数 54

评论数 0

44. 最大保持TCP连接个数

前面通过IO复用实现了 connect 的定时, 本节使用 connect 非阻塞验证进程 能保持多少 TCP连接. 非阻塞式 非阻塞 connect 还能用来测试服务端的抗压能力, 当然使用阻塞 connect 也能够保持多个 TCP 连接, 但效率没有非阻塞高. 可以看出来同一时间阻塞式的必...

2019-05-08 16:23:56

阅读数 46

评论数 0

43. TCP套接字之connect非阻塞

本节来将客户端的connect阻塞式改为非阻塞式. 这样可以同时向服务端发起多个连接并一起进行处理, 非阻塞connect一般用来测试服务端的抗压能力. connect 非阻塞用途 connect设置为非阻塞之后会立即返回 设置errno为 EINPROGRESS 错误, 表示连接操作正在进行中...

2019-05-08 16:21:32

阅读数 60

评论数 0

42. TCP套接字之accept非阻塞

本节来理论性的了解一下关于服务端 accept 非阻塞. 阻塞 accept 服务器在繁忙过程时, 在建立三次握手之后, 调用accept之前, 如果出现客户端突然断开连接的情况, POSIX 指出这种情况 errno 设置为 CONNABORTED. 如: 三次握手之后, 客户端发送 RST...

2019-05-08 16:20:14

阅读数 66

评论数 0

41. 非阻塞IO

前面我们所使用的IO都是阻塞式的, 当然, 默认也是阻塞式的. 不过我们也可以设置文件描述符将阻塞式变为非阻塞式. 我们为什么会将阻塞式转为非阻塞式呢? 肯定是有好处的, 而本节就先简单介绍一下关于非阻塞式. 阻塞式 先来了解一下阻塞式. 阻塞式 : 进程运行到阻塞式的函数时会被投入睡眠切换执行...

2019-05-08 16:18:21

阅读数 49

评论数 0

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