1.开源

学习的方式就是多看优秀的开源项目:

开源协议

学开源,先学开源协议

百度百科: https://baike.baidu.com/item/开源协议/10642383?fr=aladdin

  • GPL: 软件免费,可以向别人收取费用。如果企业对源码进行了修改,也必须将其开源出来。算是比较严格的协议
  • BSD: 可以作为商业用途,但是如果软件也开源的话,也必须遵循BSD。对于商业开发的软件,是非常友好的。
  • Apache:相比BSD更加宽松,只有只要我们声明使用了Apache协议即可
  • MIT: 目前最宽松的协议,只有在协议中保留作者的信息即可

软件基金会

Apache

Apache软件基金会(Apache Software Foundation,简称 ASF)是专门为运作一个开源软件项目的 Apache 的团体提供支持的非盈利性组织,这个开源软件的项目就是 Apache 项目。

官网:https://www.apache.org/

CNCF

云原生计算基金会https://www.cncf.io/

云原生计算基金会(CNCF)毕业的10大开源项目

是Linux基金会旗下的非盈利组织,来推动云原生计算的发展,帮助云原生技术开发人员来构建出色的产品。

CNCF的成立与一个重要项目密切相关,那就是Kubernetes。K8s最早是谷歌的内部容器编排项目Borg,为了推进其发展,谷歌决定将其开源,于是跟Linux基金会在2015年一起创办了CNCF。

OWASP

OWASP (开放 Web 软体安全项目 - Open Web Application Security Project) 是一个开放社群、非营利性组织, 其主要目标是研议协助解决 Web 软体安全之标准、工具与技术文件,长期 致力于协助政府或企业了解并改善网页应用程式与网页服务的安全性。 官网http://www.owasp.org/

目前 OWASP 有 30 多个进行中的计划,包括最知名的

  • OWASP Top 10 (十大 Web 弱点)。美国联邦贸易委员会 (FTC) 强烈建议所有企业需遵循 OWASP 所发布的十大 Web 弱点防护守则
  • WebGoat (代罪羔羊) 练习平台
  • 安全 PHP/Java/ASP.Net 等计划,针对不同的软体安全问题在进行讨论与研究。

Dromara

Java开源组织,致力于微服务云原生解决方案的组织,是由 Apache ShenYu(前身是Soul网关)的作者创立, 多位 Java 开源作者参与的一个Java开源组织。 在开源中国社区,很多 Java 开源作者都是各自为战,独立运营项目。 Domara 组织的诞生就是为了联合 Java 开源的力量,共建社区,资源共享,共同推行中国Java开源事业的发展。

社区地址: https://dromara.org/

很多我们熟悉项目都是Dromara的,比如:

  • hutool。小而全的Java工具类库
  • jpom。简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件
  • maxKey。业界领先的企业级开源IAM身份管理和身份认证产品
  • LiteFlow。轻量,快速,稳定可编排的组件式规则引擎
  • DynamicTp。基于配置中心的轻量级动态线程池,内置监控告警功能
  • sms4j。让发送短信变的更简单
  • hertzbeat。强大自定义监控能力,无需 Agent 的开源实时监控告警系统。

开放原子开源基金会

2020 年 6 月在北京成立,由阿里巴巴、百度、华为、浪潮、360、腾讯、招商银行等多家龙头科技企业联合发起。 开放原子开源基金会本着以开发者为本的开源项目孵化平台、科技公益性服务机构的定位,遵循共建、共治、共享原则, 系统性打造开源开放框架,搭建国际开源社区,提升行业协作效率,赋能千行百业

https://www.openatom.org/project

其他

主流开源框架

  1. 数据库相关:涉及连接、数据通信(持久化)、数据分片、事务、连接管理等。
    1. 主流数据库
      • 关系型数据库:Oracle、MySQL、SQLserver、db2、PostgreSQL、SQLlite等
      • 文档型数据库:MongoDB
      • 键值型数据库:Redis
      • 搜索类数据库:Lucene、Elasticsearch、Solr
      • 列式数据库:HBASE、Cassandra
      • 分布式数据库:如TiDB,OceanBase等,都是兼容MySQL的分布式数据库。
    2. 数据库连接池
      • 关系型数据库:主要使用JNDI或者jdbc进行连接,数据库连接池可以提交效率
        • Jdbc:对于关系型数据库,连接的基础就是jdbc。少量使用jndi。jdbc是JavaEE 企业级规范中的一个,定义了标准接口
        • Dbcp
        • C3p0
        • Druid:阿里巴巴开源,功能非常强
        • Hikair:Spring boot 模式使用的数据库连接池
      • 文档型数据库:MongoDB,使用官方提供的连接驱动
      • 键值型数据库:Redis,客户端较多,比如jedis、lettuce、Redisson等
        • Jedis:基于socket实现的客户端,采用面向过程的方式,与Redis进行通信。调用的接口与Redis命令十分接近。
        • Redisson:基于jedis实现的高级客户端。采用面向对象的流式方式。实现了很多分布式环境下的高级特性。
        • Lettuce:基于socket实现的客户端。spring-data-Redis基于lettuce实现的RedisTemplate。
      • 搜索类数据库:Elasticsearch、Solr,使用官方提供的连接驱动
      • 列式数据库:HBASE、Cassandra,使用官方提供的连接驱动
    3. ORM(持久层框架)
      • Hibernate:开放源代码的对象关系映射框架
      • DbUtils:只是对JDBC简单封装,不支持事务
      • MyBatis&Ibatis:优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射·
      • JPA:Java Persistent API,oracle官方规定的持久层规范,在开发中可能使用到的还有,hibernate就会jpa最好的一个实现方案。
      • spring data jpa:spring对jpa的实现方案
      • SpringJdbcTemplate:spring 对jdbc的简单封装
      • Mybatis-Plus:国产 MyBatis 增强工具,简化开发、提高效率
    4. 数据分片:实现的分案很多:Cobar, MyCAT, TDDL, DRDS, Atlas, DBProxy, sharding-JDBC, Heisenberg, CDS, DDB, OneProxy, Oceanus, Vitess, Kingshard, MaxScale与MySQL Route
      • sharding-sphere。分库分表的插件,包括Sharding-JDBC、Sharding-Proxy、Sharding-Sidecar 捐献给Apache,目前由京东维护
      • MyCAT:数据库代理,可以实现分库分表
    5. 分布式ID 数据分片后,最先要解决的就是ID的问题。 Snowflake是推特的一个完美解决方案,目前的实现方案如下:
    6. 分布式事务:一般事务的管理,都是orm框架封装实现,由spring进行隐式管理。这里只讲分布式事务。
      • Atomikos:基于jta和数据库XA驱动的分布式事务插件,也就是在一个项目中调用多个数据源时可以使用的框架,实现的原理就是2pc
      • Seata:阿里实现的分布式事务框架。
      • TCC分布式事务:ByteTCC、himly、tcc-transaction
  2. 综合性框架
    • spring: 一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,包括mvc、springboot、springcloud等。
    • Jfinal 国产orm+web框架,在国内有一定的用户量。
    • Quarkus。RedHat 推出的 "容器优先" 框架,专为 Kubernetes 优化,支持 AOT 编译和 JIT 模式,启动快、内存占用低。
    • Solon。由杭州无耳科技有限公司(下属 Noear 团队)开发并开源。是新一代,Java 企业级应用开发框架。
  3. 页面与控制层框架
    • Struts2 很久以前流行的框架,漏洞较多,现在很少有新的项目在使用
    • jsf 全称java server face,oracle官方提供的基于事件的框架,有点像Struts2)
    • dwr: 用于改善web页面与Java类交互的远程服务器端Ajax开源框架,使用js与Java代码直接交互的一种模式
    • fckeditor 百度的开源前端文本编辑框架(有点小问题,需要修改)
    • freemarker:文本生成类框架,可用于视图层,也可以用于文本类文件的生成模板。
    • tiles2: jsp布局的框架。目前已经支持jsp、freemarker、volicity、thymeleaf的布局。
    • thymeleaf spring boot:支持的页面渲染技术,支持页面模板、表达式、布局等等。
  4. 缓存
    • Ehcache 支持分布式缓存缓存框架
    • memcache 支持分布式缓存缓存框架(一般推荐使用Ehcache)
    • Caffeine 高性能缓存框架,可能是目前性能最高的缓存框架,作为springboot2+默认的缓存。
    • J2Cache Java 两级缓存框架,可以让应用支持两级缓存框架 ehcache(Caffeine) + redis 。避免完全使用独立缓存系统所带来的网络IO开销问题
    • GrahQL GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时
  5. 工作流
    • JBPM
    • Activiti
    • 自研工作流:https://gitee.com/mldong/mldong
  6. 规则引擎
    • Ilog JRules
    • Jess
    • Visual Rules
    • URule Pro
    • Drools
    • EasyRules
  7. 用户权限
    • shiro 简单的权限管理框架
    • cas 开源的SOA
  8. 运维监控
    • siger 系统内存、cup、磁盘监控框架
    • Arthas Arthas(阿尔萨斯)是阿里巴巴开源的 Java 监控与诊断工具
    • Prometheus 开源的系统监控和报警的工具
    • CAT 大众点评的实时监控系统
  9. 日志
    • Log4j
    • Log4j2
    • Logback
    • commons-logging
    • slf4j
  10. 项目管理
    • swagger restFull风格接口管理框架
    • Git
    • Svn
    • ant 项目管理类框架,流程式管理,比较难管理,很古老的东西
    • maven 项目管理类框架,声明式管理,是目前Java最流行的管理工具
  11. 数据编码&解码(序列化)
    • JSON 包括json-jdk、fastJson、gson、jackson
    • XML 包括 DOM、SAX、JDOM、DOM4J、XStream
    • 二进制 JAVA-serializable、FST、kryo、hessian
    • Tika。apache顶级项目,数据类解析。PDF、Word、Excel、PPT,甚至是 HTML、XML、TXT、RTF,它都能帮你提取文本和元数据信息(作者、标题、创建时间之类的)。
  12. 网络通信
    • WebService 包括axis2、cxf等
    • Jersey 专业的restFull风格的接口框架(不推荐使用)
    • httpClient 是Apache Jakarta Common 下的子项目,支持 HTTP 协议的客户端编程工具包
    • jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。
    • nekohtml 功能与jsoup类型。
    • okhttp/okio 一个处理网络请求的开源项目,是安卓端最火热的轻量级框架
    • webSocket 是HTML5开始提供的一种浏览器与服务器间长连接双向实时通信。包括jdk、spring boot实现、GoEasy、Pushlets、Pushlet等
    • 邮件 常见的邮件库是jee自带的接口功能简单,比较好的有Apache email,已经spring 的 JavaMailSender。
    • Netty。 基于Java NIO的高性能网络框架
  13. 定时任务
    • Quartz OpenSymphony的开源定时任务框架。
    • XXL-JOB,国产轻量级分布式任务调度框架,国内用户较多,可商用。
    • spring 的定时任务
    • JDK 原生定时任务
    • saturn 唯评会开源的任务调度框架
  14. 基础工具类框架
    1. Apache Commons:包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动
      • BeanUtils 提供对弈Javabean进行各种操作,克隆对象属性等等
      • codec 处理城建的编码方法的工具包,例如 DES,SHA1,MD5,Base6等
      • collections java集合操作
      • configuration java应用长须的配置管理库
      • io io工具的封装
      • lang java进本对象方法的工具包,比如StringUtils,ArrayUtils等
      • logging java日志统一接口
      • net 提供了客户端与服务端的数据校验框架
      • fileupload 文件上传下载框架
    2. 应用类
      • jfreeChart 开源的报表框架
      • excel 创建的框架有 poi, jxl, easyExcel等
      • pdf 比较主流的Apache PDFBox、poi、jacob、jodconverter、iText 等工具。 PDF 添加水印有哪些方案
      • 二维码 包括BarCode4j、SwetakeQRCode、zxing等
      • pinyin4j 中文转拼音技术, pinyin4j,国产中文转拼音框架,简单使用还好,对多音字处理的不好
      • 图片处理 包括JDK,Thumbnailator ,ImageMagick
      • 数学公式&表达式解析 Jep, Fast EL, jeval, 5.ik-expression(国产), ExpressionJ, 7.expression-analyzer(国产), BeanShell, Spads(国产)
    3. 参数校验
      • 实现JSR 380的方案:Hibernate Validator(最早、最多使用的),Apache BVal(单独实现,非常轻量)
      • 独立实现方案:Spring Validator(内置工具非注解、编程式)
      • 函数式:Vavr Validation(函数式编程风格,支持"错误累积"(不像异常只返回一个错误))、Fluent Validator(链式调用)
    4. 对象转换
      • 简单场景推荐:Spring的BeanUtils。
      • 复杂场景推荐:MapStruct。教程:https://mp.weixin.qq.com/s/gD21wceOWJvkiFshB8NweA
      • 不推荐:Apache commons的BeanUtils。bug较多,使用比较繁琐。
    5. 其他
      • guava 谷歌开源的集合类框架,guava内置了缓存相关的技术
      • Disruptor 并发编程框架,性能非常高。是LMAX(一种新型零售金融交易平台)的业务逻辑处理器的核心
      • 字节码加强 ASM、Javassist、cglib(基于字节码的动态代理工具类)
      • lombok 简化代码开发内容。
  15. 文件服务器
    • fastDFS 分布式的文件管理系统,用于存储较小,数量大的文件。
  16. 测试
    • JHM:基准测试,基于注解编写压测规则。
    • Jmeter:是一款纯java编写负载功能测试和性能测试开源工具软件
    • contiperf:是一个轻量级的测试工具,基于JUnit 4 开发,可用于效率测试等
    • junit:最常用的单元测试工具
  17. 消息队列
    • ActiveMQ
    • kafka
    • rabbitMQ
    • rocketMQ 阿里巴巴开源项目,贡献给Apache,推荐使用
  18. RPC:其实rpc是个广义定义。很多协议都算是RPC
    • dubbo 阿里巴巴开源的RPC框架
    • thrift Apache开源跨语言的RPC框架
    • gRPC 一个高性能、开源和通用的 RPC 框架,目前提供 C、Java 和 Go 语言版本
  19. 注册中心
    • zookeeper 开放源码的分布式应用程序协调服务
    • curator zookeeper的开源客户端框架,提供分布式锁、主从选举等功能
    • Eureka(尤里卡),consul,Apollo(阿波罗),nacos
  20. 网关 gateway
    • Kong
    • Netflix Zuul
    • orange

开源项目

国内开源

基础工具

脚手架

后端管理

ERP

  • 管伊佳ERP(曾用名:华夏ERP,英文名:jshERP)是一款在国内广受欢迎的开源免费ERP系统。它深度整合了进销存、财务、生产等核心业务流程,为中小企业提供了一套完整、高效的管理解决方案。 https://gitee.com/jishenghua/JSH_ERP

商城

当前的商城都是单商户版本的,适合小个体商使用。

  • CRMEB。CRMEB 开源商城系统Java版基于Java+Vue+Uni-app开发,在微信公众号、小程序、H5移动端都能使用,代码全开源无加密, 独立部署,二开很方便,还支持免费商用,能满足企业新零售、分销推广、拼团、砍价、秒杀等多种经营需求,自用、做二开项目都很合适。 https://gitee.com/ZhongBangKeJi/crmeb_java
  • Mall。mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现。 https://github.com/macrozheng/mall
  • 聚惠星商城。基于 微信小程序 + springboot + vue 技术构建 ,支持单店铺,多店铺入驻的商城平台。项目包含微信小程序,管理后台。基于java后台语言,已功能闭环,且达到商用标准的一套项目体系。 https://gitee.com/qiguliuxing/dts-shop
  • Miaosha 。秒杀系统设计与实现.互联网工程师进阶与分析 https://github.com/qiurunze123/miaosha
  • spring-boot-seckill 。从0到1构建分布式秒杀系统,脱离案例讲架构都是耍流氓,码云GVP项目。这个是自5月以来最上心的一个项目,尽管只是一个案例,但是从中也学到了不少知识。 项目地址:https://gitee.com/52itstyle/spring-boot-seckill
  • 分布式电商项目。https://github.com/SiGuiyang/spring-cloud-shop

商用

汇聚了很多可以直接商用的项目(大部分来自开源收集、培训学院等)https://gitee.com/itxinfei/projects

  • 云岚到家 jzo2o。是一个家政 O2O 平台,包含用户端、机构端和服务人员端,支持家政服务的在线交易流程。https://gitee.com/itxinfei/jzo2o
  • 中州养老院智慧管理系统。基于SpringBoot的智慧养老综合解决方案,整合入住管理、服务记录、财务管理、家属交互等核心业务模块,助力养老机构数字化转型。https://gitee.com/itxinfei/zzyl
  • 餐掌柜 RestKeeper 智能餐饮管理系统。由传智播客研究院研发的智慧餐饮 SaaS 服务及运营平台,致力于为餐饮集团或门店提供全套互联网化、智能化的收银与管理解决方案。https://gitee.com/itxinfei/restkeeper
  • 乐尚代驾。基于 Spring Cloud 微服务架构的智能化代驾服务平台,支持酒后代驾、商务代驾、长途代驾等核心业务场景。https://gitee.com/itxinfei/daijia-parent
  • 学成在线。一个基于互联网+的 IT 职业教育平台,提供课程学习、练习、考试等完整教学服务。https://gitee.com/itxinfei/xuecheng-parent

OA

  • 企业OA。易上手的企业管理快速开发平台,持续研发14年,基于JAVA开发,spring boot框架。 https://gitee.com/bestfeng/yimioa.git
  • oasys。oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目,mysql底层数据库,前端采用freemarker模板引擎,Bootstrap作为前端UI框架,集成了jpa、mybatis等框架。作为初学springboot的同学是一个很不错的项目,如果想在此基础上面进行OA的增强,也是一个不错的方案 https://gitee.com/aaluoxiang/oa_system
  • 陀螺匠。是一套采用Laravel 9框架结合Swoole高性能框架与Vue.js前端技术栈构建的AI+低代码双引擎智能办公系统。 https://gitee.com/ZhongBangKeJi/tuoluojiang

社区

文档

网盘

  • Nextcloud。NextCloud以它的高安全性和法规遵从性作为它的一个独特的推崇的卖点,可以在浏览器中使用,也可以安装客户端,支持 Win、Mac、Android、iOS、Linux 全平台,且免费开源。 官网:https://github.com/nextcloud
  • ownCloud。ownCloud是一个开源免费专业的私有云存储项目,它能帮你快速在个人电脑或服务器上架设一套专属的私有云文件同步网盘。 官网:https://github.com/owncloud
  • DzzOffice。Dzzoffice是一套开源办公套件,适用于企业、团队搭建自己的,类似Google企业应用套件、微软Office365的企业协同办公平台。 官网:https://github.com/zyx0814/dzzoffice
  • Cloudreve。支持本机、从机、七牛、阿里云 OSS、腾讯云 COS、又拍云、OneDrive (包括世纪互联版) 作为存储端。 官网:https://github.com/cloudreve/Cloudreve
  • kiftd。一款便捷、开源、功能完善的个人&团队&小型团队网盘服务器系统。 官网:https://github.com/KOHGYLW/kiftd-source
  • 蓝眼云盘。蓝眼云盘是蓝眼开源系列代表作品之一,致力于打造精致,优雅,简约的云盘 官网:https://github.com/eyebluecn/tank
  • Seafile。Seafile是一款强大优秀的云同步软件,拥有跨平台文件同步、移动端文件访问、挂载盘、文件共享和权限控制、文件锁定、文件版本管理和资料库镜像、在线编辑和协同编辑、审计日志等功能。 官网:https://github.com/haiwen/seafile
  • qiwen-file。网盘。https://gitee.com/qiwen-cloud/qiwen-file

低代码

聊天

安全

金融

  1. 财务
  2. 支付
    • IJPay 让支付触手可及,封装了微信支付、QQ支付、支付宝支付、京东支付、银联支付、PayPal支付等常用的支付方式以及各种常用的接口。 不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。https://github.com/Javen205/IJPay
    • Spring-boot-pay。支付服务:支付宝、微信、银联详细代码案例。十分钟让你快速搭建一个支付服务,内附各种教程。 https://gitee.com/52itstyle/spring-boot-pay

娱乐&游戏

  1. 一款专门揭露屎山代码的质量分析工具。https://github.com/Done-0/fuck-u-code
  2. log-lottery。基于 Express + Three.js的 3D 球体抽奖程序。https://github.com/LOG1997/log-lottery

数据

  • ERD Online。是全球首个开源且免费的在线数据建模与元数据管理平台,提供易用的元数据设计、关系图设计、SQL 查询等能力, 并配备版本管理、导入导出、数据源管理、SQL 解析、审计与团队协作等功能,帮助我们快速、安全地管理数据库元数据。 https://gitee.com/MARTIN-88/erd-online
  • DataV。前端组件,Vue 大屏数据展示组件库。http://datav.jiaminghi.com/
  • BigDataView。目前整理了118套大数据可视化模板,涵盖政务、交通、医疗、教育、公安、环保、旅游、农业、工业、物流、物联网等各个行业,满足不同用户的需求。而且代码使用简单,可快速搭建集成到自己的大屏展示页面。 https://gitee.com/iGaoWei/big-data-view

信息获取&发布

  • TrendRadar。简单的舆情监控分析 - 多平台热点聚合+基于 MCP 的AI分析工具。监控35个平台(抖音、知乎、B站、华尔街见闻、财联社等), 智能筛选+自动推送+AI对话分析(用自然语言深度挖掘新闻:趋势追踪、情感分析、相似检索等13种工具)。支持企业微信/飞书/钉钉/Telegram/邮件/ntfy推送, 30秒网页部署,1分钟手机通知,无需编程。支持Docker部署,让算法为你服务,用AI理解热点。https://github.com/luckSnow1989/TrendRadar
  • PinMe。利用 IPFS(分布式存储网络-区块链技术的基础能力)来存储文件,并自动生成一个免费的、基于 ENS 域名的永久链接。可以一键将静态网站快速部署到网上,搞出来一个链接,微信发出去,别人就能访问了。

全栈开发

  1. Prisma ORM 是一款专为 Node.js 和 TypeScript 设计的现代化数据库工具链,提供类型安全、自动化迁移、可视化数据管理等功能,适用于构建高效的数据库驱动应用。 https://github.com/prisma/prisma
  2. firebase。Firebase 是 Google 提供的一站式后端云服务平台,支持 Web、iOS、Android 等多端开发。 它集成了实时数据库、用户认证、云存储、消息推送、远程配置等众多功能,让开发者无需搭建服务器,即可快速开发和上线高质量的应用。
  3. supabasehttps://github.com/supabase/supabase

开源盈利模式

全球 22 种开源商业收入模式

国内的情况比较特殊,懂得都懂,所以传统的开源盈利模式在中国是行不通的,尤其是个人开源项目想要盈利更是难上加难。

常见方式如下:

  1. 项目中存在一些问题。比如删除了部分代码,然后再让你购买,才发完整的源码。
  2. 项目开源一部分,或者给出一个体验版本,如果要获取完整的源码,就要付费
  3. 项目使用起来非常复杂,官方文档提供不全。需要付费协助处理

开源指南


文章信息

张雪随笔
master
Homepage
Issues
Download

This Software is under the terms of The Unlicense.