自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java開發(fā)人員必知的常用類庫,這些你都知道嗎?

開發(fā) 前端
作為一名程序員,我們要避免重復發(fā)明輪子,盡可能使用一些成熟、優(yōu)秀、穩(wěn)定的的第三方庫,站在巨人的肩膀上搭建可靠、穩(wěn)定的系統(tǒng)。

 作為一名程序員,我們要避免重復發(fā)明輪子,盡可能使用一些成熟、優(yōu)秀、穩(wěn)定的的第三方庫,站在巨人的肩膀上搭建可靠、穩(wěn)定的系統(tǒng)。本篇我整理了Java開發(fā)人員經(jīng)常會使用到的第三方類庫,可能不是很全面,還在持續(xù)收集整理中,朋友們可以關注我的GitHub上的持續(xù)更新,GitHub搜wind7rui/Javalib,或者點擊鏈接https://github.com/wind7rui/Javalib,然后點擊watch/Star/Fork,如果您對項目中的內(nèi)容有建議或者意見,歡迎提出專業(yè)方面的建議,共同維護,請直接在GitHub上以issue或者PR的形式提出,以下我們開始本篇的內(nèi)容。

[[348769]]

應用開發(fā)腳手架

1.Spring Framework

Spring框架為現(xiàn)代基于Java的企業(yè)應用程序提供了一個全面的編程和配置模型,使用開發(fā)基于Java語言的應用更加簡單、便捷。

github:https://github.com/spring-projects/spring-framework/

官網(wǎng):https://spring.io/projects/spring-framework

2.Spring Boot

Spring Boot使創(chuàng)建獨立的、基于Spring的產(chǎn)品級應用程序變得非常容易。

官網(wǎng):https://spring.io/projects/spring-boot

3.Spring Cloud Spring Cloud為開發(fā)人員提供了豐富的使用工具,開發(fā)人員基于這些工具可以快速構建分布式系統(tǒng)中的一些常見功能(例如,配置管理,服務發(fā)現(xiàn),斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖,領導選舉,分布式會話等)。

官網(wǎng):https://spring.io/projects/spring-cloud

Web服務接口

1.Jersey

Jersey是一個REST框架,它提供JAX-RS參考實現(xiàn)等。Jersey提供了自己的api,這些api通過附加的特性和實用程序擴展了JAX-RS工具包,從而進一步簡化了RESTful服務和客戶端開發(fā)。Jersey還公開了許多擴展spi,以便開發(fā)人員可以擴展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”。

官網(wǎng):https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/web.html

數(shù)據(jù)持久化框架

1.MyBatis

MyBatis是一個一流的持久性框架,支持自定義SQL、存儲過程和高級映射,它幾乎消除了JDBC代碼、參數(shù)手動設置和結果檢索。MyBatis可以使用簡單的XML或注釋進行配置,并將原語、接口和javapojo(普通的舊Java對象)映射到數(shù)據(jù)庫記錄。

官網(wǎng):https://mybatis.org/mybatis-3/

github:https://github.com/mybatis/mybatis-3

2.Hibernate

Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數(shù)據(jù)庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執(zhí)行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。

官網(wǎng):http://hibernate.org/

Excel讀寫

1.Alibaba EasyExcel

Java解析、生成Excel比較有名的框架有Apache poi、jxl。但他們都存在一個嚴重的問題就是非常的耗內(nèi)存,poi有一套SAX模式的API可以一定程度的解決一些內(nèi)存溢出的問題,但POI還是有一些缺陷,比如07版Excel解壓縮以及解壓后存儲都是在內(nèi)存中完成的,內(nèi)存消耗依然很大。easyexcel重寫了poi對07版Excel的解析,能夠原本一個3M的excel用POI sax依然需要100M左右內(nèi)存降低到幾M,并且再大的excel不會出現(xiàn)內(nèi)存溢出,03版依賴POI的sax模式。在上層做了模型轉(zhuǎn)換的封裝,讓使用者更加簡單方便。

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文件。

官網(wǎng):https://www.csvreader.com/java_csv.php

API:http://javacsv.sourceforge.net/

3.Super CSV

Super CSV是一個快速、免費跨平臺的CSV格式數(shù)據(jù)的讀寫庫,可以方便的處理對象、Map、列表的讀寫操作,以及自動化的類型轉(zhuǎn)換和數(shù)據(jù)檢查功能。

官網(wǎng):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對象轉(zhuǎn)換為其JSON表示形式。它還可以用于將JSON字符串轉(zhuǎn)換為等效的Java對象。Gson可以處理任意Java對象,包括您沒有源代碼的現(xiàn)有對象。

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

官網(wǎng):https://dom4j.github.io/

2.StAX

StAX全稱Streaming API for XML,一種全新的、基于流的Java XML解析標準類庫。

3.jaxb-api

jaxb-api用于執(zhí)行XML文檔和Java對象之間的映射。

文檔:https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/JAXB.html

4.XStream

XStream是一個可以輕易的將Java對象和xml文檔相互轉(zhuǎn)換的類庫。

官網(wǎng):http://x-stream.github.io/

IO讀寫

1.Apache Commons IO Apache Commons IO是一個實用程序庫,可協(xié)助開發(fā)IO功能。

官網(wǎng):https://commons.apache.org/proper/commons-io/

2.Okio

Okio是對java.io和java.nio的補充,使訪問、存儲和處理數(shù)據(jù)變得更加容易。

github:https://github.com/square/okio

HTTP客戶端

1.OkHttp

OkHttp是一個HTTP客戶端,使用OkHttp很容易,它的請求/響應API具有流暢的構建器和不變性。它支持同步阻塞調(diào)用和帶有回調(diào)的異步調(diào)用。

github:https://github.com/square/okhttp

官網(wǎng):https://square.github.io/okhttp/

2.Apache HttpClient

Apache HttpClient提供了對基本HTTP協(xié)議的強大支持,用于構建基于HTTP的客戶端。

官網(wǎng):http://hc.apache.org/index.html

github:https://github.com/apache/httpcomponents-client

Java Bean復制

1.Cglib BeanCopier

Cglib庫內(nèi)的BeanCopier提供了ava Bean到Java Bean的復制功能,性能優(yōu)于Spring BeanUtils。

 

  1. BeanCopier beanCopier = BeanCopier.create(sourceClass, targetClass, false); 
  2. beanCopier.copy(source, target, null); 

 

2.Spring BeanUtils

Spring框架的Spring Beans庫中的BeanUtils也實現(xiàn)了Java Bean到Java Bean的復制。

3.Dozer

Dozer是Java Bean到Java Bean映射器,它以遞歸方式將數(shù)據(jù)從一個對象復制到另一個對象。Dozer支持簡單屬性映射、復雜類型映射、雙向映射、隱式顯式映射以及遞歸映射。Dozer不僅支持屬性名稱之間的映射,而且還可以在類型之間自動轉(zhuǎn)換。開箱即用地支持大多數(shù)轉(zhuǎn)換方案,同時也允許您通過XML或基于代碼的配置指定自定義轉(zhuǎn)換。

github:https://github.com/DozerMapper/dozer

文檔:https://dozermapper.github.io/gitbook/

Redis客戶端

1.Redission

Redis推薦的Java客戶端Redisson是一個在Redis的基礎上實現(xiàn)的Java駐內(nèi)存數(shù)據(jù)網(wǎng)格(In-Memory Data Grid),它充分利用了Redis鍵值數(shù)據(jù)庫提供的一系列優(yōu)勢,基于Java實用工具包中常用接口,為使用者提供了一系列具有分布式特性的常用工具類,讓使用Redis更加簡單、便捷,從而讓使用者能夠?qū)⒏嗑械綐I(yè)務邏輯處理上。

github:https://github.com/redisson/redisson/

2.Jedis

Redis推薦的Java客戶端。

github:https://github.com/xetorthio/jedis

數(shù)據(jù)庫連接池

數(shù)據(jù)庫連接池提供了一套高效的連接分配、使用策略, 最終實現(xiàn)連接的高效管理。

1.HikariCP

快速、簡單、可靠。HikariCP是“零開銷”生產(chǎn)就緒的JDBC連接池。

github:https://github.com/brettwooldridge/HikariCP

2.Druid

Druid是Java語言中最好的數(shù)據(jù)庫連接池之一,Druid能夠提供強大的監(jiān)控和擴展功能。

github:https://github.com/alibaba/druid/

3.Tomcat JDBC

JDBC連接池是Apache Commons DBCP連接池的替代品。

官網(wǎng):http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

網(wǎng)絡編程

1.Netty

Netty是一個廣泛使用的Java網(wǎng)絡編程框架。

github:https://github.com/netty/netty

官網(wǎng):https://netty.io/

文件上傳

1.Apache Commons FileUpload

Apache Commons FileUpload使高性能的文件上傳功能變得容易。

官網(wǎng):http://commons.apache.org/proper/commons-fileupload/

發(fā)送郵件

1.Apache Commons Email

Apache commons Email旨在提供用于發(fā)送電子郵件的API,它建立在Java Mail API之上,它的目標就是簡便。

官網(wǎng):http://commons.apache.org/proper/commons-email/

編碼和解碼

1.Apache Commons Codec

Apache Commons Codec提供了常見編碼器和解碼器的實現(xiàn),例如Base64,Hex,Phonetic和URL。

官網(wǎng):http://commons.apache.org/proper/commons-codec/

IO操作

1.Apache Commons IO

簡單、快捷的IO操作。

官網(wǎng):http://commons.apache.org/proper/commons-io/index.html

對象池

1.Apache Commons Pool

提供了通用對象池。

官網(wǎng):http://commons.apache.org/proper/commons-pool/

java.lang包工具類

1.Apache Commons Lang

為java.lang中的類提供額外的功能,例如StringUtils、DateUtils、RandomUtils、FastDateFormat(線程安全版本的SimpleDateFormat)。

官網(wǎng):http://commons.apache.org/proper/commons-lang/index.html

集合操作

1.Apache Commons Collections

集合相關操作工具類。

官網(wǎng):http://commons.apache.org/proper/commons-collections/

2.Guava

Guava是Google的一組核心Java庫,除了可以操作我們常用的集合類型之外,還可以操作新的集合類型(例如多圖和多集)和不可變的集合。

github:https://github.com/google/guava

全能型工具類

1.Guava

Guava是Google的一組核心Java庫,其中包括新的集合類型(例如多圖和多集),不可變的集合,圖形庫以及用于并發(fā),I / O,哈希,緩存,基元,字符串等的實用程序!它廣泛用于Google的大多數(shù)Java項目中,也被許多其他公司廣泛使用。

github:https://github.com/google/guava

2.Hutool

Hutool是一個Java工具包,也只是一個工具包,它幫助我們簡化每一行代碼,減少每一個方法,讓Java語言也可以“甜甜的”。

github:https://github.com/looly/hutool

日期和時間操作

1.Joda-Time

Joda-Time提供了Java日期和時間類的質(zhì)量替代。

官網(wǎng):https://www.joda.org/joda-time/

單元測試

1.JUnit

官網(wǎng):https://junit.org/junit5/

2.Mockito

Mockito是一個Java單元測試模擬框架。

官網(wǎng):https://site.mockito.org/

3.PowerMock

PowerMock也是一個Java單元測試模擬框架,它可以模擬靜態(tài)方法、構造函數(shù)、最終類和方法、私有方法、刪除靜態(tài)初始化器等。

官網(wǎng):http://powermock.github.io/

4.moco

在日常接口測試的工作中,經(jīng)常需要依賴其他系統(tǒng)的API,但是聯(lián)調(diào)不常有,只能自己通過mock完成數(shù)據(jù)依賴。Moco是一個模擬服務器端服務的項目,可以用于測試打樁。

github:https://github.com/dreamhead/moco

安全框架

1.Apache Shiro

Apache Shiro是一個功能強大且易于使用的Java安全框架,它用于身份驗證、授權、加密和會話管理。使用Shiro易于理解的API,可以快速輕松地保護任何應用程序,從最小的移動應用程序到最大的Web和企業(yè)應用程序。

官網(wǎng):http://shiro.apache.org/

日志

1.SLF4J + Logback

SLF4J是為各種loging APIs提供一個簡單統(tǒng)一的接口,從而使得最終用戶能夠在部署的時候配置自己希望的loging APIs實現(xiàn),它是一個日志接口。

Logback是由log4j創(chuàng)始人設計的又一個開源日志組件,它是一個日志的實現(xiàn)。

SLF4J官網(wǎng):http://www.slf4j.org/

Logback官網(wǎng):https://logback.qos.ch/

對象池

1.Apache Commons Pool

Apache Commons Pool提供了對象池API和一系列對象池實現(xiàn)。

官網(wǎng):https://commons.apache.org/proper/commons-pool/

基本網(wǎng)絡通訊

1.Apache Commons Net

Apache Commons Net庫實現(xiàn)了許多基本互聯(lián)網(wǎng)協(xié)議的客戶端。該庫的目的是提供基本協(xié)議訪問,而不是更高級別的抽象。

官網(wǎng):http://commons.apache.org/proper/commons-net/index.html

作業(yè)調(diào)度框架(定時任務)

1.Quartz

Quartz是一個開源的作業(yè)調(diào)度框架,它完全由Java編寫,能夠用它來為執(zhí)行一個作業(yè)而創(chuàng)建簡單的或復雜的調(diào)度。

官網(wǎng):http://www.quartz-scheduler.org/

github:https://github.com/quartz-scheduler/quartz

2.ElasticJob

ElasticJob是一種分布式調(diào)度解決方案,解決了Quartz不支持分布式的弊端。Elastic job主要的功能有支持彈性擴容,通過Zookepper集中管理和監(jiān)控job,支持失效轉(zhuǎn)移等。

github:https://github.com/apache/shardingsphere-elasticjob

配置中心

1.Nacos

Nacos是一個更易于構建云原生應用的動態(tài)服務發(fā)現(xiàn)、配置管理和服務管理平臺。Nacos的動態(tài)配置服務讓您能夠以中心化、外部化和動態(tài)化的方式管理所有環(huán)境的配置。動態(tài)配置消除了配置變更時重新部署應用和服務的需要。配置中心化管理讓實現(xiàn)無狀態(tài)服務更簡單,也讓按需彈性擴展服務更容易。

官網(wǎng):https://nacos.io/

github:https://github.com/alibaba/nacos

2.Spring Cloud Config

Spring Cloud Config為分布式系統(tǒng)中的外部化配置提供服務器端和客戶端支持。使用Config Server,您可以在中心位置管理所有環(huán)境中應用程序的外部屬性。

文檔:https://cloud.spring.io/spring-cloud-config/reference/html/

3.Apollo

Apollo(阿波羅)是攜程框架部門研發(fā)的分布式配置中心,能夠集中化管理應用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r推送到應用端,并且具備規(guī)范的權限、流程治理等特性,適用于微服務配置管理場景。

github:https://github.com/ctripcorp/apollo

限流

1.Guava RateLimiter

RateLimiter基于令牌桶算法,即以用戶設定的恒定速率向令牌桶內(nèi)放置令牌,用戶來執(zhí)行任務時,只有拿到令牌才能執(zhí)行。

2.Sentinel

Sentinel是面向分布式服務架構的高可用防護組件,主要以流量為切入點,從流量控制、熔斷降級、系統(tǒng)自適應保護等多個維度來幫助用戶保障微服務的穩(wěn)定性。

官網(wǎng):https://sentinelguard.io/

github:https://github.com/alibaba/Sentinel

熔斷降級

當調(diào)用鏈路中某個資源出現(xiàn)不穩(wěn)定,例如,表現(xiàn)為timeout,異常比例升高的時候,則對這個資源的調(diào)用進行限制,并讓請求快速失敗,避免影響到其它的資源,最終產(chǎn)生雪崩的效果。

1.Sentinel

Sentinel通過并發(fā)線程數(shù)進行限制和通過響應時間對資源進行降級兩種手段對資源調(diào)用進行限制,讓請求快速失敗,避免影響到其它的資源。

官網(wǎng):https://sentinelguard.io/

github:https://github.com/alibaba/Sentinel

2.Hystrix

Hystrix 通過線程池的方式,來對資源進行了隔離。這樣做的好處是資源和資源之間做到了最徹底的隔離。缺點是除了增加了線程切換的成本,還需要預先給各個資源做線程池大小的分配。Hystrix不再處于主動開發(fā)中,并且當前處于維護模式,官方推薦使用Resilience4j替代。

github:https://github.com/Netflix/Hystrix

3.Resilience4j

Resilience4j是受Netflix Hystrix啟發(fā)的輕量級容錯庫,但專為Java 8和函數(shù)式編程而設計。輕巧,因為該庫僅使用Vavr,而Vavr沒有任何其他外部庫依賴項。

github:https://github.com/resilience4j/resilience4j

分庫分表

1.Apache ShardingSphere

Apache ShardingSphere定位為關系型數(shù)據(jù)庫中間件,旨在充分合理地在分布式的場景下利用關系型數(shù)據(jù)庫的計算和存儲能力,而并非實現(xiàn)一個全新的關系型數(shù)據(jù)庫。支持數(shù)據(jù)分片、讀寫分離、多數(shù)據(jù)副本、數(shù)據(jù)加密、影子庫壓測等功能。

官網(wǎng):https://shardingsphere.apache.org/

github:https://github.com/apache/shardingsphere

2.Mycat

Mycat是數(shù)據(jù)庫分庫分表中間件。

官網(wǎng):http://www.mycat.org.cn/

github:https://github.com/MyCATApache

序列化

1.Kryo

Kryo是用于Java的快速高效的二進制對象圖序列化框架。該項目的目標是高速,小尺寸和易于使用的API。每當需要將對象持久保存到文件,數(shù)據(jù)庫還是通過網(wǎng)絡時,該項目都是有用的。

github:https://github.com/EsotericSoftware/kryo

2.Hessian

Hessian是一款支持多種語言進行序列化操作的框架技術,同時在進行序列化之后產(chǎn)生的碼流也較小,處理數(shù)據(jù)的性能方面遠超于java內(nèi)置的jdk序列化方式。

官網(wǎng):http://hessian.caucho.com/

3.Protobuf

Protobuf是谷歌開源的一個靈活的、高效的用于序列化數(shù)據(jù)的協(xié)議。相比較XML和JSON格式,protobuf更小、更快、更便捷。

github:https://github.com/protocolbuffers/protobuf

官網(wǎng):https://developers.google.com/protocol-buffers/

RPC框架

1.Dubbo Apache Dubbo是一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:面向接口的遠程方法調(diào)用,智能容錯和負載均衡,以及服務自動注冊和發(fā)現(xiàn)。

官網(wǎng):http://dubbo.apache.org/zh-cn/

github:https://github.com/apache/dubbo

2.Thrift Thrift是一個軟件框架(遠程過程調(diào)用框架),用來進行可擴展且跨語言的服務的開發(fā)。它結合了功能強大的軟件堆棧和代碼生成引擎,以構建在C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml這些編程語言間無縫結合的、高效的服務。Thrift最初由facebook開發(fā),07年四月開放源碼,08年5月進入apache孵化器,現(xiàn)在是 Apache 基金會的頂級項目。Thrift允許你定義一個簡單的定義文件中的數(shù)據(jù)類型和服務接口,以作為輸入文件,編譯器生成代碼用來方便地生成RPC客戶端和服務器通信的無縫跨編程語言。

官網(wǎng):http://thrift.apache.org/

3.gRPC gRPC是一個現(xiàn)代的、開源的、高性能的遠程過程調(diào)用(RPC)框架,可以在任何地方運行。gRPC使客戶機和服務器應用程序能夠透明地通信,并簡化了連接系統(tǒng)的構建。目前提供C、Java和Go語言版本,分別是:grpc, grpc-java, grpc-go. 其中C版本支持C, C++, Node.js, Python, Ruby, Objective-C, PHP和C#支持。

官網(wǎng):https://www.grpc.io/

github:https://github.com/grpc/grpc

責任編輯:華軒 來源: 今日頭條
相關推薦

2020-10-25 23:26:14

Java開發(fā)代碼

2018-04-17 12:51:29

Java常用類庫API

2021-08-07 15:38:07

開發(fā)Java工具

2011-03-28 13:43:05

WebjQueryHTML 5

2021-08-05 18:21:29

Autowired代碼spring

2020-12-24 15:26:07

Redis數(shù)據(jù)庫

2017-01-12 19:47:59

Android秘訣技巧和資源

2016-01-11 09:48:07

2021-09-13 19:28:42

JavaNetty開發(fā)

2016-03-18 19:03:35

認知計算IBM

2022-11-10 09:00:41

2019-02-12 11:15:15

Spring設計模式Java

2019-07-08 10:18:38

MPLSIP數(shù)據(jù)

2009-09-10 14:18:03

PHP庫

2017-04-12 09:24:45

開發(fā)編程Java

2024-03-26 10:10:45

JavaScript操作符操作表達式

2020-05-27 11:30:54

Chrome DevT前端命令

2021-07-29 06:55:03

Spring@AutowriedbyType注入

2022-09-07 09:01:14

JS操作符運算符

2020-04-20 18:15:46

開發(fā)自信技術
點贊
收藏

51CTO技術棧公眾號