一、背景描述
我构想了一个类似于mybatis的简化场景如下:
假设当前我有一个组件,名字是Mine。其功能是读取XML文件封装为内存对象,并提供一些操作,如读写等。现在我想通过Spring集成该组件。达到通过自定义注解的属性指定其绑定的XML文件,然后通过FactoryBean解析生成真正的目标对象,然后被纳入Spring的Bean管理中。使其可以通过Spring的注解(如Autowire等)注入到其他Bean里。
我构想了一个类似于mybatis的简化场景如下:
假设当前我有一个组件,名字是Mine。其功能是读取XML文件封装为内存对象,并提供一些操作,如读写等。现在我想通过Spring集成该组件。达到通过自定义注解的属性指定其绑定的XML文件,然后通过FactoryBean解析生成真正的目标对象,然后被纳入Spring的Bean管理中。使其可以通过Spring的注解(如Autowire等)注入到其他Bean里。
“Zero-copy“ describes computer operations in which the CPU does not perform the task of copying data from one memory area to another. —— wikipedia
如维基百科所说,零拷贝是指避免CPU在不同的内存区域间拷贝数据。这可具体细分为操作系统级(OS level)别和用户态(User level)级别。
1)使用NIO多路复用技术,使其能高效的支持大量的客户端连接
2)使用主从Reactor模型,BossGroup和WorkerGroup分工明确,BossGroup只负责接收Channel,加快了客户端建立连接的速度。
以下结构图和流程图通过阅读netty-all-4.0.19.Final.jar源码分析而来。本文主要是以Server端执行过程进行分析。
1 | class ChatServer { |
简单的SpingBoot启动示例:
1 |
|
Mybaits是java语言一个ORM框架。官网介绍如下:
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
jsf是京东内部自研使用的RPC框架,同dubbo,目前已开源至github—joyrpc。本文从spring的角度去看是如何集成jsf的。
Dependency management:this allows project authors to directly specify the versions of artifacts to be used when they are encountered in transitive dependencies or in dependencies where no version has been specified.
最近研发反映线上EDI的日志有丢失现象,经过审查代码发现,本机使用的BlockingQueue方法有误,使用的BlockingQueue#add
方法,此时当队列满时会插入失败,返回false。
System.currentTimeMillis()与GMT
1 | public final class System { |