百度2019前端实习生招聘的一道编程题:根据给定table字段进行升降排序,当时做得不太好,事后再实现一遍。
当时被HtmCollection卡住了一下,建议参考NodeList v.s. HTMLCollection
完整代码如下
1 |
|
百度2019前端实习生招聘的一道编程题:根据给定table字段进行升降排序,当时做得不太好,事后再实现一遍。
当时被HtmCollection卡住了一下,建议参考NodeList v.s. HTMLCollection
完整代码如下
1 | <!DOCTYPE html> |
偶然遇到了
标签的嵌套问题,有必要mark一下。
p 标签内部不能嵌套 原始块元素,否则会通过自动闭合p标签,使块元素暴露出来
例如如下写法
1 | <p id="a"> |
经过浏览器就会解析成
1 | <p id="a"></p> |
div 虽然加上了 display:inline 但是其本身是块级元素,所以在p标签中依然当做块元素对待
clientHeight和clientWidth用于描述元素内尺寸,是指 元素内容+内边距 大小,不包括边框(IE下实际包括)、外边距、滚动条部分
clientTop和clientLeft返回内边距的边缘和边框的外边缘之间的水平和垂直距离,也就是左,上边框宽度
offsetHeight和offsetWidth用于描述元素外尺寸,是指 元素内容+内边距+边框,不包括外边距和滚动条部分
offsetTop和offsetLeft表示该元素的左上角(边框外边缘)与已定位的父容器(offsetParent对象)左上角的距离
参考链接
主要参考 十大经典排序算法总结(JavaScript描述) 原文更详细
名称 | 平均复杂度 | 最差复杂度 | 最优复杂度 | 空间开销 | 是否稳定 |
---|---|---|---|---|---|
冒泡排序 | $O( n^2 )$ | $O( n^2 )$ | $O( n^2 )$ | $O(1) | 是 |
选择排序 | $O( n^2 )$ | $O( n^2 )$ | $O( n^2 )$ | $O(1) | 否 |
插入排序 | $O( n^2 )$ | $O( n^2 )$ | $O( n^2 )$ | $O(1) | 是 |
希尔排序 | $O( n\log(n) )$ | $O( n^2 )$ | $O( n\log_2n )$ | $O(1) | 否 |
快速排序 | $O( n\log(n) )$ | $O( n^2 )$ | $O( n\log(n) )$ | $O(1) | 否 |
归并排序 | $O( n\log(n) )$ | $O( n\log(n) )$ | $O( n\log(n) )$ | $O(1) | 是 |
堆排序 | $O( n\log(n) )$ | $O( n\log(n) )$ | $O( n\log(n) )$ | $O(1) | 否 |
计数排序 | $O( n + k )$ | $O( n + k )$ | $O( n + k )$ | $O(1) | 是 |
基数排序 | $O( n * k )$ | $O( n * k )$ | $O( n * k )$ | $O(1) | 是 |
桶排序 | $O( n + K )$ | $O( n + K )$ | $O( n^2 )$ | $O(1) | 是 |
堆排序中建堆过程的时间复杂度是 $O(n)$
桶排序和基数排序均属于分配排序。分配排序的基本思想:排序过程无须比较关键字,而是通过用额外的空间来”分配”和”收集”来实现排序,它们的时间复杂度可达到线性阶:O(n)。简言之就是:用空间换时间,所以性能与基于比较的排序才有数量级的提高!
1 | $ cd ~ //进入用户目录 |
chmod [-R] xyz
1 | $ chmod 770 xyz |
1 | $ ls -a // 列出包含隐藏的文件 |
cp [-adfilprsu] 来源档(source) 目标档(destination)
1 | $ cp -r source destination // 递归持续复制,用於目录的复制行为;(常用) |
scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下
scp work@192.168.0.10:/home/work/source.txt /home/work/ #把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下
scp work@192.168.0.10:/home/work/source.txt work@192.168.0.11:/home/work/ #把192.168.0.10机器上的source.txt文件拷贝到192.168.0.11机器的/home/work目录下
scp -r /home/work/sourcedir work@192.168.0.10:/home/work/ #拷贝文件夹,加-r参数
mv [options] source1 source2 source3 …. directory
mv [-fiu] source destination
du [-ahskm] 文件或目录名称
个人使用或收藏的前端开发工具,便于快速查找需要的工具,完善项目技术栈
用html2canvas生成图片,再用jsPDF包装成pdf保存到本地
html2canvas jsPDF
创建数据库
1 | CREATE DATABASE new_database; |
显示数据库
1 | SHOW DATABASES ; |
删除数据库
1 | DROP DATABASE example_1; |
选择数据库
1 | USE example; |
建表
CREATE TABLE 表名称(属性名 数据类型[约束条件],属性名 数据类型[约束条件]);
1 | CREATE TABLE `fund_data` ( |
显示表
1 | show tables; |
修改表名
1 | alter table 旧表名 rename to 新表名; |
插入数据
insert [into] 表名 [(列名1, 列名2, 列名3, …)] values (值1, 值2, 值3, …);
1 | insert into students values(NULL, "王刚", "男", 20, "13811371377"); |
1 | insert into students (name, sex, age) values("王刚", "男", 21); |
更新数据
update 表名称 set 列名1=取值1,列名2=取值2 where …
删除数据
delete from 表名称 where…
1 | delete from students where id=2; |
1 | delete from students where age<20; |
1 | delete from students; |
推荐一款node验证码生成工具 ccap
以下内容翻译自官方说明
不需要安装额外的库和软件,只需要用npm安装ccap就可以生成验证码。
支持的node版本 0.12.x and 4.x.x
1 | var captcha = ccap(); |
1 | var http = require('http'); |
1 | var captcha = ccap(); |
1 | var ccap = require('ccap')(); |