![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试相关
文章平均质量分 66
面试专栏
实名上网张瀚文
24届求职中,开源万岁,我爱开源!
展开
-
线程安全(有点乱哈)
失败,将计数器从0设置为1失败,当前持有锁的线程==当前线程,将计数器加1,如果等于,则是返回失败。强引入用在tl,map都被回收了,但是强引用没有被回收,这时导致内存泄漏,value成为一个永远无法被访问,无法被回收的对象。sys锁机制,1.5以前,通过cas指令,默认sys是重量级锁,1.6以后,对锁进行了升级,sys锁优化。entry是一个弱引用,有四种引用类型,强引用,软引用,和虚引用,关联到垃圾回收机制。lock是java代码实现的,api是显示锁,sys是jvm管理的,就是隐形锁。原创 2024-07-10 20:11:42 · 921 阅读 · 0 评论 -
树的结构(b,b+树)
大规模数据存储,二叉树树的深度过深,导致查询效率低下,磁盘io读写过于频繁,导致查询效率低下,多叉树能够解决这个问题。插入的数据总是比已有的数据大,子树会向一边切斜,树的层次变深,形成链表结构,出现了平衡二叉树。根节点和叶子节点是黑色,内部节点是红色和黑色较低,叶子节点必须是黑色,根节点只能是黑色。无论线性表,栈还是队列,都是一对一,查询的时候,效率较低,数据量比较的大的情况。二叉排序树,平衡二叉树,赫夫曼树,红黑树,都是属于二叉树。B树比较矮,分叉越多,树越矮,io次数较少,搜索性能较高。原创 2024-07-11 16:02:11 · 282 阅读 · 0 评论 -
线程并发库复习
什么是进程:进程是内存分配的基本单位,它是程序执行时的一个实例,会被放到进程就绪队列,等进程调度器选择它,给它时间片,它才会运行。什么是线程:线程是程序执行时的最小单位,进程由多个线程组成,线程间共享进程所有资源,每个线程有自己的栈和变量。让出cpu,会放弃锁资源。线程池中的数,有一个大概算法,cpu密集型应用,线程池大小设置为N+1,如果是io密集型:操作文件,线程池大小设置为2N+1.new新建状态,Rybbavl就绪状态,等待时间片,running运行中状态,run方法结束,线程销毁(死亡状态)。原创 2024-07-09 19:21:02 · 703 阅读 · 0 评论 -
hash冲突解决方案
开发寻址法:通过计算hash值hash(key)=p,已经有值,对hash再一次hash。再散列法:提前准备好若干个hash函数,换一种hash函数,再换种函数。建立公共溢出区:把hash表分为基本表和溢出表,冲突了放到溢出表中。hash算法应用:文件校验,数字签名,计算存储位置,登录加密。原创 2024-07-11 17:14:18 · 72 阅读 · 0 评论