
Linux
canvass
Practice makes perfect
展开
-
协程
1. 协程协程可以理解为一种用户态的轻量级线程, 切换由用户定义 协程上下文切换很快, 因为不会陷入内核态 协程拥有自己的寄存器上下文和栈, 协程调度切换时,将寄存器上下文和栈保存到其他地方,在切换回来的时候,恢复先前保存的寄存器上下文和栈优点协程具有极高的执行效率 因为子程序切换不是线程切换,是由程序自身控制,因此协程没有线程切换的开销, 多线程的线程数量越多,协程的性能优势就越明显 访问共享资源不需要多线程的锁机制, 因为只有一个线程, 也不存在同时写变量冲突, 所以在协程中控制共享资源原创 2020-07-19 11:06:19 · 194 阅读 · 0 评论 -
高级IO
1. 五种典型的IO模型IO完成过程:1. 等待IO就绪(满足IO的条件) 2. 进行数据拷贝。1.1 阻塞IO发起IO调用,若IO条件不具备,则一直等待。 优点:流程非常简单,一个IO完成后进行下一个。 缺点:无法充分利用资源,效率较为低下。1.2 非阻塞IO发起IO调用,若IO条件不具备,则立即报错返回,可以做其他事情,完毕后循环回来重新发起IO请求。 优点:相较于阻塞IO,对资源的利用较为充分,可以利用就绪等待时间做其他事情或者发起另一个IO调用。 缺点:相较于阻塞IO,流程稍原创 2020-07-16 17:59:12 · 110 阅读 · 0 评论 -
网络层@链路层
网络层:负责地址管理与路由选择(为每一条网络中的数据根据想去的地方选择合适的路径);IP;路由器IP协议格式: 4位版本号:IPV4/IPV64位首部长度:标识IP报头有多长,以4字节为单位()...原创 2020-06-27 08:48:45 · 268 阅读 · 0 评论 -
应用层协议@传输层协议
应用层协议:应用层是面对程序员的一层,应用程序是程序员自己写的,因此应用层协议由程序员自己决定。 1、自定制协议:序列化:将多个数据对象按照指定的协议进行组织成为持久化存储/数据传输的二进制数据串。 反序列化:将二进制数据串通过指定协议进行解析得到各个数据对象。 序列化方式:结构体二进制序列化,json,protobuf. 2、知名协议:HTTP-应用层的超文本传输协议-html。 网址:URL-统一资源定位符-定位网络中某台主机上的某个资源。 如何定位:url包含的要素-...原创 2020-06-01 11:12:46 · 1490 阅读 · 0 评论 -
socket套接字编程
网络通信中的数据必须带有:源端IP,源端端口,目的端IP,目的端端口,协议。 套接字编程头文件 #include <netinet/in.h> // struct_sockaddr_in结构体的定义以及协议的宏#include <arpa/inet.h> // 字节序转换接口#include <sys/socket.h> // 套接字接口 1、UDP UDP流程图...原创 2020-05-20 10:03:24 · 214 阅读 · 0 评论 -
网络基础
交换机:实现主机之间的数据交换 路由器:不但实现数据交换,而且实现数据的路径选择 网络的划分:局域网(1000m),城域网(20KM),广域网(大于20KM) 互联网/因特网 组织方式: 以太网/令牌环网 在复杂的网络通信中,必须保证每个主机都有自己唯一的标识符 网络中主机的唯一标识----IP地址 IP地址: IPV4:uint32_t --无符号四个字节的整数(4G)--不到43亿--IP地址是不够用的; DHCP--&g...原创 2020-05-14 21:52:30 · 220 阅读 · 0 评论 -
线程池
初始化阶段创建一堆线程(有最大数量限制),和一个线程安全的任务队列。 若有任务需要处理,则将任务抛入线程池中,线程池中的线程就去处理这个任务。 应用场景:有大量的数据处理请求,需要多执行流并发/并行处理。 优点:1、避免峰值压力下,线程创建过多,资源耗尽,程序奔溃;2、节省线程创建/销毁所带来的时间成本。 封装实现一个线程池大量线程(每个线程中都进行循环的任务处理) + 任务缓冲队列。 线程的入口函数都是在创建的时候固定传入,导致线程池中的线程进行任务处理的方式过于单一。因为线程...原创 2020-05-11 17:07:44 · 135 阅读 · 0 评论 -
多线程
线程安全的概念:多个线程对临界资源进行争抢访问,而不会造成数据二义或逻辑混乱的情况;主要针对临界资源的访问操作说明。 线程安全的实现:同步-->通过条件判断实现访问的合理性;互斥--> 通过同一时间唯一访问实现安全性。 互斥的实现:互斥锁。 互斥:我访问临界资源的时候,别人不能访问--->通过互斥锁对临界资源的访问操作进行加锁保护,在加锁期间别人不能访问临界资源。...原创 2020-04-27 18:19:04 · 275 阅读 · 0 评论 -
进程间通信(IPC)
进程间通信 (IPC):操作系统为用户提供的几种进程间通信方式。 主要因为进程之间具有独立性(每一个进程都有自己的虚拟地址空间),因此无法直接通信所以才需要操作系统提供进程间通信方式,实现进程间的通信。 进程访问都是自己的虚拟地址,而不是直接访问物理内存,无法访问同一块区域,因此无法实现数据通信。 操作系统针对不同的通信场景提供了多种不同的通信方式(Syst...原创 2020-04-06 21:12:51 · 208 阅读 · 0 评论 -
基础IO [文件的输入输出操作]
回顾标准库的IO接口 学习linux下系统调用IO接口 文件描述符的理解 重定向的理解 文件系统 库文件1、回顾标准库的IO接口 fopen / fread / fwrite / fseek / fclose stdin / stdout / stderrFILE *fopen(char *filename, char *mode);(文件名称,打开方式)打开方式:...原创 2020-04-03 18:30:33 · 176 阅读 · 0 评论 -
进程控制
进程创建:pid_t fork(void); 创建一个进程,父子进程数据独有,代码共享(因为代码段是只读的)。 写时拷贝技术:子进程复制了父进程,一开始与父进程指向同一块物理内存;因此看起来父子进程完全相同;但是进程之间具有独立性;意味着当这块物理内存中数据即将发生改变时会重新给子进程开辟物理内存,将数据拷贝过来,因为子进程应该有自己的数据。 进程创建采用写时拷贝技术,目的是为了提高进...原创 2020-04-01 18:00:22 · 140 阅读 · 0 评论 -
进程
冯诺依曼体系结构:现代计算机的硬件体系结构 五大硬件单元以及典型设备: 输入设备:采集获取数据 键盘 输出设备:数据输出 显示器 存储器:内存 (数据缓存). 硬盘和内存的存储介质是不一样的;内存的存储介质是一种易失性介质:数据断电后丢失。所有设备都是围绕内存工作,内存是中间的数据缓冲带---这种硬件体系结构所带来的软件行为 运算器:中央处理器C...原创 2020-03-20 17:47:49 · 159 阅读 · 0 评论 -
权限&Linux环境基础开发工具使用
普通模式跳行 gg:回到文本的头部 G(shift+g):回到文本的最后一行 [num]+G(shift+g):跳到任意行 gg=G命令行模式下的操作 :set nu : 设置行号 :set nonu:取消行号 :vs [filename] 同时打开多个文件 ctrl +ww 切换不同的文件xshell也有分屏的功能...原创 2019-10-25 21:57:20 · 427 阅读 · 1 评论 -
Linux 基本操作指令
1.Linux是啥?Linux 是一个操作系统内核操作系统(Centos)=>内核(Linux)+配套的程序发行版: Android, Ubuntu,Centos,Debain,Kall...公司用RedHat起源与Unix 诞生于AT&T2.为啥学Linux?学的是Linux环境编程1.到处都在用(全世界市场份额占领最高的系统)...原创 2019-04-25 17:02:51 · 422 阅读 · 0 评论