bcMall
是一个以教学
为目的的电商系统。bcMall将为你展现一个典型的系统演进过程,所使用的主流技术完全开放。
它包含ToB复杂业务、互联网高并发业务、缓存应用;DDD、微服务指导。模型驱动、数据驱动。了解大型服务进化路线,编码技巧、学习Linux,性能调优。Docker/k8s助力、监控、日志收集、中间件学习。前端技术、后端实践等。主要技术:SpringBoot
+JPA
+Mybatis-plus
+Antd
+Vue3
。
通过下面的链接可快速体验。
- Java后端管理代码 :https://github.com/xjjdog/bcMall
- 后台体验地址:http://bcmall.xjjdog.cn/
- 配套教程和文档:http://xjjdog.cn/
- Antd前端管理代码:整理上传中...
敬请期待...
bcMall
采用了一种更加容易理解、扩展性更强的模块划分方式。更方便的由单体应用向分布式应用过渡。
由于B端的技术栈,与C端的不太一样,按照模块划分可以使用单独的技术栈而互不影响。做后台管理,没必要使用C端的技术折腾自己。
为了支持原型驱动开发模式,bc-utils提供了magicjpa
和smartjdbc
两种无敌的代码hack模式,使用很少很少的代码就可以实现功能的快速验证。
想赚外快的同学可以直接拿走这两个工具。
参考代码:
magicjpa
https://github.com/xjjdog/bcMall/tree/master/bc-utils/src/main/java/cn/xjjdog/bcmall/utils/quickdev/magicjpasmartjdbc
https://github.com/xjjdog/bcMall/tree/master/bc-utils/src/main/java/cn/xjjdog/bcmall/utils/quickdev/smartjdbc
前端使用开箱即用的antd pro
,开发语言采用typescript
。ts是最接近后端开发的一门语言,比vue开发效率高很多,一周撸一个系统不是梦。
后端主要是用springboot
。主要的技术点有:
mysql mariadb
关系型数据库redis
KV数据库elasticsearch
NoSQL+全文检索spring-boot-jpa
应用广泛的ORM框架。快速开发,告别恼人的表设计mybatis-plus
为特殊模块准备的ORM框架hibernate-validator
专业的参数验证框架swagger
文档生成器,rest接口测试p6spy
打印sql,调试功能guava
广泛应用的google的工具类库vavr
lambda表达式扩展包,缩减代码mapstruct
对象转换类库,节省getsetlombok
地球人都知道的节省代码工具类hikaricp
速度最快的数据库连接池jwt+spring security
权限认证jsoup
爬虫工具flyway
表变更维护工具kafka
高可靠高吞吐的消息队列nginx
反向代理软件oss
阿里云的图片服务
在开发中,使用了Macbook
、Windows
、Linux
等桌面平台,所以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(高可用)就像套娃,像胖子,剥掉一层还有一层
「持续集成」发布系统有那么难么?
「流程」技术评审,你拿什么来吐槽?
「流程」研发里那只看不见的手,勒的很疼
「规范」外来规范水土不服?手把手教你怎么扩展阿里规范idea插件
「工具」有了MinIO,你还会用FastDFS么?
「安全」那些需要自己开发的安全需求
「黑产」模拟邮件服务器,批量注册利器
「劫持」运营商劫持狠起来,连json都改
「指纹」可怕的“浏览器指纹”,让你在互联网上,无处可藏
「证书」气哭老板的顶级密钥存放方案,又做了一件蠢事
「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有最常用
,荒岛余生
,调教命令行
三个系列,我整理了一份《最有用系列,百页精华》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写个游戏吧!开源一款游戏引擎
「有趣」失联的架构师,只留下一段脚本