- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Java开发人员必知的常用类库,这些你都知道吗?由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
作为一名程序员,我们要避免重复发明轮子,尽可能使用一些成熟、优秀、稳定的的第三方库,站在巨人的肩膀上搭建可靠、稳定的系统。本篇我整理了Java开发人员经常会使用到的第三方类库,可能不是很全面,还在持续收集整理中,朋友们可以关注我的GitHub上的持续更新,GitHub搜wind7rui/Javalib,或者点击链接https://github.com/wind7rui/Javalib,然后点击watch/Star/Fork,如果您对项目中的内容有建议或者意见,欢迎提出专业方面的建议,共同维护,请直接在GitHub上以issue或者PR的形式提出,以下我们开始本篇的内容.
应用开发脚手架 。
1.Spring Framework 。
Spring框架为现代基于Java的企业应用程序提供了一个全面的编程和配置模型,使用开发基于Java语言的应用更加简单、便捷.
github:https://github.com/spring-projects/spring-framework/ 。
官网:https://spring.io/projects/spring-framework 。
2.Spring Boot 。
Spring Boot使创建独立的、基于Spring的产品级应用程序变得非常容易.
官网:https://spring.io/projects/spring-boot 。
3.Spring Cloud Spring Cloud为开发人员提供了丰富的使用工具,开发人员基于这些工具可以快速构建分布式系统中的一些常见功能(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话等).
官网:https://spring.io/projects/spring-cloud 。
Web服务接口 。
1.Jersey 。
Jersey是一个REST框架,它提供JAX-RS参考实现等。Jersey提供了自己的api,这些api通过附加的特性和实用程序扩展了JAX-RS工具包,从而进一步简化了RESTful服务和客户端开发。Jersey还公开了许多扩展spi,以便开发人员可以扩展Jersey以最适合他们的需求.
github:https://github.com/eclipse-ee4j/jersey 。
2.Spring Web MVC 。
Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就已包含在Spring框架中。正式名称“ Spring Web MVC”来自其源模块的名称(spring-webmvc),但通常称为“Spring MVC”.
官网:https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/web.html 。
数据持久化框架 。
1.MyBatis 。
MyBatis是一个一流的持久性框架,支持自定义SQL、存储过程和高级映射,它几乎消除了JDBC代码、参数手动设置和结果检索。MyBatis可以使用简单的XML或注释进行配置,并将原语、接口和javapojo(普通的旧Java对象)映射到数据库记录.
官网:https://mybatis.org/mybatis-3/ 。
github:https://github.com/mybatis/mybatis-3 。
2.Hibernate 。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库.
官网:http://hibernate.org/ 。
Excel读写 。
1.Alibaba EasyExcel 。
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到几M,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便.
github:https://github.com/alibaba/easyexcel 。
2.Apache POI 。
一个用于读写Microsoft Office二进制和OOXML文件格式的Java库,可用于读写Excel 97-2008.
github:https://github.com/apache/poi 。
CSV读写 。
1.Apache Commons CSV 。
Apache Commons CSV库提供了用于读取和写入各种类型CSV文件的接口.
github:https://github.com/apache/commons-csv 。
2.Java CSV 。
Java CSV是一个小型、快速且开源Java库,用于读、写各种CSV文件.
官网:https://www.csvreader.com/java_csv.php 。
API:http://javacsv.sourceforge.net/ 。
3.Super CSV 。
Super CSV是一个快速、免费跨平台的CSV格式数据的读写库,可以方便的处理对象、Map、列表的读写操作,以及自动化的类型转换和数据检查功能.
官网:http://super-csv.github.io/super-csv/index.html 。
github:https://github.com/super-csv/super-csv 。
JSON读写 。
1.Jackson 。
Jackson被称为Java的标准JSON库,号称“Java的最佳JSON解析器”.
github:https://github.com/FasterXML/jackson 。
2.Gson 。
Gson是谷歌开源的一个Java库,可用于将Java对象转换为其JSON表示形式。它还可以用于将JSON字符串转换为等效的Java对象。Gson可以处理任意Java对象,包括您没有源代码的现有对象.
github:https://github.com/google/gson 。
3.fastjson 。
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.
github:https://github.com/alibaba/fastjson 。
XML读写 。
1.dom4j 。
dom4j是用于处理XML的开源框架,该框架与XPath集成在一起,并完全支持DOM、SAX、JAXP和Java平台.
github:https://github.com/dom4j/dom4j 。
官网:https://dom4j.github.io/ 。
2.StAX 。
StAX全称Streaming API for XML,一种全新的、基于流的Java XML解析标准类库.
3.jaxb-api 。
jaxb-api用于执行XML文档和Java对象之间的映射.
文档:https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/JAXB.html 。
4.XStream 。
XStream是一个可以轻易的将Java对象和xml文档相互转换的类库.
官网:http://x-stream.github.io/ 。
IO读写 。
1.Apache Commons IO Apache Commons IO是一个实用程序库,可协助开发IO功能.
官网:https://commons.apache.org/proper/commons-io/ 。
2.Okio 。
Okio是对java.io和java.nio的补充,使访问、存储和处理数据变得更加容易.
github:https://github.com/square/okio 。
HTTP客户端 。
1.OkHttp 。
OkHttp是一个HTTP客户端,使用OkHttp很容易,它的请求/响应API具有流畅的构建器和不变性。它支持同步阻塞调用和带有回调的异步调用.
github:https://github.com/square/okhttp 。
官网:https://square.github.io/okhttp/ 。
2.Apache HttpClient 。
Apache HttpClient提供了对基本HTTP协议的强大支持,用于构建基于HTTP的客户端.
官网:http://hc.apache.org/index.html 。
github:https://github.com/apache/httpcomponents-client 。
Java Bean复制 。
1.Cglib BeanCopier 。
Cglib库内的BeanCopier提供了ava Bean到Java Bean的复制功能,性能优于Spring BeanUtils.
BeanCopierbeanCopier=BeanCopier.create(sourceClass,targetClass,false),
beanCopier.copy(source,target,null),
2.Spring BeanUtils 。
Spring框架的Spring Beans库中的BeanUtils也实现了Java Bean到Java Bean的复制.
3.Dozer 。
Dozer是Java Bean到Java Bean映射器,它以递归方式将数据从一个对象复制到另一个对象。Dozer支持简单属性映射、复杂类型映射、双向映射、隐式显式映射以及递归映射。Dozer不仅支持属性名称之间的映射,而且还可以在类型之间自动转换。开箱即用地支持大多数转换方案,同时也允许您通过XML或基于代码的配置指定自定义转换.
github:https://github.com/DozerMapper/dozer 。
文档:https://dozermapper.github.io/gitbook/ 。
Redis客户端 。
1.Redission 。
Redis推荐的Java客户端Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid),它充分利用了Redis键值数据库提供的一系列优势,基于Java实用工具包中常用接口,为使用者提供了一系列具有分布式特性的常用工具类,让使用Redis更加简单、便捷,从而让使用者能够将更多精力集中到业务逻辑处理上.
github:https://github.com/redisson/redisson/ 。
2.Jedis 。
Redis推荐的Java客户端.
github:https://github.com/xetorthio/jedis 。
数据库连接池 。
数据库连接池提供了一套高效的连接分配、使用策略, 最终实现连接的高效管理.
1.HikariCP 。
快速、简单、可靠。HikariCP是“零开销”生产就绪的JDBC连接池.
github:https://github.com/brettwooldridge/HikariCP 。
2.Druid 。
Druid是Java语言中最好的数据库连接池之一,Druid能够提供强大的监控和扩展功能.
github:https://github.com/alibaba/druid/ 。
3.Tomcat JDBC 。
JDBC连接池是Apache Commons DBCP连接池的替代品.
官网:http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html 。
网络编程 。
1.Netty 。
Netty是一个广泛使用的Java网络编程框架.
github:https://github.com/netty/netty 。
官网:https://netty.io/ 。
文件上传 。
1.Apache Commons FileUpload 。
Apache Commons FileUpload使高性能的文件上传功能变得容易.
官网:http://commons.apache.org/proper/commons-fileupload/ 。
发送邮件 。
1.Apache Commons Email 。
Apache commons Email旨在提供用于发送电子邮件的API,它建立在Java Mail API之上,它的目标就是简便.
官网:http://commons.apache.org/proper/commons-email/ 。
编码和解码 。
1.Apache Commons Codec 。
Apache Commons Codec提供了常见编码器和解码器的实现,例如Base64,Hex,Phonetic和URL.
官网:http://commons.apache.org/proper/commons-codec/ 。
IO操作 。
1.Apache Commons IO 。
简单、快捷的IO操作.
官网:http://commons.apache.org/proper/commons-io/index.html 。
对象池 。
1.Apache Commons Pool 。
提供了通用对象池.
官网:http://commons.apache.org/proper/commons-pool/ 。
java.lang包工具类 。
1.Apache Commons Lang 。
为java.lang中的类提供额外的功能,例如StringUtils、DateUtils、RandomUtils、FastDateFormat(线程安全版本的SimpleDateFormat).
官网:http://commons.apache.org/proper/commons-lang/index.html 。
集合操作 。
1.Apache Commons Collections 。
集合相关操作工具类.
官网:http://commons.apache.org/proper/commons-collections/ 。
2.Guava 。
Guava是Google的一组核心Java库,除了可以操作我们常用的集合类型之外,还可以操作新的集合类型(例如多图和多集)和不可变的集合.
github:https://github.com/google/guava 。
全能型工具类 。
1.Guava 。
Guava是Google的一组核心Java库,其中包括新的集合类型(例如多图和多集),不可变的集合,图形库以及用于并发,I / O,哈希,缓存,基元,字符串等的实用程序!它广泛用于Google的大多数Java项目中,也被许多其他公司广泛使用.
github:https://github.com/google/guava 。
2.Hutool 。
Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”.
github:https://github.com/looly/hutool 。
日期和时间操作 。
1.Joda-Time 。
Joda-Time提供了Java日期和时间类的质量替代.
官网:https://www.joda.org/joda-time/ 。
单元测试 。
1.JUnit 。
官网:https://junit.org/junit5/ 。
2.Mockito 。
Mockito是一个Java单元测试模拟框架.
官网:https://site.mockito.org/ 。
3.PowerMock 。
PowerMock也是一个Java单元测试模拟框架,它可以模拟静态方法、构造函数、最终类和方法、私有方法、删除静态初始化器等.
官网:http://powermock.github.io/ 。
4.moco 。
在日常接口测试的工作中,经常需要依赖其他系统的API,但是联调不常有,只能自己通过mock完成数据依赖。Moco是一个模拟服务器端服务的项目,可以用于测试打桩.
github:https://github.com/dreamhead/moco 。
安全框架 。
1.Apache Shiro 。
Apache Shiro是一个功能强大且易于使用的Java安全框架,它用于身份验证、授权、加密和会话管理。使用Shiro易于理解的API,可以快速轻松地保护任何应用程序,从最小的移动应用程序到最大的Web和企业应用程序.
官网:http://shiro.apache.org/ 。
日志 。
1.SLF4J + Logback 。
SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现,它是一个日志接口.
Logback是由log4j创始人设计的又一个开源日志组件,它是一个日志的实现.
SLF4J官网:http://www.slf4j.org/ 。
Logback官网:https://logback.qos.ch/ 。
对象池 。
1.Apache Commons Pool 。
Apache Commons Pool提供了对象池API和一系列对象池实现.
官网:https://commons.apache.org/proper/commons-pool/ 。
基本网络通讯 。
1.Apache Commons Net 。
Apache Commons Net库实现了许多基本互联网协议的客户端。该库的目的是提供基本协议访问,而不是更高级别的抽象.
官网:http://commons.apache.org/proper/commons-net/index.html 。
作业调度框架(定时任务) 。
1.Quartz 。
Quartz是一个开源的作业调度框架,它完全由Java编写,能够用它来为执行一个作业而创建简单的或复杂的调度.
官网:http://www.quartz-scheduler.org/ 。
github:https://github.com/quartz-scheduler/quartz 。
2.ElasticJob 。
ElasticJob是一种分布式调度解决方案,解决了Quartz不支持分布式的弊端。Elastic job主要的功能有支持弹性扩容,通过Zookepper集中管理和监控job,支持失效转移等.
github:https://github.com/apache/shardingsphere-elasticjob 。
配置中心 。
1.Nacos 。
Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos的动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易.
官网:https://nacos.io/ 。
github:https://github.com/alibaba/nacos 。
2.Spring Cloud Config 。
Spring Cloud Config为分布式系统中的外部化配置提供服务器端和客户端支持。使用Config Server,您可以在中心位置管理所有环境中应用程序的外部属性.
文档:https://cloud.spring.io/spring-cloud-config/reference/html/ 。
3.Apollo 。
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景.
github:https://github.com/ctripcorp/apollo 。
限流 。
1.Guava RateLimiter 。
RateLimiter基于令牌桶算法,即以用户设定的恒定速率向令牌桶内放置令牌,用户来执行任务时,只有拿到令牌才能执行.
2.Sentinel 。
Sentinel是面向分布式服务架构的高可用防护组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性.
官网:https://sentinelguard.io/ 。
github:https://github.com/alibaba/Sentinel 。
熔断降级 。
当调用链路中某个资源出现不稳定,例如,表现为timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源,最终产生雪崩的效果.
1.Sentinel 。
Sentinel通过并发线程数进行限制和通过响应时间对资源进行降级两种手段对资源调用进行限制,让请求快速失败,避免影响到其它的资源.
官网:https://sentinelguard.io/ 。
github:https://github.com/alibaba/Sentinel 。
2.Hystrix 。
Hystrix 通过线程池的方式,来对资源进行了隔离。这样做的好处是资源和资源之间做到了最彻底的隔离。缺点是除了增加了线程切换的成本,还需要预先给各个资源做线程池大小的分配。Hystrix不再处于主动开发中,并且当前处于维护模式,官方推荐使用Resilience4j替代.
github:https://github.com/Netflix/Hystrix 。
3.Resilience4j 。
Resilience4j是受Netflix Hystrix启发的轻量级容错库,但专为Java 8和函数式编程而设计。轻巧,因为该库仅使用Vavr,而Vavr没有任何其他外部库依赖项.
github:https://github.com/resilience4j/resilience4j 。
分库分表 。
1.Apache ShardingSphere 。
Apache ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。支持数据分片、读写分离、多数据副本、数据加密、影子库压测等功能.
官网:https://shardingsphere.apache.org/ 。
github:https://github.com/apache/shardingsphere 。
2.Mycat 。
Mycat是数据库分库分表中间件.
官网:http://www.mycat.org.cn/ 。
github:https://github.com/MyCATApache 。
序列化 。
1.Kryo 。
Kryo是用于Java的快速高效的二进制对象图序列化框架。该项目的目标是高速,小尺寸和易于使用的API。每当需要将对象持久保存到文件,数据库还是通过网络时,该项目都是有用的.
github:https://github.com/EsotericSoftware/kryo 。
2.Hessian 。
Hessian是一款支持多种语言进行序列化操作的框架技术,同时在进行序列化之后产生的码流也较小,处理数据的性能方面远超于java内置的jdk序列化方式.
官网:http://hessian.caucho.com/ 。
3.Protobuf 。
Protobuf是谷歌开源的一个灵活的、高效的用于序列化数据的协议。相比较XML和JSON格式,protobuf更小、更快、更便捷.
github:https://github.com/protocolbuffers/protobuf 。
官网:https://developers.google.com/protocol-buffers/ 。
RPC框架 。
1.Dubbo Apache Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现.
官网:http://dubbo.apache.org/zh-cn/ 。
github:https://github.com/apache/dubbo 。
2.Thrift Thrift是一个软件框架(远程过程调用框架),用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml这些编程语言间无缝结合的、高效的服务。Thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器,现在是 Apache 基金会的顶级项目。Thrift允许你定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言.
官网:http://thrift.apache.org/ 。
3.gRPC gRPC是一个现代的、开源的、高性能的远程过程调用(RPC)框架,可以在任何地方运行。gRPC使客户机和服务器应用程序能够透明地通信,并简化了连接系统的构建。目前提供C、Java和Go语言版本,分别是:grpc, grpc-java, grpc-go. 其中C版本支持C, C++, Node.js, Python, Ruby, Objective-C, PHP和C#支持.
官网:https://www.grpc.io/ 。
github:https://github.com/grpc/grpc 。
最后此篇关于Java开发人员必知的常用类库,这些你都知道吗?的文章就讲到这里了,如果你想了解更多关于Java开发人员必知的常用类库,这些你都知道吗?的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
Java 库和 android 库有什么区别,各自有什么优点/缺点? 最佳答案 您可以在 Android 应用程序中包含标准 Java .jar 文件库。它们在 .apk 构建时被翻译成 Dalvik
所以,我现在的代码就像从 Java 层加载库(比如 liba.so),并在内部 liba.so 加载 libb.so。因此,如果我必须将所有库打包到 APK 中并将其安装在没有 root 访问权限的设
我想在我的系统中设置 LEDA 库。 我已经从以下链接下载了 LEDA 库 http://www.algorithmic-solutions.info/free/d5.php Instruct
我想用 autoconf 创建一个共享库。但是,我希望共享库具有“.so”扩展名,而不是以“lib”开头。基本上,我想制作一个加载 dlopen 的插件。 .是否有捷径可寻? 当我尝试使用 autoc
我需要在 Apps 脚本应用程序上修改 PDF。为此,我想使用 JS 库:PDF-LIB 我的代码: eval(UrlFetchApp.fetch("https://unpkg.com/pdf-lib
我正在构建一个使用以下 Boost header 的程序(我使用的是 Microsoft Visual C++ 10), #include #include #include #include
当我通过 cygwin 在 hadoop 上运行此命令时: $bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 我
我已经通过 vcpgk 成功安装了一个 C++ 库,名为:lmdb:x64-windows 我还安装了lmdb通过 Cabal 安装的 Haskell 绑定(bind)包 在尝试测试 lmdb 包时:
我该如何解决这个问题? 我刚刚将 javacv jar 文件复制到我的项目 Lib 文件夹下,但出现了这个错误! 我可以找到这个thread来自谷歌,但不幸的是,由于我国的谷歌限制政策,该页面无法打开
我有一个 Android 库项目 FooLib。 FooLib 引用 Android Context 之类的东西,但不需要任何资源文件(res/ 中的东西)所以我目前将其打包为供我的应用使用的 JAR
我正在开发一个 Android 应用程序(使用 Android Studio),它能够通过手势识别算法了解您正在进行的 Activity 。对于我使用 nickgillian ithub 帐户上可用的
关于从 .NET Framework 项目中引用 .NET Standard 类库的问题有很多类似的问题,其中 netstandard 库中的 NuGet 包依赖项不会流向 netframework
我已经从互联网上下载了 jna-4.2.2.jar,现在想将这个 jar 导入到我的项目中。但是当我试图将这个 jar 导入我的项目时,出现以下错误。 [2016-06-20 09:35:01 - F
我正在尝试通过编译在 Mac 上安装 rsync 3.2.3。但是,我想安装所有功能。为此,它需要一些库,此处 ( https://download.samba.org/pub/rsync/INSTA
进入 Web 开发有点困难。过去 5 年我一直致力于 winforms 工作。所以我正在努力从一种切换到另一种。前段时间,我使用过 JavaScript,但现在还没有大量的 JavaScript 库
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在寻找一个用Python编写的与logstash(ruby + java)类似的工具/库。 我的目标是: 从 syslog 中解析所有系统日志 解析应用程序特定日志(apache、django、m
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我花了几天时间试图寻找用于 JavaPOS 实现的 .jar 库,但我找不到任何可以工作的东西。我找到了很多像这样的文档:http://jpos.1045706.n5.nabble.com/file/
这个问题在这里已经有了答案: Merge multiple .so shared libraries (2 个答案) 关闭 9 年前。 我有我在代码中使用的第三方库的源代码和对象。该库附带有关如何使
我是一名优秀的程序员,十分优秀!