- 博客(22)
- 收藏
- 关注
原创 MYSQL慢日志监控
一般来说监控日志要在mysql的日志文件my.cnf里配好,但是临时监控的话,用sql命令也可以,重启就失效。然后使用 mysqldumpslow 解析慢查询日志文件,这是mysql官方提供的慢查询日志分析工具。: 抽象后的SQL(N表示数字,S表示字符串)(14.75s) - 总执行时间。(0.24s) - 总锁定时间。1.23s - 平均执行时间。0.02s - 平均锁定时间。10.0 - 平均返回行数。(120) - 总返回行数。: 执行次数 (12次)
2025-07-29 15:01:59
232
原创 Hbase三千万级数据迁移至StarRocks方案及实现
之前项目的设备数据都是存在 Hbase 中,但是后期增加设备数据分析的时候,大数据量场景下 Hbase 实在是搞不动了,得搞个新方案。选来选去 StarRocks 不错,支持 sql(原先搞Hbase还要额外的 Phoenix 的支持,而且 Phoenix 也已经不再维护了),非常适合复杂的数据分析,虽然写入性能不如Hbase,但对于当前业务来说完全够用了,然后就是把已有的三千万条数据弄到StarRocks里。
2025-07-25 12:03:06
336
原创 SpingAOP失效场景
当原型Bean被单例Bean引用时,如果单例Bean初始化时就注入了原型Bean,后续获取的始终是同一个实例(AOP可能表现异常)在非Web环境或请求上下文未激活时,相关AOP功能会失效。在@PostConstruct方法中调用被代理方法。CGLIB通过子类化,但无法覆盖父类私有方法。Spring AOP 基于代理机制,当。:CGLIB无法重写final方法。JDK代理基于接口,不涉及私有方法。@Bean方法中直接调用被代理方法。时,会绕过代理直接调用方法。:无法被动态代理覆盖。直接new创建的对象。
2025-07-22 09:23:01
350
原创 jstat -gcutil参数说明
2、元空间(M) 92.47%接近危险阈值(默认MaxMetaspaceSize)1、老年代使用率(O) 80.88%已接近JVM默认的CMS回收阈值(92%)
2025-07-17 14:12:46
254
原创 数组(Array)与列表(ArrayList)的区别及使用场景
例如:System.arraycopy(), JNI调用等。需要存储大量基本类型(int, double等)ArrayList需要装箱/拆箱,会有性能开销。许多Java原生API和第三方库要求使用数组。在需要极致性能的循环或计算密集型操作中。例如:数学计算、图形处理、游戏开发等。在内存受限的环境中(如嵌入式系统)当集合大小在生命周期内不会改变时。例如:一周的天数、棋盘格子等。例如:矩阵运算、图像像素存储。需要真正的多维数组时。
2025-07-08 10:20:00
260
原创 Redis为什么比Mysql快那么多
虽然这个已经快是一个常识一样的结论,但是一直都没有好好总结过具体原因,这里搜了资料完善的记录了一下。MySQL 即使有 Buffer Pool 缓存,仍依赖磁盘持久化(WAL、刷脏页)Redis 的 AOF 可配置为每秒同步(fsync),牺牲部分持久性换性能。Redis 的 Hash 结构可直接通过 HGET 获取字段(O(1))MySQL 即使有索引,仍需多次磁盘寻址(B+Tree 深度影响性能)MySQL 的并发控制(MVCC、锁)带来额外开销。:Redis + MySQL 组合(读写分离)
2025-06-03 10:36:02
1116
原创 IK分词器的使用
最近遇到一个需求,要对用户搜索记录进行分词,自己实现起来肯定比较麻烦,也已经有了很多现成的框架,最后采用了比较流行的IK Analyzer。
2025-05-30 18:20:10
165
原创 大文件分片上传实现
先调用 /check 接口检查哪些分片已上传。所有分片上传完成后调用 /merge。按 MD5 和分片索引组织存储结构。上传未完成的分片到 /chunk。计算文件 MD5 作为唯一标识。将文件分片(如每片 5MB)接收分片并存储在临时目录。合并时按顺序组合所有分片。
2025-04-11 11:32:36
270
原创 Redis基于HyperLogLog实现的UV统计
HyperLogLog 是 Redis 提供的一种基数估算算法,用于统计集合中不重复元素的数量,适用于大规模用户访问近似统计。UV:网站的独立访客数。
2025-04-07 17:29:35
195
原创 通过Redis实现滑动时间窗口的实时排行榜
Sorted Set 是一个有序集合,每个元素都有一个分数(score),可以用来存储文章的PV。最后将排行榜数据写入缓存,并补充定时更新策略即可,避免高并发查询排行榜场景造成Reids压力过大。每次访问通过 ZADD 更新文章PV,合并多个时间窗口后,通过 ZREVRANGE 查询排行榜。滑动时间窗口的实时排行榜即统计最近一段时间内的数据,并实时更新排行榜。使用 Redis 的 Key 过期机制,为每个时间窗口创建一个独立的 Sorted Set。最近遇到的项目刚好有个这样的需求,整理了下大致实现思路。
2025-04-03 16:48:37
500
原创 多线程读写(读>>写)并发问题解决方案
在高并发场景下,如果读线程的数量远远大于写线程,传统的锁机制(如互斥锁)可能会导致读线程的性能瓶颈,因为读操作本身是线程安全的(多个线程可以同时读取共享数据)。Copy-On-Write 是一种优化技术,写操作会创建数据的副本,读操作直接访问原始数据。读写锁是一种特殊的锁,允许多个读线程同时访问共享资源,但写线程需要独占访问。无锁编程通过原子操作(如 CAS)实现并发控制,避免使用锁。
2025-04-03 15:08:25
369
原创 Redis通过List数据结构实现用户搜索历史记录功能
现在做的项目有个业务是保存用户的搜索历史记录,网上查了下redis的list结构比较适合历史记录这个功能,实现过程特此记录一下。
2025-03-27 17:22:00
228
原创 Redis不同数据结构的适用场景
最简单的键值存储,值可以是字符串、整数或二进制数据(最大512MB)。:有序、可重复的元素集合,支持双向操作(LPUSH/RPUSH)。:极低内存占用下估算集合的唯一元素数量(误差约0.81%)。:电商中存储商品的多个字段(如颜色、价格、库存)。:类似Kafka的消息队列,支持消费者组和多播。:无需精确统计的场景(如搜索关键词去重)。:无序、唯一的元素集合,支持交并差运算。:元素按分数(score)排序,且唯一。:键值对集合,适合存储对象属性。:快速更新和查询对象的部分字段。:存储经纬度,支持位置查询。
2025-03-27 16:16:24
1678
原创 Mysql并发问题、事务隔离级别、锁汇总理解
为每一行数据维护多个版本:每次对数据进行修改时,不会直接覆盖原有数据,而是创建一个新的版本。读操作读取历史版本:读操作可以读取事务开始时的数据版本,而不需要等待写操作完成。写操作创建新版本:写操作会生成一个新的数据版本,不会阻塞读操作。
2025-03-17 18:02:59
1504
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1