自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 Koa 洋葱模型

Koa 洋葱模型提到 Node.js,就不得不提目前炙手可热的两大框架 Express 和 Koa,他俩都是 NodeJs 的主流开发框架。Express 和 Koa:Express是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没

2021-11-29 11:11:56 1744 1

原创 字节前端面经

一面:IPV4 和 IPV6 区别IPV4的形式,IPV6的形式Http2.0与Http1.0的区别把 1px 缩放为 0.5px让元素在页面不显示的方法开启BFC的方法,BFC的特性输入URL之后发生了什么前端攻击 XSS跨域this指向问题js为什么是单线程的,为什么这么设计各种类型转换, [] == 0 [] == {} [] == (![]) 的结果进程间通信方法进程和线程区别cdn是什么,为什么能加速

2021-09-23 18:04:19 334

原创 JS继承的四种方式

继承是面向对象语言中的一个最为人津津乐道的概念。许多面向对象语言都支持继承,JS没有明确的继承机制,而是通过模拟实现的。由于JS语言的灵活性,有下列几种方式可以实现继承:1. 使用对象冒充实现继承// 父构造函数function Parent(name, age) { this.name = name; this.age = age; this.say = function() { console.log("my name is " + this.name +

2020-09-01 11:51:20 289

原创 JS原型和原型链,使用原型链实现继承

1.为什么要设计JS原型呢?知道设计者“为什么这样做”远比“怎么做的”重要。这一个问题我是通过看阮一峰老师的随笔所了解清楚的,有兴趣的可以看一下——Javascript继承机制的设计思想以下我整理了阮一峰老师的理解:如果单纯使用new 构造函数生成对象的话,有一个很明显的缺点,即属性和方法不能共享,且浪费大量的内存。function Star(uname, age) { this.uname = uname; this.age = age; this.sing = function()

2020-07-24 21:19:45 1311

原创 Flex布局详解

1. 认识flex布局flex布局,也叫做弹性布局,是目前web开发中使用最多的布局方案。任何元素都可以指定为flex布局行内元素开启flex布局.box { display: inline-flex;}块级元素开启flex布局.box { display: flex;}如果是Webkit内核的浏览器,需要加上-webkit前缀。2. flex布局的重要概念flex container:开启flex布局的元素叫做容器(flex container)flex item

2020-07-19 14:50:26 430

原创 JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序)

JS 排序算法一、 大O表示法在进行排序算法之前,我们得先掌握一种对算法效率的表示方法,大O表示法。我们使用大O表示法来表示算法的时间复杂度,是用来表示算法的速度随着数据量的变化而如何变化的。常见的大O表示函数:O(1):常数的O(log n):对数的O(n):线性的O(n*log(n)):线性和对数乘积O(n^2):平方O(2^n):指数推导大O表示法的方式:用 常量1取代运行时间中所有的加法常量在修改后的运行次数函数中,只保留最高阶项如果最高存在且不为1,则去除与这个项

2020-07-18 18:59:34 615 2

原创 JS数据结构(10)—— 二叉搜索树的实现

JS数据结构(10)—— 二叉搜索树1.二叉搜索树(BST,Binary Search Tree)是什么?想要知道什么是二叉搜索树,先得了解什么是树结构,什么是二叉树,可以在我的另外一篇博客 树结构,二叉树 来了解。二叉搜索树,也叫二叉查找树或二叉排序树。二叉搜索树的特性:非空左子树的所有键值小于其根节点的键值。非空右子树的所有键值大于其根节点的键值。左、右子树本身也是二叉搜索树。二叉搜索树的特点就是相对较小的值总是保存在左节点上,相对较大的值总是保存在右节点上。基于这个特

2020-07-09 13:48:05 331

原创 JS数据结构(9)—— 树结构,二叉树

JS数据结构(9)—— 树结构1.什么是树结构树结构是一种非线性结构,以分层的方式存储数据。现实中关于树结构的例子有家谱,还有公司的组织架构等。树结构的抽象:树结构的优点:每种数据结构都有自己特定的应用场景,树结合了其他数据结构(数组,链表,哈希表)的优点。在模拟某些场景时,我们使用树结构会更加的方便。因为树结构是非线性的,可以表示一对多的关系,我们可以使用树表示文件的目录结构。2.树结构的术语树(Tree):n(n>=0)个节点构成的有限集合。空树:n = 0 时,就称为一个空

2020-07-08 18:12:36 373

原创 JS数据结构(8)—— 哈希表

JS数据结构(8)—— 哈希表1.什么是哈希表?哈希表的复杂之处,就是它不好理解。它的结构就是数组,但是它神奇的地方在于对下标值的一种变换,这种变换我们可以称之为哈希函数,通过哈希函数可以获取到HashCode。哈希表是一种存储键值对的数据结构,是基于数组来实现的,哈希表内部是使用一个哈希函数把值转换成一个数字,而这个数字作为键值对的key,通过这个key来完成查询,插入,修改等操作。2.哈希表的一些概念哈希化:将大数字转化成数组范围内下标的过程。哈希函数:通常我们会将单词转换成大数字以及大数字

2020-07-08 11:30:34 317

原创 JS数据结构(7)——集合 集合(添加,删除,清空等)和集合间操作(并集,交集,差集,子集)

JS数据结构(7)——集合1.什么是集合?在ES6中提出了 set 这个数据结构,这也就是我们说的集合。集合是由一组无序的、但不能重复的元素构成的。我们可以把集合看成一个特殊的数组,特殊之处在于里面的元素,没有顺序,也不能重复。没有顺序意味着不能通过下标值来进行访问,不能重复意味着相同的对象在集合中只会存在一份。2.集合类的封装代码思路:在ES6中已经提出了 set 类,但是为了明确集合的内部实现机制,在这里我自己封装一个 Set 类。在集合中,添加一个属性,用于保存之后添加到集合中的元

2020-07-07 11:44:10 4208 1

原创 JS数据结构(6)——双向链表

JS数据结构(6)——双向链表1.什么是双向链表?单向链表要知道什么是双向链表,我们首先得了解单向链表。单向链表的详细解释在这里: JS单向链表单向链表的特点:只能从头遍历到尾链表的连接过程是单向的实现的原理是上一个链表结点中有一个指向下一个结点的next单向链表的结构:单向节点的缺点:可以轻松到达下一个节点,但是回到前一个节点是非常困难的。双向链表双向链表的特点:既可以从头遍历到尾,也可以从尾遍历到头链表连接的过程时双向的实现原理是一个链表结点,既有指向前一个

2020-07-07 00:52:36 169

原创 JS数据结构(5)——单向链表

JS数据结构(5)——单向链表链表和数组的区别:数组的优缺点:数组是最常用的数据结构,它用来存储多个元素。几乎每一种编程语言中都有默认实现数组结构,并且有很多关于数组的操作方法。数组的修改和查找操作,时间复杂度低。数组的创建通常需要申请一段连续的内存空间,并且大小是固定的,所以当当前的数组不能满足容量需求的时候,就需要扩容(一般情况下会申请一个更大的数组,比如说原数组的2倍,然后将原数组中的元素再复制过去),这对空间造成了大量浪费。而且在数组开头或者中间插入数据的成本非常高,需要进行大量元素

2020-07-06 21:16:54 187

原创 JS数据结构(4)——优先级队列

JS数据结构(4)——优先级队列优先级队列(Priority Queue):普通的队列是插入一个元素,该元素会被放在队尾,必须等到该元素前面的所有元素都处理之后才会处理该元素。但是优先级队列,在插入一个元素的时候要考虑该数据的优先级。优先级队列,在插入一个元素的时候会先和其他数据的优先级进行比较,比较完成后,得到这个元素在队列中的正确的位置,然后入队。优先级队列的其他操作,比如删除,查看队列长度等,和 普通的队列操作相同。优先级队列的实现:实现优先级队列相对于普通队列有两方面需要考虑:

2020-06-23 11:37:03 1211

原创 JS数据结构(3)——队列

JS数据结构(3)——队列

2020-06-21 00:50:31 243

原创 JS数据结构(2)——栈

JS数据结构(2)——栈栈(stack)是一种** LIFO(Last-In-First-Out,后进先出)** 的数据结构。它是一种受限的线性表,它的限制是仅允许在表的一端进行插入和删除运算,这一端就被称为栈顶,另外一端就是栈底。向一个栈添加一个新元素叫做进栈、入栈或者压栈,它是把新元素放到栈顶元素的上面,成为新的栈顶元素。从一个栈中删除元素叫做出栈或者退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。创建栈function Stack(){ this.items = [];//

2020-06-20 15:59:35 213

原创 JS数据结构(1)——数组

JS数据结构(1)——数组数据结构就是 在计算机中,存储和组织数据的方式。在编码中,我们会用到数据结构,其中数组是最简单的数据结构。数组的创建使用Array构造函数var arr1 = new Array(); //创建空数组var arr2 = new Array(1,2,3); //创建元素为1,2,3的数组var arr3 = new Array(5); //创建长度为5的数组使用Array构造函数,需要使用new关键字。使用方括号[]var arr1 = [] ;

2020-06-20 13:51:58 322

原创 JavaScript 正则表达式总结

JS正则表达式正则表达式就是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。修饰符修饰符用于执行区别大小写和全局匹配i: 执行对大小写不敏感的匹配g:执行全局匹配,查找从字符串开始到结束的所有匹配gi:执行对大小写不敏感且全局匹配m:执行多行匹配方括号方括号用于查找在某个范围内的字符[abc] 查找abc中任意字符[^abc] 查找除了abc以外的任意字符[0-9] 查找任意0-9的数字[a-z] 查找任意a-z的字符[one|two|three] 查找

2020-06-20 00:39:44 299 2

原创 js构造函数的实例成员和静态成员

js构造函数的实例成员和静态成员构造函数是一种特殊的函数,主要用来初始化对象,也就是为对象成员(属性,方法)赋初始值。Js的构造函数中可以添加一些成员,可以在构造函数本身上添加,也可以在构造函数内部的this 上添加,这两种添加方式所添加的就是静态成员和实例成员。1.实例成员实例成员就是在构造函数内部添加的成员,只能由实例化的对象来访问function Star(uname,age){...

2019-12-06 16:56:40 928

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除