03 2021 档案
摘要:什么是this逃逸? this逃逸是指在构造函数返回之前,其他线程持有了该对象的引用。 因为构造函数在构造一个对象,或者说new一个新对象的时候,有一个中间过程,称为半初始化过程,对象在初始化的时候发生了指令重排,导致当前对象还是默认值的时候就和对象句柄建立了连接,而这个对象在这个时候被其他线程读走
阅读全文
摘要:cas一定比悲观锁效率高吗? 不是的,以CAS为例,在资源高度竞争的情况下,线程会发现自己得到的资源总是在被快速的修改,此时线程会陷入“获取、修改、比较”的循环之中,在这个情况下,你无法确定线程需要在此种循环中花费多久。而如果采用悲观锁,每次修改花费的时间是相对固定的。 所以在资源经常被修改的时候还
阅读全文
摘要:java程序在执行的时候并不一定是按照顺序执行的,多条语句可能是先执行第五条再执行第一条之类的情况,但是他会遵守一个原则是单线程的数据最终一致性,也就是说在单线程情况下是不会有问题的。 乱序执行有什么好处呢? 好处就是程序整体的执行效率提高了,假设两个线程的情况,理论上A语句先执行,B语句后执行CP
阅读全文
摘要:两者的初始值不一致,因为二叉树最小深度求最小值,所以找到无子节点情况就返回depth,这个时候没有经过自增,但是二叉树最大深度求最大值的情况就一定会经过depth的自增,也就是找到没有子节点的情况后,depth还会自增1.所以初始要为0才是正确的。 二叉树的最小深度 //二叉树的最小深度 publi
阅读全文
摘要:public int coinChange(int[] coins, int amount) { //初始化dp表 int[] dp = new int[amount+1]; //因为是求最小值,所以默认值是一个无穷大,对于本题,amount+1也是无穷大 for (int i = 0; i < a
阅读全文
摘要:AOP是一种编程思想,面向切面编程。 作用? 常见使用场景,事务的管理一般会先开启事务,然后根据事务的执行情况判断是否需要回滚操作。可以发现开启事务、回滚或者结束事务是一个经常使用的代码逻辑,但是重复写肯定是个比较麻烦的事情,一般不这么做,如果专门抽象方法来处理的话,修改或者删除的时候也会很麻烦而且
阅读全文
摘要:Spring 启动时读取应用程序提供的 Bean 配置信息,并在 Spring 容器中生成一份相应的 Bean 配置注册表,然后根据这张注册表实例化 Bean,装配好 Bean 之间的依赖关系,为上层应用提供准备就绪的运行环境。其中 Bean 缓存池为 HashMap 实现 beanFactory是
阅读全文

浙公网安备 33010602011771号