Skip to content

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 注入的风险的;这是一个隐患,感觉得提早提出这个问题,在所有输入端,要考虑过滤特殊字符问题;

今日算法

今日学习:

今日复习:

js
/**
 * 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

好文推荐

有感好文

Nodejs 自查几个问题:

1-关于 Nodejs 的多进程,相关知识点有 child_process,cluster,但是多线程呢?多线程:worker_threads

2-Nodejs 进程通信,分为 父、子进程,因父子进程有继承关系,通信方式为 process.on(),但是没有继承关系的 兄弟进程如何进行通信呢?方案一可以使用 父进程 作为桥梁进行转发;方案二可以采用 【命名管道】

3-Nodejs 多线程的应用?多进程的缺点?

多线程:由于充分利用 CPU,所以执行的最快。

多进程:由于每个进程中都有一个线程,同样能充分利用 CPU,但是进程创建的开销要比线程大,所以执行的略慢于多线程。

单线程:由于 CPU 利用不充分所以慢于多线程和多进程,但是由于多线程 / 多进程的创建需要一定的开销,所以快于单个线程执行时间 * 线程个数。

以上内容,来自 Node.js 多进程/线程 —— 日志系统架构优化实践

Released under the MIT License.