
网络编程
文章平均质量分 57
网编
A小庞
一个正在编程世界里摸爬滚打的小白
哪里不懂,就啃哪里
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程池中的设计细节:并发执行与锁的优化
线程池是一种管理线程资源的机制,它预先创建一组线程,这些线程可以被重复使用来执行多个任务。减少线程创建和销毁的开销:线程的创建和销毁需要消耗系统资源,线程池可以避免频繁的线程创建和销毁。控制并发线程的数量:线程池可以限制同时运行的线程数量,避免过多的线程竞争资源导致性能下降。提高系统的响应速度:线程池中的线程可以快速响应任务请求,提高系统的整体性能。线程池是并发编程中的一种重要工具,通过合理的设计和优化,可以充分利用 CPU 资源,提高系统的性能和稳定性。原创 2025-02-25 11:33:27 · 454 阅读 · 0 评论 -
服务器缓存区的过期删除策略:原理与实现
缓存区是服务器架构中不可或缺的一部分,但管理不当可能会导致性能问题。通过设置合理的过期删除规则,可以确保缓存区中的数据始终是最新的,同时避免内存占用过多。本文介绍了几种常见的缓存过期删除策略(TTL、LRU、LFU),并提供了相应的实现方法和示例代码。希望读者能够通过本文掌握缓存区管理的关键思路,并在实际应用中加以运用。原创 2025-02-25 11:28:15 · 1107 阅读 · 0 评论 -
【C++开源库】Boost.Asio网络库使用介绍
Boost.Asio是一个功能全面的库,它提供了异步编程模型、跨平台兼容性、高性能和灵活性等特性。它被广泛应用于构建各种类型的网络应用程序,包括Web服务器、游戏服务器、实时通信系统等。通过简单的配置和代码,你可以轻松实现高效的网络通信功能,提升项目的可维护性和调试效率。原创 2025-01-11 17:12:37 · 817 阅读 · 0 评论 -
进程、线程和协程:一文理解并搞懂
在计算机科学中,进程、线程和协程是操作系统中用于执行程序的基本抽象概念。它们定义了程序如何在计算机上运行,以及如何管理资源和执行任务。下面我们将详细解释这些概念,并探讨它们之间的区别和联系。原创 2024-12-10 17:46:12 · 487 阅读 · 0 评论 -
ACE之Acceptor-Connector框架介绍及使用
ACE(Adaptive Communication Environment)是一个用于构建高性能、可扩展的网络通信应用程序的C++框架。它提供了一套丰富的组件和服务,用于简化网络编程的复杂性。其中,Acceptor-Connector框架是ACE中用于处理客户端-服务器通信的核心机制。原创 2024-12-07 14:27:04 · 500 阅读 · 0 评论 -
ZeroMQ(ZMQ或0MQ)介绍
ZeroMQ(也称为ZMQ或0MQ)是一个高性能、异步消息传递库,可以用于分布式应用程序和网络通信中。它提供了一种简单而强大的模型来处理复杂的通信需求,支持多种传输协议和通信模式。ZeroMQ的设计目标是简单、轻量级和快速,它通过提供简洁的接口和强大的通信模式,使得开发者能够更方便地构建分布式系统和并发应用。原创 2024-11-30 16:37:52 · 649 阅读 · 0 评论 -
RPC介绍,什么是RPC?
RPC(Remote Procedure Call,远程过程调用)是一种通信协议,它允许一个程序调用另一个程序在不同的地址空间上执行的子程序,就像调用本地函数一样。RPC机制使得开发者能够构建分布式计算系统,其中不同的组件可以分布在不同的计算机上,但它们之间可以像在同一台机器上一样相互调用。原创 2024-11-30 16:41:16 · 544 阅读 · 0 评论 -
【C++并发编程】高并发的阻塞队列设计与实现
首先阻塞队列肯定是一个队列,是一种先进先出的数据结果,与一般的数据结构相比,多了阻塞两个字,对应的与普通队列不同的点如下:当队列空时,从队列中取出元素会阻塞(先等着,直到队列中有元素为止)当队列满时,往队列中增加元素会阻塞(队列有容量限制,不能无节制的往队列中增加元素)阻塞队列常用来实现生产者消费者模型。原创 2024-11-21 13:56:44 · 373 阅读 · 0 评论 -
C++网络库muduo资料
muduo库笔记原创 2024-11-19 20:38:48 · 146 阅读 · 0 评论 -
C++【线程局部存储TLS机制】动态TLS
类利用了操作系统提供的TLS机制,确保了每个线程都有自己的独立存储空间,从而实现了线程之间的数据隔离。这就是为什么每个线程都能有自己的副本,并且不会影响其他线程的副本。设置值时,这个值只会被存储在该线程的TLS空间中,对其他线程是不可见的。因此,每个线程看到的都是自己的值,而不是其他线程设置的值。指定的销毁函数(destructor),来清理线程的TLS空间。线程局部存储(TLS)的关键在于每个线程都有自己的存储空间,这个空间对于其他线程是不可见的。:由于每个线程都有自己的TLS空间,所以当一个线程通过。原创 2024-09-04 20:03:14 · 416 阅读 · 0 评论 -
C++ Linux下【fd_set】的封装
其中每一个数组元素都能与任意一个打开的句柄(socket句柄、文件、命名管道、设备句柄等)建立联系。但是这种建立联系的工作是必须由程序员自己去完成的。一个long类型的数组,提供给select()机制使用的一种数据结构。主要功能是建立联系。以上代码为自己项目中的实现,可以根据自己的想法来实现,仅供参考。下面实现C++代码,看代码中的注释即可。原创 2024-07-31 19:25:59 · 334 阅读 · 0 评论 -
【C++】实现线程池--通用级别,可变参模板线程池。
线程池里面的线程个数是可动态增长的,根据任务的数量动态的增加线程的数量,但是会设置一个线程 数量的阈值,任务处理完成,如果动态增长的线程空闲了60s。CPU单核 多线程存在上下文切换,是额外的花销,线程越多上下文切换所花费的额外时间也越多,倒不如一个线程一直进行计算。还没 有处理其它任务,那么关闭线程,保持池中最初数量的线程即可。线程池里面的线程个数是固定不变的,一般是ThreadPool。时间片,物理上还是串行执行的,但是由于每个线程占用的。上,多个线程是在真正的同时执行,这样的场景称作并行。线程池C++原创 2024-10-12 11:57:35 · 647 阅读 · 0 评论 -
TCP/IP【保活机制】
TCP保活机制是一种检测TCP连接对端是否仍然可达的机制。当一方(通常是客户端)怀疑对端(服务端)可能已经奔溃或变得不可达时,它可以发送保活探测包(通常是一个空的TCP段,仅包含TCP头)来检查对端是否仍然响应。例如,在较旧的 Linux 版本中,这个选项可能不存在,或者需要使用不同的方法来配置探测次数。这些设置将影响通过该套接字建立的 TCP 连接的保活行为。如果它们对您的应用程序不是必需的,或者您不确定如何配置它们,请小心使用。在使用这些选项之前,请检查您的系统文档和内核版本,以确保它们可用。原创 2024-09-04 20:16:51 · 543 阅读 · 1 评论 -
TCP,Linux下清除空闲连接功能
bool isIdle(int time)方法用于检测连接是否在给定的时间timeout(以秒为单位)内没有活动。如果连接空闲时间超过timeout,则返回false,反之。time_t lastActiveTime成员变量用于存储最后一次活动的时间。这个时间戳在连接被创建时通过构造函数初始化,可以根据updataActivity方法更新。定义一个Connection结构体,成员变量用于存储与该连接相关联的套接字描述符。原创 2024-07-12 16:02:20 · 616 阅读 · 0 评论 -
C++获取线程ID。
在这里我遇到的问题:pthread_self一开始我使用的是这个方法,但是打印出来的值很大,至于这个有啥问题,或者说正确与否,我没研究了。结果是不需要的,因为:对于大多数操作系统提供的、用于基本系统查询或管理的API(如获取线程ID、进程ID、系统时间等),它们通常都被设计为线程安全的,因此在多线程环境中调用这些API时不需要加锁。直接由操作系统提供的,因此它的执行效率很高。其中这段代码是我在项目中优化日志管理添加的,为日志添加获取当前的线程ID号,为了后期项目排错,可以及时定位问题。原创 2024-07-11 20:53:23 · 874 阅读 · 0 评论