From 54f81ac9f53ddd850cb729e4bbc2614decc978a4 Mon Sep 17 00:00:00 2001
From: qyx <565485304@qq.com>
Date: Thu, 11 Aug 2022 17:25:13 +0800
Subject: [PATCH] =?UTF-8?q?[=E4=BB=A3=E7=A0=81=E9=87=8D=E6=9E=84](master):?=
=?UTF-8?q?=20=E5=B7=A5=E7=A8=8B=E7=BB=93=E6=9E=84=E6=95=B4=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
对项目的工程结构进行整理1
---
README.md | 238 ++++++------------
bigdata/kafka/README.md | 27 ++
.../jpa}/dev-protocol-jpa-auditing1/pom.xml | 2 +-
.../DevProtocolJpaAuditingApplication.java | 0
.../com/baiye/config/JpaConfiguration.java | 0
.../java/com/baiye/config/MyAuditorAware.java | 0
.../java/com/baiye/entity/AuditingBase.java | 0
.../src/main/java/com/baiye/entity/User.java | 1 -
.../src/main/resources/application-dev.yml | 0
.../src/main/resources/application.yml | 0
.../main/resources/config/application-jpa.yml | 0
.../jpa}/dev-protocol-jpa-auditing2/pom.xml | 2 +-
.../DevProtocolJpaAuditing2Application.java | 0
.../src/main/java/com/baiye/entity/User.java | 0
.../src/main/resources/application-dev.yml | 0
.../src/main/resources/application.yml | 0
.../main/resources/config/application-jpa.yml | 0
.../jpa}/dev-protocol-jpa-auditing3/pom.xml | 2 +-
.../java/com/baiye/entity/BaseEntity.java | 0
.../src/main/java/com/baiye/entity/User.java | 0
.../dev-protocol-jpa-entity-callback/pom.xml | 2 +-
...vProtocolJpaEntityCallbackApplication.java | 0
.../jpa}/dev-protocol-jpa-shard1/pom.xml | 2 +-
.../DevProtocolJpaShard1Application.java | 0
.../configuration/DataSource1Config.java | 0
.../configuration/DataSource2Config.java | 0
.../com/baiye/controller/OrderController.java | 0
.../main/java/com/baiye/dao/db1/Order.java | 0
.../com/baiye/dao/db1/OrderRepository.java | 0
.../src/main/java/com/baiye/dao/db2/Sku.java | 0
.../java/com/baiye/dao/db2/SkuRepository.java | 0
.../src/main/resources/application-dev.yml | 0
.../src/main/resources/application.yml | 0
.../main/resources/config/application-jpa.yml | 0
.../jpa}/dev-protocol-jpa-shard2/pom.xml | 2 +-
.../DevProtocolJpaShard2Application.java | 0
.../configuration/DataSource1Config.java | 0
.../configuration/DataSource2Config.java | 0
.../DataSourceRoutingHolder.java | 0
.../configuration/RoutingDataSource.java | 0
.../RoutingDataSourceConfig.java | 0
.../configuration/RoutingDataSourceEnum.java | 0
.../main/java/com/baiye/dao/db1/Order.java | 0
.../com/baiye/dao/db1/OrderRepository.java | 0
.../src/main/java/com/baiye/dao/db2/Sku.java | 0
.../java/com/baiye/dao/db2/SkuRepository.java | 0
.../com/baiye/web/DataSourceInterceptor.java | 0
.../src/main/resources/application-dev.yml | 0
.../src/main/resources/application.yml | 0
.../main/resources/config/application-jpa.yml | 0
{jpa => database/jpa}/pic/回调事件注册表.png | Bin
database/mysql/README.md | 46 +++-
dev-protocol-log/README.md | 141 +++++++++++
idea-do/Design-any.md | 6 +-
pom.xml | 12 +-
55 files changed, 301 insertions(+), 182 deletions(-)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing1/pom.xml (96%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing1/src/main/java/com/baiye/DevProtocolJpaAuditingApplication.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing1/src/main/java/com/baiye/config/JpaConfiguration.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing1/src/main/java/com/baiye/config/MyAuditorAware.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing1/src/main/java/com/baiye/entity/AuditingBase.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing1/src/main/java/com/baiye/entity/User.java (87%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing1/src/main/resources/application-dev.yml (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing1/src/main/resources/application.yml (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing1/src/main/resources/config/application-jpa.yml (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing2/pom.xml (96%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing2/src/main/java/com/baiye/DevProtocolJpaAuditing2Application.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing2/src/main/java/com/baiye/entity/User.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing2/src/main/resources/application-dev.yml (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing2/src/main/resources/application.yml (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing2/src/main/resources/config/application-jpa.yml (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing3/pom.xml (96%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing3/src/main/java/com/baiye/entity/BaseEntity.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-auditing3/src/main/java/com/baiye/entity/User.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-entity-callback/pom.xml (91%)
rename {jpa => database/jpa}/dev-protocol-jpa-entity-callback/src/main/java/com/baiye/DevProtocolJpaEntityCallbackApplication.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard1/pom.xml (96%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard1/src/main/java/com/baiye/DevProtocolJpaShard1Application.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard1/src/main/java/com/baiye/configuration/DataSource1Config.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard1/src/main/java/com/baiye/configuration/DataSource2Config.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard1/src/main/java/com/baiye/controller/OrderController.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db1/Order.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db1/OrderRepository.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db2/Sku.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db2/SkuRepository.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard1/src/main/resources/application-dev.yml (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard1/src/main/resources/application.yml (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard1/src/main/resources/config/application-jpa.yml (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/pom.xml (96%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/java/com/baiye/DevProtocolJpaShard2Application.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSource1Config.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSource2Config.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSourceRoutingHolder.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSource.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSourceConfig.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSourceEnum.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db1/Order.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db1/OrderRepository.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db2/Sku.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db2/SkuRepository.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/java/com/baiye/web/DataSourceInterceptor.java (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/resources/application-dev.yml (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/resources/application.yml (100%)
rename {jpa => database/jpa}/dev-protocol-jpa-shard2/src/main/resources/config/application-jpa.yml (100%)
rename {jpa => database/jpa}/pic/回调事件注册表.png (100%)
diff --git a/README.md b/README.md
index 5bb5645..a93a591 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,77 @@
## 1. 项目内容说明
-dev-protocol-test
+ base
+ jvm JVM剖析
+ best-practice
+ bd-support-project
+ my-ms-project 微服务项目实践讲解
+ sde 脚手架工程
+ dev-protocol-test
+ bigdata
+ clickhouse ClickHouse剖析
+ flink Flink剖析
+ kafka Kafka剖析
+ spark Spark剖析
+ zookeeper Zookeeper剖析
+ cloud-native
+ containered Containered
+ docker Docker
+ k8s K8s
+ podman Podman
+ database
+ binlog binlog 日志监听的案例
+ mycat Mycat中间件使用
+ mysql mysql剖析
+ shardingsphere Shardingsphere中间件使用
+ jpa Jpa 的方案
+ idea-do 设计方案
+ longpolling
+ demo Demo案例
+ file 用的文件
+ netty Netty剖析
+ practice 实战方案
+ mq
+ rabbitmq RabbitMQ剖析
+ rocketmq RocketMQ剖析
+ search
+ elasticsearch Elasticsearch剖析
+ utils
+ dev-protocol-id 分布式Id生成器
+
+---
+ - dev-protocol-common
+ - pom 是基本项目的通用依赖
+ - README.md 基本的项目开发规范
+ - 代码 常用的一些规范和示例
+ dev-protocol-design-pattern
+ - Java设计模式总结
+ dev-protocol-devops
+ - 持续交付等的内容
+ dev-protocol-drools
+ - 规则引擎
+ dev-protocol-extend
+ - java-call-other Java 调用其他语言
+ -
+ dev-protocol-gateway
+ - 网关
+ dev-protocol-log
+ - 日志
+ dev-protocol-pay
+ - 支付
+ dev-protocol-shardingtask
+ - 分表分库
+ dev-protocol-springboot
+ - SpringBoot 研究
+ dev-protocol-springcloud
+ - SpringCloud 研究
+ dev-protocol-test
+ - 测试标准
+ dev-protocol-tools
+ - 常用的工具
+
+## 2. 参考
+
- SpringBoot项目Test的编写规范及使用标准
- 参考: https://mp.weixin.qq.com/s/W5v8zOCHbc2_NvobMGaU8w
dev-protocol-log
@@ -16,168 +86,4 @@ dev-protocol-gateway
dev-protocol-devops
- DevOps 相关的最佳实现
dev-protocol-shardingtask
-- 配置多数据源和分表分库实现
-
-### 1.1 基本命令(dev-protocol-log)
-
-- Kafka
- 查看topic列表命令(连接其中一个就好了):
- 【旧版】kafka-topics.sh --zookeeper 172.16.26.183:2181 --list
- 【新版】kafka-topics.sh --bootstrap-server 172.16.26.183:9092 --list
- (– zookeeper is not a recognized option主要原因是 Kafka 版本过高,命令不存在)
- 创建topic主题
- kafka-topics.sh --bootstrap-server 172.16.26.183:9092 --create --topic topic1 --partitions 1 --replication-factor 3
- --create 命令后 --topic 为创建topic 并指定 topic name
- --partitions 为指定分区数量
- --replication-factor 为指定副本集数量
- 向kafka集群发送数据
- 【无key型消息】kafka-console-producer.sh --bootstrap-server 172.16.26.183:9092 --topic topic1
- 【有key型消息】 kafka-console-producer.sh --bootstrap-server 172.16.26.183:9092 --topic topic1 --property parse.key=true
- (默认消息键与消息值间使用“Tab键”进行分隔,切勿使用转义字符(\t))
- kafka命令接受数据
- kafka-console-consumer.sh --bootstrap-server 172.16.26.183:9092 --topic topic1 --from-beginning
- kafka查看消费进度:(当我们需要查看一个消费者组的消费进度时,则使用下面的命令)(启动Consumer的时候才会真的生效)【这条命令对查询消费特别重要】
- kafka-consumer-groups.sh --bootstrap-server 172.16.26.183:9092 --describe --group group1
-
-### 1.2 注意事项(dev-protocol-log)
-
-一致性确定
-命令中的 --bootstrap-server 和配置文件中的要一致
-# 允许外部端口连接
-listeners=PLAINTEXT://0.0.0.0:9092
-# 外部代理地址
-advertised.listeners=PLAINTEXT://121.201.64.12:9092
-https://blog.csdn.net/pbrlovejava/article/details/103451302
-国内下载镜像加速
-https://www.newbe.pro/
-
-### 1.3 海量日志收集架构设计(dev-protocol-log)
-
-- 海量日志收集架构示意图
- ![avatar](dev-protocol-log/pic/海量日志收集架构示意图.png)
-
----
-
-- 标准架构(海量): Beats(日志收集) -> kafka(日志堆积) -> Logstash(日志过滤) -> ElasticSearch(日志查询) -> Kibana(效果展示)
-- 简化收集方案1: 直接使用Log4j的插件和Logstash集成 -> ElasticSearch(日志查询) -> Kibana(效果展示)
-- 简化收集方案2: 使用Log4j自己封装一个appender -> ElasticSearch(日志查询) -> Kibana(效果展示)
-- 简化收集方案3: 直接使用kafka的appender(log4j提供的),直接实现 -> kafka(日志堆积) -> ElasticSearch(日志查询) -> Kibana(效果展示)
-- 先进技术: SkyWalking 的 Netty或者Agent的方式,直接传到另外一个Agent端
-
----
-
-- 实际落地架构图
- ![avatar](dev-protocol-log/pic/实际落地架构图.png)
-
----
-
-- 全域日志收集架构落地图
- ![avatar](dev-protocol-log/pic/全域日志收集架构落地图.png)
-
-### 1.4 日志输出设计
-
-- 1. 使用 Log4j2 的相关技术进行日志定义
- ![avatar](dev-protocol-log/pic/日志输出功能详情.png)
-- 2. 使用 filebeat 进行日志的收集
- ![avatar](dev-protocol-log/pic/FIleBeat日志收集.png)
-
- 启动前先进行检查 ./filebeat -c 配置文件.yml -configtest
- 启动顺序 kafka -> 自己的应用程序 -> filebeat
--
-
-### 3.1 智能网关
-
-#### JWT 在微服务架构下的认证过程
-
-- A> 服务器自主验签方式
- ![avatar](dev-protocol-gateway/pic/服务器自主验签方式.png)
-
- - 第一步,认证中心微服务负责用户认证任务,在启动时从 Nacos 配置中心抽取 JWT 加密用私钥
- - 第二步,用户在登录页输入用户名密码,客户端向认证中心服务发起认证请求
- - 第三步,认证中心服务根据输入在用户数据库中进行认证校验,如果校验成功则返回认证中心将生成用户的JSON数据并创建对应的 JWT 返回给客户端
- - 第四步,在收到 JSON 数据后,客户端将其中 token 数据保存在 cookie 或者本地缓存中
- - 第五步,随后客户端向具体某个微服务发起新地请求,这个 JWT 都会附加在请求头或者 cookie 中发往 API 网关,网关根据路由规则将请求与jwt数据转发至具体的微服务。中间过程网关不对 JWT 做任何处理
- - 第六步,微服务接收到请求后,发现请求附带 JWT 数据,于是将 JWT 再次转发给用户认证服务,此时用户认证服务对 JWT 进行验签,验签成功提取其中用户编号,查询用户认证与授权的详细数据
- - 第七步,具体的微服务收到上述 JSON 后,对当前执行的操作进行判断,检查是否拥有执行权限,权限检查通过执行业务代码,权限检查失败返回错误响应
-- B> API 网关统一验签方案
- ![avatar](dev-protocol-gateway/pic/API网关统一验签方案.png)
- API 网关统一验签与服务端验签最大的区别是在 API 网关层面就发起 JWT 的验签请求,之后路由过程中附加的是从认证中心返回的用户与权限数据,其他的操作步骤与方案一是完全相同的
-
-## TODO-List
-
-1. 使用 切面+注解 的方式对同一类的请求带上相对应的验证信息
-2. 注意在调用请求的时候要对内部鉴权方式和外部鉴权方式进行区分,然后知道在使用JWT方案的时候要进行JWT防止伪造鉴定
-3. Nginx相关的配置
-
-## JPA审计
-
-### 建议使用源码
-
-dev-protocol-jpaauditing1 (自定义审计)
-dev-protocol-jpaauditing2 (内部代码实现方式)
-dev-protocol-jpaauditing3 (正式环境使用)
-
-### 原理分析
-
-1. 从 @EnableJpaAuditing 入手分析
-
- 1. package org.springframework.data.jpa.repository.config;
- 2. @Import(JpaAuditingRegistrar.class)
-
- ---
-
- Auditing 这套封装是 Spring Data JPA 实现的,而不是 Java Persistence API 规定的
- 注解里面还有一项重要功能就是 @Import(JpaAuditingRegistrar.class) 这个类,它帮我们处理 Auditing 的逻辑。
-
----
-
-步入 org.springframework.data.jpa.repository.config.JpaAuditingRegistrar.registerBeanDefinitions 方法
-
-1. super.registerBeanDefinitions(annotationMetadata, registry);
-2. registerInfrastructureBeanWithId(...);
-
----
-
-2. 打开 AuditingEntityListener 的源码
- 1. AuditingEntityListener 的实现还是比较简单的,利用了 Java Persistence API 里面的@PrePersist、@PreUpdate 回调函数,
- 在更新和创建之前通过AuditingHandler 添加了用户信息和时间信息
-
-### 原理分析结论
-
-1. 查看 Auditing 的实现源码,其实给我们提供了一个思路,就是怎么利用 @PrePersist、@PreUpdate 等回调函数和
- @EntityListeners 定义自己的框架代码。这是值得我们学习和参考的,比如说 Auditing 的操作日志场景等。
-2. 想成功配置 Auditing 功能,必须将 @EnableJpaAuditing 和 @EntityListeners(AuditingEntityListener.class) 一起使用才有效。
-3. 我们是不是可以不通过 Spring data JPA 给我们提供的 Auditing 功能,而是直接使用 @PrePersist、@PreUpdate 回调函数注解在实体上,
- 也可以达到同样的效果呢?答案是肯定的,因为回调函数是实现的本质。
-
-### 整理
-
-使用相对应的注解去注册进Spring容器
-使用注册的回调函数进行注解化设置
-
-## 正确使用 @Entity 里面的回调方法
-
-### 概念掌握
-
-Java Persistence API 里面规定的回调方法有哪些?
-回调事件注解表
-![avatar](jpa/pic/回调事件注册表.png)
-
-- 注意事项
- - 回调函数都是和 EntityManager.flush 或 EntityManager.commit 在同一个线程里面执行的,只不过调用方法有先后之分,
- 都是同步调用,所以当任何一个回调方法里面发生异常,都会触发事务进行回滚,而不会触发事务提交。
- - Callbacks 注解可以放在实体里面,可以放在 super-class 里面,也可以定义在 entity 的 listener 里面,但需要注意的是:
- 放在实体(或者 super-class)里面的方法,签名格式为“void ()”,即没有参数,方法里面操作的是 this 对象自己;
- 放在实体的 EntityListener 里面的方法签名格式为“void (Object)”,也就是方法可以有参数,参数是代表用来接收回调方法的实体。
- - Callbacks 注解可以放在实体里面,可以放在 super-class 里面,也可以定义在 entity 的 listener 里面,
- 但需要注意的是:放在实体(或者 super-class)里面的方法,签名格式为“void ()”,即没有参数,方法里面操作的是 this 对象自己;
- 放在实体的 EntityListener 里面的方法签名格式为“void (Object)”,也就是方法可以有参数,参数是代表用来接收回调方法的实体。
-- JPA Callbacks 的使用方法
- - 修改 BaseEntity,在里面新增回调函数和注解
-
-### 使用总结
-
-在实体中定义一些通用逻辑, 然后在对应 Listener中进行调用时机指定 (参数的合理化和健壮性检测)
-JPA Callbacks 的实现原理,事件机制
-
-### JPA Callbacks 的最佳实践
+- 配置多数据源和分表分库实现
\ No newline at end of file
diff --git a/bigdata/kafka/README.md b/bigdata/kafka/README.md
index 763706f..4cb0a32 100644
--- a/bigdata/kafka/README.md
+++ b/bigdata/kafka/README.md
@@ -79,6 +79,33 @@ bin/kafka-console-consumer.sh --bootstrap-server 192.168.220.128:9092 --topic ji
# {"orderId":"002","price":"80"}
```
+```shell
+
+# 【旧版】
+kafka-topics.sh --zookeeper 172.16.26.183:2181 --list
+# 【新版】
+kafka-topics.sh --bootstrap-server 172.16.26.183:9092 --list
+# (– zookeeper is not a recognized option主要原因是 Kafka 版本过高,命令不存在)
+# 创建topic主题
+kafka-topics.sh --bootstrap-server 172.16.26.183:9092 --create --topic topic1 --partitions 1 --replication-factor 3
+# --create 命令后 --topic 为创建topic 并指定 topic name
+# --partitions 为指定分区数量
+# --replication-factor 为指定副本集数量
+# 向kafka集群发送数据
+# 【无key型消息】
+kafka-console-producer.sh --bootstrap-server 172.16.26.183:9092 --topic topic1
+# 【有key型消息】
+kafka-console-producer.sh --bootstrap-server 172.16.26.183:9092 --topic topic1 --property parse.key=true
+# (默认消息键与消息值间使用“Tab键”进行分隔,切勿使用转义字符(\t))
+# kafka命令接受数据
+kafka-console-consumer.sh --bootstrap-server 172.16.26.183:9092 --topic topic1 --from-beginning
+# kafka查看消费进度:(当我们需要查看一个消费者组的消费进度时,则使用下面的命令)(启动Consumer的时候才会真的生效)【这条命令对查询消费特别重要】
+kafka-consumer-groups.sh --bootstrap-server 172.16.26.183:9092 --describe --group group1
+
+```
+
+
+
## 2. Kafka客户端操作
diff --git a/jpa/dev-protocol-jpa-auditing1/pom.xml b/database/jpa/dev-protocol-jpa-auditing1/pom.xml
similarity index 96%
rename from jpa/dev-protocol-jpa-auditing1/pom.xml
rename to database/jpa/dev-protocol-jpa-auditing1/pom.xml
index 294e1fb..a0ee9e3 100644
--- a/jpa/dev-protocol-jpa-auditing1/pom.xml
+++ b/database/jpa/dev-protocol-jpa-auditing1/pom.xml
@@ -6,7 +6,7 @@
dev-protocol
org.example
1.0-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/DevProtocolJpaAuditingApplication.java b/database/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/DevProtocolJpaAuditingApplication.java
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/DevProtocolJpaAuditingApplication.java
rename to database/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/DevProtocolJpaAuditingApplication.java
diff --git a/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/config/JpaConfiguration.java b/database/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/config/JpaConfiguration.java
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/config/JpaConfiguration.java
rename to database/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/config/JpaConfiguration.java
diff --git a/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/config/MyAuditorAware.java b/database/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/config/MyAuditorAware.java
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/config/MyAuditorAware.java
rename to database/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/config/MyAuditorAware.java
diff --git a/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/entity/AuditingBase.java b/database/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/entity/AuditingBase.java
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/entity/AuditingBase.java
rename to database/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/entity/AuditingBase.java
diff --git a/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/entity/User.java b/database/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/entity/User.java
similarity index 87%
rename from jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/entity/User.java
rename to database/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/entity/User.java
index 9eb73f9..7e89bf0 100644
--- a/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/entity/User.java
+++ b/database/jpa/dev-protocol-jpa-auditing1/src/main/java/com/baiye/entity/User.java
@@ -1,7 +1,6 @@
package com.baiye.entity;
import lombok.*;
-import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
diff --git a/jpa/dev-protocol-jpa-auditing1/src/main/resources/application-dev.yml b/database/jpa/dev-protocol-jpa-auditing1/src/main/resources/application-dev.yml
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing1/src/main/resources/application-dev.yml
rename to database/jpa/dev-protocol-jpa-auditing1/src/main/resources/application-dev.yml
diff --git a/jpa/dev-protocol-jpa-auditing1/src/main/resources/application.yml b/database/jpa/dev-protocol-jpa-auditing1/src/main/resources/application.yml
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing1/src/main/resources/application.yml
rename to database/jpa/dev-protocol-jpa-auditing1/src/main/resources/application.yml
diff --git a/jpa/dev-protocol-jpa-auditing1/src/main/resources/config/application-jpa.yml b/database/jpa/dev-protocol-jpa-auditing1/src/main/resources/config/application-jpa.yml
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing1/src/main/resources/config/application-jpa.yml
rename to database/jpa/dev-protocol-jpa-auditing1/src/main/resources/config/application-jpa.yml
diff --git a/jpa/dev-protocol-jpa-auditing2/pom.xml b/database/jpa/dev-protocol-jpa-auditing2/pom.xml
similarity index 96%
rename from jpa/dev-protocol-jpa-auditing2/pom.xml
rename to database/jpa/dev-protocol-jpa-auditing2/pom.xml
index 83621e3..ed08f60 100644
--- a/jpa/dev-protocol-jpa-auditing2/pom.xml
+++ b/database/jpa/dev-protocol-jpa-auditing2/pom.xml
@@ -6,7 +6,7 @@
dev-protocol
org.example
1.0-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/jpa/dev-protocol-jpa-auditing2/src/main/java/com/baiye/DevProtocolJpaAuditing2Application.java b/database/jpa/dev-protocol-jpa-auditing2/src/main/java/com/baiye/DevProtocolJpaAuditing2Application.java
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing2/src/main/java/com/baiye/DevProtocolJpaAuditing2Application.java
rename to database/jpa/dev-protocol-jpa-auditing2/src/main/java/com/baiye/DevProtocolJpaAuditing2Application.java
diff --git a/jpa/dev-protocol-jpa-auditing2/src/main/java/com/baiye/entity/User.java b/database/jpa/dev-protocol-jpa-auditing2/src/main/java/com/baiye/entity/User.java
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing2/src/main/java/com/baiye/entity/User.java
rename to database/jpa/dev-protocol-jpa-auditing2/src/main/java/com/baiye/entity/User.java
diff --git a/jpa/dev-protocol-jpa-auditing2/src/main/resources/application-dev.yml b/database/jpa/dev-protocol-jpa-auditing2/src/main/resources/application-dev.yml
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing2/src/main/resources/application-dev.yml
rename to database/jpa/dev-protocol-jpa-auditing2/src/main/resources/application-dev.yml
diff --git a/jpa/dev-protocol-jpa-auditing2/src/main/resources/application.yml b/database/jpa/dev-protocol-jpa-auditing2/src/main/resources/application.yml
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing2/src/main/resources/application.yml
rename to database/jpa/dev-protocol-jpa-auditing2/src/main/resources/application.yml
diff --git a/jpa/dev-protocol-jpa-auditing2/src/main/resources/config/application-jpa.yml b/database/jpa/dev-protocol-jpa-auditing2/src/main/resources/config/application-jpa.yml
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing2/src/main/resources/config/application-jpa.yml
rename to database/jpa/dev-protocol-jpa-auditing2/src/main/resources/config/application-jpa.yml
diff --git a/jpa/dev-protocol-jpa-auditing3/pom.xml b/database/jpa/dev-protocol-jpa-auditing3/pom.xml
similarity index 96%
rename from jpa/dev-protocol-jpa-auditing3/pom.xml
rename to database/jpa/dev-protocol-jpa-auditing3/pom.xml
index dd2227d..746b414 100644
--- a/jpa/dev-protocol-jpa-auditing3/pom.xml
+++ b/database/jpa/dev-protocol-jpa-auditing3/pom.xml
@@ -6,7 +6,7 @@
dev-protocol
org.example
1.0-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/jpa/dev-protocol-jpa-auditing3/src/main/java/com/baiye/entity/BaseEntity.java b/database/jpa/dev-protocol-jpa-auditing3/src/main/java/com/baiye/entity/BaseEntity.java
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing3/src/main/java/com/baiye/entity/BaseEntity.java
rename to database/jpa/dev-protocol-jpa-auditing3/src/main/java/com/baiye/entity/BaseEntity.java
diff --git a/jpa/dev-protocol-jpa-auditing3/src/main/java/com/baiye/entity/User.java b/database/jpa/dev-protocol-jpa-auditing3/src/main/java/com/baiye/entity/User.java
similarity index 100%
rename from jpa/dev-protocol-jpa-auditing3/src/main/java/com/baiye/entity/User.java
rename to database/jpa/dev-protocol-jpa-auditing3/src/main/java/com/baiye/entity/User.java
diff --git a/jpa/dev-protocol-jpa-entity-callback/pom.xml b/database/jpa/dev-protocol-jpa-entity-callback/pom.xml
similarity index 91%
rename from jpa/dev-protocol-jpa-entity-callback/pom.xml
rename to database/jpa/dev-protocol-jpa-entity-callback/pom.xml
index cb1c04e..bca6f2b 100644
--- a/jpa/dev-protocol-jpa-entity-callback/pom.xml
+++ b/database/jpa/dev-protocol-jpa-entity-callback/pom.xml
@@ -6,7 +6,7 @@
dev-protocol
org.example
1.0-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/jpa/dev-protocol-jpa-entity-callback/src/main/java/com/baiye/DevProtocolJpaEntityCallbackApplication.java b/database/jpa/dev-protocol-jpa-entity-callback/src/main/java/com/baiye/DevProtocolJpaEntityCallbackApplication.java
similarity index 100%
rename from jpa/dev-protocol-jpa-entity-callback/src/main/java/com/baiye/DevProtocolJpaEntityCallbackApplication.java
rename to database/jpa/dev-protocol-jpa-entity-callback/src/main/java/com/baiye/DevProtocolJpaEntityCallbackApplication.java
diff --git a/jpa/dev-protocol-jpa-shard1/pom.xml b/database/jpa/dev-protocol-jpa-shard1/pom.xml
similarity index 96%
rename from jpa/dev-protocol-jpa-shard1/pom.xml
rename to database/jpa/dev-protocol-jpa-shard1/pom.xml
index ef2d6bc..949f670 100644
--- a/jpa/dev-protocol-jpa-shard1/pom.xml
+++ b/database/jpa/dev-protocol-jpa-shard1/pom.xml
@@ -6,7 +6,7 @@
dev-protocol
org.example
1.0-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/DevProtocolJpaShard1Application.java b/database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/DevProtocolJpaShard1Application.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/DevProtocolJpaShard1Application.java
rename to database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/DevProtocolJpaShard1Application.java
diff --git a/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/configuration/DataSource1Config.java b/database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/configuration/DataSource1Config.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/configuration/DataSource1Config.java
rename to database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/configuration/DataSource1Config.java
diff --git a/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/configuration/DataSource2Config.java b/database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/configuration/DataSource2Config.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/configuration/DataSource2Config.java
rename to database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/configuration/DataSource2Config.java
diff --git a/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/controller/OrderController.java b/database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/controller/OrderController.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/controller/OrderController.java
rename to database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/controller/OrderController.java
diff --git a/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db1/Order.java b/database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db1/Order.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db1/Order.java
rename to database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db1/Order.java
diff --git a/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db1/OrderRepository.java b/database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db1/OrderRepository.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db1/OrderRepository.java
rename to database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db1/OrderRepository.java
diff --git a/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db2/Sku.java b/database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db2/Sku.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db2/Sku.java
rename to database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db2/Sku.java
diff --git a/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db2/SkuRepository.java b/database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db2/SkuRepository.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db2/SkuRepository.java
rename to database/jpa/dev-protocol-jpa-shard1/src/main/java/com/baiye/dao/db2/SkuRepository.java
diff --git a/jpa/dev-protocol-jpa-shard1/src/main/resources/application-dev.yml b/database/jpa/dev-protocol-jpa-shard1/src/main/resources/application-dev.yml
similarity index 100%
rename from jpa/dev-protocol-jpa-shard1/src/main/resources/application-dev.yml
rename to database/jpa/dev-protocol-jpa-shard1/src/main/resources/application-dev.yml
diff --git a/jpa/dev-protocol-jpa-shard1/src/main/resources/application.yml b/database/jpa/dev-protocol-jpa-shard1/src/main/resources/application.yml
similarity index 100%
rename from jpa/dev-protocol-jpa-shard1/src/main/resources/application.yml
rename to database/jpa/dev-protocol-jpa-shard1/src/main/resources/application.yml
diff --git a/jpa/dev-protocol-jpa-shard1/src/main/resources/config/application-jpa.yml b/database/jpa/dev-protocol-jpa-shard1/src/main/resources/config/application-jpa.yml
similarity index 100%
rename from jpa/dev-protocol-jpa-shard1/src/main/resources/config/application-jpa.yml
rename to database/jpa/dev-protocol-jpa-shard1/src/main/resources/config/application-jpa.yml
diff --git a/jpa/dev-protocol-jpa-shard2/pom.xml b/database/jpa/dev-protocol-jpa-shard2/pom.xml
similarity index 96%
rename from jpa/dev-protocol-jpa-shard2/pom.xml
rename to database/jpa/dev-protocol-jpa-shard2/pom.xml
index 4d0cc35..0bb5192 100644
--- a/jpa/dev-protocol-jpa-shard2/pom.xml
+++ b/database/jpa/dev-protocol-jpa-shard2/pom.xml
@@ -6,7 +6,7 @@
dev-protocol
org.example
1.0-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/DevProtocolJpaShard2Application.java b/database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/DevProtocolJpaShard2Application.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/DevProtocolJpaShard2Application.java
rename to database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/DevProtocolJpaShard2Application.java
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSource1Config.java b/database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSource1Config.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSource1Config.java
rename to database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSource1Config.java
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSource2Config.java b/database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSource2Config.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSource2Config.java
rename to database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSource2Config.java
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSourceRoutingHolder.java b/database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSourceRoutingHolder.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSourceRoutingHolder.java
rename to database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/DataSourceRoutingHolder.java
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSource.java b/database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSource.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSource.java
rename to database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSource.java
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSourceConfig.java b/database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSourceConfig.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSourceConfig.java
rename to database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSourceConfig.java
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSourceEnum.java b/database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSourceEnum.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSourceEnum.java
rename to database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/configuration/RoutingDataSourceEnum.java
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db1/Order.java b/database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db1/Order.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db1/Order.java
rename to database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db1/Order.java
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db1/OrderRepository.java b/database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db1/OrderRepository.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db1/OrderRepository.java
rename to database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db1/OrderRepository.java
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db2/Sku.java b/database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db2/Sku.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db2/Sku.java
rename to database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db2/Sku.java
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db2/SkuRepository.java b/database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db2/SkuRepository.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db2/SkuRepository.java
rename to database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/dao/db2/SkuRepository.java
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/web/DataSourceInterceptor.java b/database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/web/DataSourceInterceptor.java
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/web/DataSourceInterceptor.java
rename to database/jpa/dev-protocol-jpa-shard2/src/main/java/com/baiye/web/DataSourceInterceptor.java
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/resources/application-dev.yml b/database/jpa/dev-protocol-jpa-shard2/src/main/resources/application-dev.yml
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/resources/application-dev.yml
rename to database/jpa/dev-protocol-jpa-shard2/src/main/resources/application-dev.yml
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/resources/application.yml b/database/jpa/dev-protocol-jpa-shard2/src/main/resources/application.yml
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/resources/application.yml
rename to database/jpa/dev-protocol-jpa-shard2/src/main/resources/application.yml
diff --git a/jpa/dev-protocol-jpa-shard2/src/main/resources/config/application-jpa.yml b/database/jpa/dev-protocol-jpa-shard2/src/main/resources/config/application-jpa.yml
similarity index 100%
rename from jpa/dev-protocol-jpa-shard2/src/main/resources/config/application-jpa.yml
rename to database/jpa/dev-protocol-jpa-shard2/src/main/resources/config/application-jpa.yml
diff --git a/jpa/pic/回调事件注册表.png b/database/jpa/pic/回调事件注册表.png
similarity index 100%
rename from jpa/pic/回调事件注册表.png
rename to database/jpa/pic/回调事件注册表.png
diff --git a/database/mysql/README.md b/database/mysql/README.md
index 4b4556e..38dc441 100644
--- a/database/mysql/README.md
+++ b/database/mysql/README.md
@@ -459,7 +459,51 @@
- 一个是你索引别太多,索引太多了,更新的时候维护很多索引树肯定是不行的;
- 一个是可能会涉及到一些锁等待和死锁的问题;
- 一个就是可能会涉及到 MySQL连接池、写redo log文件之类的问题
--
+
+### 77. 回表查询对性能的损害以及覆盖索引是什么?
+- 有的时候MySQL的执行引擎甚至可能会认为,你要是类似select * from table order by xx1,xx2,xx3的语句,相当于是得把联合索引和聚簇索引,两个索引的所有数据都扫描一遍了
+ ,那还不如就不走联合索引了,直接全表扫描得了,这样还就扫描一个索引而已。
+- 但是你如果要是select * from table order by xx1,xx2,xx3 limit 10这样的语句,那执行引擎就知道了,你先扫描联合索引的索引树拿到10条数据,接着对10条数据在聚簇索引里查找10次就可以了,那么就
+ 还是会走联合索引的。
+- 覆盖索引的概念,其实覆盖索引不是一种索引,他就是一种基于索引查询的方式罢了。
+- 针对类似select xx1,xx2,xx3 from table order by xx1,xx2,xx3这样的 语句,这种情况下,你仅仅需要联合索引里的几个字段的值,那么其实就只要扫描联合索引的索引树就可以了,不需要
+ 回表去聚簇索引里找其他字段了。
+- 这个时候,需要的字段值直接在索引树里就能提取出来,不需要回表到聚簇索引,这种查询方式就是覆盖索引。
+- 在写SQL语句的时候
+ - 一方面是你要注意一下也许你会用到联合索引,但是是否可能会导致大量的回表到聚簇索引,如果需要回表到聚簇索引的次数太多了,可能就直接给你做成全表扫描 不走联合索引了;
+ - 一方面是尽可能还是在SQL里指定你仅仅需要的几个字段,不要搞一个select *把所有字段都拿出来,甚至最好是直接走覆盖索引的方式,不要去回表到聚簇索引
+ - 即使真的要回表到聚簇索引,那你也尽可能用limit、where之类的语句限定一下回表到聚簇索引的次数,就从联合索引里筛选少数数据,然后再回表到聚簇索引里去,这样性能也会好一些
+
+### 78-80. 设计索引的时候,我们一般要考虑哪些因素呢?
+- 首先,我们在针对业务需求建立好一张表的结构之后,就知道这个表有哪些字段,每个字段是什么类型的,会包含哪些数据
+- 接着设计好表结构之后,接下来要做的,就是要设计表的索引,这个设计索引的时候,我们要考虑第一点,就是未来我们对表进行查询的时候,大概会如何来进行查询?
+- PS:读索引的设计可以放在流程设计之后
+- 规则
+ - 索引设计原则1: 针对你的SQL语句里的where条件、order by条件以及 group by条件去设计索引,可以设计一个或者两三个联合索引,每一个联合索引都尽量去包含上你的where、order by、
+ group by里的字段,接着你就要仔细审查每个SQL语句,是不是每个where、order by、group by后面跟的字段顺序,都是某个联合索引的最左侧字段开始的部分字段?
+ - 索引设计原则2: 字段基数问题原则,一般建立索引,尽量使用那些基数比较大的字段,就是值比较多的字段,那么才能发挥出B+树快速二分查找的优势来。一般建立索引,尽量使用那些基数比较大的字段,就是值比较多的字段,那么才能发挥出B+树快速二分
+ 查找的优势来。不过当然了,这个所谓的字段类型小一点的列,也不是绝对的,很多时候你就是要针对varchar(255)这种字段建立索引,哪怕多占用一些磁盘空间,那你也得去设计这样的索引,比较关键的其实还是尽量别
+ 把基数太低的字段包含在索引里,因为意义不是太大。万一要是你真的有那种varchar(255)的字段,可能里面的值太大了,你觉得都放索引树里太
+ 占据磁盘空间了,此时你仔细考虑了一下,发现完全可以换一种策略,也就是仅仅针对这个varchar(255)字段的前20个字符建立索引,就是说,对这个字段里的每个值的前20个字符放在索引树里而已。
+ 此时你建立出来的索引其实类似于KEY my_index(name(20),age,course),就这样的一个形式,假设name是varchar(255)类型的,但是在索引树里你对name的值仅仅提取前20个字符而已。
+ 但是假如你要是order by name,那么此时你的name因为在索引树里仅仅包含了前20个字符,所以这个排序是没法用上索引了!group by也是同理的。
+ - 索引设计规则3: 不要让你的查询语句里的字段搞什么函数,或者是搞个计算。
+- 总结:
+ - 因为你插入的数据值可能根本不是按照顺序来的,很可能会导致索引树里的某个页就会自动分裂,这个页分裂的过程就很耗费时间,因此一般让大家设计索引别太多,建议两三个联合索引就应该覆盖掉
+ 你这个表的全部查询了。
+ - 建议大家主键一定是自增的,别用UUID之类的,因为主键自增,那么起码你的聚簇索引不会频繁的分裂,主键值都是有序的,就会自然的新增一个页而已,但是如果你用的是UUID,那
+ 么也会导致聚簇索引频繁的页分裂
+
+
+
+
+
+
+
+
+
+
+
# 查询语句的执行原理
diff --git a/dev-protocol-log/README.md b/dev-protocol-log/README.md
index a416f54..3963e22 100644
--- a/dev-protocol-log/README.md
+++ b/dev-protocol-log/README.md
@@ -1,5 +1,146 @@
## 日志配置及日志相关的实践
+### 1.2 注意事项(dev-protocol-log)
+
+一致性确定
+命令中的 --bootstrap-server 和配置文件中的要一致
+# 允许外部端口连接
+listeners=PLAINTEXT://0.0.0.0:9092
+# 外部代理地址
+advertised.listeners=PLAINTEXT://121.201.64.12:9092
+https://blog.csdn.net/pbrlovejava/article/details/103451302
+国内下载镜像加速
+https://www.newbe.pro/
+
+### 1.3 海量日志收集架构设计(dev-protocol-log)
+
+- 海量日志收集架构示意图
+ ![avatar](dev-protocol-log/pic/海量日志收集架构示意图.png)
+
+---
+
+- 标准架构(海量): Beats(日志收集) -> kafka(日志堆积) -> Logstash(日志过滤) -> ElasticSearch(日志查询) -> Kibana(效果展示)
+- 简化收集方案1: 直接使用Log4j的插件和Logstash集成 -> ElasticSearch(日志查询) -> Kibana(效果展示)
+- 简化收集方案2: 使用Log4j自己封装一个appender -> ElasticSearch(日志查询) -> Kibana(效果展示)
+- 简化收集方案3: 直接使用kafka的appender(log4j提供的),直接实现 -> kafka(日志堆积) -> ElasticSearch(日志查询) -> Kibana(效果展示)
+- 先进技术: SkyWalking 的 Netty或者Agent的方式,直接传到另外一个Agent端
+
+---
+
+- 实际落地架构图
+ ![avatar](dev-protocol-log/pic/实际落地架构图.png)
+
+---
+
+- 全域日志收集架构落地图
+ ![avatar](dev-protocol-log/pic/全域日志收集架构落地图.png)
+
+### 1.4 日志输出设计
+
+- 1. 使用 Log4j2 的相关技术进行日志定义
+ ![avatar](dev-protocol-log/pic/日志输出功能详情.png)
+- 2. 使用 filebeat 进行日志的收集
+ ![avatar](dev-protocol-log/pic/FIleBeat日志收集.png)
+
+启动前先进行检查 ./filebeat -c 配置文件.yml -configtest
+启动顺序 kafka -> 自己的应用程序 -> filebeat
+-
+
+### 3.1 智能网关
+
+#### JWT 在微服务架构下的认证过程
+
+- A> 服务器自主验签方式
+ ![avatar](dev-protocol-gateway/pic/服务器自主验签方式.png)
+
+ - 第一步,认证中心微服务负责用户认证任务,在启动时从 Nacos 配置中心抽取 JWT 加密用私钥
+ - 第二步,用户在登录页输入用户名密码,客户端向认证中心服务发起认证请求
+ - 第三步,认证中心服务根据输入在用户数据库中进行认证校验,如果校验成功则返回认证中心将生成用户的JSON数据并创建对应的 JWT 返回给客户端
+ - 第四步,在收到 JSON 数据后,客户端将其中 token 数据保存在 cookie 或者本地缓存中
+ - 第五步,随后客户端向具体某个微服务发起新地请求,这个 JWT 都会附加在请求头或者 cookie 中发往 API 网关,网关根据路由规则将请求与jwt数据转发至具体的微服务。中间过程网关不对 JWT 做任何处理
+ - 第六步,微服务接收到请求后,发现请求附带 JWT 数据,于是将 JWT 再次转发给用户认证服务,此时用户认证服务对 JWT 进行验签,验签成功提取其中用户编号,查询用户认证与授权的详细数据
+ - 第七步,具体的微服务收到上述 JSON 后,对当前执行的操作进行判断,检查是否拥有执行权限,权限检查通过执行业务代码,权限检查失败返回错误响应
+- B> API 网关统一验签方案
+ ![avatar](dev-protocol-gateway/pic/API网关统一验签方案.png)
+ API 网关统一验签与服务端验签最大的区别是在 API 网关层面就发起 JWT 的验签请求,之后路由过程中附加的是从认证中心返回的用户与权限数据,其他的操作步骤与方案一是完全相同的
+
+## TODO-List
+
+1. 使用 切面+注解 的方式对同一类的请求带上相对应的验证信息
+2. 注意在调用请求的时候要对内部鉴权方式和外部鉴权方式进行区分,然后知道在使用JWT方案的时候要进行JWT防止伪造鉴定
+3. Nginx相关的配置
+
+## JPA审计
+
+### 建议使用源码
+
+dev-protocol-jpaauditing1 (自定义审计)
+dev-protocol-jpaauditing2 (内部代码实现方式)
+dev-protocol-jpaauditing3 (正式环境使用)
+
+### 原理分析
+
+1. 从 @EnableJpaAuditing 入手分析
+
+ 1. package org.springframework.data.jpa.repository.config;
+ 2. @Import(JpaAuditingRegistrar.class)
+
+ ---
+
+ Auditing 这套封装是 Spring Data JPA 实现的,而不是 Java Persistence API 规定的
+ 注解里面还有一项重要功能就是 @Import(JpaAuditingRegistrar.class) 这个类,它帮我们处理 Auditing 的逻辑。
+
+---
+
+步入 org.springframework.data.jpa.repository.config.JpaAuditingRegistrar.registerBeanDefinitions 方法
+
+1. super.registerBeanDefinitions(annotationMetadata, registry);
+2. registerInfrastructureBeanWithId(...);
+
+---
+
+2. 打开 AuditingEntityListener 的源码
+ 1. AuditingEntityListener 的实现还是比较简单的,利用了 Java Persistence API 里面的@PrePersist、@PreUpdate 回调函数,
+ 在更新和创建之前通过AuditingHandler 添加了用户信息和时间信息
+
+### 原理分析结论
+
+1. 查看 Auditing 的实现源码,其实给我们提供了一个思路,就是怎么利用 @PrePersist、@PreUpdate 等回调函数和
+ @EntityListeners 定义自己的框架代码。这是值得我们学习和参考的,比如说 Auditing 的操作日志场景等。
+2. 想成功配置 Auditing 功能,必须将 @EnableJpaAuditing 和 @EntityListeners(AuditingEntityListener.class) 一起使用才有效。
+3. 我们是不是可以不通过 Spring data JPA 给我们提供的 Auditing 功能,而是直接使用 @PrePersist、@PreUpdate 回调函数注解在实体上,
+ 也可以达到同样的效果呢?答案是肯定的,因为回调函数是实现的本质。
+
+### 整理
+
+使用相对应的注解去注册进Spring容器
+使用注册的回调函数进行注解化设置
+
+## 正确使用 @Entity 里面的回调方法
+
+### 概念掌握
+
+Java Persistence API 里面规定的回调方法有哪些?
+回调事件注解表
+![avatar](jpa/pic/回调事件注册表.png)
+
+- 注意事项
+ - 回调函数都是和 EntityManager.flush 或 EntityManager.commit 在同一个线程里面执行的,只不过调用方法有先后之分,
+ 都是同步调用,所以当任何一个回调方法里面发生异常,都会触发事务进行回滚,而不会触发事务提交。
+ - Callbacks 注解可以放在实体里面,可以放在 super-class 里面,也可以定义在 entity 的 listener 里面,但需要注意的是:
+ 放在实体(或者 super-class)里面的方法,签名格式为“void ()”,即没有参数,方法里面操作的是 this 对象自己;
+ 放在实体的 EntityListener 里面的方法签名格式为“void (Object)”,也就是方法可以有参数,参数是代表用来接收回调方法的实体。
+ - Callbacks 注解可以放在实体里面,可以放在 super-class 里面,也可以定义在 entity 的 listener 里面,
+ 但需要注意的是:放在实体(或者 super-class)里面的方法,签名格式为“void ()”,即没有参数,方法里面操作的是 this 对象自己;
+ 放在实体的 EntityListener 里面的方法签名格式为“void (Object)”,也就是方法可以有参数,参数是代表用来接收回调方法的实体。
+- JPA Callbacks 的使用方法
+ - 修改 BaseEntity,在里面新增回调函数和注解
+
+### 使用总结
+
+在实体中定义一些通用逻辑, 然后在对应 Listener中进行调用时机指定 (参数的合理化和健壮性检测)
+JPA Callbacks 的实现原理,事件机制
+
### 1. Logback 配置文件, 高TPS的配置
#### 1.1 功能描述
diff --git a/idea-do/Design-any.md b/idea-do/Design-any.md
index 1ed3012..90e298c 100644
--- a/idea-do/Design-any.md
+++ b/idea-do/Design-any.md
@@ -41,8 +41,10 @@
- 方案架构
![企业轻量级数据分析解决方案](pic/企业轻量级数据分析解决方案.png)
-
-
+# 原型工具
+- https://github.com/jobbole/awesome-design-cn
+- Axure RP 汉化 https://github.com/refscn/rphh
+- https://library.ant.design/
## Sass 服务
diff --git a/pom.xml b/pom.xml
index 4d4e5bb..b7a5f9a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,12 +15,12 @@
dev-protocol-gateway
dev-protocol-devops
dev-protocol-shardingtask
- jpa/dev-protocol-jpa-shard2
- jpa/dev-protocol-jpa-shard1
- jpa/dev-protocol-jpa-auditing1
- jpa/dev-protocol-jpa-auditing2
- jpa/dev-protocol-jpa-auditing3
- jpa/dev-protocol-jpa-entity-callback
+ database/jpa/dev-protocol-jpa-shard2
+ database/jpa/dev-protocol-jpa-shard1
+ database/jpa/dev-protocol-jpa-auditing1
+ database/jpa/dev-protocol-jpa-auditing2
+ database/jpa/dev-protocol-jpa-auditing3
+ database/jpa/dev-protocol-jpa-entity-callback
dev-protocol-design-pattern
dev-protocol-springboot
dev-protocol-extend