Java_Volatile
Volatile是轻量级的synchronized,如果一个变量是用volatile,则它的成本低于synchronized,由于它不会引起线程上下文切换和调度。
当一个变量被定义为volatile之后,它将具备两种性质
- 保证该变量对所有线程的可见值。倘若某个线程对volatile修饰的共享变量进行更新,那么其他线程立马可以看到这个更新。因此所有线程取该变量值时,都是最新的值。
- 禁止指令重排序。
Volatile是轻量级的synchronized,如果一个变量是用volatile,则它的成本低于synchronized,由于它不会引起线程上下文切换和调度。
当一个变量被定义为volatile之后,它将具备两种性质
Java8由Oracle公司于2014年3月18号正式推出,JDK1.8中新增了许多全新的特性,支持函数式编程。
AOP(Aspect Oriented Programming) : 面向切面编程。是OOP(Object Oriented Programming,面向对象编程)的补充和完善。这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。
OOP通过封装,继承,多态等概念建立对象层次结构,从而实现对现实世界的一个模拟。OOP允许开发者定义一个总想的关系,但并不适合定义横向的关系。因此这会引起一个问题,比如日志功能,日志相关代码会横向散布在所有对象层次中,如安全性,异常处理等等功能也是如此,这种散布在各处的无关的代码被称为横切(cross cutting),在OOP设计中,导致了大量代码的重复,而不利于各个模块的重用。
数组:可以存放基本数据类型和对象,但是在使用上需要动态扩容。
容器 : 只能存放对象,也唤作集合,容器类是个大家族,常用的有ArrayList,LinkedList,HashMap等等,理解熟悉容器类才能更好的使用他们。
相比较C++需要在程序中自行处理内存的分配和回收。Java在JVM虚拟机上增加了GC机制,用以在合适的时间通过垃圾回收,回收不需要的数据,从而减少内存占用,避免OOM(Out Of Memory)。
掌握GC知识一方面可以帮助我们快速排查因JVM导致的线上问题,另一方面也可以帮助我们在Java应用发布之前合理地对JVM进行调优,提高应用的执行效率、可靠性和健壮性。