- 博客(7)
- 收藏
- 关注
原创 线程锁synchronized和Lock以及一些区别
synchronized(sin捆莱茵斯特)互斥锁和Lock对比:两者都是可重入锁 可以避免单线程内重复加锁死锁情况 S包裹代码加默认非公平锁(在参数后加上true是公平锁 出异常自动释放锁 无法响应中断 lock.lock()/unlock()随时加锁解锁 出异常需手动释放锁,tryLock()可以尝试申请锁很公平,lockInterruptibly()被阻塞的线程可以终止等待。依赖AQS 代码可扩展。公平锁:多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。
2023-10-24 17:03:09
46
原创 Zookpeer和Kafka
分区分配策略默认为Range:平均轮询分配topic的分区余数分到第一个消费者,topic多的情况第一个消费者能分到更多分区RoundRobin:打乱所有topic的分区依据hash值分给消费者 会造成消费混乱Sticky:粘性分配尽可能均匀;offset偏移量 存在分区的log文件末唯一且递增的64字节的序号,是kafka确定消息是否被消费过的标识 递增的数字((高水位HW,标识了一个特定的offset消费者只能拉取到这之前的消息) 保存在消费者本地和broker中 数据不一致同步+异步提交。
2023-10-19 14:41:51
67
1
原创 双亲委派模型
类需要被加载时先委派给父类加载器,如果父类加载器无法加载则继续向上委派最终由启动类加载器进行加载,如果启动类加载器仍然无法加载就会抛出ClassNotFoundException.实现了类加载的层次化管理,保证了类的唯一性和安全。扩展类加载器ExtensionClassLoader是AppClassLoader的父类加载器,负责加载%JAVA_HOME%/Iib/ext文件夹下的jar包和class类。双亲委派模型(parents的直译多代相传)规定除顶层启动类加载器外的类加载器都应由自己的父类加载。
2023-09-14 13:30:44
49
1
原创 Redis内存淘汰策略和惰性删除
定期删除 内存定期随机清理 每秒花费固定的CPU资源维护内存 随机抽查,重点抽查。定时删除 节约内存,无占用 不分时段占用CPU资源,频度高 时间换空间。惰性删除 内存占用严重 延时执行,CPU利用率高 空间换时间。##内存占用 CPU占用 特征。在redis中会使用惰性删除和定期删除两种方式。
2023-09-14 11:29:14
87
1
原创 Java八股文总结(线程分布式)
ThreadLocal作用于线程内独立的数据,线程访问同一个threadlocal内的不同map,key就是threadlocal val是各自线程存的值,get和set会调用currentThread()获取本线程的对象,底层用的ThreadLocalMap内的Entry,根据hash判断位置和解决hash冲突,entry的key就是TheadLocal继承了WeakReference(弱引用)所以用完要remove掉 弱引用gc发现就会回收map的key为nullvalue还存在导致内存泄漏。
2023-09-14 11:26:33
99
1
原创 HashMap1.7和1.8的put()自总结以及线程安全的ConcurrentHashMap
HashMap1.7和1.8的put()自总结以及线程安全的ConcurrentHashMap
2022-07-12 11:29:13
340
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人