搭错车的小火柴

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1.nodejs的buffer

// https://semlinker.com/node-buffer/
const typedArray3 = new Int8Array(8);typedArray3[0] = -32;
const typedArray4 = new Int16Array(8);typedArray4[0] = -32;
const typedArray5 = new Uint8Array(8);typedArray5[0] = -32;// 2^8 - 32
const typedArray6 = new Uint16Array(8);typedArray6[0] = -32;// 2^16 - 32

console.log(typedArray3);
console.log(typedArray4);
console.log(typedArray5);
console.log(typedArray6);

// 输出:
> Int8Array [-32, 0, 0, 0, 0, 0, 0, 0]
> Int16Array [-32, 0, 0, 0, 0, 0, 0, 0]
> Uint8Array [224, 0, 0, 0, 0, 0, 0, 0]
> Uint16Array [65504, 0, 0, 0, 0, 0, 0, 0]

node和浏览器的buffer都是基于js的Uint8Array类生成。

allocUnsafe和allocSafe的区别是什么?

allocUnsafe不会对分配的内存进行初始化: https://nodejs.org/dist/latest-v14.x/docs/api/buffer.html#buffer_class_method_buffer_allocunsafe_size

 2.npm包私有作用域

 

 

 3.模块函数化和模块对象化

// 模块函数化
module.exports = function a(){}

// 模块对象化
//user.js
function User(pName){
    this.name=pName;
    this.say=function(){
        console.log('你好,我是隔壁 '+this.name);          
    }
}
//将模块导出对象替换为User
module.exports=User;
//index.js
// 引用user.js导出模块
var User=require('./user.js');
//创建一个user对象
var user1=new User('老王');
//调用这个对象的say方法
user1.say();

一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象。之后,缓存起来的导出对象被重复利用。这就是commonJs的缓存机制。

4.sockjs

SockJS的一大好处在于提供了浏览器兼容性。优先使用原生WebSocket,如果在不支持websocket的浏览器中,会自动降为轮询的方式。

以下几种轮询方式的解释:https://www.cnblogs.com/hoojo/p/longPolling_comet_jquery_iframe_ajax.html

https://github.com/sockjs/sockjs-client

xhr-polling
jsonp-polling
iframe-xhr-polling
xdr-polling †
WebRTC

 

 5.换行符(乱入)

Linux、Windows 和 Mac 中的换行符对比
对于换行这个动作,Unix下一般只有一个 0x0A 表示换行("\n"),Windows 下一般都是 0x0D 和 0x0A 两个字符,即 0D0A("\r\n"),苹果机(MAC OS系统)则采用回车符 CR 表示下一行("\r")。
Unix 系统中:每行结尾只有 "<换行>",即 "\n";
Windows 系统中:每行结尾是 "<回车><换行>",即 "\r\n";
Mac 系统中:每行结尾是 "<回车>",即 "\r"。

 

这也是为什么form-data里面的key-value之间要用/r/n换行

 6.在Node.js里面,process.nextTick和Promise优先级

在Node.js里面,process.nextTick和Promise,谁的优先级更高,why?他们和其他的event loop关系是什么(比如时序上,和setTimeout,setImmediate之类的进行比较)https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/

 

posted on 2020-08-11 16:36  搭错车的小火柴  阅读(127)  评论(0编辑  收藏  举报