JavaScript
文章平均质量分 74
多比熊
这个作者很懒,什么都没留下…
展开
-
JavaScript 链表
这是因为链表是一种动态的数据结构,不同于数组的是,链表分配内存空间的灵活性,它不会像数组一样被分配一块连续的内存。当你想在数组的任意位置,插入一个新值的时候,必须对数组中的各个元素进行相应的位置移动才能达到目标,开销显然是很大的。然而链表的灵活性在于它的每个元素节点分为两部分,一部分是存储元素本身,另一部分是指向下一个节点元素的引用,也可以称为指针,当你要插入数据时,把上一个节点的向下指针指向新数据节点,新数据节点的向下指针指向原有数据。众所周知,数组的查询比链表快,但插入比链表慢。原创 2023-05-11 15:38:54 · 740 阅读 · 1 评论 -
JavaScript 损失精度的问题和解决方案
也可以使用第三方库,比如Math.js或者Bignumber.js等。他们内部的实现原理也是将小数先转换成拆分两个字符串,然后计算小数部分的字符串的长度,然后利用这个长度将小数变成整数。这是因为在实际的运算过程中,js会把0.1+0.2当作二进制来运算,所以实际上是这样的。那么为了解决损失精度的问题,我们可以先转换成整数再进行运算。比如0.1+0.2应等于0.3,但实际上却等不是如此。原创 2023-05-11 12:20:59 · 109 阅读 · 0 评论 -
AWS-CDK的实践和应用
aws-cdk由aws提供,用代码编写的方式构建可靠,可扩展,高效的应用程序,它的优点有用自定义代码的方式运行aws资源使用参数,条件,组合等编程习惯构建aws资源使用代码审查,单元测试的方式,让aws资源部署和运行更加稳健使用更简单的api对接方式来完成aws资源的操作技术团队间更容易了解和分享公司的aws架构。原创 2022-11-10 18:48:55 · 1110 阅读 · 0 评论 -
Dynamodb 备份方案
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(仅有把抱怨环境的心境,化为上进的力量,才是成功的保证。——罗曼·罗兰)ㅤㅤㅤㅤㅤㅤ。原创 2022-11-10 18:27:07 · 476 阅读 · 0 评论 -
Dynamodb 备份策略
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(成功的唯一秘诀——坚持最终一分钟。——柏拉图)ㅤㅤㅤㅤㅤㅤ。原创 2022-11-10 18:16:55 · 395 阅读 · 0 评论 -
node-rsa公钥私钥加密解密
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(要知道对好事的称颂过于夸大,也会招来人们的反感轻蔑和嫉妒。——培根)ㅤㅤㅤㅤㅤㅤ。原创 2022-11-10 18:00:22 · 1876 阅读 · 0 评论 -
NodeJs递归遍历
NodeJs递归遍历原创 2022-06-17 19:09:00 · 536 阅读 · 0 评论 -
moment.js 时区转换
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(真正的人生,只有在经过艰难卓绝的斗争之后才能实现。——塞涅卡 )ㅤㅤㅤㅤㅤㅤ根据本地时区 将传入的中国时间戳转换为标准的格林威治时间戳// 将传入的中国时间戳 转换为格林威治时间戳transferTimeStamp(time){ // 中国时区 const chinaOffset = 8; // 目标时间 同一个时间在不同地区中的时间戳不同 const defaultTime = time * 1000; //1626364800原创 2021-11-29 15:50:27 · 2473 阅读 · 0 评论 -
Docker安装Apollo
什么是ApolloApollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。Apollo支持4个维度管理Key-Value格式的配置:application (应用)environment (环境)cluster (集群)namespace (命名空间)同时,Apollo基于开源模式开发,开源地址:https://github.com/.原创 2021-09-29 11:58:24 · 3145 阅读 · 5 评论 -
TypeScript和JavaScript 23种设计模式
活得快乐的最重要因素是人生有事干、有人可去爱,以及生命中有所冀望。——约瑟夫·艾迪生单例模式原型模式简单工厂模式工厂方法模式抽象工厂模式单例模式单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。单例模式的特点单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问原创 2021-05-23 19:58:09 · 598 阅读 · 0 评论 -
设计模式七大原则
(你要尽全力保护你的梦想。那些嘲笑你梦想的人,因为他们必定会失败,他们想把你变成和他们一样的人。 —《当幸福来敲门》)开放封闭原则里氏替换原则依赖倒置原则单一职责原则接口隔离原则最少知识原则合成复用原则软件设计七大原则参考文章开放封闭原则开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:原创 2021-05-14 22:40:29 · 158 阅读 · 4 评论 -
Nodejs (fallingback to source complie with node node-gyp)
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(一个人几乎可以在任何他怀有无限热忱的事情上成功。——查尔斯·史考伯)ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ最近博主在服务器上下载nojieba npm包的时候,报了以下错误查阅了相关资料后,终于找到了解决方案github issue问题https://github.com/nodejs/node-gyp/issues/454 npm 官方解释https://docs.npmjs.com/misc/config#unsafe原创 2020-06-01 22:36:23 · 357 阅读 · 0 评论 -
Nodejs OS操作系统模块
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(乐观的人在每个危机里看到机会,悲观的人在每个机会里看见危机。——邱吉尔)ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤNodejs version v14.1.0os 模块提供了与操作系统相关的实用方法和属性返回操作系统特定的行末标志/** * @method os.EOL * @return 返回操作系统特定的行末标志 *...原创 2020-05-02 16:40:41 · 936 阅读 · 0 评论 -
Nodejs V8虚拟机
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(人的理想志向往往和他的能力成正比。——约翰逊)ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤv8虚拟机的历史...原创 2020-04-25 21:55:59 · 4452 阅读 · 0 评论 -
Nodejs memory内存管理
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(乐观的人在每个危机里看到机会,悲观的人在每个机会里看见危机。——邱吉尔)ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ什么是内存?这是一个特别宽泛的问题,每一个编程领域的都可能会有不同的回答,尤其是对Nodejs这种提供JS运行时的平台来说,稍有不慎就可能造成内存溢出。在node中,64位系统只能使用1.4g内存,而32位系统只能使用0....原创 2020-04-05 00:11:35 · 1832 阅读 · 0 评论 -
TypeScript 高级类型用法
@event 高级类型核心keyof和in@description keyof产生联合类型,in则可以遍历枚举类型/ 测试数据const chunk = { _id: '5d9959be7895f045ca81c0e8', name: 'zzw', dayId: '1575129600', count: 2};let chunks = [ {...原创 2019-12-29 19:07:51 · 1063 阅读 · 0 评论 -
$setOnInsert mongodb更新添加操作符
$setOnInsert:如果该字段值存在,则忽略,否则添加假设现在有一需求,需要统计账户的每天点击次数并入库,只需要更新count,不需要更新账户信息 const query = { //定义过滤条件 account: "820465323", create_time: "2019-12-1", }; const upda...原创 2019-12-01 13:41:06 · 534 阅读 · 0 评论 -
mongodb更新字段自增
$inc:mongodb自更新操作符,如果值是数字则运算,否则报异常假设现在有一需求,需要统计账户的每天点击次数并入库 const query = { //定义过滤条件 account: "820465323", create_time: "2019-12-1", }; const update = { // 定义更新数据...原创 2019-12-01 13:33:58 · 2219 阅读 · 0 评论 -
什么是JavaScript闭包?
顾名思义,所谓闭包就是**“封闭的包裹**”,意味着对外隐藏包裹内容。为什么需要了解闭包?对于任何一个JavaScript开发者来说,理解闭包可以看做是另一种意义上的重生。闭包是纯函数编程语言的一个特性,因为它大大简化复杂的操作,所以很容易在一些JavaScript库以及其他高级代码中找到闭包的使用。并且这是个在JavaScript中经常谈论到的问题,被问及到什么是闭包,如果你无法回答,那...原创 2019-09-10 17:50:56 · 283 阅读 · 0 评论 -
NodeJs-Express框架异常处理机制
官方文档转载 2019-09-11 13:35:57 · 607 阅读 · 0 评论 -
NodeJs 安全设计规范
CSRF攻击什么是CSRF?跨站请求伪造,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性一个网页通常会通过POST/PUT/DELETE请求更改对应用户...原创 2019-09-11 16:01:19 · 553 阅读 · 0 评论 -
moment截取某时间段每个月或每天的开始时间和结束时间
//先安装moment//npm i moment//再安装Lodash,可以用它内部封装好的方法,简单实用//npm i lodashconst moment = require("moment");const _ = require("lodash");//假设需要查询2019-06-25至2019-12-31号之间每一天的00:00至23:59这个时间段的数据//将时间转换为m...原创 2019-06-25 16:06:35 · 11658 阅读 · 4 评论 -
使用redis+cookie做单点登录(node+express)
单点登录的实现方式有很多种,在这里博主就先使用了简单的cookie+redis做了一个单点登录注:没有绝对的安全,所以我们加强验证,增加攻击者攻破的难度我的思路是这样的1:首先用户输入账号密码登录后在数据库进行对比2:账号密码错误重新登录,账号密码正确则进行下一步3:cookie在同一个浏览器中是共享的,在用户登录成功之后,我们使用加密算法进行加密混淆形成一个token存入cookoie...原创 2019-01-28 14:39:02 · 2517 阅读 · 0 评论 -
NodeJs 异步非阻塞
一般来说,高并发的解决方案就是提供多线程模型,服务器为每个客户端请求分配一个线程,使用同步 I/O,系统通过线程切换来弥补同步 I/O调用的时间开销。比如 Apache 就是这种策略,由于 I/O一般都是耗时操作,因此这种策略很难实现高性能,但非常简单,可以实现复杂的交互逻辑。而事实上,大多数网站的服务器端都不会做太多的计算,它们接收到请求以后,把请求交给其它服务来处理(比如读取数据库),...原创 2019-09-09 18:42:58 · 1335 阅读 · 0 评论 -
JavaScript中原型和原型链的解析
原型和原型链解析在JavaScript中,万物皆对象,分为普通对象和函数对象两部分。const obj_1 = {};const obj_2 = new Object();function fun_1();const f2 = function fun_2(){};const f3 = new Function();其中 obj_1和obj_2都是普通对象,fun_1,fun_2...原创 2019-08-18 15:51:42 · 293 阅读 · 0 评论 -
Docker集成OnlyOffice,并使用node服务访问
Worktile - onlyOffice模块使用环境搭建1.下载docker并安装(Docker官网有安装教程)2.拉取onlyOffice镜像sudo docker pull onlyoffice/documentserver3.启动Docker容器 8080端口号sudo docker run -i -t -d -p 8080:80 onlyoffice/documentserv...原创 2019-03-19 16:37:37 · 2488 阅读 · 0 评论 -
如何判断参数中是否包含数字
//首先我们定义两个字符串const str = "1553356800";const str2 = 'adsadasdasd'const num = /[0-9]/; //利用正则表达式的test方法检测参数中是否包含指定参数console.log(num.test(str2)); //结果为falseconsole.log(num.test(str)); //结果为true...原创 2019-03-19 16:18:17 · 503 阅读 · 1 评论 -
字符串以某符号分割添加到数组并使用mongodb的$in查询
今天遇到了一个很头疼的问题,就是讲客户端传递来的伪数组参数进行查询操作比如这样:“5b4d57d4960cfb0cfa6aea69,5b4d6a21960cfb0cfa6aea76,5b4db130960cfb0cfa6aea7d”这是一个字符串,在我们添加到数组中,它就是一个元素,楼主也不是大牛,于是尝试了各种方法,toString()转字符串再在头尾添加单引号’’,但很可惜的是,再重新...原创 2019-03-19 16:10:14 · 1538 阅读 · 0 评论 -
Noejs CommonJS模块机制
首先,在node出现之前,JavaScript服务端是没有市场的,与欣欣向荣的前端JavaScript相比,JavaScript基本只是脚本程序,但经过十多年的发展之后 ,提出了CommonJS规范。那么,什么是CommonJS模块规范呢?主要分为三大类:其一:模块引用const request = require(‘request’);在CommonJS中,存在require方法,这...原创 2019-03-10 20:15:14 · 330 阅读 · 0 评论 -
JavaScript中常用for循环区别(for,for in,for of,map,foreach)
大家都知道JS中的常用遍历数组的方式有for , fo in,for of , map ,foreach,但他们之间的区别是什么呢,在这里博主进行了一个区分:一:for循环,最常用的循环,也是写起来较为麻烦的,以分号相隔开,第一个参数是初始变量,第二个参数是判断条件,第三个参数是步长for(let i = 0;i<0;i++){但还可以进行优化,因为每次都要判断长度毫无疑问的浪费了性...原创 2019-02-19 15:54:19 · 1039 阅读 · 2 评论 -
Nodejs socketIO
//前端部分<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"&原创 2019-01-16 17:29:01 · 659 阅读 · 0 评论 -
模拟并发访问量
首先在官网中下载nodehttps://nodejs.org/zh-cn/下载安装完成后,在编辑器中创建js文件编写模拟访问代码//在这里我们使用npm库中的 autocannon 工具'use strict' const autocannon = require('autocannon') autocannon({ url: 'http://localhost:3000',...原创 2019-01-09 18:47:56 · 1107 阅读 · 0 评论 -
在node中,中文转拼音排序
首先npm i transliteration 下载该资源const transliteration = require('transliteration');//假设现在的需求是根据中文pinyin进行排序后将数据返回页面 //从数据库查询的假数据 let testArr = [ {name:"中国",sex:"男"}, {name:"中方",sex:"男"...原创 2019-01-08 16:02:29 · 1729 阅读 · 2 评论 -
如何判断是否传入ObjectId?(mongodb/mongoose)
const checkForHexRegExp = new RegExp('^[0-9a-fA-F]{24}$');isObjectId(id) { var self = this; if (_.isEmpty(id)) { return false; } if ('number' === typeof id...原创 2019-01-08 15:25:46 · 1409 阅读 · 1 评论 -
Nodejs fs模块的基本使用
/**NodeJS 中,标识位代表着对文件的操作方式,如可读、可写、即可读又可写等等,在下面用一张表来表示文件操作的标识位和其对应的含义。符号 含义r 读取文件,如果文件不存在则抛出异常。r+ 读取并写入文件,如果文件不存在则抛出异常。rs 读取并写入文件,指示操作系统绕开本地文件系统缓存。w 写入文件,文件不存在会被创建,存在则清空后写入。wx 写入文件,排它方式打开。w+ ...原创 2019-03-25 14:53:28 · 338 阅读 · 0 评论 -
Nodejs busBoy和fs模块完成文件的上传
首先我们需要去下载express 用于路由的访问busboy 用于解析接受的参数fs 用于创建可写入的流const app = require('express')();const Busboy = require('busboy');const fs = require('fs');app.post('/testBuyBoy', (req, res, next) => {...原创 2019-03-25 17:14:21 · 1298 阅读 · 0 评论 -
JS的多种继承方式和多继承
//JS中的继承/** * @event 原型链实现继承 * @description 利用原型让一个引用类型继承另一个引用类型的属性和方法,就是让一个原型对象等于另一个类型的实例 * @question 不能向父类的构造函数传递参数 */function father() { this.name = "父亲";};father.prototype.method = f...原创 2019-08-16 15:42:58 · 632 阅读 · 0 评论 -
Nodejs promise的串行和并行
const mongoose = require('mongoose');mongoose.connect('mongodb://localhost/user', { useNewUrlParser: true });const model = mongoose.model('user', mongoose.Schema({ username: { type: String }, ...原创 2019-08-19 16:35:04 · 750 阅读 · 0 评论 -
node验证码svg-captcha的使用和扩展,支持数学公式!支持中文!
npm地址但官方提供的方法比较单一,情况复杂则需要看源码;接下来,让我们对源码进行解析,完成更复杂的验证码官方验证码支持两种1:传统的图形验证码 //随机背景颜色 let random = 0; const aryNum = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C",...原创 2019-08-04 10:28:23 · 1749 阅读 · 0 评论 -
Nodejs pdfkit导出并支持中文
var express = require('express');var router = express.Router();const PdfKit = require("pdfkit");const fs = require("fs");const { Writable } = require("stream");//引入stream中间件内置的写入流方法router.get('/t...原创 2019-07-14 16:26:57 · 3849 阅读 · 4 评论