玩命加载中 . . .

学习之旅
Git的正确使用姿势与最佳实践 Git的正确使用姿势与最佳实践
学习基本的Git命令,并了解原理,在遇到Git相关问题时,能自行排查并解决 了解研发流程中的基本概念和规范,学会正确使用Git Git基本使用方式项目初始化mkdir demo cd demo git init git init参数
2022-05-28
4.3-多进程/线程实现并发服务器 4.3-多进程/线程实现并发服务器
客户端// TCP通信的客户端 #include <stdio.h> #include <arpa/inet.h> #include <unistd.h> #include <string.h> #include &
2022-03-17
5.1-阻塞与非阻塞 5.1-阻塞与非阻塞
一个典型的网络IO接口调用,分为两个阶段,分别是“数据就绪”和“数据读写”,数据就绪阶段分为阻塞和非阻塞,表现的结果就是,阻塞当前线程还是直接返回 同步表示A向B请求调用一个网络IO接口时,数据的读写都是由请求方自己来完成的(不管是阻塞
2022-03-16
4.5-UDP和本地Socket 4.5-UDP和本地Socket
UDP通信#include <sys/types.h> #include <sys/socket.h> ssize_t sendto(int sockfd, const void *buf, size_t len, int f
2022-03-16
4.4-IO多路复用 4.4-IO多路复用
IO多路复用IO多路复用使得程序能同时监听多个文件描述符,能够提高程序的性能,Linux下实现IO多路复用的系统调用主要有select、poll和epoll BIO阻塞模型 缺点: 线程或进程会消耗资源 线程或进程调度消耗CPU资源
2022-03-16
4.2-TCP 4.2-TCP
TCP通信流程套接字函数#include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> // 包含了前2个 >>>>>>>>>>>>>>>>>
2022-03-16
4.1-Socket 4.1-Socket
字节序转换函数#include <arpa/inet.h> // 转换端口 uint16_t htons(uint16_t hostshort); // 主机字节序->网络字节序 uint16_t ntohs(uint16_t net
2022-03-16
3.2-线程同步 3.2-线程同步
生产者消费者模型 生产者生成数据之后,放入缓冲区 消费者从缓冲区取出数据 任何时刻,只能有一个生产者或消费者可以访问缓冲区 分析得出: 任何时刻只能有一个线程操作缓冲区,说明需要互斥 缓冲区为空时,消费者需要等待生产者生成数据;缓冲区满
2022-03-15
3.1-线程 3.1-线程
线程 与进程(process)类似,线程(thread)是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程,同一个进程中的线程均会独立执行相同的程序,且共享同一份全局内存区域,包括初始化数据段,未初始化数据段,以及堆内存段
2022-03-15
2.4-守护进程 2.4-守护进程
守护进程进程组 进程组和会话在进程之间形成了一种两级层次关系 进程组是一组相关进程的集合 会话是一组相关进程组的集合 进程组和会话是为了支持shell作业控制而定义的抽象概念,用户通过shell能够交互式地在前台或后台运行命令 进程
2022-03-15
2.3-进程间通信(下) 2.3-进程间通信(下)
内存映射内存映射(memory-mapped I/O)是将磁盘文件的数据映射到内存,用户通过修改内存就能修改磁盘文件 非阻塞 #include <sys/mman.h> void *mmap(void *addr, size_t le
2022-03-15
2.2-进程间通信(上) 2.2-进程间通信(上)
匿名管道通信 匿名管道是一种特殊的文件,这种文件只存在于内存中。其实是一个在内核内存中维护的缓冲器 匿名管道只能用于父子进程或兄弟进程之间,必须用于具有亲缘关系的进程间的通信 这是因为管道实际上是内存的一个缓冲区 管道的写入端是一
2022-03-15
1 / 2