
nodejs
xinyue_htx
自建博客https://xinyuehtx.github.io/
展开
-
如何在JavaScript中调用C++动态链接库
今天和大家聊一聊如何在JavaScript中调用C++动态链接库什么是ffiffi 是Foreign Function Interface的简称,是一款nodejs的addon。可以让大家在nodejs中调用c风格的c++动态链接库ffi调用起来非常简单,可以看下官网的这个例子var ffi = require('ffi-napi');var libm = ffi.Library('libm', { 'ceil': [ 'double', [ 'double' ] ]});libm.原创 2020-06-14 11:14:08 · 7754 阅读 · 1 评论 -
理解node中的stream的背压机制
今天和大家聊一聊node中的stream的背压机制。为什么要有流在编写服务时,经常会需要涉及到文件或者数据压缩的问题。使用合适的压缩算法能够有效减少请求文件的大小,从而减少网络中的数据传输量,提升响应速度。假设我们采用最普通的方式处理一个文件的获取,压缩,发送这个过程,就会是如下所示的图形表示:我们看到整个执行流程是串行的,所有耗时都会累加,导致整个过程耗时很长。流的出现就是为了解决这个串行处理的问题。如下图所示,我们将整个文件分成一个个小块,利用生产者消费者模式,上一个阶段的操作有一小部原创 2020-06-08 19:45:46 · 404 阅读 · 0 评论 -
如何编译electron依赖的c++模块
今天在写electron的项目时,需要使用到robotjs。而robotjs是c++编写的库,所以需要在不同的平台进行重新编译。期间遇到了许多问题,mark一下。问题来源所有代码最终是要转换为操作系统相关代码,才能在指定的OS上运行。像java,python这类代码是需要对应平台的vm环境,转成平台相关代码才能够执行。而c++并没有这样的vm环境,因此对于node的c++模块,需要先编译成平台相关的代码,才能执行。方案这里我采用的方式是node-gyp进行编译整体方案如下所示,利用nod原创 2020-06-06 01:07:21 · 2551 阅读 · 0 评论 -
Nodejs源码阅读——事件循环
最近看到Nodejs的事件循环,发现网上的一些文档和描述都不够清晰。所以今天来和大家一起从源码出发了解下Nodejs的事件循环机制。官网描述我们先看下nodejs的官网对事件循环的描述。 ┌───────────────────────────┐┌─>│ timers ││ └─────────────┬─────────────┘│ ┌─────────────┴─────────────┐│ │ pending callba原创 2020-05-27 17:18:07 · 302 阅读 · 0 评论 -
常见软件的GC算法解析
今天和大家一起解析下常见的GC算法设计。什么是GCGC是一种软件进行自动的内存回收的方式。如果软件运行过程中,发现某些对象没有了引用(或者称之为不可达)的状态时,就会启动GC过程。将这部分内存进行释放。以避免程序员因为忘记显示释放内存导致程序出现out of memory。GC的过程GC的过程主要分为标记、移动和压缩标记软件先分析堆中的所有内存对象,判断是否“存活”。如果一个对象...原创 2020-03-22 16:32:06 · 943 阅读 · 0 评论