一、HashMap底层数据结构 JDK1.7及之前:数组+链表 JDK1.8:数组+链表+红黑树 HashMap中实际是维护了一个Node数组,用来存储数据,下面看一下Node源码: static...this.key = key; this.value = value; this.next = next; } 简单介绍一下Node中的属性...二、HashMap add() 分析一波add()源码,上代码: //hash值和元素的hashCode()方法相关 final V putVal(int hash, K key, V value...如果哈希值不同,会继续向下执行,把元素添加到集合 如果哈希值相同,会调用对象的equals()方法比较...= null && key.equals(k)))) e = p; // 如果数组中的链表已经转为树结构,则使用树类型的put
add方法添加时,如果存在返回false set方法添加时,如果存在就是覆盖,不存就是添加 1. set方法会在设置时,同时更新缓存的过期时间,这个地方如果是做频率限制功能,时间一定要过期时,注意不要使用这个方法...如果要做频率限制功能,可以使用add和increment方法配合 , 这样不会覆盖掉过期时间
JS中的数组方法总结 Array.push() 向数组的末尾添加一个或者多个元素,并返回新的长度 let arr =[1,2,3]; console.log(arr.push(6)) //打印结果为...(arr) //打印结果 [1,a] Array.slice(a,b) 将数组中的一部分选取出来并返回成新数组,不改变原数组,不包括结束位置。...(arr) //打印结果 [1,2,3,4] Array.concat(arr1,arr2) 连接2个或者更多的数组,并返回连接后的新数组,该方法不会改变原数组 let arr1 = [1,2,3...this指向,因此如果想用thisValue参数必须使用function函数 Array.map() 对数组中的每个元素进行重新编辑,返回用编辑结果组成的新数组,传递的参数和forEach()一样...) //结果 2 Array.findIndex() 返回数组中符合条件的第一个元素的下标,若数组中没有元素符合要求则返回-1,不改变原数组 let arr = [1,2,3] console.log
Js中fetch方法 fetch()方法定义在Window对象以及WorkerGlobalScope对象上,用于发起获取资源的请求,其返回一个Promise对象,这个Promise对象会在请求响应后被resolve...init: 一个配置项对象,包括所有对请求的设置。可选的参数有: method: 请求使用的方法,如GET、POST。...Headers.delete(): 从Headers对象中删除指定header。 Headers.entries(): 以迭代器的形式返回Headers对象中所有的键值对。...Headers.get(): 以ByteString的形式从Headers对象中返回指定header的全部值。...Headers.has(): 以布尔值的形式从Headers对象中返回是否存在指定的header。 Headers.keys(): 以迭代器的形式返回Headers对象中所有存在的header名。
* 11 * TreeSet集合的特点:排序和唯一 12 * 13 * 通过观察TreeSet的add()方法,我们知道最终要看TreeMap的put()方法。...(i); 38 } 39 } 40 } TreeSet集合的add()方法的源码 --------------------------------------- interface...这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。。...do { // 举例中我们使用的是包装类Intrger,而Integer类实现了Comparable接口...parent = t; cmp = k.compareTo(t.key); // 类的 compareTo 方法被称为它的自然比较方法。
self.b = b def __str__(self): return 'Vector (%d, %d)' % (self.a, self.b) def __add
// 对象里的方法写的是箭头函数,this始终访问全局 var name = "xiaoming"; var obj1...let getName11 = obj1.getName.bind(obj1); getName11(); // xiaoming // 对象的方法写的...function 声明,直接调用 this 指向对象本身,将调用的方法单独保存起来调用,this 指向全局,通过bind 改写 this 指向后,可以继续指向 对象本身 var
在 JavaScript 中, 可以使用以下代码来读取 cookie: var x = document.cookie; cookie 的操作,添加,修改,删除等,没有提供对应的方法,需要自己去处理document.cookie...中的字符串。...,其中提供了许多操作Cookie的方法: //创建一个Cookie,属性默认 Cookies.set('password', '123456'); //创建一个Cookie,设置属性:有效天数,path...,一般会有八小时时差 Cookies.remove("password"); 我们可以发现js-cookie中的API的使用和jQuery Cookie是非常类似的,参数列表基本一致,因此使用起来也是上手很快...总结: jQuery Cookie、js-cookie的使用方法,两者的使用非常类似,大家也可以根据自己的喜欢来选择,无论哪种,都会比原生的js要方便。
9 * 通过查看add方法的底层源码,我们知道这个方法的底层依赖两个方法:hashCode()和equals()。...18 * 19 * 按照方法的步骤来说: 20 * 先看hashCode()值是否相同 21 * 相同:继续走equals()方法 22 *...* 26 * 如果类没有重写这两个方法,默认使用的Object的方法。...27 * 而String类重写了hashCode()和equals()方法,所以,它就可以把内容相同的字符串去掉。只留下一个元素。...()方法相关,即和对象的哈希值相关 int i = indexFor(hash, table.length); // 在哈希表中查找hash值 for (Entry<K,
执行完 git add . 才发现没有在对应的分支,如何撤回呢?...可以参考下面的方法: 文件退出暂存区,但是修改保留: git reset --mixed 撤销所有的已经 add 的文件: git reset HEAD ....未经允许不得转载:w3h5 » 撤销 git add . 并保留修改的方法
JS中的字符串方法总结 charAt(i) 将字符串中下标为 i 的字符返回,下标从0开始。...编码转换为字符串返回 console.log(String.fromCharCode(97,98,99)) // ‘abc’ str.indexOf(start) 查询一个字符或一段字符串在总字符串中第一次出现的下标位置...(‘o’)) // 7 match() 根据正则表达式在字符串中搜索匹配项,没有匹配到的话返回一个信息数组或者null let zz = /.jpgKaTeX parse error: Can't...(zz)) // 4 str.slice(参数1,参数2) 提取字符串中的某个部分(不包括end),返回新的字符串 let str = ‘hello world’ console.log(str.slice...() 将字符串中的字母变为小写 let str = ‘HELLO WORLD’ console.log(str.toLowerCase()) //‘hello world’ toUpperCase
---在JavaScript中,有几种常用的方法可以用来遍历对象:for...in循环使用for...in循环可以遍历一个对象中的所有可枚举属性。它会将属性名逐个赋值给循环变量,并执行循环体内的代码。...如果只想遍历对象自身的属性,可以通过hasOwnProperty()方法来判断属性是否为对象自身的属性。...for (let key in obj) { if (obj.hasOwnProperty(key)) { console.log(key, obj[key]); }}在遍历过程中,属性名会被赋值给循环变量...Object.keys()和Object.getOwnPropertyNames()方法只会返回对象自身的属性(包括可枚举和不可枚举属性),而不会返回继承的属性。...你可以选择其中一种方法根据需要遍历对象的属性。Object.keys()方法结合forEach()循环Object.keys(obj)会返回一个包含对象自身可枚举属性的数组。
COPY 和 ADD 命令不能拷贝上下文之外的本地文件 对于 COPY 和 ADD 命令来说,如果要把本地的文件拷贝到镜像中,那么本地的文件必须是在上下文目录中的文件。...在设置了 WORKDIR 命令后,接下来的 COPY 和 ADD 命令中的相对路径就是相对于 WORKDIR 指定的路径。...是单个字符的占位符,比如匹配文件 check1.log 对于目录而言,COPY 和 ADD 命令具有相同的特点:只复制目录中的内容而不包含目录自身。...,并且还可以完成两类超酷的功能: 解压压缩文件并把它们添加到镜像中 从 url 拷贝文件到镜像中 当然,这些功能也让 ADD 命令用起来复杂一些,不如 COPY 命令那么直观。...ADD 命令在增加了功能的同时也增加了使用它的复杂度,比如从 url 拷贝压缩文件时弊大于利。希望本文能够解去大家对 Dockerfile 中 COPY 和 ADD 命令的疑惑。
返回一个数组的引用,不会创建新的数组对象而是将原数组改变成排序后的数组。 无参调用: 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,按照字符编码的顺序进行排序。...带参调用: 如果想要自己规定排序方式,就需要在sort()方法中提供一个比较函数,该函数要比较两个值即有两个形参a 和 b,函数执行时浏览器会将数组中的元素依次作为实参传入,返回一个用于说明这两个值的相对顺序的数字...sort()方法会根据函数返回值来进行数组元素的交换。返回值如下: 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。 若 a 等于 b,则返回 0。...三.对sort(sortby)方法的理解: sort()方法主要依靠其回调函数来进行排序,回调函数中需要两个参数,在执行sort()方法时会调用回调函数,这时会将调用sort()方法的数组中的元素作为实参两两依次作为回调函数实参传入...以上是关于JS中sort函数的小结,后续遇到新的问题再继续更新!
给大家分享一个用原生JS编写的拖拽及拖拽方法继承的 小Demo,代码如下。 中的拖拽方法继承 #div1 { width: 100px; height: 100px;...that.fnDown(ev); return false; }; }; // 拖拽父级对象原型上添加鼠标落下时的方法...= function () { that.fnUp(); }; }; // 拖拽父级对象原型上添加鼠标移动时的方法...new Drag('div1'); // div2在拖动过程中通过将方法改写加上边界限制 new LimitDrag('div2
JS中的call()和apply()方法 1、方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,...说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。...alert(a-b); 8 } 9 10 add.call(sub,3,1); 这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add...(3,1) ,所以运行结果为:alert(4); // 注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。...Animal对象代替this对象,那么 Cat中不就有Animal的所有属性和方法了吗,Cat对象就能够直接调用Animal的方法以及属性了.
介绍:call与apply都属于Function.prototype的一个方法,所以每个function实例都有call、apply属性 1.改变函数内部的this指向: // 有一个局部的test2...方法, // test2被作为普通函数调用时, // test2内部的this指向了window, // 但我们往往是想让它指向该#test节点,见如下代码: document.querySelector...= function(){ console.log(this) } function test3(){ console.log(this) } test3.call(this) //改变了test2的this...指针 test2.call(this) } 2.使用call来实现构造函数的继承。...已经继承了oneObj的属性。
改变原数组的方法 1. push( ) :数组的尾部添加一个或多个元素 并返回新的长度 // Base var arr = [123, 'hello', true, function...并返回新的长度 // Base var arr = [123, 'hello', true, function () { }, {}]; arr.unshift('new data') console.log...('a', 'b') // 一次添加多个值 console.log(arr); // [ 'a', 'b',123, 'hello', true, ƒ, {…}] 3. pop( ) :删除数组的最后一个元素并返回删除的元素...Apple", "Strawberry"]; arr.pop() console.log(arr); // ["Banana", "Orange", "Apple"] 4. shift( ) :删除数组的第一个元素并返回删除的元素...)item1,item2,item3…表示要添加到数组的新元素 var arr= ["Banana", "Orange", "Apple", "Strawberry"]; arr.splice(2,1,
js中有深拷贝和浅拷贝两种复制形式,下面总结一下常用方法,方便平时工作复习使用 一、浅拷贝 1、json对象浅拷贝 var newObj = JSON.parse(JSON.stringify( someObj...*/ 二、深拷贝 1、借助lodash的merge方法 import merge from "lodash/object/merge"; function commentsById(state = {....extend() 如果没有第一个参数则为浅拷贝 $.extend(true, {}, obj) 5、JSON对象的方法 var obj2 = JSON.parse(JSON.stringify(obj1...)) 熟悉js的人对这两个方法肯定不陌生,利用原生JSON对象的两个可以非常方便地实现对象的深复制。...这种方法也有弊端: 只能复制能用json表示的属性,比如String、Number、Array等,对于不能用json表示的属性例如Function、Regexp等则会丢失 对象的原型链丢失 复制效率较低
图丨pixabay Java List.add()方法:向集合列表中添加对象 Java 集合类中的 List.add() 方法用于向集合列表中添加对象。 语法1 用于在列表的尾部插入指定元素。...如果 List 集合对象由于调用 add 方法而发生更改,则返回 true;否则返回 false。 add(E e) 参数说明: e:要添加到列表中的元素。...示例 本示例使用 List 接口的实现类 ArrayList 初始化一个列表对象,然后调用 add 方法向该列表中添加数据。...典型应用 本示例定义 List 类型集合变量,并使用add方法向集合的末尾与集合的指定位置添加元素,然后将添加后的元素输出。...("保护环境"); //向列表中添加数据 list.add("爱护地球"); //向列表中添加数据 list.add("从我做起"); //向列表中添加数据 list.add