以教学为目的的电商系统。包含ToB复杂业务、互联网高并发业务、缓存应用;DDD、微服务指导。模型驱动、数据驱动。了解大型服务进化路线,编码技巧、学习Linux,性能调优。Docker/k8s助力、监控、日志收集、中间件学习。前端技术、后端实践等。主要技术:SpringBoot+JPA+Mybatis-plus+Antd+Vue3。

Overview

简介

bcMall 是一个以教学为目的的电商系统。bcMall将为你展现一个典型的系统演进过程,所使用的主流技术完全开放。

它包含ToB复杂业务、互联网高并发业务、缓存应用;DDD、微服务指导。模型驱动、数据驱动。了解大型服务进化路线,编码技巧、学习Linux,性能调优。Docker/k8s助力、监控、日志收集、中间件学习。前端技术、后端实践等。主要技术:SpringBoot+JPA+Mybatis-plus+Antd+Vue3

项目信息

通过下面的链接可快速体验。

后台管理模块 (toB)

售卖模块 (toC)

敬请期待...

模块划分

bcMall采用了一种更加容易理解、扩展性更强的模块划分方式。更方便的由单体应用向分布式应用过渡。

由于B端的技术栈,与C端的不太一样,按照模块划分可以使用单独的技术栈而互不影响。做后台管理,没必要使用C端的技术折腾自己。

为了支持原型驱动开发模式,bc-utils提供了magicjpasmartjdbc两种无敌的代码hack模式,使用很少很少的代码就可以实现功能的快速验证。

想赚外快的同学可以直接拿走这两个工具。

参考代码:

主要技术

前端使用开箱即用的antd pro,开发语言采用typescript。ts是最接近后端开发的一门语言,比vue开发效率高很多,一周撸一个系统不是梦。

后端主要是用springboot。主要的技术点有:

  • mysql mariadb 关系型数据库
  • redisKV数据库
  • elasticsearch NoSQL+全文检索
  • spring-boot-jpa 应用广泛的ORM框架。快速开发,告别恼人的表设计
  • mybatis-plus 为特殊模块准备的ORM框架
  • hibernate-validator 专业的参数验证框架
  • swagger 文档生成器,rest接口测试
  • p6spy 打印sql,调试功能
  • guava 广泛应用的google的工具类库
  • vavr lambda表达式扩展包,缩减代码
  • mapstruct 对象转换类库,节省getset
  • lombok 地球人都知道的节省代码工具类
  • hikaricp 速度最快的数据库连接池
  • jwt+spring security 权限认证
  • jsoup 爬虫工具
  • flyway 表变更维护工具
  • kafka 高可靠高吞吐的消息队列
  • nginx 反向代理软件
  • oss 阿里云的图片服务

开发工具

在开发中,使用了MacbookWindowsLinux等桌面平台,所以bcMall是跨平台的。另外还使用了如下的开发工具:

  • CentOS Linux 运行容器,与大厂接轨
  • Windows WSL2 运行容器,Windows下最好用的Linux环境
  • IDEA社区版 专业的Java IDE,社区版不占资源
  • VSCode 前端开发工具
  • DBeaver 数据库管理软件
  • Ominigraffle | viso 绘图软件
  • XMind ZEN 思维导图工具
  • React Developer Tools React代码调试
  • Postman | curl API接口快速调试工具

文档 & 技术解析

最新配套文章,将第一时间发布到《小姐姐味道》微信公众号。直接搜索xjjdog或者扫描下面的二维码关注即可。

更多支持:加xjjdog0好友,进入讨论组。

已有教程备份

为了让知识系统化,我给大家准备了几个专业索引。

「概览」必看!java后端,亮剑诛仙
「选型」学完这100多技术,能当架构师么?
「Linux」Linux上,最常用的一批命令解析
「职业规划」能跑的不如会跑的,浅谈JAVA职业发展路线

当然,你可以看一下《2020当头一棒:阅读最高的,竟然是这些文章》,对我快速了解。

下面的原创文章,都是依托于此,进行面线点的展开。主要的特点是:系统化体系化

二层索引

​随着文章的增多,需要进行一下整理,不能让一些充数的文章太过嚣张。公众号的形式很烂,适合热点,但不适合体系化知识,这也是我整理这篇文章的原因。二层索引依然是一些比较概括性的整体介绍。

「微服务」这次要是讲不明白Spring Cloud核心组件,那我就白编这故事了
「微服务」微服务不是全部,只是特定领域的子集
「消息」分布式消息系统,设计要点。画龙画虎难画骨
「监控」这么多监控组件,总有一款适合你
「分库分表」“分库分表” ?选型和流程要慎重,否则会失控
「数据同步」希望一个数据同步,包治百病
「缓存」这可能是最中肯的Redis规范了
「持续集成」发布系统有那么难么?
「分布式存储」也浅谈下分布式存储要点
「网络开发」使用Netty,我们到底在开发些什么?
「ES」上厅房,下厨房,ElasticSearch有的忙
「LBS」如何使用postgis做一个高可用的附近的人服务?
「WS」WebSocket协议 8 问
「多线程」JAVA多线程使用场景和注意事项简版
「安全」那些需要自己开发的安全需求

三层体系化

在这里,我将文章按照分类进行了整理。如果你需要相关的内容,可进行快速定位。

微服务体系

「整体」这次要是讲不明白Spring Cloud核心组件,那我就白编这故事了
「整体」微服务不是全部,只是特定领域的子集
「SCG」万字Spring Cloud Gateway2.0,面向未来的技术,了解一下?
「Trace」2w字长文,让你瞬间拥有「调用链」开发经验
「熔断」轻拢慢捻,微服务熔断大总管

消息体系

「整体」分布式消息系统,设计要点。画龙画虎难画骨
「Kafka」Kafka基础知识索引
「Kafka」 360度测试:KAFKA会丢数据么?其高可用是否满足需求?
「Kafka」 使用多线程增加kafka消费能力
「AMQ」ActiveMQ架构设计与最佳实践,需要一万字
「MQ」开源一个kafka增强:okmq-1.0.0

监控体系

「整体」这么多监控组件,总有一款适合你
「日志」elkb实践经验,再赠送一套复杂的配置文件
「日志」日志收集的“DNA”
「日志」实践一把Loki,体验掌上起舞的轻盈
「日志」你的野花,朕的kibana
「日志」一般人不敢动系列之—基于logback的日志“规范”和“脱敏”
「监控」 昔日教人类用火的prometheus,如今在努力报警
「APM」 2w字长文,让你瞬间拥有「调用链」开发经验
「APM」 这一轮,skywalking胜出
「底层」 冷门instrument包,功能d炸天
「底层」你的也是我的。3例ko多线程,局部变量透传

数据治理

「分库分表」“分库分表” ?选型和流程要慎重,否则会失控
「数据同步」希望一个数据同步,包治百病
「数据同步」由 Canal 组件分析集成中间件架构的一般过程
「分库分表」分库分表“实践”大全
「HA」”MySQL官方驱动“主从分离的神秘面纱
「Sharding」 现实中的路由规则,可能比你想象中复杂的多
「Sharding」 非规范SQL的sharding-jdbc实践
「云库」MySQL痿了,放不下这么多数据!
「云库」记一次操蛋的方案降级(云上冷热分离的坎坷之路)

缓存体系

「Redis」这可能是最中肯的Redis规范了
「Redis」与亲生的Redis Cluster,来一次亲密接触
redis的zset有多牛?请把耳朵递过来
「Redis」好慌,Redis这么多集群方案,要用哪种?
「协议」架构秘笈:移花接木。使用mysql模拟redis
「Redis」Redis都要老了,你还在用什么古董客户端?
「堆内」新一代缓存Caffeine,速度确实比Guava的Cache快

高并发

「限流」高并发之限流,到底限的什么鬼 
「限流」信号量限流,高并发场景不得不说的秘密
「熔断」轻拢慢捻,微服务熔断大总管
「预热」没有预热,不叫高并发,叫并发高
「高可用」这样的高可用,我不要!
「乐观锁」余额,危险的操作,给996留点福报
「秒杀」系统设计要点,从卖病鹅说起
「秒杀」what?秒杀也可以做引擎?
HA(高可用)就像套娃,像胖子,剥掉一层还有一层

DevOps

「持续集成」发布系统有那么难么?
「流程」技术评审,你拿什么来吐槽?
「流程」研发里那只看不见的手,勒的很疼
「规范」外来规范水土不服?手把手教你怎么扩展阿里规范idea插件
「工具」有了MinIO,你还会用FastDFS么?

安全体系

「安全」那些需要自己开发的安全需求
「黑产」模拟邮件服务器,批量注册利器
「劫持」运营商劫持狠起来,连json都改
「指纹」可怕的“浏览器指纹”,让你在互联网上,无处可藏
「证书」气哭老板的顶级密钥存放方案,又做了一件蠢事

Java语言体系

「JVM」一图解千愁,jvm内存从来没有这么简单过!
「JVM」给我1万字,也讲Java不清内存排查。1万不行来2万~.~ 「JVM」开车了,JMC坐稳 (jfr)
「JVM」为什么给Java代码加个空行,class文件就翻脸不认人了?
「工具」Java无可匹敌的变身装备,钢铁侠客的绝密味道
「夏令时」一天有24个小时?别开玩笑了!
「疑难」Java堆外内存排查小结
「Lambda」到处是map、flatMap,啥意思?
「JVM」Java内存故障?只是因为你不够帅!
「多线程」JAVA高逼格面试:线程封闭
「Lambda」面试常问的PECS原则,到底是什么鬼?
「多线程」血洗多线程,抱得offer归
「多线程」线程池的execute方法和submit方法有什么区别?
「unicode」这段java太古怪
「基础」127.0.0.1和0.0.0.0地址的区别
「Nio」近2万字详解JAVA NIO2文件操作,过瘾!
「DB」这句简单的sql,如何加索引?颠覆了我多年的认知
「DB」又一批长事务,P0故障谁来背锅?
「安全」又一P1故障,锅比脸圆
「DB」你能搞懂connectTimeout和socketTimeout的区别么?
「Spring」Springboot 2.0打包与自定义launch.script
「Spring」一个吃货来说明Spring Boot与Spring cloud 是什么关系
「Spring」配置:application.yml中都应该写些啥?
「Spring」SpringCloud 服务的平滑上下线
「Spring」SpringBoot如何加载jar包外面的配置文件?
「Spring」再深一点:面试工作两不误,源码级理解Spring事务
「基础」String.replaceAll方法,正则妙用
「多线程」Java线程池「异常处理」正确姿势:有病就得治
「基础」一声叹息,jdk竟然有4个random
「使用」ZK客户端Curator使用详解
「使用」重温一下ZooKeeper关键点,虽然我不是很喜欢它
「编码」3种堆内缓存算法,赠源码和设计思路
「JVM」Java如何获取方法参数具体名称?这是个好问题!

快速掌握Linux

Linux有最常用荒岛余生调教命令行三个系列,我整理了一份《最有用系列,百页精华》pdf,加我微信吧。微信号:xjjdog0

「整体」Linux上,最常用的一批命令解析
「整体」作为高级Java,你应该了解的Linux知识
「脚本」将java进程转移到“解剖台”之前,法医都干了什么?

最常用系列

最常用系列,快速掌握三贱客↓

最常用的一套“Vim“技巧
最常用的一套“Sed“技巧
最常用的一套“AWK“技巧

荒岛余生系列

荒岛余生系列,快速掌握故障排查↓

Linux之《荒岛余生》(一)准备篇
Linux之《荒岛余生》(二)CPU篇
Linux之《荒岛余生》(三)内存篇
Linux之《荒岛余生》(四)I/O篇
Linux之《荒岛余生》(五)网络篇

调教命令行系列

调教命令行系列,全面掌握命令行↓
《调教命令行01》选Linux发行版,就像挑女朋友
《调教命令行02》准备一个冰清玉洁的Linux系统
《调教命令行03》认识一下,感觉不是说来就来的
《调教命令行04》触碰Linux的每个角落(长文)
《调教命令行05》对文件的基本操作
《调教命令行06》条条大道通罗马,罗马罗马你在哪(学习技巧)
《调教命令行07》压缩解压(有64KB彩蛋)
《调教命令行08》一文搞懂Linux权限体系
《调教命令行09》磁盘很廉价,放小电影最合适了

其他

玩转Linux↓

实力解剖一枚挖矿脚本,风骚操作亮瞎双眼
“kill -9”一时爽,秋后算账泪两行
"Sed" 高级功能:我这小脑瓜都快绕晕了
LWP进程资源耗尽,Resource temporarily unavailable
命令行版星球大战 # 挖坟会不会被打?
在终端画画、炒股、玩游戏
这是一张top命令的动动图
Vim漫游键,为什么不设定左手?介绍一种5x倍速漫游方式
你能像鸟一样,边xx边oo么?CPU给我们的启示
nginx“线程池模式”探讨;据说性能提高了9倍
妙啊,阻塞到底是个啥?黄袍加身,亦能谈古说今
nc很强大,容易让人蹲号子
Windows给力!可以扔掉Linux虚拟机了!

小姐姐味道

当然了,你也可以从这里获得特别的味道,放松心情,一块高级扯蛋。这也是本公众号名称的由来。xjj是一种心情。

「劝退」程序员画像,十年沉浮
「画像」面试官画像(十年沉浮 | 番外篇)
「味道」架构师写的BUG,非比寻常
「吐槽」企业内耗成瘾者
「热文」面试官很牛,逼我尿遁
「小说」猪,是怎么看互联网的!
「有趣」一切荒诞的傲慢,皆来源于认知
「有趣」领导看了会炸毛的溢出理论
「热点」1024,是对程序员群体的侮辱
「吐槽」是区块链改变了我们,还是我们改变了区块链?
「魔幻」小王的智能箱子,看完泪目
「吐槽」架构师负责订规范,你负责执行!
「卖惨」 惨!我做人工智能,我今天量化策略爆仓了!
「有趣」神兽单车CEO车不错先生专访
「魔幻现实主义」996的乐趣,你是无法想象的
「卖同情」一狗封喉
「分析」裁员:样本组成了整体,特例装裱了样本
「测试」杀死一只金丝雀
「有趣」快来,看看spring有多烂-来自jfinaL的嘲笑
「有趣」人生意义处,无限循环时
「吐槽」这座大楼风水不好
「非常有趣」杀机
「非常有趣」蓝牙如梦
「有趣」对数字,要有个概念(正好800字)
「漫画」员工当腻了,不如做领导!
「有趣」​9月火气大,能认真写代码么?

管理&行业

「管理」摸着良心说,你是领导青睐的“技术好手”么?
「行业」传统企业的人才们,先别忙着跳“互联网”!
「行业」Serverless,会将工程师带入“不归路”!
「开源」工作累了,用java写个游戏吧!开源一款游戏引擎
「有趣」失联的架构师,只留下一段脚本

You might also like...

基于RuoYi-Vue集成 Lombok+Mybatis-Plus+Undertow+knife4j+Hutool+Feign 重写所有原生业务 定期与RuoYi-Vue同步

基于RuoYi-Vue集成 Lombok+Mybatis-Plus+Undertow+knife4j+Hutool+Feign 重写所有原生业务 定期与RuoYi-Vue同步

平台简介 RuoYi-Vue-Plus 是基于 RuoYi-Vue 针对 分布式集群 场景升级 定期与 RuoYi-Vue 同步 集成 Lock4j dynamic-datasource 等分布式场景解决方案 集成 Mybatis-Plus Lombok Hutool 等便捷开发工具 适配重写相关业

Jan 4, 2023

A web application to generate Java source code with spring-boot and mybatis-plus

A web application to generate Java source code with spring-boot and mybatis-plus

A web application to generate Java source code with spring-boot and mybatis-plus. Also, The class of Domain,Mapper,XML of Mapper Interface,Service,Controller are included. You can change the data source what you want to generate for your project in app running without restart this code -generator application.

Aug 29, 2022

:herb: 基于springboot的快速学习示例,整合自己遇到的开源框架,如:rabbitmq(延迟队列)、Kafka、jpa、redies、oauth2、swagger、jsp、docker、spring-batch、异常处理、日志输出、多模块开发、多环境打包、缓存cache、爬虫、jwt、GraphQL、dubbo、zookeeper和Async等等:pushpin:

:herb: 基于springboot的快速学习示例,整合自己遇到的开源框架,如:rabbitmq(延迟队列)、Kafka、jpa、redies、oauth2、swagger、jsp、docker、spring-batch、异常处理、日志输出、多模块开发、多环境打包、缓存cache、爬虫、jwt、GraphQL、dubbo、zookeeper和Async等等:pushpin:

欢迎大家留言和PR~ Tip: 技术更新换代太快,本仓库仅做参考,自己的项目具体使用哪个版本还需谨慎思考~(不推荐使用最新的版本,推荐使用(最新-1|2)的版本,会比较稳定) spring-boot-quick 前言   自己很早就想搞一个总的仓库就是将自己平时遇到的和学习到的东西整合在一起,方便后

Jan 2, 2023

mall-swarm是一套微服务商城系统,采用了 Spring Cloud Hoxton & Alibaba、Spring Boot 2.3、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。文档齐全,附带全套Spring Cloud教程。

mall-swarm是一套微服务商城系统,采用了 Spring Cloud Hoxton & Alibaba、Spring Boot 2.3、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。文档齐全,附带全套Spring Cloud教程。

mall-swarm 友情提示 快速体验项目:在线访问地址。 全套学习教程:《mall学习教程》。 Spring Cloud全套教程:《SpringCloud学习教程》。 专属学习路线:学习不走弯路,整理了套非常不错的《mall专属学习路线》。 项目交流:想要加群交流项目的朋友,可以加入mall项目

Jan 3, 2023

Dynamically filters JPA entities with a simple query syntax. Provides JPA/Hibernate predicates and Spring Data specifications.

Spring Filter You need a way to dynamically filter entities without any effort? Just add me to your pom.xml. Your API will gain a full featured search

Dec 13, 2022

Application developed during the DDD training with 6 students.

Easyorder Application developed during the DDD training with 6 students. MongoDB To start MongoDB, use docker: docker run -p 27017:27017 --name mongo

Jan 21, 2022

An example to show how you could use clean architecture and DDD elements with Camunda.

An example to show how you could use clean architecture and DDD elements with Camunda.

Camunda DDD and Clean Architecture An example to show how you could use clean architecture and DDD and their advantages with Camunda. I also wrote a b

Dec 15, 2022

Java 项目快速开发脚手架。核心技术采用 SpringBoot、MyBatis、Thymeleaf、Bootstrap。

Java 项目快速开发脚手架。核心技术采用 SpringBoot、MyBatis、Thymeleaf、Bootstrap。

前言 闲来无事,整一个 Java 项目快速开发脚手架。 正文 一、简介 Chewing 是一个简单的 Java 项目快速开发脚手架。既适合需要开发小型项目的小伙伴使用,也适合刚入门的新手用来学习一些常用的技术。 二、源码 Github:https://github.com/jingqueyimu/c

Sep 26, 2022

🦄 开源社区系统:基于 SpringBoot + MyBatis + MySQL + Redis + Kafka + Elasticsearch + Spring Security + ... 并提供详细的开发文档和配套教程。包含帖子、评论、私信、系统通知、点赞、关注、搜索、用户设置、数据统计等模块。

🦄 开源社区系统:基于 SpringBoot + MyBatis + MySQL + Redis + Kafka + Elasticsearch + Spring Security + ... 并提供详细的开发文档和配套教程。包含帖子、评论、私信、系统通知、点赞、关注、搜索、用户设置、数据统计等模块。

Echo — 开源社区系统 项目上线到服务器之后可能会出现各种各样的 BUG,比如 Elasticsearch 服务启动失败导致搜索模块不可用,但是在本地运行是完全没问题的,所以各位小伙伴可以放心下载部署。 📚 项目简介 Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java Web

Jan 7, 2023
Owner
xjjdog
欢迎关注《小姐姐味道》微信公众号,id: xjjdog
xjjdog
参考 DDD/Clean Architecture 设计理念,整合 Spring Boot/Spring Security/Mybatis Plus/Vavr 的 Spring Realworld 应用案例

Demo · 更多项目 · 参考资料 ms-spring-ddd-examples Unified Domain-driven Layered Architecture for MicroService Apps,试图探索一套切实可行的应用架构规范,可以复制、可以理解、可以落地、可以控制复杂性的指导

王下邀月熊 19 Sep 23, 2022
一个基于vue3.0+antd+less+spring boot +mybatis+mysql+maven基础权限管理平台

cc-project vue 版本 angular版本请到 https://github.com/myopenresources/cc-project 这里看 详细文档 请到 cc-project详细文档 介绍 cc-project-vue 是一个前后端分离的项目,前端使用的是vue3.0,后端使用

河马开源-hippo 21 Jun 23, 2022
消息推送平台 - 所使用的技术栈包括:SpringBoot、SpringDataJPA、MySQL、Docker、docker-compose、Kafka、Redis、Apollo、prometheus、Grafana、GrayLog等等

项目介绍 austin项目核心功能:发送消息 项目出现意义:只要公司内有发送消息的需求,都应该要有类似austin的项目,对各类消息进行统一发送处理。这有利于对功能的收拢,以及提高业务需求开发的效率 系统项目架构 austin项目核心流程:austin-api接收到发送消息请求,直接将请求进MQ。a

Java3y 2.9k Dec 31, 2022
springboot 框架与其它组件结合如 jpa、mybatis、websocket、security、shiro、cache等

致歉 由于自己懒以及身体对issuse 解决的不及时。请大家以后提issuse 的时候写清楚 模块名 比如“springboot-SpringSecurity4” 和问题,我会抽时间抓紧解决。 springboot-SpringSecurity0 包含两部分代码: 第一是 博客 springboot

abel 5.9k Jan 5, 2023
8INF138-TP3-SECURITY-DOCKER - Le docker du tp3 du cours 8INF138 de l'UQAC

?? TP3 - 8INF138 Ceci est le TP3 du module 8INF138 de l'Universite du Quebec a Chicoutimi Le rapport ce situe dans le depot Le travail visuel n'a pas

Aurelien Marc 2 May 30, 2022
Deploying Spring Boot and MongoDB as Containers Using Docker and Docker Compose

springboot-mongodb-docker Deploying Spring Boot and MongoDB as Containers Using Docker and Docker Compose Steps & Commands pull mongo image from docke

Java Techie 9 Nov 25, 2022
Guns基于SpringBoot 2,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + mybatis-plus + beetl!Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架!

Guns基于Spring Boot2,致力于做更简洁的后台管理系统。包含系统管理,代码生成,多数据库适配,SSO单点登录,工作流,短信,邮件发送,OAuth2登录,任务调度,持续集成,docker部署等功。支持Spring Cloud Alibaba微服务。社区活跃,版本迭代快,加群免费技术支持。

冯硕楠 3.6k Jan 5, 2023
【多模块微服务脚手架平台——Ancba】前后端分离架构SpringBoot 2.x、SpringCloud、SpringAdmin、Spring Security、Mybatis-plus、(Shiro)、JWT、Feign、Nacos、Knif4j等。

Ancba 打造Blog.Core项目的SpringBoot微服务版,但是更强大 ?? Ancba (Another New CLI By Alacrity) 另一个全新的敏捷脚手架(单体/模块化/微服务都可支持)。 核心知识点与进度 ?? 在 ..../resources/application-

ansonzhang 35 Nov 29, 2022