- 博客(91)
- 收藏
- 关注
原创 多路复用epoll
epoll是高性能I/O多路复用机制,通过红黑树存储监听的文件描述符(O(logN)效率),使用就绪链表保存活跃事件(O(1)查询)。
2026-01-02 18:02:12
479
原创 C++新特性:string_view
std::string_view是C++17引入的轻量级字符串视图类,主要用于解决std::string在特定场景下的性能问题。
2026-01-01 16:59:04
703
原创 模版元编程4-Overloaded
Overload辅助模板是C++17中配合std::variant和std::visit使用的重要工具,通过组合Lambda表达式就地构建重载函数对象。
2025-12-30 19:36:33
1042
原创 模版元编程variant
std::variant是C++17引入的类型安全联合体,支持存储预定义类型列表中的任意一种值。相比传统union,它通过内部索引标记当前类型,确保类型安全。
2025-12-30 19:34:47
1407
原创 C++模版元编程2
类型萃取(TypeTraits)是C++模板元编程的核心技术,用于在编译期查询或修改类型属性(如is_pointer<T>或remove_const<T>)。
2025-12-28 15:02:03
690
原创 C++模版元编程1
模板元编程(TMP)是一种利用C++模板机制将计算转移到编译期的技术。其核心思想是通过编译期计算、类型操作、递归模板实例化实现零运行时开销的高效编程。
2025-12-28 10:49:19
367
原创 TCP相关问题的解决
摘要:TCP协议采用三次握手建立连接,主要防止网络延迟导致的旧报文错误建立连接。通过类比电话通话场景,解释了两次握手会导致资源浪费,而三次握手能确保连接可靠性。TCP四次挥手则因全双工特性需要双方各自确认关闭。滑动窗口机制通过批量发送提高效率,配合SACK和快速重传解决丢包问题。流量控制防止接收方过载,拥塞控制则通过慢启动、拥塞避免等策略应对网络拥堵。TCP黏包问题源于其流式协议特性,需应用层自行处理消息边界。这些机制共同保障了TCP的可靠传输和高效性能。
2025-12-23 19:35:22
1916
1
原创 TCP和UDP
TCP和UDP是两种核心传输协议。TCP通过三次握手建立可靠连接,确保数据有序完整传输,适用于网页浏览、文件传输等场景。UDP无连接、不可靠但高效,适合实时性要求高的视频会议、在线游戏等应用。
2025-12-23 19:34:00
140
原创 网络中数据传输的具体过程
数据在网络传输过程中经历了层层封装与解封装。从应用层生成原始数据开始,依次经过传输层(添加TCP/UDP头)、网络层(添加IP头)和数据链路层(添加MAC头)的封装。关键步骤包括路由决策确定下一跳、ARP解析获取MAC地址。路由器转发时会替换MAC地址但保留IP地址。最终目标主机通过反向解封装,将数据逐层递交给对应端口的应用程序。整个过程展现了网络协议栈各层的分工协作,确保数据准确送达目标进程。
2025-12-21 16:20:52
1003
原创 IO重定向
本文详细解析了Linux文件重定向的实现原理。首先通过最小分配原则手动实现重定向,即关闭stdout后打开新文件,使新文件获得fd1。
2025-12-18 21:37:10
767
原创 linux系统IO
本文深入解析Linux文件操作原理,重点探讨系统调用与文件描述符机制。首先阐述文件的本质是内容+属性,指出文件操作实质是进程与OS的交互。
2025-12-18 21:34:25
999
原创 Linux信号量
信号量是解决多进程临界资源竞争问题的同步机制。其核心是PV原语:P操作用于申请资源(原子减1),若结果≥0则成功,否则阻塞;V操作用于释放资源(原子加1),若结果≤0则唤醒等待进程。
2025-12-17 21:13:21
243
原创 进程间通信--共享内存
Linux共享内存使用SystemV接口的四个关键步骤:创建(shmget)、关联(shmat)、使用、去关联(shmdt)和删除(shmctl)。
2025-12-17 21:02:28
786
原创 进程间通信--命名管道
摘要:本文介绍了Linux系统中命名管道(FIFO)的原理与应用。命名管道通过在磁盘创建特殊文件(p类型)实现跨进程通信,数据仍在内核内存中流动。
2025-12-16 20:57:45
745
原创 进程间通信--匿名管道
本文介绍了进程间通信(IPC)的核心机制,重点解析了匿名管道的工作原理。。这些特性体现了管道自带的同步机制,是理解进程间通信的重要基础。
2025-12-16 20:56:09
745
原创 进程优先级和切换
本文摘要:Linux系统通过进程优先级(PRI/NI)实现CPU资源分配,其中NI值(-20到19)用于动态调整PRI。进程切换时通过保存/恢复寄存器数据实现上下文保存。
2025-12-15 20:54:03
1281
原创 C++自旋锁
自旋锁是一种非阻塞锁机制,当线程获取锁失败时会持续循环检查(忙等待),而不是挂起线程。相比互斥锁,自旋锁避免了上下文切换的开销(3-10微秒),适用于锁持有时间极短(如0.01微秒)的场景。
2025-12-11 20:25:40
1022
原创 package_task
std::packaged_task是C++标准库中的任务封装工具,用于将可调用对象(函数、Lambda等)包装为可异步执行的任务,并自动将结果关联到std::future对象。
2025-12-10 18:23:04
416
原创 future、promise
C++11引入了std::future和std::async简化异步编程。std::async像网购下单,启动异步任务并返回std::future对象;std::future则如取件码,用于获取结果。
2025-12-10 18:22:00
1001
原创 C++中的atomic
std::atomic是C++多线程编程中实现无锁操作的核心机制,通过硬件级原子指令保证线程安全。文章介绍了原子操作的必要性、基础用法、核心API以及关键的CAS操作原理。
2025-12-09 17:18:38
663
原创 C++中的mutex、condition_val
C++中的锁机制分为互斥量(Mutex)和锁管理类(Lock Managers)。互斥量包括std::mutex(基本互斥锁)、std::recursive_mutex(递归锁)、std::timed_mutex(超时锁)和std::shared_mutex(读写锁)。
2025-12-09 17:16:12
739
原创 C++中的thread
C++ 的多线程支持是从 C++11 标准开始引入的,标准库提供了 <thread> 头文件,使得多线程编程变得跨平台且更加简便。
2025-12-08 20:19:17
1168
原创 ref关键字
std::ref是C++标准库中的引用包装器,用于在std::thread等场景中传递变量的引用而非副本。由于std::thread默认会拷贝参数,使用std::ref可以确保线程函数操作原始变量而非临时副本。
2025-12-08 20:16:29
154
原创 C++智能指针(RAII思想)
RAII(资源获取即初始化)是C++的核心编程范式,通过对象生命周期管理资源(内存、文件等)。智能指针(unique_ptr、shared_ptr、weak_ptr)是RAII的典型实现:unique_ptr独占资源且零开销;shared_ptr共享资源但需维护引用计数;weak_ptr解决循环引用问题。
2025-12-07 10:42:41
947
原创 C++的异常处理
C++异常处理基于throw、try和catch三个关键字,通过抛出、捕获异常实现错误处理。最佳实践包括按引用捕获异常、遵循RAII原则确保资源安全释放,以及避免在析构函数中抛出异常。
2025-12-07 10:39:40
568
原创 C++中的bind
本文介绍了C++中的std::bind函数适配器,它能预先固定函数的部分参数并生成新函数对象。文章详细讲解了占位符(_1,_2等)的使用方法,并通过减法函数示例演示了参数固定、顺序重排等场景。
2025-12-06 09:52:47
385
原创 C++中的function
std::function是C++中统一包装各类可调用对象(函数指针、Lambda、仿函数等)的模板类,通过类型擦除实现接口统一。
2025-12-06 09:51:13
334
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅