大家好,又见面了,我是你们的朋友全栈君。 \r与\n到底有何区别,编码的时候又应该如何使用,我们下面来了解一下。...区别: \r:全称:carriage return (carriage是“字车”的意思,打印机上的一个部件) 简称:return 缩写:r ASCII码:13 作用:把光标移动到当前行的最左边 \n:...\r没什么意义 Windows、DOS:\r\n表示回车+换行,顺序不能变 Mac:\r表示回车+换行 历史: 机械的英文打字机:在打字机上,有一个部件叫“字车”(carriage),每输入一个单词,“...后来这两个动作被缩写为“\r”和“\n”。...编程语言中如何使用: 因为Unix中是用“\n”表示一行的结束,所以在C语言(以及其他C语言的继承者,比如C++, Java)中可以直接使用“\n”,在不同的操作系统中会被自动转换成相应的字符(比如在Windows
在使用异或交换数组值的时候,可以使用异或,不用临时变量。...但是这个方法当i与j相等时,相当于始终对一个数自己进行异或,我们知道两个一样的数异或结果为0 假如i==j 则 a[i] = a[i] ^ a[j]; //结果为0 则此时a[i]=a[j]=0 a[
最近忙成狗了,很少挤出时间来学习,大部分时间都在加班测需求,今天在测一个需求的时候,需要对比数据同步后的数据是否正确,因此需要用到json对比差异,这里使用deepdiff。...一般是用deepdiff进行对比的时候,常见的对比是对比单个的json对象,这个时候如果某个字段的结果有差异时,可以使用exclude_paths选项去指定要忽略的字段内容,可以看下面的案例进行学习:...那么如果数据量比较大的话,单条对比查询数据效率比较低,因此,肯呢个会调用接口进行批量查询,然后将数据转成[{},{},{}]的列表形式去进行对比,那么这个时候再使用exclude_paths就无法直接简单的排除某个字段了...从上图可以看出,此时对比列表元素的话,除非自己一个个去指定要排除哪个索引下的字段,不过这样当列表的数据比较多的时候,这样写起来就很不方便,代码可读性也很差,之前找到过一个用法,后来好久没用,有点忘了,今晚又去翻以前写过的代码记录...,终于又给我找到了,针对这种情况,可以使用exclude_regex_paths去实现: 时间有限,这里就不针对deepdiff去做过多详细的介绍了,感兴趣的小伙伴可自行查阅文档学习。
/db.json", "r", (err, fd) => { if (err) throw err; // 文件操作... // 完成操作后,关闭文件 fs.close(...它们返回 Promise 对象而不是使用回调。 API 可通过 require('fs').promises 访问。如此一来,开发成本更低了。...不建议在调用 fs.open()、 fs.readFile() 或 fs.writeFile() 之前使用 fs.stat() 检查文件是否存在。...而是应该直接打开、读取或写入文件,如果文件不可用则处理引发的错误。 要检查文件是否存在但随后并不对其进行操作,则建议使用 fs.access()。...ReadStream 与 WriteStream 在 nodejs 中,stream 是个非常重要的库。很多库的 api 都是基于 stream 来封装的。
我们可以看到 JS 语言正变得越来越严谨,不同规范间也逐渐完成了闭环,而且在不断吸纳其他语言的优秀特性,比如 WeakRef,让 JS 在成为使用范围最广编程语言的同时,也越成为编程语言的集大成者,让我们有信心继续跟随...#count++; } } 通过 # 修饰的成员变量或成员函数就成为了私有变量,如果试图在 Class 外部访问,则会抛出异常: const counter = new IncreasingCounter...n,就可以正确计算大数了: 1234567890123456789n * 123n; // -> 151851850485185185047n 目前 BigInt 已经被 Chrome、Firefox...fromEntries fromEntries 是 Object.fromEntries 的语法,用来将对象转化为数组的描述: const object = { x: 42, y: 50, abc: 9001...Promise.allSettled(promises); 即便某个 fetch 失败了,也不会导致 reject 的发生,这样在不在乎是否有项目失败,只要拿到都结束的信号的场景很有用。
console.log(newNumbers); // [1, 2, 99, 4, 5] - 新数组 ES2022:类字段与顶层异步的突破 这一年的更新重点改进了类的封装性和模块化异步编程,大大提升了代码的组织结构.../endpoint-1').then(r => r.json()), fetch('https://api.example.com/endpoint-2').then(r => r.json()...), fetch('https://api.example.com/endpoint-3').then(r => r.json()), ]; // 只要有一个成功就返回 Promise.any...处理 null 或 undefined 时的默认值(React 和 Vue 开发的得力助手) const foo = null; const bar = foo ??...(r => r.json()), fetch('/api/broken-endpoint').then(r => r.json())]; Promise.allSettled(promises).then
当你第一次学习编码时,重复和语境化是必不可少的。通过不断的重复,你开始记住词汇和语法。通过项目开发,你能够理解如何以及为什么使用不同的功能和技术,并开始看到在不同的上下文环境中如何使用的代码。...“)要求您了解print函数的工作原理、编辑器如何返回print语句以及何时使用引号。当你学习第二种编程语言时,你可以将你所知道的语言中的概念翻译成新的语言,从而更有效、更快地学习。...Python和R之间有着无限的相似性,而且这两种语言都是您可以使用的,您可以用最好的方式解决挑战,而不是将自己限制在工具库的一半。 下面是一个连接R和Python的简单指南,便于两者之间的转换。...通过建立这些连接、反复与新语言交互以及与项目的上下文化,任何理解Python或R的人都可以快速地开始在另一种语言中编程。 基础 可以看到Python和R的功能和外观非常相似,只是语法上的细微差别。...虽然大多数数据科学家倾向于使用一种语言或另一种语言,但是在这两种语言中都能很好地使用最适合您需要的工具。
最近有一个需求连续对数据库进行一系列的操作,云开发数据库的性能抖动一下就被放大了,函数经常性的运行超时,这就不能忍了,因为数据量本来也不算大,动起了用nodejs的嵌入式数据库的歪心思。...,5.0.3以上的版本需要用node11或者node8的环境来构建层才能让层使用v3的版本,不过就算这样也没用,5.0.3和更高的版本上需要的libm.so.6 和 libstdc++.so.6版本都超过了云函数运行环境的版本...-rf node_modules package-lock.json package.json复制这样就能得到一个5.0.2版本的sqlite3的层:sqlite_502_node16.zip测试一下...`); let promises = []; for(let i=0;in;i++){ promises.push(new Promise(res=>{...-v "$PWD":/var/task lambci/lambda:build-nodejs12.x npm install better-sqlite3@6.0.1 --savezip -r sqlite.zip
在node项目中运行:cnpm install命令时,报出“Error:Cannot find module 'fs/promises”错误。...原因: 是Node.js版本太低导致的(也可以说是cnpm版本太高),由于低版本的Node.js对于promises的引入方式与高版本的是不一样,而cnpm版本太高的话,Node是不支持’fs/promises...-registry=https://registry.npm.taobao.org 在这里 因为要使用到vue3.0进行开发,而且在官网有说明,创建一个 Vue 应用的前提条件,已安装 16.0 或更高版本的...用n升级nodejs(建议使用此方法) # 查看当前node版本 $ node -v # 清除npm缓存 $ npm cache clean -f # 全局安装n $ npm install -g...n # 升级到最新稳定版 $ n stable # 升级到最新版 $ n latest # 升级到定制版 $ n v14.6.0 # 切换使用版本 $ n 13.10.0 (ENTER) #
都已经fulfilled或rejected后的promise,并带有一个对象数组,每个对象表示对应的promise`结果当您有多个彼此不依赖的异步任务成功完成时,或者您总是想知道每个promise的结果时...undefined、任意函数以及symbol,会被忽略(出现在非数组对象的属性值中时),或者被转换成 null(出现在数组中时)。...浅拷贝可以使用 Object.assign 和展开运算符来实现。...深拷贝对于一些对象可以使用 JSON 的两个函数来实现,但是由于 JSON 的对象格式比 js 的对象格式更加严格,所以如果属性值里边出现函数或者 Symbol 类型的值时,会转换失败(1)JSON.stringify...()JSON.parse(JSON.stringify(obj))是目前比较常用的深拷贝方法之一,它的原理就是利用JSON.stringify 将js对象序列化(JSON字符串),再使用JSON.parse
,并且在上一行已经使用了尾后逗号,你可以仅仅添加新的一行,而不需要修改上一行 5.2 注意 JSON 不允许尾后逗号 5.3 举例 字面量中的尾后逗号 a: 1,b: 2} - 数组 ```js let...currentVal: 当前数组在处理的元素 index: 可选,正在处理的元素索引 array: 可选,被调用的数组 thisArg: 执行callback函数时使用的this值 1.2.4 举例...'bar' // 'foo' 1.2 逻辑或操作符(||) 逻辑或操作符(||),会在左侧操作数为假值时返回右侧操作数,也就是说如果使用 || 来为某些变量设置默认值,可能会出现意料之外的情况。...当使用 BigInt 时,带小数的运算会被向下取整 BigInt 和 Number 不是严格相等,但是宽松相等 0n === 0 // false 0n == 0 // true BigInt 和...Number 可以比较 2n > 2 // false 2n > 1 // true BigInt 和 Number 可以混在一个数组中排序 const mixed = [4n, 6, -12n
()的polyfilString.prototype.padStart 和 String.prototype.padEnd是ES8中新增的方法,允许将空字符串或其他字符串添加到原始字符串的开头或结尾。...而此参数可能是个不确定长度的字符串,若是要填充的内容达到了目标长度,则将不要的部分截取'xxx'.padStart(5, 'sss') // ssxxx// 4..../ 取 R 的显示原型 L = L....这可以使用在一些点击请求的事件上,避免因为用户的多次点击向后端发送多次请求。...() 方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象 let object = JSON.parse(string) } } } request.send
有三个状态:Pending(进行中)、Resolved或Fulfilled(已完成)、Rejected(已失败) 其中:Pending为Promise的初始状态;当Resolved成功时,会调用onFulfilled...Resolved和Rejected时的函数调用 2....由输出结果知,1和2被resolve,3、4、5被reject,整个数组里已经有多于一个的promise对象被reject,仅仅触发了catch中的回调,所以log(6)得不到执行 Promise.race...由输出结果知,1和2被resolve,3、4、5被reject,整个数组里已经有多于一个的promise对象被resolve,触发了then中成功的回调,log(6)得到调用执行 因为这时还没有额外的then...或catch方法来监视log(6)的状态,所以仅仅输出的在log函数中执行的结果 Promise.resolve()方法 除了在实例化Promise构造函数内部使用resolve之外,我们还可以直接调用
currentVal: 当前数组在处理的元素index: 可选,正在处理的元素索引array: 可选,被调用的数组thisArg: 执行callback函数时使用的this值1.2.4 举例let arr...'bar' // 'foo'1.2 逻辑或操作符(||)逻辑或操作符(||),会在左侧操作数为假值时返回右侧操作数,也就是说如果使用 || 来为某些变量设置默认值,可能会出现意料之外的情况。...当使用 BigInt 时,带小数的运算会被向下取整BigInt 和 Number 不是严格相等,但是宽松相等0n === 0 // false0n == 0 // trueBigInt 和 Number...可以比较2n > 2 // false2n > 1 // trueBigInt 和 Number 可以混在一个数组中排序const mixed = [4n, 6, -12n, 10, 4, 0..., 0n];mixed.sort(); // [-12n, 0, 0n, 10, 4n, 4, 6]被 Object 包装的 BigInt 使用 object 的比较规则进行比较,只用同一个对象比较时才相等
最近有一个需求连续对数据库进行一系列的操作,云开发数据库的性能抖动一下就被放大了,函数经常性的运行超时,这就不能忍了,因为数据量本来也不算大,动起了用nodejs的嵌入式数据库的歪心思。...,5.0.3以上的版本需要用node11或者node8的环境来构建层才能让层使用v3的版本,不过就算这样也没用,5.0.3和更高的版本上需要的libm.so.6 和 libstdc++.so.6版本都超过了云函数运行环境的版本....zip node_modules rm -rf node_modules package-lock.json package.json 这样就能得到一个5.0.2版本的sqlite3的层: sqlite...`); let promises = []; for(let i=0;in;i++){ promises.push(new Promise(res=>{...rm -v "$PWD":/var/task lambci/lambda:build-nodejs12.x npm install better-sqlite3@6.0.1 --save zip -r
== y 的情况下,只需要判断是否为NaN,如果x!==x,则说明x是NaN,同理y也一样 // x和y同时为NaN时,返回true return x !== x && y !...图片像dom的拖拽,如果用消抖的话,就会出现卡顿的感觉,因为只在停止的时候执行了一次,这个时候就应该用节流,在一定时间内多次执行,会流畅很多手写简版使用时间戳的节流函数会在第一次触发事件时立即执行,以后每过...都已经fulfilled或rejected后的promise,并带有一个对象数组,每个对象表示对应的promise`结果当您有多个彼此不依赖的异步任务成功完成时,或者您总是想知道每个promise的结果时...flat方法题目描述: 实现一个方法使多维数组变成一维数组let ary = [1, [2, [3, [4, 5]]], 6];let str = JSON.stringify(ary);第0种处理:直接的调用...,最后返回新数组;因为它的时间复杂度是O(n^2),如果数组长度很大,效率会很低2.
== y 的情况下,只需要判断是否为NaN,如果x!==x,则说明x是NaN,同理y也一样 // x和y同时为NaN时,返回true return x !== x && y !...toString可以通过 split 和 toString 两个方法来共同实现数组扁平化,由于数组会默认带一个 toString 的方法,所以可以把数组直接转换成逗号分隔的字符串,然后再用 split...(6)正则和 JSON 方法 在第4种方法中已经使用 toString 方法,其中仍然采用了将 JSON.stringify 的方法先转换为字符串,然后通过正则表达式过滤掉字符串中的数组的方括号,最后再利用...,最后返回新数组;因为它的时间复杂度是O(n^2),如果数组长度很大,效率会很低2....都已经fulfilled或rejected后的promise,并带有一个对象数组,每个对象表示对应的promise`结果当您有多个彼此不依赖的异步任务成功完成时,或者您总是想知道每个promise的结果时
).then(r => r.text())); // Now get a Promise to run all those Promises in parallel Promise.all(promises...它返回一个 Promise,当输入数组中的 Promise 中的第一个实现或拒绝时,该 Promise 将实现或拒绝。(或者,如果输入数组中有任何非 Promise 值,则简单地返回其中的第一个。)...一旦调用,就不能再排队更多的值。当一个关闭的队列为空时,for/await循环将停止循环。) 请注意,AsyncQueue 的实现不使用async或await,而是直接使用 Promises。...回顾§7.8.3,数组的concat()方法将其this值和其数组参数与非数组参数区别对待:非数组参数简单地附加到新数组,但this数组和任何数组参数被展平或“展开”,以便将数组的元素连接起来而不是数组参数本身...在一般情况下,如果模板字面量有 n 个插入值,那么标记函数将被调用 n+1 个参数。第一个参数将是一个包含 n+1 个字符串的数组,其余参数是 n 个插入值,按照它们在模板字面量中出现的顺序。
console.log(c.n),同理,当执行var c = new C()时,c对象没有自身的n属性,向上查找,找到原型 (prototype)上的 n 属性,因为 A.n++(此时对象A中的n为4400...则序列化的结果将只得到空对象; 3、如果obj里有函数,undefined,则序列化的结果会把函数或 undefined丢失; 4、如果obj里有NaN、Infinity和-Infinity,则序列化的结果会变成...null 5、JSON.stringify()只能序列化对象的可枚举的自有属性,例如 如果obj中的对象是有构造函数生成的, 则使用JSON.parse(JSON.stringify(obj))深拷贝后...JSON.stringify(arr).replace(/[|]/g, '') 会先将数组arr序列化为字符串,然后使用 replace() 方法将字符串中所有的[ 或 ] 替换成空字符,从而达到扁平化处理...当需要在数据变化时执行异步或开销较大的操作时,应该使用watch,使用watch选项允许执行异步操作(访问一个API),限制执行该操作的频率,并在得到最终结果前,设置中间状态。
4.3 返回值 一个新的 Promise,由原始 Promise 完成时的值或原始错误传递。...currentVal: 当前数组在处理的元素 index: 可选,正在处理的元素索引 array: 可选,被调用的数组 thisArg: 执行 callback 函数时使用的 this 值 1.2.4...在先前的规范中,对于没有指定排序算法的浏览器和引擎,可能使用不稳定的排序算法。稳定排序算法会保持相等元素的原始相对顺序。...3.2 使用场景 在不同的环境中,获取全局对象有不同的方式: 在浏览器中可以使用 window 或 self 在 Web Workers 中可以使用 self 或 globalThis 在 Node.js...||=:逻辑或赋值表达式,将右侧的值赋给左侧的变量,但仅当左侧的变量在布尔上下文中为假时。 ??
领取专属 10元无门槛券
手把手带您无忧上云