From ac24bd746ff1c99ddbdb8149972ea3ee93e33c5c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=BD=99=E8=BE=89?= <3215664575@qq.com>
Date: Sun, 14 Jul 2024 20:54:17 +0800
Subject: [PATCH] yh
---
"\344\275\231\350\276\211/20240708.md" | 35 +++++++++
"\344\275\231\350\276\211/20240709.md" | 25 +++++++
"\344\275\231\350\276\211/20240710.md" | 49 +++++++++++++
"\344\275\231\350\276\211/20240711.md" | 11 +++
"\344\275\231\350\276\211/20240712.md" | 98 ++++++++++++++++++++++++++
5 files changed, 218 insertions(+)
create mode 100644 "\344\275\231\350\276\211/20240708.md"
create mode 100644 "\344\275\231\350\276\211/20240709.md"
create mode 100644 "\344\275\231\350\276\211/20240710.md"
create mode 100644 "\344\275\231\350\276\211/20240711.md"
create mode 100644 "\344\275\231\350\276\211/20240712.md"
diff --git "a/\344\275\231\350\276\211/20240708.md" "b/\344\275\231\350\276\211/20240708.md"
new file mode 100644
index 0000000..3196553
--- /dev/null
+++ "b/\344\275\231\350\276\211/20240708.md"
@@ -0,0 +1,35 @@
+基础概念:
+
+认证:验证用户身份的过程,常见的方式有用户名密码登录、邮箱发送登录链接、手机号接收验证码等。
+授权:用户授予第三方应用访问其资源的权限,实现授权的方式包括cookie、session、token、OAuth等。
+凭证:用于标记访问者身份的媒介,实现认证和授权的前提。
+Cookie:
+
+存储在客户端,由服务器发送到用户浏览器并保存在本地的一小块数据。
+不可跨站,每个cookie都绑定在特定的域名下。
+有效期、作用域、属性等可以控制Cookie的行为。
+Session:
+
+用于跟踪用户在多个页面请求期间的状态,存储在服务器端。
+与唯一的会话标识符(通常是会话ID)相关联。
+与Cookie相比,更安全、支持存储任意数据类型,但需要占用服务器资源。
+Token:
+
+用于访问接口(API)时所需要的资源凭证,包括Access Token和Refresh Token。
+Access Token用于认证用户身份,Refresh Token用于刷新Access Token。
+JWT:
+
+JSON Web Token,用于跨域认证解决方案,包含Header头部信息、Payload负载和Signature签名。
+通过签名保证数据的完整性,不需要查询数据库即可验证用户信息。
+四者的区别:
+
+Cookie是存储在客户端的数据,Session和Token存储在服务器端。
+Session和Token用于跟踪用户的状态和认证,而Cookie可以用于认证和其他用途。
+JWT是一种特定的Token,使用了JSON Web Token的规范。
+四者的优缺点:
+
+Cookie:简单易用,但容易被窃取和篡改。
+Session:安全性高,但需要占用服务器资源。
+Token:无状态化,减少了对数据库的查询,但需要额外的安全措施。
+JWT:无需查询数据库,减少了服务器负担,但需要注意保护密钥安全。
+希望以上总结对您有所帮助。
\ No newline at end of file
diff --git "a/\344\275\231\350\276\211/20240709.md" "b/\344\275\231\350\276\211/20240709.md"
new file mode 100644
index 0000000..8aac272
--- /dev/null
+++ "b/\344\275\231\350\276\211/20240709.md"
@@ -0,0 +1,25 @@
+# 生成ID的几种方法
+
+## 1. UUID
+- 优点:具有极高的性能,不依赖于外部存储
+- 缺点:生成的ID长度较长,需要使用字符串类型进行存储;无序性可能导致数据位置频繁变动,影响性能
+
+## 2. 数据库自增ID方式
+- 优点:简单易用
+- 缺点:每次获取ID都需要进行数据库IO操作,性能较低;具有可预测性,可能导致信息泄露风险;一旦分配的ID被删除,无法再次使用,可能导致ID空间浪费;不利于数据迁移和合并
+
+## 3. 雪花算法
+- 优点:以时间戳、机器标识和递增序列为基础生成ID,性能很高;适用于分布式系统,生成的ID不依赖于中心化的存储或管理
+- 缺点:强烈依赖于机器时钟,需要考虑时钟回拨问题
+
+# 雪花算法的定义
+- 41位时间戳:能表示的时间跨度为大约69年
+- 10位机器ID:可以唯一标识最多1024台机器
+- 2位自增序列号:用于在同一毫秒内生成多个ID
+
+
+
+## 代码实现
+具体见:[雪花算法详解](https://blog.csdn.net/prjh_/article/details/134654579)
+
+这样的笔记是否符合您的要求呢?
\ No newline at end of file
diff --git "a/\344\275\231\350\276\211/20240710.md" "b/\344\275\231\350\276\211/20240710.md"
new file mode 100644
index 0000000..b26fac5
--- /dev/null
+++ "b/\344\275\231\350\276\211/20240710.md"
@@ -0,0 +1,49 @@
+# ABP(ASP .NET Boilerplate Project)概述
+
+ABP是基于领域驱动设计(DDD)的经典分层架构思想的项目框架。它包含了领域驱动设计中的多个概念,并提供了一套完整的技术栈,用于构建现代化的Web应用程序。
+
+## 领域驱动设计概念
+ABP基于领域驱动设计思想,包含以下概念:
+- 领域
+- 子域
+- 聚合
+- 聚合根
+- 领域模型
+- 值对象
+- 通用仓储接口
+- 领域模型仓储接口
+- 领域服务接口
+- 应用服务接口
+- API服务接口
+- 领域事件
+- 大脑风暴
+- 事件风暴
+
+## 具体层分析
+ABP的架构包含以下具体层次:
+1. 通用仓储接口:提供通用的仓储接口,其实现放在基础设施层或独立的ORM工具层。
+2. 领域模型仓储接口:定义领域独有的业务,其实现放在领域层。
+3. 领域服务接口:处理涉及多个领域实体的业务和操作,放在领域服务层。
+4. 应用服务接口:对领域模型业务和领域服务业务进行编排的薄层。
+5. API服务接口:接受参数,进行数据验证等操作。
+6. 单元测试层:提供应用层对象的模拟测试,使用Entity Framework的内存数据库进行测试。
+
+## 采用的技术
+### 服务端
+- ASP.NET MVC5、Web API2、C#
+- DDD领域驱动设计
+- Castle Windsor(依赖注入容器)
+- Entity Framework6/Entity Framework Core/NHibernate、数据迁移
+- Log4Net(日志记录)
+- AutoMapper(实现DTO类与实体类的双向自动转换)
+
+### 客户端
+- Bootstrap
+- Less
+- Angular
+- Vue
+- jQuery
+- Modernizr
+- 其他JS库
+
+以上是关于ABP项目的概述和采用的技术。
\ No newline at end of file
diff --git "a/\344\275\231\350\276\211/20240711.md" "b/\344\275\231\350\276\211/20240711.md"
new file mode 100644
index 0000000..7b89df7
--- /dev/null
+++ "b/\344\275\231\350\276\211/20240711.md"
@@ -0,0 +1,11 @@
+集成测试是用于验证应用程序组件是否正常工作的测试类型,包括应用程序支持的基础结构,如数据库和文件系统等。在集成测试中,需要确保各个组件之间的协作和交互正常,以确保整个应用程序的功能和性能都符合预期。集成测试需要安装Microsoft.AspNetCore.Mvc.Testing包。
+
+总结:
+
+- 测试是软件生命周期中一个重要阶段,有助于发现并改正系统中存在的缺陷,提高软件可靠性。
+
+- 测试根据不同维度可分为白盒、黑盒、灰盒、手工、自动化以及单元、集成、系统等不同类型。
+
+- 单元测试是针对软件中最小可测试单元进行检查和验证的过程,并遵循Arrange-Act-Assert模式,在代码更改时帮助保持稳定和正确性。
+
+以上内容汇总了关于测试类型与单元测试层的重要概念与步骤。
\ No newline at end of file
diff --git "a/\344\275\231\350\276\211/20240712.md" "b/\344\275\231\350\276\211/20240712.md"
new file mode 100644
index 0000000..0370649
--- /dev/null
+++ "b/\344\275\231\350\276\211/20240712.md"
@@ -0,0 +1,98 @@
+根据你提供的信息,我可以为你总结一下关于引入 ant-design-vue 的步骤和按需加载的方法。
+
+### 一、引入 ant-design-vue
+#### 1. 新建项目
+首先,你需要创建一个新的项目。
+
+#### 2. 使用组件
+接下来,在你的项目中使用 ant-design-vue 组件。
+
+##### 安装 ant-design-vue
+在命令行中运行以下命令来安装 ant-design-vue:
+```bash
+npm i --save ant-design-vue@4.x
+```
+
+##### 注册组件
+接下来,你需要在代码中注册组件。根据需求选择全局完整注册、全局部分注册或局部组件注册。
+
+###### 全局完整注册
+如果你想要全局引入所有的 ant-design-vue 组件,可以使用以下代码进行全局完整注册:
+```javascript
+import { createApp } from 'vue';
+import App from './App';
+// 引入全部样式文件(包括 reset.css)
+import Antd from 'ant-design-vue';
+import 'ant-design-vue/dist/reset.css';
+
+let app = createApp(App);
+
+app.use(Antd).mount('#app');
+```
+这样就会将所有的组件都注册到应用程序中,并且还会引入相应的样式文件。
+
+###### 全局部分注册
+如果你只想要引入部分组件,可以使用以下代码进行全局部分注册:
+```javascript
+import { createApp } from 'vue';
+import { Button, message } from 'ant-design-vue';
+import App from './App';
+
+let app = createApp(App);
+
+/* 这里会自动注册 Button 下的子组件, 例如 Button.Group */
+app.use(Button).mount('#app');
+
+/* 在配置对象上挂载 $message 属性 */
+app.config.globalProperties.$message = message;
+```
+这样就只会将指定的组件(如 `Button`)以及其子组件都进行了全局注册,并且还可以通过 `$message` 属性访问 `message` 组件。
+
+###### 局部组件
+如果你希望在特定页面或组件中使用 ant-desgin-vue 组件,则需要进行局部组件注冊。
+- 对象式写法:
+```html+vue
+
+ Add
+
+
+
+```
+
+- 组合式写法(setup script):
+
+```html+vue
+
+
+ Add
+
+
+
+
+
+ ```
+
+
+### 二、按需加载
+
+ant-desgin_vue 默认支持基于 ES modules 的 tree shaking,所以当按需加载时无序做额外配置。只需要直接导入所需要用到得具体Vue单文件即可.
+
+
+以上是关于如何引入和按需加载 ant-desgin_vue 的步骤和方法。希望对您有所帮助!
\ No newline at end of file
--
Gitee