Ray

This is liulei

拾碎Web安全

拾碎Web安全XSS 跨站脚本攻击实质:我们想在我们的程序中引用用户输入的数据,但是用户输入的数据被当成可执行的脚本代码来执行了 非持久XSS 利用系统的反馈行为漏洞,诱导用户主动点击,从而发起攻击,即把攻击代码直接写在URL中 系统通过url直接拿到内容进行无过滤渲染。 常见的当你的前端代码中有类似如下的: location.href.substring(location.href.i......

JS实现缓存算法(FIFO/LRU)

FIFO最简单的一种缓存算法,设置缓存上限,当达到了缓存上限的时候,按照先进先出的策略进行淘汰,再增加进新的 k-v 。 使用了一个对象作为缓存,一个数组配合着记录添加进对象时的顺序,判断是否到达上限,若到达上限取数组中的第一个元素key,对应删除对象中的键值。 12345678910111213141516171819202122232425262728/** * FIFO队列算法实现缓存......

EventLoop

Node的事件循环

JS执行上下文简单的说,JS解释器在执行代码的时候会有一个执行环境,那么这个执行环境就是执行上下文。并且在从上往下的执行过程形成了一个执行上下文栈。这个栈的最底层就是 Global 全局栈。 在解释器的内部调用执行上下文(执行一个函数)的时候,分为两个阶段: 创建阶段 创建作用域链 创建变量,函数和参数 确定this的值 执行阶段 设置变量值和函数的引用,解释并执行代码 执行上下......

Node内存控制

Node(V8)垃圾回收机制

: 聊一聊垃圾回收机制吧。 : 恩,垃圾回收是自动的。 基本概念GC(Garbage collection)垃圾回收机制。目的是解释器去判别需要回收的内容,当解释器认为一个占着房子的人已经没有存在的意义了,就自动收回房子重新对外出租(available)。JS和PY都选择不相信程序员,选择自己操控内存问题。 Node的对象都是分配在堆内存上,V8主要把内存分为 new-space ......

一篇 NPM 小记

常见问题1.npm 的package.json中的~和^ ~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0 ^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0 你也有可能会看见在 package.json 中模块的版本号前面既没有 ~ 也没有 ^ 就像下面那样: 1"moment": "2.4......

Node异步流程控制实践与总结

从 “async” 到 async

Node的异步概念理解异步非阻塞提到Node,异步非阻塞会是第一个需要你理解的概念。很多人会把这实际上是两个概念的词混为一谈,认为异步就是非阻塞的,而同步就是阻塞的。从实际的效果出发,异步IO和非阻塞IO实际上都能达到我们对于IO繁重的网络应用并行IO的追求。但是实际上这是两个很不一样的概念。 从操作系统的内核角度出发,I/O调用只有两种方式,阻塞和非阻塞。二者的区别在于,对于使用阻塞IO调......

总结HTTP的缓存机制与原理

概述缓存的重要性不言而喻,通过网络请求资源缓慢并且降低了客户端的用户体验,增添了服务端的负担。很多短期之内不会经常发生变化的资源文件没必要每次访问都想服务端进行数据请求,而缓存策略的使用就是为了改善客户端的呈现时间,降低服务端的负担。 对于HTTP的缓存机制来说,策略体现在HTTP的头部信息的字段上,而这些策略根据是否需要重新向服务器端发起请求可以分为强缓存和协商缓存两大类。接下来用UML时......

当我们调用Express的res.render

看源代码系列

当我们使用 Express 做服务端框架的时候,如果选择一种类似于 EJS这种模板引擎渲染前端页面的时候,经常服务端在响应 http 请求的时候调用 res.render({options}) 去向模板中渲染数据。 我们还会经常看到 res.locals 和 app.locals 这对象,那么他们到底是干什么的呢? 查看原代码: 1234567891011121314151617181920......

使用Node在服务端调用HTTP-Basic认证的API

“axios”,“request”,“restler”

前言Node作为前后端分离的”利器“由于它使用JS语法的特殊性,可以使得前端更好的利用Node来作为中间层十分方便得调用后台提供的“黑盒”API。即便是使用Node为主作为服务端开发在项目中也会经常用到要去其他的系统调用服务的场景。 请求的认证一直是一个web系统很重要的一环,直接关系到了系统的安全。对于Node在服务端方面,稍微复杂的认证机制使用的最多的就是passport模块,通过它强大......

Buffer与中文乱码问题

BufferBuffer 对象类似于数组,每一个元素都是16进制的两位数,即每一个元素可以表示一个 0-255 的值。在不同的编码下,字符串的每一个字符占用的元素个数不相同,在 UTF-8 编码下,每一个中文字占 3 个元素,字母和半角标点符号占1个元素。 Buffer 的实例可以先指定大小后赋值,也可以像数组那样使用 index 访问该值,返回一个十进制的数字。 12345678let s......