ES6 中的 WeakMap 和 WeakSet
WeakMap 和 WeakSet 是 ES6 新增的两个对象,根据 MDN 文档上的说法,它们的键必须是对象,并且键是弱引用的,会被浏览器垃圾回收机制回收。那么到底什么是弱引用,在什么情况下会被回收呢?要搞清这个问题,我们需要先简单的了解一下浏览器的垃圾回收机制。
WeakMap 和 WeakSet 是 ES6 新增的两个对象,根据 MDN 文档上的说法,它们的键必须是对象,并且键是弱引用的,会被浏览器垃圾回收机制回收。那么到底什么是弱引用,在什么情况下会被回收呢?要搞清这个问题,我们需要先简单的了解一下浏览器的垃圾回收机制。
在所有面向对象的编程语言中,继承都是一个非常重要的特性,继承有很多优点,比如实现逻辑复用,减少重复代码,节省内存空间,利于整体维护等。在 JS 中,也可以实现继承,对于有基于类的语言开发经验的人来说,JS 的继承可能会让人有点困惑,因为 JS 本身不提供类继承的实现,虽然在 ES6 中引入了 class 关键字,但只是语法糖,JavaScript 继承实际上仍然是基于原型的,那么原型是什么,继承又是如何实现的,今天我们来详细探讨下。
在日常开发中,我们通常会使用 git 来管理我们的项目,并在开发过程中使用 commit 、 push 等命令提交和推送代码,如果我们想在每次提交时都执行代码检查,我们如何自动化的去完成这些任务呢?
经常在一些 Canvas 特效中看到光线飞过的效果,像流星一样拖着长长的尾迹,有时候光线还会沿着曲线运动,如下图的地图中,这种效果是如何实现的呢?今天我们来试着在 Canvas 中实现这种效果。
在之前的文章中,我们使用 JavaScript 创建一个单向链表。单向链表由节点组成,每个节点都有一个指向列表中下一个节点的指针。单向链表通常需要遍历整个链表进行操作,因此通常性能较差。提高链表性能的一种方法是在每个节点上添加第二个指针,指向链表中的前一个节点。节点既指向前一个节点又指向下一个节点的链表称为双向链表。
nginx 开启 gzip 压缩功能可以使网站的 css、js、html 等文件在传输时进行压缩,提高访问速度,进而优化 nginx 性能,节省流量,一般 gzip 压缩只针对文本文件,而图片视频这些很难再进行压缩的文件,因为压缩效果不好,则没有必要开启 gzip 压缩,如果想优化图片的访问性能,可以在本地压缩,并设置较长一点的生命周期让客户端缓存。
Linux 命令可以使用 shell、python、go 等语言开发,也可以使用 Node.js,今天介绍怎么使用 Node.js 开发一个简单的 Linux 命令。
在 Linux 系统中需要 root 权限执行命令,有两种方式可以做到,一种是使用 sudo
临时切获得 root 用户的权限,一种是使用 su
切换到 root 用户。
在做前端开发的时候,我们通常是启动一个 node server 方便调试代码,并且能够支持热更新,但后端提供的 api 接口往往在另一台服务器上,这时候,就需要用到代理(proxy)。
链表是一种数据结构,以线性方式存储多个值。链表中的每个值都包含在其自己的节点中,该对象包含数据以及指向列表中下一个节点的链接。链接是指向另一个节点对象的指针,如果没有下一个节点,链接指向 null。如果每个节点只有一个指向另一个节点的指针(最常称为 next ),则该列表被认为是单向链表(or just linked list),而如果每个节点有两个链接(通常是 previous 和 next),则它被认为是双向链表。在这篇文章中,我主要学习单向链表。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
EventSource 是实现服务端推送的一个网络事件接口。EventSource 实例会与服务端创建一个持久化的连接,服务端以 text/event-stream
格式发送事件, 并且会一直保持开启直到被要求关闭。一旦连接开启,来自服务端传入的消息会以事件的形式分发至你代码中。如果接收消息中有一个事件字段,触发的事件与事件字段的值相同。如果没有事件字段存在,则将触发通用事件。
使用canvas画图时经常遇到画出来的图形模糊、边框不清晰等现象,曾经为了解决这些问题走了很多弯路,浪费了大把时间,当然也积累了一些经验,今天就把这些问题总结出来。