彭峰的博客
JVM方法调用 JVM方法调用
JVM方法调用方法调用的本质是根据方法的符号引用确定方法的直接引用 方法重写的本质 找到操作数栈顶的第一个元素所执行的对象的实际类型,记作C。 如果在类型C中找到与常量中的描述符合简单名称都相符的方法,则进行访问权限校验,如果通过则返回这个
2021-05-14
JVM运行时数据区域 JVM运行时数据区域
[toc] JVM运行时数据区域 每个线程:独立包括程序计数器、Java栈(虚拟机栈)、本地栈(Native Method Stack)。 线程间共享:堆、堆外内存(永久代或元空间、代码缓存) 栈是运行时的单位,而堆是存储的单位 栈解
2021-05-13
类文件加载子系统 类文件加载子系统
类文件加载子系统类的加载过程加载-> 验证 -> 准备 -> 解析 -> 初始化 加载阶段目的: 通过一个类的全限定名获取定义此类的二进制字节流 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 在内存
2021-05-12
Java代码执行流程 Java代码执行流程
Java代码执行流程Java源代码文件会被Java编译器解析成class的字节码文件。Java编译器会对.java文件进行词法分析和语法分析生成抽象语法树,进行语义分析生成注解语法树,最后通过字节码生成器生成字节码文件。 而字节码文件时可以
2021-05-11
原子性操作的实现 原子性操作的实现
原子性操作的实现CPU原子性操作的实现使用总线锁保证原子性:总线锁就是使用处理器提供的一个LOCK#信号,当一个处理器在总线上输出此信号的时候,其他处理器的请求将会被阻塞住,那么该处理器就可以独享内存 通过缓存锁定来保证原子性:内存区域如果
2021-05-04
Volatile关键字 Volatile关键字
VolatileVolatile的作用Volatile是JVM提供的轻量级的同步机制,主要有以下三个功能 保证可见性 不保证原子性 禁止指令重排Volatile如何实现可见性当某个线程修改了某个值以后,写入主内存。此时其他线程会被通知重新
2021-05-04
设计模式六大原则 设计模式六大原则
设计模式六大原则单一职责原则里氏替换原则任何基类可以出现的地方,子类一定可以出现 依赖倒置原则开闭原则的基础,针对接口编程,依赖抽象而不依赖于具体 接口隔离原则使用多个接口,比使用单个接口要好,降低类之间的耦合度 迪米特法则(最少知道原则)
2021-05-01
设计模式实例 设计模式实例
模板设计模式:servlet的继承:oneServlet extends HttpServlet观察者模式:servlet的Listener组合模式:Tomcat Catalina模块
2021-05-01
Restful 设计 Restful 设计
Restful 设计 资源 表现层:资源的表现形式:如以json表现。HTTP请求头中的accept和content-type字段控制 状态转化(get,post,put,delete)原则: 每一种URI 代表一种资源 服务器和客户端之
2021-05-01
编程风格 编程风格
Javagoogle Java 风格 Java 官方风格 PythonPython 官方风格 google Python 风格 Shellgoogle Shell 风格 APImicrosoft RESTfulAPI design gui
2021-05-01
2 / 3