自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【RabbitMq C++】消息队列组件

RabbitMQ 是一个基于 AMQP 协议的消息队列组件,用于实现客户端之间的消息传输。它通过交换机、队列和绑定等核心概念,提供灵活的消息转发功能。RabbitMQ 解决了传统直接通信的安全性和效率问题,通过消息队列服务器作为中间层,确保消息的可靠传输。安装 RabbitMQ 包括服务器和 C++客户端库 AMQP-CPP 的配置,AMQP-CPP 支持多种网络通信模式,如 TCP 和异步通信组件(如 libev)。使用 AMQP-CPP 时,可以通过继承 AMQP::TcpHandler 类并重写相关函

2025-05-14 09:57:41 1370 73

原创 【JsonCpp、Muduo、C++11】JsonCpp库、Muduo库、C++11异步操作

Jsoncpp 库主要是用于实现 Json 格式数据的序列化和反序列化,它实现了将多个数据对象组织成为 json 格式字符串,以及将 Json 格式字符串解析得到多个数据对象的功能。Json::Value类:中间数据存储类如果要将数据对象进行序列化,就需要先存储到Json:Value对象中如果要将数据传进行反序列化,就是解析后,将数据对象放入到Json:Value对象中//Value重载了[]和=,因此所有的赋值和获取数据都可以通过//简单的⽅式完成val["name"] = "xx";

2025-05-06 10:09:11 1300 102

原创 【仿Mudou库one thread per loop式并发服务器实现】服务器边缘测试+性能测试

webbench测试原理是,创建指定数量的进程,在每个进程中不断创建套接字向服务器发送请求,并通过管道最终将每个进程的结果返回给主进程进行数据统计。假设现在 12345描述符就绪了, 在处理1的时候花费了30s处理完,超时了,导致2345描述符因为长时间没有刷新活跃度。给服务器发送一个数据,告诉服务器要发送1024字节的数据,但是实际发送的数据不足1024,查看服务器处理结果。超时连接测试1:创建一个客户端,给服务器发送一次数据后,不动了,查看服务器是否会正常的超时关闭连接。

2025-04-27 10:54:47 1989 102

原创 【仿Mudou库one thread per loop式并发服务器实现】HTTP协议模块实现

这个模块是一个HTTP请求接收的上下文模块,主要是为了防支在一次接收的数据中,不是一个完整的HTTP请求,则解析过程并未完成,无法进行完整的请求处理,需要在下次接收到新数据后继续根据上下文进行解析,最终得到一个HttpRequest请求信息对象,因此在请求数据的接收以及解析部分需要一个上下文来进行控制接收和处理节奏。当服务器收到了一个请求,就在请求路由表中,查找有没有对应请求的处理函数,如果有,则执行对应的处理函数即可。这个模块是HTTP请求数据模块,用于保存HTTP请求数据被解析后的各项请求元素信息。

2025-04-21 12:02:13 2477 102

原创 【仿Mudou库one thread per loop式并发服务器实现】SERVER服务器模块实现

客户端异常退出,比如断电断网,客户端底层操作系统没有办法及时服务器进行四次挥手,因此服务器也收不到任何信息,除非服务器主动去读或者写,客户端会给服务器发送一个RST,服务器读写的返回值都是-1,错误码设置为ECOMNNRESET,并且在epoll模型下的服务器会触发EPOLLERR和EPOLLHUOP事件。这里还有一个注意点:当事件就绪,需要处理的时候,处理过程中,如果对连接要进行某些操作:这些操作必须在EventLoop对应的线程中执行,保证对连接的各项操作都是线程安全的。

2025-04-16 09:38:15 2053 100

原创 【仿Mudou库one thread per loop式并发服务器实现】项目介绍+前置技术知识点

仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器这个项目是通过咱们实现的高并发服务器组件,可以简洁快速的完成一个高性能的服务器搭建。并且,通过组件内提供的不同应用层协议支持,也可以快速完成一个高性能应用服务器的搭建。在这里,要明确的是咱们要实现的是一个高并发服务器组件,因此当前的项目中并不包含实际的业务内容。

2025-04-11 09:49:05 1970 75

原创 【Boost搜索引擎】下

这一模块主要提供建立索引,以及收到用户的发起的http请求通过Get方法提交的搜索关键字,然后对关键字进行分词,先在倒排索引中查找到对应关键字的文档ID,然后在正排索引中根据文档ID,找到多个相关文档内容,拼接返回给用户。这里使用到了Josn库,Jsoncpp 库用于实现 json 格式的序列化和反序列化。安装Json库上面代码还有一个问题!如果你有一个文档是 :今天晚上吃米饭。分词:今天/晚饭/吃米饭/米饭。建立倒排索引,假设每个关键字对应的文档ID都是100假如你搜索的关键字也是,今天晚饭吃米饭。

2025-04-02 16:56:59 1774 112

原创 【Boost搜索引擎】上

目前我们熟知的搜索引擎有:百度,360,搜狗等,它们所作的都是全网搜索 。而我们接下来做的是站内搜索,搜索数据更垂直,数据量其实更小。以前Boost库是没有搜索的,不过现在是有了,但没关系,重要的是虽然我们做的是Boost搜索引擎,但如果掌握了,可以改成任何一个搜索引擎。

2025-03-27 10:37:13 2313 119

原创 【高并发内存池】细节处理 + 性能优化 + 总结

STL容器是线程不安全的,多线程在并发用unordered_map的时候会有线程不安全的问题,在PageCache中对unordered_map写之前我们加锁了,但是在读unordered_map我们并没有加锁。这样我们就知道通过释放内存块的地址,转变成页号,在找到对应的Span,拿到_objsize就知道这个内存块大小了。写是在PageCache是加过锁的,读的时候就是在释放的时候去读,在读这个Span的时候,这个Span早在拿它的时候就写过了。,所有就减少了读写并发的问题,也就少了很多加锁解锁。

2025-03-13 11:04:17 1485 130

原创 【高并发内存池】释放内存 + 申请和释放总结

释放内存 + 申请和释放总结

2025-03-09 10:30:54 1308 128

原创 【高并发内存池】申请内存

三层缓存

2025-03-04 10:08:02 969 36

原创 【高并发内存池】项目介绍 + 定长内存池 + 整体框架设计

当前项目是实现一个高并发的内存池,他的原型是google的⼀个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc、free)。我们这个项目是把tcmalloc最核新的框架简化后拿出来,模拟实现出一个自己的高并发内存池,目的就是学习tcamlloc的精华。所谓“池化技术”,就是程序先向系统申请过量的资源,然后自己管理,以备不时之需。

2025-03-01 10:27:58 1422 198

原创 2024年博客之星主题创作|2024年度感想与新技术Redis学习

2024学习了很多计算机知识,有C、数据结构、C++、Linux系统编程和网络编程、数据库、高阶数据结构、算法,虽然也学习到了很多让自己从计算机小白到掌握一点计算机知识,但是对于一个程序猿来说是远远不够的,我们应该不断学习新的前沿知识不至于让新型技术把自己淘汰,2025新的一年开始,就从Redis开始继续在CSDN记录自己学习到的知识。

2025-01-22 12:13:39 1791 157

原创 【MySQL】复合查询+表的内外连接

前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够,未来可能还有多表查询,子查询。

2025-01-17 23:52:59 3383 83

原创 【贪心算法】贪心算法七

【贪心算法】贪心算法七

2024-12-27 10:40:33 4229 153

原创 【贪心算法】贪心算法六

【贪心算法】贪心算法六

2024-12-18 10:49:58 4618 145

原创 【贪心算法】贪心算法五

【贪心算法】贪心算法五

2024-12-03 10:28:59 11942 207

原创 【贪心算法】贪心算法四

【贪心算法】贪心算法四

2024-11-20 10:48:52 14277 213

原创 【贪心算法】贪心算法三

【贪心算法】贪心算法三

2024-11-12 10:18:43 6558 242

原创 【动态规划】似包非包

【动态规划】似包非包

2024-11-04 09:37:52 4592 244

原创 【Git原理与使用】企业级开发模型

【Git原理与使用】企业级开发模型

2024-10-28 09:28:36 1205 229

原创 【Git原理与使用】多人协作

【Git原理与使用】多人协作

2024-10-23 08:52:54 2871 185

原创 【动态规划】二维费用的背包问题

【动态规划】二维费用的背包问题

2024-10-21 10:28:16 3029 183

原创 【动态规划】完全背包问题应用

【动态规划】完全背包问题应用

2024-10-14 10:32:42 2420 194

原创 【Git原理与使用】远程操作&&标签管理

【Git原理与使用】远程操作&&标签管理

2024-10-08 10:50:07 3956 175

原创 【动态规划】完全背包问题

【动态规划】完全背包问题

2024-10-03 10:33:35 2750 120

原创 【Git原理与使用】分支管理

【Git原理与使用】分支管理

2024-09-30 10:41:23 1652 66

原创 【Git原理与使用】Git初识&&基本操作

为了能够更方便我们管理这些不同版本的文件,便有了版本控制器。所谓的版本控制器,通俗的讲就是一个记录每次修改和版本迭代的一个管理系统,同时也方便多人协同作业。目前最主流的版本控制器就是 Git 。Git 可以控制电脑上所有格式的文件,例如 doc、excel、dwg、dgn、rvt等等。对于我们开发人员来说,Git 最重要的就是可以帮助我们管理软件开发项目中的源代码文件!

2024-09-30 10:41:15 3163 89

原创 【动态规划】01背包问题应用

【动态规划】01背包问题应用

2024-09-26 10:50:34 2035 66

原创 【动态规划】01背包问题

【动态规划】01背包问题

2024-09-26 10:50:15 4256 91

原创 【贪心算法】贪心算法二

【贪心算法】贪心算法二

2024-09-23 10:28:17 1772 80

原创 【动态规划】两个数组的 dp 问题二

【动态规划】两个数组的 dp 问题二

2024-09-23 10:28:01 1992 105

原创 【贪心算法】贪心算法一

【贪心算法】贪心算法一

2024-09-20 10:05:13 1790 69

原创 【动态规划】两个数组的 dp 问题一

【动态规划】两个数组的 dp 问题一

2024-09-20 10:04:51 1797 94

原创 【贪心算法】贪心算法

【贪心算法】贪心算法

2024-09-14 10:34:28 12917 108

原创 【动态规划】回文串问题

【动态规划】回文串问题

2024-09-14 10:32:52 2336 104

原创 【动态规划】子序列问题二(数组中不连续的一段)

【动态规划】子序列问题二(数组中不连续的一段)

2024-09-11 10:07:27 1533 60

原创 【高阶数据结构】跳表

skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为key或者key/value的查找模型。那么相比而言它的优势是什么呢?这么等我们学习完它的细节实现,我们再来对比。skiplist是由William Pugh发明的,最早出现于他在1990年发表的论文《Skip Lists: Askiplist,顾名思义,首先它是一个list。实际上,它是在有序链表的基础上发展起来的。如果是一个有序的链表,查找数据的时间复杂度是O(N)。

2024-09-11 10:07:06 1630 94

原创 【动态规划】子序列问题(数组中不连续的一段)

【动态规划】子序列问题(数组中不连续的一段)

2024-09-07 11:05:39 2182 121

原创 【动态规划】子数组系列二(数组中连续的一段)

【动态规划】子数组系列二(数组中连续的一段)

2024-09-02 10:43:16 1893 115

空空如也

空空如也

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

TA关注的人

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