- 博客(11)
- 资源 (14)
- 收藏
- 关注
原创 Mybatis源码解析:为什么一级缓存和二级缓存都不建议使用?
介绍要想了解缓存,就必须得了解一下Executor,这个Executor是干嘛的呢?你可以理解为要执行的SQL都会经过这个类的方法,在这个类的方法中调用StatementHandler最终执行SQLExecutor的实现也是一个典型的装饰者模式我相信你已经看出来,SimpleExecutor,BatchExecutor是具体组件实现类,而CachingExecutor是具体的装饰器。可以看到具体组件实现类有一个父类BaseExecutor,而这个父类是一个模板模式的典型应用,操作一级缓存的操作都在.
2020-02-26 20:55:29 1971 3
原创 Mybatis源码解析:动态代理让sql执行更安全高效
Mybatis为什么要使用动态代理对SqlSession进行增强?SqlSession sqlSession = sqlSessionFactory.openSession(true);UserInfo userInfo = sqlSession.selectOne("org.apache.ibatis.atest.UserInfoMapper.selectById", 1);这种方式有什么缺点呢?调用的方法有可能写错,实际要执行的sql并没有配置传入的参数有可能写错,因为入参是Object类.
2020-02-25 23:54:58 964
原创 Mybatis源码解析:配置解析流程
解析配置在我看mybatis源码的时候,大部分代码还是很简单的,DefaultResultSetHandler这个类是最难的,没有之一,debug了很多遍,还是没太搞懂,基于ResultSetHandler也并不是很重要,所以本系列我就不会写ResultSetHandler的内容了mybatis解析配置阶段的代码还是比较简单的,基本上就是对配置文件中的各种属性进行解析,然后将值保存到Configuration对象中,因此直接画个流程图就略过了。比较重要的过程,比如sql的解析过程我会单开一节来分析解.
2020-02-25 20:51:35 1089
原创 Mybatis源码解析:Mybatis是如何兼容这么多日志框架的?
配置打印sql在mybatis-config.xml中settings标签增加日志框架,可选的日志框架如下SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN"
2020-02-22 20:42:49 753
原创 Mybatis源码解析:强大的插件是如何工作的?
介绍我之前有篇文章大概写了一下mybatis插件的实现原理Mybatis只写了接口,为什么能运行?Mybaits插件的实现主要用了责任链模式和动态代理动态代理可以对SQL语句执行过程中的某一点进行拦截,当配置多个插件时,责任链模式可以进行多次拦截,责任链模式的UML图如下可以看到在一条责任链中,每个Handler对象都包含对下一个Handler对象的引用,一个Handler对象处理完...
2020-02-21 21:55:07 965
原创 这几个IDEA高级调试技巧,用完就是香
一个项目启动两次测试分布式项目时,经常要一个项目启动2次,不用将一个项目打开多次启动,配置一下即可1.点击Edit Configurations2.勾选Allow parallel run3.依次点击如下2个按钮条件断点有如下代码,只想让它在i == 10的情况下停下来@Testpublic void condition() { for (int i = 0; i &...
2020-02-17 09:06:53 2582 3
原创 Spring Cloud系列教程八:分布式链路追踪Spring Cloud Sleuth(F版)
介绍当系统拆分后,一个前端请求的调用链路会变长,会调用多个不同的后端服务。当一个请求变慢或不可用时,为了方便定位问题,于是就有了分布式链路追踪。分布式链路追踪会在请求中增加traceId和spanId,一个链路包含一个traceId多个spanId例如一个前端请求调用订单系统,而订单系统再去调用库存系统。订单系统的日志如下[INFO][traceId=aaa][SpanId=123]...
2020-02-16 00:25:25 1036
原创 面试官:说一下Synchronized底层实现,锁升级的具体过程?
介绍这是我去年7,8月份面试的时候被问的一个面试题,说实话被问到这个问题还是很意外的,感觉这个东西没啥用啊,直到后面被问了一波new Object,Integer对象等作为加锁对象行吗?会出现哪些问题?为啥java6后synchronized性能大幅上升?我彻底蒙蔽了。下面详细总结一下synchronized使用方式我们知道并发编程会产生各种问题的源头是可见性,原子性,有序性。而synchronized能同时保证可见性,原子性,有序性。所以我们在解决并发问题的时候经常用synchronized,当.
2020-02-09 12:01:09 32290 33
转载 阿里大佬总结的40个多线程面试题,你能答上来几个?
1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然",“会用"只是"知其然”,“为什么用"才是"知其所以然”,只有达到"知其然知其所以然"的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是...
2020-02-06 21:41:31 1034 1
原创 Spring Cloud系列教程七:消息总线Spring Cloud Bus(F版)
介绍我们在Spring Cloud系列教程六 :分布式配置中心Spring Cloud Config(F版)中提到客户端想要获取最新的配置需要访问/actuator/refresh,虽然我们可以用webhook简化这一流程,但是当客户端越来越多的时候,这种方案也不太合适,我们可以用Spring Cloud Bus来解决这一问题github地址:https://github.com/erlieS...
2020-02-02 18:49:12 1093
原创 Spring Cloud源码解析一:Eureka源码解析(F版)
介绍Eureka架构如下图在Eureka的服务治理中,涉及到如下几个概念服务提供者register(服务注册):eureka client 向eureka server注册,提供自身的元数据,如ip地址,端口renew(服务续约):eureka client 每隔30s向eureka server发送一次心跳来续约,如果eureka server在90s没有收到eureka clie...
2020-02-02 15:00:42 2282
mybatis-generator-core-1.3.5.jar
2019-08-15
将doc文件批量转为docx文件,用python将doc文件批量转为docx文件
2017-12-28
Spring MVC学习指南
2017-10-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人