1. 两数之和✅ 错过一次没关系,第二次把握住就好 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> mp; vector<int> res;…
预备知识 网络套接字socket 属于Linux特殊文件类型(管道、套接字、字符设备、块设备) 一个文件描述符指向一个套接字(该套接字内部由内核借助两个缓冲区实现) 在通信过程中, 套接字一定是成对出现的 类比前面进程通信中的管道:一个管道掌控着两个文件描述符和一个缓冲区,而一个套接字掌控着一个文件描述符和两个缓冲区 ps:图中画的不恰当,数据流通…
协议 协议:从应用角度讲,协议就是一组规则,用于数据的传输和解释 典型协议 应用层:HTTP、FTP、NFS、SSH、telnet 传输层:TCP、UDP 网络层:IP、ICMP、IGMP 链路层:以太网帧协议、ARP 网络应用程序设计模式 c/s模式: 客户端服务器端架构 client/server 优点: 可以缓存数据,提高传输效率 协议选择灵…
线程同步 同步即协同步调,多个线程对公共区域数据按序访问,防止数据混乱,产生与时间有关的错误。 线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其他进程为保证数据一致性,不能调用该功能。 因此,当有多个控制流共同操作一个共享资源时,就需要同步 数据混乱原因 资源共享(独享资源则不会) 调度随机(意味着数据访问会出现竞争…
进程组和会话 进程组是多个进程的集合,而会话是多个进程组的集合 每个进程都属于一个进程组,当父进程创建子进程的时候,默认子进程与父进程属于同一进程组 进程组ID = 第一个进程ID(组长进程) 可以使用kill -SIGKILL-进程组ID(负的)来将整个进程组内的进程全部杀死 只要进程组中有一个进程存在,进程组就存在,与组长进程是否终止无关 创建…
示例程序mycp.c如上图所示,实现文件内容的复制。 经过编译后,执行./mycp open.c open2.c,程序执行成功。 解析 main函数参数: argc,即argument count,表示传递给程序的参数个数,程序本身的名字也计数在内。 argv,即argument vector,是一个字符串数组,包含所有传递给程序的参数。argv[…
相关概念 信号是软件层面上的“中断”。一旦信号产生,无论程序执行到什么位置,必须立即(用户感觉是立即,其实是要等待一个从用户区进入内核区的契机,站在CPU的时间量级上具有延迟性)停止运行,转而去处理信号,等信号处理结束,再继续执行后续指令。 每个进程收到的所有信号,都是由内核发送并处理的 与信号相关的事件和状态 产生信号: 按键产生,如:ctrl+…
IPC方法(Inter-Process Communication) Linux 环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核。在内核中开辟一块缓冲区,进程1把数据从用户空间拷贝到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提…
目的:在用vim打开空文件时,会根据后缀自动加载对应的模板文件,减少每次新建文件的重复输入 设置步骤: 在/usr/share/vim/vimfiles目录下新建一个自定义后缀的模板文件,比如template.c,在里面自定义模板内容 编辑/etc/vimrc,找到下面这一行: autocmd BufNewFile *.spec 0r /usr/s…
将选定的文本加粗:Ctrl + B 使选中的文本变成斜体:Ctrl + I 将选定的文本转换为链接:Ctrl + K 在选定的文本下划线:Ctrl + U 让选择的文本成为代码:Shift + Alt + X 将当前标题转换为段落:Shift + Alt + 0 将当前段落或标题转换为级别1至6的标题:Shift + Alt + 1 - 6 添加代…