wudangwangye level
获赞
276
粉丝
218
关注
1
看过 TA
1328
门头沟学院
2026
Java
IP属地:北京
暂未填写个人简介
私信
关注
04-17 14:19
已编辑
门头沟学院 Java
线程池:线程池的目的是为了避免线程重复创建和销毁,线程池可以设置最大线程池和阻塞队列任务数。同时当任务进来阻塞队列时候,看那个核心线程有空,去拿出来任务。当线程都在工作,任务会放在队列内排队。若队列也满了,这时候新来任务,会创建临时线程。临时线程等于最大线程数-核心线程。所以说可能出现后来先执行的情况。当临时线程也满了此时源码写着false然后是拒绝创建。线程存活时间:超出的临时线程的空闲存活时间。线程过期要看,线程一定时间没有从工作队列中获取新任务,线程会被标记且回收,此时可用线程数加一。拒绝策略:任务无法被线程池执行的处理策略线程淘汰策略:先进先出(FIFO, First In First Out)描述:最先创建的线程最先被淘汰。优点:实现简单。缺点:不考虑线程的使用频率或重要性,可能导致频繁使用的线程被淘汰。 最近最少使用(LRU, Least Recently Used)描述:淘汰最近最少被使用的线程。优点:相对公平,能够保留最近使用频繁的线程。缺点:需要维护每个线程的使用时间戳,增加了开销。 最不经常使用(LFU, Least Frequently Used)描述:淘汰使用频率最低的线程。优点:适合处理长期不使用的线程。缺点:可能会保留一些短期内频繁使用但长期不再使用的线程。随机淘汰(Random Eviction)描述:随机选择一个线程进行淘汰。优点:实现简单,开销低。缺点:无法保证淘汰的合理性,可能会淘汰重要线程。原子性就是一次执行全部执行,一次拒绝全部拒绝,无法在分割了。可见性:线程在修改过程中,其他线程能看见。jmm内存模型:主内存和线程的工作内存,线程基本上都是修改工作内存,如果工作内存和主内存没有同步就会失去可见性,如果加锁了,这会工作内存就能看得见了。CAS:compaer and swap,先看是不是目标值,不是就替换。内存位置,预期值,新值,内存值与预期值匹配,则内存位置的值更新为新值,否则操作失败。同时旧值存到寄存器中,一般是内存值和寄存器互换值。自旋锁:线程在获取锁时候,如果背其他获取了,不断判断能不能获取,知道锁被获取才退出循环。ABA问题:就在上述问题中间,看似没变化,实际上发生了修改。锁升级问题:这里太底层了,想去大厂的兄弟们可以看下,比较难以理解其实,JVM中的锁升级是一个逐步优化的过程,具体步骤如下:无锁状态当一个对象刚被创建时,它处于无锁状态。 此时没有任何线程持有该对象的锁。偏向锁(Biased Locking)只有一个线程访问对象时。JVM会将线程ID记录在对象头中,后续该线程可以直接获取锁,无需同步操作。减少了锁的开销,适合单线程重复访问的场景。当另一个线程尝试获取锁时,偏向锁会被撤销,升级为轻量级锁。轻量级锁(Lightweight Locking)多个线程交替访问对象,但没有激烈的竞争。JVM会在当前线程的栈帧中创建一个锁记录(Lock Record),然后通过CAS操作将对象头中的锁指针指向该锁记录。避免了线程阻塞,减少了上下文切换的开销。当CAS操作失败(即锁竞争激烈)时,轻量级锁会升级为重量级锁。重量级锁(Heavyweight Locking)多个线程激烈竞争锁。JVM会将锁交给操作系统管理,线程会进入阻塞状态,等待锁的释放。适合高并发场景,确保线程安全。增加了上下文切换和线程调度的开销。Reentrantlock公平锁与非公平锁:公平锁(Fair Lock)多个线程按照申请锁的顺序依次获取锁,即先到先得。避免了线程饥饿问题,所有线程都有机会获取锁。性能较低,因为需要维护一个队列来记录线程的申请顺序。非公平锁(Non-Fair Lock)多个线程获取锁的顺序不一定是先到先得,允许插队。性能较高,因为减少了线程切换的开销。可能导致线程饥饿,某些线程可能长时间无法获取锁。排他锁与非排他锁(互斥锁和非互斥锁):排他锁和非排他锁的区别在于锁是否可以被多个线程共享排他锁(Exclusive Lock)也称为互斥锁(Mutex Lock),同一时刻只能被一个线程持有。写操作通常需要排他锁,以确保数据的一致性。其他线程必须等待锁释放后才能获取锁。 非排他锁(Non-Exclusive Lock)也称为共享锁(Shared Lock),同一时刻可以被多个线程持有。读操作通常使用非排他锁,以提高并发性能。多个线程可以同时获取锁,但写操作仍然需要排他锁。AQS是什么:可用构建锁和其他同步器,AQS用一个FIFO队列管理等待锁的线程,同时提供独占模式和共享模式的同步机制。
葬爱~冷少:武当王,校友诶
0 点赞 评论 收藏
分享
03-13 18:18
门头沟学院 Java
看到这么一句话,说那些很懒的人,过的很舒服;那些很勤快的人,过的很满足;焦虑的人无非是夹在二者之间的做仰卧起坐的人。仰卧起坐嘛,站不起来,躺不下去,累你的腰腹部,很多人其实也是这样,受不得清闲,忙的烦恼。按我个人而言的,有这么一句话说焦虑本质上是你的欲望和你的能力不匹配,我是忙碌过的,也是清闲过的,可我依旧焦虑,为何?我身边真实的案例,就是隔壁姐姐在外地打工然后家里小时候对她很好的老人过世了,她很难过,但她没有办法,难过是因为没花更多时间陪她,烦恼是要挣钱养家里人,鲁迅说:很多人在家中长辈生病时候不照顾陪伴,在快死了时候火急火燎的赶到家中,买些人参灌些汤药希望能多活几日,大体原因也是因为这个。我自己的话还是听以前人说的,父母在,不远游,愿意多花时间陪陪父母,我知道自己后面会很忙,我知道自己愿意做那满足之人,我这一生追求热烈而浪漫,我始终觉得不要温和的走进那个良夜。去追求自己所热爱追求自己所期望的才算是活着。人生不过了了几十载。求学已经耗费掉我1/3的时光,将来再花1/3去工作也许我没那时间和精力再去旅行。按照这方面而言也许我是清楚知道自己想要什么的,牛客上,b站,抖音大部分社媒基本上还是负面内卷较多,但是你上大学的目的是什么,你考研的目的是什么,考公的目的是什么,很多人没有自己的想法。或者说他被完全的训化而丧失了去追求的能力,或者说是勇气。我自己个人而言我读书就是为了挣钱。只要能挣钱,不犯法,和计算机一样辛苦但是钱多,我是愿意去干的,我身上没有那件长衫,或许说我从来就没穿上,很多人想读研,原因是身份,还是待遇,还是那什么什么,不重要,其实和考公一样的,都是围城,你喜欢就去做,最烦恼的人无非是那犹犹豫豫的人,总怕一脚踏空,实际上当你不得不前行的时候你问问自己,是我真想要前行吗?我真想读这个研?或者是我真想干这个活?是被逼迫还是自己强烈的意愿,也就是类似主观能动性。想做就做,事缓则圆。最差无非就是找不到工作,或者是没考上研,想读就再来一年。你人生只有这么点时间,多花点时间去打游戏去看书,去取悦接纳自己。我写这些不是让你摆烂或者让你躺平,我希望有人看了这篇理不通逻辑的文章之后能够去热烈的追求,能够去真实的活着,去做那个人生精彩的人。
0 点赞 评论 收藏
分享
03-14 09:48
已编辑
门头沟学院 Java
Redis的主要特点:高性能,持久化,原子操作,高可用性。Redis基本数据类型:字符串(String):缓存,计数器,这里面可以存字符串,整数,浮点数,哈希(Hash):存储对象,HSET存,HGET获取列表(List):消息队列,栈,队列:LPUSH,RPUSH,栈:LPOP,RPOP集合(Set):标签,好友关系,无序,有序集合(Sorted Set):排行榜,优先级队列,有序,集合都是每个元素关联一个数。Bitmaps:可用与位操作,适合存布尔值,HyperLogLog:可用于估算适合统计唯一值Redis的线程问题:他是单线程的,为了避免上下文切换和锁竞争。持久化问题,还有具体好处:RDB:快照,恢复速度快,可能丢失最后一次的数据,RDB触发条件:手写SAVE,BGSAVE,或者自动触发。AOF:写时复制,数据安全性高,文件体积大,恢复太慢。AOF重写机制:AOF通过创建一个AOF文件且包含当前数据集的最小操作集。Redis事务如何实现,支持回滚吗?Redis用MULTI,EXEC,DISCARD和WATCH命令支持事务且按顺序执行,不能回滚。发布/订阅模式:常用命令:SUBSCRIBE,PUBLISH,UNSUBSCRIBE,就是订阅,发布,un订阅,(取关,怎么好记怎么来)Redis的高可用和分布式问题:Redis Sentinel 是什么?哨兵模式,监控健康状态,自动转移故障同时更新主节点,主从复制需要replicaof命令。Redis Cluster 是什么?这个节点通信机制了解吗?这是集群模式,分布式解决方案,支持数据分片和自动故障转移同时选举出新的主节点。而且使用Gossip协议进行节点通信。Redis的性能问题:缓存穿透:这里放布隆过滤器。缓存雪崩:设置永远不过期,重启时候或者访问量少的时候备份,缓存击穿:这里放互斥锁,和永不过期。过期策略:定时删除,惰性删除,用EXPIRE命令设置过期时间。怎么用Redis实现分布式锁:一般使用SETNX命令实现分布式锁。Redis过期淘汰策略,内存不足淘汰策略:定时删除,和惰性删除。可用淘汰策略删除键,可用设置。Redis如何实现会话存储:一般使用字符串和哈希结构存。常用的命令:SET,GET,HSET,HGET,LPUSH,RPUSH,LPOP,RPOP,ZADD,SADD内存碎片:就是你内存分配和释放过程产生的碎片,可以用MEMORY PURGE清理。Redis数据倾斜:就是你数据不均匀,可以用CLUSTER REBALACE平衡数据。差不多,后面找到新的会重新加进去,看这篇就对了,小手点点赞,你也开心我也开心,很多时候可能说期望与现实落差很大,你可能从一个说了出来没人听过的小县城出来,一腔热血不远千里出门到省城去读书,家里人很高兴,因为你是小镇上唯二考上大学的人,但是当你见过社会的真实之后也许你会感叹,池塘的骄傲无非不过是海洋的边角料所以你得过且过,有那么一天突然想起来,哦,如果说我去做了会怎么样,有些东西还是去试一下的,就算周围人不理解你,就算他们被传统思维所囚禁,就算你觉得很难和他们沟通,这些也不重要,你这般年轻,为何不去做?加油啊,陌生人,但行好事,莫去焦虑了。
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务