synchronized关键字与锁

在单线程环境下,所有的代码都是串行执行的,共享资源在这种情况的读写操作不会有安全问题的,但是单线程环境已经不使用于当前所处的时代了,现如今即便是一两千元的主机也是多核多线程的,如果在这种大环境下依然使用单线程处理程序,势必带来资源上的浪费和性能上的降低。

多线程可以更快的运行代码,带来了在性能上质的提升,但是操作多线程也为编写代码引入了跟多的问题,因为不同的线程能被不同的CPU内核并行执行,导致在读写一些共享资源时会产生一些副作用。

Java浅拷贝与深拷贝

Java中的对象拷贝(Object Copy)指的是将一个对象的所有属性(成员变量)拷贝到另一个有着相同类类型的对象中去。

GitHub 仓库批量删除

Github 仓库不支持批量删除,需要一个一个手动删除,如果项目少还好,但是项目多了,删起来就很麻烦,这个工具就是使用Selenium框架,自动化删除GitHub仓库。

Spring Boot 项目生成工具

这是一个用于快速生成Spring Boot项目的工具,快速构建中小型API、RESTful API项目,稳定、简单、快速,使我们摆脱那些重复劳动,专注于业务代码的编写,减少加班。

类加载过程

在编写代码时,编辑的文件名后缀为.java,我们需要将其编译成.class为后缀的文件,之后加载到虚拟机中才能被运行和使用。

那么类是如何被加载的呢?

垃圾回收

如果Java虚拟机创建的对象无论是否被使用都不会得到释放从而占满了所有的内存空间,那么在创建新的对象时,将会产生OutOfMemoryException。

JVM内存模型

Java RunTime Data Area(Java 运行时数据区) 分为:

  • Java Heap(Java堆)
  • Method Area(方法区) (Java 8 之前)
  • Meta Space(元空间) (Java 8 之后)
  • VM Stack(虚拟机栈)
  • Native Methiod Stack(本地方法栈)
  • Program Counter Register(程序计数器)。