自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 MIT 6.824-lab3A(实现思路)

lab3A

2026-03-16 20:46:50 1202

原创 通讯录完善版本(详细讲解+源码)

经过长达六个月的时间,年迈的博主终于想起来,通讯录还需要完善,那么这篇文章就对我们的初代通讯录(初代通讯录(详细讲解+代码)_化学系通讯录最简单三个步骤-CSDN博客)进行完善,增加动态更新内存的内容,以及建立一个文件,将通讯录的信息保存下来;

2025-04-25 20:44:43 1571 57

原创 简单线段树的讲解(一点点的心得体会)

关于线段树的讲解

2025-04-19 20:16:13 1092 13

原创 MIT 6.824 lab3D

3D日志压缩

2026-05-12 16:06:07 380

原创 MIT 6.824 lab3B/C

lab3B/C

2026-04-26 23:31:08 449

原创 在排序数组中查找元素的第一个和最后一个位置

public:elser = mid-1;left = l;elsel = mid+1;right = r;

2026-04-04 11:20:22 51

原创 最小覆盖子串

public:mp1[e]++;start = l;++l;++r;

2026-04-02 23:01:12 79

原创 反转字符串中的单词

public:string res;l=r;= ' ')--l;res += ' ';r = l;return res;

2026-04-01 21:09:17 225

原创 交换字符串中的元素

public:string str;int x, y;return tmp;i < n;++i) {s=tmp;

2026-04-01 21:08:23 139

原创 连接所有点的最小费用

/n 个点需要 n-1 条边构成树。

2026-04-01 21:07:51 409

原创 连接所有 点的最小值

/n 个点需要 n-1 条边构成树。

2026-04-01 09:37:40 47

原创 kruskal

int n,m;int x,y,z;}a[M];i<=m;++i){cnt++;cin>>n>>m;i<=n;i<=m;++i){kruskal();return 0;

2026-03-31 17:21:05 36

原创 等式方程的可满足性

/如果father[x]不是源头,继续往前找。//y的源头等于x的源头。

2026-03-30 17:06:33 50

原创 冗余连接-

/如果father[x]不是源头,继续往前找。//y的源头等于x的源头。

2026-03-30 16:32:38 49

原创 省份的数量

/如果father[x]不是源头,继续往前找。//y的源头等于x的源头。

2026-03-30 16:30:36 26

原创 网络延迟时间

public:pq;pq.pop();if (st[u])continue;if (!i < n;++i) {return -1;return res;

2026-03-29 22:40:03 189

原创 拓扑排序-

public:++i)q.push(i);q.pop();--ind[v];return res;

2026-03-29 20:54:00 39

原创 大臣的旅费

/ 经过 cur 的最长路径 = 最长的两条子路径之和。// 只有一条子路径,该路径本身就是经过 cur 的路径。0:y[sz-1];// 返回从 cur 向下能到达的最远距离。//叶子节点且不是根,返回0。// 存放从 cur 向下的所有路径长度。//往下递归寻求最大路径和。

2026-03-29 20:25:18 385

原创 单源最短路径

int n,m,s;i<=n;dist[s]=0;pq.pop();st[u]=true;if(!i<m;++i){int u,v,w;dijkstra();i<=n;return 0;

2026-03-28 22:37:05 218

原创 打家劫舍3

/如果不选,取子节点选与不选时得到的最大值。//如果选这个节点,那么他的子节点都不能选。

2026-03-28 20:28:04 408

原创 二叉树的直径

public:if(!int tmp=0;int ret=0;return ret;

2026-03-28 20:27:07 168

原创 岛屿数量--

public:k<4;++k){int cnt=0;i<n;++i){j<m;++j){cnt++;return cnt;

2026-03-28 20:26:07 349

原创 分割等和子集

/枚举从0-n-1的数的组合能不能和为target dp[i][j]表示前i+1个元素能不能组成和为j。if (num > j) {//如果这个数比枚举到的数大,拿不了。if (sum % 2 == 1)//如果总和是奇数,不行。dp[i][0]=1;

2026-03-23 20:30:24 163 1

原创 最小路径和

public:i < n;++i) {// }i < m;++i) {i < n;++i) {j < m;++j) {

2026-03-23 19:23:41 258

原创 全排列--

public:return;i < end;++i) {if (st[i])continue;return res;

2026-03-22 22:15:06 33

原创 单词搜索-

public:k < 4;++k) {continue;if (i < n;++i) {j < m;++j) {

2026-03-22 22:12:55 183

原创 组合总和-

public:return;return;i < efs;++i) {continue;path);return res;

2026-03-22 22:11:25 41

原创 地宫取宝-

tmp++;int main()i<n;++i)j<m;++j)return 0;

2026-03-22 22:10:44 47

原创 盛最多水的容器

双指针从两端不断枚举可能的容器大小,取最大值。

2026-03-20 20:54:49 151

原创 【无标题】

僵尸进程不占用CPU/内存,但占用进程表项,大量堆积会导致无法创建新进程。孤儿进程指的是父进程退出或者挂了的子进程,最终会被一号进程领养,通常无害,僵尸进程即关闭或者挂了的时候其资源没有父进程进行回收的进程,导致资源泄露。:存在进程链P1→P2→...→Pn,P1等待P2持有的资源,P2等待P3,...,Pn等待P1。:子进程再fork孙子进程后立即退出,孙子进程成为孤儿被init收养,父进程只需等待子进程即可。父进程主动回收,使用双fork,让孙子进程被init进程管理。:子进程已终止,但父进程未调用。

2026-03-20 20:52:06 241

原创 【无标题】

用于定义一个标识符,通常用于定义宏或者标识符。在头文件中,通常会定义一个标识符,用于表示当前头文件是否已经被包含。:用于判断某个标识符是否未被定义,如果该标识符未被定义,则条件成立,执行下面的代码。通过这些预处理指令的组合,可以有效地防止同一个头文件被多次包含,避免重复定义和编译错误。是C语言中用来防止头文件被重复包含的预处理指令。的条件不成立时(即该标识符已被定义),:结束条件编译指令的块。用来结束条件编译块。

2026-03-19 10:17:45 29

原创 深度解析TCP三次握手四次挥手

服务端将剩余数据都发送完毕后,确认自己没有东西要发了,于是向客户端发送FIN报文,用来关闭服务端到客户端的数据传输。服务端:CLOSE_WAIT——>LAST_ACK(最后确认)TCP作为一个可靠的传输协议,无论是建立连接的“三次握手”,还是断开连接的“四次挥手”,其每一步的设计都充满了智慧,旨在复杂的网络环境中保证数据传输的准确性和可靠性。三次握手是为了防止历史重复连接的初始化错误。四次挥手是由于TCP的全双工特性,允许一端关闭后另一端继续发送数据,并通过TIME_WAIT和2MSL。

2026-03-18 21:11:26 569

原创 康复训练 7

TCP是全双工协议,双方需独立关闭各自的发送通道。服务端收到FIN时可能仍有数据待发,因此先回ACK确认,待数据发完再发自己的FIN,导致ACK和FIN分开发送,形成四次交互。

2026-03-18 21:11:14 393

原创 寻找重复数

/ 因为有重复数字,所以至少有两个不同的索引会指向同一个值(即同一个后继节点),从而形成环。//从索引 0 出发,按照 nums[i] 跳转,由于值在 1 到 n 之间,不会越界。// 重复的数字就是环的入口。

2026-03-18 20:50:40 33

原创 康复训练 6

三次握手:第一次握手,客户端主动打开连接,发送SYN报文,并生成随机序列号,客户端状态从CLOSED变为SYN_SENT,第二次握手,服务端收到SYN后,同意建立连接,然后发送SYN-ACK报文(确认号,服务端自己的序列号)作应答,状态从LISTEN变为SYN_RCVD,第三次握手,客户端收到SYN-ACK后,检查确认号是否正确,然后状态从SYN_SENT变为ESRTABLISHED,然后发送一个ACK报文做最终确认,这个时候,连接就建立了,可以携带数据进行传输了,服务端收到ACK后。为什么需要三次握手?

2026-03-16 23:30:17 43

原创 康复训练 5

自定义删除器是智能指针在析构时调用的可调用对象(函数、函数对象、lambda),用于释放所管理的资源。默认情况下,unique_ptr和shared_ptr使用delete释放内存,但通过自定义删除器,我们可以定制资源的释放方式。对于unique_ptr:删除器是类型的一部分,需要在模板参数中指定。cpp// 使用 lambda(C++11起)// 使用函数对象对于shared_ptr:删除器不是类型的一部分,可以在构造函数中传入,更灵活。cpp// 直接传入lambda});

2026-03-13 22:12:49 452

原创 康复训练 4

通过检查对应shared_ptr控制块的强引用计数,不为零时创建一个shared_ptr返回(线程安全),然后强引用计数加一,为零则返回空shared_ptr。是线程安全的,其增减操作通过原子指令实现,因此多个线程同时拷贝或销毁指向同一对象的shared_ptr不会导致计数错误。不是,只有shared_ptr控制块的引用计数是线程安全的,通过编译器,cpu等一系列底层操控实现引用计数的原子改变。转移后原unique_ptr变为空。不可以,这个类型的智能指针是禁止拷贝和赋值构造的,独掌所有权的智能指针。

2026-03-13 20:47:08 236

原创 康复训练 3

内存布局:类对象内存模型(成员变量、虚指针)、字节对齐规则(alignof/alignas)、内存对齐对性能的影响答:在对象内存模型的开始,是虚函数指针,如果有菱形继承的话还有虚基表,接着是父类的成员变量(如果继承了父类),接着是自己类对象的成员变量。

2026-03-11 23:19:29 312

原创 康复训练 2

类型和值类别。左值(lvalue):表达式指向一个持久的内存位置,可以取地址。例如:变量名、返回左值引用的函数调用、字符串字面量等。注意,const左值也是左值,虽然不能修改,但它有身份。纯右值(prvalue):表达式是临时值或字面量(如42、true),没有持久身份,通常只能用于初始化或赋值。将亡值(xvalue):C++11引入,表示资源可以被回收的右值,例如通过std::move转换的结果、返回右值引用的函数调用。将亡值既有身份(即将消亡的对象),又可以移动资源。

2026-03-11 23:13:49 346 1

原创 康复训练 -1

什么是资源获取即初始化?与智能指针的关系?答:1.通过对象的生命周期来控制和管理资源,构造时申请,析构时释放,避免忘记释放申请的资源而造成的内存泄漏2.智能指针正是对RAII思想的运用具现,将所要管理的动态内存资源放入智能指针对象里面,析构时自动释放资源评分:6.5/10:没有提到具体的智能指针类型(如和的区别)。:RAII不止用于内存,还用于其他资源(锁、文件句柄、数据库连接)。:没有提到异常安全,而这是RAII最大的优势。

2026-03-09 16:40:33 358

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除