手写简易MVC – IOC
耦合 在软件系统中,层与层之间存在依赖关系,我们称之为耦合。 我们系统架构设计的一个原则是:高内聚低耦合。层内部的组成应该是高度聚合的,而层与层之间的关系应该是低耦合的。 在上一篇中...
手写简易MVC – 引入三层架构
什么是三层架构 在实际工作中,业务是很复杂的。为了更好的降低各层之间的 耦合度(系统的复杂度,在三层架构程序设计中,采用面向抽象变成。即上层对下层的调用,是通过接口实现的。而下...
手写简易MVC-DispatcherServlet
这一篇不要过多的纠结代码质量,只要是思想。这一块不看对工作没有影响,但是为了往更高的方向发展,还是需要掌握的。 1. Servlet 优化 1.1 需求 假设我们有一个简易的水果店铺管理系统,对应的...
Centos7安装jdk1.8
下载jdk tar.gz格式压缩包 下载地址:https://www.oracle.com/java/technologies/downloads/#java8 找到1.8版本的jdk jdk-8u271-linux-x64.tar.gz 上传到服务器并解压压缩包 tar -zxvf jdk...
JDK环境导致MD5算法不一致问题
今天在跟第三方做接口联调,在验签时遇到一个问题,明明两边的加密算法一模一样,但是加密后却不一样。 加密算如下: import java.security.MessageDigest; /** * @Author shenxy * @Date 2023/...
单例模式双重校验与volatile关键字
学过单例模式我们都知道,双重校验是单例模式线程安全的懒汉式实现模式。代码如下: /** * @Author shenxy * @Date 2022/8/26 19:29 * @Version 1.0 */ public class Singleton { private volat...
ThreadPoolExecutor 核心线程与等待队列相关问题探讨
先来回顾下线程池的执行流程: 任务加入等待队列的条件是核心线程池已满,且等待队列未满。我原本以为这个核心线程池已满,指的是核心线程都在执行任务,但是我今天遇到一个现象,发现并不是我...
volatile
volatile关键字仅能用来修饰变量,能用来保证变量在线程间的可见性,同时能避免指令重排保证有序性,但是不能保证原子性。 有以下代码: /** * @Author shenxy * @Date 2022/7/24 17:57 * @Vers...
MVC
MVC:Model(模型)、View(视图)、Controller(控制器) 视图层:用于做数据展示以及和用户交互的一个界面 控制层:能够接受客户端的请求,具体的业务功能还是需要借助于模型组件来完成 模型...
Listener
1. 概念 监听器:专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。 Servlet监听器:Servlet规范中定义的一种特殊...
事务管理
问题 我们一个Service中包含多个DAO操作,每个DAO中都有各自的事务管理。如果DAO1执行成功,DAO2执行失败回滚了,那么数据便会出现问题。 比如银行转账的例子:张三给李四转了100块钱,但是张三...
ThreadLocal
1. 简介 ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了...
Filter
1. 简介 Javaweb中的过滤器可以拦截所有访问web资源的请求或响应操作。 1.1 过滤器的三要素 1. 拦截 过滤器之所以能够对请求进行预处理,关键是对请求进行拦截,把请求拦截下来才能够做后续的操...