前端

1、WeakMap 和 Map 的区别,WeakMap 原理,为什么能被 GC?
https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/464
WeakMap仅在键被垃圾回收后,才弱引用它的内容,实际上只要键仍然存活,它就强引用其内容。
WeakRef 是一个更高级的 API,它提供了真正的弱引用,Weakref 实例具有一个方法 deref,该方法返回被引用的原始对象,如果原始对象已被收集,则返回 undefined 对象。
JavaScript 中对象的引用是强引用,WeakMap 和 WeakSet 可以提供部分的弱引用功能,若想在 JavaScript 中实现真正的弱引用,可以通过配合使用 WeakRef 和终结器(Finalizer)来实现。
对象的弱引用是指当该对象应该被 GC 回收时不会阻止 GC 的回收行为。而与此相反的,一个普通的引用(默认是强引用)会将与之对应的对象保存在内存中。只有当该对象没有任何的强引用时,JavaScript 引擎 GC 才会销毁该对象并且回收该对象所占的内存空间。因此,访问弱引用指向的对象时,很有可能会出现该对象已经被回收。

  1. const myWeakRef = new WeakRef({
  2. name: 'xx',
  3. year: '25'
  4. });
  5. const obj = ref.deref();
  6. obj.name;

finalizers 或 FinalizationRegistry。注册一个回调函数,这个回调函数将会在对象被垃圾回收时调用。

  1. const obj = { spec: 'ES2021' }
  2. const registry = new FinalizationRegistry((value) => {
  3. console.log(`The ${value} object has been garbage collected.`)
  4. })
  5. registry.register(obj, 'ECMAScript 2021') // perform some action that triggers garbage collector on obj // The ECMAScript 2021 object has been garbage collected.

GIS

1、geojson和topojson数据格式
https://zhuanlan.zhihu.com/p/361132666

2、MapBox GL JS 简介
https://mp.weixin.qq.com/s/Uff_yzPVgj7zNNSa-3AsBw