1、apply方法和call、bind方法的不同之处是它们的传参形式,前者是通过数组的方式去传参,而后者则是通过参数列表的方式传参。2、那么bind方法和call、apply方法的不同之处是,bind 是创建一个新的函数,我们必须要手动去调用,而后者不会。3、总之它们的共同特点就是改变this的指向...
JVM 的内存模型JVM的内存模型,往往是指Java程序在运行时内存的模型,运行时内存模型,分为线程私有和共享数据区两大类,其中线程私有的数据区包含程序计数器、虚拟机栈、本地方法区,所有线程共享的数据区包含Java堆、方法区。方法区(Method Area)方法区的作用与传统语言中的编译代码储存区非...
一、并查集的原理并查集(Union-Find)是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。主要涉及两种操作:合并和查找。 具体地说,初始状态下,并查集中的元素是互不相交的,经过一系列操作(Union)后,合并成一个集合。 而在进行了某次合并之后,如果想知道:某两个元素是否已经处在同...
有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files ...,有强迫症的童鞋心里肯定不爽。好在Git考虑到了大家的感受,这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的...
线程池中的共享我们在多线程中,很少会直接 new 一个线程,更多的可能是利用线程池处理任务,那么利用 InheritableThreadLocal 可以将生成任务线程的上下文传递给执行任务的线程吗?废话不多说,直接上代码测试一下:public class InheritableThreadLocal...
要理解DOM相关事件,我们先要理解“事件流”这个概念,事件流描述的是从页面中接收事件的顺序。事件冒泡:事件开始由最具体的元素接收,然后逐级向上传播到较为不具体的节点或文档。事件捕获:事件开始由不太具体的节点接收,然后逐级向下传播到最具体的节点。它与事件冒泡是个相反的过程。DOM2 级事件规定的事件流...
简单认识Axios,Axios到底是个啥?Axios是一个基于Promise封装的HTTP库,打个比方,就像是Jquery里面的Ajax一样,用于HTTP请求。(这里肯定有人要问我Axios能不能请求https了,咱们y1s1,可以请求,但是由于Axios的证书是自签发的,浏览器并不认同,所以是不...
为何使用Prettier多人协作的项目开发中,保持统一的代码风格是一件很重要的事。可团队里总有一些不服管的刺头,说什么也不愿意被约束,怎么开心就怎么来!可是统一代码风格后的好处又非常明显:整齐的步伐更少的垃圾代码(漂亮的格式意味着更好维护的代码)基于以上两点,更强的团队战斗力所以,我们需要一个工具将...
.filter是一个内置的数组迭代方法,它接受一个“谓词(译者注: 指代一个过滤条件的函数)”,该“谓词”针对每个值进行调用,并返回一个符合该条件(“truthy值”)的数组。上面那句话包含了很多信息,让我们来逐一解答一下。“内置”只是意味着它是语言的一部分 - 您不需要添加任何库来访问此功能。“迭...
之前为了学习 go 写了两个小项目,fastcgi-go 和 mysql-proxy 都是用了 go 来处理二进制包,从而实现一些协议(fastcgi 协议 和 mysql 协议)之后感觉各种应用协议并不是高深复杂的东西,只要跟着协议走就能跑通它。这次有点好奇 websocket 是什么协议,和 s...
1. 箭头函数箭头函数排在第一个是因为它的 this 不会被改变,所以只要当前函数是箭头函数,那么就不用再看其他规则了。箭头函数的 this 是在创建它时外层 this 的指向。这里的重点有两个:创建箭头函数时,就已经确定了它的 this 指向。箭头函数内的 this 指向外层的 this。所以要知...
悲观锁和乐观锁我们可以将锁大体分为两类:悲观锁乐观锁顾名思义,悲观锁总是假设最坏的情况,每次获取数据的时候都认为别的线程会修改,所以每次在拿数据的时候都会上锁,这样其它线程想要修改这个数据的时候都会被阻塞直到获取锁。比如MySQL数据库中的表锁、行锁、读锁、写锁等,Java中的synchronize...
现在线上的vue项目代码修改了,svn更新后,在windows下输入命令:npm run dev 报错,windows下的报错已经解决,没有截图了,这个是linux下的截图,基本报错都是差不多的,如下图:这个是因为node-sass没安装好,所以要重新安装国内只能用淘宝的镜像windows下运行命令...
前序遍历的关键在于:先遍历根节点,再遍历左子树,再遍历右子树。即:根→左→右(1) 递归写法对于递归写法大家肯定都是非常清楚的,因为它的代码很简单,也比较容易理解,如下:class Solution { List<Integer> res = new ArrayList<&g...
什么是CSRFCSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。一个典型的CSRF攻击有着...
JS性能优化策略JS 是一门弱类型语言,拥有独特的原型链机制,在宿主中的拥有一套 DOM、BOM 操作接口,增加其性能控制的复杂性。JavaScript 主要应用场景依然围绕浏览器展开,所以,它在浏览器中的行为表现依然重要。本篇将从笔者的实践经验出发,分别从加载解析、语法优化、DOM 操作等各方面归...
前几天二面阿里,面试完做两道编程题,其中一题就是关于对象的扁平化,题目细节如下:// 实现一个 flatten 函数,实现如下的转换功能const obj = { a: 1, b: [1, 2, { c: true }], c: { e: 2, f: 3 }, g: null,};// 转...
1. 当使用索引列进行查询的时候尽量不要使用表达式,把计算放到业务层而不是数据库层如下图 两个sql的结果是一样的,但是两个sql的执行计划是不一样,在type中index的效率远不如const where条件中 actor_id+4 表达式影响了执行计划 2. 尽量使用主键查询,而不是其他索引,主...
1 . 校验密码强度密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 2. 校验中文字符串仅能是中文。^[\\u4e00-\\u9fa5]{0,}$ 3. 由数字、26个英文字母或下划...
手写EventEmitter我犹豫了一会儿,想到使用EventEmitter2时,主要是用emit发事件,用on监听事件,还有off销毁事件监听者,removeAllListeners销毁指定事件的所有监听者,还有once之类的方法。考虑到时间关系,我想着就先实现发事件,监听事件,移除监听者这几个功...