javaSE——补充知识点

雨燕双飞 提交于 2019-11-27 02:22:46

补充

1 里氏替换原则

里氏替换原则:指的是任何基类可以出现的地方,子类一定可以出现。
定义1:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程序p的行为没有发生变化,那么类型T2是类型T1的子类型。
定义2:所有引用基类的地方必须能透明地使用其子类对象。

通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。
它包含以下4层含义:
1.子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
2.子类中可以增加自己特有的方法。
3.当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
4.当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

====================================================================

可以参考一下,设计模式六大原则:
http://wiki.jikexueyuan.com/project/java-design-pattern-principle/principle-2.html

2 注解

3 DTD

4 JDK7,JDK8,JDK9比较

5 ThreadLocal

ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。

ThreadLocal的核心机制
1.每个Thread线程内部都有一个Map。
2.Map里面存储线程本地对象(key)和线程的变量副本(value)
3.但是,Thread内部的Map是由ThreadLocal维护的,由ThreadLocal负责向map获取和设置线程的变量值。

Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。所以ThreadLocal的应用场合,最适合的是按线程多实例(每个线程对应一个实例)的对象的访问,并且这个对象很多地方都要用到。

参考博客:
https://www.jianshu.com/p/98b68c97df9b
https://www.cnblogs.com/dolphin0520/p/3920407.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!