forked from JavaCourse00/JavaCourseCodes
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
107 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
# 第7周作业 | ||
|
||
|
||
## 作业内容 | ||
|
||
> Week07 作业题目: | ||
###Week07 作业题目 | ||
|
||
1. (选做)用今天课上学习的知识,分析自己系统的 SQL 和表结构 | ||
2. (必做)按自己设计的表结构,插入 100 万订单模拟数据,测试不同方式的插入效率 | ||
3. (选做)按自己设计的表结构,插入 1000 万订单模拟数据,测试不同方式的插入效率 | ||
4. (选做)使用不同的索引或组合,测试不同方式查询效率 | ||
5. (选做)调整测试数据,使得数据尽量均匀,模拟 1 年时间内的交易,计算一年的销售报表:销售总额,订单数,客单价,每月销售量,前十的商品等等(可以自己设计更多指标) | ||
6. (选做)尝试自己做一个 ID 生成器(可以模拟 Seq 或 Snowflake) | ||
7. (选做)尝试实现或改造一个非精确分页的程序 | ||
8. (选做)配置一遍异步复制,半同步复制、组复制 | ||
9. (必做)读写分离 - 动态切换数据源版本 1.0 | ||
10. (必做)读写分离 - 数据库框架版本 2.0 | ||
11. (选做)读写分离 - 数据库中间件版本 3.0 | ||
12. (选做)配置 MHA,模拟 master 宕机 | ||
13. (选做)配置 MGR,模拟 master 宕机 | ||
14. (选做)配置 Orchestrator,模拟 master 宕机,演练 UI 调整拓扑结构 | ||
|
||
### 作业提交规范: | ||
|
||
1. 作业不要打包 ; | ||
2. 同学们写在 md 文件里,而不要发 Word, Excel , PDF 等 ; | ||
3. 代码类作业需提交完整 Java 代码,不能是片段; | ||
4. 作业按课时分目录,仅上传作业相关,笔记分开记录; | ||
5. 画图类作业提交可直接打开的图片或 md,手画的图手机拍照上传后太大,难以查看,推荐画图(推荐 PPT、Keynote); | ||
6. 提交记录最好要标明明确的含义(比如第几题作业)。 | ||
|
||
|
||
|
||
## 操作步骤 | ||
|
||
|
||
### 第七周-作业1. (选做) | ||
|
||
> 本题目需要同学们自己完成. | ||
1. 找一个业务系统。 | ||
2. 分析SQL表结构 | ||
3. 范式 | ||
4. 考虑: 开发效率、查询效率、拓展性、索引、有哪些优化空间。 | ||
5. 其他 | ||
|
||
|
||
### 第七周-作业2. (必做) | ||
|
||
0. 作业题目: 按自己设计的表结构,插入 100 万订单模拟数据,测试不同方式的插入效率 | ||
1. 打开 Spring 官网: https://spring.io/ | ||
2. 找到 Projects --> Spring Initializr: https://start.spring.io/ | ||
3. 填写项目信息: | ||
* Project: Maven Project | ||
* Language: Java | ||
* Spring Boot版本: 2.5.4 | ||
* Group: 自己的包名, 以做标识; | ||
* Artifact: mysql-demo | ||
* JDK版本: 8 | ||
* Dependencies: 添加依赖, 比如 MyBatis, Spring Web, MySQL, JDBC | ||
* 生成 maven 项目; 下载并解压。 参考: [mysql-demo项目Share信息](https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.5.4&packaging=jar&jvmVersion=1.8&groupId=com.cncounter&artifactId=mysql-demo&name=mysql-demo&description=MySQL%20Demo&packageName=com.cncounter.mysql-demo&dependencies=mybatis,web,mysql,data-jdbc) | ||
|
||
4. Idea或者Eclipse从已有的Source导入Maven项目。 | ||
5. 搜索依赖, 推荐 mvnrepository: https://mvnrepository.com/ | ||
6. 搜索 fastjson , 然后在 pom.xml 之中增加对应的依赖。 | ||
7. 准备MySQL环境, 创建订单表 | ||
- 7.1 | ||
8. 生成项目; | ||
- 8.1 创建Controller | ||
9. 执行与测试. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
# 第8周作业 | ||
|
||
|
||
## 作业内容 | ||
|
||
> Week08 作业题目: | ||
###Week08 作业题目 | ||
|
||
1. (选做)分析前面作业设计的表,是否可以做垂直拆分。 | ||
2. (必做)设计对前面的订单表数据进行水平分库分表,拆分 2 个库,每个库 16 张表。并在新结构在演示常见的增删改查操作。代码、sql 和配置文件,上传到 Github。 | ||
3. (选做)模拟 1000 万的订单单表数据,迁移到上面作业 2 的分库分表中。 | ||
4. (选做)重新搭建一套 4 个库各 64 个表的分库分表,将作业 2 中的数据迁移到新分库。 | ||
5. (选做)列举常见的分布式事务,简单分析其使用场景和优缺点。 | ||
6. (必做)基于 hmily TCC 或 ShardingSphere 的 Atomikos XA 实现一个简单的分布式事务应用 demo(二选一),提交到 Github。 | ||
7. (选做)基于 ShardingSphere narayana XA 实现一个简单的分布式事务 demo。 | ||
8. (选做)基于 seata 框架实现 TCC 或 AT 模式的分布式事务 demo。 | ||
9. (选做☆)设计实现一个简单的 XA 分布式事务框架 demo,只需要能管理和调用 2 个 MySQL 的本地事务即可,不需要考虑全局事务的持久化和恢复、高可用等。 | ||
10. (选做☆)设计实现一个 TCC 分布式事务框架的简单 Demo,需要实现事务管理器,不需要实现全局事务的持久化和恢复、高可用等。 | ||
11. (选做☆)设计实现一个 AT 分布式事务框架的简单 Demo,仅需要支持根据主键 id 进行的单个删改操作的 SQL 或插入操作的事务。 | ||
|
||
### 作业提交规范: | ||
|
||
1. 作业不要打包 ; | ||
2. 同学们写在 md 文件里,而不要发 Word, Excel , PDF 等 ; | ||
3. 代码类作业需提交完整 Java 代码,不能是片段; | ||
4. 作业按课时分目录,仅上传作业相关,笔记分开记录; | ||
5. 画图类作业提交可直接打开的图片或 md,手画的图手机拍照上传后太大,难以查看,推荐画图(推荐 PPT、Keynote); | ||
6. 提交记录最好要标明明确的含义(比如第几题作业)。 | ||
|
||
|
||
## 操作步骤 | ||
|
||
|
||
### 第八周-作业1. (选做) |