Skip to content

Commit 4f754ba

Browse files
author
142vip.cn
committed
feat: 新增ES5文档总结
1 parent 1c2e4e2 commit 4f754ba

File tree

11 files changed

+316
-35
lines changed

11 files changed

+316
-35
lines changed

README.md

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -186,12 +186,12 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的
186186

187187
#### 插件使用
188188

189-
- [egg-validate参数校验]()
190-
- [egg-view-ejs页面渲染]()
191-
- [egg-redis缓存]()
192-
- [egg-mysql]()
193-
- [egg-sequelize]()
194-
- [egg-socket.io即时通讯]()
189+
- [ ] [egg-validate参数校验]()
190+
- [ ] [egg-view-ejs页面渲染]()
191+
- [ ] [egg-redis缓存]()
192+
- [ ] [egg-mysql]()
193+
- [ ] [egg-sequelize]()
194+
- [ ] [egg-socket.io即时通讯]()
195195

196196
#### 最佳实践
197197

@@ -221,14 +221,14 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的
221221
- [ ] 索引
222222
- [ ] sql优化
223223
- [ ] [基于GTID主从复制的原理和基础配置]()
224-
- [MySQL日志类型把我难哭了,你学废了吗?]()
224+
- [ ] [MySQL日志类型把我难哭了,你学废了吗?]()
225225

226226
### Redis
227227

228-
- [key命名规范与建议]()
229-
- [redis开发使用规范]()
230-
- [redis基础介绍]()
231-
- [redis的简单安装和部署](https://mp.weixin.qq.com/s/Xe-ZDf2kgUWfYSkuULAdlw)
228+
- [ ] [key命名规范与建议]()
229+
- [ ] [redis开发使用规范]()
230+
- [ ] [redis基础介绍]()
231+
- [ ] [redis的简单安装和部署](https://mp.weixin.qq.com/s/Xe-ZDf2kgUWfYSkuULAdlw)
232232
- [ ] 数据类型
233233
- [ ] [redis简单主从集群部署-docker方式]()
234234
- [ ] [memCache与Redis比较]()
@@ -349,7 +349,7 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的
349349
350350
### Nacos
351351

352-
> 阿里巴巴出品,适用于微服务下的配置管理,支持Java、Nodejs等主流语言,目前生态良好,技术支持表现一般,属于Apollo替代产品|发、、
352+
> 阿里巴巴出品,适用于微服务下的配置管理,支持Java、Nodejs等主流语言,目前生态良好,技术支持表现一般,属于Apollo替代产品
353353
354354
## 消息中间件
355355

@@ -364,13 +364,13 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的
364364
### gRPC
365365

366366
> gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统,tensorflow分布式与tensorflow
367-
> serving底层通信都是是用的grpc。我自己基于JavaScript技术栈上较多的接触到gRPC,传送门:[基于js下各框架grpc的使用]()
367+
> serving底层通信都是是用的gRPC。我自己基于JavaScript技术栈上较多的接触到gRPC,传送门:[基于js下各框架gRPC的使用]()
368368
369-
- [ ] nodejs下grpc的简单实用
370-
- [ ] grpc集成express框架
371-
- [ ] grpc集成koa框架
372-
- [ ] grpc在egg.js下的应用
373-
- [ ] grpc插件开发示例
369+
- [ ] nodejs下gRPC的简单实用
370+
- [ ] gRPC集成express框架
371+
- [ ] gRPC集成koa框架
372+
- [ ] gRPC在egg.js下的应用
373+
- [ ] gRPC插件开发示例
374374

375375
### Dubbo
376376

@@ -390,7 +390,6 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的
390390
391391
### Logstash
392392

393-
>
394393
> 数据收集
395394
396395
### Kibana
@@ -399,8 +398,6 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的
399398
400399
## 监控工具
401400

402-
> 常用工具:Prometheus 、Grafana、zabbix、lepus等
403-
404401
### Prometheus
405402

406403
### Grafana
@@ -459,8 +456,6 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的
459456

460457
### Redis集群
461458

462-
> 持续整理中...
463-
464459
#### 主从模式
465460

466461
#### 哨兵模式

code/node/es6/es5-2009-every.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const nums = [12, 14, 33, 25, 28]
2+
3+
4+
// 判断数组中的值是否全部超过15的
5+
const over15 = nums.every(num => {
6+
return num > 15
7+
})
8+
9+
// 输出 false
10+
console.log(over15)

code/node/es6/es5-2009-forEach.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const arr = [1, 2, 3]
2+
3+
const result: number[] = []
4+
arr.forEach(a => {
5+
result.push(a * a)
6+
})
7+
// 返回 [1,4,9]
8+
console.log(result)

code/node/es6/es5-2009-indexOf.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
const stu = ['142vip', 'Lisa', '142vip']
2+
3+
// 输出 0,数组中角标为0对应的就是142vip
4+
console.log(stu.indexOf('142vip'))
5+
6+
// 支持指定起始索引
7+
console.log(stu.indexOf('142vip', 1))

code/node/es6/es5-2009-isArray.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const arr = [1, 2, 3]
2+
// 返回 true
3+
Array.isArray(arr)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
const stu = ['Tom', 'Lisa', '142vip']
2+
3+
// 输出 2,数组中角标为2对应的就是142vip
4+
console.log(stu.lastIndexOf('142vip'))
5+
6+
// 支持指定起始索引
7+
console.log(stu.lastIndexOf('142vip', 2))
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const nums = [12, 14, 33, 25, 28]
2+
3+
const reuslt = 1
4+
5+
nums.reduceRight()

code/node/es6/es5-2009-some.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const nums = [12, 14, 33, 25, 28]
2+
3+
4+
// 判断数组中的值是否存在超过15的
5+
const over15 = nums.some(num => {
6+
return num > 15
7+
})
8+
9+
// 输出 true
10+
console.log(over15)

docs/manuscripts/microservice/grpc.md

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ permalink: /manuscripts/microservice/grpc.html
55

66
# gRPC
77

8-
**gRPC 是一种可扩展、松耦合且类型安全的解决方案,与传统的基于 REST/HTTP 的通信相比,它实现了更高效的进程间通信。允许你像本地方法调用一样调用、调试分布式应用程序**
8+
**gRPC 是一种可扩展、松耦合且类型安全的解决方案,与传统的基于 REST/HTTP 的通信相比,它实现了更高效的进程间通信。允许你像本地方法调用一样调用、调试分布式应用程序
9+
**
910

1011
gRPC 是一个现代开源高性能远程过程调用 (RPC) 框架,可以在任何环境中运行。它可以通过对负载平衡、跟踪、健康检查和身份验证的可插拔支持,
1112
有效地连接数据中心内和跨数据中心的服务,基于Protobuf序列化协议开发,且支持众多开发语言。
@@ -54,15 +55,17 @@ rpc SayHello(HelloRequest) returns (HelloResponse);
5455

5556
- 服务器流式 RPC
5657

57-
其中客户端向服务器发送请求并获取流以读取一系列消息。客户端从返回的流中读取,直到没有更多消息为止。**gRPC 保证单个 RPC 调用中的消息排序**
58+
其中客户端向服务器发送请求并获取流以读取一系列消息。客户端从返回的流中读取,直到没有更多消息为止。**gRPC 保证单个 RPC
59+
调用中的消息排序**
5860

5961
```protobuf
6062
rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse);
6163
```
6264

6365
- 客户端流式 RPC
6466

65-
其中客户端写入一系列消息并将它们发送到服务器,再次使用提供的流。客户端完成消息写入后,它会等待服务器读取消息并返回响应。gRPC 再次保证单个 RPC 调用中的消息排序。
67+
其中客户端写入一系列消息并将它们发送到服务器,再次使用提供的流。客户端完成消息写入后,它会等待服务器读取消息并返回响应。gRPC
68+
再次保证单个 RPC 调用中的消息排序。
6669

6770
```protobuf
6871
rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse);
@@ -78,15 +81,17 @@ rpc BidiHello(stream HelloRequest) returns (stream HelloResponse);
7881

7982
### 使用 API
8083

81-
从文件中的服务定义开始`.proto`,gRPC 提供生成客户端和服务器端代码的协议缓冲区编译器插件。gRPC 用户通常在客户端调用这些 API,并在服务器端实现相应的 API。
84+
从文件中的服务定义开始`.proto`,gRPC 提供生成客户端和服务器端代码的协议缓冲区编译器插件。gRPC 用户通常在客户端调用这些
85+
API,并在服务器端实现相应的 API。
8286

8387
- 在服务器端,服务器实现服务声明的方法,并运行一个 gRPC 服务器来处理客户端调用。gRPC 基础结构解码传入请求、执行服务方法并对服务响应进行编码。
84-
在客户端,客户端有一个称为存根(对于某些语言,首选术语是客户端)的本地对象,它实现与服务相同的方法。
88+
在客户端,客户端有一个称为存根(对于某些语言,首选术语是客户端)的本地对象,它实现与服务相同的方法。
8589
- 客户端然后可以在本地对象上调用这些方法,这些方法将调用的参数包装在适当的协议缓冲区消息类型中,将请求发送到服务器,并返回服务器的协议缓冲区响应。
8690

8791
### 同步与异步
8892

89-
在响应从服务器到达之前阻塞的同步 RPC 调用最接近于 RPC 所追求的过程调用的抽象。**另一方面,网络本质上是异步的,在许多情况下,能够在不阻塞当前线程的情况下启动 RPC 是很有用的**
93+
在响应从服务器到达之前阻塞的同步 RPC 调用最接近于 RPC 所追求的过程调用的抽象。**另一方面,网络本质上是异步的,在许多情况下,能够在不阻塞当前线程的情况下启动
94+
RPC 是很有用的**
9095

9196
## RPC 生命周期
9297

@@ -101,7 +106,8 @@ rpc BidiHello(stream HelloRequest) returns (stream HelloResponse);
101106

102107
### 服务器流式 RPC
103108

104-
服务器流式 RPC 类似于一元 RPC,不同之处在于服务器返回消息流以响应客户端的请求。发送完所有消息后,服务器的状态详细信息(状态代码和可选的状态消息)和可选的尾随元数据将发送到客户端。这样就完成了服务器端的处理。客户端在收到服务器的所有消息后完成。
109+
服务器流式 RPC 类似于一元
110+
RPC,不同之处在于服务器返回消息流以响应客户端的请求。发送完所有消息后,服务器的状态详细信息(状态代码和可选的状态消息)和可选的尾随元数据将发送到客户端。这样就完成了服务器端的处理。客户端在收到服务器的所有消息后完成。
105111

106112
### 客户端流式 RPC
107113

@@ -140,17 +146,21 @@ rpc BidiHello(stream HelloRequest) returns (stream HelloResponse);
140146

141147
优点:
142148

143-
- **实现的进程间通信方式高效。** gRPC 不使用 JSON 或 XML 等文本格式,而是使用基于二进制协议的protocol buffer与 gRPC 服务、客户端进行通信。此外,gRPC 是在 HTTP/2 之上实现的protocol buffer,这使得进程间通信更快。
144-
- **具有简单、定义良好的服务接口和协议。** 你首先定义服务接口,然后处理实现细节。因此,与用于RESTful服务定义的 OpenAPI/Swagger 和用于 SOAP Web 服务的 WSDL 不同,gRPC 提供了简单但一致、可靠且可扩展的应用程序开发体验。
149+
- **实现的进程间通信方式高效。** gRPC 不使用 JSON 或 XML 等文本格式,而是使用基于二进制协议的protocol buffer与 gRPC
150+
服务、客户端进行通信。此外,gRPC 是在 HTTP/2 之上实现的protocol buffer,这使得进程间通信更快。
151+
- **具有简单、定义良好的服务接口和协议。** 你首先定义服务接口,然后处理实现细节。因此,与用于RESTful服务定义的
152+
OpenAPI/Swagger 和用于 SOAP Web 服务的 WSDL 不同,gRPC 提供了简单但一致、可靠且可扩展的应用程序开发体验。
145153
- **强类型。** protocol buffer清楚地定义了应用程序之间通信的数据类型,这使得分布式应用程序开发更加稳定。因为静态类型有助于减少你在构建跨多个团队和技术的云原生应用程序时遇到的大多数运行时和交互错误。
146-
- **支持多语言。** gRPC被设计成支持多种编程语言。使用protocol buffer的服务定义与语言无关。因此,你可以选择grpc支持的任意语言,并与任何现有的 gRPC 服务或客户端进行通信。
154+
- **支持多语言。** gRPC被设计成支持多种编程语言。使用protocol buffer的服务定义与语言无关。因此,你可以选择gRPC支持的任意语言,并与任何现有的
155+
gRPC 服务或客户端进行通信。
147156
- **支持双向流式传输。** gRPC 对客户端或服务器端流式传输具有原生支持,这使得开发流媒体服务或流媒体客户端变得更加容易。
148157
- **内置多种高级特性。** gRPC 提供对高级特性的内置支持,例如身份验证、加密、元数据交换、压缩、负载平衡、服务发现等。
149158
- **与云原生生态系统高度集成。** gRPC 是 CNCF 的一部分,大多数现代框架和技术都为 gRPC 提供了开箱即用的原生支持。
150159

151160
缺点:
152161

153-
- **可能不适合面向外部的服务。** 当你想将应用程序或服务提供给外部客户端使用时,gRPC 可能不是最合适的协议,因为大多数外部使用者对 gRPC 还很陌生。而且,gRPC 服务的协议驱动、强类型化特性可能会降低你向外部提供的服务的灵活性,因为外部使用者可以控制的东西要少得多。
162+
- **可能不适合面向外部的服务。** 当你想将应用程序或服务提供给外部客户端使用时,gRPC 可能不是最合适的协议,因为大多数外部使用者对
163+
gRPC 还很陌生。而且,gRPC 服务的协议驱动、强类型化特性可能会降低你向外部提供的服务的灵活性,因为外部使用者可以控制的东西要少得多。
154164
- **生态系统相对较小。** 与传统的 REST/HTTP 协议相比,gRPC 生态系统仍然相对较小。浏览器和移动应用程序对 gRPC 的支持仍处于初级阶段。
155165

156166
## 参考资料

0 commit comments

Comments
 (0)