Amanda-Zhang
追梦女一枚

Chunchun's Blog

Nice to meet you!
浏览器渲染
浏览器渲染原理参考:https://blog.csdn.net/Hansen_Huang/article/details/107846219 浏览器的渲染过程是一个复杂的过程,因此如何把复杂的东西简单阐述明白,是一件技术活。首先,渲染过程我们分为两个阶段来理解: 导航过程和页面解析过程。 一. 导航过程1.输入url之后开始请求,浏览器进程先把url转发给网络进程,网络进程开始真正的请求,在任务管理器可以看到浏览器的网络进程。是否之前已有缓存,是否合并为同一请求,是否为新发起的请求,都由网络进程判断处理,这里不展开说明。 2.网络进程开始DNS解析,获取服务地址的IP置地址,网络 ...

原型、原型链和原型继承
来源:https://zhuanlan.zhihu.com/p/35790971 一、原型 prototype 和 __proto__ 每个对象都有一个__proto__属性,并且指向它的prototype原型对象 每个构造函数都有一个prototype原型对象 prototype原型对象里的constructor指向构造函数本身 代码: 123456789101112131415function Person(nick, age){ this.nick = nick; this.age = age;}Person.prototype.sayName = ...

promise相关概念
promise概念 promise主要是解决回调地狱的问题。 Promise 是一个构造函数,通过new关键字实例化对象,从它可以获取异步操作的消息。 Promise的状态具有不受外界影响和不可逆两个特点。 传统的回调有五大信任问题: 调用回调过早 调用回调过晚(或没有被调用) 调用回调次数过少或过多 未能传递所需的环境和参数 吞掉可能出现的错误和异常 Promise可以解决上面的问题。 语法 1new Promise((resolve,reject)=>{}) promise实例有两个属性 1.PromiseState:状态 2.PromiseResult:结 ...

虚拟DOM和Diff算法
当我们更新了state中的值的时候,React会去调用render()方法来重新渲染整个组件的UI,但是如果我们真的去操作这么大量的DOM,显然性能是堪忧的。所以React实现了一个Virtual DOM,组件的真实DOM结构和Virtual DOM之间有一个映射的关系,React在虚拟DOM上实现了一个diff算法,当render()去重新渲染组件的时候,diff会找到需要变更的DOM,然后再把修改更新到浏览器上面的真实DOM上,所以,React并不是渲染了整个DOM树,Virtual DOM就是JS数据结构,所以比原生的DOM快得多。 用算法实现虚拟DOM: 123456789101112 ...

react相关
创建一个react文件1234第一步,全局安装:npm i -g create-react-app第二步,切换到想创项目的目录,使用命令:create-react-app hello-react第三步,进入项目文件夹:cd hello-react第四步,启动项目:npm start 下载一个图标库react-ionicons12项目文件下 安装:npm install react-ionicons@2.1.6 --save在要引用图标的对应文件下引入: import Ionicon from "react-ionicons" 使用PropTypes检查属性类型12345678在要引用的对应 ...

链表类题目
链表类常见问题无法高效获取长度,无法根据偏移快速访问元素,是链表的两个劣势。然而面试的时候经常碰见诸如获取倒数第k个元素,获取中间位置的元素,判断链表是否存在环,判断环的长度等和长度与位置有关的问题。这些问题都可以通过灵活运用双指针来解决。 Tips:双指针并不是固定的公式,而是一种思维方式~ 先来看”倒数第k个元素的问题“。设有两个指针 p 和 q,初始时均指向头结点。首先,先让 p 沿着 next 移动 k 次。此时,p 指向第 k+1个结点,q 指向头节点,两个指针的距离为 k 。然后,同时移动 p 和 q,直到 p 指向空,此时 q 即指向倒数第 k 个结点。 获取中间元素的问题,设有 ...

zj字符串类算法题
20. 有效的括号给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 示例 1: 输入:s = “()” 输出:true 示例 2: 输入:s = “()[]{}” 输出:true 示例 3: 输入:s = “(]” 输出:false 示例 4: 输入:s = “([)]” 输出:false 示例 5: 输入:s = “{[]}” 输出:true 题解遇到此类括号匹配题目,首先想到的就是栈了 ...

交换两个数
1.通常的交换两个变量a,b的过程为: 1234int temp;temp=a;a=b;b=temp; 需借助上面的第3个临时变量temp。 2.采用下面的方法,对于给定两个整数a,b,下面的异或运算可以实现a,b的交换,而无需借助第3个临时变量: 123a = a ^ b;b = a ^ b;a = a ^ b; 3.另一种方法 123a=a+b;b=a-b;a=a-b; 前提是a+b的值不能溢出。 这个交换两个变量而无需借助第3个临时变量过程,其实现主要是基于异或运算的如下性质: 1.任意一个变量X与其自身进行异或运算,结果为0,即X^X=0 2.任意一个变量X与0进行异 ...

Js中for in 和for of的区别
使用两个方法对Array,Set,Map做测试 123456789101112131415161718192021222324252627var a = ['A','B','C'];var s = new Set(['A','B','C']);var m = new Map([[1:'x'],[2:'y'],[3,'z']]);//遍历数组for(var x of a){alert(x);//输出的是值 A B C}for(var x in a){alert(x);//输出的是下标 0 1 2}//遍历Set集合for(var x of s){ ...

最长字符串前缀
题目编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入:strs = [“flower”,”flow”,”flight”] 输出:”fl” 示例 2: 输入:strs = [“dog”,”racecar”,”car”] 输出:”” 解释:输入不存在公共前缀。 题解没什么特别的,就是先将数组中第一个单词单独存起来,存到一个数组当中,然后遍历该数组和原数组从索引1开始的值,有一样的值就继续遍历,没有的话就跳出循环,最后截取一下,详情见代码。 1234567891011121314151617181920212 ...