07 2019 档案

摘要:组件声明 在类上声明 @Component、@Configuration、@RestController、@Service、@Repository 等注解,表示这个类需要被注入IoC容器。 1、@Configuration 和 @Bean @Configuration 常用来和 @Bean 配合使用 阅读全文
posted @ 2019-07-31 01:19 O'Neal 阅读(884) 评论(0) 推荐(0)
摘要:MybatisAnnotationTools MybatisAnnotationTools 是基于 Java8 开发的一款可以用于自动化生成 MyBatis 注解类的工具,支持配置数据源、类路径,表名去前缀、指定类名前后缀等功能。同时支持 Java 8 和 Mybatis 3.5+ 的一些新特性,比 阅读全文
posted @ 2019-07-30 08:35 O'Neal 阅读(1476) 评论(0) 推荐(0)
摘要:Java8 增加了 Lambda 表达式,很大程度使代码变的更加简洁紧凑了,那么 Java8 是如何实现 Lambda 表达式的呢? 直接看一个简单的创建线程的例子。 执行 编译生成文件 ,然后用 命令来分析这个class文件。 执行 显示所有类和成员。 由上面的代码可以看出编译器根据 Lambda 阅读全文
posted @ 2019-07-29 00:23 O'Neal 阅读(1127) 评论(0) 推荐(1)
摘要:配置JMX远程连接 1. 配置启动参数 启动jar时,添加如下配置 启动参数说明 1. :配置一个远程服务器上未被占用的端口 2. :配置 JMX 是否启用 ssl 3. :配置 JXM 是否启动鉴权 4. :配置服务器 IP 2. 配置 jvisualvm 添加远程主机信息,填写主机名,端口。端口 阅读全文
posted @ 2019-07-28 00:09 O'Neal 阅读(1143) 评论(0) 推荐(0)
摘要:当调试 Web 应用时,经常需要使用 ide 远程连接,来进行 debug 调试。使用 Springboot 内置服务器和使用 Tomcat 服务器是常见的应用部署方式,可以用不同的配置方式来启动远程 debug 模式。 Springboot 应用 1. 配置启动参数 运行jar时加上debug参数 阅读全文
posted @ 2019-07-27 14:34 O'Neal 阅读(6346) 评论(0) 推荐(0)
摘要:命令行工具 1. jps JVM Process Status Tool,显示虚拟机进程。 用法 : 参数说明 q:打印进程号 l:打印启动类的全限定名 m:打印启动类的 main 方法入参 v:打印指定的虚拟机参数 V:打印类名 例子 : 、`jps l` 2、jstat JVM statisti 阅读全文
posted @ 2019-07-27 01:36 O'Neal 阅读(385) 评论(0) 推荐(0)
摘要:示例 指的是,以 Server模式启动,初始堆1024m,最大堆1024m,初始新生代256m,最大新生代512m,打印详细的GC日志,并输出到gc.$$.log。 常见虚拟机参数 client   客户端模式。 server   服务端模式,Java8 64 阅读全文
posted @ 2019-07-27 00:32 O'Neal 阅读(308) 评论(0) 推荐(0)
摘要:一、垃圾收集算法 1. 标记 清除算法   首先标记出所有需要回收的对象,然后统一回收所有被标记的对象。该算法的 效率不高 ,而且存在 内存碎片 的问题。 2. 复制算法   将内存按容量划分为大小相等的两块,每次只使用其中一块进行内存分配,当这块内存用完了, 阅读全文
posted @ 2019-07-26 01:10 O'Neal 阅读(336) 评论(0) 推荐(0)
摘要:解析调用   方法调用的目标方法在Class文件里是一个常量池中的符号引用,在类加载的解析阶段,将其中一部分符号引用转化为直接引用,这种解析的前提是:方法在程序真正运行之前就有一个可确定的调用版本,并且这个方法的调用版本在运行期不可变(编译期可知,运行器不可变)。这类方法的调用称 阅读全文
posted @ 2019-07-25 02:31 O'Neal 阅读(426) 评论(0) 推荐(0)
摘要:字节码指令   Java虚拟机的字节码指令由一个字节长度,代表着某种特定操作含义的操作码以及跟随其后的零至多个代表此操作所需参数的操作数所构成的。如果忽略异常,JVM的解释器通过下面的伪代码可有效工作: 操作字节码   可以利用开源库直接操作字节码,如CGLi 阅读全文
posted @ 2019-07-24 01:53 O'Neal 阅读(279) 评论(0) 推荐(0)
摘要:  Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列在Class文件中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙。当遇到需要占用8位字节以上的数据项时,会按照高位在前的方式分割成若干个8 阅读全文
posted @ 2019-07-23 01:19 O'Neal 阅读(454) 评论(1) 推荐(0)
摘要:   类加载机制 :虚拟机把描述类的数据从class文件加载到内存,并对数据进行验证、准备、解析、初始化,最终形成可以被虚拟机直接使用的Java类型。验证、准备、解析这3个过程统称为 连接 。 类加载过程 1. 启动虚拟机   虚拟机通过引导类加载器创建一个初 阅读全文
posted @ 2019-07-22 15:59 O'Neal 阅读(273) 评论(0) 推荐(0)
摘要:异常   Java虚拟机异常使用Throwable或其子类的实例来表示,抛异常本质上是程序控制权的一种即时的、非局部的转换,即从抛出的地方转换至处理异常的地方。   导致异常的原因 执行了athrow字节码指令。 虚拟机同步检测到程序发生了非正常的执行情况,这 阅读全文
posted @ 2019-07-22 00:31 O'Neal 阅读(301) 评论(0) 推荐(0)
摘要:  栈帧是Java虚拟机栈的结构,每个栈帧都有自己的局部变量表、操作数栈、动态链接和方法返回地址等信息,还允许携带与JVM实现相关的附加信息,如,对程序调试提供支持的信息。 1 局部变量表   局部变量表存储基本数据类型(8种)、对象引用、returnAddr 阅读全文
posted @ 2019-07-21 07:40 O'Neal 阅读(663) 评论(1) 推荐(0)
摘要:  Java虚拟机采用可达性分析算法来判断对象是否可以回收。可达性分析算法通过一系列的GC Roots对象作为起始点,向下搜索走过的路径称引用链,当一个对象到GC Roots没有任何的引用链时,证明对象是不可用的。 Java中,可作为GC Roots的对象: 虚拟机栈中引用的对象 阅读全文
posted @ 2019-07-21 00:22 O'Neal 阅读(258) 评论(0) 推荐(0)
摘要:运行时数据区   1. 程序计数器 (Program Counter)   每个线程独占自己的程序计数器。如果当前执行的方式不是native的,那程序计数器保存JVM正在执行的字节码指令的地址,如果是native的,那程序计数器的值是undefined。 &e 阅读全文
posted @ 2019-07-20 21:16 O'Neal 阅读(342) 评论(0) 推荐(1)
摘要:写入流程   Kafka 服务端通过 的`handle() ApiKeys handle() PRODUCE`类型,表示有生产者客户端发送了消息,之后将消息传递给副本管理器处理。   副本管理器会将消息追加到分区 leader 副本的日志文件中,然而实际上并不 阅读全文
posted @ 2019-07-19 00:25 O'Neal 阅读(1700) 评论(0) 推荐(0)
摘要:  Kafka 服务端通过 的主函数 方法启动。 类提供读取配置文件、启动/停止服务的方法。而启动/停止服务最终调用的是 的`startup/shutdown`方法。 启动流程 1. 启动 zk 客户端。 2. 启动动态配置。 3. 启动调度线程池。 4. 启动日志管理器的后台线 阅读全文
posted @ 2019-07-18 00:18 O'Neal 阅读(662) 评论(0) 推荐(0)
摘要:消费组和消费者 1. 消费组和消费者是一对多的关系。 2. 同一个消费组的消费者可以消费多个分区,且是独占的。 3. 消费者的分区分配策略由接口 定义,内置三种分配策略 、`RoundRobinAssignor StickyAssignor`,支持自定义策略。 4. 不同消费组可以消费相同的分区,互 阅读全文
posted @ 2019-07-17 00:34 O'Neal 阅读(663) 评论(0) 推荐(0)
摘要:1 KafkaConsumer 构造器 1. 初始化参数配置。 2. 初始化消费者网络客户端 。 3. 初始化消费者协调器 4. 初始化拉取器 2 订阅主题 1. 调用订阅方法 会将订阅信息记录到 ,多次订阅会覆盖旧数据。 2. 如果元数据缓存 不包含订阅的主题,则设置 ,标识需要更新元数据。 3 阅读全文
posted @ 2019-07-06 00:18 O'Neal 阅读(933) 评论(0) 推荐(0)
摘要:1 初始化配置   Kafka 通过 KafkaConsumer 构造器初始化生产者客户端的配置。   常用的重要配置,详见 "官网" 。 bootstrap.servers:Kafka 集群地址(host1:post,host2:post),Kafka 客户 阅读全文
posted @ 2019-07-05 23:56 O'Neal 阅读(1839) 评论(0) 推荐(0)
摘要:  Kafka 在初始化生产者客户端时,创建并启动 Sender 线程。通过 Sender 线程来发送消息、处理消息的响应。通过“volatile boolean running”状态控制 Sender 线程不断轮询,调用 NetworkClient 的 poll 方法。Netw 阅读全文
posted @ 2019-07-04 13:40 O'Neal 阅读(741) 评论(0) 推荐(0)
摘要:1 KafkaProducer 构造器 1. 初始化参数配置。 2. 初始化记录累加器 RecordAccumulator。 3. 初始化 Kafka 连接 KafkaClient,发现集群的所有节点加入缓存。 4. 初始化实现了 Runnable 接口的 Sender 对象,并在 ioThread 阅读全文
posted @ 2019-07-04 11:59 O'Neal 阅读(555) 评论(0) 推荐(0)
摘要:集合  1 ConcurrentHashMap   基于 散列链表+红黑树 实现,类似于 HashMap,JDK 8 进行了优化,利用 volatile + CAS 实现无锁化操作,保证线程安全的同时,提高性能。默认容量16,默认加载因子0.75;  &ems 阅读全文
posted @ 2019-07-03 13:11 O'Neal 阅读(286) 评论(0) 推荐(0)
摘要:1 初始化配置   Kafka 通过 KafkaProducer 构造器初始化生产者客户端的配置。   常用的重要配置,详见 "官网" 。 bootstrap.servers:Kafka 集群地址(host1:post,host2:post),Kafka 客户 阅读全文
posted @ 2019-07-02 22:33 O'Neal 阅读(649) 评论(0) 推荐(0)
摘要:1 List 1.1 ArrayList 基于数组实现,按照插入顺序排序,可重复,线程不安全,默认初始化为空数组对象,在添加第一个元素时,初始化大小为10的数组。支持自动扩容,扩展因子为0.5,即 newCapacity=oldCapacity*1.5,扩容方式是 Arrays.copyOf(ele 阅读全文
posted @ 2019-07-01 16:02 O'Neal 阅读(165) 评论(0) 推荐(0)