- 博客(277)
- 收藏
- 关注
原创 【redis】安装与使用
Redis是一个开源的高性能键值对内存数据库,支持多种数据结构(字符串、哈希、列表等)。本文介绍了Redis的安装和使用方法: 安装 服务端:通过apt安装redis包,修改配置文件支持远程连接 客户端:安装hiredis库和redis-plus-plus库 接口介绍 主要展示了Redis类的常用接口,包括连接配置、字符串操作(set/get)、列表操作等 支持数据持久化、过期时间设置等功能
2025-06-18 10:48:26
1297
92
原创 【websocket】安装与使用
WebSocket是一种基于TCP的长连接协议,允许服务器主动向客户端推送消息,解决了传统HTTP协议轮询效率低的问题。本文介绍了WebSocket的工作原理、报文格式,以及使用websocketpp库搭建WebSocket服务器的方法。websocketpp是一个支持WebSocket和HTTP协议的C++库,主要特性包括事件驱动接口、跨平台支持和线程安全。文章详细讲解了websocketpp的常用接口如连接管理、消息处理和定时器设置等,并提供了安装命令和基础代码示例,为开发实时通信应用提供了技术方案。
2025-06-05 10:44:19
1570
96
原创 【cpp-httplib】 安装与使用
cpp-httplib是一个轻量级的C++ HTTP客户端/服务器库,具有以下特点:单头文件设计、跨平台支持、同步/异步操作、HTTP/1.1协议支持、文件上传和SSL/TLS加密功能。其简洁的API设计包括请求/响应结构体(Request/Response)、服务器路由注册(Server类)和客户端请求接口(Client类)。典型应用场景包括:通过Server类注册路由处理GET/POST请求,使用Client类发送HTTP请求并获取响应。该库无需复杂配置即可快速搭建HTTP服务,适合需要高效开发网络应用
2025-05-30 11:05:40
1719
86
原创 【brpc】安装与使用
brpc 是一个用 C++ 编写的工业级 RPC 框架,广泛应用于高性能系统如搜索、存储、机器学习等。它通过远程调用(RPC)机制,允许客户端将计算任务交给服务器处理,客户端只需调用接口即可获得结果,无需关心底层网络通信。brpc 支持多种协议(如 HTTP、gRPC、Redis 等),并提供同步、异步等多种请求处理方式,具备高可用性和高性能。安装 brpc 需要先安装依赖库,然后通过 Git 克隆源码并编译安装。brpc 提供了丰富的类与接口,包括日志输出、protobuf 序列化、服务端和客户端管理等,
2025-05-22 09:45:48
1101
87
原创 【RabbitMq C++】消息队列组件
RabbitMQ 是一个基于 AMQP 协议的消息队列组件,用于实现客户端之间的消息传输。它通过交换机、队列和绑定等核心概念,提供灵活的消息转发功能。RabbitMQ 解决了传统直接通信的安全性和效率问题,通过消息队列服务器作为中间层,确保消息的可靠传输。安装 RabbitMQ 包括服务器和 C++客户端库 AMQP-CPP 的配置,AMQP-CPP 支持多种网络通信模式,如 TCP 和异步通信组件(如 libev)。使用 AMQP-CPP 时,可以通过继承 AMQP::TcpHandler 类并重写相关函
2025-05-14 09:57:41
3364
94
原创 【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
1665
111
原创 【仿Mudou库one thread per loop式并发服务器实现】服务器边缘测试+性能测试
webbench测试原理是,创建指定数量的进程,在每个进程中不断创建套接字向服务器发送请求,并通过管道最终将每个进程的结果返回给主进程进行数据统计。假设现在 12345描述符就绪了, 在处理1的时候花费了30s处理完,超时了,导致2345描述符因为长时间没有刷新活跃度。给服务器发送一个数据,告诉服务器要发送1024字节的数据,但是实际发送的数据不足1024,查看服务器处理结果。超时连接测试1:创建一个客户端,给服务器发送一次数据后,不动了,查看服务器是否会正常的超时关闭连接。
2025-04-27 10:54:47
2926
103
原创 【仿Mudou库one thread per loop式并发服务器实现】HTTP协议模块实现
这个模块是一个HTTP请求接收的上下文模块,主要是为了防支在一次接收的数据中,不是一个完整的HTTP请求,则解析过程并未完成,无法进行完整的请求处理,需要在下次接收到新数据后继续根据上下文进行解析,最终得到一个HttpRequest请求信息对象,因此在请求数据的接收以及解析部分需要一个上下文来进行控制接收和处理节奏。当服务器收到了一个请求,就在请求路由表中,查找有没有对应请求的处理函数,如果有,则执行对应的处理函数即可。这个模块是HTTP请求数据模块,用于保存HTTP请求数据被解析后的各项请求元素信息。
2025-04-21 12:02:13
3311
107
原创 【仿Mudou库one thread per loop式并发服务器实现】SERVER服务器模块实现
客户端异常退出,比如断电断网,客户端底层操作系统没有办法及时服务器进行四次挥手,因此服务器也收不到任何信息,除非服务器主动去读或者写,客户端会给服务器发送一个RST,服务器读写的返回值都是-1,错误码设置为ECOMNNRESET,并且在epoll模型下的服务器会触发EPOLLERR和EPOLLHUOP事件。这里还有一个注意点:当事件就绪,需要处理的时候,处理过程中,如果对连接要进行某些操作:这些操作必须在EventLoop对应的线程中执行,保证对连接的各项操作都是线程安全的。
2025-04-16 09:38:15
2420
102
原创 【仿Mudou库one thread per loop式并发服务器实现】项目介绍+前置技术知识点
仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器这个项目是通过咱们实现的高并发服务器组件,可以简洁快速的完成一个高性能的服务器搭建。并且,通过组件内提供的不同应用层协议支持,也可以快速完成一个高性能应用服务器的搭建。在这里,要明确的是咱们要实现的是一个高并发服务器组件,因此当前的项目中并不包含实际的业务内容。
2025-04-11 09:49:05
2218
75
原创 【API文档搜索引擎】下
这一模块主要提供建立索引,以及收到用户的发起的http请求通过Get方法提交的搜索关键字,然后对关键字进行分词,先在倒排索引中查找到对应关键字的文档ID,然后在正排索引中根据文档ID,找到多个相关文档内容,拼接返回给用户。这里使用到了Josn库,Jsoncpp 库用于实现 json 格式的序列化和反序列化。安装Json库上面代码还有一个问题!如果你有一个文档是 :今天晚上吃米饭。分词:今天/晚饭/吃米饭/米饭。建立倒排索引,假设每个关键字对应的文档ID都是100假如你搜索的关键字也是,今天晚饭吃米饭。
2025-04-02 16:56:59
2077
113
原创 【API文档搜索引擎】上
目前我们熟知的搜索引擎有:百度,360,搜狗等,它们所作的都是全网搜索 。而我们接下来做的是站内搜索,搜索数据更垂直,数据量其实更小。以前Boost库是没有搜索的,不过现在是有了,但没关系,重要的是虽然我们做的是Boost搜索引擎,但如果掌握了,可以改成任何一个搜索引擎。
2025-03-27 10:37:13
2695
120
原创 【高并发内存池】细节处理 + 性能优化 + 总结
STL容器是线程不安全的,多线程在并发用unordered_map的时候会有线程不安全的问题,在PageCache中对unordered_map写之前我们加锁了,但是在读unordered_map我们并没有加锁。这样我们就知道通过释放内存块的地址,转变成页号,在找到对应的Span,拿到_objsize就知道这个内存块大小了。写是在PageCache是加过锁的,读的时候就是在释放的时候去读,在读这个Span的时候,这个Span早在拿它的时候就写过了。,所有就减少了读写并发的问题,也就少了很多加锁解锁。
2025-03-13 11:04:17
1641
130
原创 【高并发内存池】项目介绍 + 定长内存池 + 整体框架设计
当前项目是实现一个高并发的内存池,他的原型是google的⼀个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc、free)。我们这个项目是把tcmalloc最核新的框架简化后拿出来,模拟实现出一个自己的高并发内存池,目的就是学习tcamlloc的精华。所谓“池化技术”,就是程序先向系统申请过量的资源,然后自己管理,以备不时之需。
2025-03-01 10:27:58
1492
203
原创 2024年博客之星主题创作|2024年度感想与新技术Redis学习
2024学习了很多计算机知识,有C、数据结构、C++、Linux系统编程和网络编程、数据库、高阶数据结构、算法,虽然也学习到了很多让自己从计算机小白到掌握一点计算机知识,但是对于一个程序猿来说是远远不够的,我们应该不断学习新的前沿知识不至于让新型技术把自己淘汰,2025新的一年开始,就从Redis开始继续在CSDN记录自己学习到的知识。
2025-01-22 12:13:39
1821
157
原创 【MySQL】复合查询+表的内外连接
前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够,未来可能还有多表查询,子查询。
2025-01-17 23:52:59
3615
83
原创 【Git原理与使用】Git初识&&基本操作
为了能够更方便我们管理这些不同版本的文件,便有了版本控制器。所谓的版本控制器,通俗的讲就是一个记录每次修改和版本迭代的一个管理系统,同时也方便多人协同作业。目前最主流的版本控制器就是 Git 。Git 可以控制电脑上所有格式的文件,例如 doc、excel、dwg、dgn、rvt等等。对于我们开发人员来说,Git 最重要的就是可以帮助我们管理软件开发项目中的源代码文件!
2024-09-30 10:41:15
3219
89
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人