- 博客(7)
- 问答 (1)
- 收藏
- 关注
原创 千万级数据下,分页查询的优化
(推了推不存在的眼镜,故作严肃):“之前聊了线程安全的问题,现在看看你解决问题的能力呢。子查询仅扫描索引(无需回表),大幅降低IO,之后主查询通过ID范围过滤,效率极高,就像先用无人机侦察,再派快递车直达!不过这有局限性,如果用户跳页,那大叔就抓瞎了,所以我还有第二把妖刀~”:“在你的努力之下,数据库大叔表示这个班他还可以继续上,我们小试牛刀结束,下面要给你上点强度了,嘿嘿嘿”“先让索引精灵快速定位到第9,000,000条的位置(只查ID),再让大叔精准抓取”(邪魅一笑):"我有两把妖刀——
2025-05-16 14:07:49
287
原创 决战紫禁之巅之synchronized和ReentrantLock
但自从Java 6之后,JVM对synchronized做了很多优化,比如引入了“偏向锁”、“轻量级锁”和“重量级锁”的机制,性能已经大幅提升。:JVM对synchronized做了很多优化,比如偏向锁、轻量级锁等,在低竞争的场景下,synchronized的性能已经足够好。而复杂场景,存在高并发和激烈的锁竞争,则需要更灵活的控制,比如超时、中断、公平锁等,我会选择ReentrantLock。阳仔:总的来说,简单场景,没有很高的并发和竞争情况,我更喜欢用synchronized,因为代码简洁,不容易出错。
2025-03-14 22:43:51
725
原创 前任volatile的内在美
不过,在讲这个之前,我得先吐槽一下:单例模式就像是单身狗的生活,看似简单,但一不小心就会出问题!比如,两个线程同时调用 getInstance(),都发现 instance 是 null,然后各自创建一个实例,结果就出现了两个单例对象。每次调用 getInstance() 都要加锁,但实际上只有在第一次创建实例时才需要加锁,后续的调用根本不需要锁。阳仔: 这个实现在大多数情况下是没问题的,但在某些极端情况下,可能会因为指令重排序而导致问题。它的核心思想是:先检查一次,如果实例不存在,再加锁创建实例。
2025-03-05 22:25:56
815
原创 volatile是我的前任?
举个例子吧!假设你和你的室友共用一台冰箱。你偷偷把最后一瓶可乐喝掉了,但你室友不知道,还在疯狂找可乐。这就是可见性问题——一个线程修改了数据,另一个线程却看不到最新的值。哈哈,这个例子很接地气!那volatile怎么解决这个问题呢?volatile就像是给冰箱贴了个公告:“可乐已被喝光,勿再寻找!” 每次你修改了volatile变量,都会强制把新值刷到主内存,而不是只存在线程的本地缓存里。这样,其他线程每次读取这个变量时,都会去主内存里拿最新的值,而不是用自己缓存里的旧值。volatile。
2025-03-03 23:08:29
835
原创 minio节点pending和数据不一致问题
部署minio的时候,调度策略设置问题,导致pod被调度到了同一个节点上,因此添加了pod的反亲和,并重启了pod之后,对该pod重新调度选择节点,结果该minio的pod,一直处于pending状态。虽然添加了pod的反亲和,但是minio的对应pvc还存在,导致pod重启的时候,还是会尝试调度到原先的节点,但是该节点由于已经有了一个pod,在新的反亲和的规则下,pod冲突了。这里,我是直接删除的各节点数据,但是对于大多数场景下,数据不可以直接清理,这时需要如何恢复,还需要进一步研究学习。
2024-08-20 10:22:11
496
1
原创 cdh集群hdfs代理用户实现
需求:作为cdh集群的管理和维护人员,不想给使用的客户hdfs用户及kebros认证文件,因此另创建用户对hdfs用户进行代理。1、cm配置集群core-site.xml配置文件,并部署至各机器: hosts属性值为允许代理的主机地址;groups属性值为用户可以代理的用户组;users为属性值为用户可以代理的用户名。所有属性值可填多个,用“,”隔开,“*”则为全部适配。2、对于kebros认证的环境,代理用户需要有认证文件才能进行代理。3、使用kinit进行代理用户登陆,输入命令expert H
2021-09-13 13:27:41
671
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人