面试题
.守心.
这个作者很懒,什么都没留下…
展开
-
Variable used in lambda expression should be final or effectively final
在lambda表达式或匿名内部类中使用的外部变量应该加上final修饰符,因为java 8 新特性导致一些外部变量没有加final修饰符,依然可以在lambda表达式或匿名内部类中使用。在Java中,参数之间的传递是值传递,不管是实例变量还是数组,在传递的过程中传递的都是引用,并且引用并没修改(满足Lambda表达式访问外部变量一个非常重要的限制:就是变量不可变),所以当前实例变量的引用依然是隐式final修饰,在lambda表达式中修改的是引用指向的值,并没有修改引用。2、为什么外部变量加了修饰符。原创 2022-12-13 16:05:18 · 983 阅读 · 0 评论 -
一张图看懂finalize()执行流程
原创 2022-04-06 15:47:53 · 270 阅读 · 0 评论 -
一张图看懂分库分表
原创 2022-04-06 15:46:49 · 260 阅读 · 0 评论 -
一张图看懂线程池
线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。通过继承线程池并重写线程池的beforeExecute,afterExecute和terminated方法,我们可以在任务执行前,执行后和线程池关闭前干一些事情。largestPoolSize:线程池曾经创建过的最大线程数量。如等于线程池的最大大小,则表示线程池曾经满了。上面的流程分析让我们很直观的了解的线程池的工作原理,让我们再来看看源代码是如何实现的。通过线程池提供的参数进行监控。原创 2022-04-06 15:45:44 · 101 阅读 · 0 评论 -
一张图看懂java类加载
原创 2022-02-20 20:23:27 · 231 阅读 · 0 评论 -
一张图看懂Java集合
原创 2022-02-20 20:22:41 · 231 阅读 · 0 评论 -
一张图看懂JVM
原创 2022-02-20 20:21:27 · 941 阅读 · 0 评论 -
volatile随笔
1 内存的分类1 操作系统层面 : 操作系统内存 本地内存 native memory都属于物理内存 (内存条)2 JVM层面 : 堆 方法区 虚拟机栈 本地方法栈 程序计数器都属于物理内存上的一个内存池3JMM层面 : 主内存 本地内存本地内存 = 虚拟机栈主内存 = 堆 + 方法区2 volatile 作用1 保证可见性2 禁止指令重排(保证有序性)3 不保证原子性JMM内存模型八种操作3 volatile 如何保证有序性volatile 禁止指令重排,保证原创 2020-11-05 21:53:49 · 86 阅读 · 0 评论 -
MySql随笔
一 锁概念1 加读锁 sql语句 + lock in share mode2 加写锁 sql语句 + for update普通的delete 和update语句自动加写锁insert 语句加隐式写锁,当在插入语句时有其他的事务对这一行数据进行加锁则会激活写锁进行阻塞锁冲突读锁 : 共享锁(读锁可以加无数把)写锁 : 排它锁 (写锁只可以加一,读写锁也冲突)普通的select语句没有锁,可以绕过锁读取数据二 行锁MySQL(inno原创 2020-11-02 21:06:25 · 168 阅读 · 0 评论 -
Spring依赖注入的方式
1 手动注入(xml)底层采用1 set方法2 构造方法2 自动注入2.1 XML形式自动注入<bean autowire="byName" bean/> 属性设置在类中需要set方法,以set方法的set之后的字符串作为key,去容器当中查找bean对象并且采用放射的调用set方法进行注入<bean autowire="byType" bean/> 属性设置在类中需要set方法,以set方法的参数类型到容器当中去查找bean如果有多个b原创 2020-11-01 19:52:37 · 587 阅读 · 0 评论 -
HsahMap 和 ConcurrentHashMap(1.8)
ConcurrentHashMapput()方法 final V putVal(K var1, V var2, boolean var3) { if (var1 != null && var2 != null) { 1 int var4 = spread(var1.hashCode()); int var5 = 0; ConcurrentHashMap.Node[] var6 = thi原创 2020-10-29 21:47:23 · 143 阅读 · 0 评论 -
Spring循环依赖的问题
bean : 被Spring管理的对象bean的生命周期1 扫描类:每一个类2 BeanDefinition : 将扫描的每一个类信息封装入一个BeanDefinition,然后将每一个BeanDefinition放入BeanDefinitionMap (属于BeanFactory类)3 BeanFactoryPostProcessor : 处理 BeanFactory4 推断构造函数,根据BeanDefinition来创建原始对象5 属性注入6 Aware Init7 BeanPostP.原创 2020-10-26 21:37:12 · 116 阅读 · 0 评论