7七月亲授,Web领域市场呼声最高的主流技术栈逐一精讲
技术与业务深度融合,电商项目前后端开发的教科书级别案例
赋能Java从业者拥有更强的职场适应力和工作竞争力
半年时间,带你从后端走向全栈
从后端到全栈CTO,我花了10年,这10年浓缩成了120多个小时,我的10年,你或许只需要半年,我希望
你比我幸运,少一些投石问路式的摸索,以更快的速度成为能胜任更高职位,更受市场青睐的全栈工程师
目录
阶段一:电商前端-极致体验的高级电商小程序
第1周 走进Web全栈工程师
开课第一周,我们会公布完整的课程体系计划,展示完整的项目效果,然后开始进行项目分析,项目技术选型,和小程序组件化开发方式和技巧。
课程安排:
1、全栈项目的前期规划与投入
2、了解《风袖》的整体架构;前置知识补齐;开发工具总览;
3、如何从0开始去架构一个电商级别项目
4、如何分析项目,典型项目的必备环节
5、配置文件与第一次调用服务端API,业务对象的重要性
6、对接服务端API,同时在前端全面使用async和await来封装Httpq请求,打造完美的小程序分层结构
7、小程序插槽Slot的基本概念
8、npm的semver语法规则
9、掌握小程序组件化开发方式和技巧,打好基础
10、全面使用自定义组件来构建首页的各个元素,提升开发效率
11、自定义组件与 LinUI Grid组件构建分类六宫格
12、组件设计与LinUI使用的几个非常重要的原则
2、了解《风袖》的整体架构;前置知识补齐;开发工具总览;
3、如何从0开始去架构一个电商级别项目
4、如何分析项目,典型项目的必备环节
5、配置文件与第一次调用服务端API,业务对象的重要性
6、对接服务端API,同时在前端全面使用async和await来封装Httpq请求,打造完美的小程序分层结构
7、小程序插槽Slot的基本概念
8、npm的semver语法规则
9、掌握小程序组件化开发方式和技巧,打好基础
10、全面使用自定义组件来构建首页的各个元素,提升开发效率
11、自定义组件与 LinUI Grid组件构建分类六宫格
12、组件设计与LinUI使用的几个非常重要的原则
第2周 Lin UI组件库的引入与编程原则
本周我们正式开始开发环节,由于项目比较复杂,所以我们需要LinUI来辅助我们构建页面。本章我们重点学习LinUI的Price组件,但学习组件不是目的关键是要学习组件的设计技巧和组件化编程的原则。
课程安排:
1、优惠券的一些基本概念及优惠券入口
2、小程序页面背景颜色到底怎么设置?
3、HTTP请求是否应该被合并?
4、函数式编程概念与技巧
5、深入理解原生scroll-view组件
6、是不是方法都需要加async和await?
7、spu-scroll滑动自定义组件
8、Lin UI Price价格组件应用
2、小程序页面背景颜色到底怎么设置?
3、HTTP请求是否应该被合并?
4、函数式编程概念与技巧
5、深入理解原生scroll-view组件
6、是不是方法都需要加async和await?
7、spu-scroll滑动自定义组件
8、Lin UI Price价格组件应用
第3周 热身结束,开启试炼
前两周我们节奏稍缓,主要是给大家留出做作业的时间,本周开始我们逐步结束热身环节,开启进阶的内容,所以从本周开始我们节奏会加快。本周主要完成首页的热卖、上新、底部长滚动列表和瀑布流。
课程安排:
1、通过scroll-view抽象出的几个css编写原则
2、使用WXS解决复杂的逻辑问题
3、webstorm的骚操作自定义代码片段
4、自定义组件的边距问题与外部样式类应用
5、学会抽象来简化数据库表设计
6、新监听器Observers
7、flex布局的灵活应用
8、Hover点击态的应用与@import 公共样式表
9、组件自定义性的终极方案:抽象节点
10、什么是防抖、截流,如何应用?
11、自定义Paging对象详解(解决分页问题)
12、编码之美:多用return提前结束函数,少用else
13、折扣价和原价的常见错误逻辑
14、l-water-flow抽象组件式深入剖析
15、瀑布流的分页加载及初步成型
16、动态计算图片高和宽
17、Loading的思维逻辑:正在加载其实是一种常驻状态
2、使用WXS解决复杂的逻辑问题
3、webstorm的骚操作自定义代码片段
4、自定义组件的边距问题与外部样式类应用
5、学会抽象来简化数据库表设计
6、新监听器Observers
7、flex布局的灵活应用
8、Hover点击态的应用与@import 公共样式表
9、组件自定义性的终极方案:抽象节点
10、什么是防抖、截流,如何应用?
11、自定义Paging对象详解(解决分页问题)
12、编码之美:多用return提前结束函数,少用else
13、折扣价和原价的常见错误逻辑
14、l-water-flow抽象组件式深入剖析
15、瀑布流的分页加载及初步成型
16、动态计算图片高和宽
17、Loading的思维逻辑:正在加载其实是一种常驻状态
第4周 攻克SKU和商品购物车
第四周很重要!我们会重点讲解SKU,SPU和购物车,完善购物车的复杂逻辑是每一个前端开发头疼的问题,更是电商项目的精髓所在,助力同学攻克难关!
课程安排:
1、页面跳转与新机制EventChannel
2、Spu、Sku、规格名和规格值的意义
3、调整思维,才能解决复杂的逻辑问题
4、借助符号化的命名方式思考问题
5、控制中心Realm与栅栏Fence
6、Fence的实例化、测试Fences
7、SKU总体思路流程分析与矩阵思维简化规格值提取
8、SKU方案整理 一:规格值的提取
9、SKU方案整理 二:核心问题是规格值状态的确定
10、用矩阵的思想提取规格值
11、数学小课堂:矩阵的转置与旋转/实现矩阵的遍历
12、谈数学、面向对象与编程思维
13、构建Cell对象
2、Spu、Sku、规格名和规格值的意义
3、调整思维,才能解决复杂的逻辑问题
4、借助符号化的命名方式思考问题
5、控制中心Realm与栅栏Fence
6、Fence的实例化、测试Fences
7、SKU总体思路流程分析与矩阵思维简化规格值提取
8、SKU方案整理 一:规格值的提取
9、SKU方案整理 二:核心问题是规格值状态的确定
10、用矩阵的思想提取规格值
11、数学小课堂:矩阵的转置与旋转/实现矩阵的遍历
12、谈数学、面向对象与编程思维
13、构建Cell对象
第5周 SKU核心:规格状态、编码、无货逻辑
上周我们为SKU打下了坚实的理论基础,本章我们逐步进入SKU的核心算法
课程安排:
1、SKU串码编号、 Fence与规格名的对应关系
2、Cell去重、自定义组件,初步完成规格矩阵渲染
3、SKU核心算法与具体实现
4、矩阵列不同规格的问题解答
5、排列组合在SKU中的应用
6、SkuCode类拆分Sku可能的路径
7、Combination组合函数 、完成PathDict字典
8、Cell的三种状态样式
9、选中、禁用与可选状态的切换
10、SKU选择的数据流向
11、自定义组件事件跨越组件边界
12、什么是SKU的潜在路径?
13、重新渲染矩阵与错误排查推演
14、获取Cell的行列号,实现Cell的正选和反选
15、SKU潜在路径、潜在路径PotentialPath分析
16、正选/反选Cell的规律推演
17、SkuPending类的职责
18、遍历所有Cell的潜在路径
19、完成SKU的逻辑选择
2、Cell去重、自定义组件,初步完成规格矩阵渲染
3、SKU核心算法与具体实现
4、矩阵列不同规格的问题解答
5、排列组合在SKU中的应用
6、SkuCode类拆分Sku可能的路径
7、Combination组合函数 、完成PathDict字典
8、Cell的三种状态样式
9、选中、禁用与可选状态的切换
10、SKU选择的数据流向
11、自定义组件事件跨越组件边界
12、什么是SKU的潜在路径?
13、重新渲染矩阵与错误排查推演
14、获取Cell的行列号,实现Cell的正选和反选
15、SKU潜在路径、潜在路径PotentialPath分析
16、正选/反选Cell的规律推演
17、SkuPending类的职责
18、遍历所有Cell的潜在路径
19、完成SKU的逻辑选择
第6周 SKU收尾,优惠券、购物车讲解
本周,我们将SKU收尾,同时开始讲解优惠券和购物车。优惠券的核销与购物车数据同步是本周的重难点。前端有三座大山SKU、优惠券与数据同步,这同时也是最能培养我们编程思维的业务了。
课程安排:
1、Realm骨架的完善
2、默认SKU的概念与意义/默认SKU拆解后加入到SkuPending中
3、从两个指标评估循环对性能造成的影响?
4、完成默认规格渲染、Sku描述数据与规格选择联动
5、无规格商品的具体处理流程
6、规格选择提示的复杂逻辑处理/规格选择与SKU描述联动
7、setData性能探讨
8、获取code码和确定的SKU
9、加入购物车行为逻辑与商品详情页面
10、l-counter数量选择器/数量控制属性
11、无货情况分析、三种触发无货状态的机制
12、使用iconfont在线字体图标、引入自定义字体图标
13、商品详情图展示与隐藏页面滚动条方案
14、realm滑动控制适应不同高度、优化realm的滚动条
15、决定用户立即购买还是加入购物车
16、规格的主观性与组合性
17、分类页面重难点讲解与segment组件的高级应用
18、动态计算窗口高度与px与rpx动态转换、不同机型上px向rpx的转换
19、动态计算Detail页面的Scroll-View高度
20、分类加载的性能与体验优化探讨
2、默认SKU的概念与意义/默认SKU拆解后加入到SkuPending中
3、从两个指标评估循环对性能造成的影响?
4、完成默认规格渲染、Sku描述数据与规格选择联动
5、无规格商品的具体处理流程
6、规格选择提示的复杂逻辑处理/规格选择与SKU描述联动
7、setData性能探讨
8、获取code码和确定的SKU
9、加入购物车行为逻辑与商品详情页面
10、l-counter数量选择器/数量控制属性
11、无货情况分析、三种触发无货状态的机制
12、使用iconfont在线字体图标、引入自定义字体图标
13、商品详情图展示与隐藏页面滚动条方案
14、realm滑动控制适应不同高度、优化realm的滚动条
15、决定用户立即购买还是加入购物车
16、规格的主观性与组合性
17、分类页面重难点讲解与segment组件的高级应用
18、动态计算窗口高度与px与rpx动态转换、不同机型上px向rpx的转换
19、动态计算Detail页面的Scroll-View高度
20、分类加载的性能与体验优化探讨
第7周 高级电商订单管理开发 与前端项目收尾
本周讲解订单管理,与订单金额计算,电商价格计算模式很多,关键是对于小数部分的保留问题,分为向上/向下取整,四舍五入,银行家模式等几种。掌握技术干货。此外,我们将结束整个前端部分,开始向Java核心进发
课程安排:
1、搜索页面:l-search-bar搜索输入框的应用
2、历史搜索记录类
3、数据结构队列在HistoryKeyword中的应用
4、设计模式:代理模式在HistoryKeyword中的应用
5、JS中的单例模式应用
6、关键词、标签二种搜索场景
7、空数据和空关键词处理
8、购物车缓存对象CartStorage
9、单例模式的Cart对象
10、Observer监听器的触发场景与常见错误理解
11、多次触发Observer监听器的”Bug“与解决方案
12、数据绑定延迟问题与解决方案
13、不稳定绑定变量的解决方案
14、自定义CheckBox
15、购物车全选、反选、联动
16、购物车金额合并计算
17、购物车数据同步
2、历史搜索记录类
3、数据结构队列在HistoryKeyword中的应用
4、设计模式:代理模式在HistoryKeyword中的应用
5、JS中的单例模式应用
6、关键词、标签二种搜索场景
7、空数据和空关键词处理
8、购物车缓存对象CartStorage
9、单例模式的Cart对象
10、Observer监听器的触发场景与常见错误理解
11、多次触发Observer监听器的”Bug“与解决方案
12、数据绑定延迟问题与解决方案
13、不稳定绑定变量的解决方案
14、自定义CheckBox
15、购物车全选、反选、联动
16、购物车金额合并计算
17、购物车数据同步
第7+周 购物车价格同步、优惠券、下单与微信支付
本周我们主要完成购物车数据与服务端数据的同步功能,同时优惠券的计算也是一个比较难的知识点。此外,我们还将进行订单与前端微信支付等细节处理
课程安排:
1、收货地址管理
2、微信授权机制详解(组件式授权与API式授权)
3、收货地址与缓存
4、前端价格合计
5、前端优惠券折扣扣除计算
6、前端价格校验
7、按品类使用优惠券的限制
8、小数位保留(向上、向下取整、四舍五入、银行家模式)
9、商品发货状态管理
10、获取用户微信信息
11、拉起微信支付
2、微信授权机制详解(组件式授权与API式授权)
3、收货地址与缓存
4、前端价格合计
5、前端优惠券折扣扣除计算
6、前端价格校验
7、按品类使用优惠券的限制
8、小数位保留(向上、向下取整、四舍五入、银行家模式)
9、商品发货状态管理
10、获取用户微信信息
11、拉起微信支付
阶段二:Java SpringBoot API打造高级电商业务后端
第8周 初识SpringBoot
本周我们将谈谈SpringBoot出现前的Java Web发展历史,并介绍SpringBoot的版本号、建立Java环境以及初始化SpringBoot工程、搭建第一个API。
课程安排:
1、java web框架的发展历史
2、SpringBoot与面向抽象编程
3、完全搞懂SpringBoot版本号(主、次、增量、发布)
4、Java的2种构建工具:Maven与Gradle
5、开发工具使用Idea和三种创建SpringBoot项目的方式
6、使用Spring Initializr初始化SpringBoot应用程序
7、SpringBoot应用程序的基本目录结构
8、POM文件解析与Maven版本踩坑
9、运行我的第一个SpringBoot应用
10、新建API包与控制器
11、使用ResponseBody注解代替ServletResponse
12、SpringBoot热重启配置
13、@RestController注解
2、SpringBoot与面向抽象编程
3、完全搞懂SpringBoot版本号(主、次、增量、发布)
4、Java的2种构建工具:Maven与Gradle
5、开发工具使用Idea和三种创建SpringBoot项目的方式
6、使用Spring Initializr初始化SpringBoot应用程序
7、SpringBoot应用程序的基本目录结构
8、POM文件解析与Maven版本踩坑
9、运行我的第一个SpringBoot应用
10、新建API包与控制器
11、使用ResponseBody注解代替ServletResponse
12、SpringBoot热重启配置
13、@RestController注解
第9周 Java编程思想深度理论知识
本周是非常重要的深度Java编程思想理论知识,我们目的是要讲IOC和DI,要真正吃透这概念,并不简单。我们需要从最基础的interface多态过度到工厂方法,然后再过渡到IOC,最终实现OCP开闭原则
课程安排:
1、SpringBoot为什么有这么多复杂的概念?
2、Java是一个笨重的垃圾语言吗?
3、开闭原则OCP、为什么要面向抽象编程?
4、面向抽象的常见手段:interface、工厂模式与IOC和DI
5、第一个烂大街的代码风格
6、使用Interface的抽象风格
7、interface统一方法调用,但无法统一实例化
8、抽象的难点在于new对象
9、只有一段代码不负责对象实例化,才能保持稳定
10、工厂模式分离对象实例化
11、稳定性是相对的,我们需要将不稳定的代码隔离
12、变化是导致代码不稳定的本质原因
13、通过反射机制消除所有的变化
14、工厂模式+反射并不是IOC和D
15、IOC和DI的雏形、IOC的示例
16、为什么引入容器后可以让系统变得稳定?
17、DIP依赖倒置到底是什么
18、DI依赖注入的意义、依赖注入的原理
19、容器的作用是在装配对象
20、从DI的角度理解IOC
21、IOC的终极奥义
2、Java是一个笨重的垃圾语言吗?
3、开闭原则OCP、为什么要面向抽象编程?
4、面向抽象的常见手段:interface、工厂模式与IOC和DI
5、第一个烂大街的代码风格
6、使用Interface的抽象风格
7、interface统一方法调用,但无法统一实例化
8、抽象的难点在于new对象
9、只有一段代码不负责对象实例化,才能保持稳定
10、工厂模式分离对象实例化
11、稳定性是相对的,我们需要将不稳定的代码隔离
12、变化是导致代码不稳定的本质原因
13、通过反射机制消除所有的变化
14、工厂模式+反射并不是IOC和D
15、IOC和DI的雏形、IOC的示例
16、为什么引入容器后可以让系统变得稳定?
17、DIP依赖倒置到底是什么
18、DI依赖注入的意义、依赖注入的原理
19、容器的作用是在装配对象
20、从DI的角度理解IOC
21、IOC的终极奥义
第10周 Spring与SpringBoot理论篇
上周讲解了面向对象的本质和OCP原则,强化对通用原则的理解,也为学习Spring做铺垫。本周我们将开始Spring的理论篇学习,不仅教你如何用Spring和SpringBoot,更是理解它的原理和机制
课程安排:
1、Spring、SpringMVC与SpringBoot的关系与区别
2、把握Spring的几个重要目的,提升学习效率
3、SpringBoot最基础的编程模式@Component+@Autowired
4、Stereotype Annotations 模式注解
5、Spring的实例化和依赖注入时机与延迟实例化
6、成员变量注入、Setter注入与构造注入
7、一个接口多个实现类的处理
8、@Autowired按类型注入
9、被动推断注入与主动选择注入
10、应对的变化的两种方案(策略模式与属性配置)
11、@Configuration配置类
12、变化最终要被隔离到配置文件中
13、@Configuation和@Bean的真实作用
14、深入剖析@Configuration的意义
15、@Configuration是一种编程模式
2、把握Spring的几个重要目的,提升学习效率
3、SpringBoot最基础的编程模式@Component+@Autowired
4、Stereotype Annotations 模式注解
5、Spring的实例化和依赖注入时机与延迟实例化
6、成员变量注入、Setter注入与构造注入
7、一个接口多个实现类的处理
8、@Autowired按类型注入
9、被动推断注入与主动选择注入
10、应对的变化的两种方案(策略模式与属性配置)
11、@Configuration配置类
12、变化最终要被隔离到配置文件中
13、@Configuation和@Bean的真实作用
14、深入剖析@Configuration的意义
15、@Configuration是一种编程模式
第11周 sprinboot的条件注解与配置
本周我们将详细讲解条件注解的作用与意义 他可以很好的应对变化
课程安排:
1、Bean名称与几种注入方式补遗
2、@ComponentScan包扫描机制
3、策略模式的几种实现方案
4、条件组件@Conditional的基本用法
5、Condition接口的ConditionContext参数
6、@ConditionalOnBean条件注解
7、SpringBoot自动配置原理解析
8、@SpringBootApplication注解的理解
9、自己编写一个Spring应用启动类
10、@Import 的两种用法
11、SpringBoot自动装配的spring.factories文件
12、Java SPI 机制解析
13、深度理论课总结
2、@ComponentScan包扫描机制
3、策略模式的几种实现方案
4、条件组件@Conditional的基本用法
5、Condition接口的ConditionContext参数
6、@ConditionalOnBean条件注解
7、SpringBoot自动配置原理解析
8、@SpringBootApplication注解的理解
9、自己编写一个Spring应用启动类
10、@Import 的两种用法
11、SpringBoot自动装配的spring.factories文件
12、Java SPI 机制解析
13、深度理论课总结
第12周 Java异常深度剖析
本周我们将深度剖析Java异常的分类与区别,同时学习在SpringBoot中应用和处理异常
课程安排:
1、如何统一捕获异常?
2、异常分类Error、CheckedException与RunTimeException
3、彻底理解CheckedException和RuntimeException
4、自定义HTTPException异常类
5、同时监听Exception和HTTPException
6、异常的深度思考和理解
7、在@ExceptionHandler中返回Unify消息
8、处理自定义HTTPException
9、为什么需要将异常信息写在配置文件里
10、自定义配置类管理配置文件
11、HTTPException的意义
12、SpringBoot主动发现机制和思想
13、根据目录结构自动生成路由前缀
14、自定义RequestMappingInfo
15、通过接口的形式发现类
16、完成自定义PrefixUrl
2、异常分类Error、CheckedException与RunTimeException
3、彻底理解CheckedException和RuntimeException
4、自定义HTTPException异常类
5、同时监听Exception和HTTPException
6、异常的深度思考和理解
7、在@ExceptionHandler中返回Unify消息
8、处理自定义HTTPException
9、为什么需要将异常信息写在配置文件里
10、自定义配置类管理配置文件
11、HTTPException的意义
12、SpringBoot主动发现机制和思想
13、根据目录结构自动生成路由前缀
14、自定义RequestMappingInfo
15、通过接口的形式发现类
16、完成自定义PrefixUrl
第13周 参数校验机制与LomBok工具集的使用
重点讲SpringBoot参数校验机制。参数校验选择使用JSR-303BeanValidation,使用注解的方式来进行参数校验。还将学习LomBok工具集常见注解及Builder构造模式
课程安排:
1、修改Properties文件的编码解决乱码问题、参数校验机制
2、获取URL路径中的参数和查询参数
3、数据传输对象DTO的接收
4、LomBok的基本使用方式、关于构造函数的几个注解
5、@Builder构造器模式的使用
6、JSR-269与Builder模式的序列化
7、使用@Validated注解进行基础参数校验
8、验证HTTP Body中的参数与级联校验
9、自定义校验注解的关联类
10、获取自定义校验注解的参数
11、捕获DTO类的参数校验异常信息
12、捕获Url和查询参数的异常
2、获取URL路径中的参数和查询参数
3、数据传输对象DTO的接收
4、LomBok的基本使用方式、关于构造函数的几个注解
5、@Builder构造器模式的使用
6、JSR-269与Builder模式的序列化
7、使用@Validated注解进行基础参数校验
8、验证HTTP Body中的参数与级联校验
9、自定义校验注解的关联类
10、获取自定义校验注解的参数
11、捕获DTO类的参数校验异常信息
12、捕获Url和查询参数的异常
第14周 项目分层设计与JPA技术
本周我们将正式开始业务和数据库方面的技术讲解。我们在本阶段主要学习JPA的使用。JPA是基于Hibernate的一项技术,可以使用对象的方式来操作数据库。
课程安排:
1、Service业务逻辑层(服务层)的建立
2、层与层之间是否一定要用interface建立关联
3、创建数据表的3种主要方式、新建数据库和数据表
4、yml格式的配置文件
5、多环境配置文件(profiles)以及启用方式
6、数据库设计、实体关系与查询方案探讨
7、Maven依赖无法安装的几个解决方案
8、使用ORM的方式生成数据表
9、常用实体类注解与ORM生成表的优劣势浅谈
10、多对多关系的第三张表探讨(重点)
11、数据库设计步骤及数据库优化原则
12、实体与实体之间一对多关系配置@oneToMany
13、指定外键字段与是否需要物理外键
14、jpa的关联关系与规则查询
15、懒加载和急加载
16、双向一对多配置
17、双向一对多的外键配置问题
18、单向多对多关系配置与常见问题
19、双向多对多配置
20、如何禁止JPA生成物理外键
2、层与层之间是否一定要用interface建立关联
3、创建数据表的3种主要方式、新建数据库和数据表
4、yml格式的配置文件
5、多环境配置文件(profiles)以及启用方式
6、数据库设计、实体关系与查询方案探讨
7、Maven依赖无法安装的几个解决方案
8、使用ORM的方式生成数据表
9、常用实体类注解与ORM生成表的优劣势浅谈
10、多对多关系的第三张表探讨(重点)
11、数据库设计步骤及数据库优化原则
12、实体与实体之间一对多关系配置@oneToMany
13、指定外键字段与是否需要物理外键
14、jpa的关联关系与规则查询
15、懒加载和急加载
16、双向一对多配置
17、双向一对多的外键配置问题
18、单向多对多关系配置与常见问题
19、双向多对多配置
20、如何禁止JPA生成物理外键
第15周 ORM的概念与思维
学习ORM的概念:逆向工程生成Entity,Entity基类提取/常见Entity注解。此外我们准备开始开发业务。当然相对于后面的高阶业务要简单,但不要因为简单就放松学习,这是很好的熟悉理论知识的资源
课程安排:
1、ORM的概念、意义与常见误区问题
2、数据库表数据的设计、导入与导出
3、项目开发顺序、导入项目的SQL文件
4、逆向生成Entity、简化实体字段
5、三个时间字段的说明(create update delete)
6、提取BaseEntity基类
7、访问Banner接口
8、Jaskson序列化库的重要配置(SNAKE_CASE、时间戳)
9、Theme表设计、接口开发
10、表的列行转换思维
11、SPU表设计分析
12、静态资源托管的几种方式、SpringBoot访问静态资源
13、为什么需要提供多个SPU数据的接口?
14、Spu实体映射、Spu详情数据查询
15、查询列表类数据
16、延迟思考,逐层深入
17、数据库多层关系设计思考与冗余字段设计原则
18、导航关系的配置原则(需要时才配置)
19、Latest接口SQL查询分析
20、VO视图层对象的概念和意义
2、数据库表数据的设计、导入与导出
3、项目开发顺序、导入项目的SQL文件
4、逆向生成Entity、简化实体字段
5、三个时间字段的说明(create update delete)
6、提取BaseEntity基类
7、访问Banner接口
8、Jaskson序列化库的重要配置(SNAKE_CASE、时间戳)
9、Theme表设计、接口开发
10、表的列行转换思维
11、SPU表设计分析
12、静态资源托管的几种方式、SpringBoot访问静态资源
13、为什么需要提供多个SPU数据的接口?
14、Spu实体映射、Spu详情数据查询
15、查询列表类数据
16、延迟思考,逐层深入
17、数据库多层关系设计思考与冗余字段设计原则
18、导航关系的配置原则(需要时才配置)
19、Latest接口SQL查询分析
20、VO视图层对象的概念和意义
第16周 JPA的多种查询规则
本周,我们主要学习JPA的查询方式。JPA对于提高发效率来说非常重要,需要认真学习,才能够灵活的应用到项目中提高开发效率。
课程安排:
1、DozerBeanMapper拷贝属性
2、PageRequest.Of方法进行分页参数构建
3、Paging分页对象的构建
4、PagingDozer对象的封装
5、分类表的常见结构设计
6、无限级分类的数据表达方式(自定义协议路径)
7、分类冗余字段设计
8、JPA接口命名规则
9、Java Bean中可不可以写业务逻辑
10、jSR303校验的message模板配置
11、规格、规格名与规格值的设计
12、通用泛型类映射方案详解
13、单体JSON对象的映射处理
14、数组类型JSON与List的映射
15、谈Java类的内聚性、方法外置的问题
2、PageRequest.Of方法进行分页参数构建
3、Paging分页对象的构建
4、PagingDozer对象的封装
5、分类表的常见结构设计
6、无限级分类的数据表达方式(自定义协议路径)
7、分类冗余字段设计
8、JPA接口命名规则
9、Java Bean中可不可以写业务逻辑
10、jSR303校验的message模板配置
11、规格、规格名与规格值的设计
12、通用泛型类映射方案详解
13、单体JSON对象的映射处理
14、数组类型JSON与List的映射
15、谈Java类的内聚性、方法外置的问题
第17周 令牌与权限
本周我们将学习如何在SB中传输JWT令牌与权限控制
课程安排:
1、通用泛型类与java泛型的思考
2、循环序列化的解决方案
3、Java的Stream与Method Reference应用
4、自定义JPQL替代JPA命名方法
5、SpringBoot中的单元测试
6、精讲Optional精髓与价值(必看)
7、Optional的经典使用场景、Consumer与Supplier
8、Optional的链式操作与Function、Predicate、Filter
9、权限、分组与用户的关系精讲
10、自定义@ScopeLevel注解的机制
11、令牌与微信登录机制、 无感知二次登陆
12、微信用户体系验证服务
13、Sleeve-Mini小程序测试工具、 对Enumeration的理解
14、Auth0生成JWT令牌与微信身份认证
15、User实体分析与常见用户系统设计
16、JWT令牌的校验、获取Bearer Token
17、hasPermisson权限核查、 VerifyToken接口
2、循环序列化的解决方案
3、Java的Stream与Method Reference应用
4、自定义JPQL替代JPA命名方法
5、SpringBoot中的单元测试
6、精讲Optional精髓与价值(必看)
7、Optional的经典使用场景、Consumer与Supplier
8、Optional的链式操作与Function、Predicate、Filter
9、权限、分组与用户的关系精讲
10、自定义@ScopeLevel注解的机制
11、令牌与微信登录机制、 无感知二次登陆
12、微信用户体系验证服务
13、Sleeve-Mini小程序测试工具、 对Enumeration的理解
14、Auth0生成JWT令牌与微信身份认证
15、User实体分析与常见用户系统设计
16、JWT令牌的校验、获取Bearer Token
17、hasPermisson权限核查、 VerifyToken接口
第18周 优惠券、订单与支付系统
周简介:本周我们学习优惠券系统设计、订单与支付系统。本周内容较多,难度较大。涉及到支付、核销、核算等业务
课程安排:
1、优惠券系统设计分析
2、带有实际业务意义的多对多的第三张表
3、优惠券的适用范围限定
4、高可用性的实现与完善
5、优惠券状态不确定性的处理方案
6、多对多向一对多的转化思维、多级属性精简技巧
7、JPQL完成复杂的多表查询、查询全场券
8、超权问题、 LocalUser类的设计
9、ThreadLocal与线程安全、资源释放时机
10、优惠券领取与异步状态的不可靠性探讨
11、注意注入到容器里的对象是否是同一个对象
12、异步机制下的数据一致性不一定能100%保证
13、优惠券过期问题的处理方案
14、定时器的解决方案:主动轮询与被动消息触发
15、不能以状态枚举来作为优惠券过期的唯一判断标准
16、订单中的优惠券合法性校验
17、Order订单表的数据库设计
18、前端提交的Price是不可信的
2、带有实际业务意义的多对多的第三张表
3、优惠券的适用范围限定
4、高可用性的实现与完善
5、优惠券状态不确定性的处理方案
6、多对多向一对多的转化思维、多级属性精简技巧
7、JPQL完成复杂的多表查询、查询全场券
8、超权问题、 LocalUser类的设计
9、ThreadLocal与线程安全、资源释放时机
10、优惠券领取与异步状态的不可靠性探讨
11、注意注入到容器里的对象是否是同一个对象
12、异步机制下的数据一致性不一定能100%保证
13、优惠券过期问题的处理方案
14、定时器的解决方案:主动轮询与被动消息触发
15、不能以状态枚举来作为优惠券过期的唯一判断标准
16、订单中的优惠券合法性校验
17、Order订单表的数据库设计
18、前端提交的Price是不可信的
第18+周 订单、延迟支付与库存归还
上周我们完成了订单、优惠券参数的校验,本周我们将实现”下单“这个操作。下单是一个很复杂的过程,因为我们实现的是延迟支付。延迟支付涉及到优惠券和库存的归还,这是一个非常值得探讨的问题。
课程安排:
1、订单校验-获取实时的Sku信息、构建CouponChecker
2、订单校验-优惠券过期时间校验、满减券计算
3、订单校验-浮点数价格运算利弊分析、银行家舍去算法
4、订单校验-RoundingMode模式
5、订单校验-SpringBoot默认注入单例模式所带来的额问题
6、订单校验-prototype多例模式的注入方案(ObjectFactory与动态代理)
7、订单校验-非SpringBoot托管的Java对象、价格校验收尾
8、订单校验-BO的概念与意义、全场券的计算、reduce函数的巧妙应用
9、订单校验-完成优惠券最终校验
10、订单校验-OrderChecker对象、校验项分析
11、订单校验-最大购买数量、售罄、超卖检验、校验CouponChecker
12、如何让Spring调用Bean的有参构造函数?
13、下单逻辑-谈订单号的特点与注意事项
14、下单逻辑-创建订单、订单的五种状态
15、库存扣减-乱序思维、不能SQL1查询SQL2减除库存
16、库存扣减-Java锁、悲观锁的解决方案探讨、乐观锁的应用
17、优惠券核销、测试下单
18、订单状态的查询-订单支付过期状态的不可信
19、订单状态的查询-追加PlacedTime下单时间和ExpiredTime过期时间
20、订单状态的查询-查询待支付订单、订单详情查询
1、订单校验-获取实时的Sku信息、构建CouponChecker
2、订单校验-优惠券过期时间校验、满减券计算
3、订单校验-浮点数价格运算利弊分析、银行家舍去算法
4、订单校验-RoundingMode模式
5、订单校验-SpringBoot默认注入单例模式所带来的额问题
6、订单校验-prototype多例模式的注入方案(ObjectFactory与动态代理)
7、订单校验-非SpringBoot托管的Java对象、价格校验收尾
8、订单校验-BO的概念与意义、全场券的计算、reduce函数的巧妙应用
9、订单校验-完成优惠券最终校验
10、订单校验-OrderChecker对象、校验项分析
11、订单校验-最大购买数量、售罄、超卖检验、校验CouponChecker
12、如何让Spring调用Bean的有参构造函数?
13、下单逻辑-谈订单号的特点与注意事项
14、下单逻辑-创建订单、订单的五种状态
15、库存扣减-乱序思维、不能SQL1查询SQL2减除库存
16、库存扣减-Java锁、悲观锁的解决方案探讨、乐观锁的应用
17、优惠券核销、测试下单
18、订单状态的查询-订单支付过期状态的不可信
19、订单状态的查询-追加PlacedTime下单时间和ExpiredTime过期时间
20、订单状态的查询-查询待支付订单、订单详情查询
第19周 微信支付、Redis与RocketMQ
本周讲解微信支付的预订单、回调信息处理;同时对于订单的过期状态我们需要使用延迟消息队列来触发,Redis的Key/Space 键名通知和RocketMQ都是非常好的延迟消息队列。
课程安排:
1、微信支付流程分析、微信支付配置类
2、订单过期时间的再次校验、订单是否取消的逻辑判断
3、统一下单(预订单)接口参数解析、常用参数组装
4、配置微信支付回调API地址、更新订单的PrepayId、微信支付签名计算
5、微信支付回调结果WxNotify接收与处理
6、从流中读取支付回调结果、更新订单状态Unpaid转为Paid
7、订单状态更新的加强判断逻辑、 微信支付测试
8、延迟消息队列是什么?能解决什么问题?
9、Redis键空间通知(KeySpaceNotifyfication)
10、key-event通知订阅机制、SpringBoot中的Redis配置
11、将订单、优惠券信息写入Redis、MessageListener
12、设置Listener和Topic、测试Listener
13、订单取消与库存归还-OrderMessageBO、RecoverStock
14、订单取消(3)优惠券归还与事件广播机制
15、作业:RocketMQ实现延迟消息队列
16.、RocketMQ概述
17、RocketMQ实现延迟消息队列触发定时器
2、订单过期时间的再次校验、订单是否取消的逻辑判断
3、统一下单(预订单)接口参数解析、常用参数组装
4、配置微信支付回调API地址、更新订单的PrepayId、微信支付签名计算
5、微信支付回调结果WxNotify接收与处理
6、从流中读取支付回调结果、更新订单状态Unpaid转为Paid
7、订单状态更新的加强判断逻辑、 微信支付测试
8、延迟消息队列是什么?能解决什么问题?
9、Redis键空间通知(KeySpaceNotifyfication)
10、key-event通知订阅机制、SpringBoot中的Redis配置
11、将订单、优惠券信息写入Redis、MessageListener
12、设置Listener和Topic、测试Listener
13、订单取消与库存归还-OrderMessageBO、RecoverStock
14、订单取消(3)优惠券归还与事件广播机制
15、作业:RocketMQ实现延迟消息队列
16.、RocketMQ概述
17、RocketMQ实现延迟消息队列触发定时器
阶段三:Java CMS后台管理系统-后端开发
第20周 Lin CMS入门与MyBatis
本周开始数据库之旅,服务端编程最重要的就是高效操作数据库,本周重点讲解MyBatis的应用和常用的SQL语句,系统提升数据库知识,不论是对项目开发还是个人成长都让你受益匪浅。
课程安排:
1、CMS动态分配权限是最核心的能力
2、LinCMS的前后端分离
3、Lin CMS是工程+SDK的开发框架
4、自定义业务的目录组织结构
5、LinCMSVue试运行与前后联调
6、Lin CMS中的三种数据库机制JPA、MyBatis与MyBatisPlus
7、MyBatis的项目目录组织结构
8、编写第一个MyBatis MapperXML
9、Mapper接口与MapperXML的扫描位置
10、调整代码目录
11、MyBatis的Insert
12、MyBatis使用注解编写SQL
2、LinCMS的前后端分离
3、Lin CMS是工程+SDK的开发框架
4、自定义业务的目录组织结构
5、LinCMSVue试运行与前后联调
6、Lin CMS中的三种数据库机制JPA、MyBatis与MyBatisPlus
7、MyBatis的项目目录组织结构
8、编写第一个MyBatis MapperXML
9、Mapper接口与MapperXML的扫描位置
10、调整代码目录
11、MyBatis的Insert
12、MyBatis使用注解编写SQL
第21周 MyBatisPlus入门与进阶
本周,我们在MyBatis的基础上引入MyBatisPlus 看看MyBatisPlus到底好用在哪里本周,此外,我们还将学习Lin CMS内置的快捷方法、内置异常类
课程安排:
1、强大的LinCMS内置异常类剖析
2、为什么你看不懂源码
3、LinCMS中的软删除与物理删除
4、从UI交互谈程序员的综合素质
5、连表查询的一种方案:单表查询
6、MyBatisPlus的QueryWrapper
7、QueryWrapper的lambada写法
8、CodeGenerator快速生成模板
9、一对多关系的多表是否可复用探讨
10、一对多的删除(级联删除)
11、Create新增数据
12、图片资源与服务器交互全流程解析
13、LinCMS文件上传系统解析
2、为什么你看不懂源码
3、LinCMS中的软删除与物理删除
4、从UI交互谈程序员的综合素质
5、连表查询的一种方案:单表查询
6、MyBatisPlus的QueryWrapper
7、QueryWrapper的lambada写法
8、CodeGenerator快速生成模板
9、一对多关系的多表是否可复用探讨
10、一对多的删除(级联删除)
11、Create新增数据
12、图片资源与服务器交互全流程解析
13、LinCMS文件上传系统解析
第22周 CMS权限、双令牌机制解析
CMS权限、双令牌(Access_Token、Refresh_Token)大解密
课程安排:
1、 LinCMS权限系统要素
2、 LinCMS动态权限剖析
3、LinCMS权限系统
4、谈字段级别的权限控制方案
5、Web开发中的双令牌(access_token和refresh_token)
6、双令牌(ac_token和re_token)机制全解析
7、谈JWT令牌安全性的问题
8、系统日志与行为日志机制解析
9、商品管理操作需求分析
10、商品详情数据查询思路分析
11、MyBatis实体映射到DO的意义
12、MyBatis的复杂多表查询分析
13、Mybatis联表查询、带入参数与条件
2、 LinCMS动态权限剖析
3、LinCMS权限系统
4、谈字段级别的权限控制方案
5、Web开发中的双令牌(access_token和refresh_token)
6、双令牌(ac_token和re_token)机制全解析
7、谈JWT令牌安全性的问题
8、系统日志与行为日志机制解析
9、商品管理操作需求分析
10、商品详情数据查询思路分析
11、MyBatis实体映射到DO的意义
12、MyBatis的复杂多表查询分析
13、Mybatis联表查询、带入参数与条件
第23周 MyBatisPlus高级技巧及结束语
本周,随着业务的复杂,我们将用到MyBatis的更多高级特性,以处理复杂的查询和添加。在这个实际的复杂业务中,我们可以体会到MyBatis的强大
课程安排:
1、即时搜索的意义
2、一行代码一个接口是如何实现的?
3、MyBatis多对多表查询技巧
4、MyBatis如何插入复杂的数据(关联多个表的新增)
5、MyBatis插入复杂数据-分析SPU的录入难点
6、MyBatis插入复杂数据-基础校验与业务校验
7、MyBatis复杂新增-MBP的批量插入saveBatch
8、MyBatis复杂新增-测试批量插入
9、MyBatis复杂新增-批量插入Spu详情数据
10、MyBatis复杂新增-直接操作多对多中间表完成新增多对多
2、一行代码一个接口是如何实现的?
3、MyBatis多对多表查询技巧
4、MyBatis如何插入复杂的数据(关联多个表的新增)
5、MyBatis插入复杂数据-分析SPU的录入难点
6、MyBatis插入复杂数据-基础校验与业务校验
7、MyBatis复杂新增-MBP的批量插入saveBatch
8、MyBatis复杂新增-测试批量插入
9、MyBatis复杂新增-批量插入Spu详情数据
10、MyBatis复杂新增-直接操作多对多中间表完成新增多对多
阶段四:Vue 构建超好用CMS后台管理系统前端
第24周 走进Vue3.0
本周我们开始Vue3.0基础的学习。包括Vue3.0的新特性,改变;Vue的思想,Vue3.0的初始化与常用指令等
课程安排:
1、Vue的思想、Web前端发展与Vue3.0的新特性
2、Vue3.0的变化综述
3、Vue的一些必备基础与前端开发工程师的基本要求
4、前端发展的4个阶段
5、服务端渲染VS前端渲染
6、下载Vue3.0的单文件核心库
7、VueCli4.x版本创建Vue3.0应用程序
8、单文件的Vue与2.xVue的Options风格
9、第一个Vue3.0的Demo
10、Vue3的初始模型小结
11、第一个Vue的指令v-text
2、Vue3.0的变化综述
3、Vue的一些必备基础与前端开发工程师的基本要求
4、前端发展的4个阶段
5、服务端渲染VS前端渲染
6、下载Vue3.0的单文件核心库
7、VueCli4.x版本创建Vue3.0应用程序
8、单文件的Vue与2.xVue的Options风格
9、第一个Vue3.0的Demo
10、Vue3的初始模型小结
11、第一个Vue的指令v-text
第25周 Vue3.0中的响应式对象
本周,我们重点学习 Vue3中的响应式对象。响应式对象的应用和定义是Vue3中非常重要的内容,和Vue2有很大的区别
课程安排:
1、Vue基础
2、列表渲染、条件渲染
3、属性计算
4、Vue组件化
5、插槽
6、Vue指令
7、Vue事件
8、Vue其他基础知识
9、数据绑定
2、列表渲染、条件渲染
3、属性计算
4、Vue组件化
5、插槽
6、Vue指令
7、Vue事件
8、Vue其他基础知识
9、数据绑定
第26周 Vue3.0 中的组件
本周,我们开始学习Vue中最为重要的组件化编程学习。组件化编程是Vue中的核心概念,在Vue3中组件的构建方式也和vue2是所不同的。此外,我们将做一个小demo在实战中进一步理解Vue3
课程安排:
1、Vue
2、Vue进阶技术
3、Vuex状态管理
4、Vue3.0新增技术
5、自定义Vue指令
6、侦听器
7、Class与Style
8、Mixin与过滤器
9、Vue其他进阶知识
2、Vue进阶技术
3、Vuex状态管理
4、Vue3.0新增技术
5、自定义Vue指令
6、侦听器
7、Class与Style
8、Mixin与过滤器
9、Vue其他进阶知识
第27周 vue-router与vuex
在vue3.0中,router和2.x是有所区别的,本周我们重点学习vue-router与vuex全局状态管理。vue-router和vuex是vue工程化中非常重要的技术
课程安排:
1、Table组件与各种用法
2、数据导出组件/表单组件
3、消息推送组件/Button按钮组件
4、前端的面向对象编程体系
5、根据实际需求灵活添加组件
6、图片轮换与排序
2、数据导出组件/表单组件
3、消息推送组件/Button按钮组件
4、前端的面向对象编程体系
5、根据实际需求灵活添加组件
6、图片轮换与排序
第28周 动态组件与Vuex全局状态管理
本周我们将学习动态组件,并总结在Vue中切换组件的4种方式:显示隐藏、条件渲染、路由切换与动态组件。我们会中间讲解Vuex的意义与使用场景
课程安排:
1、路由与动态路由
2、MVVM思想
3、模板与列表渲染/使用指令
4、组件化编程
5、前端权限控制/权限与渲染/异常处理
6、Lin-CMS-Core的HTTP请求机制
7、Lin-Component组件库讲解与使用
2、MVVM思想
3、模板与列表渲染/使用指令
4、组件化编程
5、前端权限控制/权限与渲染/异常处理
6、Lin-CMS-Core的HTTP请求机制
7、Lin-Component组件库讲解与使用
第29周 CMS电商管理系统前端搭建
本周我们将开始Lin-CMS-Vue的学习,综合前面学习的所有知识来一次真正的大实战
课程安排:
1、Lin-CMS-Vue的配置与启动
2、CMS的路由与导航系统
3、CMS的一级、二级以及三级菜单
4、CMS的ReuseTab与动态Tab栏
5、CMS的Logger日志系统/业务插件系统
6、用户系统/前端权限系统
7、商品SKU与SPU管理
8、规格管理/六宫格管理/分类管理/订单管理
9、收发货管理
10、微信模板消息
2、CMS的路由与导航系统
3、CMS的一级、二级以及三级菜单
4、CMS的ReuseTab与动态Tab栏
5、CMS的Logger日志系统/业务插件系统
6、用户系统/前端权限系统
7、商品SKU与SPU管理
8、规格管理/六宫格管理/分类管理/订单管理
9、收发货管理
10、微信模板消息
第30周 三端联调,全栈最后一公里。
本周我们将在CMS中进行诸如用户个人相关的数据管理开发,包括用户资料、用户收获地址、用户快递信息等功能,整个电商系统进行联调,打通微信小程序前端,java服务端,CMS管理系统。
课程安排:
1、三端项目Linux和云端部署(小程序+CMS+Java API)
2、三端部署原理与思路
3、Linux服务器上常用部署软件安装
4、小程序部署注意事项
5、SpringBoot部署注意事项
6、Lin CMS Vue部署方案
7、静态化部署探讨
2、三端部署原理与思路
3、Linux服务器上常用部署软件安装
4、小程序部署注意事项
5、SpringBoot部署注意事项
6、Lin CMS Vue部署方案
7、静态化部署探讨
请先
!