Node.js 开发实战
杨浩
腾讯高级工程师
37442 人已学习
新⼈⾸单¥68
课程目录
已完结/共 57 讲
第一章:课程简介 (5讲)
Node.js 开发实战
登录|注册
留言
14
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 24 | RPC调用:Node.js Buffer编解码二进制数据包
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | Node.js是什么?
04 | Node.js可以用来做什么?
05 | 课程实战项目介绍
06 | 什么是技术预研?
07 | Node.js开发环境安装
08 | 第一个Node.js程序:石头剪刀布游戏
09 | 模块:CommonJS规范
10 | 模块:使用模块规范改造石头剪刀布游戏
11 | 模块:npm
12 | 模块:Node.js内置模块
13 | 异步:非阻塞I/O
14 | 异步:异步编程之callback
15 | 异步:事件循环
16 | 异步:异步编程之Promise
17 | 异步:异步编程之async/await
18 | HTTP:什么是HTTP服务器?
19 | HTTP:简单实现一个HTTP服务器
20 | HTTP:实现网页版石头剪刀布
21 | HTTP:用express优化石头剪刀布游戏
22 | HTTP:用koa优化石头剪刀布游戏
23 | RPC 调用:什么是RPC调用?
24 | RPC调用:Node.js Buffer编解码二进制数据包
25 | RPC 调用:Node.js net建立多路复用的RPC通道
26 | 项目启动:整体需求分析
27 | 项目启动:极客时间App下载页开发
28 | 课程详情页:极客时间详情页需求解构
29 | 课程详情页:将ES6模版字符串改造成模板引擎
30 | 课程详情页:极客时间详情页需求实现
31 | 课程播放页:极客时间播放页需求解构
32 | 课程播放页:GraphQL API服务
33 | 课程播放页:极客时间播放页需求实现
34 | 课程列表页:极客时间列表页需求解构
35 | 课程列表页:用 Vue/React 进行服务端渲染
36 | 课程列表页:极客时间列表页需求实现
37 | 性能工具:HTTP服务的性能测试
38 | 性能工具:Node.js性能分析工具
39 | 代码优化:JavaScript代码性能优化
40 | 代码优化:内存管理优化
41 | 代码优化:Node.js C++插件
42 | 多进程优化:Node.js子进程与线程
43 | 多进程优化:Node.js cluster模块实战与源码解读
44 | 多进程优化:进程守护与管理
45 | 架构优化:动静分离
46 | 架构优化:反向代理与缓存服务
47 | 概念:框架设计和工程化
48 | 概念:设计模式
49 | 概念:Serverless
50 | 服务端框架搭建:koaless
51 | 服务端框架搭建:屏蔽请求细节
52 | 服务端框架搭建:完成服务端框架
53 | 云函数式工程实现:服务端代码
54 | 云函数式工程实现:工具端代码
55 | 加餐:调试 Node.js 源码
56 | 结课测试&结束语
57 | 彩蛋:这是一个严肃的课程
本节摘要
登录 后留言

全部留言(14)

  • 最新
  • 精选
厚朴酚
这个rpc通讯感觉听的意犹未尽啊!这个就是nodejs应用微服务的方式吗?

作者回复: 每家公司根据具体情况技术选型不同,从性能考虑的话会使用这种方式。

2019-10-17
4
九千七
老师讲这节课的时候是不是很困,感觉眼睛都要闭上了

作者回复: 确实有一段是通宵录的

2021-04-13
1
freedomidol
再出一个nodejs的高阶课程吧,老师讲的太好了,谢谢老师

作者回复: 后面两章就是高阶内容

2021-03-11
1
陈启年
const buffer1 = Buffer.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); buffer1.writeInt16BE(12, 2); // 00 0c buffer1.writeInt16LE(12, 5); // 0c 00 console.log(buffer1); /* 打印结果: <Buffer 00 01 00 0c 04 0c 00 07 08 09> */ 刚刚好和老师你上课内容相反,这是为什么? 和系统有关吗?

作者回复: 好像没有反?

2020-08-05
1
浩明啦
这个writelnt8和16没搞懂 这个8和16的含义是什么?

作者回复: 这个代表bit。意思是把数据写入这个buffer并且占用x个bit。

2019-12-09
2
1
一枚小浪子
老师您好,运行如下代码会报错:buffer2.writeInt8(128, 1) 127 就可以,超过 127 一律报错,您说 writeInt8 占据两个字符,每个字符是 16 进制表示,那么 128 不可以用 80 表示吗?

作者回复: int8是有符号数,正负符号还要占一位,所以只能到127

2021-02-02
不曾相识
老师,请问一下,我在看第三章项目源码的时候,发现不同页面,有的用的ES6语法写的模板,有的用react-dom操作的,在RPC方面,有自己写的,也有用easySock的做的全双工通讯,是不同页面的需求,还是您在有意的让我们复习更多的内容。烦您有空帮我解答一下哈。

作者回复: 故意用各种方式实现,加深理解。 一开始先用重造轮子的方式学习,然后再上手用成型的库,这样印象可以更深刻。

2020-08-21
2
L
请问老师,为什么要使用这个protocol-buffer呢?编解码得话我使用from以及buffer.toSting()不是一样的可以吗? 我自己尝试了一下,发现使用protocol-buffer编码出来的数据要更加的小一点,而且也可以发现不符合规范的数据,是这个原因吗?可是为什么会更加小一点呢? 对于wirte,什么时候用8什么时候用16呢? 感觉这节课稍微有点让人知其然但是不知其所以然了,会用倒是不知道什么时候用以及为什么要用

作者回复: 相比之下protocol-buffer提供了一个“直接由协议文件转换出编解码函数”的能力,而不需要你手动一行一行敲代码。 编码出来的数据更小一些应该只是因为你采用了比较小的数据结构。protocol-buffer会在数据包里添加一些多余的位数做标记,所以理论上来说你手敲编解码代码编出来的包体是能比protocol-buffer更小的。

2019-12-25
阿秀
意犹未尽的时候断了的感觉, 你知道吗?
2019-10-17
13
坚持到底
是不是协议文件,必须使用message声明。这个proto文件目的,是为实现rpc跨语言的调用。所以需要事先双发约定好数据结构。如果对方用java,或其他语言写,就会根据这个协议的定义,转化为java,或者其他语言对应的数据结构。
2020-01-19
2
收起评论