- 博客(34)
- 资源 (1)
- 收藏
- 关注
原创 《Redis应用实例》Java实现(29):优先队列
优先队列也是一种非常常见的数据结构,跟队列类似,只是队列中元素有优先级,根据优先级来进行排序。redis中可以使用zset来实现优先队列。
2025-11-09 21:50:04
202
原创 《Redis应用实例》Java实现(28):栈
栈是后进先出队列,也是一种非常常见的数据结构。本例演示了如何在用redis来实现栈。常被用来实现撤销功能。
2025-11-09 21:49:21
200
原创 《Redis应用实例》Java实现(27):定长队列和淘汰队列
不同之处是定长队列超过定长后后面的元素不添加了,而淘汰队列超过定长后面添加的元素添加后最前面的元素会删掉。定长队列和淘汰队列都是固定长度的队列。
2025-11-09 21:48:15
167
原创 《Redis应用实例》Java实现(26):先进先出队列
用redis来做先出队列的优势是快速,当数据量较大,而对处理速度要求高的时候,就可以用redis来完成先进先出队列。先进先出队列是一种非常常见的数据结构,在开发中经常用到,比如排队系统、秒杀系统。
2025-11-03 11:15:59
137
原创 《Redis应用实例》Java实现(25):地理位置
地图应用已经被广泛使用,例如高德地图。除了这些专用app需要使用地理位置外,很多互联网应用也需要用到地理位置,例如微信的摇一摇。redis也内置了对地理位置的存储,计算等相关功能。本例演示了redis中地理位置的使用。
2025-11-03 11:15:02
180
原创 《Redis应用实例》Java实现(24):时间线
比如博客系统,用户可能只对对特定时间段的文章感兴趣,例如,他想查看在2023年至2025年发表的文章,诸如此类。对于一些与时间或日期密切关联的应用,分页是基于时间的。可以利用reids的zset来实现这个功能。
2025-10-30 17:38:12
106
原创 《Redis应用实例》Java实现(23):分页
分页在基于数据库的应用中大量使用,当数据量很大时要在界面上显示,一次无法显示所有数据,就需要用到分页。如果数据存储在redis中时,如何实现分页查询呢?
2025-10-30 17:28:12
189
原创 《Redis应用实例》Java实现(22):排行榜
本例演示如何使用Redis的有序集合(Sorted Set) 数据结构来实现一个按分数排序的排行榜。
2025-10-23 11:08:05
298
原创 《Redis应用实例》Java实现(20):短网址生成器
短网址(Short URL)是一种将原始的、冗长复杂的 URL转换为长度更短、格式更简洁的 URL 的技术。其核心价值在于解决长 URL 在传播、展示和使用中的不便,同时具备可追踪、可管理等延伸功能。例如社交媒体上的文章的url都很长,转换为短网址后,即节省空间,也方便记忆。
2025-10-21 14:53:11
384
原创 《Redis应用实例》Java实现(19):登录会话
传统的 Session 是存储在单个服务器的内存中的。第二次请求可能被分发到服务器 B,但 B 上没有这个 Session,用户就需要重新登录,这就是“有状态”服务带来的问题。Redis 解决方案的核心思想是:将 Session 从应用服务器的内存中“抽离”出来,统一存储到一个所有应用服务器都能访问的中央缓存——Redis 中。这样,无论用户的请求被分发到哪台服务器,服务器都可以去 Redis 中查询和验证 Session,从而实现“无状态”的应用服务器,便于水平扩展。
2025-10-19 15:43:05
179
原创 《Redis应用实例》Java实现(12):数据库迭代器
redis的迭代器让用户可以分批获取数据库中的数据,而不是一次性获取整个数据库的全部数据,在数据量巨大的时候不会造成服务器阻塞。
2025-10-15 11:23:49
154
原创 《Redis应用实例》Java实现(11):紧凑字符串
(1)使用APPEND 命令,将大量字符串以追加的形式存储在同一个字符串键中,这样就避免了使用多个字符串键或多个列表项带来的内存开销。(2)在每次向字符串键执行追加操作之前,向被追加的新字符串末尾添加一个特殊的分隔符作为标识,如换行符\n。(3)在需要的时候,从字符串键中取出指定大小的数据块,然后基于分隔符将它们逐一还原为字符串。
2025-10-15 11:22:24
194
原创 《Redis应用实例》Java实现(9):二元操作记录器
Jedis的setbit和getbit通过直接操作二进制位,提供了高效、原子、空间优化的位数据处理能力,可轻松实现用户在线状态管理、活跃度统计等场景。可以高效地处理二进制位数据,适用于用户在线状态管理、活跃度统计等场景。演示jedis setbit和getbit的使用。
2025-10-15 11:19:06
106
原创 《Redis应用实例》Java实现(8):速率限制器
✅ Jedis原子操作示例类AtomicOperationExample。用于实现在一定时间内,只允许用户某个动作操作指定次数,超过次数就拒绝。AtomicOperationExample用来演示如何完成原子操作。类似速率限制器这类需求,需要使用redis来做原子操作。比如一分钟内每个用户只能访问某个页面10次。有2种方式: 事务和管道。
2025-10-14 09:24:22
117
原创 《Redis应用实例》Java实现(7):唯一计数器
在大数据量中进行去重计数,而不需要精确结果的场景,可以使用HyperLogLog来实现高效统计,误差约为0.81%。
2025-10-14 09:22:03
146
原创 《Redis应用实例》Java实现(5-6):自增数字ID和计数器
Sorted Set 本身不直接支持 INCR 操作,但可以通过 zincrby 修改成员的分数。可通过使用jedis.incr、jedis.incrBy来完成原子递增操作。支持 incr、incrBy、incrByFloat 等原子递增操作。核心点是使用jedis.incr、jedis.incrBy。原书第5章和第6章,功能比较简单,把代码放在一起了。支持hincrBy、hincrByFloat。1. String(字符串)
2025-10-14 09:19:46
199
原创 Redis应用实例》Java实现(3):用 Redis 实现分布式锁
通过 Redis 的 SET 命令(带 NX 和 EX 选项)实现基本的分布式锁功能,演示了锁的获取、锁的互斥性以及锁的超时释放机制。本章代码演示了使用 Redis 实现分布式锁。使用 SETNX 原子操作确保锁的互斥性。通过超时机制自动释放锁。设置过期时间防止死锁。
2025-10-14 09:15:55
131
原创 《Redis应用实例》Java实现(2):缓存二进制数据
本章代码通过保存图片到redis中,演示了如何在redis中保存二进制数据,以及从redis中读取二进制数据。使用jedis的set和get函数,同样可以设置和读取二进制数据。3:从redis中读取数据到byte[]1:读取图片文件到byte[]变量中。2:保存byte[]到redis中。✅ 文件读写工具类FileUtil。4:保存byte[]到文件。✅ 缓存二进制数据实现类。
2025-10-14 09:13:59
104
原创 《Redis应用实例》Java实现(1):缓存文本数据(字符串键 + JSON哈希)
最近在读人民邮电出版社2024年出版的《Redis应用实例》,这本书通过25个真实场景讲解了 Redis 的核心应用,非常实用。但作为一个 Java 程序员,我发现书中的示例代码全是 Python 写的,理解起来有些障碍。于是,我决定把这本书的所有案例用 Java 重写一遍,并分享出来,希望能帮到和我一样的开发者。本章我们来实现 **“缓存文本数据”** ——这是 Redis 最基础也最常用的场景之一。📖 原书内容回顾第 1章 缓存文本数据 31.1 需求描述 3。
2025-10-11 09:28:48
311
转载 docker搭建zabbix
https://www.cnblogs.com/Dicky-Zhang/p/7189714.html docker搭建zabbix本次使用docker搭建zabbix的组合是mysql+docker+zabix-server1 先安装数据库mysqldocker run --name zabbix-mysql-server --hostname zabbix-mysql-server \-e MY...
2018-06-13 16:18:09
485
原创 c++常见内存错误
在C和C + +中,s t a t i c都有两种基本的含义,并且这两种含义经常是互相有冲突的:1) 在固定的地址上分配,也就是说对象是在一个特殊的静态数据区上创建的,而不是每次函数调用时在堆栈上产生的。这也是静态存储的概念。2) 对一个特定的编译单位来说是本地的(就像我们在后面将要看到的,这在C + +中包括类的范围)。这里s t a t i c控制名字的可见性,所以这个名字在这个单元或类之外是
2006-05-24 09:25:00
850
原创 c++专题: static
在C和C + +中,s t a t i c都有两种基本的含义,并且这两种含义经常是互相有冲突的:1) 在固定的地址上分配,也就是说对象是在一个特殊的静态数据区上创建的,而不是每次函数调用时在堆栈上产生的。这也是静态存储的概念。2) 对一个特定的编译单位来说是本地的(就像我们在后面将要看到的,这在C + +中包括类的范围)。这里s t a t i c控制名字的可见性,所以这个名字在这个单元或类之外是
2006-05-24 09:24:00
1031
原创 c++专题: const
1.1. 简述 const关键字的最初动机是取代预处理器 #define 进行值替代。用C语言进行程序设计时,预处理器可以不受限制地建立宏并用它来替代值。因为预处理器只做文本替代,它既没有类型检查思想,也没有类型检查工具,所以预处理器的值替代会产生一些微小而且往往是很难察觉而让程序员郁闷很久的问题,这些问题在C + +中可通过使用c o n s t而避免。之后const又被用于指针、函数变量、返
2006-05-24 09:23:00
2092
4
原创 C++专题: constructor and destructor
1. 构造函数1.1. 缺省构造函数 缺省构造函数指不带任何参数的构造函数。1.1.1. 使用方法class CA{public: CA() { mi = 0 ; } int getMi(){ return mi ; }private: int mi;};int main(){ CA oa; CA* poa = new CA; // 或者 new CA(); int i;
2006-05-24 09:21:00
1479
原创 C++ exception throw和catch的时候,发生了什么
-------------- 测试程序-----------------------------#include #include #include int gi = 0;class CA{public: CA(): mi(gi) { cout CA(const CA &oa) { mi = gi; cout ~CA() { coutprivate: int
2006-05-24 09:10:00
2340
原创 MFC rtti 学习笔记
1. 核心类CRuntimeClass.struct CRuntimeClass{ // Attributes LPCSTR m_lpszClassName; int m_nObjectSize; UINT m_wSchema; // schema number of the loaded class CObject *(PA
2005-01-20 11:27:00
1051
原创 smelles and refactoring
整理了一下,有助于对代码进行refatoring。 Smells Within Classes smellsrefactoring Comments Long MethodExtract Method. Large ClassExtract ClassExt
2004-10-11 15:24:00
877
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅