From c9c11bcfcfb47bcd08e277c7f1f03bf412c67f2a Mon Sep 17 00:00:00 2001 From: "YUN-PC5\\user" Date: Mon, 18 Sep 2023 16:53:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_posts/ASP.NET Core.md | 42 ++++++++++++++ source/_posts/JavaScript.md | 104 +++++++++++++++++++++++++++++++++- source/_posts/Rust.md | 78 +++++++++++++++++++++++++ 3 files changed, 223 insertions(+), 1 deletion(-) diff --git a/source/_posts/ASP.NET Core.md b/source/_posts/ASP.NET Core.md index 75a1b88..6eb0759 100644 --- a/source/_posts/ASP.NET Core.md +++ b/source/_posts/ASP.NET Core.md @@ -789,6 +789,8 @@ public class CustomIpRateLimitMiddleware : IpRateLimitMiddleware ## 使用 +### Hello Quartz.Net + 添加Quartz.Net的引用 ```shell @@ -848,6 +850,46 @@ Hello Quartz.Net 3. 创建触发器。触发器描述了在何时执行作业。 4. 添加调度。当完成以上三步以后,就可以对作业进行调度了。 +### 作业:Job和JobDetail + +Job是作业的类型,描述了作业是如何执行的,这个类型是由我们定义的,例如上文的`HelloQuartzJob`。Job实现IJob接口,而IJob接口只有一个`Execute`方法,参数`context`中包含了与当前上下文中关联的Scheduler、JobDetail、Trigger等。 + +一个典型的Job定义如下: + +```c# +public class HelloQuartzJob : IJob +{ + public Task Execute(IJobExecutionContext context) + { + return Task.Factory.StartNew(() => + { + Console.WriteLine("Hello Quartz.Net"); + }) + } +} +``` + +#### JobData + +Job不是孤立存在的,它需要执行的参数,这些参数如何传递进来呢?我们来定义一个Job类进行演示。 + +```c# +public class SayHelloJob : IJob +{ + public string UserName { get; set; } + + public Task Execute(IJobExecutionContext context) + { + return Task.Factory.StartNew(() => + { + Console.WriteLine($"Hello {UserName}!"); + }) + } +} +``` + + + # NLog 日志记录 ## 介绍 diff --git a/source/_posts/JavaScript.md b/source/_posts/JavaScript.md index 253f532..c36999c 100644 --- a/source/_posts/JavaScript.md +++ b/source/_posts/JavaScript.md @@ -227,4 +227,106 @@ var arrowFunc = (arg1, arg2) => { 在 JavaScript 中,`~` 符号是按位取反运算符。它将操作数的每个二进制位取反,即将 0 变为 1,将 1 变为 0。然后返回这个值的负数加一。 -例如,对于十进制数 10,它的二进制表示为 1010,按位取反后变为 0101,即 5。因此,`~10` 的结果为 -11。 \ No newline at end of file +例如,对于十进制数 10,它的二进制表示为 1010,按位取反后变为 0101,即 5。因此,`~10` 的结果为 -11。 + +# 性能优化 + +## 防抖(debounce) + +> 多次触发 只执行最后一次 + +**作用:**高频率触发的事件,在指定的单位时间内,只相应最后一次,如果在指定时间内再次触发,则重新计算时间。 + +防抖类似于英雄联盟回城6秒,如果回城中被打断,再次回城需要再等6秒 + +![image-20230918145946833](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20230918145946833.png) + +**实现代码:** + +```javascript + + + + +``` + +**使用场景:** + +search搜索时,用户在不断输入值时,用防抖来节约请求资源。 + +## 节流(throttle) + +> 规定时间内 只触发一次 + +**作用:**高频率触发的事件,在指定的单位时间内,只响应第一次 + +节流类似于英雄联盟里的技能 触发一次必须等技能刷新后才能再次触发 + +![image-20230918151523728](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20230918151523728.png) + +**实现代码:** + +```javascript + +``` + +**使用场景:** + +鼠标不断点击触发,mousedown(单位时间内只触发一次) + +监听滚动事件,比如是否滑到底部自动加载更多,用throttle来判断 \ No newline at end of file diff --git a/source/_posts/Rust.md b/source/_posts/Rust.md index f304ddf..1ffed1d 100644 --- a/source/_posts/Rust.md +++ b/source/_posts/Rust.md @@ -41,3 +41,81 @@ Rust 编译工具从链接 [安装 Rust - Rust 程序设计语言 (rust-lang.org ![image-20230915135358199](https://markdownhexo.oss-cn-hangzhou.aliyuncs.com/img/image-20230915135358199.png) +上图显示的是一个命令行安装向导。 + +**如果你已经安装MSVC(推荐),那么安装过程会非常的简单,输入 1 并回车,直接进入第二步。** + +如果你安装的是MinGW,那么你需要输入 2(自定义安装),然后系统会询问你 Default host triple?,请将上图中 **default host triple**的"msvc"改为"gnu"再输入安装程序: + +![img](https://www.runoob.com/wp-content/uploads/2020/04/rust-env2.png) + +其他属性都默认。 + +设置完所有选项,会回到安装向导界面(第一张图),这时我们输入 1 并回车即可。 + +![img](https://www.runoob.com/wp-content/uploads/2020/04/rust-env3.png) + +进行到这一步就完成了Rust的安装,可以通过以下命令测试: + +```shell +rustc -V # 注意大写的 V +``` + +![img](https://www.runoob.com/wp-content/uploads/2020/04/rust-env4.png) + +如果以上两个命令能够输出你安装的版本号,就是安装成功了。 + +## 搭建 Visual Studio Code 开发环境 + +安装`rust-analyzer`和`Native Debug`两个扩展。 + +![img](https://www.runoob.com/wp-content/uploads/2020/04/49033261-B1B8-4D70-8090-53DC45A8727E.jpeg) + +![img](https://www.runoob.com/wp-content/uploads/2020/04/rust-env8.png) + +重新启动 VsCode,Rust 的开发环境就搭建好了。 + +现在新建一个文件夹,如 RustLearn。 + +在VsCode中打开新建的文件夹。 + +打开文件夹后,新建终端。 + +输入以下命令: + +```shell +cargo new greeting +``` + +当前文件夹下会构建一个名叫 greeting 的 Rust 的工程目录。 + +在终端里输入以下三个命令: + +```shell +cd ./greeting +cargo build +cargo run +``` + +系统在创建工程时会生成一个Hello World源程序main.rs,这时会被编译运行: + +# Cargo 教程 + +## Cargo 是什么 + +Cargo 是 Rust 的构建系统和包管理器。 + +Rust 开发者 常用 Cargo 来管理 Rust 工程和获取工程所依赖的库。在上个教程中我们曾使用 cargo new greeting 命令创建一个名为 greeting 的工程,Cargo 新建了一个名为 greeting 的文件夹并在里面部署了一个 Rust 工程最典型的文件结构。这个 greeting 文件夹就是工程本身。 + +## Cargo 功能 + +Cargo 除了创建工程以外还具备构建(build)工程、运行(run)工程等一系列功能,构建和运行分别对应以下命令: + +```shell +cargo build +cargo run +``` + +Cargo 还具有获取包、打包、高级构建等功能,详细使用方法参见 Cargo 命令。 + +## 在