02 2020 档案
摘要:disruptor 可以理解为一个生产消费的框架. 具体翻译教程: http://ifeve.com/disruptor-getting-started/ 这个框架从数据上看, 是很强大的. 号称1s处理600万数据(不是消费掉600万). 这里学习一下. 一. Hello World 数据容器:
阅读全文
摘要:通过多线程实现一个简单的生产者-消费者案例(笔记). 首先定义一个要生产消费的数据类 : public class Data { private String id; private String name; public Data(String id, String name) { this.id
阅读全文
摘要:多线程的 Master-Worker 从字面上也是可以理解的. Master 相当于领导, 一个就够了, 如果是多个, 那么听谁的, 是个大问题. Master负责指派任务给 Worker. 然后对每个人完成的情况进行汇总. Worker 相当于具体干活的人, 完成领导分配的任务, 然后把成果交给领
阅读全文
摘要:单例创建实例, 网上有很多的例子, 我这里也只是做一下笔记. 可能并不比别人的详细. 主要是为了自己做点云笔记. 1. 饿汉式 public class Ehan { //1. 提供一个静态实例 private final static Ehan instance = new Ehan(); //2
阅读全文
摘要:一. 测试代码 @RestController @RequestMapping("/book") public class BookController { @PostMapping("add") public JsonResponse<Integer> add(@Valid @RequestBod
阅读全文
摘要:接第二篇 第二篇里面, 看到容器创建的是 AnnotationConfigServletWebServerApplicationContext 类型. 一 .类图 二. 构造 public GenericApplicationContext() { //创建 bean 工厂 this.beanFac
阅读全文
摘要:接上一篇 一. getRunListeners() 在run() 方法中调用了 getRunListeners(args) 方法, 先看一下这个方法干了什么 private SpringApplicationRunListeners getRunListeners(String[] args) {
阅读全文
摘要:接上一篇 在创建 SpringApplication 之后, 调用了 run() 方法. public ConfigurableApplicationContext run(String... args) { //定时器, 监控启动时间 StopWatch stopWatch = new StopW
阅读全文
摘要:一. 测试代码 @SpringBootApplication public class SbmvcApplication { public static void main(String[] args) { SpringApplication.run(SbmvcApplication.class,
阅读全文
摘要:一. insert 首先看一下 insert.java 的代码: /** * <p> * 根据 ID 删除 * </p> * * @author hubin * @since 2018-04-06 */ public class Insert extends AbstractMethod { @Ov
阅读全文
摘要:在前面 的 inject() 方法中, 调用了一个 TableInfoHelper.initTableInfo(builderAssistant, modelClass) 方法, 来获取 表信息: TableInfo /** * <p> * 实体类反射获取表信息【初始化】 * <p> * * @pa
阅读全文
摘要:一. buildSqlSessionFactory() mybatis-plus 同样的是调用 factory.getObject() 方法来进行 SqlSessionFactory 创建的. 然后调用 buildSqlSessionFactory() 方法: protected SqlSessio
阅读全文
摘要:mybatis 的通用maper, 其实有很多, mybatis-plus 算是其中做的比较好的一款了. 这里就来看一下 mybatis-plus 是怎么实现这个通用mapper功能的. 一. BaseMapper mybatis中 Mapper interface 的时候, 并没有继承什么接口.
阅读全文
摘要:一. 集成 pom.xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.12</version> </dependency> <dependency> <groupId
阅读全文
摘要:在开发过程中, 在获取列表的时候, 很多时候, 并不是一把拉出来展示, 更多的时候, 是以分页列表展示. 这时候, 就需要集成一个分页插件了: pagehelper <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId
阅读全文
摘要:1. getById 的执行 前面一篇 提到过, Mapper.java 创建的时候, 会通过 jdk 代理的方式来创建, 且代理处理类为: MapperProxy . 所以当执行 UserMapper 的 getById 方法的时候, 就会去 MapperProxy 中执行 invoke 方法.
阅读全文
摘要:一. Mapper.java 创建过程 在前面注册 bean 的时候, 对beanClass 进行了替换, 为 MapperFactoryBean. 那么创建实例的时候, 会调用 MapperFactoryBean 的 getObject() 方法得到实例. @Override public T g
阅读全文
摘要:buildSqlSessionFactory() 这个方法比较长, 干的事情也比较多. 包括一些别名, 插件, 类型处理器等的解析. 从主流程上来看, 最主要的其实是干了两件事:1. 对 mapper.xml 文件进行解析2. 使用 SqlSessionFactoryBuilder 创建 sqlSe
阅读全文
摘要:一. MybatisProperties 在使用 mybatis 时, 还需要对mapper进行配置: mybatis: mapper-locations: classpath:mapper/**Mapper.xml 这些配置其实是映射到 mybatis-spring-boot-autoconfig
阅读全文
摘要:一. 测试代码 //实体类 public class User { private Integer id; private String name; private Integer age; private String email; private SexEnum sex; //getter /
阅读全文

浙公网安备 33010602011771号