摘要:
采用状态机视角分析: 1.初始状态 (父进程 [ (写口->管道入口) (读口->管道出口) ] ; 管道 (入口,出口) ) 2.执行fork命令,复制父进程后 (父进程 [ (写口->管道入口) (读口->管道出口) ] ; 管道 (入口,出口) ; 子进程 [ (写口->管道入口) (读口-> 阅读全文
摘要:
假设当前要从栈中取字符拼接成字符串; 考虑到栈是倒序的,有两种拼接方式 一是直接先在结果串后面加上字符,随后调用反转函数,即可得到正确顺序的字符串 string result = ""; while (!st.empty()) { // 将栈中元素放到result字符串汇总 result += st 阅读全文
摘要:
刷题中遇到一个错误 ==42==ERROR: AddressSanitizer: SEGV on unknown address 最后发现是一行判断的问题, if(s[i]!=st.top()||st.empty())//st是栈容器,s是字符串 其中将或判断左右的条件调换位置就可以正常执行了, 初 阅读全文
摘要:
做个简单的比喻:进程=火车,线程=车厢,协程=车厢乘客 线程在进程下行进(单纯的车厢无法运行) 一个进程可以包含多个线程(一辆火车可以有多个车厢) 不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘) 同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易) 进程要比线程消 阅读全文
摘要:
程序在多处理器上运行会因为,多个线程同时进行,而导致丧失语句的原子性。 例如读和写的操作是分开的,不能保证同时完成。 所以软件不够用硬件来凑,通过硬件实现一条指令完成读写:这就是自旋锁。 可以理解为一个房间门口桌上只放一把钥匙,每次有人想进就用其他东西交换钥匙, 拿到钥匙才能进入房间,拿不到钥匙的就 阅读全文
摘要:
当需要进行查找速度优化时,就可以使用哈希表,需要使用额外的空间存储数据,随后可以提高查找效率。 常用的哈希表数据结构有三种:数组、集合(set)、映射(map)。 当数据量小时数组也可以有哈希功能: 例如统计字符串中字母出现次数,可以使用 s[0]~s[25] 的数组分别存储字母数量。 单当数据量无 阅读全文
摘要:
根据5层原理模型,模拟用户访问网站的流程: 定义一个传输的帧X。 用户端: 首先应用层根据协议创建HTTP报文:X=HTTP 随后在运输层加入TCP报文段:X=HTTP+TCP 然后在网络层加入IP首部:X=HTTP+TCP+IP 到达数据链路层加入首部:X=ETH+HTTP+TCP+TP+ETH 阅读全文
摘要:
可以理解一个线程就像一条单链表,依次执行每一步的操作。 当有多个线程时就像是增加了新的单链表。 在单处理器时代,同时只选取一个进程执行,所有可以很容易保证原子性。 此处引入原子性:即处理器和内存同一时间内被一个线程完全占有 但到了多处理器时代,就会出现多个线程同时进行,并且使用同一片内存。 这样自然 阅读全文