2022目标
回归2021,一直沉迷于平静。有很多遗憾,比如软考、职业生涯的选择、第一次创业的失败等等。感觉一旦决定了就要奔想目标前进,不要存在一丝堕落。
技术的进步
事业的成功
在意的人平安健康,生活顺顺利利
新的2022,追求技术的进步,创业的成功。永不言弃,放弃犹豫
nodejs 14 特性 实验性异步本地存储API
Node.js Async Hooks 模块提供了 API 用来追踪 Node.js 程序中异步资源的声明周期,在最新的 v14.x LTS 版本中新增加了一个 AsyncLocalStorage 类可以方便实现上下文本地存储,在异步调用之间共享数据,对于实现日志链路追踪场景很有用。
下面是一个 HTTP 请求的简单示例,模拟了异步处理,并且在日志输出时去追踪存储的 id。
1234567891011121314151617181920const http = require('http');const { AsyncLocalStorage } = require('async_hooks');const asyncLocalStorage = new AsyncLocalStorage();function logWithId(msg) { const id = asyncLocalStorage.getStore(); console.log(`$ ...
nodejs 14 特性 Intl.DateTimeFormat(国际化处理日期时间格式)
Intl.DateTimeFormat API 用来处理特定语言环境的日期格式。
1234567891011121314151617const date = new Date();// Sunday, January 10, 2021 at 9:02:29 PM GMT+8new Intl.DateTimeFormat('en-US', { dateStyle: 'full', timeStyle: 'long'}).format(date)// 21/1/10 中国标准时间 下午9:02:29.315new Intl.DateTimeFormat('zh-CN', {year: '2-digit',month: 'numeric',day: 'numeric',hour: 'numeric',minute: 'numeric',second: ...
nodejs 14 特性 Intl.DisplayNames
Intl.DisplayNames(国际化显示名称)对于国际化应用需要用到的语言、区域、货币、脚本的名称,现在 JavaScript 开发者可以使用 Intl.DisplayNames API 直接访问这些翻译,使应用程序更轻松的显示本地化名称。
Language(语言)1234567let longLanguageNames = new Intl.DisplayNames(['zh-CN'], { type: 'language' });longLanguageNames.of('en-US'); // 美国英语longLanguageNames.of('zh-CN'); // 中文(中国)longLanguageNames = new Intl.DisplayNames(['en'], { type: 'language' });longLanguageNames.of('en-U ...
nodejs 14 特性 Nullish Coalescing(空值合并)
逻辑或操作符(||)会在左侧为假值时返回右侧的操作符,例如我们传入一个属性为 enabled:0 我们期望输出左侧的值,则是不行的。
1234function Component(props) { const enable = props.enabled || true; // true}Component({ enabled: 0 })
现在我们可以使用 空值合并操作符(??)来实现,仅当左侧为 undefined 或 null 时才返回右侧的值。
12345function Component(props) { const enable = props.enabled ?? true; // 0}Component({ enabled: 0 })
参考:https://v8.dev/features/nullish-coalescing
nodejs 14 特性 Optional Chaining(可选链)
如果我们使用 JavaScript 不管是用在前端或者 Node.js 服务端都会出现如下情况,因为我们有时是不确定 user 对象是否存在,又或者 user 对象里面的 address 是否存在,如果不这样判断, 可能会得到类似于 Cannot read property ‘xxx’ of undefined 这样的类似错误。
12345678910111213const user = { name: 'Haley', address: { city: 'GuangZhou' }}optionalChaining(){ if (this.user.address.city1.length > 0){ alert("原先写法触发"); }}
现在我们有一种优雅的写法 “可选链操作符”,不必明确的验证链中的每个引用是否有效,以符号 “?.” 表示,在引用为 null 或 undefined 时不会报错,会 ...
nodejs 14 特性 诊断报告
诊断报告用法在 Node.js 中使用诊断报告快速追踪问题
参考
https://nodejs.org/dist/latest-v12.x/docs/api/report.html
https://ibm.github.io/report-toolkit/quick-start
https://developer.ibm.com/technologies/node-js/articles/introducing-report-toolkit-for-nodejs-diagnostic-reports
nodejs 14 特性
Node.js 14版本于近日正式发布, 此版本包含的亮点如下:
对诊断功能的改进
升级v8引擎
可选链
Nullish合并
Intl.DisplayNamess
Intl.DateTimeFormat(国际化处理日期时间格式)
新增实验性的异步本地存储API
强化流API
移除实验性模块中的警告
移除一部分早期版本中废弃的API
ERRO Parallel golangci-lint is running
GolangCI-Lint是一个lint聚合器,它的速度很快,平均速度是gometalinter的5倍。它易于集成和使用,具有良好的输出并且具有最小数量的误报。而且它还支持go modules。最重要的是免费开源。1ERRO Parallel golangci-lint is running
源码中发现用来是golangci-lint.lock文件获取锁失败,可能权限不够。新建此文件后在使用
数据库慢查询 - count
场景在业务处理过程中,在表数据量庞大的情况下。我们会需要一个问题就是分页/获取总数的情况。其中一查有的同学就会知道时不时出现个慢查询的警报,头疼不已。你肯定想屏蔽群了。
方案
show table status - 针对不太要求实时性
分页不展示总数,具体可参数谷歌分页做法