自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 DeferredImportSelector接口原理浅析

之前一直感觉存在这样一个问题:很多视频教程都有说到这样一件事,我们的配置要优先于springboot的自动配置,这样springboot配置的自动配置类就能根据配置情况来判定是否生效的问题。那么spring是怎样保证这件事情的呢?我们知道spring先读取成beanDefinition,然后根据bd来为我们创建bean。那么这个过程肯定是在处理beanDefinition的这个阶段,而在这个阶段的后置处理器接口是BeanDefintionRegistryBeanPostProcessor,spring为我

2021-04-04 17:19:34 35

原创 shiro 的SecurityUtil.getSubject逻辑

2021-03-14 16:30:33 12

原创 CsrfFilter过滤器

- Cross-site request forgery 跨站请求伪造。通过伪造用户请求访问受信任站点的非法请求访问。 - 区分跨域: 只要网络协议、ip地址、端口中任何一个不相同就是跨域请求 - 从spring security4开始CSRF防护默认开启。默认会拦截请求,进行csrf处理。csrf为了保证不是其它第3放网站访问, 要求访问时须携带参数名为_csrf值为token的内容(token由后端产生),如果token和服务端token匹配,则正常访问。 - 不关闭

2021-03-03 11:24:09 41 2

原创 Spring security学习

springboot web项目都能正常跳转(引入security启动依赖前)引入spring-boot-starter-security,全都访问不了了,包括home.html静态资源也访问不了,全部都重定向到http://localhost:8080/login security自己默认的登录页;输入登录名和密码: user(默认) 密码(会输出在控制台),登录成功UserDetailsService 接口唯一方法: 根据用户名, 返回UserDetails用户信息对象..

2021-02-28 09:56:47 19

原创 AQS 原理

1.* AQS 原理1.概述全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的==同步器类==工具的框架 (其它同步器工具类继承它,重用它的功能)特点:用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取锁和释放锁getState - 获取 state 状态setState - 设置 state 状态compareAndSetState - cas 机制设置 state 状态独占模式是只有一个线程能够访问资

2021-02-22 23:37:02 23

原创 mybatis源码学习记录

1.传统jdbc的代码2.反射获取注解的sql3.动态代理执行,​ 获取方法参数的名字4.mybatis的独立的一套使用方法​ mybatis解析xml,及tomcat解析xml使用的digister​ SqlSessionFactory接口(从连接或数据源中获取SqlSession)​ sqlSession接口(执行sql,获取mappers,管理事务)建表CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(

2021-02-19 11:07:28 54

原创 任务调度线程池

8.任务调度线程池任务调度有两种:一种是延时执行一个任务(这个任务执行完了,这个任务就结束了);一种是定时执行一个任务(这个任务按照指定的时间间隔重复运行)Timer在『任务调度线程池』功能加入之前,可以使用 java.util.Timer 来实现定时功能,Timer 的优点在于简单易用,但由于所有任务都是由同一个线程来调度,因此所有任务都是串行执行的,同一时间只能有一个任务在执行,前一个任务的延迟或异常都将会影响到之后的任务Timer使用实例@Slf4jpublic cla

2021-02-18 09:56:46 23

原创 线程池学习Note

任务队列package com.zzhua.test23;import java.util.ArrayDeque;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;// 注意一下这个ReentrantLock的从条件变量中唤醒,之前没有正确理解// 现在的理解是:

2021-02-16 17:17:06 1028 8

原创 Unsafe学习

概述概述Unsafe 对象提供了==非常底层的,操作内存、线程==的方法,Unsafe 对象不能直接调用,只能通过反射获得 .cas、LockSupport、Park&Unpark、原子引用类 都是使用Unsafe类中的方法。获取Unsafe对象可以看下Unsafe的源码,它持有一个私有的静态final域:theUnsafe。这个Unsafe类里面的静态代码块中,给theUnsafe赋了值。我们可以使用下面这个类来获取Unsafe对象。public class UnsafeAcc

2021-02-14 23:58:09 28

原创 原子引用

6.4原子引用CAS实现public class TestAtomicReference { public static void main(String[] args) { DecimalAccountCas accountCas = new DecimalAccountCas(new BigDecimal("1000")); DecimalAccount.demo(accountCas); }}// CAS实现, 使用了原子引用类: Atomic

2021-02-10 00:04:18 41 3

原创 不加volatile,就使用双重锁检查的问题

public class TestVolatile {/*这里的volatile一定要加*/volatile boolean iniialized = false;void init() { if (!iniialized) { synchronized (this) { if (iniialized) { return; } doInit(); i

2021-02-06 20:58:39 42

原创 *原理之 volatile

== 原理之 volatile==*volatile 的底层实现原理是内存屏障,Memory Barrier(Memory Fence)对 volatile 变量的写指令之后会加入写屏障对 volatile 变量的读指令之前会加入读屏障1.如何保证可见性写屏障(sfence)保证在该屏障之前的,对共享变量的改动,都同步到主存当中因为ready是volatile修饰的,所以下面对ready赋值true的操作之后,会添加一个写屏障,这个写屏障不仅仅将ready更改的数据写到主存中,也会将之

2021-02-06 11:09:13 27

原创 模式之 Balking(犹豫模式)

***模式之 Balking **定义Balking (犹豫)模式用在一个线程发现另一个线程或本线程已经做了某一件相同的事,那么本线程就无需再做了,直接结束返回实现让monitor线程只创建并执行一遍实现1:public class TestInterrupt3 { public static void main(String[] args) throws InterruptedException { TwoPhaseTermination tpt = new

2021-02-04 22:45:54 43 2

转载 Park&UnPark

基本使用它们是 LockSupport 类中的方法// 暂停当前线程LockSupport.park();// 恢复某个线程的运行LockSupport.unpark(暂停线程对象)先 park 再 unpark@Slf4jpublic class ParkTest { public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(()

2021-01-24 17:37:26 18

原创 并发学习

1.进程与线程1.进程2.线程2.并发与并行1.并发2.并行3.总结3.java线程1.创建和运行线程1.方法一,直接使用Thread//分为两步: // 第一步: 先创建java中的Thread对象。这里是创建了一个Thread的匿名内部类对象// 第二步: 调用Thread的start方法。这里是开启线程, 即: 将这个线程交给cpu的任务调度器等待分配时间片执行// 创建线程对象Thread t = new Thread() { public vo

2021-01-14 00:32:18 34

原创 spring循环依赖解决过程&Bean的生命周期

目前两个Bean,一个TesA,一个testB,TestA中有属性testB,TestB中有属性testA,并且相互注入,相互依赖。spring能帮助我们解决属性上的相互依赖,而不能解决构造器的依赖。三级缓存,都是map: 第一级缓存, singletonObjects 第二级缓存,earlySingletonObjects 第三级缓存,singletonFactories (存放的是ObjectFactory<T>)为了测试方便,我们将使用原...

2020-12-17 02:28:18 248 1

原创 PropertyEditorSupport接口

java Bean规范中有这样一个接口,PropertyEditor,从这个接口的名字来看,是用来进行编辑属性的,那自然是编辑对象的属性,而我们只能通过文字即字符串的形式告诉java程序,而java又是面向对象的,所以这个接口就是用字符串的形式去设定java对象的属性,而PropertyEditor就是帮我们把字符串变成java对象读懂的属性的值。从定义的方法来看,void setAsText(String text)方法用来设定值,这里在做转换,String getAsText()把存的值以可视化的形式展

2020-11-25 22:45:58 51

原创 ## 十八、Spring的后置处理器BeanPostProcessor

我们先来看一下BeanPostProcessor的家族体系,这五个接口是实现Spring容器扩展的关键接口,所有的后置处理器必须实现这里面的其中之一或者好几个接口,才能在spring容器创建每个bean时的整个流程中的不同阶段对bean做出定制化的修改。这就是BeanPostProcessor的核心,同时也指出,这个是采用了观察者模式,AbstractAppliacationContext持有BeanFactory,在BeanFactory创建后,先往AbstractAppliacationContext中

2020-11-11 13:20:28 80 2

原创 Tomcat中的filter调用doFilter的问题

之前在学tomcat的web三大组件的时候,其实一直有几个问题没有搞懂过,1.filter的执行顺序为什么一定在servlet之前?当然,只是一直是记住这个规则,而已。2.filter中为什么一定要调用chain.doFilter,不调用的话,好像请求就被截断了?3.我如果在chain.doFilter下面还添加一些语句会发生什么呢?刚刚学了责任链模式,所以看看,拿到tomcat的源码之后,我们可以重点看下这个类ApplicationFilterChain,这个类里面维护了ApplicationFi

2020-11-08 15:32:21 708 1

原创 十二、EventPublishingRunListener类

spring-boot-2.2.6.REALEASE的jar包的META-INF/spring.factories文件,有如下配置:# Run Listenersorg.springframework.boot.SpringApplicationRunListener=\org.springframework.boot.context.event.EventPublishingRunListenerSpringApplicationRunListener是SpringApplicationRunL

2020-10-22 16:57:41 258

原创 ApplicationRunner、CommandLineRunner 接口源码跟踪

十、ApplicationRunner、CommandLineRunner 接口ApplicationRunner和CommandLineRunner 是SpringBoot提供的接口,实现这两个接口中任意一个接口,并且配置给spring容器管理的bean,重写这两个接口的方法,将会被回调。public class SpringApplication { /** * Run the Spring application, creating and refreshing a new

2020-10-21 14:38:56 43

原创 Spring的ApplicationListener接口事件发布机制源码跟踪

九、ApplicationListener接口ApplicationListener接口是Spring提供的接口,基于事件发布机制实现的。实现该接口的同时会指定一个泛型,当发布的事件类型于实现ApplicationListener接口的bean的泛型一致时,会回调这个bean的监听方法,并且把事件传递过去@Componentpublic class SysApplicationListener implements ApplicationListener<ContextRefreshedEven

2020-10-20 11:41:31 65

原创 直接在controller中@Autowired注入request对象问题

直接在controller中直接注入requesete和response对象有没有线程安全问题呢?@Controller@RequestMapping("test")public class TestController { @Autowired // 直接注入request private HttpServletRequest request; @Autowired private HttpServletResponse response; pu

2020-08-12 15:27:24 864

原创 Spring Cloud基础入门

1. 微服务介绍1. 单体应用随着业务的发展,开发变得越来越复杂,一个模块出现问题,很可能导致整个系统崩溃。。修改、新增某个功能,需要对整个系统进行测试、重新部署。多个开发团队同时对数据进行管理,容易产生安全漏洞。各个模块使用同一种技术进行开发,各个模块很难根据实际情况选择更合适的技术框架,局限性很大。模块内容过于复杂,如果员工离职,可能需要很长时间才能完成工作交接。2. 微服务结构1. 概念1.分布式将一个复杂问题拆分成若干个简单的小问题,将一个大型的项目架构拆分成若干个微服务来协

2020-07-28 17:02:14 50

原创 日志框架从入门到重新入门

1.日志框架分类日志框架分类1.日志门面:操作日志的一套APIJCL appache推出的slf4j2.日志实现JUL jdk自带的logback springboot默认log4j appache推出的老牌的日志框架,停止维护更新log4j2 是log4j的升级版,提升性能2.日志框架1. JULJUL1.使用jdk自带的不

2020-07-18 21:08:32 76

原创 项目中SSM+ Quartz实现动态定时任务的增删改查操作

先看效果package com.zzhua.controller;import com.zzhua.entity.SysJob;import com.zzhua.service.JobService;import com.zzhua.quartz.JobTask;import com.zzhua.utils.JsonUtil;import com.zzhua.utils.MyException;import com.zzhua.utils.ReType;import org.apache

2020-07-17 19:57:52 259 2

原创 Spring整合Quartz动态定时任务步骤分析

1. quartz-demo1.导入依赖![在这里插入图片描述](https://img-blog.csdnimg.cn/20200716103507816.png)如果是maven项目直接导入下面即可。<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2&l

2020-07-16 10:40:06 103

原创 Photoshop学习知识点总括

用过这么久的Photoshop,决定将我对PS 的认识,都记下来,也是为了方便自己去看,去探讨,以防遗漏。 本篇计划从一个像素说起,不讨论具体工具的使用,将深入到PS的原理级别,以数学方法为依据出发。以在PS软件研究的实例佐证,将PS中的各个概念区分开来,由于PS的各个概念相互杂糅,应用方式比较多,所以在说某一概念时,会用到其它的概念。在语言表达方面我坚决不会使用代词,因为代词非常容易引起误解,所有方面将毫无保留、事无巨细的表达出来。 文章将随着我对...

2020-07-14 10:26:52 53

原创 mybaits-plus使用分页插件关联查询时,返回结果数量不对扽问题

分页插件返回数量不对的问题如果是对单表的查询,那么使用分页插件是没有问题的。如果是有表的关联查询,那么分页插件实际上是对中间表作的一个分页,那么就会造成分页数量不对的问题。<resultMap id="BaseResultMap" type="com.zzhua.vadmin.entity.Order"> <result property="userId" column="user_id"></result> <result pro

2020-07-12 22:55:36 609

原创 controller使用map接收参数注意事项

#关于前端使用map去接收参数的问题@PostMapping("test01")@ResponseBody // 如果这里不加@RequestBody,那么springmvc默认创建的是BindAwareModelMappublic Object test01( Map dataMap) { // 对象,并且都参数都不会封装进去 System.out.println(dataMap); dataMap = null; return

2020-07-07 12:35:37 3102

转载 spring和Springboot整合websocket的小demo

request.getSession(false);当浏览器第一次访问的时候,request.getSession(false),如果之前没有获取到session,那么这个方法就会返回null,但是又会马上建立session。所以当第二次访问再request.getSession(false),就会获取到之前创建的session与request.getSession()的区别就是,这个没有就创建,并且立刻返回。要点关闭当前页面时,不关闭浏览器,websocket连接会断掉,服务器的after.

2020-07-06 23:33:01 123

原创 微信支付的统一下单小demo

1. 生成二维码1.导入zxing的依赖<properties> <zxing.version>3.4.0</zxing.version></properties><dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>${zxin

2020-07-05 11:03:37 580

原创 后端学前端Vue的学习笔记

一、Vue1. Vue基础1.什么是MVVMViewModel 能够观察到数据的变化,并对视图对应的内容进行更新ViewModel 能够监听到视图的变化,并能够通知数据发生改变Vue.js 就是一个 MVVM 的实现者,他的核心就是实现了 DOM 监听 与 数据绑定vue官网:https://cn.vuejs.org/2.vue简单示例<!DOCTYPE html><html lang="en"><head> <meta charse

2020-07-03 12:28:03 98

原创 AOP执行顺序

package com.zzhua.aspect;import com.alibaba.fastjson.JSON;import com.zzhua.enums.StatusEnums;import com.zzhua.pojo.Log;import com.zzhua.service.LogService;import com.zzhua.utils.StringUtils;import com.zzhua.utils.ThreadLocalContext;import lombok.ex

2020-06-30 23:00:49 78

原创 java的7大设计原则和设计模式

设计模式一、七大设计原则设计原则是设计模式的基础单一设计原则一个类之应该负责一项职责避免过多的使用if_else(耦合性过高)接口隔离原则一个类对另外一个类的依赖,应该建立在最小的接口上如果一个接口包含了很多方法,但是这个接口的实现类从逻辑或业务上只需要实现其中部分方法。那么这个接口就违背了接口隔离原则,可以考虑将此接口拆了依赖倒转原则核心思想:面向接口编程,使用多态的特性:用接口去声明,真正使用时调用具体子类的具体实现抽象属于高层,比细节实现,

2020-06-28 01:33:45 46

原创 事务隔离级别通俗的解释

事务的隔离级别(不保证我说的是对的,不对的地方,麻烦说一下)数据库标准规范中定义了事务之间的隔离级别。读未提交读已提交可重复读串行化#事务的隔离级别事务的隔离级别定义的是 多个事务之间的数据共享问题,即不同事务在同时开启(并发)访问数据库时,事务与事务之间它们如何访问数据,在数据库中定义了四种隔离级别,来限制其它事务对数据的修改。#读未提交开启一个事务,并设置该事务的隔离级别为 读未提交,这就表示,允许这个事务读取到另外一个事务还没有提交的数据,那么如果另外一个事务突然回滚,那么对于

2020-06-26 11:06:10 117

原创 mybatis基于xml和注解查询

一. Mybatis介绍1.mybatis基础环境搭建1. 创建数据库SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for t_emp-- ----------------------------DROP TABLE IF EXISTS `t_emp`;CREATE TABLE `t_emp` ( `emp_id` int(11) NOT NULL AUTO_INCREMENT,

2020-06-23 20:45:33 188

原创 【最全面的shiro知识点学习】面向新手

ModularRealmAuthorizer基础使用步骤与spring集成1.导入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apach

2020-06-20 19:33:27 196

原创 shiro的记住我没有生效,有可能是没有序列化

shiro的rememberMe没有生效我擦,忘了让我的user实现序列化接口了,实现后,测试正常。其实也应该想到的,shiro有很多log.debug所以最好开启debug日志默认保留时长是1年,所以修改,设置属性 即可通过走源码的方式找到DefaultSecurityManagerpublic class DefaultSecurityManager extends SessionsSecurityManager { public Subject login(Subje

2020-06-18 18:17:18 128

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除