好长时间没写doc了,前面欠的几篇doc也都没写完,这段时间一直忙着装修了,罪过罪过。
一个好的vim插件配置
tcp握手和socket通信细节
socket的为网络通信协议提供了编程接口,socket就是不同计算机之间进行通信的一个抽象。普通的cs通信过程模型:
minftpd-开始
闲来无事,准备写个minftp,多进程模式,代码放在:https://github.com/jamal-jiang/minftpd
。
闲话少说,先画一下系统设计图:
clion编译《unix网络编程》源码
在学习unix网络编程的过程中我们都没
Python-yield漫谈
Python的yield其实是一个生成器的实现,在python里其实是一个协程的作用,协程的概念很早就被提了出来,在很多较新的语言里面都能看到这样的实现(Python,go,erlang等),在老一些的语言(C/java等)还没有支持这样的语法。
谈到协程,就不得不谈谈高性能服务器设计,我们知道,在高性能的web服务器设计上,一般都有这么几种架构:多进程、多线程、异步非阻塞,我们先来说这几种:
1. 多进程
大名鼎鼎的Apache就是多进程的典型实现,主进程只负责监听请求和管理连接,由子进程来负责具体的业务处理,这样设计的好处是当一个子进程挂掉的时候,并不会影响主进程的使用,但是这样使用的缺点也是显而易见的,在高并发请求的场景下,apache很容易创建出成千上万的子进程,子进程的创建占用大量的资源,进程切换带来了大量的上下文切换时间。但是这样的好处也是很明显的,在并发量不是很大而且是以计算为主的请求上,由于此时没有大量io,多进程处理显然是更有利的一种方式。
2. 多线程
多线程其实是多进程的一种改进,好处是可以共享进程的内存空间
Python-理解*args,**kwargs
先来看个例子:
Linux-也谈Apache和Nginx的网络模型
看这个话题之前,我们先来看下之前的文章:,https://jamal-jiang.github.io/2017/03/23/Linux-%E9%98%BB%E5%A1%9E%E9%9D%9E%E9%98%BB%E5%A1%9E%EF%BC%8C%E5%90%8C%E6%AD%A5%E5%BC%82%E6%AD%A5%E7%9A%84%E5%8C%BA%E5%88%AB/
Linux-阻塞非阻塞,同步异步的区别
要理解这两个概念,首先我们做一个简单的比喻: