新聞中心
有經(jīng)驗的Java開發(fā)者有個特點是善于利用現(xiàn)有的輪子來構建汽車,而不是反復造輪子。如今的Java生態(tài)系統(tǒng)已經(jīng)非常成熟。

成都創(chuàng)新互聯(lián)公司服務項目包括青白江網(wǎng)站建設、青白江網(wǎng)站制作、青白江網(wǎng)頁制作以及青白江網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,青白江網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到青白江省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
在Java快速發(fā)展的幾十年中,涌現(xiàn)出許多優(yōu)秀的開源項目。在大多數(shù)情況下,我們可以在開源社區(qū)中找到合適的開源庫。
許多開發(fā)者已經(jīng)使用和測試了這些庫,通常它們具有良好的性能和穩(wěn)定性。合理地使用這些優(yōu)秀的開源組件可以節(jié)省大量時間,讓你有更多的時間去做其他事情。在本文中,將分享一些Java開發(fā)者應該熟悉的開源類庫。
1 Orika
Orika是一個Java bean映射工具,可以遞歸地將數(shù)據(jù)從一個對象復制到另一個對象。在編寫代碼時,我們通常會發(fā)現(xiàn)需要將對象轉(zhuǎn)換為不同的格式以適應不同的API,例如將DTO轉(zhuǎn)換為POJO或POJO轉(zhuǎn)換為VO。通常,我們需要通過getter/setter完成此操作。Orika可以通過簡單的代碼為您解決這個煩惱,而且性能損失不大。
Maven依賴項:
ma.glasnost.orika
orika-core
1.4.6
示例代碼:
public class UserVo {
private String username;
private String phone;
//省略getter/setter
}
public class User {
private String username;
private String phone;
//省略getter/setter
}
public class OrikaTest {
public static void main(String[] args) {
User user = new User();
user.setPhone("xxxxxx");
user.setUsername("name");
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
UserVo userVo = mapperFactory.getMapperFacade().map(user, UserVo.class);
System.out.println("the copy object: "+userVo);
}
}Orika不僅可以復制簡單的Java對象,還可以復制集合。是不是很棒?
2 Caffeine
Caffeine是一個高性能的內(nèi)存緩存類庫。Caffeine使用W-TinyLFU算法,其讀寫性能比guava更優(yōu)秀。Spring 5已經(jīng)將緩存的默認實現(xiàn)從guava改為了Caffeine。
Maven依賴項:
com.github.ben-manes.caffeine
caffeine
2.9.0
示例代碼:
Cache cache = Caffeine.newBuilder()
.maximumSize(10000)
.expireAfterAccess(60, TimeUnit.SECONDS)
//如果緩存為空,運行以下表達式并將其存儲在緩存中
.build(key-> key+"test");
String key2="test2";
cache.put("test", "cache");
//獲取緩存值,如果為空,則返回null
log.info("key present: [{}] -> [{}]", k, cache.getIfPresent(k));
log.info("key present: [{}] -> [{}]", key2, cache.getIfPresent(key2));
//移除緩存
cache.invalidate(k); 3 Kryo
Kryo是一個快速高效的Java對象序列化框架,具有高性能、序列化流小和簡單API等特點。目前,許多開源項目都在使用Kryo,例如Apache Hive和Apache Spark。以下是Kryo和主要序列化框架的性能比較。
Maven依賴項:
com.esotericsoftware
kryo
5.2.0
示例代碼:
public class KryoSerializer {
private KryoFactory factory =()->{
Kryo kryo = new Kryo();
kryo.setDefaultSerializer(CompatibleFieldSerializer.class);
kryo.setInstantiatorStrategy(new Kryo.DefaultInstantiatorStrategy(new StdInstantiatorStrategy()));
return kryo;
};
private KryoPool pool = new KryoPool.Builder(factory).softReferences().build();
public byte[] serialize(Object object) {
return pool.run(kryo -> {
try(Output output = new Output(2048,-1)) {
kryo.writeClassAndObject(output,object);
output.flush();
return output.toBytes();
}
});
}
public T deserialize(byte[] data) {
try(Input input = new Input(data)) {
return pool.run(kryo -> ((T) kryo.readClassAndObject(input)));
}
}
} 4 Netty
Netty是一個異步事件驅(qū)動的網(wǎng)絡應用程序框架,可用于快速開發(fā)和維護高性能協(xié)議服務器和客戶端。
在網(wǎng)絡編程領域,Netty絕對是占據(jù)主導地位的?;贘ava NIO,Netty使用反應器線程模型,將客戶端連接綁定到特定線程,以避免IO線程頻繁上下文切換。
Netty中的所有IO操作都是異步的,并具有超高的性能。許多開源的Java項目都將Netty作為默認的通信層框架,例如下面要提到的Zookeeper、Elasticsearch和Redisson。
5 Redisson
Redisson采用基于NIO的Netty框架,不僅可以作為Redis的底層驅(qū)動客戶端,還可以以同步、異步、異步流或管道形式發(fā)送Redis命令、執(zhí)行和處理Lua腳本以及處理返回結(jié)果。
在此基礎上,它還集成了更應用解決方案,不僅將原生的Redis哈希、列表、集合、字符串和地理數(shù)據(jù)結(jié)構封裝為Java中最熟悉的數(shù)據(jù)結(jié)構,還實現(xiàn)了分布式鎖等高級應用場景。
Maven依賴項:
org.redisson
redisson
3.16.2
示例代碼:
//獲取和設置鍵值對
RBucket nameRBucket = redisson.getBucket("username");
nameRBucket.set("lance", 60, TimeUnit.SECONDS);
redisson.getBucket("username").get();
//操作哈希表
RMap userMap = redisson.getMap("user");
userMap.put("id", "1");
userMap.put("name", "lance");
userMap.put("age", "30");
userMap.expire(60, TimeUnit.SECONDS);
redisson.getMap("user").get("name");
//操作列表
RList usernames = redisson.getList("usernames");
users.add("lance");
studentRList.expire(60, TimeUnit.SECONDS);
redisson.getList("usernames").get(0); 以上是推薦的五個優(yōu)秀的開源Java庫,上面的代碼只是一個演示,如果您真的想在生產(chǎn)環(huán)境中使用它們,您需要根據(jù)您的項目情況進行打包。希望在閱讀本文后,您可以應用到您的項目中。
網(wǎng)站題目:五個Java開發(fā)者不可不知的編程庫
標題來源:http://fisionsoft.com.cn/article/cosgpjj.html


咨詢
建站咨詢
