手寫一個簡易版數(shù)據(jù)庫!項(xiàng)目經(jīng)驗(yàn)穩(wěn)了
近期文章精選 :
這是 JavaGuide 的「優(yōu)質(zhì)開源項(xiàng)目推薦」第 11 期,每一期我都會精選 5 個高質(zhì)量的 Java 開源項(xiàng)目。
前 10 期的「優(yōu)質(zhì)開源項(xiàng)目推薦」傳送門:
一款基于 Spring Boot + Vue 的一站式開源持續(xù)測試平臺。 用 Java 寫個沙盒塔防游戲!已上架 Steam,Apple Store 一款基于 Java 的可視化 HTTP API 接口開發(fā)神器 一款對業(yè)務(wù)代碼無侵入的可視化 Java 進(jìn)程管理平臺 一個比 Spring 更輕量級的 Web 框架!!!微軟、紅帽都在用 輕量!Google 開源了一個簡易版 Spring ! 一款跨時代的高性能 Java 框架!啟動速度快到飛起 Spring Boot+MyBatis Plus+JWT 問卷系統(tǒng)!開源! 手寫一個簡化版的 Spring Cloud! 這個 SpringBoot+ Vue 開源博客系統(tǒng)太酷炫了!
你可以通過 awesome-java (非常棒的 Java 開源項(xiàng)目集合,找 Java 項(xiàng)目必備)找到更多優(yōu)質(zhì)的 Java 開源項(xiàng)目。
Github 地址:https://github.com/CodingDocs/awesome-java Gitee 地址:https://gitee.com/SnailClimb/awesome-java 在線閱讀:https://javaguide.cn/open-source-project/

MYDB:一個 Java 實(shí)現(xiàn)的簡單的數(shù)據(jù)庫
MYDB 是一個 Java 語言實(shí)現(xiàn)的簡易版數(shù)據(jù)庫,部分原理參照自 MySQL、PostgreSQL 和 SQLite。
麻雀雖小,五臟俱全。MYDB 目前已經(jīng)實(shí)現(xiàn) MVCC、兩種事務(wù)隔離級別(讀提交和可重復(fù)讀)、死鎖處理、簡陋的 SQL 解析等關(guān)系型數(shù)據(jù)庫的核心功能。
并且,MYDB 作者寫了詳細(xì)的實(shí)現(xiàn)教程,教程地址:https://ziyang.moe/cs/project/mydb/

Github 地址:https://github.com/CN-GuoZiyang/MYDB
ip2region:離線 IP 地址定位庫
ip2region 是一個高性能離線 IP 地址定位庫,10 微秒級別的查詢效率,開箱即用,提供了多種主流編程語言(如 Go,Java,Python)的 xdb 數(shù)據(jù)生成和查詢客戶端 API。

通過 ip 地址可以通過自治系統(tǒng)(Autonomous System)找到該 ip 對應(yīng)的具體地址,這樣就可以輕松實(shí)現(xiàn)網(wǎng)站用戶 ip 歸屬地類似的功能。
Gitee:https://gitee.com/lionsoul/ip2region GitHub:https://github.com/lionsoul2014/ip2region
另外,mica-ip2region 這個項(xiàng)目是對這個項(xiàng)目的 stater 封裝,目的是方便 Spring Boot 項(xiàng)目使用。
Gitee:https://gitee.com/lionsoul/ip2region 官方文檔:https://www.dreamlu.net/components/mica-ip2region.html
compileflow:輕量級流程引擎
一個輕量、高性能、可集成、可擴(kuò)展的流程引擎,淘寶工作流TBBPM引擎之一。
compileflow 專注于純內(nèi)存執(zhí)行,無狀態(tài)的流程引擎,通過將流程文件轉(zhuǎn)換生成java代碼編譯執(zhí)行,簡潔高效。當(dāng)前是阿里業(yè)務(wù)中臺交易等多個核心系統(tǒng)的流程引擎。

Github :https://github.com/alibaba/compileflow 。 官方 Demo : https://github.com/compileflow/compileflow-demo 。 基于 IntelliJ IDEA 流程可視化插件 : https://github.com/alibaba/compileflow-idea-designer
CompreFace:免費(fèi)開源的人臉識別服務(wù)
CompreFace 是一個免費(fèi)開源的人臉識別服務(wù),開箱即用,不需要機(jī)器學(xué)習(xí)技能!
本質(zhì)上來說,它就是一個基于 Docker 的應(yīng)用程序,可以用作獨(dú)立服務(wù)器或部署在云中。

Github:https://github.com/exadel-inc/CompreFace 官網(wǎng):https://exadel.com/solutions/compreface/
transmittable-thread-local:定制化的 ThreadLocal
transmittable-thread-local(TTL) 基于 InheritableThreadLocal ,你可以將其看做是定制化的 ThreadLocal ,主要用于復(fù)用線程場景(比如線程池)下解決異步執(zhí)行時上下文傳遞的問題(比如線程池中獲取 ThreadLocal 中的數(shù)據(jù))。
ThreadLocal的需求場景即是 transmittable-thread-local的潛在需求場景。下面是幾個典型場景例子:
分布式跟蹤系統(tǒng) 或 全鏈路壓測(即鏈路打標(biāo)) 日志收集記錄系統(tǒng)上下文 Session級Cache應(yīng)用容器或上層框架跨應(yīng)用代碼給下層 SDK傳遞信息
Github 地址:https://github.com/alibaba/transmittable-thread-local 。
下面是 TTL 官方的一些資料:
TTL 需求場景說明[1] TTL 實(shí)際業(yè)務(wù)使用場景與設(shè)計實(shí)現(xiàn)解析[2]
再推薦幾篇文章幫助大家理解 TTL 的原理和設(shè)計思想:
微服務(wù)中使用阿里開源的 TTL,優(yōu)雅的實(shí)現(xiàn)身份信息的線程間復(fù)用 通過 transmittable-thread-local 源碼理解線程池線程本地變量傳遞的原理[3] 如何在子線程和線程池中使用 ThreadLocal 傳輸上下文[4]
參考資料
TTL 需求場景說明: https://github.com/alibaba/transmittable-thread-local/blob/master/docs/requirement-scenario.md
[2]TTL 實(shí)際業(yè)務(wù)使用場景與設(shè)計實(shí)現(xiàn)解析: https://github.com/alibaba/transmittable-thread-local/issues/123
[3]通過 transmittable-thread-local 源碼理解線程池線程本地變量傳遞的原理: https://www.cnblogs.com/throwable/p/12817754.html
[4]如何在子線程和線程池中使用 ThreadLocal 傳輸上下文: https://www.jianshu.com/p/4093add7f2cd
·········· END ··············
?? 專屬專欄/一對一提問/簡歷修改/學(xué)習(xí)打卡/讀書活動,歡迎加入 JavaGuide 知識星球。目前已經(jīng) 1.3w人加入,即將調(diào)整價格。

推薦閱讀 :
??如果本文對你有幫助的話,歡迎 點(diǎn)贊&在看&分享 ,這對我繼續(xù)分享&創(chuàng)作優(yōu)質(zhì)文章非常重要。非常感謝!
