nodejs
nodejs
Andy____Li
烹饪工具箱
展开
-
nodejs使用crypto进行对称加密
1 简介Nodejs 加解密模块主要由Crypto模块提供,Crypto模块由 C/C++ 实现算法后,暴露为 javascript 接口的模块,包含对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。关于对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密对称加密主要由Cipher 提供:Cipher该类的实例用于加密数据。关于支持的算法:最近的OpenSSL发布,openssl list-cipher-algorit原创 2020-11-19 11:37:35 · 3493 阅读 · 0 评论 -
nodejs 处理文件上传(express)
在实际开发功能中,经常会有涉及到文件上传的需求。这里简单记录一下文件上传处理的sample。具体场景还需要进一步开发。文章目录1 使用binary方式上传2 Chunked方式上传3 x-www-urlencoded 对值进行base64编码上传文件4 表单上传5 断点续传(分块并发上传)/大文件处理6 示例代码服务端:使用express框架处理文件上传Client:使用POSTMAN进行文件...原创 2020-02-28 17:50:30 · 3217 阅读 · 0 评论 -
Nodejs 后端解HTTP basic auth认证
项目中一般用oauth2 认证,今天想写一个demo就在POSTMAN中填了简单认证方式。嗯… 发现在express 还没有解过 尴尬了…今天写这篇blog把这个知识点加入到菜谱。文章目录1 Basic auth认证1.1 通用的 HTTP 认证框架1.2 基本验证方案(Basic auth)2 nodejs服务端中解Basic auth认证2.1 basic-auth模块2.2 自行解析1...原创 2019-11-29 18:14:47 · 4579 阅读 · 0 评论 -
Nodejs 编解码base64(图片)
const fs = require('fs');let bitmap = fs.readFileSync('start.jpg');let base64str = Buffer.from(bitmap, 'binary').toString('base64');base64编码console.log(base64str);let bitmap1 = Buffer.from(base64...原创 2018-09-20 15:40:11 · 5009 阅读 · 0 评论 -
Apns 服务端接入(node)
APNs(英文全称:Apple Push Notification service),中文翻译为:苹果推送通知服务.本文只记录apns node版本接入和一些调试经验,不涉及证书申请及app端开发。node有非常成熟apn相关模块,又快又陡。模块文档:https://www.npmjs.com/package/apn使用苹果APN首先需要准备以下参数服务端证书(开发环境证书和生产环境...原创 2018-09-26 14:09:14 · 2008 阅读 · 0 评论 -
Javascript set结构 (去重)
javascript 的set结构用来去重非常方便,这里记录一下。文章目录1 背景2 set数据结构2.1 set创建2.2 set 加入或删除key操作2.3 set转数组1 背景最近遇到问题,要记录某个人曾经用过的手机和操作系统记录到一个json{ "os":["android","ios"], "android":["mi8&am原创 2018-10-09 20:18:01 · 9143 阅读 · 0 评论 -
Node buffer模块使用
官方文档: https://nodejs.org/dist/latest-v10.x/docs/api/buffer.html文章目录1 背景1.1 new Buffer弃用1.2 弃用原因2 Buffer类的新方法2.1 Buffer.from 方法2.1.1 Array 参数2.1.2 String 参数-可用于编码2.1.3 object 参数2.2 Buffer.alloc方法2.3 ...原创 2018-10-29 10:20:03 · 3463 阅读 · 0 评论 -
node守护工具-PM2使用
内部测试服务器是最近新装的,没有supervisorctl 这个程序管理工具。不过前一阵得知node应该用更加适配的工具进行管理,那就PM2。试用了一下非常强大,特此记录一下使用流程。非常使用用来做node 守护及相关管理。文章目录1 安装2 基础命令2.1 查看pm2 管理的应用2.2 基础命令(启动 重启 停止)2.3 查看进程详细信息2.4 无缝重启程序3 PM2集群模式(负载均衡)4 配...原创 2018-11-05 13:32:13 · 4985 阅读 · 0 评论 -
Nodejs 定时执行(node-cron)
遇到个需求要定时清理某个map, 一个setInterval实现感觉太皮,肯定会翻车。所以去万能的npm上去摸工具。搜索一下schedule,出现一个node-cron模块。看起来有很多人用,嗯….就用这个了。Npm 文档:https://www.npmjs.com/package/cron1 安装npm install cron测试code:var CronJob = require...原创 2018-11-08 15:37:17 · 23734 阅读 · 14 评论 -
Nodejs 递归创建路径
Nodejs 在10之前原生并不支持递归创建文件目录,即如果创建一个./study/node/files 目录,如果node目录不存在,则会直接报错。文章目录1 测试2 Node 10.14.1 版本及以上3 Node低版本方案1 测试const fs = require('fs');fs.mkdir('./study/node/files ', (err) => { if ...原创 2018-12-05 20:25:20 · 2697 阅读 · 0 评论 -
gulp打包混淆支持await/async语法
最近需要对node代码进行混淆编译,原来曾经解决过ES6打包混淆的问题,但最近在代码中使用了async/await语法,原来的gulpfile混淆又出问题了。下面是记录这次问题的过程,想要看解决方案可以直接跳第三节。文章目录1 环境2 问题3 解决方案1 环境待混淆代码 test.jslet test = function(){ return new Promise((resol...原创 2019-04-17 18:23:56 · 2861 阅读 · 1 评论 -
Mediasoup(webrtc) Demo搭建及测试
团队大佬有点嫌弃原来p2p方案提供商,准备尝试使用webrtc评估替代可能性,所以近期开始架设webrtc的服务器。因为webrtc是一套通用协议,所以基于三方服务器进行通路测试及评估,先跑起来再逐步学习。基于技术栈就选以node接口的mediasoup这款开源服务器跑起来熟悉下套路。本文为Mediasoup demo部署说明。Mediasoup官网:https://mediasoup.orgM...原创 2019-05-07 15:22:14 · 33507 阅读 · 46 评论 -
Nodejs 创建目录并写入文件
经常有遇到这种场景,向某一个路径下写入一个文件,路径不存在则创建路径并创建文件,文件存在则覆盖。就是想用一个接口就可以把数据写到某路径的文件内,而不care 路径 文件 存不存的问题。在其他语言比较容易实现。而在node中,就有点麻烦了,因为writeAPI成功的条件是路径必须存在,而路径在node老版本的情况下又要一层层往下创建。在node 10之后有递归创建路径了。这里就是基于该特性写了一个...原创 2019-07-12 17:50:16 · 15827 阅读 · 0 评论 -
JavaScript 对象深浅复制
最近使用使用微信推送模板消息时,数据都是通过固定的模板消息函数封装并返回, 而遇到对象浅复制的问题,导致有并发情况下,微信接口推送的是最后一个传入数据。虽然意识到了这个问题,但发现自己还没有处理过这种深复制的情况,这里整理一下,以供以后使用。如果需要代码 直接点击2.7节中 lodash库提供的接口使用,网上测评该lib的实现性能更高,在npm上的用户也非常多,可以直接用轮子。文章目录1 深...原创 2019-07-31 18:20:27 · 258 阅读 · 0 评论 -
Nodejs Buffer拼接
本文记录下最近遇到的buffer拼接问题。如果需要知道如何拼接 直接点击第二节文章目录1 背景2 buffer拼接3 buffer 截取1 背景最近有一个需求需要将缩略图和视频文件合并到一起用HTTP POST 发送给服务器,服务器解析后拆成缩略图和视频文件存储到云存储中。于是就写了下面这段代码读了读取两个文件,并相加。就实现下面这段代码。const fs = require('fs'...原创 2019-09-25 20:23:44 · 8842 阅读 · 1 评论 -
npm install全局安装找不到命令
本文前提:Linux环境1 问题背景2 问题原因3 环境变量配置(Linux)3.1 临时环境变量3.2 对当前用户有效3.3 所有账户均有效1 问题背景最近准备把supervisord替换为pm2,毕竟都是用的node,还是用node的管理工具比较好。所以按照npm 上pm2的说明尝试一波 npm install pm2 -g pm2 start ap...原创 2018-08-22 13:27:10 · 21769 阅读 · 4 评论 -
windows配置node环境及升级方法
1 官网下载 windows node 安装包官网地址:https://nodejs.org/zh-cn/ 本地安装包位置: 部门共享盘\系统应用部\SA2\webserver找到安装包2 安装node打开安装包执行安装。 在Windows上安装时务必选择全部组件,包括勾选Add to Path。 安装完成后,在Windows环境下,请打开命令提示符,然后输入node -v,...原创 2018-08-02 13:26:30 · 3165 阅读 · 0 评论 -
Node events(事件)的使用
Node events文档地址:http://nodejs.cn/api/events.html1 背景2 events3 sample3.1 Event 事件触发效果3.2 只触发一次3.3 eventEmitter的异常处理3.4 EventEmitter 类3.4.1 newListener事件3.4.2 removeListener事件3.5 取消监听器3...原创 2018-07-06 18:13:02 · 1632 阅读 · 0 评论 -
nodejs中mongodb操作
nodejs中mongodb操作参考链接: https://www.jianshu.com/p/2f54b90efe15 http://ourjs.com/detail/53ad24edb984bb4659000013 http://www.nodeclass.com/api/mongoose.html 官方文档 推荐工具:robo3t最近要在云端做一个设备可用ID管理,需要使用mongod原创 2017-12-26 11:50:33 · 1236 阅读 · 0 评论 -
nodejs连接多个mongodb数据库
nodejs连接多个mongodb数据库参考: http://blog.csdn.net/u011677050/article/details/44302093最近需要将uid生成及管理单独做成一个module,所以要将数据库独立出来。就发现一个node要链接两个数据库,而使用的方式会报错。 nodejs使用Mongoose模块操作mongodb mongoose.connect('mongod原创 2018-01-03 18:00:26 · 9269 阅读 · 2 评论 -
Nodejs 实现oauth2.0
最近需要实现REST API就涉及到授权认证的部分,最后选择对node-oauth2-server 进行封装实现。 如果需要自己编写认证机制可参考:http://cnodejs.org/topic/516774906d38277306ff5647实现基础 1 数据库mongodb 2 node-oauth2-server (node 模块) node-oauth2-server模块源...原创 2018-01-17 10:07:42 · 11394 阅读 · 4 评论 -
AWS Rekognition nodejsAPI使用
Rekognition是AWS图像识别服务API 文档: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Rekognition.html AWS提供网页端测试: https://console.aws.amazon.com/rekognition/home?region=us-east-1#/face-comparison1 配置原创 2018-02-09 17:53:48 · 1101 阅读 · 0 评论 -
nodejs 遍历文件夹
参考:http://blog.csdn.net/wangzhikui1/article/details/52200607 fs模块使用:http://www.runoob.com/nodejs/nodejs-fs.html 最近在测试各平台提供人脸功能。 用nodejs 实现读取人脸数据并册注到API平台人脸库的功能。所以就需要一个能得到某目录下所有文件的路径的实现。 code:var fs原创 2018-02-14 10:29:40 · 845 阅读 · 0 评论 -
Nodejs 发起http请求(客户端 get post put delete)
Nodejs本身自带的http模块可以支持get和post 操作,但没有找到put操作。 本文档使用的是request模块实现。主要用于测restfulAPI客户端使用。request模块文档:https://www.npmjs.com/package/request 使用前请引入request模块1 HTTP方法的基本概念Http定义了与服务器交互的不同方法,最基本的方法有4种,...原创 2018-03-14 20:17:54 · 21531 阅读 · 0 评论 -
Express中 res.json 和res.end 及res.send()
今天对某个restful API 进行测试过程发现并发性能很差,吞吐率差了非常多。结果发现是res.end 误用的情况。参考:express 官方文档 http://www.expressjs.com.cn/4x/api.html#res现在总结下 express响应中用到常用三种API:res.send() res.json()res.end()环境测试环境:express 4.14.1原创 2018-03-30 10:07:40 · 36340 阅读 · 3 评论 -
mocha测试restful API
最近在写restful API ,实在受不了用postman测试API的效果了,一怒之下翻出来原来用过的mocha。环境:服务端采用express框架编写在express package.json中加入 "devDependencies": { "mocha": "3.0.2", &a原创 2018-03-28 18:23:45 · 3158 阅读 · 0 评论 -
mongodb自动删除过期数据(nodejs)
1 实现原理(TTL索引)TTL索引是一些特殊的索引,MongoDB可以在一段时间后使用它自动从集合中删除文档。这对于某些类型的信息比如机器生成的事件数据,日志和会话信息是合适的,因为这些信息只需要在有限的时间内保留在数据库中。官方文档:https://docs.mongodb.com/manual/tutorial/expire-data/1.1 mongodb内部实现原理一个特殊的TTL索引属性原创 2018-04-23 16:43:29 · 4192 阅读 · 0 评论 -
Nodejs检测时间合法性(YYYY-MM-DD HH-MM-SS)
最近需要提供restful API用于提供某时间范围内的数据查询。 即get请求带有startdate 和 enddate这两个参数,所以涉及到需要对日期是否合法进行check 参数形式为:YYYY-MM-DD HH-MM-SS[TOC]1 正则表达式一开始考虑用正则表达式匹配,但发现用正则表达式(check年月日)实现特别复杂,所以就没有采用该方式.2 使用new Date的...原创 2018-05-11 09:27:59 · 3624 阅读 · 0 评论 -
Nodejs log方案(log4js)
测试API发现一些问题,为了保证不输出太多的log,server正常处理时,并没有记录相关信息。 发现需要一种支持日志级别的log系统来完成log,而不是简单的使用node自带的log函数。经过查阅资料选择了log4js这种方案。官方文档:https://log4js-node.github.io/log4js-node 参考链接:https://www.cnblogs.com/atp-s...原创 2018-05-15 20:04:49 · 11569 阅读 · 2 评论 -
nodejs 邮件服务(网易126邮箱为例)
最近需要实现有个邮箱验证和重置密码的服务,涉及到邮件发送的问题,团队其他成员实现了,自己学习下实现并记录下过程。采用模块:nodemailer 模块官网:https://nodemailer.com/about/ license:MIT 测试环境:ubuntu(Tencent cloud)1. 使用npm install nodemailer 安装使用该模块发送邮件有以下...原创 2018-05-30 19:11:16 · 7527 阅读 · 2 评论 -
AWS DynamoDB 常用操作
在上篇blog 简单介绍了 DynamoDB 初步使用。但DynamoDb实际上使用与mongodb 有很大差异,这里自己用到一些操作方式(查询 更新 批量删除)做一些说明。所有操作均基于:nodejs aws-sdk 上篇blog 链接:https://blog.csdn.net/m0_37263637/article/details/80501548 关于AWS Dynamdb 操...原创 2018-05-31 13:55:42 · 8894 阅读 · 0 评论 -
JavaScript中避免回调地狱方法
在使用JavaScript时,为了实现某些逻辑经常会写出层层嵌套回调函数,如果嵌套过多,会极大影响代码可读性和逻辑,这种情况也被成为回调地狱(callback hell)。我们不能一直容忍这种code存在在代码中。1 什么是回调地狱(callback hell)2 如何避免2.1 解决回调嵌套问题(ES6 promise)2.2 ES6 co/yield方案2.2.1 什么是G...原创 2018-06-20 10:03:28 · 8031 阅读 · 1 评论 -
nodejs生成uid
nodejs生成uid1.安装node-uuid模块npm install node-uuid 或在package.json中dependencies下添加 “node-uuid” :”1.4.8”,npm install2 使用var uuid = require('node-uuid');var uid = uuid.v1();var uidv4 = uuid.v4();console.原创 2017-12-22 15:19:38 · 4639 阅读 · 0 评论