- 博客(6)
- 收藏
- 关注
原创 MAT使用教程
MAT使用教程参考:利用内存分析工具(Memory Analyzer Tool,MAT)分析java项目内存泄露简单示例1.构建一个内存泄漏场景class Solution { public static void main(String[] args) { Vector v = new Vector(10); while (true) { Object o = new Object(); v.add(o);
2021-04-29 18:03:31
1971
原创 关于Redis
关于Redis1.为什么用缓存?2.单线程?3.Redis的数据结构1.为什么用缓存?使用缓存主要原因:1.高性能:查DB比较慢,读缓存更快,提高系统性能2.高并发:mysql 单机支撑到 2000QPS 也开始容易报警,缓存走内存,内存天然支持高并发,单机支撑的并发量轻松一秒几万十几万2.单线程?Redis优化成了多线程?实际只是对io操作的优化。Redis 的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程。多线程的优化只涉及io,参考NIO模型,而内存还是基于单线
2021-04-29 14:31:32
131
原创 幂等问题
幂等:就是指多接口的多次调用所产生的结果和只调用一次是一致的。参考:分布式系统—幂等性设计场景1.业务上比如支付两次,重复扣款,重复插入数据等2.消息队列中重复消费3.web接口上失败重试http协议幂等性幂等:get、put、delete非幂等:post常见保证幂等的手段1.MVCC(乐观锁)带条件更新,判断是否是期待的版本号2.唯一索引(RabbitMQ、数据库)3.悲观锁4.select+insert先查询一下是否执行过,再进行更新(核心高并发不要用这种方式)5.状态
2021-04-27 17:15:19
143
原创 消息队列MQ
1.为什么使用消息队列解耦:IM会话状态信息/班表消息(具体场景说明),有许多应用需要这个状态消息,上游应用不应该维护需要给哪些应用发送这些信息,采用发送消息的方式进行解耦。异步:短信、邮件通知等场景(非必须),A需要调用BCD三个接口写库,使用消息就不必等3个接口都写完(耗时从A+B+C+D减少为A+消息发送延时)削峰:高峰期系统拉取请求不会因为请求量高而挂掉(积压消息处理)2.消息队列缺点1.MQ挂了怎么办?消息高可用?2.重复消费?消息丢失?消息顺序性?3.数据一致性3.高可用典型的
2021-04-27 13:13:31
140
原创 Java知识点
可达性算法引用计数 VS 可达性分析引用计数:无法解决循环引用可达性分析: GC Root扫描,finalize只会被执行一次关于finalize:https://stackoverflow.com/questions/158174/why-would-you-ever-implement-finalizehttps://stackoverflow.com/questions/52879761/should-java-9-cleaner-be-preferred-to-finalization
2021-04-26 18:21:23
127
原创 学习资料收集
分布式系统公开课http://nil.csail.mit.edu/6.824/2020/index.htmlmapReduce翻译文献:https://www.cnblogs.com/fuzhe1989/p/3413457.htmlNIOhttp://gee.cs.oswego.edu/dl/cpjslides/nio.pdf计算机基础知识《深入理解计算机系统》《java并发编程实战》http://itmyhome.com/java-concurrent-programming-combat/
2021-04-15 17:31:24
82
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅