抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

查看进程
ps

ps aux

  • a:显示当前终端下的所有进程信息,包括其他用户的进程。
  • u:使用以用户为主的格式输出进程信息。
  • x:显示当前用户在所有终端下的进程。

ps -elf

  • -e:显示系统内的所有进程信息。
  • -l:使用长(long)格式显示进程信息。
  • -f:使用完整的(full)格式显示进程信息。

什么是grid布局?
怎么实现grid布局?
grid布局的好处
grid布局中一些常用设置说明
  • grid-row: grid-row-start / grid-row-end;
    • grid-row-start 指定在哪一行开始显示网格元素。
    • grid-row-end 指定停止显示网格元素的行,或要跨越多少行。

为什么压缩图片?

浏览器在加载页面的时候,图片也是影响请求前端用户体验的一环:如果图片较大,请求耗时越长,那页面会长时间处于加载中或者白屏状态,导致用户体验较差。所以压缩图片就成了一种比较常用的优化前端性能的手段。

压缩图片方法
  • 第一种:将图片传给后端,后端进行压缩
  • 第二种:使用canvas压缩图片
    思路:
  • 通过获取二进制图片
  • 使用 FileReader 把二进制图片转换成base64格式,用于生成 Image 对象
  • 把图片绘制成 Canvas(这一步可以对图片尺寸进行压缩,这一步压缩效率最高,图片尺寸是最影响图片大小的)
  • 将Canvas 再转成 base64 图片(这一步可以对图片质量进行压缩)

scrollIntoView作用

element.scrollIntoView
滚动元素的父容器,使被调用scrollIntoView的元素对用户可见2,即滚动到可视区域

scrollIntoView用法

element.scrollIntoView()
等同于element.scrollIntoView(true)

javascript中的相等比较算法

什么是尾调用?

某个函数的最后一步调用另一个函数

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 call1(a) {
return call2(a);
}

// 以下三种情况不属于尾调用!!!
// 函数调用后还有其他操作
function call1(a) {
const x = call2(a);
return x;
}

function call1(a) {
return call2(a) + 1;
}

function call1(a) {
call2(a);
}

// 以下属于尾调用
function call1(a) {
if (!!a) {
return call2(a);
}
return call3(a);
}

算法设计与技巧

分而治之

将一个问题分成多个和原问题相似的小问题,递归解决小问题,再将解决方式合并以解决原来的问题

分而治之算法可以分成三个部分。
(1) 分解原问题为多个子问题(原问题的多个小实例)。
(2) 解决子问题,用返回解决子问题的方式的递归算法。递归算法的基本情形可以用来解决子问题。
(3) 组合这些子问题的解决方式,得到原问题的解。

排序和搜索算法

排序算法

冒泡排序
冒泡排序(复杂度是 O(n2))比较所有相邻的两个项,如果第一个比第二个大,则交换它们。元素项向上移动至正确的顺序,就好像气泡升至表面一样,冒泡排序因此得名。

二叉堆和堆排序

二叉堆数据结构

(1)它是一棵完全二叉树,表示树的每一层都有左侧和右侧子节点(除了最后一层的叶节点),并且最后一层的叶节点尽可能都是左侧子节点,这叫作结构特性。
(2)二叉堆不是最小堆就是最大堆。最小堆允许你快速导出树的最小值,最大堆允许你快速导出树的最大值。所有的节点都大于等于(最大堆)或小于等于(最小堆)每个它的子节点。这叫作堆特性
heat

递归

递归是一种解决问题的方法,它从解决问题的各个小部分开始,直到解决最初的大问题。递归通常涉及函数调用自身。

每个递归函数都必须有基线条件,即一个不再递归调用的条件(停止点),以防止无限递归。