摘要:
1. 概述 一个 JVM 实例只存在一个堆内存,堆也是 Java 内存管理的核心区域 Java 堆区在 JVM 启动时被创建,空间大小也就确定了。是 JVM 管理的最大一块内存空间,堆空间大小是可调节的 虚拟机规范规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的 所有的线程共享 阅读全文
摘要:
1. 虚拟机栈概述 由于跨平台性的设计,Java 的指令都是根据栈来设计的。不同平台 CPU 架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。 栈是运行时的单位,而堆是存储的单位。 即栈解决程序的运行问题,即程序如何执行, 阅读全文
摘要:
1. 程序计数器 JVM 种的程序计数器(Program Counter Register)中,Register 的命名源于 CPU 的寄存器,寄存器存储指令相关的现场信息。CPU 只有把数据装载到寄存器才能够运行。 这里,并非是广义上所指的物理寄存器,或许将其翻译为 PC 计数器(或指令计数器)更 阅读全文
摘要:
1. 运行时数据区 运行时数据区详细 详解 Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机的启动而创建,随着虚拟机的退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程的开始和结束而创建和销毁。 灰色的为单独线程私有的,红色的为多个线程共 阅读全文
摘要:
类加载器子系统作用: 类加载器子系统负责从文件系统或网络中加载 Class 文件,class 文件在文件开头都有特定的文件标识。 Class Loader只负责class文件的加载,至于是否可以运行,则由Execution Engine决定 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外 阅读全文
摘要:
1. 静态代理设计模式(手动) 为什么需要代理设计模式 JavaEE分层开发中,最为重要的是Service层 Service层中包含了哪些代码? Service层中 = 核⼼功能(⼏⼗⾏ 上百代 码) + 额外功能(附加功能) 核⼼功能 业务运算 DAO调⽤ 额外功能 不属于业务 可有可⽆ 代码量很 阅读全文
摘要:
1. ⼯⼚设计模式 概念:通过⼯⼚类,创建对象 好处:解耦合 耦合 指的是代码间的强关联关系,⼀⽅的 改变会影响到另⼀⽅ 问题:不利于代码维护 简单:把接⼝的实现类,硬编码在程序中 UserService userService = new UserServiceImpl(); UserServic 阅读全文
摘要:
问题:Spring 与 Myabatis 整合后,为什么 DAO 不提交事务,但是数据能够插入数据库中? Mybatis 提供的连接池对象 —> 创建 Connection Connection.setAutoCommit(false) 手工的控制了事务,操作完成后,需要手工提交。 Druid(C3 阅读全文