org.openjdk.jol
jol-core
0.2
看Java 对象布局、大小工具
com.h2database
h2
1.4.197
H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便。
H2最大的用途在于可以同应用程序打包在一起发布,这样可以非常方便地存储少量结构化数据。
org.ow2.asm
asm
6.2.1
ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。
it.unimi.dsi
fastutil
6.5.9
fastutil 通过提供特定类型的映射、集合、列表和队列,以较小的内存占用和快速访问和插入来扩展Java集合框架;还提供了大(64位)数组、集合和列表,以及用于二进制和文本文件的快速、实用的I/O类。它是在Apache许可证2.0下分发的免费软件。它需要Java 7或更新。
com.facebook.thirdparty
libsvm
3.18.1
java版的支持向量机框架。
org.pcollections
pcollections
2.1.2
pcclloctions 是一套服务于持久不变的集合框架,这包括高效的、线程安全的、通用的、不可变的和持久的堆栈、映射、向量、集合和包,它们与Java集合对应。
org.antlr
antlr4-runtime
${dep.antlr.version}
antlr是指可以根据输入自动生成语法树并可视化的显示出来的开源语法分析器。ANTLR—Another Tool for Language Recognition,其前身是PCCTS,它为包括Java,C++,C#在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器(recognizer),编译器(parser)和解释器(translator)的框架。
jline
jline
2.14.6
org.fusesource.jansi
jansi
JLine 是一个用来处理控制台输入的Java类库,目前最新的版本是0.9.94。 其官方网址是http://jline.sourceforge.net。 在介绍JLine之前,首先还是介绍一下Java 6中的Console类,以便进行对比。 3 JLine JLine不依赖任何core Java以外的类库,但是其不是纯Java的实现。 在Windows平台下,JLine通过自带的.dll文件初始化终端。jline.jar中包含了jline32.dll和jline64.dll,在Windows平台上使用的时候, JLine会自动将其解压缩到临时目录并进行加载。 在Unix或者Max OS X平台下,JLine通过stty命令初始化终端。例如通过调用stty -icanon min 1将控制台设置为character-buffered模式。以及通过调用stty -echo禁止控制台回显。在修改终端的属性之前,JLine会对终端的属性进行备份,然后注册一个ShutdownHook,以便在程序退出时进行恢复。由于JVM在非正常退出时(例如收到SIGKILL信号)不保证ShutdownHook一定会被调用,因此终端的属性可能无法恢复。 JLine使用起来非常简单,jline.jar中一共只有20几个类,源码也不难懂。以下是个简单的例子,其中readLine函数的参数指定了命令行提示符: Java代码 收藏代码 ConsoleReader reader = new ConsoleReader(); String line = reader.readLine(">");
org.jdbi
jdbi
2.78
org.jdbi
jdbi3-core
${dep.jdbi3.version}
org.jdbi
jdbi3-sqlobject
${dep.jdbi3.version}
JDBI是Java的SQL连接处理的便利工具库。它试图以Java中使用集合,bean等来映射关系来访问关系数据库,同时保持与JDBC相同的粒度。它公开了两种不同风格的API,一种流式风格和一种sql对象风格。
com.squareup.okhttp3
okhttp
${dep.okhttp.version}
com.squareup.okhttp3
okhttp-urlconnection
${dep.okhttp.version}
是一套http访问工具框架,支持get post cookie 管理等多种http访问协议。OkHttp3是Java和Android都能用。
参考链接 : OkHttp3的基本用法
com.squareup.okhttp3
mockwebserver
${dep.okhttp.version}
MockWebServer是square出品的跟随okhttp一起发布,用来Mock服务器行为的库。MockWebServer使用在单元测试中,专门用来测试http请求。其原理是启动了一个本地web server,监听了本地某个端口。所以在测试的时候,需要把请求的url替换为MockWebServer提供的地址,然后web server会handle请求,记录请求,根据预设的stubbing进行反馈。MockWebServer提供接口,让我们可以在发起请求之后,验证请求是否和预期的一样,比如验证header、path等等。
1.什么是JWT
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
2.Java的JJWT实现JWT
参考链接 : JWT的Java使用 (JJWT)
net.sf.opencsv
opencsv
2.3
openCSV是一款简单的用于解析CSV文件的java类库,它封装了CSV格式文件的读写操作,可将文件与java对象进行自动映射,自定义分隔符,使用转义符等。
org.apache.commons
commons-math3
3.6.1
apache-commons-math3是java的一种科学计算类库,实现科学计算功能的类库其他语言如python、scala都有很多而且很容易找到资料,java可能是由于这方面的需求不多,所以相关的资料较少,在此我就简要介绍一下apache-commons-math3,帮大家大致了解一下这个东西,详细的使用还是需要自己去研究官方文档了。如果想使用其他科学计算包可以参考下面这个网址,其中很详细地介绍了如今市面上常见的科学计算包及其支持的功能。
io.airlift.discovery
discovery-server
1.29
服务发现框架,属于airlift的工具包之一,airlift 框架主要用来构建REST服务。
org.xerial.snappy
snappy-java
1.1.2.6
Snappy是Google开源的压缩/解压缩库。和其他压缩库相比,snappy的压缩率并不是最高的,兼容性也并非最好的。相反,它的诞生旨在以极高的压缩/解压缩速率提供合理的压缩率。Snappy官指出:在64位单核core-i7处理器下,snappy的压缩率能够达到250MB/S,而解压缩速度则能达到500MB/S。目前很多软件使用(或支持)snappy作为压缩库,如MongoDB,Cassandra,Hadoop,Lucene…本文简单介绍snappy Java Api的使用。
com.github.luben
zstd-jni
1.3.5-4
Zstandard 简称Zstd,是一款快速实时的开源数据压缩程序,由Facebook开发,源码是用C语言编写的。相比业内其他压缩算法(如Gzip、Snappy、Zlib)它的特点是:当需要时,它可以将压缩速度交换为更高的压缩比率(压缩速度与压缩比率的权衡可以通过小增量来配置),反之亦
Zstd拥有丰富的API,几乎支持所有流行的编程语言,Zstd-jni 是Java中提供的API然。 它具有小数据压缩的特殊模式,称为字典压缩,可以从任何提供的样本集中构建字典。
org.jgrapht
jgrapht-core
0.9.0
JGraphT支持数学图论对象和算法的免费Java图形库。JGraphT支持的图形包括:
有向图和无向图
加权图、非加权图、带标签的图以及任何用户自定义边
支持各种多样性边属性:简单图、多重图和伪图(pseudograph)
对图只读访问:允许模块设置内部图形的“只读”访问
图可监听:支持通过外部监听器跟踪修改事件
子图可根据其他图中的子视图变化自动更新
支持上述所有功能组合使用
org.anarres.lzo
lzo-hadoop
1.0.5
LZO 是致力于解压速度的一种数据压缩算法,LZO 是 Lempel-Ziv-Oberhumer 的缩写。这个算法是无损算法,参考实现程序是线程安全的。 实现它的一个自由软件工具是lzop。最初的库是用 ANSI C 编写、并且遵从 GNU通用公共许可证发布的。现在 LZO 有用于 Perl、Python 以及 Java 的各种版本。代码版权的所有者是 Markus F. X. J. Oberhumer。
大数据开发的过程中,其实我们都会对数据进行压缩的,但不同的压缩方式会有不同的效果,hadoop原生并不支持lzo的压缩方式。
org.javassist
javassist
3.22.0-GA
我们常用到的动态特性主要是反射,在运行时查找对象属性、方法,修改作用域,通过方法名称调用方法等。在线的应用不会频繁使用反射,因为反射的性能开销较大。其实还有一种和反射一样强大的特性,但是开销却很低,它就是Javassit
。
Javassit其实就是一个二方包,提供了运行时操作Java字节码的方法。大家都知道,Java代码编译完会生成.class文件,就是一堆字节码。JVM(准确说是JIT)会解释执行这些字节码(转换为机器码并执行),由于字节码的解释执行是在运行时进行的,那我们能否手工编写字节码,再由JVM执行呢?答案是肯定的,而Javassist就提供了一些方便的方法,让我们通过这些方法生成字节码。
类似字节码操作方法还有ASM。几种动态编程方法相比较,在性能上Javassist高于反射,但低于ASM,因为Javassist增加了一层抽象。在实现成本上Javassist和反射都很低,而ASM由于直接操作字节码,相比Javassist源码级别的api实现成本高很多。几个方法有自己的应用场景,比如Kryo使用的是ASM,追求性能的最大化。而NBeanCopyUtil采用的是Javassist,在对象拷贝的性能上也已经明显高于其他的库,并保持高易用性。实际项目中推荐先用Javassist实现原型,若在性能测试中发现Javassist成为了性能瓶颈,再考虑使用其他字节码操作方法做优化。