- 博客(96)
- 收藏
- 关注
原创 C语言结构体详解(超全)简单易懂(代码+万字文字+画图讲解)
struct stu //struct stu 为结构体类型int a;//结构体内容}s1;//s1 为结构体变量这是一个很常见的结构体格式struct stu 为结构体类型s1 为结构体的变量int a 为结构体变量的内容//将结构体类型 struct stu 重定义为 nodestruct stuint a;//这里的node就相当于struct stu//这里是结构体的直接访问,变量名.结构体内容,可以直接访问到结构体内容//创建结构体指针//后面讲int a;}node。
2024-09-11 10:32:34
3688
3
原创 C++智能指针 -- 通俗易懂&全面的快速讲解
本文介绍了C++中四种智能指针(auto_ptr、unique_ptr、shared_ptr、weak_ptr)的基本用法和特点。
2025-12-22 10:31:52
1518
原创 高并发内存池设计,申请内存板块总结(手把手带你实现)
因此在向自由链表插入被释放的内存块时,先让该内存块的前4个字节或8个字节存储自由链表中第一个内存块的地址,然后再让。
2025-12-01 08:50:24
1759
原创 【Linux网络编程】套接字编程
socktAPI是一层抽象的网络编程接口,适用于各种底层网络协议,如 IPv4、IPv6,以及 UNIX Domain Socket。然而各种网络协议的地址格式并不一样。域间套接字Unix socket:主要用于本主机内部通信。域间套接字通过套接字文件来进行通信,进程可以通过打开这个文件来进行读写操作,从而实现通信。网络socket:通过 ip + port来进行网络通信。原始socket:原始套接字绕过传输层,直接通过网络层进行通信。主要用于编写一些网络工具。
2025-11-10 19:19:19
2982
原创 【Linux线程全家桶】线程互斥,线程同步,线程安全
本文主要介绍了Linux线程编程中的关键概念和技术:展示了线程封装、数据竞争问题,并详细讲解了互斥锁的创建、使用和实现机制,帮助理解多线程编程中的核心问题。
2025-10-20 17:58:15
1689
原创 【Linux】初识线程
本文系统介绍了Linux系统中的线程概念及其实现机制。主要内容包括:1)线程作为轻量级进程的概念,通过共享进程地址空间实现任务拆分;2)Linux使用轻量级进程模拟线程,通过pthread原生线程库提供用户接口;3)线程与进程的对比分析,包括资源共享、切换轻量化等特性;4)详细讲解线程创建、终止、等待、分离等核心API及使用场景;5)线程的优缺点分析,强调其在提高并发性能的同时也带来调试难度。文章通过技术原理阐述和实际代码示例,全面解析了Linux线程编程的关键知识点。
2025-10-13 20:53:55
2480
1
原创 【Linux】文件系统之缓冲区
如果没有该文件缓冲区,那在进程里对文件进行 n 次写操做,就要对应 n 次向磁盘的写操作,CPU 和外设之间是存在非常大的速度差的,这样效率会非常低。
2025-10-12 18:41:34
1700
原创 【C++】二叉搜索树 和 AVL树——思想
相信讲了这么多旋转还是有点绕的,这里总结一下1. LL (右旋)2. RR(左旋)3. LR(先变成LL,再进行右旋)(LR型 -> 让当前节点的左孩子进行左旋 -> LL型)4. RL(先变成RR,再进行左旋)(RL型 -> 让当前节点的右孩子进行右旋 -> RR型)特别需要注意的是,无论是LL,还是RR,RL,LR型,这些类型并不只有在插入节点时才存在,当我们在删除节点时,依然可以发现组成LL,RR,RL,LR型形状的节点,在删除节点时依旧使用。
2025-09-22 20:49:20
2343
原创 C++——高并发内存池设计(一)
本项目的实现是一个高并发的内存池,它的原型是Google的一个开源项目->tcmalloctcmalloc全称为Thread-Caching Malloc,即是线性缓存的malloc,它实现了高效的多线程内存管理,用于替换系统的内存分配函数malloc和free。tcmalloc的知名度是非常高的,很多公司都在使用它,比如Go语言就直接用它做了自己的内存分配器。该项目就是把tcmalloc中最核心的框架简化后拿出来,模拟实现出一个mini版的高并发内存池,目的就是学习tcmalloc的精华。
2025-09-15 18:31:16
2298
原创 【Linux】进程控制--程序替换
在将进程地址空间的时候画过一张关于进程地址空间的图,其中有一部分存储的就是命令行参数和环境变量,而子进程的进程地址空间是继承自父进程的,环境变量也是在这个时候继承下去的,因此一个进程的环境变量在该进程创建的时候就已经被该进程从父进程那里继承下来了,,如果使用这个参数,那么新替换进来的进程将采用覆盖的策略彻底替换掉父进程的环境变量,即使用该参数后,新替换进来的进程不再继承父进程的环境变量,而是完全以 envp 数组中的内容作为自己的环境变量。,此时第一个形参 path 表示的是可执行程序的全路径;
2025-05-06 17:53:18
2543
原创 leecode 560题
但这里的分并不是拆分,而是控制数组的前缀和,始终让 ‘k’ 这一段范围为到数组最后一个元素的这一段,这里可能说的不太清楚,就是下图中的k这一段,始终保持到数组末尾的范围。当我们的数组段为[1,-1,1,1]时,会发现出现了两个k,分别是[1,-1,1,1]和[1,1]k我们无法去控制,但是我们可以控制dp[i] ,这里的dp[i]不就是每一段数组的前缀和吗!那么我们要找的就是hash[0],而之前的[1,-1]使hash[0]为2了。数组 [3,4,7,2,-3,1,4,2] k = 7。
2025-03-24 21:26:35
1615
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅