文章列表
陈映平 于 3天前发表 68 0 0
本文摘录自《Nodejs学习笔记》,更多章节及更新,请访问 github主页地址 [https://github.com/chyingp/nodejs-learning-guide] 。欢迎加群交流,群号 197339705 [http://shang.qq.com/wpa/qunwpa?idkey=7e4f670e1cd9278f30003965a1cc068a4f30d8c73aa071c8da189f4842dbbee6] 。 简介 MD5(Message-Digest Algorithm)是计算机安全领域广泛使用的散列函数(又称哈希算法、摘要算法),主要用来确保消息的完整和一致性。常见的应用场景有密码保护、下载文件校验等。 本文先对MD5的特点与应用进行简要概述,接着重点介绍MD5在密码保护场景下的应用,最后通过例子对MD5碰撞进行简单介绍。 特点 1. 运算速度快:对 jquery.js 求md5值,57254个字符,耗时1.907ms 2. 输出长度固定:输入长度不固定,输出长度固定(128位)。
3天前
nodeJS全栈
zzbozheng 于 3个月前发表 721 0 0
PM2 模块 PM2模块是通过PM2来安装和管理,代码可以托管在NPM中。任何人都可以创建和发布一个PM2模块,可以是日志模块、http代理模块、负载均衡模块、DNS服务器模块或任何类型的实用程序。 管理模块 管理PM2模块是非常简单的: # Install $ pm2 install <module-name> # Update a module $ pm2 install <module-name> # Install a module from GitHub (username/repository) $ pm2 install pm2-hive/pm2-docker # Force module restart $ pm2 restart <module-name> # Get more informations $ pm2 describe <module-name> # Install a module in dev mode from local folder $ pm2 install . # Generate a module boilerplate
3个月前
nodeJS全栈
黎清龙 于 5个月前发表 820 0 0
代码覆盖率工具 ISTANBUL 1. 代码覆盖率 在测试时,我们的用例把所有代码都覆盖了吗? 对于这个问题引出了代码覆盖率的测试指标,一共有以下4种: * 行覆盖率(line coverage):是否每一行都执行了? * 函数覆盖率(function coverage):是否每个函数都调用了? * 分支覆盖率(branch coverage):是否每个if代码块都执行了? * 语句覆盖率(statement coverage):是否每个语句都执行了? istanbul 是一个代码覆盖工具 它可以帮助我们检查代码的覆盖率 在一个项目中,可以通过 istanbul 设定某些覆盖率阈值来保证测试用例的齐全完整程度,用来保证代码质量 下面是对 istanbul 的使用&学习所得 2. 安装 需要安装 mocha,should,istanbul $ npm install mocha $ npm install should $ npm install istanbul mocha 是测试框架,should 是断言库 3. 初探代码覆盖 先来看看我们的测试文件:
5个月前
nodeJS全栈
陈映平 于 5个月前发表 770 0 0
本文摘录自个人总结《Nodejs学习笔记》,更多章节及更新,请访问 github主页地址 [https://github.com/chyingp/nodejs-learning-guide] 。欢迎加群交流,群号 197339705 [http://shang.qq.com/wpa/qunwpa?idkey=7e4f670e1cd9278f30003965a1cc068a4f30d8c73aa071c8da189f4842dbbee6] 。 模块概览 在node中,child_process这个模块非常重要。掌握了它,等于在node的世界开启了一扇新的大门。熟悉shell脚本的同学,可以用它来完成很多有意思的事情,比如文件压缩、增量部署等,感兴趣的同学,看文本文后可以尝试下。 举个简单的例子: const spawn = require('child_process').spawn; const ls = spawn('ls', ['-lh', '/usr']); ls.stdout.on('data', (data) => {
5个月前
nodeJS全栈
yisbug 于 5个月前发表 597 0 0
本文内容大部分来自 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 或者其他方式? 一些基础知识
5个月前
nodeJS全栈
jaychen 于 5个月前发表 1814 0 1
[http://7tszky.com1.z0.glb.clouddn.com/FkhApdRySR927nkdDZuUPBQbJtXG] 一、相关技术介绍: 消息实时推送,指的是将消息实时地推送到浏览器,用户不需要刷新浏览器就可以实时获取最新的消息,实时聊天室的技术原理也是如此。传统的Web站点为了实现推送技术,所用的技术都是轮询,这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求。 短轮询(Polling)[http://7tszky.com1.z0.glb.clouddn.com/Forwbre5TtTP1ayMvQr8Z3hPjIon] 客户端需要定时往浏览器轮询发送请求,且只有当服务有数据更新后,客户端的下一次轮询请求才能拿到更新后的数据,在数据更新前的多次请求相当于无效。这对带宽资源造成了极大的浪费,若提高轮询定时器时间,又会有数据更新不及时的烦恼。 commet
5个月前
nodeJS全栈
link ,除了分享,也是知识管理。 于 6个月前发表 808 0 0
导语:写下这篇文章的缘由是因为在项目过程中,碰到了一个使用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)。
6个月前
nodeJS全栈
link ,除了分享,也是知识管理。 于 6个月前发表 944 4 1
网络序?本地序?傻傻分不清楚。。。 这个问题源于最近做的一个项目,需要用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对象)在存储器中的存储顺序,在了解这两种字节顺序之前,我们来复习一下计算机的寻址规则。 寻址
6个月前
nodeJS全栈
jaychen 于 8个月前发表 1321 2 0
[http://7tszky.com1.z0.glb.clouddn.com/FqR4SzPn5rVHghi0o3ejzA98ojR3] 之前一次偶然机会发现,react 在server渲染时,当NODE_ENV != production时,会导致内存泄漏。具体issues: https://github.com/facebook/react/issues/7406 [https://github.com/facebook/react/issues/7406] 。随着node,react同构等技术地广泛运用,node端内存泄漏等问题应该引起我们的重视。为什么node容易出现内存泄漏以及出现之后应该如何排查,下面通过一个简单的介绍以及例子来说明。 首先,node是基于v8引擎,其内存管理方式与v8一致。下面简单介绍v8的相关内存特效。 V8内存限制
8个月前
nodeJS全栈
陈映平 于 8个月前发表 1023 0 0
背景说明 项目测试通过,到了上线部署阶段。部署的机器安全限制比较严格,不允许访问外网。此外,没有对外网开放ssh服务,无法通过ssh远程操作。 针对上面提到的两条限制条件,通过下面方式解决: * 无法访问外部网络 :将依赖的环境本地下载,打包上传,离线安装; * 无法ssh远程操作 :将安装/初始化步骤脚本化,安装包交给运维人员,一键部署; 安装包说明 让运维同学将安装包置于 /data/my_install 下。安装包大致如容如下。其中 install_scripts 目录中,存放的是部署相关的脚本。 [root@localhost my_install]# tree -L 1 . ├── control # 各种服务控制脚本 ├── install_scripts # 安装脚本 ├── node-v5.11.1-linux-x64 # node二进制包 ├── npm_modules_global_offline # 全局的npm模块,比如 pm2 ├── express_svr # express应用 └── uninstall_scripts # 卸载脚本 部署脚本说明
8个月前
nodeJS全栈
陈映平 于 8个月前发表 2825 0 1
简介 PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。 下面就对PM2进行入门性的介绍,基本涵盖了PM2的常用的功能和配置。 安装 全局安装,简直不能更简单。 npm install -g pm2 目录介绍 pm2安装好后,会自动创建下面目录。看文件名基本就知道干嘛的了,就不翻译了。 * $HOME/.pm2 will contain all PM2 related files * $HOME/.pm2/logs will contain all applications logs * $HOME/.pm2/pids will contain all applications pids * $HOME/.pm2/pm2.log PM2 logs * $HOME/.pm2/pm2.pid PM2 pid * $HOME/.pm2/rpc.sock Socket file for remote commands
8个月前
nodeJS全栈
陈映平 于 8个月前发表 1853 1 2
入门简介 [http://7tszky.com1.z0.glb.clouddn.com/FoUS9X6GzKkyaciiwN-9V6pHGA0q] Express是基于nodejs的web开发框架。优点是易上手、高性能、扩展性强。 * 易上手 :nodejs最初就是为了开发高性能web服务器而被设计出来的,然而相对底层的API会让不少新手望而却步。express对web开发相关的模块进行了适度的封装,屏蔽了大量复杂繁琐的技术细节,让开发者只需要专注于业务逻辑的开发,极大的降低了入门和学习的成本。 * 高性能 :express仅在web应用相关的nodejs模块上进行了适度的封装和扩展,较大程度避免了过度封装导致的性能损耗。 * 扩展性强 :基于中间件的开发模式,使得express应用的扩展、模块拆分非常简单,既灵活,扩展性又强。 环境准备 首先,需要安装nodejs,这一步请自行解决。接着,安装express的脚手架工具 express-generator ,这对于我们学习express很有帮助。 npm install -g express-generator
8个月前
nodeJS全栈