自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 技术准备十六:libcurl

一个网络传输库,可以用于网络通信。用于项目中发送邮箱验证码。

2025-11-01 17:23:34 167 2

原创 技术准备十五:Elasticsearch

面向文档的,可存储整个对象或文档,用索引进行搜索。

2025-11-01 17:21:21 205

原创 技术准备十四:odb

自动映射 C++ 类与数据库表,用面向对象的方式操作数据库。预编译指令声明类与表之间的关系,成员与字段的关系。

2025-11-01 17:16:28 190

原创 技术准备十三:Redis++

参考专栏 Redis。

2025-11-01 17:10:00 191

原创 技术准备十二:FastDFS

分布式文件系统,基于文件的 key(文件ID)value(文件内容)来管理文件。

2025-11-01 17:04:35 118

原创 技术准备十一:AMQP

作为消息队列。

2025-11-01 17:00:59 225

原创 技术准备十:etcd

etcd 可以存储键值对,用于实现注册中心,可以存放大量键值对,并针对每个键值对设置租约(保活时间),进行数据监控,而且支持目录结构。

2025-11-01 16:56:32 237

原创 技术准备九:FFmpeg

HLS 协议:http 流媒体传输协议,将视频切分成一个个小分片,并转码成不同码率的分片,播放视频只需要播放分片就能保证既轻量又高效。

2025-11-01 16:46:39 199

原创 技术准备八:BRpc

用于远程调用,客户端远程调用服务器功能拿到数据,从而更加的高效。

2025-11-01 16:39:38 163

原创 技术准备七:websocket

websocket 是一个协议,用于支持网页端和服务端之间长连接的机制。一般的 http 协议都是客户端问,服务器答,服务器无法主动向客户端发消息。但是用 websocket 协议,服务器可以向客户端发送消息,保持网页端和服务端之间长连接。

2025-11-01 16:30:52 329

原创 技术准备六:Httplib

快速搭建一个轻量级 http 服务器和客户端。

2025-11-01 16:23:12 205

原创 技术准备五:protoBuf

类似于 Json 的数据交换格式。

2025-11-01 16:15:32 155

原创 技术准备四:JsonCpp

用于数据交换。

2025-10-15 17:01:49 330

原创 技术准备三:spdlog

先定义出输出的格式:格式枚举:%t - 线程ID(Thread ID)%n - ⽇志器名称(Logger name)%l - ⽇志级别名称(Level name),如 INFO, DEBUG, ERROR 等%v - ⽇志内容(message)%Y - 年(Year)。%H - ⼩时(24-hour format)%M - 分钟(Minute)%S - 秒(Second)

2025-10-15 16:37:52 435

原创 技术准备二:gtest

用于代码单元测试。

2025-10-15 16:24:54 242

原创 技术准备一:gflags

在程序执行前,需要先用宏定义一些会用到的参数,便于后续在程序中用 gflags 的宏获取参数。例:DEFINE_bool(reuse_addr, true, "是否开始⽹络地址重⽤选项");DEFINE_int32(log_level, 1, "⽇志等级:1-DEBUG, 2-WARN, 3-ERROR");DEFINE_string(log_file, "stdout", "⽇志输出位置设置,默认为标准输出");宏定义的参数分别是:命令行参数名,参数默认值,参数备注。

2025-10-15 16:12:10 330

原创 Redis分布式锁

本质上是一组服务器给其他服务器提供加锁解锁的服务(控制其他节点互斥)最基本流程:执行业务逻辑前先尝试设置一组 key value,设置成功就代表加锁成功,期间其他服务器再次设置相同 key 发现已经被设置了代表加锁失败,执行完逻辑之后删除 key 代表解锁。也就是 setnx 和 del 命令。

2025-08-24 20:02:22 277

原创 Redis缓存

缓存把数据放在存取速度快的地方进行高效管理。速度:CPU 寄存器 > 内存 > 硬盘 > 网络。

2025-08-24 19:46:29 367

原创 Redis集群

广义:多个机器构成分布式系统。狭义:Redis 提供的集群模式,用于解决存储空间不够。数据全集会被平均分成若干份存储在一组主从节点,叫做分片中,这样就能解决存储容量的问题。但是新来一个数据,我们应该把数据放在哪个分片中呢?

2025-08-23 19:42:09 500

原创 Redis哨兵

1、哨兵要不只一个,防止一个哨兵网络的抖动误判主节点挂了,要与其他哨兵进行商量2、哨兵个数要奇数,便于投票3、哨兵不负责数据存储4、哨兵 + 主从复制只是提高可用性,并不能提高数据存储量,下一章的集群用于解决数据存储量问题。

2025-08-22 19:22:54 201

原创 Redis主从复制

在分布式系统中,多个服务器部署 Redis 形成集群。其中部署方式有主从模式,主从 + 哨兵,集群模式,本文介绍的时主从模式。其中主节点用于修改和查询,每次的修改数据同步给从节点,多个从节点分担主节点的查询压力,即从节点只读,主节点可读可写。所以有一个从节点挂了没有关系,但是主节点挂了就有问题了,没法写了。那么能不能有多个主节点解决问题呢?也不行,如果主节点之间数据不一致就会出问题,即没法解决主节点之间的数据同步。之后哨兵 + 主节点解决问题。

2025-08-21 19:19:03 337

原创 Redis事务

就是单纯的打包一些命令,防止其他客户端的命令穿插其中。

2025-08-20 18:42:46 179

原创 Redis持久化机制

数据存储在硬盘上就是持久的,数据存储在内存上就是不持久的。所以 Redis 的持久化策略:插入新元素的时候内存硬盘全写入,读数据从内存读。硬盘数据只有在 Redis 重启的时候才会使用,用于恢复内存数据。而把数据写入硬盘时间开销很大,直接写入数据 Redis 单线程会阻塞,导致服务器无法处理请求,所以引入两种持久化方法:RDB 和 AOF。

2025-08-19 19:19:46 511

原创 Redis客户端接口介绍

cout << "get和set的使用:" << endl;// 清空数据库// 返回值是optional_string,要拿到string类型使用函数value()if(val4)// 没有k4抛异常cout << "get和set使用:" << endl;cout << "lpush lrange使用:" << endl;Print(ret);cout << "hset hget使用:" << endl;});

2025-08-18 19:05:51 508

原创 数据类型 zset

有序集合,数据在集合中是有序的(仅仅指根据数字的升序降序优先级,不是 list 那种先后顺序)给每一个 member 分配一个分数 score 进行排序,member 唯一,score 可以相同一般按照分数升序排序,由于有序,所以可以有下标的概念。

2025-08-14 19:25:33 494

原创 数据类型 set

存储一些元素的集合。与 list 区别:set 元素无序,元素无法重复和 list 一样只能存 string,但是可以存 JSON 实现存储结构化数据。

2025-08-13 19:11:48 436

原创 数据类型 list

类似于数组,顺序表,deque结构图特点:元素有序,元素允许重复由于头尾高效插入删除,可以模拟栈,队列。

2025-08-12 14:30:08 471

原创 数据类型 hash

理解 hash 类型的基本结构。field 对应的 value 一定是 string 类型。

2025-08-11 19:16:08 424

原创 数据类型 string

在 string 中,存储方式就是直接二进制存储,存进去是什么取出来就是什么。所以可以存文本,整数,JSON,二进制数据(图片,视频,音频)存储大小限制 512 MB,所以一般不存视频和音频。

2025-08-11 18:49:47 591

原创 Redis 数据类型和单线程模型补充

对于 key 只有一种数据类型就是 string对于 value 有五种常见的数据类型 string, hash, list, set, zset。

2025-08-10 18:25:37 365

原创 Redis常见命令

作用:设置键值对 key value语法:set key value。

2025-08-09 18:54:02 498

原创 Redis初步介绍和分布式系统介绍

通过实际项目的普遍优化流程来介绍。

2025-08-08 16:30:34 366

原创 单调栈和单调队列

解决元素左 / 右侧第一个比他大 / 小的数字。

2025-05-17 19:48:01 463

原创 最小生成树(竞赛)

最小生成树一般针对的是无向图,用 n - 1 条边连接 n 个节点,并且权值最小。接下来介绍两种算法:克鲁斯卡尔算法,普利姆算法。

2025-05-15 18:50:27 401

原创 拓扑排序(竞赛)

有时候做一些事情是有前置条件的,能正确把这些事情排序出来的算法就是拓扑排序。拓扑排序解决的是有向无环图,但是可以也可以判环。

2025-05-13 18:51:24 397

原创 区间dp(竞赛)

所以理解用小区间更新大区间,自然而然就要想到如何正确的划分小区间也是非常重要的。

2025-05-13 14:50:36 486

原创 多重背包、分组背包、混合背包和多维背包

在每一组中挑一个物品例题:分组背包P1757 通天之分组背包 - 洛谷01背包,完全背包,多重背包,分组背包结合在一起的背包问题例题:樱花P1833 樱花 - 洛谷限制条件增多的背包问题,必须要空间优化。例题:L 国的战斗之间谍P1910 L 国的战斗之间谍 - 洛谷。

2025-05-12 18:54:43 619

原创 01背包和完全背包

背包问题就是在一堆物品中选出一些来满足题目要求。通过题目要求可以分成以下问题:方案总数,最优方案,方案可行性,具体方案...

2025-05-12 11:19:21 890

原创 质数和约数

把质数和约数放在一起就是因为他们有非常多的联系,为了验证这个观点我们可以先学习唯一分解定理:一个大于 1 的自然数一定能被唯一分解为有限个质数的乘积。而且一个数不仅能被质数分解,原本也应该被自己的约数分解,所以在数论的题目中,一个或多个数被分解的题型可以是让你求被质数分解和被约数分解。所以他们两个放在一起既是相似,也可以起到对比防止混淆。这篇文章我更倾向于写成质数与约数的对比文章,所以筛质数这个操作我会放到文章最后介绍。

2025-05-10 20:09:25 1265

原创 字典树(竞赛)

字典树不仅能存储比哈希表更多的数据,还能支持字符串的全查找和前缀查找。

2025-05-10 14:41:55 745

空空如也

空空如也

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

TA关注的人

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