2.2k2 分钟

# Java 基础 - 面向对象 # 三大特性 封装 利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生关系。用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象。 优点: 减少耦合:可以独立地开发、测试、优化、使用、理解和修改 减轻维护的负担:可以更容易地被程序员所理解,并且在调试的时候可以不影响其他模块 有效地调节性能:可以通过剖析确定哪些模块影响了系统的性能 提供软件的可重用性 降低了构建大型系统的风险:即使整个系统不可用,但是这些独立的模块却有可能是
5.6k5 分钟

Java 泛型是从 jdk1.5 开始加入的,Java 泛型的实现采取了 “伪泛型” 的策略,即 Java 在语法上支持泛型,但是在编译阶段会进行所谓的 “类型擦除”,将所有的泛型表示 (尖括号中的内容) 都替换为具体的类型 (其对应的原生态类型),就像完全没有泛型一样。 引入泛型的意义在于: 适用于多种数据类型执行相同的代码 (代码复用) private static int add(int a, int b) { System.out.println(a + "+" + b + "=" + (a + b));
3k3 分钟

# Java 并发 - Java 中所有的锁 Java 中往往按照是否含有某一特性来定义锁,通过特性将锁进行分组归类。 # 乐观锁 VS 悲观锁 # 概念 ​ 悲观锁:在获取数据的时候会先加锁,确保数据不会被别的线程修改。Java 中,synchronized 关键字和 Lock 的实现类都是悲观锁。 ​ 乐观锁:认为自己在使用数据时不会有别的线程修改数据,所以不会加锁,只有在更新数据的时候回去判断之前有没有其它线程更新了这个数据。如果没有被更新,则将自己家的数据写入,如果已经被更新,则根据不同的实现方式去执行不同的操作(例如报错或者自动重试)。乐观锁是 Java 中通过无锁编程来实现的,最