Java
文章平均质量分 72
思涛的博客
以前面向对象编程,现在面向产品编程!用细节与品质传达产品的善意!
展开
-
Java 局部类访问局部变量为什么必须添加 final 关键字
在JDK8之后,编译器不要求内部类访问的局部变量必须被 final 修饰,但是局部变量的值不能被修改(无论是方法中还是内部类中),否则编译器会提示编译错误。利用java查看编译后的字节码可以发现,编译器已经加上了 final 关键字。所以编译器会在内部类中生成一个局部变量的拷贝,这个拷贝的生命周期与内部类的对象相同,就不会出现上述的问题。但是这样一来就导致了其中一个变量被修改,两个变量值可能会不同的问题,为了解决这个问题,编译器就要求局部变量需要把final修饰,以保证两个变量的值相同。原创 2024-03-06 16:57:12 · 494 阅读 · 0 评论 -
Android Media3 ExoPlayer 如何正确设置缓存大小
Android Media3 ExoPlayer 如何正确设置缓存大小:赋值发生溢出后得到实际的数值,要不变成负数、零、或者变小了,这就解释了为什么会出现上面那个奇怪问题。这里抛砖引玉,其他类似播放器的缓存大小设置可能也会遇到同样的问题,所以需要小心对待,避免落入隐蔽的陷阱。原创 2024-01-13 18:31:21 · 1058 阅读 · 0 评论 -
SpringBoot获取完整的堆栈异常及异常堆栈日志简化
一般要想获取完整的堆栈信息,不要使用toString() ,另外getMessage() 方法可能获取的也是null。原创 2023-01-12 23:07:41 · 2357 阅读 · 0 评论 -
ThreadLocal用法与原理以及在Spring事务管理中的应用
ThreadLocal 是一个类名,但从字面意思理解,ThreadLocal也可以称为「线程局部变量」,也就是说,在某个线程运行的过程中,它往ThreadLocal这里类里填充的值或对象只属于当前这个线程,别的线程无法访问。假如我们现在有一个ThreadLocal对象,多个线程[A, B, C]同时运行, 它们都通过这个ThreadLocal对象存储了一个值,那么它们中任何一个线程在任何时刻取回的值一定就是当初自己设置的那个值,不会与其他线程发生错乱,也相当于数据和线程是绑定在一起了,起到了数据隔离的作用。原创 2022-10-31 22:50:58 · 2535 阅读 · 1 评论