VMware Workstation Pro v16.2.4 激活
下载方式:VMware官网
激活方式:输入密钥 ZF3R0-FHED2-M80TY-8QYGC-NPKYF
垂直流程图 graph TD
:
graph TD; 好好摸鱼-->辞职; 好好摸鱼-->跑路; 跑路-->赚钱; 辞职-->赚钱; 跑路-->高薪; 辞职-->高薪; 赚钱-->人生巅峰; 高薪-->人生巅峰; 人生巅峰-->好好摸鱼;
水平流程图
graph LR; A-->B; A-->C; B-->D; C-->D;
graph TD; A-->B; A-->C; B-->D; C-->D;
flowchart 测试
gantt title A Gantt Diagram dateFormat YYYY-MM-DD section Section A task :a1, 2014-01-01, 30d Another task :after a1 , 20d section Another Task in sec :2014-01-12 , 12d another task : 24d
graph TB id1(圆角矩形)--普通线-->id2[矩形] subgraph 子图表 id2==粗线==>id3{菱形} id3-.虚线.->id4>右向旗帜] id3--无箭头---id5((圆形)) end style id1 fill:#f9f,stroke:#333,stroke-width:4px
sequenceDiagram participant z as 张 participant l as 刘 loop 中秋三天假 z->>l: 吃了吗您呐? l-->>z: 没吃,您呢? activate z Note left of z: 想了一下 alt 还没吃 z-xl: 还没呢,正准备回去吃 else 已经吃了 z-xl: 我也吃过了,哈哈 end opt 大过节的 l-->z: 祝您中秋快乐啊 end end
sequenceDiagram Alice->>+John: Hello John, how are you? Alice->>+John: John, can you hear me? John-->>-Alice: Hi Alice, I can hear you! John-->>-Alice: I feel great!
sequenceDiagram测试
sequenceDiagram; Alice->>John: Hello John, how are you? loop Healthcheck John->>John: Fight against hypochondria end Note right of John: Rational thoughts! John-->>Alice: Great! John->>Bob: How about you? Bob-->>John: Jolly good!
安装路径不能包含空格。
D:\nvm
D:\nvm\node.js
安装nvm前不必卸载之前已安装的node.js环境,安装nvm时会提示“是否允许nvm控制已安装的node.js版本?”,点同意即可。nvm会自动把已安装的Node.js文件夹移动到设置好的Node.js Symlink路径,即 **D:\nvm\node.js**
。
根据Hexo官网介绍,不同版本的Hexo依赖不同版本的Node.js
If you are stuck with older Node.js, you can consider installing a past version of Hexo.
Please note we do not provide bugfixes to past versions of Hexo.
We highly recommend to always install the latest version of Hexo and the recommended version of Node.js, whenever possible.
Hexo version | Minimum (Node.js version) | Less than (Node.js version) |
---|---|---|
6.2+ | 12.13.0 | latest |
6.0+ | 12.13.0 | 18.5.0 |
5.0+ | 10.13.0 | 12.0.0 |
4.1 - 4.2 | 8.10 | 10.0.0 |
4.0 | 8.6 | 8.10.0 |
3.3 - 3.9 | 6.9 | 8.0.0 |
3.2 - 3.3 | 0.12 | unknown |
3.0 - 3.1 | 0.10 or iojs | unknown |
0.0.1 - 2.8 | 0.10 | unknown |
hexo在较高版本的node.js环境下运行时的警告:
使用nvm命令安装(nvm install v12
)并使用nvm use
命令切换node.js版本为v12,警告消失:
Promise 是 ES6 引入的异步编程的新解决方案,语法上 Promise 是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果
一个 Promise 必然处于以下几种状态之一
Promise 的使用
1 | let p = new Promise(function (resolve, reject) { |
1 | // 使用 nodejs 的 fs 读取文件模块 |
1 | const p = new Promise((resolve, reject) => { |
Promise.prototype.then 方法返回的结果依然是 Promise 对象,对象状态由回调函数的执行结果决定
具体情况如下
1 | const p = new Promise((resolve, reject) => { |
1 | const p = new Promise((resolve, reject) => { |
1 | const p = new Promise((resolve, reject) => { |
1 | const p = new Promise((resolve, reject) => { |
Promise.prototype.then 方法返回的结果还是 Promise 对象,这意味着我们可以继续在该结果上使用 then 方法,也就是链式调用,杜绝回调地狱
1 | const p = new Promise(resolve=>{}, reject=>{}); |
catch() 方法返回一个 Promise,并且处理拒绝的情况
它的行为与调用 Promise.prototype.then(undefined, onRejected) 相同
1 | obj.catch(onRejected); |
语法
1 | p.catch(onRejected); |
举例
1 | var p1 = new Promise(function (resolve, reject) { |
1 | const fs = require('fs'); |
以上只是 Promise 的入门,更多还要进一步深入学习
HTTP协议本身不是为了长连接而开发的。所谓长连接,指的是TCP连接建立之后,长时间持续保持连接状态并进行通讯。
虽然HTTP协议后来引入的Connection: keep-alive
机制有保持连接的效果,但设计初衷却是为了在几个连续的HTTP请求之间共享TCP连接以加快页面加载速度。
而在浏览器中实现类似于TCP长连接的需求,进行实时双向通讯,是有着诸多实际需要的。这催生了WebSocket的产生。
客户端向Web服务器发起HTTP请求,寻求Upgrade为WebSocket。
1 | GET /chat HTTP/1.1 |
如果服务器支持并允许这个WebSocket请求的话,返回一个类似于下面这样的HTTP相应:
1 | HTTP/1.1 101 Switching Protocols |
(以上示例来源于 Writing WebSocket Servers)
接下来,客户端和服务器端开始根据WebSocket协议进行数据传送和接收。
上面的握手过程中,客户端通过”Sec-WebSocket-Key”发送了一个随机字符串。
服务器端返回的验证字段”Sec-WebSocket-Accept”的计算过程如下:
1 | set key [web::request "Sec-WebSocket-Key"] |
浏览器里的WebSocket主要作为客户端。其接口本身倒并不复杂,主要是建立连接,监听处理4个事件,发送消息,和关闭连接这几个操作。
new WebSocket(url)
# 建立连接onopen
# 连接建立时的回调函数onmessage
# 收到消息时的回调函数onclose
# 连接关闭时的回调函数onerror
# 发生错误时的回调函数send(message)
# 发送消息close(code?, reason?)
# 关闭连接相关文档可以参考 WebSocket @ Mozilla Web Docs
代码轮廓如下:
1 | var socket = new WebSocket('ws://some.host.com:8080/'); |
keep-alive
很多时候有timeout限制。TCP 是传输控制协议(Transmission Control Protocol)的缩写,用于在计算机之间可靠地传输数据。在建立 TCP 连接时,需要进行三次握手,即客户端发送 SYN 报文,服务器返回 SYN-ACK 报文,客户端再发送 ACK 报文,从而建立连接。这个过程的目的是确保双方都能够接收和发送数据,以保证数据传输的可靠性和完整性。
具体来说,TCP 连接的三次握手过程如下:
以下是 TCP 连接三次握手的 Mermaid 代码和图示:
sequenceDiagram participant Client participant Server Client->>Server: SYN(同步报文) Server->>Client: SYN-ACK(同步-确认报文) Client->>Server: ACK(确认报文)
Spring框架,它的主要功能包括IoC容器、AOP支持、事务支持、MVC开发以及强大的第三方集成功能等。
那么,Spring Boot又是什么?它和Spring是什么关系?
Spring Boot是一个基于Spring的套件,它帮我们预组装了Spring的一系列组件,以便以尽可能少的代码和配置来开发基于Spring的Java应用程序。
为了满足各种各样的需求,会经常性在本地存储大量的数据,HTML5规范提出了相关解决方案
本地存储特性。
方法:
例子:
1 | <input type="text"> |
1 | <input type="text"> |
1 | <input type="text" id="username"> <input type="checkbox" name="" id="remember"> 记住用户名 |