Giter VIP home page Giter VIP logo

zhaowei93 / bcmall Goto Github PK

View Code? Open in Web Editor NEW

This project forked from xjjdog/bcmall

0.0 0.0 0.0 612 KB

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

Home Page: http://bcmall.xjjdog.cn

License: Apache License 2.0

Java 99.02% Ragel 0.98%

bcmall's Introduction

简介

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写个游戏吧!开源一款游戏引擎
「有趣」失联的架构师,只留下一段脚本

bcmall's People

Contributors

lycying avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.