- 博客(62)
- 收藏
- 关注
原创 C++网络编程 6.I/0多路复用-epoll详解
在高并发网络编程中,I/O多路复用是核心技术之一,而epoll作为Linux特有的I/O多路复用机制,凭借其高效的设计成为高性能服务器(如Nginx、Redis、Node.js)的首选方案。本文将从基本概念、核心API、底层实现、触发模式、性能优势五个维度深入解析epoll,同时简要对比select/poll的局限性。
2025-07-17 22:48:45
1505
原创 C++网络编程 5.TCP套接字(socket)通信进阶-基于多线程的TCP多客户端通信
这个示例实现了一个能同时处理多个客户端连接的TCP服务器,以及一个能创建多个连接的客户端程序。核心通过C++11的std::thread库实现多线程并发处理,下面分服务器和客户端两部分详细讲解。
2025-07-17 17:42:56
557
原创 C++网络编程 4.UDP套接字(socket)编程示例程序
以下是基于UDP协议的完整客户端和服务器代码。UDP与TCP的核心区别在于无连接特性,因此代码结构会更简单(无需监听和接受连接)。
2025-07-17 16:15:27
514
原创 C++网络编程 3.TCP套接字(socket)编程示例程序
这是一个基于Linux的简易TCP通信示例,包含服务器程序和客户端程序,实现了“客户端发送消息→服务器接收并回复”的完整流程。通过这个示例可以直观理解TCP套接字编程的核心步骤和API使用方法。先附上整体程序,再逐步讲解。
2025-07-17 16:00:50
433
4
原创 C++网络编程 2.TCP套接字(socket)编程详解
TCP套接字编程的核心是理解“连接建立→数据交互→连接关闭”的全流程,掌握 socket()/bind()/listen()/accept()/connect() 等API的参数和特性,以及网络字节序、粘包处理等细节。实际开发中需注意跨平台差异(如Windows的 WSAStartup()),并通过多线程/IO复用等技术实现高效的多客户端通信。这些基础是网络编程的核心。
2025-07-17 15:45:11
1368
原创 C++网络编程 1.网络编程基础
网络编程的基础离不开对网络分类、TCP/IP分层模型的理解,而TCP和UDP作为传输层的两大核心协议,分别对应“可靠”和“高效”两种需求。实际开发中,需根据业务场景选择合适的协议:追求准确选TCP,追求实时选UDP。后续网络编程实践(如Socket编程)也将围绕这些协议展开。
2025-07-17 11:15:00
661
原创 C++-linux系统编程 11.常见问题与答案
以下是C++软件开发中常见的Linux系统相关问题及解析,涵盖虚拟内存、堆栈溢出、内存泄漏等核心知识点
2025-07-16 20:38:26
749
原创 C++-linux系统编程 10.内核原理基础
Linux 内核是操作系统的核心,负责管理硬件资源、调度进程、提供系统服务,是用户态程序与硬件之间的“中间人”。本章将从内核的基本概念、架构设计讲起,深入解析其核心功能(进程管理、内存管理、文件系统等),帮助你理解内核如何支撑整个系统的运行。
2025-07-16 19:58:54
1166
原创 C++-linux系统编程 9.线程——C++&thread 线程池
线程池是多线程编程中的重要概念,它通过预先创建一组线程并复用它们来执行多个任务,避免频繁创建和销毁线程的开销,提高程序性能。下面基于C++的std::thread库详细讲解线程池的实现和应用。
2025-07-16 13:01:07
1278
原创 C++-linux系统编程 9.线程——C++&thread标准线程库版本
在进程之后,线程是Linux系统编程中另一个核心的并发执行单元。相比进程,线程更轻量、资源开销更低,是实现多任务并发的重要手段。本文将从线程的基本概念、核心操作、同步机制到实际应用,基于C++标准线程库(<thread>等)全面解析Linux线程编程。
2025-07-16 12:54:57
1300
原创 C++-linux系统编程 9.线程——C语言&POSIX线程库版本
在进程之后,线程是Linux系统编程中另一个核心的并发执行单元。相比进程,线程更轻量、资源开销更低,是实现多任务并发的重要手段。本文将从线程的基本概念、核心操作、同步机制到实际应用,全面解析Linux线程编程。
2025-07-16 11:18:26
927
原创 C++-linux系统编程 8.进程(四)进程间通信(IPC)
进程间通信(IPC,Inter-Process Communication)是指不同进程之间交换数据、同步操作的机制。在Linux系统中,内核提供了多种IPC方式,每种方式有其独特的适用场景。本文将详细解析常用IPC机制的原理、特点、使用方法及适用场景。
2025-07-16 10:07:04
1045
原创 C++-linux系统编程 8.进程(三)孤儿进程、僵尸进程与进程回收
在多进程编程中,孤儿进程和僵尸进程是两种常见的特殊状态进程,而wait()和waitpid()函数则是解决僵尸进程、实现进程同步的核心工具。本文将详细解析这两种特殊进程的成因、危害及处理方法,同时深入讲解进程回收函数的使用。
2025-07-16 00:08:20
1007
原创 C++-linux系统编程 8.进程(二)exec函数族详解
exec函数族是Linux进程编程的核心工具,通过程序替换机制,实现了在保持进程ID不变的情况下执行新程序的功能。其与fork()的组合("创建-替换"模式)是shell、服务器等多任务系统的基础。掌握exec函数族的命名规律、参数传递方式及替换特性,能有效提升进程控制能力,为实现复杂系统功能奠定基础。
2025-07-15 21:02:38
990
原创 C++-linux 8.进程(一)进程基础和进程控制(fork函数)
进程是Linux系统资源管理的基本单位,fork()是创建进程的核心接口,理解其原理(如写时复制)、资源共享规则及常见问题(僵尸/孤儿进程)是掌握进程编程的关键。后续可结合exec系列函数(加载新程序)、进程调度策略及IPC机制,深入学习Linux多进程编程。
2025-07-15 17:54:24
1024
原创 C++-linux 7.文件IO(三)文件元数据与 C 标准库文件操作
在 Linux 系统中,文件操作不仅涉及数据的读写,还包括对文件元数据的管理和高层库函数的使用。本文将从文件系统的底层存储机制(inode 与 dentry)讲起,详细解析文件元数据获取函数 stat,并全面介绍 C 标准库中常用的文件操作函数(fopen、fclose 及各类读写函数),帮助你掌握用户态文件操作的核心逻辑与最佳实践。
2025-07-14 23:48:24
1183
原创 C++-linux 7.文件IO(二)文件描述符、阻塞与非阻塞
在前文我们介绍了文件 IO 的核心系统调用,本章将深入探讨 Linux 文件 IO 的底层机制,包括文件描述符的本质、阻塞与非阻塞 IO 模型、文件偏移量控制(lseek)以及系统调用中的参数传递规则,帮助你构建更完整的系统编程知识体系。
2025-07-14 22:47:28
877
原创 C++-linux 7.文件IO(一)系统调用
在 Linux 系统编程中,文件 IO 操作是核心内容之一,而系统调用则是用户程序与操作系统内核交互的桥梁。本文将从系统调用的基本概念出发,详细解析文件 IO 相关的核心系统调用(open、read、write、close 等),并对比 C++ 高层 IO 接口与底层系统调用的关系,帮助你深入理解 Linux 文件操作的底层逻辑。
2025-07-14 21:51:29
1128
原创 C++-linux 6.makefile和cmake
Makefile是make工具的配置文件,通过定义规则描述项目的构建流程。make工具会解析Makefile中的规则,根据文件修改时间判断哪些文件需要重新编译,从而实现增量构建(仅编译变化的部分)。核心优势自动化编译流程,减少手动操作;增量构建,大幅提升大型项目的编译效率;支持复杂依赖关系管理(如库依赖、生成文件依赖)。Makefile是基础构建工具,适合小型单平台项目,通过定义规则实现自动化编译,需掌握其语法细节;CMake是更高级的跨平台构建系统生成器,通过。
2025-07-14 17:58:03
1037
原创 C++-linux 5.gdb调试工具
设置断点,暂停程序执行单步执行程序,跟踪代码流程查看和修改变量值分析函数调用栈定位内存泄漏和段错误调试多线程和多进程程序GDB是Linux C/C++开发不可或缺的调试工具,掌握其核心命令能大幅提升错误定位效率。从基础的断点设置、单步执行,到高级的内存查看、多线程调试,GDB提供了全面的调试功能。实际开发中,建议结合具体问题场景灵活运用调试命令,并养成编写可调试代码的习惯(如添加详细注释、模块化设计)。
2025-07-14 15:56:49
1029
原创 C++-linux系统编程4.库的制作与使用
检查库是否包含所需函数(用nm查看符号表)确认库链接顺序正确(依赖库应放在被依赖代码之后)静态库需确保所有依赖函数都已实现,无外部引用库是C/C++开发的核心技术之一,掌握静态库和动态库的使用能显著提升项目的模块化程度和可维护性。静态库适合独立部署场景,动态库适合资源共享和频繁更新场景。实际开发中需根据项目需求选择合适的库类型,并熟练掌握库的创建、链接及依赖问题排查技巧。
2025-07-14 14:03:11
1017
原创 C++-linux系统编程 3.gcc编译工具
GCC作为Linux系统下的核心编译工具,功能强大且灵活。精确控制编译过程的每个阶段针对不同场景优化编译选项(调试、性能、代码大小)高效编译复杂项目(多文件、多目录、外部库)快速定位和解决编译错误后续章节将介绍如何结合GCC使用调试工具(如GDB)和自动化构建系统(如CMake),进一步提升开发效率。
2025-07-14 13:40:30
791
原创 C++11新特性 8.final关键字、override关键字
只能修饰虚函数,阻止子类重写这个函数,final关键字写在。即该虚函数不可以再被重写。一般不会在基类中使用,不然没有意义,因为只能修饰虚函数。表示该不能被继承,即无派生类。
2025-03-09 11:46:47
324
原创 C++11新特性 7.C11中的左值、右值、move移动语义、forward完美转发
简介左值、右值、move、forward的概念和使用示例与场景
2025-03-09 10:50:51
1085
原创 C++11新特性 6.lambda表达式
Lambda表达式是C++11引入的一种匿名函数的实现形式,能让你在代码中方便、快速地定义小型临时函数,尤其在需要简洁表达式、回调函数或函数对象时。Lambda表达式实质上是匿名函数对象(closure)可以访问其定义时的外部作用域变量。它弥补了传统函数指针和函数对象(functor匿名性:无需显式命名,可直接在需要的地方定义。闭包特性:可以捕获作用域内的变量,形成闭包。灵活性:支持多种捕获模式、参数传递和返回值类型。与 STL 完美结合:常用于算法(如sortfor_each)的回调函数。
2025-03-08 20:55:09
1157
原创 C++11新特性 5.static静态
在 C++11 中,static 关键字延续了其在 C++ 早期版本中的一些重要特性,同时也在一些新特性的语境下有着特定的应用。
2025-03-08 10:48:59
768
原创 C++11新特性 4.auto自动类型推导、decltype
在 C++11 中,auto关键字被赋予了新的语义。在旧标准里,auto用于声明自动存储期的变量,不过使用得较少且意义不大。而在 C++11 及以后,auto主要用于自动类型推导。它允许编译器根据变量的初始化表达式自动推断出变量的类型,从而简化代码编写,尤其是在处理复杂类型时,能让代码更加简洁易读。使用数组初始化auto变量:当使用数组名初始化auto变量时,数组会退化为指针,所以auto会被推导为指针类型。例如中,t1被推导为int*类型。使用auto定义数组:使用auto。
2025-03-08 01:23:27
812
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅