10 2022 档案
摘要:[TOC] ## 一、线程池生命周期概述 线程池的运行状态,并不是用户显示设置的,而是伴随着线程池的运行,由内部来维护。 源码中在对ctl变量做解释的时候讲到了下面的五种状态做了解释,下面的描述无非就是将文字转换成流程图而已。 线程池内部使用一个变量维护两个值,将运行状态(runState)和线程数
阅读全文
摘要:一、线程和线程池的关系 /** * 使用list来创建100个线程 花费时间 220 ms * * @throws InterruptedException */ private static void createThreadPoolForList() throws InterruptedExce
阅读全文
摘要:[TOC] ## 一、条件队列的意义 条件(也称为条件队列或条件变量)为一个线程暂停执行(“等待”),直到满足了条件,另一线程通知因为条件不满足而阻塞了的线程。 由于对该共享状态信息的访问发生在**不同的线程**中,因此必须对其进行保护,因此某种形式的锁与该条件相关联。 等待条件提供的关键属性是它自
阅读全文
摘要:一、概述 学习完lock锁之后,想要来写一把自己的lock锁。 但是我感觉比较初级,应该在学习Lock锁之前来写的。反正也想着总结一下。 二、lock锁的前提 1、锁的标识,当前锁是用state来进行标识的; 2、加锁、解锁方法; 3、如果锁是自由状态,加锁成功的话需要让其返回加锁成功状态; 4、如
阅读全文
摘要:[TOC] 1、举例同步; 2、如何保证同步?原理 3、JDK6之前的实现 4、JDK6之后的实现过程 5、官网入手、讲解现象 6、偏向延迟和偏向不延迟 7、无锁升级到偏向锁 8、偏向锁升级到轻量级锁 9、轻量级锁升级到重量级锁 ## 一、为什么需要syncronzied关键字 syncronzie
阅读全文
摘要:读写锁 一、概述 有些时候使用lock锁进行同步会影响到性能效率问题。 比如说:读写锁,读锁只是读,而不会影响到数据安全问题;而写锁是会对数据造成安全问题,所以需要加锁。 但是读读是要支持并发的;读写只能是互斥的;写写也只能是互斥的; 所以为了提高并发性能问题,有了读写锁,下面来看下读写锁。 二、读
阅读全文
摘要:线程并发和同步 并发:并发是为了解决多个线程在同一个时刻访问共享资源而带来的数据的不安全性,不稳定性等。 同步:为了解决并发问题,给某个线程赋予指定权限来进行执行。 同步的解决思路是:因为多线程会导致共享资源存在安全问题,那么让多线程在某个时间段中只有单个线程执行,从而避免线程安全问题。 但是这样子
阅读全文
摘要:# Lock锁的公平性和非公平性 [TOC] ## 1、lock锁项目使用 在项目中的使用方式: ```java public class AQSTestOne { // 使用公平锁来进行测试 private static final Lock LOCK = new ReentrantLock(tr
阅读全文
摘要:SpringMVC之参数验证 一、为什么使用参数验证 以下面的登录接口为例,需要手动去验证参数是否存在,这种写法繁琐且不太优雅。 @RestController public class LoginController { @RequestMapping("/login") public Strin
阅读全文
摘要:参考体系文章:https://blog.csdn.net/weixin_35369702/article/details/116411179 DataSource的种类 DataSource的基本角色是ConnectionFactory,所有的数据库连接将通过DataSource接口统一管理。 Da
阅读全文
摘要:自定义过starter的同学应该都知道,自动配置类需要用 EnableAutoConfiguration 注解修饰,并且需要将自动配置类配置在spring.factories中。但自动配置类是如何被SpringBoot加载的呢? 下面结合SpringBoot的启动流程,记述一下自动配置类的加载过程。
阅读全文
摘要:SpringBoot异常处理机制 默认异常处理机制 springboot默认提供了一个处理/error的handler,全局异常处理。 对于机器客户端来说,产生JSON(具体的错误)、状态码和异常信息; 对于浏览器来说,产生一个白页同时附带上html错误信息; 为了自定义,还可以利用视图来解析和错误
阅读全文
摘要:内容协商原理 一、引言 所谓的内容协商原理,就是客户端想要发送什么样数据格式的数据,期望服务端返回什么样数据格式的数据。 常用方式: 1、通过请求头中的Content-Type字段告知服务端,本次发送给服务端的是什么类型的数据格式; 2、通过Accept格式告知服务端,服务端需要响应给客户端的数据格
阅读全文
摘要:本文主要讲解请求映射的建立和处理和拦截器 根据以前自定义SpringMVC的基础条件中,可以知道我们的创建条件无非以下几个步骤: 1、先扫描上下文; 2、判断类和方法上是否存在着对应的注解,并将信息进行封装; 3、添加映射; 4、请求过来时,根据条件来处理请求; 所以猜想以下springmvc中应该
阅读全文