这是 JavaGuide 的「优质开源项目推荐」第 11 期,每一期我都会精选 5 个高质量的 Java 开源项目。
你可以通过 awesome-java (非常棒的 Java 开源项目集合,找 Java 项目必备)找到更多优质的 Java 开源项目。
MYDB 是一个 Java 语言实现的简易版数据库,部分原理参照自 MySQL、PostgreSQL 和 SQLite。
麻雀虽小,五脏俱全。MYDB 目前已经实现 MVCC、两种事务隔离级别(读提交和可重复读)、死锁处理、简陋的 SQL 解析等关系型数据库的核心功能。
并且,MYDB 作者写了详细的实现教程,教程地址:https://ziyang.moe/cs/project/mydb/
Github 地址:https://github.com/CN-GuoZiyang/MYDB
ip2region 是一个高性能离线 IP 地址定位库,10 微秒级别的查询效率,开箱即用,提供了多种主流编程语言(如 Go,Java,Python)的 xdb 数据生成和查询客户端 API。
通过 ip 地址可以通过自治系统(Autonomous System)找到该 ip 对应的具体地址,这样就可以轻松实现网站用户 ip 归属地类似的功能。
另外,mica-ip2region 这个项目是对这个项目的 stater 封装,目的是方便 Spring Boot 项目使用。
一个轻量、高性能、可集成、可扩展的流程引擎,淘宝工作流TBBPM
引擎之一。
compileflow 专注于纯内存执行,无状态的流程引擎,通过将流程文件转换生成java
代码编译执行,简洁高效。当前是阿里业务中台交易等多个核心系统的流程引擎。
compileflow 介绍
CompreFace 是一个免费开源的人脸识别服务,开箱即用,不需要机器学习技能!
本质上来说,它就是一个基于 Docker 的应用程序,可以用作独立服务器或部署在云中。
transmittable-thread-local(TTL) 基于 InheritableThreadLocal
,你可以将其看做是定制化的 ThreadLocal
,主要用于复用线程场景(比如线程池)下解决异步执行时上下文传递的问题(比如线程池中获取 ThreadLocal
中的数据)。
ThreadLocal
的需求场景即是 transmittable-thread-local
的潜在需求场景。下面是几个典型场景例子:
Session
级Cache
SDK
传递信息Github 地址:https://github.com/alibaba/transmittable-thread-local 。
下面是 TTL 官方的一些资料:
再推荐几篇文章帮助大家理解 TTL 的原理和设计思想:
[1]
TTL 需求场景说明: https://github.com/alibaba/transmittable-thread-local/blob/master/docs/requirement-scenario.md
[2]
TTL 实际业务使用场景与设计实现解析: 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 ··············