会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
三秋
博客园
首页
新随笔
联系
订阅
管理
2025年3月14日
设计一个最近访问计数器
摘要: 最近访问计数器 在之前的项目中,我们涉及到一种限流方案:当用户在短时间内访问量超过一定限制时,需要对该用户进行拉黑处理。因此我们需要设计一个高效且线程安全的计数器,以统计用户最近一段时间内的访问量。 本文将展示一种高效的、基于环形数组的、无锁的、一定程度上线程安全的访问计数器,它可以精确地统计最近几
阅读全文
posted @ 2025-03-14 22:44 zzzggb
阅读(65)
评论(0)
推荐(0)
2025年2月22日
一个优雅的LRU缓存 Java 实现
摘要: Java 实现 LRU缓存 LRU算法是一种常用的缓存算法,用于移除最近最少使用的数据。LRU缓存的核心思想是:当缓存容量已满,且需要插入新数据时,优先移除最近最少使用的数据。这种算法在许多场景下都非常有用,比如数据库缓存、网页缓存等。它可以帮助我们高效地管理有限的存储空间,同时保证最近访问的数据能
阅读全文
posted @ 2025-02-22 23:18 zzzggb
阅读(164)
评论(0)
推荐(0)
2024年10月26日
基于令牌桶算法实现一个限流器
摘要: 序言:本文章基于令牌桶算法实现了简单的一个限流器 1 令牌桶算法 实现原理 令牌生成:在固定的时间间隔内,算法会向一个桶中放入一定数量的令牌。令牌的生成速率是固定的,通常以每秒钟生成的令牌数来表示。 桶的容量:桶有一个最大容量,如果桶满了,新的令牌将被丢弃。这意味着即使在高流量情况下,系统也不会无限
阅读全文
posted @ 2024-10-26 21:15 zzzggb
阅读(597)
评论(1)
推荐(1)
2024年9月8日
多线程轮流打印字符
摘要: 要求:使用多个线程轮流打印字符 方法1。无锁自旋,一般在多核机器并且临界区耗时很短的话可以尝试自旋 public class printABC { static Logger log = new Logger(Logger.LogLevel.DEBUG, printABC.class); stati
阅读全文
posted @ 2024-09-08 18:28 zzzggb
阅读(33)
评论(0)
推荐(0)
深入理解线程池的运行流程
摘要: 序言:这篇文章主要记录了java线程池在一些特殊场景出现的奇怪问题。 场景 核心线程数量为2,最大线程数量为4,生存时间60s,任务队列大小为4。每次向线程池中提交8个任务执行。那么,这个线程池能否正常运行呢? 1 demo 我们可以根据这个要求写一个demo出来 public class Demo
阅读全文
posted @ 2024-09-08 17:48 zzzggb
阅读(128)
评论(0)
推荐(0)
2022年3月2日
一个射击运动员打靶,靶一共有10环,连开10枪打中90环的可能性有多少种?请用递归算
摘要: 递归遍历。靶的范围在0~10,选择一环,累计分数。然后递归进入下一环,重复操作。 到最后一个靶时检查分数是否等于目标分数,是则计数一次,否则返回上一层递归并清除本层打靶的分数; 代码 int shoot(int target, int k){ //target:目标分数 k:打靶次数 static
阅读全文
posted @ 2022-03-02 14:29 zzzggb
阅读(487)
评论(0)
推荐(0)
2021年12月28日
四川大学874数据结构算法题
摘要: 2015篇 1.有一个含有 n 个整数的无序数据序列,所有数据元素各不相同,采用整数数组 R[0, n-1] 存储。要求: (1). 设计一个尽可能高效的算法,输出序列中第 k(1≤k≤n) 小的元素 两种思路: 建立一个含 k 个元素的小顶堆进行堆排。堆中保留最大的 k 个数,堆顶即为第 k 小元
阅读全文
posted @ 2021-12-28 14:48 zzzggb
阅读(480)
评论(0)
推荐(0)
公告