这一篇主要介绍pom,对项目的整体理解帮助不大,纯粹是个人习惯(本人喜欢先看pom再看具体代码),可以略过不看
我们首先来看看pom里引入了什么jar包
1. 上半部分
<properties>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
<netty.version>4.1.6.Final</netty.version>
<jmh.version>1.9.3</jmh.version>
<barchart.version>2.3.0</barchart.version>
<hessian.version>4.0.38</hessian.version>
<kryo.version>2.23.0</kryo.version>
<protostuff.version>1.5.2</protostuff.version>
<objenesis.version>2.1</objenesis.version>
<asm.version>5.2</asm.version>
<javassist.version>3.19.0-GA</javassist.version>
<bytebuddy.version>1.6.3</bytebuddy.version>
<disruptor.version>3.3.2</disruptor.version>
<metrics.version>3.1.2</metrics.version>
<slf4j.version>1.7.5</slf4j.version>
<junit.version>4.12</junit.version>
<hamcrest.version>1.3</hamcrest.version>
<curator.version>2.9.1</curator.version>
<zookeeper.version>3.4.6</zookeeper.version>
<spring-framework.version>4.3.0.RELEASE</spring-framework.version>
</properties>
2. 下半部分
<!-- # netty dependency: begin -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-common</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-buffer</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-codec</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-handler</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-epoll</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-udt</artifactId>
<version>${netty.version}</version>
</dependency>
<dependency>
<!-- scope: runtime -->
<groupId>com.barchart.udt</groupId>
<artifactId>barchart-udt-bundle</artifactId>
<version>${barchart.version}</version>
</dependency>
<!-- # netty dependency: end -->
<!-- # serialization dependency: begin -->
<dependency>
<groupId>com.caucho</groupId>
<artifactId>hessian</artifactId>
<version>${hessian.version}</version>
</dependency>
<dependency>
<groupId>com.esotericsoftware.kryo</groupId>
<artifactId>kryo</artifactId>
<version>${kryo.version}</version>
</dependency>
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-core</artifactId>
<version>${protostuff.version}</version>
</dependency>
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-runtime</artifactId>
<version>${protostuff.version}</version>
</dependency>
<!-- # serialization dependency: end -->
<!-- # common dependency: begin -->
<!-- ## required dependency: begin -->
<dependency>
<groupId>org.objenesis</groupId>
<artifactId>objenesis</artifactId>
<version>${objenesis.version}</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>${asm.version}</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>${javassist.version}</version>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>${bytebuddy.version}</version>
</dependency>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>${disruptor.version}</version>
</dependency>
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>${metrics.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- ## required dependency: end -->
<!-- ## optional dependency: begin -->
<dependency>
<!-- scope: provided -->
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- ### zookeeper dependency: begin 只有在依赖[jupiter-registry-zookeeper]时才会需要它 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
<exclusions>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>jline</groupId>
<artifactId>jline</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>${curator.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>${curator.version}</version>
</dependency>
<!-- ### zookeeper dependency: end -->
<!-- ### spring dependency: begin 只有在依赖[jupiter-spring-support]时才会需要它 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<!-- ### spring dependency: end -->
<!-- ### benchmark: begin -->
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>${jmh.version}</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
</dependency>
<!-- ### benchmark dependency: end -->
<!-- ## optional dependency: end -->
<!-- # common dependency: end -->
</dependencies>
OK,头大,好多东西,其实还跟第一篇博客一样,按类型分组,分开来看
1. netty部分
common,buffer,codec,handler,transport,transport-native-epoll,transport-udt,barchart-udt-bundle
稍微解释一下,transport包比较多,想知道这些包是干啥的,直接百度epoll和udt,这里实在解释不清楚。
2. serialization部分
hessian,kryo,protostuff-core,protostuff-runtime
这个也很简单,序列化的包
3. required部分
这个类别的包里我有很多不懂,这里记录下来
objenesis:主要作用,绕过java构造方法来创建实例
asm:记得是aop用的东东
javassist:可以执行字节码操作的函数库(不是太明白)
byte-buddy:字节码操作工具(还是不太明白,没用过)
disruptor:据说是个并发框架,为啥这里用也不清楚
metrics-core:继续懵逼中,这是百度到的主要核心功能:
- Metrics Registries类似一个metrics容器,维护一个Map,可以是一个服务一个实例。
- 支持五种metric类型:Gauges、Counters、Meters、Histograms和Timers。
- 可以将metrics值通过JMX、Console,CSV文件和SLF4J loggers发布出来。
4. zookeeper 这个没啥可说的,zookeeper的注册中心
5. spring 这个更不用说了
6. jmh 这是jvm基准测试工具(第一次见到)
7. hamcrest 据说这个叫书写匹配器(也是第一次见到)
OK,这样就看完整个pom了,虽然有很多东东不知道是干嘛的,但是再后面的学习中,一定能搞懂!