JVM 的内存模型JVM的内存模型,往往是指Java程序在运行时内存的模型,运行时内存模型,分为线程私有和共享数据区两大类,其中线程私有的数据区包含程序计数器、虚拟机栈、本地方法区,所有线程共享的数据区包含Java堆、方法区。方法区(Method Area)方法区的作用与传统语言中的编译代码储存区非...
有些时候,你必须把某些文件放到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的证书是自签发的,浏览器并不认同,所以是不...
.filter是一个内置的数组迭代方法,它接受一个“谓词(译者注: 指代一个过滤条件的函数)”,该“谓词”针对每个值进行调用,并返回一个符合该条件(“truthy值”)的数组。上面那句话包含了很多信息,让我们来逐一解答一下。“内置”只是意味着它是语言的一部分 - 您不需要添加任何库来访问此功能。“迭...
之前为了学习 go 写了两个小项目,fastcgi-go 和 mysql-proxy 都是用了 go 来处理二进制包,从而实现一些协议(fastcgi 协议 和 mysql 协议)之后感觉各种应用协议并不是高深复杂的东西,只要跟着协议走就能跑通它。这次有点好奇 websocket 是什么协议,和 s...
1. 箭头函数箭头函数排在第一个是因为它的 this 不会被改变,所以只要当前函数是箭头函数,那么就不用再看其他规则了。箭头函数的 this 是在创建它时外层 this 的指向。这里的重点有两个:创建箭头函数时,就已经确定了它的 this 指向。箭头函数内的 this 指向外层的 this。所以要知...
悲观锁和乐观锁我们可以将锁大体分为两类:悲观锁乐观锁顾名思义,悲观锁总是假设最坏的情况,每次获取数据的时候都认为别的线程会修改,所以每次在拿数据的时候都会上锁,这样其它线程想要修改这个数据的时候都会被阻塞直到获取锁。比如MySQL数据库中的表锁、行锁、读锁、写锁等,Java中的synchronize...
前序遍历的关键在于:先遍历根节点,再遍历左子树,再遍历右子树。即:根→左→右(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之类的方法。考虑到时间关系,我想着就先实现发事件,监听事件,移除监听者这几个功...
XSS 攻击的介绍在开始本文之前,我们先提出一个问题,请判断以下两个说法是否正确:XSS 防范是后端 RD(研发人员)的责任,后端 RD 应该在所有用户提交数据的接口,对敏感字符进行转义,才能进行下一步操作。所有要插入到页面上的数据,都要通过一个敏感字符过滤函数的转义,过滤掉通用的敏感字符后,就可以...
1. MySQL 索引使用有哪些注意事项呢?可以从两个维度回答这个问题:索引哪些情况会失效,索引不适合哪些场景 索引哪些情况会失效查询条件包含 or,会导致索引失效。隐式类型转换,会导致索引失效,例如 age 字段类型是 int,我们 where age = “1”,这样就会触发隐式类型转换。lik...
1.不一样的变量声明:const和letES6推荐使用let声明局部变量,相比之前的var(无论声明在何处,都会被视为声明在函数的最顶部) let和var声明的区别:var x = '全局变量';{ let x = '局部变量'; console.log(x); // 局部变量}console...
简单工程打包下面通过 Webpack 构建一个采用 CommonJS 模块化编写的项目,该项目有个网页会通过 JavaScript 在网页中显示 Hello,Webpack。运行构建前,先把要完成该功能的最基础的 JavaScript 文件和 HTML 建立好,需要如下文件:页面入口文件 index...