自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(304)
  • 资源 (1)
  • 收藏
  • 关注

原创 socketpair函数详解

socketpair()是Unix/Linux系统中用于创建一对已连接的匿名套接字的系统调用,专为进程间通信(IPC)设计。该函数创建的套接字对自动连接,无需绑定地址或手动连接,特别适用于父子进程或线程间通信。核心特性包括匿名连接、双向通信、高效IPC和无文件路径。主要使用场景包括父子进程通信、线程间通信以及替代单向的管道(pipe)。使用时需注意描述符关闭、协议族限制等事项,它比管道更灵活,支持双向通信和多种套接字类型,是亲缘进程间高效通信的理想选择。

2025-07-28 22:32:24 230

原创 EPOLLONESHOT 深度解析:Linux epoll 的单次触发机制

事件处理原子化:确保每个事件只被一个线程处理状态转换安全:防止在处理过程中被其他事件干扰简化并发模型:减少对传统锁机制的依赖graph TBA[添加EPOLLONESHOT] --> B[处理事件]B --> C{需要继续监听?C -->|是| D[epoll_ctl(MOD)]C -->|否| E[close(fd)]掌握 EPOLLONESHOT 的使用精髓,可以构建出既高性能又高可靠的网络服务系统,特别适用于金融交易系统、实时游戏服务器等高要求场景。

2025-07-27 21:45:37 548

原创 EPOLLET 边缘触发模式深度解析

EPOLLET边缘触发模式是Linux高性能网络编程的核心技术,与水平触发(EPOLLLT)相比,它仅在I/O状态变化时触发一次事件。摘要:1)ET模式本质是检测空→非空或满→非满的状态突变;2)必须循环读写直到EAGAIN,否则会丢失后续事件;3)写操作需动态管理EPOLLOUT监听;4)特殊场景需处理连接风暴和惊群效应;5)性能测试显示ET模式可减少系统调用30%以上,吞吐量提升8-10%。正确使用ET模式可构建百万级并发服务,但要求开发者严格遵循非阻塞I/O处理规范。

2025-07-27 21:31:34 474

原创 EPOLLIN事件的详细解析

摘要:EPOLLIN是Linux epoll机制的核心事件,用于监听文件描述符的可读状态。它在TCP/UDP socket、pipe等有数据可读时触发,需配合非阻塞I/O使用。关键注意事项包括:边缘触发(ET)模式需循环读取至EAGAIN;需监听EPOLLERR/EPOLLHUP错误事件;与EPOLLRDHUP配合检测连接关闭。典型应用场景包括高性能网络服务,正确处理可避免数据丢失和性能问题。掌握EPOLLIN的使用是开发高并发服务的基础。

2025-07-27 21:24:40 656

原创 Epoll事件EPOLLRDHUP详解

摘要:EPOLLRDHUP是Linux特有的epoll事件(内核≥2.6.17),用于高效检测TCP连接关闭。当对端发送FIN包时触发,无需读取数据即可直接处理断开,比EPOLLIN更高效。使用时需在epoll_ctl中注册该标志,并在事件循环中检查。典型场景包括服务器释放资源、避免阻塞读取等。需注意其Linux专有性,且不适用于半关闭(需结合EPOLLIN)。该机制显著提升高并发系统的连接管理效率。

2025-07-27 21:02:41 616

原创 setnonblocking函数用途和使用案例

setnonblocking 函数摘要 setnonblocking 是将文件描述符设置为非阻塞模式的核心函数,通过 fcntl 系统调用添加 O_NONBLOCK 标志实现。在非阻塞模式下,I/O 操作不会阻塞线程,而是立即返回,使程序能够高效处理多并发连接。该技术广泛应用于高性能服务器(如 Nginx、Redis),需配合事件驱动模型(epoll/kqueue)使用,正确处理 EAGAIN/EWOULDBLOCK 错误。关键应用场景包括非阻塞 accept、读写处理和连接管理,能显著提升服务器吞吐量,但

2025-07-27 20:53:55 557

原创 epoll_event 事件类型详解

本文详细解析了Linux epoll机制中的epoll_event事件类型,包括核心事件(EPOLLIN/OUT/RDHUP)和高级特性(EPOLLET/ONESHOT/EXCLUSIVE)。通过对比水平触发与边缘触发模式,分析各事件的触发条件和典型应用场景,如TCP服务器监听、数据收发等。文章提供了实用的代码示例和事件组合建议,帮助开发者高效使用epoll进行I/O多路复用编程。

2025-07-27 17:28:32 557

原创 listen() 函数详解

listen() 是 TCP 服务器编程的核心函数,用于将套接字设为监听状态,准备接受客户端连接。它在 bind() 之后调用,参数包括套接字描述符和等待队列长度 backlog。实际队列长度取 backlog 和系统参数 somaxconn 的最小值。使用时要遵循 socket()→bind()→listen()→accept() 的流程,并注意错误处理和 backlog 的合理设置(通常5-10用于轻负载,1000+用于高并发)。listen() 会创建SYN队列(半连接)和Accept队列(全连接),

2025-07-27 16:49:43 685

原创 sockaddr_in 结构体详解

sockaddr_in是网络编程中表示IPv4地址的核心结构体,包含地址族(AF_INET)、端口号(网络字节序)、IP地址(网络字节序)和填充字段。使用时需注意字节序转换(htons/ntohs)和结构体清零。它与通用sockaddr结构体兼容,在函数调用时需要强制转换。典型应用包括服务器绑定(INADDR_ANY)和客户端连接(inet_pton转换IP)。配套的地址转换函数(inet_addr/ntoa或更安全的inet_pton/ntop)简化了IP处理。正确理解和使用sockaddr_in对开发网

2025-07-27 16:31:58 266

原创 setsockopt函数概念和使用案例

setsockopt()函数详解:关键选项与典型应用场景 摘要: setsockopt()是用于配置套接字参数的核心系统调用,通过不同协议层(SOL_SOCKET/IPPROTO_TCP/IPPROTO_IP等)提供丰富的网络控制选项。主要功能包括:地址重用(SO_REUSEADDR)、TCP特性调节(TCP_NODELAY/TCP_KEEPIDLE)、缓冲区设置(SO_RCVBUF)、超时控制(SO_RCVTIMEO)等。典型应用场景如服务快速重启(SO_REUSEADDR)、低延迟通信(禁用Nagle算

2025-07-26 22:58:24 717

原创 window上建立git远程仓库

本文详细介绍了在Windows系统上搭建Git远程仓库的三种方法:1)通过文件共享创建裸仓库,适合局域网快速共享;2)使用SSH协议实现安全传输;3)安装Gitea搭建功能完整的代码托管平台。文章提供了每种方法的详细配置步骤,包括安装设置、权限管理和防火墙配置,并给出了优化建议(如IP固定、备份方案)。对于大多数Windows用户,推荐使用文件共享方案作为最简单直接的解决方式,而需要安全传输或完整功能时可选择SSH或Gitea方案。全文包含具体命令和配置说明,便于用户快速部署Git远程仓库。

2025-07-26 16:21:19 792

原创 epoll_ctl函数的概念和使用案例

epoll_ctl 是 Linux 中管理 epoll 实例的核心函数,用于添加、修改或移除监控的文件描述符。本文详细解析其参数、返回值,并提供一个完整的 TCP 服务器实现案例。案例演示了如何使用 EPOLL_CTL_ADD 添加监听套接字、EPOLL_CTL_DEL 移除断开连接,以及 EPOLL_CTL_MOD 动态修改事件类型(如从可读切换到可写)。通过边缘触发模式(EPOLLET)和非阻塞 I/O 的高效组合,展示了 epoll 在高并发场景下的优势,包括连接管理、错误处理和事件驱动的数据读写机制

2025-07-26 11:54:00 866

原创 epoll_create1函数含义和使用案例

epoll_create1是Linux中创建epoll实例的核心函数,相比已废弃的epoll_create,它支持EPOLL_CLOEXEC标志,避免exec时文件描述符泄漏。该函数返回epoll文件描述符,失败时返回-1。典型使用场景包括高性能服务器开发,需配合epoll_ctl和epoll_wait实现I/O多路复用。关键注意事项包括:资源管理(及时关闭fd)、错误检查、线程安全以及监控数量限制。现代Linux服务器开发中,epoll_create1(EPOLL_CLOEXEC)是创建epoll实例的推

2025-07-26 10:29:45 565

原创 epoll_wait函数的概念和使用案例

epoll_wait是Linux高效I/O多路复用的核心函数,相比select/poll性能更优。其原型为int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout),参数包括epoll实例描述符、事件数组、最大事件数和超时时间。本文详细解析了各参数含义,并提供了完整的高性能TCP服务器实现案例,展示了如何创建epoll实例、添加监听套接字、处理新连接和客户端数据,特别说明了边缘触发模式(ET)下的关键处理逻

2025-07-26 10:24:24 269

原创 I/O多路复用机制中触发机制详细解析

I/O多路复用触发机制主要分为水平触发(LT)和边缘触发(ET)两种模式。LT模式会持续通知就绪状态,直到数据被处理,编程简单但系统调用开销大;ET模式仅在状态变化时通知一次,必须使用非阻塞I/O并循环处理数据到EAGAIN,性能更高但实现复杂。LT适合通用场景,ET适用于高并发服务器。各平台实现存在差异,Linux的epoll支持两种模式,而Windows的IOCP本质是完成端口模式。最佳实践建议在Linux高并发服务中使用EPOLLET+非阻塞I/O,可显著提升吞吐量。

2025-07-25 22:48:33 607

原创 epoll_event数据结构及使用案例详解

摘要: epoll_event是Linux中epoll机制的核心数据结构,用于描述文件描述符上的事件及关联数据。其包含events(事件掩码,如EPOLLIN、EPOLLET等)和data(用户数据联合体,支持存储fd或自定义指针)。典型应用如边缘触发(ET)模式的Echo服务器:通过epoll_ctl注册非阻塞fd及事件类型,epoll_wait获取就绪事件后,需循环读写至EAGAIN。关键技巧包括使用data.ptr存储连接上下文、组合事件类型及选择ET模式提升性能。该结构结合非阻塞I/O可实现高并发网

2025-07-25 22:34:13 1012

原创 C++ std::list概念与使用案例

std::list是C++ STL中的双向链表容器,具有非连续内存存储特性。核心优势包括O(1)时间复杂度的任意位置插入删除、稳定迭代器(除被删元素外)以及专用排序/合并操作。与vector对比,list在频繁插入删除场景性能更优,但随机访问效率较低(O(n))。典型应用场景包括需要频繁修改的订单管理系统等,通过push_back/pop_front等操作高效维护数据,并支持splice、merge等链表特有功能。注意每个元素有额外指针开销,适合元素较大或需要稳定迭代器的场景。

2025-07-23 22:26:09 348

原创 C++ new 创建数组的内在原理详解

C++中new[]创建数组时,会分配额外内存存储数组大小并顺序构造元素,返回第一个元素的指针。delete[]通过指针偏移读取大小并逆序析构元素。必须严格配对使用,否则会导致内存问题。不同编译器实现存在差异,建议优先使用标准容器或智能指针。new[]/delete[]与malloc/free的关键区别在于会自动处理构造/析构和类型安全。典型错误包括错误释放方式和跨模块内存管理,最佳实践是使用标准库容器和智能指针来避免这些问题。

2025-07-22 21:23:11 367

原创 C++ 模板库map数据结构的概念和使用案例

C++中的std::map是STL提供的关联容器,基于红黑树实现,存储键值对并自动按键排序。核心特性包括有序性、键唯一性、O(log n)操作复杂度等。常用操作有插入、查找、删除和遍历,但需注意operator[]可能意外插入新键。适用于需要有序键值对的场景,如字典、缓存等。使用时可根据需求自定义排序规则或选择unordered_map提升性能。通过学生成绩管理案例,展示了std::map的基本用法和注意事项。

2025-07-22 20:55:59 510

原创 MYSQL、MYSQL_RES和 MYSQL_FIELD的含义与使用案例

MySQL C API 的核心数据结构包括:MYSQL(数据库连接句柄,用于建立和管理连接)、MYSQL_RES(查询结果集,存储SELECT等操作返回的数据)和MYSQL_FIELD(字段元数据,描述结果集的列结构)。三者协同工作:通过MYSQL执行查询后,MYSQL_RES包含实际数据行和关联的MYSQL_FIELD数组(字段定义)。使用时需注意资源释放(mysql_free_result()、mysql_close()),正确处理二进制数据和空值。示例代码展示了从连接到结果处理的完整流程,包括获取字段

2025-07-20 21:16:03 926

原创 linux安装Mysql后添加mysql的用户和密码

本文提供了MySQL用户管理的完整指南,包括两种创建用户的方法(推荐使用CREATE USER语句),详细的操作步骤从登录到验证用户,以及修改密码的多种方式。还介绍了用户管理常用命令和安全最佳实践,如使用强密码、最小权限原则、限制访问来源等。最后包含连接测试方法,并提示远程连接需配置相关设置。适用于MySQL各版本管理员进行安全的用户权限管理。

2025-07-20 17:01:22 250

原创 fclose 函数的概念和使用案例

摘要: fclose 函数是 C 语言中用于关闭文件的关键函数,主要功能包括刷新缓冲区数据到磁盘、释放内存和系统资源。其核心作用是确保数据完整性(避免写入丢失)和防止资源泄漏。使用时应与 fopen 配对,并在写入操作后及时调用以强制数据落盘。典型场景包括:写入文件后保存数据、读取后释放资源、错误处理时防止泄漏,以及自动删除临时文件(tmpfile)。最佳实践包括检查返回值、避免重复关闭、在作用域结束前关闭文件。fclose 是 C 程序健壮性的重要保障,需严格遵循"有开有关"原则。 (

2025-07-19 15:48:46 972

原创 pthread_mutex_unlock函数的概念和用法

pthread_mutex_unlock是POSIX线程库中用于解锁互斥锁的关键函数。它必须与pthread_mutex_lock配对使用,由加锁线程在完成共享资源访问后释放锁,允许其他线程获取。解锁操作需放在临界区代码之后,并确保所有执行路径都能解锁。错误使用可能导致死锁或程序崩溃。示例展示了如何通过加锁/解锁保护共享计数器,防止数据竞争。该函数是确保多线程程序正确同步的核心机制,需严格遵循"谁加锁谁解锁"原则。

2025-07-13 22:19:44 829

原创 ssh -T [email protected]失败后解决方案

这个错误表示你的 SSH 连接无法到达 GitHub 服务器。

2025-06-27 23:02:53 615

原创 github gitclone代码时如果没权限怎么办

在 GitHub 上部署拉取远程分支时,涉及的账号和密码(或认证方式)主要与代码仓库的访问权限相关。通过以上方式,可高效、安全地完成 GitHub 远程分支的拉取操作。按提示完成生成(可直接回车使用默认设置)。

2025-06-24 22:55:56 689

原创 GitHub Actions 的深度解析与概念介绍

GitHub Actions是GitHub提供的自动化工作流引擎,通过事件驱动机制实现软件开发流程的自动化。其核心架构包含四个要素:工作流(YAML文件)、触发事件(如代码提交或Issue创建)、并行执行的任务以及原子化操作步骤。关键技术组件包括可复用Actions、执行环境Runners、文件共享Artifacts和安全存储Secrets。GitHub Actions支持从持续集成到部署的全流程自动化,具有生态集成优势、多环境测试能力和成本效益。典型应用包括CI/CD流水线和仓库运维自动化,其发展历程体现

2025-06-24 21:32:13 850

原创 docker镜像中集成act工具

该Dockerfile基于Ubuntu 22.04构建,用于安装GitHub Actions本地运行工具act。主要步骤包括:安装系统依赖(curl/git/gcc等)、下载指定版本的act二进制文件并安装到系统路径、最后验证安装。通过ARG管理版本号便于升级,使用命令合并减少镜像层数,并清理临时文件优化镜像大小。还提供了构建建议和扩展优化项(时区设置/非root用户/工作目录),体现了良好的Docker实践。

2025-06-23 22:12:20 330

原创 Docker 永久换源步骤

本文介绍了Docker永久更换镜像源的详细步骤:1)创建/etc/docker目录;2)通过tee命令写入包含多个国内镜像源的daemon.json配置文件;3)重启Docker服务使配置生效;4)通过拉取测试镜像验证配置。技术要点包括配置文件的EOF写入方式和多镜像源的自动轮询机制。优化建议保留2-3个稳定源,推荐DaoCloud等国内镜像,并提供配置验证和故障排查命令。注意生产环境应优先使用知名云厂商的专属加速地址以确保稳定性。

2025-06-23 21:57:59 597

原创 使用 catthehacker/ubuntu Docker 镜像部署 GitHub Actions 本地运行环境

catthehacker/ubuntu Docker 镜像提供了本地运行 GitHub Actions 工作流的完整解决方案。该镜像提供多个版本选项,从轻量级(1.2GB)到包含完整工具链(3.5GB)的版本。部署流程简单,只需拉取镜像并设置别名即可使用。文章详细介绍了镜像使用方法、工作流示例、性能优化技巧和常见问题解决方案,包括Node.js/Python项目构建、资源限制配置以及跨平台支持等。还提供了镜像定制开发指南和最佳实践,如持久化配置、网络优化和定期更新策略。这套方案能显著提升本地开发和测试Gi

2025-06-23 21:33:25 527

原创 筛选进程信息的shell脚本的解析

筛选进程信息的shell脚本的解析

2025-04-13 22:23:14 223

原创 open函数的概念和使用案例

open函数的概念和使用案例

2025-04-06 20:09:59 477

原创 mmap函数的概念和使用方案

mmap函数的概念和使用方案

2025-04-05 14:51:32 472

原创 system函数的概念和使用方法

system函数的概念和使用方法

2025-04-05 10:44:34 453

原创 验证Linux多进程时间片切换的程序

​​。

2025-03-29 23:23:51 351

原创 验证linux多进程时间片切换的程序

在同时运行一个或多个一味消耗 CPU 时间执行处理的进程时,采集以下统计信息。        ・在某一时间点运行在逻辑 CPU 上的进程是哪一个        ・每个进程的运行进度通过分析这些信息,来确认本章开头对调度器的描述是否正确。实验程序的设计如下。  1) 命令行参数        ・第 1 个参数(n):同时运行的进程数量        ・第 2 个参数(total):程序运行的总时长(单位:毫秒)        ・第 3 个参数(resol):采集统计信息的间隔(单位:毫秒) 

2025-03-29 23:03:04 294

原创 kill子进程后再wait可以吗?

kill子进程后再wait可以吗?

2025-03-29 21:40:11 354

原创 wait函数等待多个子进程

wait函数等待多个子进程

2025-03-29 21:36:27 292

原创 wait的概念和使用方法

wait的概念和使用方法

2025-03-29 21:34:52 552

原创 timespec结构体的概念和使用说明

timespec结构体的概念和使用说明

2025-03-29 15:59:50 773

原创 inet_pton()函数的概念和使用案例

inet_pton()函数的概念和使用案例

2025-02-23 18:39:06 646

cpp中文帮助文档_xhy.rar

包含c++11的中文帮助文档

2021-06-28

空空如也

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

TA关注的人

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