Skip to content

Commit 5de04d1

Browse files
committed
[docs update]新增Bean 映射、字节码操作等类别开源项目
1 parent 4a924c7 commit 5de04d1

File tree

5 files changed

+70
-69
lines changed

5 files changed

+70
-69
lines changed

docs/open-source-project/readme.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ category: 开源项目
77

88
精选 GitHub 和 Gitee 上优质的 Java 开源项目。
99

10+
灵感来源于[awesome-java](https://github.com/akullpp/awesome-java) 这个项目,可以看作是这个项目的中文本土版本,项目类型更全面且加入了更多中文开源项目。
11+
1012
欢迎大家在项目 [issues 区](https://github.com/CodingDocs/awesome-java/issues)推荐自己认可的 Java 开源项目,让我们共同维护一个优质的 Java 开源项目精选集!
1113

1214
- GitHub 地址:[https://github.com/CodingDocs/awesome-java](https://github.com/CodingDocs/awesome-java)

docs/open-source-project/system-design.md

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,25 @@ icon: "xitongsheji"
66

77
## 基础框架
88

9-
- [Spring Boot](https://github.com/spring-projects/spring-boot "spring-boot"):Spring Boot 可以轻松创建独立的生产级基于 Spring 的应用程序,内置 web 服务器让你可以像运行普通 Java 程序一样运行项 目。另外,大部分 Spring Boot 项目只需要少量的配置即可,这有别于 Spring 的重配置。
9+
- [Spring Boot](https://github.com/spring-projects/spring-boot "spring-boot"):Spring Boot 可以轻松创建独立的生产级基于 Spring 的应用程序内置 web 服务器让你可以像运行普通 Java 程序一样运行项 目。另外,大部分 Spring Boot 项目只需要少量的配置即可,这有别于 Spring 的重配置。
1010
- [Javalin](https://github.com/tipsy/javalin):一个轻量级的 Web 框架,同时支持 Java 和 Kotlin,被微软、红帽、Uber 等公司使用。
1111
- [Quarkus](https://github.com/quarkusio/quarkus) : 用于编写 Java 应用程序的云原生和容器优先的框架。
1212
- [Guice](https://github.com/google/guice):Google 开源的一个轻量级依赖注入框架,相当于一个功能极简化的轻量级 Spring Boot。在某些情况下非常实用,就比如说我们的项目只需要使用依赖注入,不需要 AOP 等功能特性。
1313
- [SOFABoot](https://github.com/sofastack/sofa-boot):SOFABoot 基于 Spring Boot ,不过在其基础上增加了 Readiness Check,类隔离,日志空间隔离等等能力。 配套提供的还有:SOFARPC(RPC 框架)、SOFABolt(基于 Netty 的远程通信框架)、SOFARegistry(注册中心)...详情请参考:[SOFAStack](https://github.com/sofastack)
1414
- [Spring Batch](https://github.com/spring-projects/spring-batch) : Spring Batch 是一个轻量级但功能又十分全面的批处理框架,主要用于批处理场景比如从数据库、文件或队列中读取大量记录。不过,需要注意的是:Spring Batch 不是调度框架。商业和开源领域都有许多优秀的企业调度框架比如 Quartz、XXL-JOB、Elastic-Job。它旨在与调度程序一起工作,而不是取代调度程序。更多介绍请参考 [Spring Batch 官方文档](https://docs.spring.io/spring-batch/docs/4.3.x/reference/html/spring-batch-intro.html#spring-batch-intro),入门教程可以参考 [Spring Batch 从入门到实战](https://mrbird.cc/Spring-Batch入门.html)
1515

16+
## Bean 映射
17+
18+
- [MapStruct](https://github.com/mapstruct/mapstruct)(推荐):满足JSR269规范的一个Java注解处理器,用于为Java Bean生成类型安全且高性能的映射。它基于编译阶段生成get/set代码,此实现过程中没有反射,不会造成额外的性能损失。
19+
- [JMapper](https://github.com/jmapper-framework/jmapper-core) : 一个高性能且易于使用的 Bean 映射框架。
20+
21+
## 字节码操作
22+
23+
- [ASM](https://asm.ow2.io/):通用 Java 字节码操作和分析框架。它可用于直接以二进制形式修改现有类或动态生成类。
24+
- [Byte Buddy](https://github.com/raphw/byte-buddy):Java字节码生成和操作库,用于在 Java 应用程序运行时创建和修改 Java 类,无需使用编译器
25+
- [Javassist](https://github.com/jboss-javassist/javassist):动态编辑Java字节码的类库。
26+
- [Recaf](https://github.com/Col-E/Recaf):现代Java 字节码编辑器,基于 ASM(Java 字节码操作框架) 来修改字节码,可简化编辑已编译 Java 应用程序的过程。
27+
1628
## 数据库
1729

1830
### 数据库连接池
@@ -57,8 +69,6 @@ icon: "xitongsheji"
5769

5870
## 测试
5971

60-
为了能让我们编写的系统更加健壮,必要的测试(UI 测试、单元测试...)是必须的。
61-
6272
### 测试框架
6373

6474
- [JUnit](http://junit.org/) : Java 测试框架。
@@ -92,25 +102,14 @@ icon: "xitongsheji"
92102
- [PowerJob](https://gitee.com/KFCFans/PowerJob):新一代分布式任务调度与计算框架,支持 CRON、API、固定频率、固定延迟等调度策略,提供工作流来编排任务解决依赖关系,使用简单,功能强大,文档齐全,欢迎各位接入使用!<http://www.powerjob.tech/>
93103
- [DolphinScheduler](https://github.com/apache/dolphinscheduler):分布式易扩展的可视化工作流任务调度平台。
94104

95-
相关阅读:
96-
97-
- [Spring Job、Quartz、XXL-Job 对比+全解析](https://mp.weixin.qq.com/s/jqN4noo5NazckPCehWFgpA)
98-
- [推荐 5 个 YYDS 的 Java 项目](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247518215&idx=1&sn=91e467f39322d2e7979b85fe235822d2&chksm=cea1c7ccf9d64edaf966c95923d72d337bf5e655a773a3d295d65fc92e4535ae5d8b0e6d9d86&token=2063686030&lang=zh_CN#rd)
99-
100105
## 分布式
101106

102107
### API 网关
103108

104-
微服务下一个系统被拆分为多个服务,但是像 安全认证,流量控制,日志,监控等功能是每个服务都需要的,没有网关的话,我们就需要在每个服务中单独实现,这使得我们做了很多重复的事情并且没有一个全局的视图来统一管理这些功能。
105-
106-
综上:一般情况下,网关一般都会提供请求转发、安全认证(身份/权限认证)、流量控制、负载均衡、容灾、日志、监控这些功能。
107-
108-
上面介绍了这么多功能实际上网关主要做了一件事情:请求过滤 。权限校验、流量控制这些都可以通过过滤器实现,请求转也是通过过滤器实现的。
109-
110-
1. [Kong](https://github.com/Kong/kong "kong"):Kong 是一个云原生、快速的、可伸缩的分布式微服务抽象层(也称为 API 网关、API 中间件或在某些情况下称为服务网格)。2015 年作为开源项目发布,其核心价值是高性能和可扩展性。
111-
2. [Soul](https://github.com/Dromara/soul "soul"):高性能、基于 webflux 的反应式 Java API 网关
112-
3. [Spring Cloud Gateway](https://github.com/spring-cloud/spring-cloud-gateway) : 基于 Spring Framework 5.x 和 Spring Boot 2.x 构建的高性能网关。
113-
4. [Zuul](https://github.com/Netflix/zuul) : Zuul 是一个 L7 应用程序网关,它提供了动态路由,监视,弹性,安全性等功能。
109+
- [Kong](https://github.com/Kong/kong "kong"):Kong 是一个云原生、快速的、可伸缩的分布式微服务抽象层(也称为 API 网关、API 中间件或在某些情况下称为服务网格)。2015 年作为开源项目发布,其核心价值是高性能和可扩展性。
110+
- [ShenYu](https://github.com/Dromara/soul "soul"):适用于所有微服务的可伸缩、高性能、响应性 API 网关解决方案。
111+
- [Spring Cloud Gateway](https://github.com/spring-cloud/spring-cloud-gateway) : 基于 Spring Framework 5.x 和 Spring Boot 2.x 构建的高性能网关。
112+
- [Zuul](https://github.com/Netflix/zuul) : Zuul 是一个 L7 应用程序网关,它提供了动态路由,监视,弹性,安全性等功能。
114113

115114
### 配置中心
116115

@@ -121,11 +120,9 @@ icon: "xitongsheji"
121120

122121
### 链路追踪
123122

124-
目前分布式链路追踪系统基本都是根据谷歌的《Dapper 大规模分布式系统的跟踪系统》这篇论文发展而来,主流的有 Pinpoint,Skywalking ,CAT(当然也有其他的例如 Zipkin,Jaeger 等产品,不过总体来说不如前面选取的 3 个完成度高)等。
125-
126-
1. [Skywalking](https://github.com/apache/skywalking "skywalking") : 针对分布式系统的应用性能监控,尤其是针对微服务、云原生和面向容器的分布式系统架构。
127-
2. [Zipkin](https://github.com/openzipkin/zipkin "zipkin"):Zipkin 是一个分布式跟踪系统。它有助于收集解决服务体系结构中的延迟问题所需的时序数据。功能包括该数据的收集和查找。
128-
3. [CAT](https://github.com/dianping/cat "cat"):CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC 框架,RPC 框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
123+
- [Skywalking](https://github.com/apache/skywalking "skywalking") : 针对分布式系统的应用性能监控,尤其是针对微服务、云原生和面向容器的分布式系统架构。
124+
- [Zipkin](https://github.com/openzipkin/zipkin "zipkin"):Zipkin 是一个分布式跟踪系统。它有助于收集解决服务体系结构中的延迟问题所需的时序数据。功能包括该数据的收集和查找。
125+
- [CAT](https://github.com/dianping/cat "cat"):CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC 框架,RPC 框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
129126

130127
相关阅读:[Skywalking 官网对于主流开源链路追踪系统的对比](https://skywalking.apache.org/zh/blog/2019-03-29-introduction-of-skywalking-and-simple-practice.html)
131128

@@ -139,7 +136,7 @@ icon: "xitongsheji"
139136

140137
### 缓存
141138

142-
- [Caffeine](https://github.com/ben-manes/caffeine) : 一款强大的本地缓存解决方案,性能非常 🐂
139+
- [Caffeine](https://github.com/ben-manes/caffeine) : 一款强大的本地缓存解决方案,性能非常强大
143140
- [Redis](https://github.com/redis/redis):一个使用 C 语言开发的内存数据库,分布式缓存首选。
144141

145142
### 消息队列
@@ -159,13 +156,11 @@ icon: "xitongsheji"
159156
- [Kafdrop](https://github.com/obsidiandynamics/kafdrop) : 一个用于查看 Kafka 主题和浏览消费者组的 Web UI。
160157
- [EFAK](https://github.com/smartloli/EFAK) (Eagle For Apache Kafka,以前叫做 Kafka Eagle):一个简单的高性能监控系统,用于对 Kafka 集群进行全面的监控和管理。
161158

162-
### 数据库中间件
159+
### 读写分离和分库分表
163160

164161
- [ShardingSphere](https://github.com/apache/shardingsphere):ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar(计划中)这 3 款相互独立的产品组成。
165162
- [MyCat](https://github.com/MyCatApache/MyCat2) : MyCat 是数据库分库分表的中间件,MyCat 使用最多的两个功能是:读写分离和分库分表。MyCat 是一些社区爱好者在阿里 Cobar 的基础上进行二次开发,解决了 Cobar 当时存 在的一些问题,并且加入了许多新的功能在其中。
166-
- [dynamic-datasource-spring-boot-starter](https://github.com/baomidou/dynamic-datasource-spring-boot-starter):dynamic-datasource-spring-boot-starter 是一个基于 springboot 的快速集成多数据源的启动器。如果说你有配置多数据源、读写分离等需求的话,可以了解一下这个项目。
167-
168-
相关阅读:[数据库中间件详解(精品长文)](https://zhuanlan.zhihu.com/p/87144535)
163+
- [dynamic-datasource-spring-boot-starter](https://github.com/baomidou/dynamic-datasource-spring-boot-starter):一个基于 Spring Boot 的快速集成多数据源的启动器,支持多数据源、动态数据源、主从分离、读写分离和分布式事务。
169164

170165
## 高可用
171166

@@ -176,7 +171,7 @@ icon: "xitongsheji"
176171
- [Sentinel](https://github.com/alibaba/Sentinel)(推荐):面向分布式服务架构的高可用防护组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。
177172
- [Hystrix](https://github.com/Netflix/Hystrix):类似于 Sentinel 。
178173

179-
相关阅读:[Sentinel 与 Hystrix 的对比](https://sentinelguard.io/zh-cn/blog/sentinel-vs-hystrix.html)
174+
相关阅读:[Sentinel 与 Hystrix 的对比](https://sentinelguard.io/zh-cn/blog/sentinel-vs-hystrix.html)
180175

181176
单机限流:
182177

docs/open-source-project/tools.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,15 @@ category: 开源项目
44
icon: tool
55
---
66

7-
## Java
7+
## 项目构建
88

9-
- [JADX](https://github.com/skylot/jadx):一款功能强大的反编译工具。
10-
- [Recaf](https://github.com/Col-E/Recaf):Java 字节码编辑器,基于 ASM(Java 字节码操作框架) 来修改字节码,可简化编辑已编译 Java 应用程序的过程。
9+
- [Maven](https://maven.apache.org/):一个软件项目管理和理解工具。基于项目对象模型 (Project Object Model,POM) 的概念,Maven 可以从一条中心信息管理项目的构建、报告和文档。详细介绍:[Maven核心概念总结](https://javaguide.cn/tools/maven/maven-core-concepts.html)
10+
- [Gradle](https://gradle.org/) :一个开源的构建自动化工具,它足够灵活,可以构建几乎任何类型的软件。Gradle 对你要构建什么或者如何构建它做了很少的假设,这使得 Gradle 特别灵活。详细介绍:[Gradle核心概念总结](https://javaguide.cn/tools/gradle/gradle-core-concepts.html)
11+
12+
## 反编译
13+
14+
- [JADX](https://github.com/skylot/jadx):用于从 Android Dex 和 Apk 文件生成 Java 源代码的命令行和 GUI 工具。
15+
- [JD-GUI](https://github.com/java-decompiler/jd-gui):一个独立的 GUI 工具,可显示 CLASS 文件中的 Java 源代码。
1116

1217
## 数据库
1318

@@ -37,17 +42,12 @@ icon: tool
3742
- [Another Redis Desktop Manager](https://github.com/qishibo/AnotherRedisDesktopManager/blob/master/README.zh-CN.md):更快、更好、更稳定的 Redis 桌面(GUI)管理客户端。
3843
- [Redis Manager](https://github.com/ngbdf/redis-manager):Redis 一站式管理平台,支持集群(cluster、master-replica、sentinel)的监控、安装(除 sentinel)、管理、告警以及基本的数据操作功能。
3944

40-
## Devops
45+
## Docker
4146

42-
- [Portainer](https://github.com/portainer/portainer):可视化管理 Docker 和 Kubernetes。相关阅读:[《吊炸天的 Docker 图形化工具 Portainer,必须推荐给你!》](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247504221&idx=1&sn=85a3c69d64fba1b0d6d8485ab28ab4c4&chksm=cea19e96f9d617802920d5769bafc824b3b80afdfb6166a00532f0caa3b6f5bdac930e4e89de&token=693114125&lang=zh_CN#rd)
47+
- [Portainer](https://github.com/portainer/portainer):可视化管理 Docker,Web 应用的形式。
48+
- [lazydocker](https://github.com/jesseduffield/lazydocker):适用于 docker 和 docker-compose 的简单终端 UI。
4349

4450
## ZooKeeper
4551

4652
- [PrettyZoo](https://github.com/vran-dev/PrettyZoo):一个基于 Apache Curator 和 JavaFX 实现的 ZooKeeper 图形化管理客户端,颜值非常高,支持 Mac / Windows / Linux 。你可以使用 PrettyZoo 来实现对 ZooKeeper 的可视化增删改查。
4753
- [zktools](https://zktools.readthedocs.io/en/latest/#installing):一个低延迟的 ZooKeeper 图形化管理客户端,颜值非常高,支持 Mac / Windows / Linux 。你可以使用 zktools 来实现对 ZooKeeper 的可视化增删改查。
48-
49-
## Markdown
50-
51-
- [MarkText](https://github.com/marktext/marktext):一个简单而优雅的开源 Markdown 编辑器,专注于速度和可用性。Linux、macOS 和 Windows 均适用。
52-
- [Typora](https://www.typora.io/) :我一直用的一款 Markdown 工具,直接文件夹视图和目录视图,支持 Markdown 格式直接导出成 PDF、HTML 等格式。
53-
- [Markdown Here](https://github.com/adam-p/markdown-here):使用 Markdown 语法发邮件,并且提供多种主题,快来拯救你的邮件格式吧!

0 commit comments

Comments
 (0)