随笔分类 -  Java

摘要:Java SPI思想梳理 为什么说java spi破坏双亲委派模型? - 大宽宽的回答 - 知乎 深入理解 Java 中 SPI 机制 阅读全文
posted @ 2021-01-12 20:34 myseries 阅读(487) 评论(0) 推荐(0) 编辑
摘要:传送门: https://mp.weixin.qq.com/s/EZejQam6n_qU5ZLDOv82Rg 阅读全文
posted @ 2020-12-31 16:46 myseries 阅读(337) 评论(0) 推荐(0) 编辑
摘要:(1)wait为什么要在同步块中使用? 首先wait和notify方法是Object类中的 至于为什么它们是放在Object,我们稍后再分析; wait为什么要在同步块中使用? 仔细回顾一下,如果wait()方法不在同步块中,代码的确会抛出异常: public class WaitInSyncBlo 阅读全文
posted @ 2020-10-30 17:03 myseries 编辑
摘要:出处: Java字节码技术(一)static、final、volatile、synchronized关键字的字节码体现 static、final、volatile关键字 static:static修饰的变量被所有类实例共享,静态变量在其所在类被加载时进行初始化,静态方法中不能引用非静态变量或函数 f 阅读全文
posted @ 2020-10-29 15:06 myseries 阅读(614) 评论(0) 推荐(0) 编辑
摘要:出处: https://mp.weixin.qq.com/s/HH4ov97JkukLFg4EyPuzsQ 那在编程世界里,「锁」更是五花八门,多种多样,每种锁的加锁开销以及应用场景也可能会不同。 如何用好锁,也是程序员的基本素养之一了。 高并发的场景下,如果选对了合适的锁,则会大大提高系统的性能, 阅读全文
posted @ 2020-10-28 14:46 myseries 阅读(686) 评论(0) 推荐(0) 编辑
摘要:接着上篇内容 函数式编程接口 从上面的代码例子可以看出,我们使用Lambda表达式创建线程的时候,并不关心接口名,方法名,参数名。我们只关注他的参数类型,参数个数,返回值。 JDK原生就给我们提供了一些函数式编程接口方便我们去使用,下面是一些常用的接口: 简单说明一下: 表格中的一元接口表示只有一个 阅读全文
posted @ 2020-10-25 16:11 myseries 阅读(1037) 评论(0) 推荐(1) 编辑
摘要:开局一张图,内容全靠摘录... 一:概述 什么是lambda表达式? lambda的语法规则 为什么需要引入lambda表达式? 什么是lambda表达式? 名词解释:lambda,其实是数学符号中的 λ,一个希腊字母。拉姆达 Lambda(大写Λ,小写λ),是第十一个希腊字母;在计算机术语中,La 阅读全文
posted @ 2020-10-25 15:46 myseries 阅读(4014) 评论(0) 推荐(1) 编辑
摘要:想看几个例子的效果: public class LockSupportTest { public static void main(String[] args) { Thread t = new Thread(() -> { for(int i = 0; i < 10; i++) { System. 阅读全文
posted @ 2020-08-08 16:02 myseries 阅读(373) 评论(0) 推荐(1) 编辑
摘要:守护线程与用户线程 用户线程:我们平常创建的普通线程。 守护线程:用来服务于用户线程;不需要上层逻辑介入 java线程分为守护线程和非守护线程,当java jvm检测主线程或其他子线程执行完之后,守护线程也会马上停止执行,我们可以使用Thread.setDaemon(ture或false)来设置一个 阅读全文
posted @ 2020-07-25 10:41 myseries 阅读(3013) 评论(0) 推荐(0) 编辑
摘要:1:自动装箱、拆箱 例子: Integer a = 10; //this is autoboxing //上面的操作其实就是下面这个,编译器会帮你自动转,不用手动 Integer b = Integer.valueOf(10); //under the hood 看下Integer中valueOf( 阅读全文
posted @ 2020-05-27 17:16 myseries 阅读(310) 评论(0) 推荐(0) 编辑
摘要:题目: import java.lang.ref.WeakReference; import java.util.WeakHashMap; public class Test1 { public static void main(String[] args) { String val = test( 阅读全文
posted @ 2020-05-15 15:38 myseries 阅读(375) 评论(0) 推荐(1) 编辑
摘要:代码实例: 问题:为什么testRunntimeException()方法没有出现编译错误提示,而testCheckedException()方法却出现unhandle exception? 分析: Excepiton分两类:checked exception、runtime exception;直 阅读全文
posted @ 2020-05-15 15:11 myseries 阅读(756) 评论(0) 推荐(0) 编辑
摘要:出处: Java编程如何高效利用CPU缓存? 引言 首先我们来看一个Java的例子: public class Main { static long[][] arr; public static void main(String[] args) { arr = new long[1024 * 102 阅读全文
posted @ 2020-04-14 18:20 myseries 阅读(1716) 评论(0) 推荐(1) 编辑
摘要:出处: Java并发工具类之LongAdder原理总结 LongAdder实现原理图 高并发下N多线程同时去操作一个变量会造成大量线程CAS失败,然后处于自旋状态,导致严重浪费CPU资源,降低了并发性。既然AtomicLong性能问题是由于过多线程同时去竞争同一个变量的更新而降低的,那么如果把一个变 阅读全文
posted @ 2020-04-14 17:30 myseries 阅读(2062) 评论(0) 推荐(0) 编辑
摘要:问题: sleep方法没有释放锁:不让出资源 wait方法释放了锁:使得其他线程可以使用同步控制块或者方法 sleep不释放锁 线程是进入阻塞状态还是就绪状态? sleep是不是还占着CPU,是互斥还是同步? 作者:大宽宽链接:https://www.zhihu.com/question/23328 阅读全文
posted @ 2020-03-22 22:54 myseries 阅读(1498) 评论(0) 推荐(0) 编辑
摘要:问题:Java里一个线程调用了Thread.interrupt()到底意味着什么? 还有就是Thread.interrupted()会清除interrupted status意味着什么呢?是线程恢复了吗?这里实在搞不懂 概念 要弄清阻塞与中断的关系,首先得弄清楚什么叫做阻塞,什么叫做中断。 阻塞表示 阅读全文
posted @ 2020-03-22 22:33 myseries 阅读(6888) 评论(0) 推荐(1) 编辑
摘要:出处: https://zhuanlan.zhihu.com/p/62534874 动态代理。这四个字一出来,估计很多初学者已经开始冒冷汗。动态代理之所以给人感觉很难,有三点原因: 代码形式很诡异,让人搞不清调用逻辑 用到了反射,而很多初学者不了解反射 包含代理设计模式的思想,本身比较抽象 尽管动态 阅读全文
posted @ 2020-03-16 12:45 myseries 阅读(374) 评论(0) 推荐(0) 编辑
摘要:出处: https://zhuanlan.zhihu.com/p/62660956 主要内容: 前情提要 接口创建对象的可行性分析 动态代理 Proxy.getProxyClass()的秘密 编写可生成代理和可插入通知的通用方法 类加载补充 前情提要 假设现在项目经理有一个需求:在项目现有所有类的方 阅读全文
posted @ 2020-03-16 12:43 myseries 阅读(367) 评论(0) 推荐(0) 编辑
摘要:出处: https://zhuanlan.zhihu.com/p/63126398 介绍完JDK动态代理,今天和大家一起做个小案例:模拟Spring的事务管理。 主要内容: 熟悉的陌生人 山寨AOP事务需求分析 AOP事务具体代码实现 熟悉的陌生人 面试官如果问“请你谈谈你对Spring的理解”,估 阅读全文
posted @ 2020-03-16 12:42 myseries 阅读(605) 评论(0) 推荐(0) 编辑