diff --git a/_config.butterfly.yml b/_config.butterfly.yml index e1e11d1..73301d4 100644 --- a/_config.butterfly.yml +++ b/_config.butterfly.yml @@ -16,7 +16,8 @@ beautify: title-prefix-icon: '\f0c1' title-prefix-icon-color: "#F47466" # 加載動畫 Loading Animation -preloader: true +preloader: + true # enable: false # source # 1. fullpage-loading @@ -28,7 +29,7 @@ preloader: true # 图片格式 background: url(http://xxxxxx.com/xxx.jpg) # 顔色 background: '#49B202' # 留空 显示白色 -background: '#efefef' +background: "#efefef" # background: url(https://i.loli.net/2019/09/09/5oDRkWVKctx2b6A.png) highlight_theme: mac light @@ -39,7 +40,6 @@ code_word_wrap: true index_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/BBC19066-E176-47C2-9D22-48C81EE5DF6B.jpeg archive_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/67239FBB-E15D-4F4F-8EE8-0F1C9F3C4E7C.jpeg - # Footer设置 since: 2022 footer_custom_text: Hi, welcome to my Xiaoda blog! @@ -74,8 +74,9 @@ aplayerInject: per_page: true inject: head: + - bottom: - # 7427714271 + # 7427714271 -
- pjax: @@ -86,4 +87,4 @@ pjax: # fab fa-github: https://github.com/xxxxx || Github # fas fa-envelope: mailto:xxxxxx@gmail.com || Email wordcount: - enable: true \ No newline at end of file + enable: true diff --git a/_config.yml b/_config.yml index 4a55c61..9d35856 100644 --- a/_config.yml +++ b/_config.yml @@ -5,11 +5,11 @@ # Site title: XiaodaのBlog #subtitle: 'XiaodaBlog' -description: '欢迎访问小达的博客!' +description: "欢迎访问小达的博客!" keywords: 编程 author: Wen Yongda language: zh-CN -timezone: 'Asia/Shanghai' +timezone: "Asia/Shanghai" # URL ## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project' @@ -37,7 +37,7 @@ titlecase: false # Transform title into titlecase external_link: enable: true # Open external links in new tab field: site # Apply to the whole site - exclude: '' + exclude: "" filename_case: 0 render_drafts: false post_asset_folder: true @@ -50,21 +50,21 @@ highlight: enable: true line_number: false auto_detect: false - tab_replace: + tab_replace: # wrap: true hljs: true prismjs: enable: false preprocess: true line_number: false - tab_replace: '' + tab_replace: "" # Home page setting # path: Root path for your blogs index page. (default = '') # per_page: Posts displayed per page. (0 = disable pagination) # order_by: Posts order. (Order by date descending by default) index_generator: - path: '' + path: "" per_page: 10 order_by: -date @@ -84,7 +84,7 @@ meta_generator: true date_format: YYYY-MM-DD time_format: HH:mm:ss ## updated_option supports 'mtime', 'date', 'empty' -updated_option: 'mtime' +updated_option: "mtime" # Pagination ## Set per_page to 0 to disable pagination @@ -106,10 +106,10 @@ theme: butterfly # Deployment ## Docs: https://hexo.io/docs/one-command-deployment deploy: - type: 'git' - repo: https://gitee.com/wenyongda/xiaoda-blog.git + type: "git" + repo: https://github.com/wenyongda/XiaodaBlog.git branch: master aplayer: meting: true - asset_inject: false \ No newline at end of file + asset_inject: false diff --git a/source/_posts/Docker.md b/source/_posts/Docker.md index eaabf3b..d666c45 100644 --- a/source/_posts/Docker.md +++ b/source/_posts/Docker.md @@ -205,6 +205,127 @@ Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一 ### 使用 Dockerfile 定制镜像 +1. 定制一个 nginx 镜像(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件) + 在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内添加以下内容: + + ```dockerfile + FROM nginx + RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html + ``` + +2. FROM 和 RUN 指令的作用 + **FROM**: 定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。 + **RUN**: 用于执行后面跟着的命令行命令。有以下俩种格式: + shell 格式: + + ```dockerfile + RUN <命令行命令> + # <命令行命令> 等同于,在终端操作的 shell 命令。 + ``` + + exec 格式: + + ```dockerfile + RUN ["可执行文件", "参数1", "参数2"] + # 例如: + # RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline + ``` + + **注意**: Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如: + + ```dockerfile + FROM centos + RUN yum -y install wget + RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" + RUN tar -xvf redis.tar.gz + ``` + + 以上执行会创建 3 层镜像。可简化为以下格式: + + ```dockerfile + FROM centos + RUN yum -y install wget \ +     && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \ +     && tar -xvf redis.tar.gz + ``` + + 如上,以 **&&** 符号连接命令,这样执行后,只会创建 1 层镜像。 + +### 开始构建镜像 + +在 Dockerfile 文件的存放目录下,执行构建动作。 + +以下示例,通过目录下的 Dockerfile 构建一个 nginx:v3(镜像名称:镜像标签)。 + +**注**: 最后的`.`代表本次执行的上下文路径,下一节会介绍。 + +```shell +docker build -t nginx:v3 . +``` + +![img](E:\source\repos\XiaodaBlogSource\source\_posts\Docker\dockerfile2.png) + +### 上下文路径 + +上一节中,有提到指令最后一个 **.** 是上下文路径,那么什么是上下文路径呢? + +```shell +docker build -t nginx:v3 . +``` + +上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。 + +**解析**:由于 docker 的运行模式是 C/S。我们本机是 C,docker 引擎是 S。实际的构建过程是在 docker 引擎下完成的,所以这个时候无法用到我们本机的文件。这就需要把我们本机的指定目录下的文件一起打包提供给 docker 引擎使用。 + +如果未说明最后一个参数,那么默认上下文路径就是 Dockerfile 所在的位置。 + +**注意**:上下文路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢。 + +### 指令详解 + +| Dockerfile 指令 | 说明 | +| --------------- | ------------------------------------------------------------ | +| FROM | 指定基础镜像,用于后续的指令构建。 | +| MAINTAINER | 指定Dockerfile的作者/维护者。(已启用,推荐使用LABEL指令) | +| LABEL | 添加镜像的元数据,使用键值对的形式。 | +| RUN | 在构建过程中在镜像中执行命令。 | +| CMD | 指定容器创建时的默认命令。(可以被覆盖) | +| ENTRYPOINT | 设置容器创建时的主要命令。(不可被覆盖) | +| EXPOSE | 声明容器运行时监听的特定网络端口。 | +| ENV | 在容器内部设置环境变量。 | +| ADD | 将文件、目录或远程URL复制到镜像中。 | +| COPY | 将文件或目录复制到镜像中。 | +| VOLUME | 为容器创建挂载点或声明卷。 | +| WORKDIR | 设置后续指令的工作目录。 | +| USER | 指定后续指令的用户上下文。 | +| ARG | 定义在构建过程中传递给构建器的变量,可使用"docker build"命令设置。 | +| ONBUILD | 当该镜像被用作另一个构建过程的基础时,添加触发器。 | +| STOPSIGNAL | 设置发送给容器以退出的系统调用信号。 | +| HEALTHCHECK | 定义周期性检查容器健康状态的命令。 | +| SHELL | 覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT。 | + +#### COPY + +复制指令,从上下文目录中复制文件或者目录到容器里指定路径。 + +格式: + +```dockerfile +COPY [--chown=:] <源路径1>... <目标路径> +COPY [--chown=:] ["<源路径1>",... "<目标路径>"] +``` + +**[--chown=:]**:可选参数,用户改变复制到容器内文件的拥有者和属组。 + +**<源路径>**:源文件或者源目录,这里可以是通配符表达式,其通配符规则要满足 Go 的 filepath.Match 规则。例如: + +```dockerfile +COPY hom* /mydir/ +COPY hom?.txt /mydir/ +``` + +**<目标路径>**:容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建。 + # Docker 实例 @@ -215,14 +336,11 @@ Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一 ```shell docker pull mariadb:10.2 -``` - -```shell docker images docker run --name mariadb10.2 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.2 ``` -## Docker Redis主从复制集群搭建 +## Docker Redis 主从复制集群搭建 拉取redis4.0.11镜像 @@ -294,7 +412,7 @@ info Replication auth ``` -## Docker Redis哨兵高可用集群搭建 +## Docker Redis 哨兵高可用集群搭建 ## Docker 安装 code-server @@ -384,7 +502,7 @@ docker pull mcr.microsoft.com/mssql/server docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Wyd210213" -p 1433:1433 --memory 2000M --name sqlserver2022 -v /etc/sqlserver_data:/var/opt/mssql -d mcr.microsoft.com/mssql/server ``` -## Docker安装PostgreSQL +## Docker 安装 PostgreSQL ```shell docker pull postgres:latest diff --git a/source/_posts/Docker/dockerfile2.png b/source/_posts/Docker/dockerfile2.png new file mode 100644 index 0000000..87c1698 Binary files /dev/null and b/source/_posts/Docker/dockerfile2.png differ diff --git a/source/_posts/Docker/image-20231101093813381.png b/source/_posts/Docker/image-20231101093813381.png new file mode 100644 index 0000000..9172612 Binary files /dev/null and b/source/_posts/Docker/image-20231101093813381.png differ diff --git a/source/_posts/Hexo.md b/source/_posts/Hexo.md index 7bac536..fd5e13e 100644 --- a/source/_posts/Hexo.md +++ b/source/_posts/Hexo.md @@ -51,3 +51,31 @@ hexo new [layout] ``` 新建一篇文章。如果没有设置 `layout` 的话,默认使用 [_config.yml](https://hexo.io/zh-cn/docs/configuration) 中的 `default_layout` 参数代替。如果标题包含空格的话,请使用引号括起来。 + +## 鼠标样式修改 + +1. 在\themes\butterfly\source\css路径下创建一个mouse.css文件,在文件中添加如下代码: + ```css + body { + cursor: url(https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/img/default.cur), + default; + } + a, + img { + cursor: url(https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/img/pointer.cur), + default; + } + ``` + + + +2. 打开站点的主题配置文件_config.butterfly.yml,找到inject,在head处直接引入该文件: + ```yaml + inject: + head: + - <link rel="stylesheet" href="/css/mouse.css"> + ``` + + + +3. 重新部署,即可看到效果 diff --git a/source/_posts/Mybatis基本介绍.md b/source/_posts/Mybatis基本介绍.md index a25bc15..004457d 100644 --- a/source/_posts/Mybatis基本介绍.md +++ b/source/_posts/Mybatis基本介绍.md @@ -1,6 +1,8 @@ # Mybatis -*** +--- + + ## Maven引入Mybatis diff --git a/source/_posts/PowerShell.md b/source/_posts/PowerShell.md index 5bd9963..27bdbac 100644 --- a/source/_posts/PowerShell.md +++ b/source/_posts/PowerShell.md @@ -27,3 +27,36 @@ Set-Content <文件名>.<扩展名后缀> -value "<内容>" Set-Content my.ini -value "" ``` +## 新建文件夹 + +```powershell +New-Item data -ItemType Directory +``` + +# 做 sudo 命令 + +在Windows系统上sudo对应的就是管理员权限了。 + +一般使用Powershell时,并不会管理员启动,当执行需要权限的命令(比如net start mysql),就需要以管理员打开新的窗口。 + +为了一步到位,这里给powershell创建一个`alias` -> `sudo` 来运行需要管理员权限的命令。 + +在文档目录中(在`powershell`执行`$profile`即可输出此文件路径),新建文件夹`WindowsPowerShell`,新建文件`Microsoft.PowerShell_profile.ps1`。 + +> 此文件是在启动Powershell时执行的脚本。set-alias 在退出后就会失效,所以放到启动脚本中。 + +追加如下代码,**然后重启Powershell窗口。** + +```text +function _sudo { + $ss = "$args ; pause" + Start-Process powershell -Verb runAs -ArgumentList $ss +} +set-alias -name sudo -value _sudo +``` + +保存后发现无法加载,因为默认不加载外部脚本,管理员权限下 powershell 运行: + +```text +set-ExecutionPolicy RemoteSigned +``` diff --git a/source/_posts/Rust.md b/source/_posts/Rust.md index 8f4368d..874cd78 100644 --- a/source/_posts/Rust.md +++ b/source/_posts/Rust.md @@ -209,9 +209,9 @@ println!("a is {0}, a again is {0}", a); ``` 在`{}`之间可以放一个数字,它将把之后的可变参数当做一个数组来访问,下标从0开始。 - +{% raw %} 如果要输出 **{** 或 **}** 怎么办呢?格式字符串通过 **{{** 和 **}}** 分别转义代表 { 和 } 。但是其他常用转义字符与 C 语言里的转义字符一样,都是反斜杠开头的形式。 - +{% endraw %} ```rust fn main() { println!("{{}}"); diff --git a/source/_posts/Vim.md b/source/_posts/Vim.md index b50557b..c1fd7d4 100644 --- a/source/_posts/Vim.md +++ b/source/_posts/Vim.md @@ -17,6 +17,170 @@ vim 有6种工作模式。 vim 的各种工作模式可以通过不同的键进行切换,用户统一使用`ESC`键返回到普通模式。 -# 光标移动命令 +## 命令模式 + +**用户刚刚启动vim,便进入里命令模式** + +此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下`i`,并不会输入一个字符,`i`被当作了一个命令。 + +以下是普通模式常用的几个命令: + +- `i` -- 切换到输入模式,在光标当前位置开始输入文本。 +- `x` -- 删除当前光标所在处的字符。 +- `:` -- 切换到底线命令模式,以在最底一行输入命令。 +- `a` -- 进入插入模式,在光标下一个位置开始输入文本。 +- `o` -- 在当前行的下方插入一个新行,并进入插入模式。 +- `O` -- 在当前行的上方插入一个新行,并进入插入模式。 +- `dd` -- 删除当前行。 +- `yy` -- 复制当前行。 +- `p`(小写)-- 粘贴剪贴板内容到光标下方。 +- `P`(大写)-- 粘贴剪贴板内容到光标上方。 +- `u` -- 撤销上一次操作。 +- `Ctrl + r` -- 重做上一次撤销的操作。 +- `:w` -- 保存文件。 +- `:q` -- 退出 Vim 编辑器 +- `:q!` -- 强制退出 Vim 编辑器,不保存修改。 + +若要编辑文本,只需要启动 Vim,进入了命令模式,按下`i`切换到输入模式即可。 + +命令模式只有一些最基本的命令,因此仍要依靠**底线命令行模式**输入更多命令。 + +## 输入模式 + +在命令模式下按下`i`就进入了输入模式,使用`Esc`键可以返回到普通模式。 + +在输入模式中,可以使用以下按键: + +- **字符按键以及Shifi组合**,输入字符 +- **ENTER**,回车键,换行 +- **BACK SPACE**,退格键,删除光标前一个字符 +- **DEL**,删除键,删除光标后一个字符 +- **方向键**,在文本中移动光标 +- **HOME/END**,移动光标到行首/行尾 +- **Page Up/Page Down**,上/下翻页 +- **Insert**,切换光标输入为输入\替换模式,光标将变成竖线/下划线 +- **ESC**,退出输入模式,切换到命令模式 + +## 底线命令模式 + +在命令模式下按下`:`(英文冒号)就进入了底线命令模式。 + +底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。 + +在底线命令模式中,基本的命令有(已经省略了冒号): + +- :w: 保存文件 +- :q: 退出 Vim 编辑器 +- :wq: 保存文件并退出 Vim 编辑器 +- :q!: 强制退出 Vim 编辑器,不保存修改 + +按`ESC`键可随时退出底线命令模式。 + +简单的说,我们可以将这三个模式想成底下的图标来表示: + +![img](https://www.runoob.com/wp-content/uploads/2014/07/vim-vi-workmodel.png) + +# Vim 的按键说明 + +## 第一部分:命令模式可用的光标移动、复制粘贴、搜索替换等 + +<center> +<table> + <thead> + <tr> + <th colspan="2">移动光标的方法</th> + </tr> + </thead> + <tbody> + <tr> + <td>h 或 向左箭头键(←)</td> + <td>光标向左移动一个字符</td> + </tr> + <tr> + <td>j 或 向下箭头键(↓)</td> + <td>光标向下移动一个字符</td> + </tr> + <tr> + <td>k 或 向上箭头键(↑)</td> + <td>光标向上移动一个字符</td> + </tr> + <tr> + <td>l 或 向右箭头键(→)</td> + <td>光标向右移动一个字符</td> + </tr> + <tr> + <td colspan="2">如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键,亦即加上想要进行的次数(数字)后,按下动作即可!</td> + </tr> + <tr> + <td>Ctrl + f</td> + <td>屏幕『向下』移动一页,相当于 Page Down 按键 (常用)</td> + </tr> + <tr> + <td>Ctrl + b</td> + <td>屏幕『向上』移动一页,相当于 Page Up 按键 (常用)</td> + </tr> + <tr> + <td>Ctrl + d</td> + <td>屏幕『向下』移动半页</td> + </tr> + <tr> + <td>Ctrl + u</td> + <td>屏幕『向上』移动半页</td> + </tr> + <tr> + <td>+</td> + <td>光标移动到非空格符的下一行</td> + </tr> + <tr> + <td>-</td> + <td>光标移动到非空格符的上一行</td> + </tr> + <tr> + <td>n『空格』</td> + <td>那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20『空格』 则光标会向后面移动 20 个字符距离。</td> + </tr> + <tr> + <td>0 或功能键[Home]</td> + <td>这是数字『 0 』:移动到这一行的最前面字符处 (常用)</td> + </tr> + <tr> + <td>$ 或功能键[End]</td> + <td>移动到这一行的最后面字符处(常用)</td> + </tr> + <tr> + <td>H</td> + <td>光标移动到这个屏幕的最上方那一行的第一个字符</td> + </tr> + <tr> + <td>M</td> + <td>光标移动到这个屏幕的中央那一行的第一个字符</td> + </tr> + <tr> + <td>L</td> + <td>光标移动到这个屏幕的最下方那一行的第一个字符</td> + </tr> + <tr> + <td>G</td> + <td>移动到这个档案的最后一行(常用)</td> + </tr> + <tr> + <td>nG</td> + <td>n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)</td> + </tr> + <tr> + <td>gg</td> + <td>移动到这个档案的第一行,相当于 1G 啊! (常用)</td> + </tr> + <tr> + <td>n『 Enter 』</td> + <td>n 为数字。光标向下移动 n 行(常用)</td> + </tr> + </tbody> + <thead> + <tr> + <th colspan="2">搜索替换</th> + </tr> + </thead> +</table> + </center> -查找下一个 n 查找上一个 N diff --git a/source/_posts/Visual Studio.md b/source/_posts/Visual Studio.md index aa58b95..925c07c 100644 --- a/source/_posts/Visual Studio.md +++ b/source/_posts/Visual Studio.md @@ -1,9 +1,10 @@ --- - +title: tags +date: 2018-09-30 18:23:38 +type: "tags" +layout: "tags" --- - - # 快捷键 ## 注释:Ctrl+K+C diff --git a/source/_posts/新建 Markdown File.md b/source/_posts/新建 Markdown File.md new file mode 100644 index 0000000..7d6e0ba --- /dev/null +++ b/source/_posts/新建 Markdown File.md @@ -0,0 +1,133 @@ +# Furion + +## 脚手架 + +Furion+SqlSugar WebAPI + +![image-20230328091559534](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20230328091559534.png) + +从.NET5到.NET8都可以选择 + +![image-20230328091506895](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20230328091506895.png) + +## 项目结构 + +![image-20230328101328375](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20230328101328375.png) + +## 引用 + +Core -> Application -> Web.Core -> Web.Entry + +​ ↓ -> System -> Web.Core -> Web.Entry + +依赖在Core中安装 + +## 依赖安装 + +![image-20230403130044894](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20230403130044894.png) + + + +# Blog.Core + +## 项目结构 + +### 后端 + +![image-20230329124950571](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20230329124950571.png) + +### 前端 + +![image-20230403155403966](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20230403155403966.png) + +## 引用 + + Model -> Common -> IServices -> Services -> Entensions -> Api + +​ -> Tasks + +## 依赖安装 + +![image-20230403125509263](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20230403125509263.png) + +`AutoMapper` -> **Model** + +`AutoMapper.Extensions.Microsoft.DependencyInjection` -> **Model** + +`log4net` -> **Common** + +`Autofac.Extras.DynamicProxy` -> **Extensions** + +`Autofac.Extensions.DependencyInjection` -> **Extensions** + +`Newtonsoft.Json` -> **Extensions** + +`Quartz` -> **Tasks** + +`SqlSugarCore` -> **Model** + +`StackExchange.Redis` -> **Common** + +`FluentValidation.AspNetCore` -> **Api** + +`FluentValidation.DependencyInjectionExtensions` -> **Api** + + + +# ZRAdmin.NET + +## 项目结构 + +### 后端 + +![image-20230403130320936](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20230403130320936.png) + +### 前端 + +![image-20230403155626904](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20230403155626904.png) + +[ZRAdmin.NET在线文档 (izhaorui.cn)](http://www.izhaorui.cn/doc/) + +## 引用 + +​ common -> Tasks -> + +Model -> Repository -> Service -> WebApi + +Infrastructure -> + +项目结构比较像Java的若依框架 + +## 依赖安装 + +![image-20230403132814465](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20230403132814465.png) + +# 优缺点对比 + +| | Furion | Blog.Core | ZRAdmin.NET | +| ------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 项目结构 | 跟MVC三层架构还是有不少差别,可能有DDD的思想在里面,只是业务层做了系统和应用层区分,和B端的ERP有很大差别 | 比较符合MVC三层架构,但是其中的时间总线和路由,是项目用不上的,如果做拆分,会有依赖引用问题 | 比较像Java的若依框架,经典三层架构,只是Infrastructure ,其实可以合并到Common中 | +| 依赖安装 | Furion集成不少依赖,虽然开发方便,但由于都是集成的,后续有升级难度,定时任务是框架重写了一套,没有用到Quartz.Net | 集成的都是常用的,但是也集成了不少微服务开发和分布式总线上才用到的,会显得比较臃肿 | 集成的有常用的,有较新的,比如NLog,Mapster,但实际看来是比Log4Net和AutoMapper性能要强,Autofac没有集成,使用ASP.Net自带的封装注解,Redis客户端工具类使用的是CSRedisCore,没有用StackExchange.Redis,但是据说存在不定时连接超时的问题,还有就是没有IdentityServer 4的集成 | +| 文档 | 全 | 较全,但文档日期停留在 2021-08-21 | 全,比较像Java的若依框架文档 | +| 近期维护更新 | 常有,最近的是2小时前,但是仔细看提交记录,其实更新主要还是在文档上 | 有,最近的是20小时前,着重于日志,多租户方面的更新 | 有,最近的是15天前,目前项目总体进入维护状态,大的改动没有,比较稳定,只有针对ISSUE的提交 | +| 其他 | 脚手架方便搭建,但是Furion更像是一个工具包集合,而不是框架,没有Admin等功能,所以这部分还需要自己去完成,因为这只是个架子 | 有博客端也有Admin端,但是仍是使用的Vue2,技术栈较久,今年年末就会停止维护,API没有进行分层,都写在一个JS中,后期不好维护,层叠样式表使用CSS,相比较SCSS,语法上较为麻烦 | 有Vue2,也有Vue3版的管理端,可以着重于应用业务上的开发,唯一的是前端使用了JavaScript开发,如果是TypeScript会更好,前端风格跟Java的若依框架前端基本一致,功能也是。后端Redis没有默认开启,需要手动集成,作者很贴心的留了注解,ORM用了sqlsugar,用了多租户,但是配置是在代码中,其实自己给移到配置文件里是最好的 | +| 推荐指数 | 3 | 4 | 5 | + +# 后端开发环境 + +`Visual Studio 2022` + +**dotnet-sdk-7.0.202-win-x64.exe** [下载 .NET 7.0 SDK (v7.0.202) - Windows x64 Installer (microsoft.com)](https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/sdk-7.0.202-windows-x64-installer) + +# 前端开发环境 + +`Visual Studio Code` + +安装扩展 + +`Volar` `i18n Ally` + +**node-v16.20.1-x64.msi** [Index of /download/release/v16.20.0/ (nodejs.org)](https://nodejs.org/download/release/v16.20.0/) + +https://nodejs.org/download/release/v16.20.0/node-v16.20.0-x64.msi + diff --git a/themes/butterfly/source/css/mouse.css b/themes/butterfly/source/css/mouse.css new file mode 100644 index 0000000..7bde245 --- /dev/null +++ b/themes/butterfly/source/css/mouse.css @@ -0,0 +1,9 @@ +body { + cursor: url(https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/img/default.cur), + default; +} +a, +img { + cursor: url(https://cdn.jsdelivr.net/gh/sviptzk/HexoStaticFile@latest/Hexo/img/pointer.cur), + default; +} \ No newline at end of file