手写简易MVC – IOC
耦合 在软件系统中,层与层之间存在依赖关系,我们称之为耦合。 我们系统架构设计的一个原则是:高内聚低耦合。层内部的组成应该是高度聚合的,而层与层之间的关系应该是低耦合的。 在上一篇中...
手写简易MVC – 引入三层架构
什么是三层架构 在实际工作中,业务是很复杂的。为了更好的降低各层之间的 耦合度(系统的复杂度,在三层架构程序设计中,采用面向抽象变成。即上层对下层的调用,是通过接口实现的。而下...
手写简易MVC-DispatcherServlet
这一篇不要过多的纠结代码质量,只要是思想。这一块不看对工作没有影响,但是为了往更高的方向发展,还是需要掌握的。 1. Servlet 优化 1.1 需求 假设我们有一个简易的水果店铺管理系统,对应的...
JDK环境导致MD5算法不一致问题
今天在跟第三方做接口联调,在验签时遇到一个问题,明明两边的加密算法一模一样,但是加密后却不一样。 加密算如下: import java.security.MessageDigest; /** * @Author shenxy * @Date 2023/...
HTTP协议
1. 简介 HTTP:Hyper Text Transfer Protocol超文本传输协议。HTTP最大的作用就是确定了请求和响应数据的格式。浏览器发送给服务器的数据:请求报文;服务器返回给浏览器的数据...
单例模式双重校验与volatile关键字
学过单例模式我们都知道,双重校验是单例模式线程安全的懒汉式实现模式。代码如下: /** * @Author shenxy * @Date 2022/8/26 19:29 * @Version 1.0 */ public class Singleton { private volat...
Servlet 获取请求参数流程
1. 前段代码 index.html中新建一个form表单 2. 后端代码 客户端向服务端发送请求,服务端会将请求封装为HttpRequest。 创建AddServlet,普通类是无法获取用户发送的请求数据的,需要继承HttpSer...
Servlet 继承关系
1. 继承关系 2. 方法关系 3. service方法 当有请求过来时,service方法会自动响应(tomcat容器调用)。 在HttpServlet会根据请求类型(get、post等)调用对应的方法(doGet、doPost) 由于HttpS...
volatile
volatile关键字仅能用来修饰变量,能用来保证变量在线程间的可见性,同时能避免指令重排保证有序性,但是不能保证原子性。 有以下代码: /** * @Author shenxy * @Date 2022/7/24 17:57 * @Vers...
五、虚拟机栈
虚拟机栈概述 1. 虚拟机栈的出现背景 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是...
SPI机制
SPI机制是什么 SPI是Service Provider Interface 的简称,是服务提供者接口的意思,又称服务发现机制。SPI是一种动态替换发现的机制,是一种思想。 SPI 实际上是“基于接口的编程+策略模式+配...
Servlet 生命周期
1. Servlet接口 Servlet生命周期对应其中的三个方法:init()、service()、destroy() 2. 生命周期 2.1 验证 发起两次请求后关闭tomcat 2.2 打印结果分析 第一次请求时,Servlet会实例化(构造方...
二、类加载子系统
类加载器子系统作用 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Eng...