04 2023 档案
摘要:一、解释一下为什么发生tcp的粘包现象,以及怎么解决? tcp为了节约资源采用的是流式传输。接收端一下接收了多个包,粘在了一起。多个包首尾相接,无法区分是哪个包。 原因:发送方等发送缓冲区满才发送,接收缓冲区等满了才接受,多个包合成一个发送。 解决方法:不允许发送缓冲区满才发,提高优先级读区接收缓冲
阅读全文
摘要:一、题意,找出长度为n的所有只包含r,g,b三个字符的所有字符串的任意长度子串包含的rgb子序列的个数。 题解:枚举子串左右边界,别的地方随便填,找出本子串里随便填的时候,rgb子序列的个数。 #include <bits/stdc++.h> using namespace std; const i
阅读全文
摘要:今天学习的是IO的多路复用。 一、什么是流? 流是一个可以进行IO操作的内核对象。文件,管道,套接字等等都是流,流的入口是文件描述符。 二、阻塞和非阻塞:阻塞不占用cpu的时间片,非阻塞忙轮询占用cpu和系统资源。阻塞等待的缺点:对于多个I/O请求的问题,同一时刻只能处理一个流的阻塞监听。 三、多路
阅读全文
摘要:一、std tread的构造函数问题。 #include <thread> #include <iostream> #include <stdexcept> class ScropeThread { public: ScropeThread(std::thread t) :m_pThead(std:
阅读全文
摘要:如何实现memcpy? 如果从头实现memcpy,那么遇见src<dst的时候,并且有重叠的时候就嘎了。 #include <bits/stdc++.h> using namespace std; using LL = long long; const int N = 1e5 + 5; const
阅读全文
摘要:c++ vector的内存优化方法。 a. 背景知识:vector的内存空间只能增大,不能减小。并且大小是2的幂次,数据连续排放。如果不够了会重新开一片连续的内存,将原来的拷贝过去。 b. 所有的内存空间只在析构的时候才会被释放。用swap函数是可以做到释放内存的。 c. vector采用的技术是预
阅读全文
摘要:操作系统的中断和异常有什么区别? 中断是外部事件触发的,硬件设备发出的异步信号,用于向操作系统请求服务。中断事件发生时,会停止当前程序的运行,而转向中断处理程序的执行。在中断处理程序执行完成之后再回到原来的进程执行。 异常是cpu执行指令的时候遇到的错误和意外情况,是cpu内部的一种机制,所以异常是
阅读全文
摘要:Dijkstra算法,堆优化版本复杂度是mlog(m)。适合于没有负权的图。 #include <bits/stdc++.h> using namespace std; using LL = long long; const int N = 1e5 + 5; const int INF = 0x3f
阅读全文
摘要:一、01背包 for(int i=V;i>=c[i];--i){ dp[i]=max(dp[i], dp[i-c[i]]+w[i]) } hdu3466。这个题要考虑dp的无后效性质,简单来说,就是dp与物品排布有关的时候,我们应该选择最优的那一个。如果单独选择 i,j都没有问题的时候。如果先选i再
阅读全文
摘要:一、题意:找到第k(k上限1e12)大的,不包括4并且能被7整除的数。 题解:二分+数位dp。 #include <iostream> #include <cstring> #include <algorithm> using namespace std; typedef long long LL;
阅读全文
摘要:#include <bits/stdc++.h> using namespace std; using LL = long long; #define lson (nd<<1) #define rson (nd<<1|1) #define mid (l+r>>1) const int N = 1e5
阅读全文