手写简易MVC – IOC
耦合 在软件系统中,层与层之间存在依赖关系,我们称之为耦合。 我们系统架构设计的一个原则是:高内聚低耦合。层内部的组成应该是高度聚合的,而层与层之间的关系应该是低耦合的。 在上一篇中...
手写简易MVC – 引入三层架构
什么是三层架构 在实际工作中,业务是很复杂的。为了更好的降低各层之间的 耦合度(系统的复杂度,在三层架构程序设计中,采用面向抽象变成。即上层对下层的调用,是通过接口实现的。而下...
手写简易MVC-DispatcherServlet
这一篇不要过多的纠结代码质量,只要是思想。这一块不看对工作没有影响,但是为了往更高的方向发展,还是需要掌握的。 1. Servlet 优化 1.1 需求 假设我们有一个简易的水果店铺管理系统,对应的...
七、堆
堆(Heap)的核心概述 堆针对一个JVM进程来说是唯一的,也就是一个进程只有一个JVM,但是进程包含多个线程,他们是共享同一堆空间的。 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心...
五、虚拟机栈
虚拟机栈概述 1. 虚拟机栈的出现背景 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是...
单例模式双重校验与volatile关键字
学过单例模式我们都知道,双重校验是单例模式线程安全的懒汉式实现模式。代码如下: /** * @Author shenxy * @Date 2022/8/26 19:29 * @Version 1.0 */ public class Singleton { private volat...
ThreadLocal
1. 简介 ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了...
事务管理
问题 我们一个Service中包含多个DAO操作,每个DAO中都有各自的事务管理。如果DAO1执行成功,DAO2执行失败回滚了,那么数据便会出现问题。 比如银行转账的例子:张三给李四转了100块钱,但是张三...
Servlet 请求转发与重定向
1. 转发 在请求的处理过程中,Servlet完成了自己的任务,需要把请求转交给下一个资源继续处理。 转发操作的核心部分是在服务器端完成的,所以浏览器感知不到,整个过程中浏览器只发送一次请求。...
二、类加载子系统
类加载器子系统作用 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Eng...
Servlet 生命周期
1. Servlet接口 Servlet生命周期对应其中的三个方法:init()、service()、destroy() 2. 生命周期 2.1 验证 发起两次请求后关闭tomcat 2.2 打印结果分析 第一次请求时,Servlet会实例化(构造方...
Servlet 会话
HTT协议本身P是无状态的,服务器无法区分两次请求是否是同一个客户端发送过来的。所以两个用户操作时,便会产生数据错误。因此通过会话跟踪技术来解决这个问题。 1. Cookie 1.1 本质 在浏览器端...













