diff --git "a/\346\236\227\346\230\245\347\277\224/20240708_Cookie&Session&Token$JWT.md" "b/\346\236\227\346\230\245\347\277\224/20240708_Cookie&Session&Token$JWT.md"
new file mode 100644
index 0000000000000000000000000000000000000000..567ddb684c3c74ad70544e13bb8507b0c1931de6
--- /dev/null
+++ "b/\346\236\227\346\230\245\347\277\224/20240708_Cookie&Session&Token$JWT.md"
@@ -0,0 +1,66 @@
+# Cookie, Session, Token & JWT 简介
+
+## 1. Cookie
+
+### 定义与功能
+Cookie是存储在客户端的小型文本文件,用于存储用户相关信息,如登录状态、用户偏好等。通过Cookie,服务器可以识别用户并提供个性化的服务。
+
+### 工作原理
+- 用户首次访问网站时,服务器通过响应头中的`Set-Cookie`发送Cookie给客户端。
+- 客户端(如浏览器)将Cookie存储在本地。
+- 在随后的请求中,浏览器自动将Cookie添加到请求头中发送给服务器。
+- 服务器解析请求头中的Cookie来识别用户。
+
+### 优缺点
+- **优点**:简单易用,适合存储少量用户数据。
+- **缺点**:存储容量有限,易受跨站脚本攻击(XSS)。
+
+## 2. Session
+
+### 定义与功能
+Session是服务器端用于存储用户会话信息的机制。每个用户访问网站时,服务器都会为其创建一个唯一的Session ID,并通过Cookie或其他方式发送给客户端。
+
+### 工作原理
+- 用户首次访问时,服务器创建Session并生成Session ID。
+- Session ID通过Cookie或其他方式发送给客户端。
+- 客户端在随后的请求中携带Session ID。
+- 服务器通过Session ID检索存储在服务器端的用户会话信息。
+
+### 优缺点
+- **优点**:能存储更多用户信息,适合处理复杂会话。
+- **缺点**:需要服务器存储大量会话信息,对资源要求高;分布式系统中存在Session共享和同步问题。
+
+## 3. Token
+
+### 定义与功能
+Token是一种安全凭证,用于身份验证和授权。与Session和Cookie不同,Token是无状态的,服务器不存储与用户会话相关的信息。
+
+### 工作原理
+- 用户通过用户名和密码登录。
+- 服务器验证用户信息后生成Token,并返回给客户端。
+- 客户端在随后的请求中携带Token。
+- 服务器验证Token的有效性来辨别用户身份和权限。
+
+### 优缺点
+- **优点**:无状态,适合分布式系统;支持跨域请求;安全性较高。
+- **缺点**:Token可能较长,增加网络负担;存储在客户端,存在被窃取风险。
+
+## 4. JWT(JSON Web Token)
+
+### 定义与功能
+JWT是一种用于身份验证和授权的开放标准(RFC 7519),它以JSON格式封装数据,并通过数字签名保证数据的完整性和安全性。
+
+### 组成结构
+- **Header**:包含令牌类型和签名算法。
+- **Payload**:包含用户信息、权限、过期时间等声明。
+- **Signature**:由头部、载荷和密钥组成,用于验证JWT的完整性和真实性。
+
+### 工作原理
+- 用户通过用户名和密码登录。
+- 服务器验证用户信息后生成JWT,并返回给客户端。
+- 客户端在请求中携带JWT。
+- 服务器验证JWT的签名和有效期,解析用户信息进行后续处理。
+
+### 优缺点
+- **优点**:无状态,适合分布式系统;自包含用户信息,减少服务器查询;支持跨域请求;安全性高。
+- **缺点**:Token较长,增加网络负担;载荷信息不宜过多;无法直接撤销已颁发的Token(可通过设置短期过期时间或修改密钥间接处理)。
\ No newline at end of file
diff --git "a/\346\236\227\346\230\245\347\277\224/20240709_\351\233\252\350\212\261\347\256\227\346\263\225.md" "b/\346\236\227\346\230\245\347\277\224/20240709_\351\233\252\350\212\261\347\256\227\346\263\225.md"
new file mode 100644
index 0000000000000000000000000000000000000000..09a2f7d424d8a7abb84e2cae8a8f69ab078803a6
--- /dev/null
+++ "b/\346\236\227\346\230\245\347\277\224/20240709_\351\233\252\350\212\261\347\256\227\346\263\225.md"
@@ -0,0 +1,33 @@
+# 雪花算法(Snowflake Algorithm)
+
+## 概述
+
+雪花算法是Twitter开源的一种用于生成唯一ID的算法,它能够在分布式系统中生成一个64位的唯一ID。这个ID是一个长整型(Long),通常用于数据库的主键或者分布式系统中的唯一标识符。雪花算法生成的ID是趋势递增的,并且具有时间戳部分,这使得它天然就是有序的。
+
+## 组成部分
+
+雪花算法生成的64位ID可以分为以下几部分:
+
+1. **第一位**:未使用,因为二进制中最高位为符号位,正数是0,负数是1,一般生成ID为正数,所以默认为0。
+
+2. **时间戳部分**:占41位,精确到毫秒级,41位时间戳可以使用69年(2^41-1 / (1000 * 60 * 60 * 24 * 365) = 69年)。
+
+3. **工作机器ID**:占10位,可以部署在1024个节点,包括5位datacenterId和5位workerId。
+
+4. **序列号**:占12位,毫秒内的计数,同一机器同一时间戳下最多可以生成4096个ID。
+
+## 优点
+
+1. **全局唯一**:由于时间戳、工作机器ID和序列号的组合,雪花算法能够确保在分布式系统中生成的ID是全局唯一的。
+
+2. **趋势递增**:由于ID中包含时间戳部分,所以生成的ID是趋势递增的,这对于需要排序的场景非常有用。
+
+3. **时间有序**:时间戳在前,保证了ID的时间有序性,这有利于数据库的插入性能优化。
+
+## 缺点
+
+1. **依赖系统时钟**:如果系统时钟回拨,可能会导致ID冲突或重复。
+
+2. **限制工作机器数量**:虽然可以部署在1024个节点上,但对于超大规模的分布式系统来说可能仍然不够。
+
+雪花算法是一种非常实用的分布式系统中生成唯一ID的方法,广泛应用于各种需要全局唯一标识符的场景。
diff --git "a/\346\236\227\346\230\245\347\277\224/20240710_ABP.md" "b/\346\236\227\346\230\245\347\277\224/20240710_ABP.md"
new file mode 100644
index 0000000000000000000000000000000000000000..7de5195d804e4b8f40573b59548da0313c2211e6
--- /dev/null
+++ "b/\346\236\227\346\230\245\347\277\224/20240710_ABP.md"
@@ -0,0 +1,39 @@
+# ABP框架简介
+
+## 概述
+
+ABP(ASP.NET Boilerplate)是一个开源的、高性能的、模块化的、多层的、基于DDD(领域驱动设计)的应用程序框架。它旨在帮助开发者快速开发新的应用程序或重构现有系统,同时遵循最佳实践和架构原则。ABP框架支持使用ASP.NET Core、.NET Framework等多种技术栈,广泛应用于企业应用开发、微服务架构等领域。
+
+## 核心特性
+
+### 模块化
+
+ABP框架支持通过模块(Modules)来组织应用程序的不同部分。每个模块可以包含自己的实体(Entities)、仓储(Repositories)、服务(Services)等,并且模块之间可以相互依赖或独立存在,从而提高了代码的可维护性和可扩展性。
+
+### 多层架构
+
+ABP遵循多层架构的设计原则,包括表示层(Presentation Layer)、应用层(Application Layer)、领域层(Domain Layer)和基础设施层(Infrastructure Layer)。这种架构模式有助于将应用程序的不同部分进行清晰的分离,使得每一层都专注于自己的职责,从而提高了代码的可读性和可测试性。
+
+### 领域驱动设计
+
+ABP框架支持领域驱动设计(DDD),鼓励开发者通过定义清晰的领域模型来指导应用程序的开发。DDD强调领域专家的参与和领域知识的共享,有助于构建出更加符合业务需求的软件系统。
+
+### 依赖注入与IoC
+
+ABP框架内置了对依赖注入(DI)和控制反转(IoC)的支持,允许开发者以松耦合的方式构建应用程序。通过依赖注入,开发者可以在不修改代码的情况下轻松地替换或添加新的组件,从而提高了应用程序的灵活性和可维护性。
+
+### 动态Web API
+
+ABP框架提供了动态Web API的功能,允许开发者通过简单的配置即可自动生成符合RESTful标准的Web API接口。这不仅减少了开发者编写API接口的工作量,还提高了API接口的一致性和可维护性。
+
+### 多租户支持
+
+ABP框架支持多租户模式,允许单个应用程序实例为多个租户提供服务。每个租户可以有自己的数据库、配置和隔离的资源,从而实现了数据的隔离和安全性。
+
+## 社区与文档
+
+ABP框架拥有一个活跃的社区和丰富的文档资源。社区中汇聚了大量的开发者,他们分享经验、解决问题,并持续推动着ABP框架的发展。同时,ABP框架的官方文档也非常详尽,覆盖了从入门到进阶的各个方面的内容,为开发者提供了有力的支持。
+
+## 总结
+
+ABP框架是一个功能强大、易于使用的应用程序框架,它结合了模块化、多层架构、领域驱动设计、依赖注入与IoC、动态Web API以及多租户支持等特性,为开发者提供了快速开发高质量应用程序的能力。如果你正在寻找一个能够帮助你构建可维护、可扩展和高性能的应用程序框架,那么ABP框架将是一个不错的选择。
diff --git "a/\346\236\227\346\230\245\347\277\224/20240711_\346\265\213\350\257\225.md" "b/\346\236\227\346\230\245\347\277\224/20240711_\346\265\213\350\257\225.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ce91f233658306968a93837c3ac2476099c5b9b6
--- /dev/null
+++ "b/\346\236\227\346\230\245\347\277\224/20240711_\346\265\213\350\257\225.md"
@@ -0,0 +1,42 @@
+# 测试(Testing)
+
+## 引言
+
+在软件开发过程中,测试是一个至关重要的环节。它不仅有助于发现软件中的错误(Bugs)和缺陷(Defects),还能确保软件的质量、稳定性和可靠性。通过测试,开发者可以验证软件是否满足需求,并在发布前进行充分的验证和修正。
+
+## 测试的重要性
+
+1. **提高软件质量**:通过测试可以发现并修复软件中的错误和缺陷,从而提高软件的整体质量。
+2. **减少维护成本**:早期发现并修复错误可以减少后期维护的工作量和成本。
+3. **增强用户满意度**:高质量的软件能够提供更好的用户体验,从而增强用户的满意度和忠诚度。
+4. **支持快速迭代**:在敏捷开发等快速迭代的开发模式中,测试能够确保每次迭代都交付高质量的软件。
+
+## 测试类型
+
+### 1. 单元测试(Unit Testing)
+
+单元测试是针对软件中的最小可测试单元(通常是函数或方法)进行的测试。它旨在验证单个单元的行为是否符合预期。
+
+### 2. 集成测试(Integration Testing)
+
+集成测试是将多个单元组合在一起进行测试,以验证它们之间的交互是否符合预期。它关注于单元之间的接口和协作。
+
+### 3. 系统测试(System Testing)
+
+系统测试是将整个软件系统作为一个整体进行测试,以验证其是否满足需求规格说明书中定义的所有功能、性能和可靠性要求。
+
+### 4. 验收测试(Acceptance Testing)
+
+验收测试是用户或客户参与的一种测试,旨在验证软件是否满足用户或客户的需求和期望。它通常包括功能测试、性能测试和用户界面测试等。
+
+## 测试实践
+
+1. **编写可测试的代码**:编写易于测试的代码是测试成功的前提。开发者应该遵循良好的编程实践和设计模式,使代码更加模块化和可测试。
+2. **自动化测试**:自动化测试可以显著提高测试效率和准确性。开发者应该尽可能地将测试用例自动化,以便在每次构建或部署时自动运行测试。
+3. **持续集成(CI)**:持续集成是一种软件开发实践,它将自动化测试和代码集成相结合,确保每次代码提交都能通过所有测试。这有助于及早发现并修复问题。
+4. **代码覆盖率**:代码覆盖率是衡量测试完整性的一个重要指标。它表示测试用例执行了多少代码。虽然高代码覆盖率不一定意味着高质量的测试,但它确实是一个有用的参考指标。
+5. **回归测试**:回归测试是在软件修改后重新运行之前的测试用例,以确保修改没有引入新的错误或破坏现有的功能。
+
+## 结论
+
+测试是软件开发过程中不可或缺的一部分。通过有效的测试实践,我们可以提高软件的质量、减少维护成本、增强用户满意度并支持快速迭代。因此,在软件开发项目中,我们应该给予测试足够的重视和资源投入。
diff --git "a/\346\236\227\346\230\245\347\277\224/20240712_Antdv\347\232\204\344\275\277\347\224\250.md" "b/\346\236\227\346\230\245\347\277\224/20240712_Antdv\347\232\204\344\275\277\347\224\250.md"
new file mode 100644
index 0000000000000000000000000000000000000000..1e6f0784813fd07c9635662eb71a52a20a2df8bb
--- /dev/null
+++ "b/\346\236\227\346\230\245\347\277\224/20240712_Antdv\347\232\204\344\275\277\347\224\250.md"
@@ -0,0 +1,81 @@
+# Ant Design Vue(Antdv)使用指南
+
+Ant Design Vue(简称Antdv)是Ant Design的Vue实现,它提供了丰富的Vue组件,帮助开发者快速构建高质量的Web界面。Antdv继承了Ant Design的设计语言和React版本的核心库,使Vue开发者也能享受到这一优秀的设计体系。
+
+## 安装
+
+首先,你需要在你的Vue项目中安装Antdv。如果你还没有创建Vue项目,可以使用Vue CLI来创建一个。
+
+```bash
+npm install ant-design-vue --save
+# 或者
+yarn add ant-design-vue
+引入Antdv
+全局引入
+在你的Vue项目入口文件(通常是main.js或main.ts)中全局引入Antdv及其样式文件。
+
+javascript
+import Vue from 'vue';
+import App from './App.vue';
+import Antd from 'ant-design-vue';
+import 'ant-design-vue/dist/antd.css'; // 引入官方提供的样式文件
+
+Vue.use(Antd);
+
+new Vue({
+ render: h => h(App),
+}).$mount('#app');
+按需引入
+为了减小打包体积,你可以使用babel-plugin-import插件来按需引入Antdv的组件和样式。
+
+安装babel-plugin-import
+bash
+npm install babel-plugin-import --save-dev
+# 或者
+yarn add babel-plugin-import --dev
+在你的.babelrc或babel.config.js文件中配置插件。
+json
+{
+ "plugins": [
+ [
+ "import",
+ {
+ "libraryName": "ant-design-vue",
+ "libraryDirectory": "es",
+ "style": "css"
+ }
+ ]
+ ]
+}
+然后,你就可以在你的组件中按需引入Antdv的组件了。
+
+javascript
+// 引入Button组件
+import { Button } from 'ant-design-vue';
+
+export default {
+ components: {
+ 'a-button': Button,
+ },
+};
+注意:按需引入时,组件的命名需要以a-为前缀,或者使用as关键字来重命名。
+
+使用组件
+安装并引入Antdv后,你就可以在你的Vue组件中使用Antdv提供的组件了。以下是一个简单的例子,展示了如何使用Button组件。
+
+vue
+
+ Primary Button
+
+
+
+```
+## 注意事项
+1. 确保你的Vue版本与Antdv的版本兼容。
+2. 当你使用按需引入时,注意组件的命名规则。
+3. Antdv的样式文件较大,如果你只需要使用部分组件,请考虑使用按需引入的方式来减小打包体积。
\ No newline at end of file