自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++的decltype

摘要: decltype是C++11引入的关键字,用于在编译时精确推导表达式或变量的类型而不执行表达式。

2025-12-24 19:55:58 744

原创 C++多态

C++多态机制解析:动态多态的实现与原理

2025-12-24 10:45:36 530

原创 TCP相关问题的解决

摘要:TCP协议采用三次握手建立连接,主要防止网络延迟导致的旧报文错误建立连接。通过类比电话通话场景,解释了两次握手会导致资源浪费,而三次握手能确保连接可靠性。TCP四次挥手则因全双工特性需要双方各自确认关闭。滑动窗口机制通过批量发送提高效率,配合SACK和快速重传解决丢包问题。流量控制防止接收方过载,拥塞控制则通过慢启动、拥塞避免等策略应对网络拥堵。TCP黏包问题源于其流式协议特性,需应用层自行处理消息边界。这些机制共同保障了TCP的可靠传输和高效性能。

2025-12-23 19:35:22 1056 1

原创 TCP和UDP

TCP和UDP是两种核心传输协议。TCP通过三次握手建立可靠连接,确保数据有序完整传输,适用于网页浏览、文件传输等场景。UDP无连接、不可靠但高效,适合实时性要求高的视频会议、在线游戏等应用。

2025-12-23 19:34:00 126

原创 解决IP不够用的问题

IPv4地址不足催生了NAT技术,通过划分公网IP和私网IP解决设备激增问题。

2025-12-22 19:56:38 845

原创 计算机网络--IP概念

网络层(IP)的核心功能是寻址和路由,通过IP地址、子网掩码和路由器协同工作。

2025-12-22 19:55:40 869

原创 网络中数据传输的具体过程

数据在网络传输过程中经历了层层封装与解封装。从应用层生成原始数据开始,依次经过传输层(添加TCP/UDP头)、网络层(添加IP头)和数据链路层(添加MAC头)的封装。关键步骤包括路由决策确定下一跳、ARP解析获取MAC地址。路由器转发时会替换MAC地址但保留IP地址。最终目标主机通过反向解封装,将数据逐层递交给对应端口的应用程序。整个过程展现了网络协议栈各层的分工协作,确保数据准确送达目标进程。

2025-12-21 16:20:52 968

原创 IP和MAC的深入理解

本文解析了计算机网络中IP地址与MAC地址的区别与协作关系。

2025-12-21 15:53:50 1001

原创 网路编程--协议

本文系统介绍了计算机网络的核心概念与发展历程。

2025-12-21 15:31:18 804

原创 IO重定向

本文详细解析了Linux文件重定向的实现原理。首先通过最小分配原则手动实现重定向,即关闭stdout后打开新文件,使新文件获得fd1。

2025-12-18 21:37:10 762

原创 linux系统IO

本文深入解析Linux文件操作原理,重点探讨系统调用与文件描述符机制。首先阐述文件的本质是内容+属性,指出文件操作实质是进程与OS的交互。

2025-12-18 21:34:25 997

原创 Linux信号量

信号量是解决多进程临界资源竞争问题的同步机制。其核心是PV原语:P操作用于申请资源(原子减1),若结果≥0则成功,否则阻塞;V操作用于释放资源(原子加1),若结果≤0则唤醒等待进程。

2025-12-17 21:13:21 239

原创 进程间通信--共享内存

Linux共享内存使用SystemV接口的四个关键步骤:创建(shmget)、关联(shmat)、使用、去关联(shmdt)和删除(shmctl)。

2025-12-17 21:02:28 778

原创 进程间通信--命名管道

摘要:本文介绍了Linux系统中命名管道(FIFO)的原理与应用。命名管道通过在磁盘创建特殊文件(p类型)实现跨进程通信,数据仍在内核内存中流动。

2025-12-16 20:57:45 741

原创 进程间通信--匿名管道

本文介绍了进程间通信(IPC)的核心机制,重点解析了匿名管道的工作原理。。这些特性体现了管道自带的同步机制,是理解进程间通信的重要基础。

2025-12-16 20:56:09 743

原创 进程相关的函数

本文深入解析Linux进程管理的核心机制。这些机制共同构成了Linux进程管理的核心架构。

2025-12-16 19:48:33 1451

原创 进程优先级和切换

本文摘要:Linux系统通过进程优先级(PRI/NI)实现CPU资源分配,其中NI值(-20到19)用于动态调整PRI。进程切换时通过保存/恢复寄存器数据实现上下文保存。

2025-12-15 20:54:03 1270

原创 进程的状态及其 CPU 占用

本文分析了Linux系统中五种进程状态(R、S、D、T、Z)对CPU资源的影响

2025-12-15 20:52:39 521

原创 Linux的权限

linux查看权限

2025-12-13 21:55:05 600

原创 进程PCB

PCB(进程控制块)是操作系统内核中存储进程信息的数据结构,本质上是一个C语言结构体。

2025-12-13 21:53:16 796

原创 C++自旋锁

自旋锁是一种非阻塞锁机制,当线程获取锁失败时会持续循环检查(忙等待),而不是挂起线程。相比互斥锁,自旋锁避免了上下文切换的开销(3-10微秒),适用于锁持有时间极短(如0.01微秒)的场景。

2025-12-11 20:25:40 1014

原创 线程池练习

本文实现了一个C++线程池类Thread_pool

2025-12-11 20:24:31 92

原创 package_task

std::packaged_task是C++标准库中的任务封装工具,用于将可调用对象(函数、Lambda等)包装为可异步执行的任务,并自动将结果关联到std::future对象。

2025-12-10 18:23:04 407

原创 future、promise

C++11引入了std::future和std::async简化异步编程。std::async像网购下单,启动异步任务并返回std::future对象;std::future则如取件码,用于获取结果。

2025-12-10 18:22:00 994

原创 C++中的atomic

std::atomic是C++多线程编程中实现无锁操作的核心机制,通过硬件级原子指令保证线程安全。文章介绍了原子操作的必要性、基础用法、核心API以及关键的CAS操作原理。

2025-12-09 17:18:38 624

原创 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 732

原创 C++中的thread

C++ 的多线程支持是从 C++11 标准开始引入的,标准库提供了 <thread> 头文件,使得多线程编程变得跨平台且更加简便。

2025-12-08 20:19:17 1155

原创 ref关键字

std::ref是C++标准库中的引用包装器,用于在std::thread等场景中传递变量的引用而非副本。由于std::thread默认会拷贝参数,使用std::ref可以确保线程函数操作原始变量而非临时副本。

2025-12-08 20:16:29 149

原创 C++智能指针(RAII思想)

RAII(资源获取即初始化)是C++的核心编程范式,通过对象生命周期管理资源(内存、文件等)。智能指针(unique_ptr、shared_ptr、weak_ptr)是RAII的典型实现:unique_ptr独占资源且零开销;shared_ptr共享资源但需维护引用计数;weak_ptr解决循环引用问题。

2025-12-07 10:42:41 945

原创 C++的异常处理

C++异常处理基于throw、try和catch三个关键字,通过抛出、捕获异常实现错误处理。最佳实践包括按引用捕获异常、遵循RAII原则确保资源安全释放,以及避免在析构函数中抛出异常。

2025-12-07 10:39:40 565

原创 C++中的bind

本文介绍了C++中的std::bind函数适配器,它能预先固定函数的部分参数并生成新函数对象。文章详细讲解了占位符(_1,_2等)的使用方法,并通过减法函数示例演示了参数固定、顺序重排等场景。

2025-12-06 09:52:47 381

原创 C++中的function

std::function是C++中统一包装各类可调用对象(函数指针、Lambda、仿函数等)的模板类,通过类型擦除实现接口统一。

2025-12-06 09:51:13 323

原创 C++的lambda表达式

本文介绍了C++ Lambda表达式的基本语法和关键特性。最后警示了悬空引用的致命陷阱,即当Lambda生命周期超过捕获变量时会导致未定义行为,建议在这种情况使用值捕获。

2025-12-05 11:25:22 682

原创 C++可变模版参数

C++11引入可变模板参数,支持类型安全的任意参数处理。

2025-12-05 11:23:48 363

原创 万能引用、完美转发

万能引用(T&&)需满足类型推导和严格格式两个条件,完美转发利用std::forward保留参数的原始值类别,解决了中间层函数参数退化为左值的问题。

2025-12-04 16:11:43 587

原创 左值右值、移动拷贝

本文介绍了C++中的左值/右值概念及其应用。编译器优化包括移动语义兜底和返回值优化,可避免不必要的拷贝操作。这些特性共同解决了C++中临时对象处理效率低下的问题。

2025-12-04 16:07:56 1150

原创 泛型编程的差异抽象思想

本文介绍了通过模板参数实现迭代器代码复用的技巧。在实现iterator和const_iterator时,传统方法需要编写两个几乎相同的类。通过引入Ref和Ptr两个额外模板参数,将返回值类型差异抽象为参数,可以复用同一份代码模板。

2025-12-03 21:54:40 707

原创 C++运算符->的特殊

本文探讨了C++中operator->运算符重载的特殊行为。当通过迭代器访问成员时,编译器会自动执行两步操作:首先调用重载的operator->()函数获取指针,然后对该指针再次应用原生->运算符访问成员。

2025-12-03 21:39:18 314

原创 红黑树复习图

画图理解时建议自底向上逐层调整,当插入节点破坏规则时,先调整下层结构,再向上修正。

2025-12-02 19:53:40 219

原创 AVL树复习图

【AVL树复习要点】 核心操作:理解右单旋、左单旋、先左后右旋、先右后左旋四种旋转情况,通过画图辅助理解

2025-12-01 00:59:28 283

空空如也

空空如也

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

TA关注的人

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