同步操作将从 SnailClimb/awesome-java 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
中文 | English
Great Java project on Github(Github 上非常棒的 Java 开源项目).
我是 Guide哥,一个工作整整两年,接触编程已经 6 年有余的程序员。大三开源了JavaGuide (如果无法访问Github,可以访问国内的码云:JavaGuide),目前已经 100k+ Star。
未来几年,希望持续完善自己开源的这些项目,争取能够帮助更多学习 Java 的小伙伴!共勉!凎!
想要了解更多关于我的信息,点击即可了解我的个人经历。
你可以在下面这些平台找到我:
👉我把学习 Java 必备的一些书籍的 PDF 版本统一分类整理了下来,需要的小伙伴可以自取 (百度云链接放在公众号,需要关注一波。不喜欢公众号内容的话,领取了资料之后取关即可)。
大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架、软件或者教程。这些东西对于我们学习和进步有着莫大的进步,所以我有了这个将 Github 上非常棒的 Java 开源项目整理下来的想法。我会按照几个维度对项目进行分类,以便大家查阅。当然,如果你觉得不错的话,欢迎给本项目点个 Star。我会用我的业余时间持续完善这份名单,谢谢 🙏。
欢迎大家推荐自己觉得不错的 Java 项目,下面项目的排序很大程度是根据当前项目的 Star 数量。
如果有码云上比较好的项目的话,我也会推荐到这里来!另外,我也会推荐少部分过于优秀但是非开源的优质 Java 项目。
相关文章:Github 点赞接近 100k 的 SpringBoot 学习教程+实战推荐!牛批!
相关文章:Github 点赞接近 70k 的 Spring Cloud 学习教程+实战项目推荐!牛批!
Guide 哥注:下面这些推荐的项目几乎都和 Spring Boot 有关,毕竟这年头没有理由再搞 SSM/SSH 这些东西了。
Guide 哥注:下面的商城系统大多比较复杂比如 mall ,如果没有 Java 基础和 Spring Boot 都还没有摸熟的话不推荐过度研究下面几个项目或者使用这些项目当作毕业设计。
Guide 哥注:下面这几个项目都是非常适合 Spring Boot 初学者学习的,下面的大部分项目的总体代码架构我都看过,个人觉得还算不错,不会误导没有实际做过项目的老哥,特别是前两个项目 vhr 和 favorites-web 。
相关文章:
Guide 哥注:权限管理系统在企业级的项目中一般都是非常重要的,如果你需求去实际了解一个不错的权限系统是如何设计的话,推荐你可以参考下面这些开源项目。
SpringCloud(Hoxton.SR7)
+ SpringBoot(2.2.9.RELEASE)
的 SaaS 型微服务快速开发平台,具备用户管理、资源权限管理、网关统一鉴权、Xss 防跨站攻击、自动代码生成、多存储系统、分布式事务、分布式定时任务等多个模块,支持多业务系统并行开发, 支持多服务并行开发,可以作为后端服务的开发脚手架。相关文章 :
Set
,SortedSet
, Map
, List
, Queue
, Deque
......。更多介绍请看:《Redisson 项目介绍》
其他:Flinkx (基于 Flink 的分布式数据同步工具)。
微服务下一个系统被拆分为多个服务,但是像 安全认证,流量控制,日志,监控等功能是每个服务都需要的,没有网关的话,我们就需要在每个服务中单独实现,这使得我们做了很多重复的事情并且没有一个全局的视图来统一管理这些功能。
综上:一般情况下,网关一般都会提供请求转发、安全认证(身份/权限认证)、流量控制、负载均衡、容灾、日志、监控这些功能。
上面介绍了这么多功能实际上网关主要做了一件事情:请求过滤 。权限校验、流量控制这些都可以通过过滤器实现,请求转也是通过过滤器实现的。
微服务下,业务的发展一般会导致服务数量的增加,进而导致程序配置(服务地址、数据库参数等等)增多。
传统的配置文件的方式已经无法满足当前需求,主要有两点原因:一是安全性得不到保障(配置放在代码库中容易泄露);二是时效性不行 (修改配置需要重启服务才能生效)。
相关阅读:微服务架构中配置中心的选择:Apollo VS Spring Cloud Config
目前分布式链路追踪系统基本都是根据谷歌的《Dapper 大规模分布式系统的跟踪系统》这篇论文发展而来,主流的有 Pinpoint,Skywalking ,CAT(当然也有其他的例如 Zipkin,Jaeger 等产品,不过总体来说不如前面选取的 3 个完成度高)等。
相关阅读: Skywalking 官网对于主流开源链路追踪系统的对比
我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用。
使用消息队列主要有两点好处:一是通过异步处理提高系统性能(削峰、减少响应所需时间);二是降低系统耦合性。
分布式队列 :
内存队列 :
数据库的数据量大了之后就要考虑读写分离、分库分表,但是一定要尽量能避免分库分表就避免,因为会带来很多其他问题。
相关阅读:数据库中间件详解(精品长文)
任务调度/定时任务在系统中应用太广泛了。 为什么需要任务调度/定时任务呢?
这类框架也比较多,下面就带大家看看!
quartz
开发的,比如当当网的elastic-job
就是基于quartz
二次开发之后的分布式调度解决方案相关阅读:Spring Job、Quartz、XXL-Job 对比+全解析
数据库对于全文检索不太友好,这种事情最好交给搜索引擎来做,比如电商系统的商品搜索往往都是基于搜索引擎来做的。
Elasticsearch 在搜索引擎数据库领域排名绝对第一,内核基于 Lucene 构建,支持全文搜索是职责所在,提供了丰富友好的 API。
Elasticsearch 除了做搜索引擎,还常常被拿来做日志检索(著名的 ELK 三件套,讲的就是 Elasticsearch,Logstash,Kibana,专门针对日志采集、存储、查询设计的产品组合,相关阅读:什么是 ELK Stack?)。
Solr 比较老牌了,但是,目前生态以及社区活跃度都比不上 Elasticsearch。
为了能让我们编写的系统更加健壮,必要的测试(UI 测试、单元测试...)是必须的。
框架 :
测试平台 :
相关阅读:
相关阅读:Java 能用于机器学习和数据科学吗?-InfoQ
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。