• 话说,在很久以前的程序界,是没有内存垃圾回收这种说法的,大家习惯于被 C 以及 C++ 的内存问题各种花式吊打。

    直到有一天,John McCarthy 大神 1959 年在 LISP 中实现了内存垃圾回收,大家才惊奇的地发现:『居然还有这种操作?』。
    正如 iPhone 出来之后重新定义了手机,内存垃圾回收的出现无异于重新定义了高级语言。

    好,接下来开始聊聊 Node.js 里面的 GC。

    Nodejs GC

    网上各种文章都会告诉你 Node.js 中类似于下面的这种内存垃圾回收原理[1][3]:

    在 Node 中,内存是 v8 负责管理的,而在程序的 heap 空间中,主要分为 New

  • 公共类库版本发布流程实践

    目标

    • 认识没有规范的 npm 版本发布会存在什么问题
    • 理解 git tag 和 npm tag 的存在
    • 理解分支命名分类和意义
    • 学习 npm 包管理方案 lerna
    • 探讨新特性开发和线上 bug 修复的较优流程实践

    没有规范的 npm 版本发布会面临什么问题?

    @todo

    git tag 与 npm tag

    git tag

    @todo

    npm tag

    @todo

    分支命名规范

    分类

    分支名 定位 版本稳定性 分支源 版本 tag 是否 snapshot 模式
    master 稳定版本代码管理 无,不允许直接发布 N
    develop
  • 问题:不用Vuex怎么让兄弟组件便捷通信?甚至让业务组件和内部组件通信?

    答案:使用eventHub

    如果不使用EventHub,我们想让父组件的两个子组件,甚至两个孙子组件之间进行通信,怎么办?

    方案一:Vue自带的原生的emiton的观察者模式

    此处demo可见官方文档

    弊端:必须经过父组件,并且必须为此给父组件增加一个状态。如果组件层级过深,不可维护!

    方案二:自己实现一个broadcastdispatch

    虽然broadcastdispatch方法已经被Vue官方所废弃,但是我们仍然可以自己实现一个broadcastdispatch方法。原理是componentName参数

  • selectpollepoll都是I / O复用的机制,在《UNIX网络编程》里重点讲了selectpoll的机制,但selectpoll并不是现代高性能服务器的最佳选择。包括现在的Node.js中的事件循环机制(event loop)也是基于epoll实现的。

    select和poll的缺点

    按照《UNIX网络编程》中所述,pollselect类似,没有解决以下的问题:

    • 每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大
    • 同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大
    • select支持的文件描述符数量太小了
  • ameiziameizi/DevArticles· 1 天前

    http://www.dengshenyu.com/分布式系统/2017/11/12/kafka-producer.html

    http://www.dengshenyu.com/分布式系统/2017/11/21/kafka-data-delivery.html

    http://www.lpnote.com/2017/01/15/reliability-of-kafka-message