0%

背景

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 模拟耗时任务
function taskA (n, initialValue, incre) {
let result = initialValue
for (let i = 0; i < n; i++) {
result += incre
}
return result
}
function cache (callback) {
// ...
return function () {
console.time('task')
// ...
console.timeEnd('task')
}
}
let taskACache = cache(taskA)
taskACache(1e+9, 0, 1) // 1.5s
taskACache(1e+9, 0, 1) // 0s
taskACache(1e+9, 2, 1) // 1.5s
taskACache(1e+9, 2, 1) // 0s
taskACache(1e+9, 0, 1) // 0s

let taskBCache = cache(taskB)
taskBCache('abc', 123, { a: 1, b: 2 }) // 5s
taskBCache('abc', 123, { b: 2, a: 1 }) // 0s

完善 cache 方法,使得相同参数调用时能够快速响应结果

注意

  • 相同参数需要进行深度比较, {a:1,b:2}{b:2,a:1} 属于参数不变的情况
  • 属性值仅需考虑基本类型和纯对象(typeof is object),且不考虑循环引用的问题
阅读全文 »

背景

先简单介绍下本人的情况,2017年毕业于福州大学,然后在厦门一家 CDN 公司任职前端开发工程师,大概2年半的前端开发经验。

接触过后端移动端,目前主方向是前端。参与的项目基本都是 toB ,主要分为流媒体,可视化,前端优化,portal平台等几个方向。

在开源项目方面,实现了一个基于 antd3 的前端长列表相关组件库(现在已不维护,可直接使用 antd4

最近在研究的技术有:webassembly,webgl

废话不多说,下面进入正题 ~

阅读全文 »

前言

对一个几何图形进行贴图,所贴的图就叫纹理(texture),或纹理图像(texture image)

贴图的过程叫做纹理映射

组成纹理图像的像素成为 纹素(texels, texture elements)

光栅化时每个片元会涂上纹素

纹理和光照一样,都是作用于世界坐标系的,不受投影和视图矩阵的影响

阅读全文 »

前言

通过本文,可以了解 WebGL 中平移、旋转、缩放、视角的矩阵运算,最终实现一个立方体变换的效果

阅读全文 »

这是最近面试 bd 时面试官问的一个问题,当时没有回答上来。

本篇就以问答的形式来讲解这题。当然以下内容纯属虚构,只是为了说明大厂面试是一环扣一环的。或许当你成为面试官时也可以采用这种形式。

阅读全文 »

前言

大部分例子引用自 Bit Twiddling Hacks

一些位操作优化的技巧在 js 中不一定能得到体现,本文仅展示一些自己在前端项目中用过且较常用的例子

某些例子比如交换,计算奇偶,计算最值的,使用位操作提升不大,但可读性变差了,本文不做记录

阅读全文 »