幾個很火的 Java 項目,開源!
大家好,我是魚皮,今天看到好友 Guide 哥推薦了幾個 Java 的開源項目,都很不錯,給大家分享一下~
分別是:
Mindustry :一款 Java 語言編寫的沙盒塔防游戲,目前已經上架 Apple Store 和 Steam。 Caffeine :性能超強的本地緩存解決方案。 JADX : 一款強大的反編譯工具。 Debezium :一個用于追蹤數據更改(change data capture ,CDC)的開源項目。你可以通過 Debezium 輕松實現數據同步,將一個數據源中的數據同步到其他數據源,比如將 MySQL 中的數據同步到 ES 中。 JNDI-Injection-Exploit :一個開箱即用的 JNDI 注入工具。

Mindustry:沙盒塔防游戲

Mindustry 是一款 Java 語言編寫的沙盒塔防游戲,目前已經上架 Apple Store、Google Play 和 Steam,支持 Windows,Linux,安卓等平臺。
是的?。?!你沒看錯,這款游戲就是使用 Java 語言編寫的。
目前的話,這個游戲在 Apple Store 評分 4.7,Google Play 評分 4.6, Steam 上也有 96% 的好評。非常厲害了!


這個游戲的很多用戶直呼:“一玩就停不下來了!”

另外,這個項目使用 Gradle 構建,如果你想要在本地運行這個游戲的話,你的 JDK 版本至少是 JDK16。
作者在 README 文檔中提供了這個項目詳細的運行方法,你可以直接在本地對游戲進行修改。
不過,最讓我佩服的是這個項目作者的毅力。雖然這個游戲已經發(fā)布 4 年多了,但是作者依然還在不斷維護游戲,不斷完善游戲的玩法。
大家感受一下項目作者的提交記錄吧!簡直恐怖如斯!

項目地址:https://github.com/Anuken/Mindustry 官網:https://mindustrygame.github.io/
Caffeine:本地緩存之王
Caffeine 是一款強大的本地緩存解決方案,性能非常 ??。
有多牛呢?看下 Caffeine 和其他可以提供本地緩存的工具的性能對比吧!

Caffeine 和 Guava 一樣,通過 API 的方式即可使用緩存。
LoadingCache?graphs?=?Caffeine.newBuilder()
????.maximumSize(10_000)
????.expireAfterWrite(Duration.ofMinutes(5))
????.refreshAfterWrite(Duration.ofMinutes(1))
????.build(key?->?createExpensiveGraph(key));
不過,相比于 Guava 提供的緩存功能來說 Caffeine 在各個方面都要更加優(yōu)秀。像 Redisson、Cassandra、Hbase、Neo4j、Druid 等知名開源項目都用到了 Caffeine。
相關文章推薦:萬字詳解本地緩存之王 Caffeine 的高性能設計之道!
JADX:強大的反編譯工具
jadx 是一款功能強大的反編譯工具,使用起來簡單方便,不光提供了命令行程序,還提供了 GUI 程序。一般情況下,我們直接使用 GUI 程序就可以了。
jadx 支持 Windows、Linux、 macOS,能夠幫我們打開.apk, .dex, .jar,.zip等格式的文件
就比如說我們需要反編譯一個 jar 包查看其源碼的話,直接將 jar 包拖入到 jadx 中就可以了。效果如下:

再比如說我們想看看某個 apk 的源碼,我們拿到 apk 之后直接拖入進 jadx 中就可以了。效果如下:

除此之外,這個工具具備下面這些特性:
自帶強大的搜索功能,支持多種匹配模式; 支持查看類,變量或者方法使用情況; 支持在源碼中添加注釋 支持反混淆 ......
這個工具使用起來還挺簡單的,立個 flag :下周出一篇 JADX 使用介紹的文章。
項目地址:https://github.com/skylot/jadx
Debezium:追蹤數據更改
Debezium 是一個用于追蹤數據更改(change data capture ,CDC)的開源項目,基于 Java 語言,利用 Kafka 和 Kafka Connect 實現持久性、可靠性和容錯性,工作原理類似大家比較熟悉的 Canal、Maxwell,通過數據庫日志來獲取變更。
CDC(Change Data Capture)是一種軟件設計模式,用于確定和跟蹤已變更的數據,以便可以對更改后的數據采取措施,
Debezium 已經支持 MySQL、PostgreSQL、Oracle、Cassandra、MongoDB、SQL Server 等數據庫。
你可以使用 Debezium 來監(jiān)控你的數據庫,每一個提交的行級別(row-level)的更改都會被捕獲。因此,你可以通過 Debezium 輕松實現數據同步,將一個數據源中的數據同步到其他數據源,比如將 MySQL 中的數據同步到 ES 中。
下圖是基于 Debezium 追蹤數據更改常見的一種架構:

相對于 ETL 數據同步方案來說,Debezium 這種方式更加靈活。
Debezium 的官方文檔中還介紹了很多其他有價值的使用場景,感興趣的小伙伴可以自己去看看。

項目地址 :https://github.com/debezium/debezium 中文介紹:https://github.com/debezium/debezium/blob/main/README_ZH.md 官網:https://debezium.io/ 官方文檔:https://debezium.io/documentation/
相關文章推薦:
JNDI-Injection-Exploit:JNDI 注入工具
JNDI-Injection-Exploit 這個項目是一個開箱即用的 JNDI 注入工具,用于生成 JNDI 鏈接并啟動后端相關服務,可用于 Fastjson、Jackson 等相關漏洞的驗證。
JNDI 是什么呢? 簡單來說,JNDI (Java Naming and Directory Interface) 是一組應用程序接口,類似于一個索引中心,它允許客戶端通過 jndiName 來定位用戶、網絡、機器、對象和服務等各種資源。
//指定需要查找name的名稱
String?jndiName=?"jndiName";
//初始化默認環(huán)境
Context?context?=?new?InitialContext();
//查找該name對應的資源部
context.lookup(jndiName);
當 jndiName 變量可控時,如果獲取到的資源是遠程 class 文件的話,就可能會觸發(fā)執(zhí)行惡意代碼,這也就是我們常說的 JNDI 注入。

JNDI 這家伙帶來了很多重大的漏洞,就比如前段時間技術圈刷屏的 Log4j2 重大漏洞?就是這玩意引起的。
項目地址:https://github.com/welk1n/JNDI-Injection-Exploit
相關文章推薦:
深入理解 JNDI 注入與 Java 反序列化漏洞利用[1] 頻頻闖禍的 JNDI 到底是個什么玩意兒? log4j2 漏洞簡單小計[2]
參考資料
深入理解 JNDI 注入與 Java 反序列化漏洞利用: https://kingx.me/Exploit-Java-Deserialization-with-RMI.html
[2]log4j2 漏洞簡單小計: https://juejin.cn/post/7042458032701177887
往期推薦
