浅谈 javascript 中的比较操作符 ==
我们知道javascript中的比较操作符有2种,== 和 ===
我们知道javascript中的比较操作符有2种,== 和 ===
javascript 中的对象比较并不是值的比较.
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
“M+”: this.getMonth() + 1, //月份
“d+”: this.getDate(), //日
“h+”: this.getHours(), //小时
“m+”: this.getMinutes(), //分
“s+”: this.getSeconds(), //秒
“q+”: Math.floor((this.getMonth() + 3) / 3), //季度
“S”: this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + “”).substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp(“(“ + k + “)”).test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((“00″ + o[k]).substr((“” + o[k]).length)));
return fmt;
}
其实javascript中并没有像其他强类型语言里的模块作用域.
Node.js 项目最容易让人产生一种错觉:只要把 Node 装上、包管理器装上,环境就算齐了。可到了 2020 年左右,团队里同时使用 nvm、Node、Yarn 已经很普遍,这时候真正容易出问题的,不再是某个工具会不会装,而是它们之间的版本边界有没有讲清楚。
2020 年前后,微服务这个词在很多团队里都很热。系统一旦变大,大家很自然就会想:是不是该拆服务了?这个方向当然有它的价值,但我后来越来越警惕一种冲动,就是把“拆”本身看成答案,却没有先补上对应的观测和降级能力。
Docker 本地环境用久了以后,几乎都会经历一个阶段:旧容器没删干净,历史镜像堆了不少,没在用的 volume 和网络也越来越多。这个时候很多人为了图快,直接一通删除,结果把本来还想保留的数据库数据也一起带走了。环境清理这件事看似只是几条命令,其实很考验顺序感。
有些容器问题并不是“起不来”,而是明明已经在运行,表现却和预期不一样。比如环境变量没生效、工作目录不对、配置文件路径错了、依赖包实际没有安装完整。这个时候如果只会不停重启容器,排查会非常低效。对这类问题来说,docker exec 往往比“再试一次”更有价值,因为它让你直接进入现场。
Docker 用到一定阶段后,几乎都会碰到一个问题:容器里的数据到底是保存在 volume,还是直接绑定宿主机目录。这个选择看起来像是命令层面的细节,实际上很影响本地开发效率。因为它决定了你改代码是否能实时生效、数据库数据是否好迁移、环境重建时会不会把重要内容一起清掉。
本地容器一旦启动失败或者接口突然异常,很多人的第一反应都是先 docker exec 进去看看,或者直接把容器删掉重启。这样做当然有时候也能解决问题,但从排查效率看,并不总是最优。很多容器问题,其实靠 docker logs 就能先把大方向判断出来,尤其是把 follow、tail、since 这些选项用顺手以后,定位速度会快不少。