自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Muduo库时间轮定时器的设计实现

这里,我们就用到了智能指针shared_ptr,shared_ptr有个计数器,当计数为0的时候,才会真正释放⼀个对象,那么如果连接在第10s进行了⼀次通信,则我们继续向定时任务中,添加⼀个30s后(也就是第40s)的任务类对象的shared_ptr,则这时候两个任务shared_ptr计数为2,则第30s的定时任务被释放的时候,计数-1,变为1,并不为0,则并不会执行实际的析构函数,那么就相当于这个第30s的任务失效了,只有在第40s的时候,这个任务才会被真正释放。无疑应该是第40s的时候。

2025-07-05 15:52:33 1012

原创 传输层协议TCP

接收端处理数据的速度是有限的. 如果发送端发的太快, 导致接收端的缓冲区被打满, 这个时候如果发送端继续发送, 就会造成丢包, 继而引起丢包重传等等一系列连锁反应. 因此 TCP 支持根据接收端的处理能力, 来决定发送端的发送速度. 这个机制就叫做。机器掉电/网线断开: 接收端认为连接还在, 一旦接收端有写入操作, 接收端发现连接已经不在了, 就会进行 reset. 即使没有写入操作, TCP 自己也内置了一个保活定时器, 会定期询问对方是否还在. 如果对方不在, 也会把连接释放.

2025-07-05 12:17:02 1020

原创 项目前置知识技术点功能用例:timerfd的认识及使用

上边例子,是⼀个定时器的使用示例,是每隔3s钟触发⼀次定时器超时,否则就会阻塞在read读取数据这里。基于这个例子,则我们可以实现每隔3s,检测⼀下哪些连接超时了,然后将超时的连接释放掉。本篇文章介绍了定时器的基本使用,后边计划基于这个去实现时间轮,欢迎留言交流。这时候我们就需要⼀个定时任务,定时的将超时过期的连接进行释放。在当前的高并发服务器中,不得不考虑一个问题,那就是。

2025-07-05 11:36:50 248

原创 bRPC简介

互联网上的机器大都通过TCP/IP协议数据以什么格式传输?不同机器间,网络间可能是不同的字节序,直接传输内存数据显然是不合适的;随着业务变化,数据字段往往要增加或删减,怎么兼容前后不同版本的格式?一个TCP连接可以被多个请求复用以减少开销么?多个请求可以同时发往一个TCP连接么?如何管理和访问很多机器?连接断开时应该干什么?万一server不发送回复怎么办?RPC。

2025-07-04 21:20:27 933

原创 项目前置知识技术点功能用例:C++11中的bind

基于bind的作用,当我们在设计⼀些线程池,或者任务池的时候,就可以将将任务池中的任务设置为函数类型,函数的参数由添加任务者直接使用bind进行适配绑定设置,而任务池中的任务被处理,只需要取出⼀个个的函数进行执行即可。我们可以将bind接口看做是一个通用的函数适配器,他接受一个函数对象,以及函数的各项参数,然后返回一个新的函数对象,但是这个函数对象的参数已经被绑定为设置的参数。本篇文章介绍了c++11std::bind函数的相关使用,以及它对于后面我们项目里边实现任务池线程池的重要性。

2025-07-04 17:55:33 409

原创 仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器

HTTP服务器通过一段时间的学习,自己想着去实现一个高并发的服务器组件,目前暂时先不关注实际的业务内容。目前希望通过自己实现的高并发服务器组件,能够简洁快速的完成一个高性能的服务器的搭建;并且,通过组件内提供的不同应用层协议支持,也可以快速完成一个高性能应用服务器的搭建,比如提供HTTP协议组件的支持。

2025-07-04 16:46:54 894

原创 聊聊Kafka、RabbitMQ、RocketMQ 和 ActiveMQ 这 4 种消息队列

分区是 Kafka 读写数据的最小粒度,比如主题 A 有 15 条消息,有 5 个分区,如果采用顺序轮询的方式,15 条消息会顺序分配给这 5 个分区,后续消费的时候,也是按照分区粒度消费。由于分区可以部署在多个不同的机器上,所以可以通过分区实现 Kafka 的伸缩性,比如主题 A 的 5 个分区,分别部署在 5 台机器上,如果下线一台,分区就变为 4。:主题可以被分为若干个分区,同一个主题中的分区可以不在一个机器上,有可能会部署在多个机器上,由此来实现 kafka 的伸缩性。

2025-05-23 16:41:38 1077

原创 五种IO模型和阻塞IO

这篇文章跟大家分享了五种IO模型和阻塞IO的相关知识!

2025-05-17 17:38:45 752

原创 内存分配器ptmalloc2、tcmalloc、jemalloc,结构设计、内存分配过程详解

当用户请求的内存略小于某个空闲块时,分割后剩余的碎片会被标记为。

2025-05-14 22:24:36 1386

原创 传输层协议UDP

 本篇文章介绍了 传输层协议UDP 的相关内容,欢迎评论和交流!

2025-05-13 16:18:44 982

原创 应用层协议HTTP

1. 场景引入:用户在地址栏从输入 URL 到页面展示到底发生了什么?2.

2025-05-05 17:35:46 1218

原创 【linux网络】网络基础概念

本篇文章介绍了网络协议等相关内容,欢迎评论和交流!

2025-04-29 19:37:05 1021

原创 【linux系统】进程(下)

本篇文章介绍了进程的优先级和进程切换等相关内容。

2025-04-23 15:43:58 575

原创 【Linux系统】进程(上)

进程的退出状态必须被维持下去,因为他要告诉关⼼它的进程(⽗进程),你交给我的任务,我办的怎么样了。维护退出状态本⾝就是要⽤数据维护,也属于进程基本信息,所以保存在task_struct(PCB)中,换句话说,Z状态⼀直不退出,PCB⼀直都要维护?D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的进程通常会等待IO的结束。R运⾏状态(running): 并不意味着进程⼀定在运⾏中,它表明进程要么是在运⾏中要么在运⾏队列⾥。

2025-03-31 18:13:40 699

原创 VSCode中出现“#include错误,请更新includePath“问题,解决方法

(2)如果头文件存在,在编译时提醒VSCode终端中"#include错误,请更新includePath",则表明需要更新项目的包含路径设置。本篇文章介绍了在VSCode中编写代码时遇到头文件有波浪线的问题,解决方案如上,欢迎评论交流!(3)VSCode按Ctrl+Shift+P,搜索。(5)路径问题解决,之后波浪线就消失了。),如果文件中包含注释,需要将其删除。文件是一个有效的 JSON 文件。(1)首先检查要引用的头文件。JSON 文件不支持注释()检查文件格式是否正确。(2)复制红框这一段。

2025-02-09 18:08:25 6990

原创 【linux/C++项目】从零实现一个高并发内存池(1)

这篇文章先对项目【高并发内存池】做了一个简单的介绍,会陆续更新后面的内容,欢迎评论和交流!

2024-12-16 17:59:57 675

原创 【MySQL】数据库基础

这篇文章介绍了MySQL数据库基础,欢迎评论留言交流。

2024-12-12 11:11:25 986

原创 【linux系统】基础开发工具(git、gdb/cgdb使用)

本篇文章分享了关于linux环境下的基本开发工具,git以及gdb/cgdb的介绍。欢迎评论,分享交流。

2024-12-11 10:58:09 1336

原创 【linux系统】基础开发工具(gcc/g++、make/Makefile)

这篇文章介绍了linux下的基本开发工具,编译器gcc/g++、自动化构建-make/Makefile。欢迎评论交流。

2024-12-11 10:09:05 753

原创 【linux系统】基础开发工具(yum、Vim)

本篇文章介绍了两个基本的开发工具'yum'、'Vim',欢迎评论和交流!

2024-12-10 20:52:58 1238

原创 【C++进阶】智能指针的使用和原理(2)

这篇文章介绍了智能指针的相关知识,欢迎评论交流!

2024-11-08 19:36:20 740

原创 【C++进阶】智能指针的使用及原理(1)

这篇文章介绍了智能指针的相关知识,下篇我们继续讨论智能指针,欢迎评论交流!

2024-11-08 15:57:12 634

原创 【C++进阶】异常

这篇文章介绍了异常的相关知识,欢迎评论交流!

2024-11-08 10:11:37 750

原创 哈希表的实现

本篇文章介绍了哈希表的实现的相关内容,欢迎评论交流!

2024-11-04 17:44:52 906

原创 【C++11】右值引用和移动语义

本篇文章介绍左值引用和移动语义的相关知识,欢迎评论和交流!

2024-10-24 16:18:01 871 1

原创 【C++进阶】unordered_map和unordered_set的使用

这篇文章介绍了unordered_set/map系列的相关知识,欢迎大家评论交流!

2024-10-23 16:14:29 851

原创 【C++11】列表初始化

本篇文章介绍了列表初始化的相关知识,欢迎大家评论交流。

2024-10-23 15:38:46 786

原创 【C++进阶】红黑树的实现

本篇文章介绍了红黑树的相关知识,欢迎评论交流!

2024-10-21 13:08:58 688

原创 【C++进阶】AVL树的实现

本文介绍了AVL树如何实现的相关知识,欢迎评论留言交流!

2024-10-18 10:53:13 1029

原创 【C++进阶】关联式容器map的使用

本篇文章介绍了关联式容器map的相关知识,欢迎评论留言交流!

2024-10-11 16:36:09 921

原创 【C++进阶】set的使用

本篇文章介绍了关联式容器set的使用,欢迎留言分享交流

2024-10-09 23:09:40 1448

原创 【Linux系统】权限

这篇文章分享了【linux系统】权限的相关知识,欢迎评论交流!

2024-10-05 22:12:05 1047

原创 【C++进阶】二叉搜索树

这篇文章介绍了二叉搜索树的相关知识!

2024-10-05 11:17:03 1243

原创 【C++进阶】多态

这篇文章分享了多态的相关知识,欢迎大家留言交流分享。

2024-10-01 16:54:53 1097

原创 【C++进阶】继承

本篇文章介绍继承的相关知识,欢迎大家评论交流!

2024-09-27 12:28:59 855

原创 【C++初阶】模版进阶

本篇文章介绍 了模版进阶的相关知识,欢迎大家评论交流!​​​​​​​

2024-09-22 17:33:27 826

原创 【初识Linux】Linux下基本指令

本篇文章介绍Linux下的基本指令,欢迎大家评论交流!

2024-09-09 11:29:53 1386

原创 【初阶学习Linux】初识Linux

本篇文章介绍Linux的相关背景、开源、官网、企业应用现状、发行版本,欢迎大家评论交流!​​​​​​​

2024-09-08 16:13:04 1735

原创 【C++初阶学习】stack和queue

本篇文章介绍 了 priority_queue 类以及如何实现的相关知识,欢迎大家评论交流!​​​​​​​

2024-08-30 17:25:42 1230

原创 【C++初阶学习】list

本篇文章介绍了list 类以及如何实现的相关知识,欢迎大家评论交流!

2024-08-29 21:38:28 652

空空如也

空空如也

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

TA关注的人

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