Posts
All the articles I've posted.
结构化日志
Published: at 16:00在一个健壮的项目中,日志是必不可少的。而格式化的日志更有助于我们快速检索日志,更快的找到性能瓶颈,更快的解决线上故障。 如果在 nodejs 环境中,推荐 $1 作为日志库 在所有关于日志的组件/函数库中都会有 level 的属性。它表示日志的紧急程度。一般会分为以下几个等级 + error : 线上第一时间需要解决的问题 + warn
Body Parse / Raw Body
Published: at 16:00在 Node Server 中, HTTP Request 基于 Readable Stream ,我们可以通过读取可读流的方式,将原始请求体读取出来。 简单粗暴的解析代码如下: 我们知道,为了节省带宽,在针对静态资源进行部署时,往往会做 gzip/brotli 的压缩。 从浏览器发的请求来看,也会有经过压缩的内容,此时在服务器端需要先把
浏览器跨域问题与服务器中的 CORS 配置
Published: at 16:00跨域,这或许是前端面试中最常碰到的问题了,大概因为跨域问题是浏览器环境中的特有问题,而且随处可见,如同蚊子不仅盯你肉而且处处围着你转让你心烦。你看,在服务器发起 HTTP 请求就不会有跨域问题的。当谈到跨域问题的解决方案时,最流行也最简单的当属 CORS 了。
如何调试 node.js 源码
Published: at 16:00node.js 源码托管在 $1。 通过以下命令对 node.js 源码进行编译。 **等待的时间较长,需要一顿吃火锅的功夫。** 源码编译之后会生成 ./out 目录,在根目录中会生成可执行命令行工具 node 与 node_g ,指向 ./out 中的符号链接。 **使用 node_g 替代全局的 node ,可对源码进行调试。**
Node 中异常上报与监控
Published: at 16:00date: 2018-07-18 21:00 --- 在一个后端服务设计中,异常捕获是必不可少需要考虑的因素 **而当异常发生时,能够第一时间捕捉到并且能够获得足够的信息定位到问题至关重要** 这也是本篇文章的内容 刚开始,先抛出两个问题 1. 在生产环境中后端连接的数据库挂了,是否能够第一时间收到通知并定位到问题,而不是等到用户反馈之后
Node 中的事件循环
Published: at 16:00> 你只能看到你想看到的观点,面试官只想听到他所背会的面试题 ##
Node 脚本异常时如何安全退出
Published: at 16:00最近观察项目镜像构建,会偶尔发现一两个镜像虽然构建成功,但容器却跑不起来的情况。
一个简单的 HTTP Server
Published: at 16:00> 本文涉及到的核心模块: > > + http > + stream > + buffer > + zlib: (间接设计) > > 本文涉及到以下库及模块: > + $1: 解析 MIME TYPE > + $1 > + $1: 用以解析 URL。同时也可使用原生模块 url。 > + $1: 用以接续 querystring。同时也
Node 应用中如何进行参数校验
Published: at 16:00服务器应用中参数校验是不可或缺的一步,那么在 Node 中如何进行参数校验呢
日志的收集
Published: at 16:00+ filebeat
Node 做服务端开发的那些事儿
Published: at 16:00Node 做服务端开发时,你要了解的这些事 + $1 + [Node实践语法篇: 当导入一个 module 时都做了什么]() + $1 + $1 + $1 + $1 + $1 + $1 TODO: + $1 TODO: + $1 + $1 TODO: + $1 TODO: + $1 + $1 + $1 TODO: + $1 TODO:
Node 中的 require 与 module
Published: at 16:00在 `node` 环境中,有两个内置的全局变量无需引入即可直接使用,并且无处不见,它们构成了 `nodejs` 的模块体系: `module` 与 `require`。
在 Node 中引入一个模块时发生了什么
Published: at 16:00(function(exports, require, module, __filename, __dirname) { // 所有的模块代码都被包裹在这个函数中 const fs = require('fs') const _ = require('lodash') }); js require('internal/modules/cj
sentry
Published: at 16:00Stream
Published: at 16:001. 服务器中的 HTTP Request 1. 客户端中的 HTTP Response 1. 标准输出 stdout + destroy + finish + error + WritableState / + needDrain + buffered + Symbol(KHandler) + res._removeTE / res.c
Stringify: Node 服务端序列化及反序列化优化
Published: at 16:00> https://github.com/fastify/fastify/blob/main/docs/Validation-and-Serialization.md fast-json-stringify https://npm.devtool.tech/json-stringify-safe 在服务端向客户端发送数据时,需要把梳理好的
网站性能中图片体积优化最佳实践
Published: at 16:00以实践为主,以理论为辅。 + $1: 把文件转化为 Base64 URL 1. 图片在网站中占比过大 1. 图片优化及其简单 1. 面试有用,性价比高 + [](https://web.dev/fast/#optimize-your-images) https://github.com/tigt/mini-svg-data-uri
写在 2021 的前端性能优化指南总结
Published: at 16:00我们把性能优化的方向分为以下两个方面,有助于结构化的思考与系统分析。 1. 加载性能。如何更快地把资源从服务器中拉到浏览器,如 http 与资源体积的各种优化,都是旨在加载性能的提升。 1. 渲染性能。如何更快的把资源在浏览器上进行渲染。如减少重排重绘,rIC 等都是旨在渲染性能的提升。 + LCP: 加载性能。最大内容绘制应在 2.5s
报文
Published: at 16:00$ arp -a ? (172.17.68.40) at ee:ff:ff:ff:ff:ff [ether] on eth0 ? (10.244.0.3) at 32:df:1c:fa:4e:cc [ether] on cni0 gateway (172.17.79.253) at ee:ff:ff:ff:ff:ff [ether] on
DNS (Domain Name System) 解析
Published: at 16:00DNS 用来解析域名所对应的 IP 地址。 > 我们要以命令洞见整个流程 DNS 协议属于应用层协议,使用 dig 命令可以发送一条 DNS 报文。既然它在进行域名解析时实质是发送了一条 DNS 的报文,那首先来简单看看报文格式 > dig: DNS lookup utility > https://www.thegeekstuff.co