复习:
1、 单例模式:在全局过程中只存在唯一的实例- - -将构造方法私有化,提供本类的静态对象- - - 饿汉式、懒汉式
2、 套接字:用于网络传输的机制- - -本质上就是在网络上传输的流
a) UDP:基于流。不建立连接,不可靠,传输熟读较快。在传输的时候会对数据进行封包,每一个包不超过64K。适用于对速度要求较高而对可靠性要求较低的场景
b) TCP:基于流。建立连接,经过三次握手,可靠、输出速度相对较慢。在传输数据的时候不限制数据的大小。适用于对可靠性要求较高但是对速度要求较低的场景
3、 断言:对结果进行预测判断- - - assert。在Java中,需要添加-ea来开启断言
反射:
反射实际上是动态产生对象的过程。
Class – 代表字节码的类 – 代表类的类
Method – 代表方法的类
Constructor – 代表构造方法的类
Field – 代表属性的类
Annotation – 代表注解的类
Package – 代表包的类
获取Class对象:
- 通过类名.class来获取对应类的字节码对象
- 通过对象.getClass()来获取对象的实际类型所对应的字节码文件
- 通过Class.forName(类的全路径名)来获取指定类的字节码对象
注意:
反射的特点打破类的封装,还会跳过泛型的检查
class类中的方法:
Field类中的方法:
修饰符:(Modifier类)
利用反射实现clone
简单clone:
全部实现:
注解
@Override - - - 重写
@SuppressWarnings - - - 压制警告
“unchecked”- - 泛型强转,
”rawtypes” - -有泛型没有声明,
“unused” - - 有变量没有经过计算,
“static-access” - - 通过对象调用了静态方法或静态属性
“deprecation” - - 已过时
@Deprecated - - -已过时
解释说明程序 - - - 给机器看的
注解中的属性类型可以是基本类型、String、Class、其他注解、枚举以及他们的一维数组的形式。
如果一个注解中只有一个属性,并且这个唯一的属性的名字为value,那么在使用的时候可以省略属性不写
元注解 – 对注解进行注解
@Target - - - 限定注解的使用范围
@Retention - - - 限定注解的生命周期
@Documented - - - 表示让这个注解也生成到文档中
@Inherited- - - 表示这个注解是否可以被继承。
内存以及JVM参数:
1、栈内存 - Stack – 计算- 用于执行代码块以及存储变量 – 每一个线程独有一个栈内存
2、堆内存 – Heap space – 存储 – 存储的是对象 – 被所有线程所共享
1)新生代 – Young Generation – 一般用于存储刚创建的对象
a) 伊甸园区 – Eden – 一般刚创建的对象放入伊甸园区
b) 幸存区 – Survivor – 对象经过一次回收如果存在会放入幸存区; From space; to space - - 采用的是Mark – sweeping 回收算法
2)老生代 – Old Generation – 一般存储一些不轻易产生变动的对象
3)永久代 – Permanent – 根据不同的jvm,称呼不一样- - 实际上就是方法区
3、方法区 – Method area- 存储 – 存储的字节码(类)以及常量(字面量和自定常量)- -被所有线程所共享。
4、本地方法栈 – native stack – 计算本地方法(被native修饰的方法,它的方法体使用其他语言来完成的)- - 每一个线程独有一个本地方法栈。
5、PC计数器 – programming counter – 负责当前线程内的指令的调配及计数的- - - 每一线程所独有PC计数器