0%

最近在面试求职的时候有被问到 Node 有没有办法实现多线程,我一拍脑袋,害,这个我会:

“利用 cluster 模式通过 fork() 实例化多个 node 服务实例, 比如一个8核服务器,就可以启动8个独立实例,相互之间并不影响,十分稳定.最典型的工具就是 pm2.”

“恩恩,你说的是 cluster 多进程模式,有没有多线程方式呢?”

“啊…这个…那就通过 child_process 去 fork/spawn 一个子进程…”

“这也是调起了一个子进程,并不是真正的多线程,有关注过 Node 的一些新特性/api 吗?”

“饿…这个(此时的我是当真不知道 worker_threads….”

然后结局很明显,在欢声笑语中打出GG…

不甘心的我去Node中文文档查阅了相关资料,果不其然,我还是太年轻了:)

阅读全文 »

本文翻译自 Node中文文档

稳定性: 1 - 试验(此特性不受语义版本控制规则的约束,在将来的任何版本中都会受到非向后兼容的更改或删除。 建议不要在生产环境中使用该特性。)

worker_threads 模块允许使用并行执行 JavaScript 的线程。首先引入模块:
const worker = require('worker_threads');
工作线程(线程)对于执行 CPU 密集型 JavaScript 操作非常有用。他们对于 I / O 密集型工作没有多大帮助,Node.js 的内置异步 I / O 操作比 Workers 更高效。
不同于child_process或者clusterworker_threads能够共享内存。 他们能够传递ArrayBuffer实例或者共享sharedArrayBuffer实例。

阅读全文 »

前言

在写完基于 Webhooks 的“第一篇《都9012年了,你还在手动部署代码吗》”之后,有同学评论到”至少你得用个 docker 啊””一对一嘛…感觉面试吹这个会被吊起来锤”….于是我决定出一篇基于 Docker 的自动部署文章 (:

这是一篇利用 Docker 和 Gitlab-CI 的学习自动部署和实践的笔记,如果您是 Docker 资深玩家,跪求大佬不要吊锤;如果您是萌新,刚开始 Docker 学习之旅,那么希望笔记中的理解和操作能够对您有所帮助.

然鹅,饱和的需求和人的惰性让第二篇拖到了今天ORZ!!! 王者峡谷一时爽,一直王者一直爽

阅读全文 »

背景

公司从当初的SVN代码版本控制,FTP手动上传项目代码zip压缩包,到如今的git代码版本控制,jenkins一键打包部署环境,已经初步完成了手动到自动的大跃进.回过头来看看自己的项目,还处在本地仓库修改代码 -> 提交远程github仓库 -> 自己上服务器手动pull最新分支代码的原始阶段.不能忍

OK,接下来让我们开始我们的进化偷懒之旅,大家一起跟随我的心路历程一起进化.

目标

当我们本地仓库修改完成push远程仓库之后, 服务器能够自动拉取最新分支代码,自动完成项目部署.

前置条件(废话)
  1. 有个本地仓库能够连接到远程仓库,能够push代码
  2. 服务器仓库能够从远程仓库pull代码
  3. 远程仓库有webhooks功能
阅读全文 »

题目

1
2
3
4
5
- 下面代码中 a 在什么情况下会打印 1 ?
var a = ?;
if (a == 1 && a == 2 && a == 3) {
console.log(1);
}

同事老哥分享在群里的一道题目,题目来源于Daily-Interview-Question

我看到题目二话没说来了一句var a = (function() {console.log(1)})();,直接把老哥们皮出了一阵省略号…

其实这题考察的应该是==的隐式转换, 当引用类型在比较运算符时,隐式转换会调用本类型toString或valueOf方法.

阅读全文 »

写在前面

时至今日,已经是我毕业工作的第0.5个年头了.遥想大二当年学的数据库原理,更多的是基于sql server 2008的,其中大部分知识已经回归了书本的怀抱.即使身为一名前端工程师,但平时工作中更多的是使用Node和sequlize框架和mysql数据库进行交互,感觉到有必要强化学习一下mysql知识.

买了一本MySQL必知必会,每天至少保证一小时的阅读时间,并根据自己的水平,记录对应的阅读笔记.

阅读全文 »

— 从创意到精致结果的五个步骤

原文链接:https://medium.freecodecamp.org/how-to-write-a-great-technical-blog-post-414c414b67f6

我已经在开源社区工作了近 5 年,建立和推广包括 Meteor 和 Apollo 在内的开发者工具。在那个时候,我发现博客是传播思想的最有效方式之一。

写博文不像视频或会谈需要花费很长时间来准备,是个受众广且很容易完成的。我个人也从写作中获得了很多好处:它帮助我组织了自己的想法,向人们传播了我喜欢的技术,还让人们知道了我。

2014 年我发布了第一篇博文,到现在我已经在 Medium 上写了 68 篇文章了,其中一些文章有超过 50k 的浏览次数和 1000 个粉丝。我还为我的朋友和同事编辑过很多帖子。经过那段时间的锻炼,我已经有了一个把概念实现到发布成文的策略。

阅读全文 »

Hexo使用theme/next主题部分无法推送github远程仓库

关键词: Hexo, next, github, git submodule, data files, next.yml

前置步骤

  1. 你想要用hexo+github搭建自己的博客(master构建部署分支/hexo编辑分支)

    这种方法你的博客在github上是透明的哦~

  2. 使用git clone的方式下载了theme/next的库包

  3. 在hexo分支上推送博客内容, 换台电脑git clone自己的博客仓库

产生的问题

​ 在新电脑上git clone的仓库hexo分支中theme/next文件是空的, 在github上查看next文件发现为submodule形式. 也就是你如果想要在新电脑上编辑自己的博客, 那么你需要重新git clone官方next远程仓库.也就是说你此前next主题相关的主题配置_config.yml, 你已经丢失了!!!除非你去旧电脑上copy(手动滑稽.ipg

我不信就我一个人会有这个问题,所以我就去next的github的issue查了一下,果然有跟我一样问题的大兄弟,不过人家在2016年提出问题并得到解决了

阅读全文 »