《深入浅出node.js(朴灵)》【PDF】下载

《深入浅出node.js(朴灵)》【PDF】下载链接:
https://u253469.pipipan.com/fs/253469-230062563

内容简介

《深入浅出Node.js》从不同的视角介绍了Node内在的特点和结构。由首章Node介绍为索引,涉及Node的各个方面,主要内容包含模块机制的揭示、异步I/O实现原理的展现、异步编程的探讨、内存控制的介绍、二进制数据Buffer的细节、Node中的网络编程基础、Node中的Web开发、进程间的消息传递、Node测试以及通过Node构建产品需要的注意事项。最后的附录介绍了Node的安装、调试、编码规范和NPM仓库等事宜。

作者简介

朴灵,真名田永强,文艺型码农,就职于阿里巴巴数据平台,资深工程师,Node.js布道者,写了多篇文章介绍Node.js的细节。活跃于CNode社区,是线下会议NodeParty的组织者和JSConfChina(沪JS和京JS)的组织者之一。热爱开源,多个Node.js模块的作者。叩首问路,码梦为生。

目录

第1章 Node简介 
  1.1 Node的诞生历程 
  1.2 Node的命名与起源 
  1.2.1 为什么是JavaScript 
  1.2.2 为什么叫Node
  1.3 Node给JavaScript带来的意义 
  1.4 Node的特点 
  1.4.1 异步I/O 
  1.4.2 事件与回调函数 
  1.4.3 单线程 
  1.4.4 跨平台 
  1.5 Node的应用场景 
  1.5.1 I/O密集型 
  1.5.2 是否不擅长CPU密集型业务 
  1.5.3 与遗留系统和平共处 
  1.5.4 分布式应用 
  1.6 Node的使用者 
  1.7 参考资源

第2章 模块机制 
  2.1 CommonJS规范 
  2.1.1 CommonJS的出发点 
  2.1.2 CommonJS的模块规范 
  2.2 Node的模块实现 
  2.2.1 优先从缓存加载 
  2.2.2 路径分析和文件定位 
  2.2.3 模块编译 
  2.3 核心模块 
  2.3.1 JavaScript核心模块的编译过程 
  2.3.2 C/C++核心模块的编译过程 
  2.3.3 核心模块的引入流程 
  2.3.4 编写核心模块 
  2.4 C/C++扩展模块 
  2.4.1 前提条件 
  2.4.2 C/C++扩展模块的编写 
  2.4.3 C/C++扩展模块的编译 
  2.4.4 C/C++扩展模块的加载 
  2.5 模块调用栈 
  2.6 包与NPM 
  2.6.1 包结构 
  2.6.2 包描述文件与NPM 
  2.6.3 NPM常用功能 
  2.6.4 局域NPM 
  2.6.5 NPM潜在问题 
  2.7 前后端共用模块 
  2.7.1 模块的侧重点 
  2.7.2 AMD规范 
  2.7.3 CMD规范 
  2.7.4 兼容多种模块规范 
  2.8 总结 
  2.9 参考资源

第3章 异步I/O 
  3.1 为什么要异步I/O 
  3.1.1 用户体验 
  3.1.2 资源分配 
  3.2 异步I/O实现现状 
  3.2.1 异步I/O与非阻塞I/O 
  3.2.2 理想的非阻塞异步I/O 
  3.2.3 现实的异步I/O 
  3.3 Node的异步I/O 
  3.3.1 事件循环 
  3.3.2 观察者 
  3.3.3 请求对象 
  3.3.4 执行回调 
  3.3.5 小结 
  3.4 非I/O的异步API 
  3.4.1 定时器 
  3.4.2 process.nextTick() 
  3.4.3 setImmediate() 
  3.5 事件驱动与高性能服务器 
  3.6 总结 
  3.7 参考资源

第4章 异步编程 
  4.1 函数式编程 
  4.1.1 高阶函数 
  4.1.2 偏函数用法 
  4.2 异步编程的优势与难点 
  4.2.1 优势 
  4.2.2 难点 
  4.3 异步编程解决方案 
  4.3.1 事件发布/订阅模式 
  4.3.2 Promise/Deferred模式 
  4.3.3 流程控制库 
  4.4 异步并发控制 
  4.4.1 bagpipe的解决方案 
  4.4.2 async的解决方案 
  4.5 总结 
  4.6 参考资源

第5章 内存控制 
  5.1 V8的垃圾回收机制与内存限制 
  5.1.1 Node与V8 
  5.1.2 V8的内存限制 
  5.1.3 V8的对象分配 
  5.1.4 V8的垃圾回收机制 
  5.1.5 查看垃圾回收日志 
  5.2 高效使用内存 
  5.2.1 作用域 
  5.2.2 闭包 
  5.2.3 小结 
  5.3 内存指标 
  5.3.1 查看内存使用情况 
  5.3.2 堆外内存 
  5.3.3 小结 
  5.4 内存泄漏 
  5.4.1 慎将内存当做缓存 
  5.4.2 关注队列状态 
  5.5 内存泄漏排查 
  5.5.1 node-heapdump 
  5.5.2 node-memwatch 
  5.5.3 小结 
  5.6 大内存应用 
  5.7 总结 
  5.8 参考资源

第6章 理解Buffer 
  6.1 Buffer结构 
  6.1.1 模块结构 
  6.1.2 Buffer对象 
  6.1.3 Buffer内存分配 
  6.2 Buffer的转换 
  6.2.1 字符串转Buffer 
  6.2.2 Buffer转字符串 
  6.2.3 Buffer不支持的编码类型 
  6.3 Buffer的拼接 
  6.3.1 乱码是如何产生的 
  6.3.2 setEncoding()与string_decoder() 
  6.3.3 正确拼接Buffer 
  6.4 Buffer与性能 
  6.5 总结 
  6.6 参考资源

第7章 网络编程 
  7.1 构建TCP服务 
  7.1.1 TCP 
  7.1.2 创建TCP服务器端 
  7.1.3 TCP服务的事件 
  7.2 构建UDP服务 
  7.2.1 创建UDP套接字 
  7.2.2 创建UDP服务器端 
  7.2.3 创建UDP客户端 
  7.2.4 UDP套接字事件 
  7.3 构建HTTP服务 
  7.3.1 HTTP 
  7.3.2 http模块 
  7.3.3 HTTP客户端 
  7.4 构建WebSocket服务 
  7.4.1 WebSocket握手 
  7.4.2 WebSocket数据传输 
  7.4.3 小结 
  7.5 网络服务与安全 
  7.5.1 TLS/SSL 
  7.5.2 TLS服务 
  7.5.3 HTTPS服务 
  7.6 总结 
  7.7 参考资源

第8章 构建Web应用 
  8.1 基础功能 
  8.1.1 请求方法 
  8.1.2 路径解析 
  8.1.3 查询字符串 
  8.1.4 Cookie 
  8.1.5 Session 
  8.1.6 缓存 
  8.1.7 Basic认证 
  8.2 数据上传 
  8.2.1 表单数据 
  8.2.2 其他格式 
  8.2.3 附件上传 
  8.2.4 数据上传与安全 
  8.3 路由解析 
  8.3.1 文件路径型 
  8.3.2 MVC 
  8.3.3 RESTful 
  8.4 中间件 
  8.4.1 异常处理 
  8.4.2 中间件与性能 
  8.4.3 小结 
  8.5 页面渲染 
  8.5.1 内容响应 
  8.5.2 视图渲染 
  8.5.3 模板 
  8.5.4 Bigpipe 
  8.6 总结 
  8.7 参考资源

第9章 玩转进程 
  9.1 服务模型的变迁 
  9.1.1 石器时代:同步 
  9.1.2 青铜时代:复制进程 
  9.1.3 白银时代:多线程 
  9.1.4 黄金时代:事件驱动 
  9.2 多进程架构 
  9.2.1 创建子进程 
  9.2.2 进程间通信 
  9.2.3 句柄传递 
  9.2.4 小结 
  9.3 集群稳定之路 
  9.3.1 进程事件 
  9.3.2 自动重启 
  9.3.3 负载均衡 
  9.3.4 状态共享 
  9.4 Cluster模块 
  9.4.1 Cluster工作原理 
  9.4.2 Cluster事件 
  9.5 总结 
  9.6 参考资源

第10章 测试 
  10.1 单元测试 
  10.1.1 单元测试的意义 
  10.1.2 单元测试介绍 
  10.1.3 工程化与自动化 
  10.1.4 小结 
  10.2 性能测试 
  10.2.1 基准测试 
  10.2.2 压力测试 
  10.2.3 基准测试驱动开发 
  10.2.4 测试数据与业务数据的转换 
  10.3 总结 
  10.4 参考资源

第11章 产品化 
  11.1 项目工程化 
  11.1.1 目录结构 
  11.1.2 构建工具 
  11.1.3 编码规范 
  11.1.4 代码审查 
  11.2 部署流程 
  11.2.1 部署环境 
  11.2.2 部署操作 
  11.3 性能 
  11.3.1 动静分离 
  11.3.2 启用缓存 
  11.3.3 多进程架构 
  11.3.4 读写分离 
  11.4 日志 
  11.4.1 访问日志 
  11.4.2 异常日志 
  11.4.3 日志与数据库 
  11.4.4 分割日志 
  11.4.5 小结 
  11.5 监控报警 
  11.5.1 监控 
  11.5.2 报警的实现 
  11.5.3 监控系统的稳定性 
  11.6 稳定性 
  11.7 异构共存 
  11.8 总结 
  11.9 参考资源

附录A 安装Node 
  A.1 Windows系统下的Node安装 
  A.2 Mac系统下Node的安装 
  A.3 Linux系统下Node的安装 
  A.4 总结 
  A.5 参考资源

附录B 调试Node 
  B.1 Debugger 
  B.2 Node
Inspector 
  B.2.1 安装Node
Inspector 
  B.2.2 错误堆栈 
  B.3 总结

附录C Node编码规范 
  C.1 根源 
  C.2 编码规范 
  C.2.1 空格与格式 
  C.2.2 命名规范 
  C.2.3 比较操作 
  C.2.4 字面量 
  C.2.5 作用域 
  C.2.6 数组与对象 
  C.2.7 异步 
  C.2.8 类与模块 
  C.2.9 注解规范 
  C.3 最佳实践 
  C.3.1 冲突的解决原则 
  C.3.2 给编辑器设置检测工具 
  C.3.3 版本控制中的hook 
  C.3.4 持续集成 
  C.4 总结 
  C.5 参考资源

附录D 搭建局域NPM仓库 
  D.1 NPM仓库的安装 
  D.1.1 安装Erlang和CouchDB 
  D.1.2 搭建NPM仓库 
  D.2 高阶应用 
  D.2.1 镜像仓库 
  D.2.2 私有模块应用 
  D.2.3 纯私有仓库 
  D.3 总结 
  D.4 参考资源

下载地址:https://page81.ctfile.com/fs/3990681-216911200

更多书单和推荐电子书请关注我的新浪博客http://blog.sina.com.cn/u/3283485963
《深入浅出node.js(朴灵)》【PDF】下载链接:
https://u253469.pipipan.com/fs/253469-230062563

更多书单和推荐电子书请关注:
http://zhaozhiyong.cn

时间: 2024-11-06 07:17:26

《深入浅出node.js(朴灵)》【PDF】下载的相关文章

读书笔记《软件开发者路线图—从学徒到高手》

<软件开发者路线图—从学徒到高手> 模式列表 另辟蹊径(A Different Road):你发现自己想要去的那个方向跟通往软件技能的道路并不相同. 只求最差(Be the Worst):当快速超越了周围的每一个人,你的学习速度下降了. 质脆玩具(Breakable Toys):你工作在一个不允许失败的环境中,却需要一个安全的环境来学习. 具体技能(Concrete Skills):你想到一个优秀的团队中工作,然而你掌握的实用技能很少. 正视无知(Confront Your Ignorance

《软件开发者路线图——从学徒到高手》—— 读后总结

这本书读起来很快,而且很多地方都感觉到了共鸣!收获还是不少的... 空杯心态 这是我最喜欢的一个主题,书中有一个故事: 意思是说,如果我们自己的心态不摆正,骄傲浮躁,不能静下心来好好学习,那么看再多的书也是无用的. 只有以一种求知的心态学习,才会有收获. 关于技能 对于软件开发者来说,在入职之前的学生时代应该广泛涉猎各种专业领域的书籍,尽量扩宽自己的知识面,为入职打下一个良好的基础. 在实习时,尽量保证快速的学习,以可用为目标,你不需要知道某个UI组件的实现原理,只需要知道怎么使用即可. 然后入

《软件开发者路线图:从学徒到高手》【PDF】下载

<软件开发者路线图:从学徒到高手>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196346 图书简介 作为一名软件开发者,你在奋力推进自己的职业生涯吗?面对今天日新月异和不断拓展的技术,取得成功需要的不仅仅是技术专长.为了增强专业性,你还需要一些软技能以及高效的学习技能.本书的全部内容都是关于如何修炼这些技能的.两位作者DaveHoover和Adewale Oshineye给出了数十种行为模式,来帮你提高主要的技能.本书中的模式凝结了多

读《软件开发者路线图:从学徒到高手》感悟

好长时间,没有读过一本书了. 这两天花了点时间,读了一本<软件开发者路线图:从学徒到高手>,感觉很不错,所以推荐给大家. 本来以为,作为一名合格的程序员只要会看文档和源码,就可以,看来我真的烦了一个很大错误呢,是不是你也有这个Bug ? 以前的我,总是喜欢 自己一个人摸索问题的答案,有的时候也不一定能够解决, 作为一名好的 程序员,要保持一个 谦卑的心,正如 乔帮主 所说的:"Stay foolish ,Stay hungry!" 学会,分享自己所学的知识,这样 会进步的更

《软件开发者路线图:从学徒到高手》

1.为什么要不断学习新东西: 专长带来的回馈是直接而切实的,但这样做的风险不会立即浮现出来,直到有一天你采取任何措施都为时已晚.当你的专长最终变得过时,你将被迫再次面临一大片无知领域,而此时你可能已经失去学习新东西的习惯,重新开始会比原来痛苦得多.在这种情况下,克服那种被压垮的感觉比解决问题本身更困难. 2.走上同一条路: 通过观察,并且与几个这样的杰出黑客交流,他发现自己离真正意义上的"杰出软件开发者"差远了.每隔一段时间,他就会去看一看这些黑客们所学知识的深度和广度,然后垂头丧气或

软件开发者路线图梗概&amp;书摘chapter1

软件技能的概念 本书目的:尝试为软件开发的新颖方法整理出一份宣言 原因:定义泛化 从敏捷开发运动中学到的经验:理解支撑规则的底层因素 软件技能的愿景:价值的提取&希望的表达 价值体系: 1.基于反馈作出改变 2.注重实效而非教条 3.分享 4.敢于实验.证明错误 5.掌控自己的命运 6.对个体而非群体的关注 7.包容性 8.以技能为中心 9.同那些使用你要学习的技能为目标的人共处 软件学徒:一种态度,不断寻找更好的方法 学徒期:责任感,渐进的过程 熟练工:新的关注:从业者之间的关系→提供指导.保

软件开发者路线图梗概&amp;书摘chapter2

空杯心态:放下对技能水平的自鸣得意 1.入门语言:学习一门语言,从实际问题入手→形成反馈回路 构建学习沙箱 利用实际代码,进行学习测试 学习一门语言:与精通该语言的专家一起工作,即找人指导 阅读他人的代码,分享经验 第一门语言:框架 深入挖掘语言&学习迥然不同的方法解决问题的语言 语言规范,通读他人写的标准库,打补丁,得到自己的通用法 2.白色腰带:学习进度降低,尊重与好奇的态度 用不同范式的语言来实现某种编程范式编写的程序 3.释放激情:热情与好奇心,需适应团队动态 思想的多样性→集体智慧 4

软件开发者路线图梗概&amp;书摘chapter5

恒久学习:整个职业生涯,反馈回路,了解弱点 1.提高带宽:多维度.高效获取知识 博客.关注twitter动态.订阅邮件列表.加入本地用户组.技术大会.联系书的作者.在线教程 从信息的海洋中回到实际软件制作 2.不断实践:可以犯错的环境实践 指导者布置练习并评价 通过路数实践 较短的周期性反馈,社区中公开练习 稍难的练习,每周重做,解决方法的改变 3.质脆玩具:当成功所得经验与失败一样多,追寻失败 个人wiki记录所学 4.使用源码:代码是最终裁决者 工具箱:阅读别人的代码.阅读最新代码.尝试重构

软件开发者路线图梗概&amp;书摘chapter7

软件工程是一门技艺 原因:理解不足以系统化 技能:为交付可以工作的软件 重要的原因:了解不足以将它写成可供别人直接运用并得到相同成果的格式 大多数程序员低于平均水平 工艺:一套高度重视技能的训练和传统 包括:学会.发扬.继承一种技能 绝对顺从权威是危险的 师傅不是用于称呼自己的,标准模糊 软件是一门新手艺,缺乏师傅 培养他人,达到甚至超越自己才华→师傅的潜力

软件开发者路线图梗概&amp;书摘chapter3

漫漫长路:自定路线,想象十年后 1.技重于艺:重视客户的交付价值 客户的解决方案与个人内在标准的平衡 2.持续动力:金钱.乐趣.名声 列出五项最重要的动力 3.培养激情:博客.钻研名著.加入学习小组.重定路线 清晰的界限保护激情 准备三个用于讨论的积极想法 4.自定路线:适合你的道路 职业目标→步骤具体化→第一步 协同与老板愿景一致的机会 不断重新评估路线 列举目前工作之后可从事的三项工作,之后再三项,之后再三项,共27项 5.使用头衔:公司的头衔仅娱乐 描述自己.为自己写头衔 6.坚守阵地:坚