第一章 最强综合项目大课介绍和学后水平
####第1集 微服务项目大课训练营介绍+学后水平
第2集 说了那么多,接下来你应该准备什么?
第3集 微服务项目大课目标设定
第二章 架构方法论+DevOps+领域驱动设计
第1集 解决方案分析方法论SWOT
第2集 关于很多人说的DDD领域驱动设计
第3集 一个P7技术管理者的面试题
第4集 和你说下DevOps是如何提效的
第三章 1024电商平台系统实战架构设计和实现需求分析
第1集 1024电商平台业务背景介绍和简历项目编写建议
简介:讲解电商营销中心的业务背景和简历项目编写建议
- 大课业务背景
实际上这个大课项目,是我在海外业务线的一个拉新营销平台的基础模型,印度印尼市场,俗称双印,可以说是V1版本,整个过程0~1也是非常艰辛,流量峰值差异大(夜间、节日等)、产品变动、薅羊毛攻击、各种国家政策等,目前由于印度阿三那边冲突XXX,在20年下半年暂时下线了。
大家编写简历的时候,自己可以编造一个公司自营商城/金融/在线教育等,为什么这样说呢,因为项目模型是通用的,不是局限某个领域,个人推荐是电商或者在线教育,需要考虑怎么在简历上编写
日活跃用户:30~50万,实际500万~1000万用户
如果有条件,可以说公司是海外业务的,这个面试官比较难考查、且项目问题亮点也是比较多的,也是目前国内都会遇到的
这个属于B2C模式,
在线教育B2C:平台自产视频,商家对消费者:比如小滴课堂,vipkid少儿培训
电商平台B2C:平台自有商品,小米有品、网易严选等
- 商业模式介绍(面试官可能会问)
科普下:B2C、B2B、C2C、O2O, B表企业,C代表个人(或者说终端消费用户),O代表线上,也可以代表线下。
最通俗易懂的解释
B2C:Business To Consumer 企业和个人之间的交易,好比天猫超市、考拉海购、京东超市、小米有品,属于B2C模式
B2B:Business To Business 企业和企业之间的交易,比如阿里巴巴1688,产品供应链的上下游
C2C:Consumer To Consumer 个人和个人之见的交易,闲鱼卖二手、58同城交易、朋友圈个人微商
O2O:Online To Offline 线上购买线下体验,比如美团上领取优惠券,到店消费
需求分析和规划
- 用户服务
- 用户注册/登录
- 头像和信息维护
- 收货地址模块
- 优惠券服务
- 展示和领劵
- 使用和释放
- 商品服务
- 商品基本展示
- 库存扣减回收
- 购物车模块
- 订单服务
- 下单支付
- 订单基本操作
- 用户服务
重点强调
一个个微服务创建,不用心急,一定要提炼好项目模型,一步步来操作
整个大课有简单逻辑、有复杂逻辑,看不懂的可以看多几遍
第2集 小滴课堂1024电商平台业务架构介绍
简介:1024电商平台业务架构
- 业务整体架构图
各个大模块功能介绍(有个大体认知就行)
项目规模和人员配比(高级工程师或者TeamLeader面试会问到,为什么这样搭配?)
公司规模800人左右,技术人员占比300人,这边业务线研发人员50人左右, 研发人员是业务线划分
研发人员: 50人(总负责人高级技术专家, 阿里P8或者资深P7+)
前端10人
- 负责C端界面研发、管理后端研发
- 部分具备全栈功能
后端20人
- 多个微服务开发和工程搭建
- 每个微服务都有2个主负责人,1人手上会有2~3个项目
- 5~10人有一个小组组长(P7)
运维3人
- 负责K8S和Rancher平台微服务、中间件搭建、监控处理、IaaS资源管理
测试5人:
app端开发 12人(Flutter技术栈)
开发周期:1到2年,不断迭代
- 初版1~2个月,接下去是每个周一个版本
这个就说到了一个,如何定义一个完整的项目,任何企业的产品都是不断迭代,功能增加删除
如果要完成这些全部也不难,可以关注我们小滴课堂,专题技术+大课训练营 就可以开发完成这些了
- 学时也超过半年,所以学完估计也是1~2年了
- 这个层级的TeamLeader人员是阿里P8高级技术专家
- 来个互联网一线薪酬(图片来源网上,基本符合 ,课程结尾会详细介绍各层级要求)
第3集 1024电商平台数据库划分+用户相关表介绍
简介:讲解电商营销中心数据库划分和用户表介绍
换个熟悉的方式,大家可以看懂我们要做的模块和流程
- 前后端分离架构,容器编排部署
各个微服务独立数据库,到搭建每个微服务的时候再介绍
- 用户服务数据库 xdclass_user
- 商品服务数据库 xdclass_product
- 优惠券服务数据库 xdclass_coupon
- 订单服务数据库 xdclass_order
用户服务数据库 (其他用到再增加)
- 用户表
CREATE TABLE `user` ( `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(128) DEFAULT NULL COMMENT '昵称', `pwd` varchar(124) DEFAULT NULL COMMENT '密码', `head_img` varchar(524) DEFAULT NULL COMMENT '头像', `slogan` varchar(524) DEFAULT NULL COMMENT '用户签名', `sex` tinyint(2) DEFAULT '1' COMMENT '0表示女,1表示男', `points` int(10) DEFAULT '0' COMMENT '积分', `create_time` datetime DEFAULT NULL, `mail` varchar(64) DEFAULT NULL COMMENT '邮箱', `secret` varchar(12) DEFAULT NULL COMMENT '盐,用于个人敏感信息处理', PRIMARY KEY (`id`), UNIQUE KEY `mail_idx` (`mail`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
- 收货地址表
CREATE TABLE `address` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `user_id` bigint(20) DEFAULT NULL COMMENT '用户id', `default_status` int(1) DEFAULT NULL COMMENT '是否默认收货地址:0->否;1->是', `receive_name` varchar(64) DEFAULT NULL COMMENT '收发货人姓名', `phone` varchar(64) DEFAULT NULL COMMENT '收货人电话', `province` varchar(64) DEFAULT NULL COMMENT '省/直辖市', `city` varchar(64) DEFAULT NULL COMMENT '市', `region` varchar(64) DEFAULT NULL COMMENT '区', `detail_address` varchar(200) DEFAULT NULL COMMENT '详细地址', `create_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8mb4 COMMENT='电商-公司收发货地址表';
第四章 1024电商平台项目技术选择和创建聚合工程项目
第1集 为什么选择SpringCloudAlibaba作为技术和版本说明
简介:微服务技术对比和选择,版本说明
- SpringCloud
全家桶+轻松嵌入第三方组件(Netflix 奈飞)
官网:https://spring.io/projects/spring-cloud
配套
通信方式:http restful
注册中心:eureka
配置中心:config
断路器:hystrix
网关:zuul/gateway
分布式追踪系统:sleuth+zipkin
- Spring Cloud Alibaba
全家桶+阿里生态多个组件组合+SpringCloud支持
官网 https://spring.io/projects/spring-cloud-alibaba
配套
通信方式:http restful
服务注册发现:Nacos
服务限流降级:Sentinel
分布配置中心:Nacos
服务网关:SpringCloud Gateway
服务之间调用:Feign、Ribbon
链路追踪:Sleuth+Zipkin
- 为什么要选择SpringCloud和AlibabaCloud的区别
官网 https://spring.io/projects/spring-cloud-alibaba#overview
SpringCloud和AlibabaCloud组件存在很大交集,互相配合
SpringCloud很多组件是基于第三方整合,目前多个已经不更新了,比如zuul、eureka、hystrix等
AlibabaCloud 提供一站式微服务解决方法,已经和SpringCloud进行了整合,组件互相支持
我们也习惯称为 Spring Cloud Alibaba
详细介绍:https://mp.weixin.qq.com/s/NMD52MLDY2Lq3LSeOcVwjA
版本说明(21年全新,未来会升级,如果期间有三方难以解决的bug或者漏洞再更换版本)
SpringBoot 2.3.3.RELEASE 版本
Spring Cloud Hoxton.SR8 版本
- 有另外一个 Spring Cloud 2020 版本搭配SpringBoot2.4以上
- 刚发布,有不少坑,一般都不会用最新版本
AlibabaCloud 2.2.1.RELEASE 版本
第2集 Maven聚合工程创建微服务项目实战
简介:使用Maven聚合工程创建微服务架构
maven聚合工程
- xdclass-common
- xdclass-product-service
- xdclass-user-service
- xdclass-order-service
- xdclass-coupon-service
- xdclass-gateway
创建项目(记得删除聚合工程src目录)
添加依赖
<modelVersion>4.0.0</modelVersion>
<groupId>net.xdclass</groupId>
<artifactId>xdclass-1024-shop</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>xdclass-common</module>
<module>xdclass-product-service</module>
<module>xdclass-user-service</module>
<module>xdclass-order-service</module>
<module>xdclass-coupon-service</module>
<module>xdclass-gateway</module>
</modules>
<!-- 一般来说父级项目的packaging都为pom,packaging默认类型jar类型-->
<packaging>pom</packaging>
<properties>
<java.version>11</java.version>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<spring.boot.version>2.3.3.RELEASE</spring.boot.version>
<spring.cloud.version>Hoxton.SR8</spring.cloud.version>
<alibaba.cloud.version>2.2.1.RELEASE</alibaba.cloud.version>
<mybatisplus.boot.starter.version>3.4.0</mybatisplus.boot.starter.version>
<lombok.version>1.18.16</lombok.version>
<commons.lang3.version>3.9</commons.lang3.version>
<commons.codec.version>1.15</commons.codec.version>
<springfox.boot.starter.version>3.0.0</springfox.boot.starter.version>
<docker.image.prefix>xdclass-cloud</docker.image.prefix>
<!--跳过单元测试-->
<skipTests>true</skipTests>
</properties>
<!--锁定版本-->
<dependencyManagement>
<dependencies>
<!--https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies/2.3.3.RELEASE-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies/Hoxton.SR8-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies/2.2.1.RELEASE-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${alibaba.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--mybatis plus和springboot整合-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatisplus.boot.starter.version}</version>
</dependency>
<!--https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.16-->
<!--scope=provided,说明它只在编译阶段生效,不需要打入包中, Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons.lang3.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<!--用于加密-->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons.codec.version}</version>
</dependency>
<!--接口文档依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>${springfox.boot.starter.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 代码库 -->
<repositories>
<repository>
<id>maven-ali</id>
<url>http://maven.aliyun.com/nexus/content/groups/public//</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>aliyun nexus</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<!--module不用添加打包版本信息-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
注意: 有些包maven下载慢,等待下载如果失败
- 删除本地仓库spring相关的包,重新执行 mvn install
- 建议先使用默认的maven仓库,不用更换地址
第3集 开源中国Git仓库-介绍和项目纳入版本管理
简介:gitee介绍和git配置
Git介绍
- 是一个版本管理工具, 其作用就是可以让你更好的管理你的程序,比如你原来提交过的内容,以后虽然修改了,但是通过git这个工具,可以把你原来提交的内容重现出来,这样对于你后来才意识到的一些错误的更改,可以进行还原
基于git协议的代码仓库
- github 全球最大同性交友社区
- gitee 开源中国
- gitlab 开源的git仓库平台,阿里等大厂就是基于这个搭建
- codeup 阿里云上的免费git仓库
gitee仓库地址
- https://gitee.com/
大课项目必须用git吗?
- 如果是因为不会git,而不用则不行,因为这个是互联网公司必备的
- 可以看联系客服看小滴课堂 git+gitlab专题视频
本地安装文档
- https://www.runoob.com/git/git-install-setup.html
- https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
大课项目加入git管理(是公钥设置,不是秘钥设置,视频有口误)
- 本地生成公钥 ssh-keygen -t rsa -C “794666918@qq.com”
- 生成公钥文档:https://gitee.com/help/articles/4181
- 设置公钥文档:https://gitee.com/help/articles/4191#article-header0
- 进入项目目录
- 本地生成公钥 ssh-keygen -t rsa -C “794666918@qq.com”
第五章 写代码飞的感觉,巩固下这几个提效利器
第1集 POJO类的提效利器Lombok插件
简介:讲解lombok的介绍和安装
提效插件:Lombok、MybaitsPlus、SwaggerUI
- 这里只做快速回顾,如果不熟悉的,联系我们客服看相关专题课程,参加大课训练营的都可以5折购买
什么lombok
- 一个优秀的Java代码库,简化了Java的编码,为Java代码的精简提供了一种方式
- 你是否发现每个JavaBean都会写getter,setter,equals,hashCode和toString的模板代码,特别的多于没技术
lombok消除Java的冗长代码,尤其是对于简单的Java对象,只要加上注解就行
使用方式
- 顶层parent项目添加依赖进行版本管理 ( 创建项目的时候已经添加 )
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.16</version> <scope>provided</scope> </dependency>
- 需要的module项目里面再引入
添加IDE工具对Lombok的支持
- 点击File-- Settings设置界面,安装Lombok插件,然后重启idea
第2集 Lombok插件常见注解实战和项目引入通用jar
简介:讲解lombok的常见注解实战
xdclass-user-service进行测试
- common项目添加
- 后续各个项目都依赖的包,可以统一在common项目里面添加管理,
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!--项目中添加 spring-boot-starter--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
- user-service项目引入common项目
<dependency> <groupId>net.xdclass</groupId> <artifactId>xdclass-common</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
- 聚合工程的pom文件 修改Lombok的作用域范围
<!--https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.16--> <!--scope=provided,说明它只在编译阶段生效,不需要打入包中, Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <!--<scope>provided</scope>--> </dependency>
- common项目添加
常见注解
@Getter/@Setter
- 作用类上,生成所有成员变量的getter/setter方法
- 作用于成员变量上,生成该成员变量的getter/setter方法
@ToString
- 作用于类,覆盖默认的toString()方法
@EqualsAndHashCode
- 作用于类,覆盖默认的equals和hashCode
@NoArgsConstructor
- 生成无参构造器
@AllArgsConstructor
- 生成全参构造器
@Data
- 作用于类上,是以下注解的集合
- @ToString
- @EqualsAndHashCode
- @Getter
- @Setter
- @RequiredArgsConstructor
- 作用于类上,是以下注解的集合
@Log / @Slf4j
作用于类上,生成日志变量, 用于记录日志, 已经在web项目中添加log依赖
如果不生效,记得检查下面的配置,另外重新更新下lombok插件,重启idea
第3集 增强版ORM框架-Mybatis plus介绍
简介:增强版ORM框架 mybatis plus介绍
背景
- 写一个数据库表的crud接口,编写实体类-》编写Controller-》编写Service-》编写DAO-》-》编写XML文件
- 特别是管理后台,多数都是简单的CRUD,用普通的mybatis有的鸡肋
介绍
- 官网 https://baomidou.com/
- 是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生
- 是怎么增强的呢?已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,类似JPA但优于JPA
SpringBoot整合
- 添加依赖(common项目里面添加,user-service项目里面测试)
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency>