Node.js 来一打 C++ 扩展+Node.js调试指南+Node.js设计模式pdf下载

Node.js 来一打 C++ 扩展+Node.js调试指南+Node.js设计模式百度网盘pdf下载

作者:
简介:Node.js 来一打 C++ 扩展+Node.js调试指南+Node.js设计模式
出版社:
出版时间:
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

出版社: 电子工业出版社 ISBN:9787121336423版次:1商品编码:12380404品牌:Broadview包装:平装开本:16出版时间:2018-06-01用纸:胶版纸页数:480字数:1

内容简介

Node.js 作为近几年新兴的一种编程运行时,托 V8 引擎的福,在作为后端服务时有比较高的运行效率,在很多场景下对于我们的日常开发足够用了。不过,它还为开发者开了一个使用C++ 开发 Node.js 原生扩展的口子,让开发者进行项目开发时有了更多的选择。

《Node.js:来一打 C++ 扩展》以 Chrome V8 的知识作为基础,配合 GYP 的一些内容,将教会大家如何使用 Node.js提供的一些 API 来编写其 C++ 的原生扩展。此外,在后续的进阶章节中,还会介绍原生抽象NAN 以及与异步相关的 libuv 知识,后辅以几个实例来加深理解。不过,在学习本书内容之前,希望读者已经具备了初步的 Node.js 以及 C++ 基础。

阅读《Node.js:来一打 C++ 扩展》,相当于同时学习Chrome V8 开发、libuv 开发以及 Node.js 的原生 C++ 扩展开发知识,非常值得!

精彩书评

This book contains absolutely everything you need to know about how all the pieces of Node.js’ C++ code work and interact, explaining the necessary concepts without needing prior knowledge about the internals of V8, libuv or other pieces of Node.js. It shows well how Node.js’ own builtin modules are constructed using the APIs provided by V8, so that they are usable from ,and how you can create the same kind of modules from scratch.After having read this book, you will be able to write a production-quality, future-proof C++ extension for Node.js if you need to do that, or maybe even make changes Node.js itself if you’re interested in that!

本书包含了所有你需要了解的有关Node.js C++ 代码是如何运行和交互的知识,解释了一些你不需要知道V8 的内部机制就能理解的必要概念,并介绍了libuv 以及其他一些内容的方方面面。本书还展示了Node.js 的内置模块是如何使用V8 的API 进行构建并可在 层面使用的——并且你也能用这种方法从头开始创建相同类型的模块。

读完本书,你将学到如何写出产品级质量的、面向未来的Node.js C++ 扩展。感兴趣的话,你甚至可以对Node.js 自身进行修改!

——安娜·亨宁森(Anna Henningsen, addaleax),Node.js 技术指导委员会成员(Node.js TSC)

Node.js 不是第个将 带入服务端领域的技术,然而它却成为史上热门、有影响力的工具之一。究其原因,其一,在于Node.js 适逢后端高并发潮流,巧妙结合Reactor 模型和 所擅长的回调风格,大大降低了开发高并发服务器应用的成本;IV Node.js:来一打C++ 扩展

其二,在于恰逢浏览器大战,前端技术突飞猛进,急需一套适合 和前端工程师的生态和工具链,Node.js 刚好成为前端 易上手掌握的命令行环境。在Node.js 发展得如此火热之际,Node.js 的开发体验在不断提升,上手门槛也在不断降低。

然而,如果大家真正想突破自己并成为个中高手,无论是后端程序员希望在服务端及架构方面有所建树,还是前端程序员想跨越边界,都应该去了解Node.js 的底层机制,去学习写一些Node.js 的扩展。从Node.js 的内在机制,我们可以学到更多有关计算机体系的知识,如内存管理、多线程编程等,真正向一个架构师、一个大牛迈进。

本书在这些方面提供了一个非常的指南。死月通过精彩的内容告诉大家:底层的知识并不枯燥,用C++ 写一个扩展很有意思也很简单。作为Node.js 工程师/ 爱好者的你,值得拥有本书。

——曹力(ShiningRay),酷链科技 CEO,暴走漫画前CTO,糗事百科前联合创始人, Node.js 技术专家,《 程序设计》译者

Native module is one of the most underappreciated features of Node.js. But even in the age of asm.js and WebAssembly, it is an irreplaceable part of the Node.js ecosystem due to its versatility and performance. XadillaX’s book provides a refreshing introduction (or eintroduction), and is a must-read for all low-level Node.js engineers.

原生模块是Node.js 中被低估的功能之一。因为自身的性能和多样性,使其即使是在asm.js 和WebAssembly 时代,仍旧能作为Node.js 生态中不可替代的部分存在。死月的书对其进行了一个令人耳目一新的介绍,它是所有底层(Low-Level)Node.js 工程师的必读之物。

——顾天骋(Timothy Gu),pug、ejs 前Maintainer,Node.js Core Collaborator 之一

本书全面讲解了V8、libuv 的原理并且手把手教你编写一打Node.js 的C++ 扩展,它是目前市面上相关领域非常稀缺的技术书籍。如果你想更深入地了解Node.js 的实现原理,除了熟读内置API 文档之外,阅读本书也会是一个很好的选择。

——雷宗民(老雷),《Node.js 实战》作者之一

这是一本角度“刁钻”的Node.js 相关书籍,其与市面上大多数Node.js 书籍的定位不同。本书借为Node.js 开发C++ 扩展做基石,顺带介绍了Chrome V8 和libuv 的内容,填补了市场上这一类书籍的空白,值得一读。

——李启雷博士,趣链科技CTO

无论是基础部分的V8 练习,还是使用Node.js 经典的Addon 开发、用NAN 来改写,或是libuv 里的WatchDog 案例、EFSW 的封装,死月一直把实战贯穿在整本书之中。甚至在第8 章里他还特意剖析了两个C++ 模块,把之前讲解的基础知识部分综合起来,以便让读者可以边学边练。

在如今追求大而全的时代,这本《Node.js:来一打C++ 扩展》单纯地讲Node.js 的某一个方面,而且讲得特别棒,真的很难得。

——刘琥(响马),西祠胡同创始人,fibjs 作者

当你掌握了Node.js 的上层使用,下一步进阶的方向就是研究Node.js 的底层原理。本书为学习Node.js 的实现机制打开了一扇门。书中介绍的上下文(Context)、句柄(Handle)、句柄作用域(Handle Scope)等概念直接来自源码,对于阅读Node.js 及V8 的源码具有极高的参考价值。

——潘旻琦(pmq20),Node.js 技术专家,Node.js Collaborator 之一,RubyConf 讲师之一

国内Node.js 偏向于原理的书目前只有朴灵的《深入浅出Node.js》一本。至今4 年过去了,Node.js 的版本已经从v0.10 发展到v9,中间几乎没有这样、有深度的书籍。

很高兴死月的新书弥补了这一遗憾。本书以C++ 为主线,涵盖Node.js 核心的libuv和V8,对理解Node.js 原理有极大的好处。当然好处在于,使用C++ 编写Node.jsAddon 可以让Node.js 有更广阔的应用空间。我们都知道Node.js 擅长的是I/O 密集型任务,对于CPU 密集型运算这是极好的弥补。

特别大家阅读此书,在Node.js 应用极其广泛的,使用C++ 编写Node.jsAddon 是更出彩的部分,你值得拥有。

——桑世龙(i5ting、狼叔),StuQ 讲师,Node.js 技术布道者,《更了不起的Node.js》作者

死月对Node.js 底层机制有非常深入的了解。阅读本书,除了学习C++ 扩展开发外,还会跟随死月了解V8、libuv,相信大家对于Node.js 的理解会更上一层楼。

——孙信宇(芋头),大搜车无线架构团队负责人,前端乱炖站长

C++ 扩展其实是从外在,用C++ 的角度去观察Node.js 内在的形式。因为Node.js 整个自身几乎就是构建在C/C++ 之上的,所以C++ 扩展只是在Node.js 内部被称为内置模块(built-in module),在第三方角度(user-land)则被称为Addon,它们在本质上其实没有区别。死月凭借他在C/C++ 方面的深厚积累,选择从C++ 扩展作为突破口,带大家领略Node.js 底层的风光。在本书中,你能看到真正发挥巨大价值的V8、libuv 亦是精彩纷呈。

死月将C++ 扩展写得这么透彻,我是服的。

——田永强(朴灵),Node.js 技术专家,《深入浅出Node.js》作者

开发C++ 扩展,可以扩充Node.js 平台的本地API,扩充Node.js 应用的能力。本书详细介绍了包括libuv、V8 在内的各种必要知识,是该领域比较难得的好书。对C++ 开发者来说,本书既可以作为入门指引,又可以作为日常开发的有益参考。

——王文睿博士(Roger Wang),node-webkit 和NW.js 项目创始人和维护者,英特尔软件架构师

我至今仍然清晰记得,自己手写的第个Node.js C++ 扩展模块在Node.js 0.6.9 跑通的那种愉悦感。随着应用升级到Node.js 0.8,依赖的C++ 扩展模块无法安装编译成功,后发现是V8 的API 变化导致不兼容,从此我对C++ 扩展模块产生了抗拒心理。如今看到《Node.js:来一打C++扩展》从实现原理到V8基础概念的一系列介绍,让我重新对C++扩展模块产生了兴趣。参考本书中的实战例子,并在NAN 的辅助下,编写一个跨Node.js 版本的C++ 扩展已经不是什么困难的事情了。通过后一章,读者可以了解到Node.js 官方的N-API 计划,让C++ 扩展不仅仅能跨版本复用,还能跨操作(平台)复用。

——袁锋(fengmk2),Node.js 技术专家

目录

1 Node.js 的 C++ 扩展前驱知识储备 1

1.1 Node.js 的模块机制 2

1.1.1 CommonJS 的模块规范 2

1.1.2 Node.js 的模块 4

1.1.3 小结 9

1.1.4 参考资料 9

1.2 Node.js 的包机制 9

1.2.1 CommonJS 的包规范 9

1.2.2 Node.js / NPM 下的包 13

1.2.3 NPM 与 CNPM 16

1.2.4 小结 19

1.2.5 参考资料 19

1.3 Node.js 依赖简介 20

1.3.1 Chrome V8 20

1.3.2 libuv 25

1.3.3 其他依赖 28

1.3.4 小结 30

1.3.5 参考资料 30

1.4 C++ 扩展开发的准备工作 31

1.4.1 编辑器 / IDE 31

1.4.2 node-gyp 36

1.4.3 其他构建工具 54

1.4.4 小结 56

1.4.5 参考资料 56

2 C++ 模块原理简析 57

2.1 为什么要写 C++ 模块 57

2.1.1 C++ 比 解释器高效 57

2.1.2 已有的 C++ 轮子 72

............





内容简介

《Node.js调试指南(全彩)》从CPU、内存、代码、工具、APM、日志、监控、应用这8 个方面讲解如何调试 Node.js,大部分小节都会以一段经典的问题代码为例进行分析并给出解决方案。其中,第1 章讲解CPU 相关的知识,涉及各种CPU 性能分析工具及火焰图的使用;第2 章讲解内存相关的知识,例如Core Dump 及如何分析 heapsnapshot 文件;第3 章讲解代码相关的知识,例如如何从代码层面避免写出难以调试的代码,并涉及部分性能调优知识;第4 章讲解工具相关的知识,涉及常用的Node.js 调试工具和模块;第5 章讲解APM(Application Performance Management)相关的知识,例如两个不同的应用程序性能管理工具的使用;第6 章讲解日志相关的知识,例如如何使用Node.js 的async_hooks 模块实现自动日志打点,并结合各种工具进行使用;第7 章讲解监控相关的知识,例如如何使用Telegraf InfluxDB Grafana 搭建一个完整的Node.js 监控;第8 章讲解应用相关的知识,给出了两个完整的Node.js 应用程序的性能解决方案。

《Node.js调试指南(全彩)》并不适合Node.js 初学者,适合有一定Node.js 开发经验的人阅读。笔者倾向于将本书定位成参考书,每一小节基本独立,如果遇到相关问题,则可以随时翻到相应的章节进行阅读。

作者简介

赵坤,网名nswbmw, Node.js开发者,开源项目Paloma、Mongolass和EverBlog作者,崇尚开源,热爱分享。

曾出版《Node.js实战(双色)》和《Node.js实战(第2季)》。

目 录

第1 章  CPU 1

1.1  理解perf 与火焰图(FlameGraph) 2

1.1.1  perf 2

1.1.2  火焰图 6

1.1.3  红蓝差分火焰图 8

1.2  使用 v8-profiler 分析 CPU 的使用情况 11

1.3  Tick Processor 及Web UI 16

1.3.1  Tick Processor 16

1.3.2  Web UI 21

第2 章  内存 23

2.1  gcore 与llnode 24

2.1.1  Core 和 Core Dump 24

2.1.2  gcore 25

2.1.3  llnode 25

2.1.4  测试 Core Dump 26

2.1.5  分析Core 文件 27

2.1.6  --abort-on-uncaught-exception29

2.1.7  小结 30

2.2  heapdump 30

2.2.1  使用heapdump 30

2.2.2  Chrome DevTools 32

2.2.3  对比快照 34

2.3  memwatch-next 35

2.3.1  使用memwatch-next 35

2.3.2  使用Heap Diff 38

2.3.3  结合 heapdump 使用 40

2.4  cpu-memory-monitor 41

2.4.1  使用cpu-memory-monitor 41

2.4.2  cpu-memory-monitor 源码解读 43

第3 章  代码 46

3.1  Promise 47

3.1.1  Promise/A 规范 48

3.1.2  从零开始实现 Promise 48

3.1.3  Promise 的实现原理 50

3.1.4  safelyResolveThen 52

3.1.5  doResolve 和 doReject 54

3.1.6  Promise.prototype.then 和 Promise.prototype.catch 55

3.1.7  值穿透 58

3.1.8  Promise.resolve 和 Promise.reject 60

3.1.9  Promise.all 61

3.1.10  Promise.race 62

3.1.11  代码解析 63

3.2  Async Await 69

...........


Node.js设计模式(第2版)
掌握Node.js强大的组件和模式 轻松创建模块和可扩展的应用程序












^_^:1dabf5ae72efa8171734d2b929623499