1117
工作
- 新需求,正常开发
- 问题1: 项目无法启动,报错 etcd 相关问题
排查方式:
etcd 问题排查经过记录:
1-找到 etcd.url 报错的那一行
2-查看代码,取 url 有 2 种 方式: 默认设定(错误),环境变量 process.env.etcdUrl
3- 删除 env 的 etcdUrl ,重启 命令行,重新运行,搞定
这里有个问题,url 是从 环境变量 env 中拿到的,在 *inux 系统的命令行中国,直接输入 env
是可以直接显示环境变量的,但是在 windows 中是不行的;
那么,windows 如何查看 env
环境变量呢?
方法1: 既然是环境变量,那么 右键 【我的电脑】——【属性】——【高级系统变量设置】——环境变量,可以看到 【系统环境变量】和 【用户环境变量】,此时通过 关键词就能看到,我的 ETCD_URL 在 【用户环境变量】这里已经配置了旧的错误地址,删除即可;
方法2: 命令行进入 cmd
输入 node
,进入 node
环境模式,输入 process.env
即可看到环境变量;为什么要输入 process
? 因为看到代码里面是从 process.env.ETCD_URL
这样取值的。
方法3: 进入 windows 的 wsl ubuntu 子系统中,命令行内直接输入 env
即可看到
- 问题2: 输入端含有 特殊字符,Go 服务报错;
上一个需求上线,测试发现一个问题,有个活动名字为 活动名称 <img src='xxx' />
,然后在搜索框内输入 上面同名的活动名,搜索不出结果;但是 前端 接口和bff 没有报错信息;排查问题发现,在后端 ORM 中生成的 sql,对于上述特殊字符没有进行特殊处理,直接存入数据库;
实际上,上述活动名称 活动名称 <img src='xxx' />
,这里实际上是存在 XSS 攻击风险 / sql 注入的风险的;这是一个隐患,感觉得提早提出这个问题,在所有输入端,要考虑过滤特殊字符问题;
今日算法
今日学习:
今日复习:
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {boolean}
*/
var isSymmetric = function(root) {
if (!root) return true
return helper(root.left, root.right)
};
function helper(left, right) {
if (left == null && right == null) return true
if (left == null || right == null || left.val != right.val) {
return false
}
return helper(left.left, right.right) && helper(left.right, right.left)
}
温故知新
防抖节流等各种手写,http和网络,浏览器原理,性能优化,Webpack
好文推荐
有感好文
- 实战篇 - 如何实现和淘宝移动端一样的模块化加载 (task-silce)
- 双缓存
- 一篇讲透自研的前端错误监控 关于前端错误监控的全面系统的深度好文
- 专栏-前端监控 从设计、搭建、落地 详细讲述前端监控的实现
- Node.js 多进程/线程 —— 日志系统架构优化实践 Nodejs 进程/线程相关深度好文
Nodejs 自查几个问题:
1-关于 Nodejs 的多进程,相关知识点有 child_process,cluster,但是多线程呢?多线程:worker_threads
2-Nodejs 进程通信,分为 父、子进程,因父子进程有继承关系,通信方式为 process.on(),但是没有继承关系的 兄弟进程如何进行通信呢?方案一可以使用 父进程 作为桥梁进行转发;方案二可以采用 【命名管道】
3-Nodejs 多线程的应用?多进程的缺点?
多线程:由于充分利用 CPU,所以执行的最快。
多进程:由于每个进程中都有一个线程,同样能充分利用 CPU,但是进程创建的开销要比线程大,所以执行的略慢于多线程。
单线程:由于 CPU 利用不充分所以慢于多线程和多进程,但是由于多线程 / 多进程的创建需要一定的开销,所以快于单个线程执行时间 * 线程个数。
以上内容,来自 Node.js 多进程/线程 —— 日志系统架构优化实践