02 2020 档案

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