话题
文章列表
link ,除了分享,也是知识管理。 Node.js全栈
原文链接: Introducing npx: an npm package runner [https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b] 那些将npm升级到 npm@5.2.0 [https://github.com/npm/npm/releases/tag/v5.2.0] 或以上的用户,会发现与通常的 npm 平级的文件夹中还多了另一个二进制文件: npx npx是一个旨在提升npm包的使用体验——就像npm极大地提升了我们安装和管理包依赖的体验,npx让npm包中的命令行工具和其他可执行文件在使用上变得更加简单。它极大地简化了我们之前使用纯粹的npm时所需要的大量步骤。 使用本地已安装的可执行工具,而不需要配置 NPM RUN-SCRIPT ...显示全部
2 个月前发表 143次浏览 0条评论 0次收藏
link ,除了分享,也是知识管理。 Node.js全栈
[http://7tszky.com1.z0.glb.clouddn.com/FvgoQmNATnByOO4B4KuYSkZHVQfv] 概述 为什么要在NODE.JS中调用动态链接库 1. 由于腾讯体系下的许多公共的后台服务(L5, CKV, msgQ等)已经有了非常成熟的C/C++编写的API,以供应用程序调用,node.js作为在公司内新兴的后台runtime在调用这些公共服务的时候没必要再造一遍轮子,而是可以将这些API编译成.so文件直接使用。 2. 对于一些密集计算型的任务可以由C++编写好模块,生成.so文件后由node.js调用。 FFI简介与安装 我们使用 node-ffi [https://github.com/node-ffi/node-ffi] 来帮助我们调用动态链接库。 FFI的全称是Foreign Function ...显示全部
2 年前发表 5364次浏览 1条评论 2次收藏
王少飞 Node.js全栈
NODEJS进程内存的使用和原理 V8简介 nodejs代码的运行基于V8,就像java运行需要hotspot,php运行需要zend。V8的由来是,当年web2.0,google的很多业务都在web端,为了提升浏览器中js的执行效率,研发了V8。 V8每发布一个新的版本,nodejs就会相应的发布新版本来使用新版本的V8。 nodejs9以后的版本都是使用的V8 6.2版本。这个版本都有哪些改进: 1 性能优化 * 1)优化了 Object.prototype.toString 的性能,比之前提升了6.5倍 * 2)优化了 ES2015 proxies 的性能, 比之前提升了5倍 * 3)优化了 String#includes() 的性能,比之前提升了3倍 * 4)哈希查找速度更快,从而提高了Map,Set,WeakMap和WeakSet的性能 * 5)新生代内存垃圾回收采用 Parallel Scavenger 算法 2 低内存模式:semi-space为512k,低内存设备减少了发生内存不足的概率。 3 优化正则表达式规则 ...显示全部
8 个月前发表 2019次浏览 0条评论 0次收藏
link ,除了分享,也是知识管理。 Node.js全栈
原文链接: The Anatomy of a GraphQL Query [https://dev-blog.apollodata.com/the-anatomy-of-a-graphql-query-6dffa9e9e747#.idii6j7tz] GraphQL 日渐成为数据查询的主流标准之一,整个生态圈也蓬勃发展。本文则由浅入深地详细介绍基础的 GraphQL 格式与关键字,有助于初学者对于 GraphQL 的使用形成体系认知。 GraphQL [http://graphql.org/learn/] 日渐成为数据查询的主流标准之一。每天都会产生许多围绕这项技术发展的精彩讨论和新工具。GraphQL最棒的特性就是提供了一个丰富语言集来描述获取数据的API。但是用户该如何描述这种查询语言,以及GraphQL这项核心技术本身呢?let's talk! GraphQL specification [https://facebook.github.io/graphql/#sec-Language] ...显示全部
1 年前发表 4119次浏览 0条评论 0次收藏
biliou Node.js全栈
什么是PROTOBUF ? protoBuf (PB) 我理解来说,就是一种 数据结构 ,由google 团队开发 protoBuf 需要程序员实现制定 schema,然后根据 schema 生成二进制的数据。传输完成后,如果需要重新将这些数据,接收端还需要使用使用 schema 将获得到的二进制数据解码。 相对于JSON来说,编码解码的步骤比较繁琐,但是,protobuf 比 JSON 快 https://github.com/dcodeIO/protobuf.js/blob/master/README.md#performance [https://github.com/dcodeIO/protobuf.js/blob/master/README.md#performance] 这是 dcodeIO 团队对 protobuf 和 native JSON 做了一些测试 从报告中可以看出,无论是编码解码还是结合的过程( protobuf 从对象编码为二进制,从二进制数据解码为对象 JSON ...显示全部
1 年前发表 5189次浏览 1条评论 0次收藏
程柳锋 Node.js全栈
当Javascript的性能遇到瓶颈,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了。 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项目中进行使用。下面有个列表,你可能对它们的名字很熟悉: * node-sass [https://github.com/sass/node-sass] 将sass文件编译成css文件 * node-microtime [https://github.com/wadey/node-microtime] : 扩展Javascript的时间精度 * node-inspector [https://github.com/node-inspector] :进行调试 * v8-profiler [https://github.com/node-inspector/v8-profiler] :性能及内存使用分析 通常,我们开发原生Node.js模块包括但不仅限于以下原因: ...显示全部
1 年前发表 3299次浏览 0条评论 0次收藏
何方舟 Node.js全栈
现象 之前有发现,录播 node 有异常关闭的情况。 我们在1月3日有一次发布,而1月5日凌晨突然挂掉。 分析服务器内存曲线。 [http://7tszky.com1.z0.glb.clouddn.com/Fjt-p7ngh-64NuGK8Of5cv-Q7cTw] 对应的详细内存[http://7tszky.com1.z0.glb.clouddn.com/FnAziHxLwRyqnrVvLKqQ0cDo367H] 可以发现服务器内存达到最大值 8G 后就挂掉了,根据发布后内存有明显的上升趋势,且 GC 回收不明显, 初步判定是由于内存泄露导致。 内存分析 我们使用 heapdump 这个库来帮助我们查看内存变量的情况。临时创建一个创建快照的请求地址。 server.route({ method: ['GET', 'POST'], path: '/now.qq.com/p', handler: function (request, reply) { ...显示全部
1 年前发表 3436次浏览 0条评论 0次收藏
link ,除了分享,也是知识管理。 Node.js全栈
什么是ZOOKEEPER Zookeeper 是一个分布式的、开源的协调服务,用在分布式应用程序中。它提出了一组简单的原语,分布式应用程序可以基于这些原语之上构建更高层的分布式服务用于实现同步、配置管理、分组和命名等。Zookeeper 设计的容易进行编程,它使用一种类似于文件系统的目录树结构的数据模型,以 java 方式运行,有 java 和 c 的绑定(binding)。 分布式系统中的协调服务总所周知地难于正确实现,尤其容易产生诸如争用条件 (race conditions)、死锁(deadlock) 等错误。Zookeeper 背后的动机就是减轻分布式应用程序从头做起实现协调服务的难度。 数据模型 Zookeeper 会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统,如下图所示: Zookeeper 数据结构 [http://img.blog.csdn.net/20160719230154255]Zookeeper 这种数据结构有如下这些特点: ...显示全部
2 年前发表 5580次浏览 2条评论 1次收藏
vienwu Node.js全栈
本文内容大部分来自 https://www.joyent.com/node-js/production/design/errors [https://www.joyent.com/node-js/production/design/errors] ,原文比较长,感觉也有点啰嗦,所以根据个人理解猜测梳理出本文,如果有错误欢迎指出,谢谢! 很多人其实不是很重视错误处理,但对于构建一个健壮的nodejs应用,错误处理是非常重要的一件事情,希望本文可以给你一些启发。 先抛出几个问题: 1. 应该用哪种方式暴露错误? throw 、 callback(err, result) 、 Event Emitter 或者其他方式? 2. 如何假设函数的参数?是否应该检测类型正确?非null,IP,QQ号码? 3. 函数参数不符合预期该怎么处理? 4. 应该如何区分不同类型的错误?例如 Bad Request 、 Service Unavailable 5. 应该如何提供有用的错误信息? 6. 应该如何捕获错误?使用 try/catch ,还是 domains 或者其他方式? 一些基础知识 ...显示全部
2 年前发表 3618次浏览 0条评论 0次收藏
link ,除了分享,也是知识管理。 Node.js全栈
网络序?本地序?傻傻分不清楚。。。 这个问题源于最近做的一个项目,需要用Node.js进行socket网络编程,涉及到使用TCP/UDP通过自定义的二进制数据序列化协议与android/iOS客户端进行通信。 当协商通信协议时,对接的客户端同学告诉我在发送数据的时候要将要发送的Buffer从本地序转换为网络序,当收到客户端的回包时,需要将收到的Buffer从网络序转换为本地序。 作为一个前端工程师,听到上面那段话,我脑海中的画面是: 黑人问号 [http://img.blog.csdn.net/20161012111816743] 网络序?本地序?傻傻分不清楚啊! 于是我决定翻开下面这本书,来一探究竟: CSAPP [http://img.blog.csdn.net/20161012113307469] 什么是网络序和本地序? 所谓的网络序和本地序其实就是一个跨越多个字节的程序对象(在Node.js中可以简单的认为是一个长度大于1的Buffer对象)在存储器中的存储顺序,在了解这两种字节顺序之前,我们来复习一下计算机的寻址规则。 寻址 ...显示全部
2 年前发表 4252次浏览 1条评论 1次收藏
link ,除了分享,也是知识管理。 Node.js全栈
导语:写下这篇文章的缘由是因为在项目过程中,碰到了一个使用JavaScript处理 UINT64 类型数字的坑。 与大部分现代编程语言(包括几乎所有的脚本语言)一样,JavaScript中的数字类型是基于 IEEE 754 标准来实现的,该标准通常也被称为“浮点数”。JavaScript使用的是“双精度”格式(即64位二进制)。 较小的数值 不仅仅是JavaScript,所有遵循 IEEE 754 规范的语言都会碰到如下问题: 0.1 + 0.2 === 0.3; // false 从数学角度来说,上面的条件判断结果应该是true,可实际上却为false。 这是因为,二进制浮点数中的 0.1 和 0.2 并不是十分精确,它们相加的结果并非刚好等于 0.3 ,而是一个比较接近的数字 0.30000000000000004, 所以条件判断的结果为false。 那么该如何处理这种语言上的缺陷呢? 最常见的方法是设置一个误差范围,通常称为“机器精度”(machine epsilon),对JavaScript的数字类型来说,这个值通常是2^-52(2.220446049250313e-16)。 ...显示全部
2 年前发表 4639次浏览 1条评论 0次收藏
yangchunwen Node.js全栈
React比较吸引我的地方在于其客户端-服务端同构特性,服务端-客户端可复用组件,本文来简单介绍下这一架构思想。 出于篇幅原因,本文不会介绍React基础,所以,如果你还不清楚React的 state [https://facebook.github.io/react/docs/interactivity-and-dynamic-uis.html#how-state-works] / props [https://github.com/uberVU/react-guide/blob/master/props-vs-state.md] / 生存周期 [https://facebook.github.io/react/docs/component-specs.html#lifecycle-methods] 等基本概念,建议先学习相关文档 客户端REACT ...显示全部
3 年前发表 7061次浏览 2条评论 0次收藏