-
【Java并发编程】从CPU缓存模型到JMM来理解volatile关键字
所属栏目:[大数据] 日期:2021-05-21 热度:82
目录 并发编程三大特性 原子性 可见性 有序性 CPU缓存模型是什么 高速缓存为何出现? 缓存一致性问题 如何解决缓存不一致 JMM内存模型是什么 JMM的规定 Java对三大特性的保证 原子性 可见性 有序性 volatile解决的问题 volatile保证原子性吗?怎么解决? vol[详细]
-
【Java并发编程】synchronized相关面试题总结
所属栏目:[大数据] 日期:2021-05-21 热度:91
目录 说说自己对于synchronized关键字的了解 synchronized关键字的三种使用 synchronized关键字的底层原理 JDK1.6之后对synchronized关键字进行的优化 Java对象头的组成 MarkWord的组成 锁升级的过程 偏向锁 偏向锁的适用场景 偏向锁的加锁 偏向锁的撤销 偏[详细]
-
Java并发读书笔记:Lock与ReentrantLock
所属栏目:[大数据] 日期:2021-05-21 热度:197
Lock 位于 java.util.concurrent.locks 包下,是一种线程同步机制,就像 synchronized 块一样。但是, Lock 比 synchronized 块更灵活、更复杂。 话不多说,我们直接来看官方文档对Lock接口相关概念及功能的描述,今天又是看英文文档,翻译理解的一天。 一、[详细]
-
【Java并发编程】常见工具类总结:CountDownLatch,CyclicBarrie
所属栏目:[大数据] 日期:2021-05-21 热度:194
目录 CountDownLatch CyclicBarrier CyclicBarrier和CountDownLatch的区别 Phaser 的实现 Semaphore Exchanger 原理 CountDownLatch CountDownLatch允许一个或多个线程 等待其他线程完成操作 。类似于join的操作,可以进行类比: join用于让当前执行线程等待[详细]
-
mybatis源码学习:基于动态代理实现查询全过程
所属栏目:[大数据] 日期:2021-05-21 热度:122
前文传送门: mybatis源码学习:从SqlSessionFactory到代理对象的生成 mybatis源码学习:一级缓存和二级缓存分析 下面这条语句,将会调用代理对象的方法,并执行查询过程,我们一起来看看它的内部是如何实现的。 User user1 = userDao1.findById(41); 一、动[详细]
-
mybatis源码学习:从SqlSessionFactory到代理对象的生成
所属栏目:[大数据] 日期:2021-05-21 热度:51
目录 一、根据XML配置文件构建SqlSessionFactory 二、通过SqlSessionFactory创建SqlSession 三、getMapper获取动态代理对象 一、根据XML配置文件构建sqlSessionFactory 一、首先读取类路径下的配置文件,获取其字节输入流。 二、创建sqlSessionFactoryBuilde[详细]
-
mybatis源码学习:一级缓存和二级缓存分析
所属栏目:[大数据] 日期:2021-05-21 热度:102
目录 零、一级缓存和二级缓存的流程 一级缓存总结 二级缓存总结 一、缓存接口Cache及其实现类 二、cache标签解析源码 三、CacheKey缓存项的key 四、二级缓存TransactionCache 五、二级缓存测试 六、一级缓存源码解析 七、测试一级缓存 前文传送门:mybatis源[详细]
-
mybatis源码学习:插件定义+执行流程责任链
所属栏目:[大数据] 日期:2021-05-21 热度:148
目录 一、自定义插件流程 二、测试插件 三、源码分析 1、inteceptor在Configuration中的注册 2、基于责任链的设计模式 3、基于动态代理的plugin 4、拦截方法的intercept(invocation) 四、插件开发插件pagehelper 1、引入相关依赖 2、全局配置 @L_404_10@ 五[详细]
-
MybatisPlus的各种查询方式!
所属栏目:[大数据] 日期:2021-05-21 热度:91
目录 基本查询 条件构造器查询 指定列与排除列 Condition处理参数 以实体作为参数 AllEq的使用 自定义查询 注解形式 xml形式 其他的查询 注:本文代码样例及sql脚本均已上传至gitee:spring-boot-mybatis-plus学习 基本查询 /** * id=? */ @Test void select[详细]
-
MybatisPlus的逻辑删除功能使用!
所属栏目:[大数据] 日期:2021-05-21 热度:197
目录 逻辑删除的配置 逻辑删除的测试 查询中排除标识字段 本文代码样例均已上传至Gitee:https://gitee.com/tqbx/springboot-samples-learn 只对自动注入的sql起效: 插入: 不作限制 查找: 追加where条件过滤掉已删除数据,且使用 wrapper.entity 生成的where[详细]
-
MybatisPlus的乐观锁插件使用!
所属栏目:[大数据] 日期:2021-05-21 热度:70
本文代码样例均已上传至Gitee:https://gitee.com/tqbx/springboot-samples-learn/tree/master/spring-boot-mybatis-plus-primer 乐观锁适用于 读多写少 的场景。 乐观锁的实现机制: 取出记录时,获取当前version 更新时,带上这个version 执行更新时, set[详细]
-
MybatisPlus的各种功能使用笔记综合!
所属栏目:[大数据] 日期:2021-05-21 热度:144
目录 零、MybatisPlus特性: 一、快速开始 二、常用注解 三、排除非表字段的三种方式 四、MybatisPlus的查询 五、分页插件使用 七、MyBatisPlus代码生成器整合 八、ActiveRecord模式 九、主键策略 十、MybatisPlus的配置 十一、通用Service 十二、逻辑删除功[详细]
-
MybatisPlus的多租户插件使用!
所属栏目:[大数据] 日期:2021-05-21 热度:76
本文代码样例均已上传至Gitee:https://gitee.com/tqbx/springboot-samples-learn/tree/master/spring-boot-mybatis-plus-primer 核心插件: TenantLineInnerInterceptor 核心处理器:TenantLineHandler public interface TenantLineHandler { /** * 获取租[详细]
-
Python:opencv播放视频及保存视频操作
所属栏目:[大数据] 日期:2021-05-21 热度:129
代码已上传至:https://gitee.com/tqbx/python-opencv/tree/master/Getting_started_videos 目标 学习读取视频,播放视频,保存视频。 学习从相机中捕捉帧并展示。 学习 cv2.VideoCapture() , cv2.VideoWriter() 的使用 从相机中捕捉视频 通过自带摄像头捕[详细]
-
SpringMVC的运行流程+常用注解总结
所属栏目:[大数据] 日期:2021-05-21 热度:77
目录 一、SpringMVC简介 二、Spring的MVC运行流程 三、SpringMVC常用注解 @Controller @RestController @ControllerAdvice @RequestBody @ResponseBody @RequestParam @RequestHeader @PathVariable @RequestMapping @Autowired 四、参考资料 一、SpringMVC[详细]
-
SpringSecurity中的Authentication信息与登录流程
所属栏目:[大数据] 日期:2021-05-21 热度:187
目录 Authentication 登录流程 一、与认证相关的UsernamePasswordAuthenticationFilter 获取用户名和密码 构造UsernamePasswordAuthenticationToken对象 为details属性赋值 调用authenticate方法进行校验 二、ProviderManager的校验逻辑 三、AuthenticationP[详细]
-
Spring容器启动流程+Bean的生命周期【附源码】
所属栏目:[大数据] 日期:2021-05-21 热度:72
如果对SpringIoc与Aop的源码感兴趣,可以访问参考:https://javadoop.com/,十分详细。 目录 Spring容器的启动全流程 Spring容器关闭流程 Bean 的生命周期 Bean的创建 doGetBean全流程 createBean doCreateBean createBeanInstance 创建实例 populateBean 填[详细]
-
Spring入门+工厂模式解耦
所属栏目:[大数据] 日期:2021-05-21 热度:95
注:以下内容是参考黑马的spring教程+Spring in Action+个人的一些新见解整合而成的学习笔记。 Spring的概述 先来一波醒目的spring模块图。 Spring这个 轻量级的开源框架 的创建是用来代替更加重量级的企业级Java技术,以 控制反转(Inversion of Control )[详细]
-
Spring的循环依赖,学就完事了【附源码】
所属栏目:[大数据] 日期:2021-05-21 热度:104
目录 啥是循环依赖? Spring可以解决循环依赖的条件 Spring如何去解决循环依赖 SpringBean的创建流程 Spring维护的三级缓存 getSingleton getSingleton重载一号 getSingleton重载二号 addSingleton addSingletonFactory getEarlyBeanReference 解决循环依赖[详细]
-
SpringData JPA利用Specification多条件查询
所属栏目:[大数据] 日期:2021-05-21 热度:120
SpringData JPA遵循Eric Evans在 Domain Driver Design 一书中的规范,让你可以使用编程方式来构建多条件查询。 快速开始 关于SpringBoot与JPA的快速整合,已经在这篇文章中写的非常详细:SpringBoot整合Spring Data JPA,一些配置部分就不再赘述了,我们直[详细]
-
Spring装配Bean的三种方式+导入和混合配置
所属栏目:[大数据] 日期:2021-05-21 热度:75
目录 Spring IoC与bean 基于XML的显式装配 xml配置的基本结构 bean实例的三种创建方式 依赖注入的两种方式 构造器注入方式 setter方法注入方式 利用命名空间简化xml 基于Java的显式装配 @L_301_9@ Bean的依赖 初始化Spring容器 定制bean的命名 基于注解的自[详细]
-
SpringBoot整合Thymeleaf模板引擎
所属栏目:[大数据] 日期:2021-05-21 热度:189
目录 零、本片要点 一、Thymeleaf简介 二、快速启动 三、源码下载 四、参考阅读 零、本片要点 介绍Thymeleaf的概念,理解Thymeleaf的便利且强大。 介绍如何快速整合SpringBoot和Thymeleaf。 介绍自动配置原理。 一、Thymeleaf简介 Thymeleaf是 适用于Web和独[详细]
-
SpringAOP+源码解析,切就完事了
所属栏目:[大数据] 日期:2021-05-21 热度:170
本文是对近期学习知识的一个总结,附带源码注释及流程图,如有不足之处,还望评论区批评指正。 目录 一、AOP、SpringAOP、AspectJ的区别 二、AOP关键术语 三、通知的五种类型 四、切入点表达式 五、AOP应用场景 六、AOP源码分析 SpringBean的生命周期 AOP的[详细]
-
SpringBoot中BeanValidation数据校验与优雅处理详解
所属栏目:[大数据] 日期:2021-05-21 热度:178
目录 本篇要点 后端参数校验的必要性 不使用Validator的参数处理逻辑 Validator框架提供的便利 SpringBoot自动配置ValidationAutoConfiguration Validator+BindingResult优雅处理 为实体类定义约束注解 使用@Valid或@Validated注解 发送Post请求,伪造不合法[详细]
-
SpringBoot中的定时任务的同步与异步
所属栏目:[大数据] 日期:2021-05-21 热度:96
目录 本篇要点 Timer实现定时任务 ScheduledExecutorService实现定时任务 SpringBoot使用Spring Task实现定时任务 自动配置实现原理 新建工程,引入依赖 编写配置类@EnableScheduling 定义定时任务@Scheduled 主启动类 定义配置文件 @L_403_10@ SpringTask异[详细]