一、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方法配合 , 这样不会覆盖掉过期时间
大家好,又见面了,我是你们的朋友全栈君。 indexOf()简介 indexOf()是js中内置的方法之一,它的功能大家都很熟悉:简单来说就是得到数据的索引,对于正则不熟练的人,是个很不错的方法。...) 注:(暂不讨论两个参数时(第二个参数为查询的起始位置),以及lastIndexOf()) String类型使用indexOf(); String中的indexOf方法 (话不多说直接上代码,不跟你多...()是对数据进行了隐式类型转换的,如果参数是数值它会转换为字符来进行查询然后返回索引,本质原因是什么呢,那就是 我们js底层代码中String.prototype.indexOf()使用的是==进行比较判断...; Number类型的IndexOf() 醒醒,Number类型哪来的indexOf()方法,会直接报错的好吗, 如果想对数值类型的进行查询索引,可以将数值转换为字符再进行查询,方法有很多: –...()是不会进行隐式类型转换的,也就是说Array.prototype.indexOf()底层代码在实现的时候使用的是强等于=== 严格比较; 总结 string中indexOf() 会将数值参数转换为字符再查询索引
大家好,又见面了,我是你们的朋友全栈君。 JavaScript中的splice主要用来对js中的数组进行操作,包括删除,添加,替换等。...1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数) 2.插入-向数组指定位置插入任意项元素。...三个参数,第一个参数(插入位置),第二个参数(0),第三个参数(插入的项) 3.替换-向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。...第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项) 示例: 1、删除功能,第一个参数为第一项位置,第二个参数为要删除几个。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
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名。
大家好,又见面了,我是你们的朋友全栈君。 js中的join方法 join方法用于把数组中的所有元素放入一个字符串。 元素是通过指定的分隔符进行分隔的。...大白话:join方法可以用符不同的分隔符来构建这个字串。join方法值接受一个参数,即用作分隔符的字符串,然后返回所有数组项的字符串。...var arr = ["red","yellow","blue"]; var array = []; 下面开始调用join方法 1 array = arr.join(undefined); console.log...因为join方法的参数不传或者传入undefined会默认用逗号分隔。...join参数使用” | “来分隔的,字符串是什么就用什么来分隔。
self.b = b def __str__(self): return 'Vector (%d, %d)' % (self.a, self.b) def __add
* 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 方法被称为它的自然比较方法。
// 对象里的方法写的是箭头函数,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要方便。
执行完 git add . 才发现没有在对应的分支,如何撤回呢?...可以参考下面的方法: 文件退出暂存区,但是修改保留: git reset --mixed 撤销所有的已经 add 的文件: git reset HEAD ....未经允许不得转载:w3h5 » 撤销 git add . 并保留修改的方法
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,
COPY 和 ADD 命令不能拷贝上下文之外的本地文件 对于 COPY 和 ADD 命令来说,如果要把本地的文件拷贝到镜像中,那么本地的文件必须是在上下文目录中的文件。...在设置了 WORKDIR 命令后,接下来的 COPY 和 ADD 命令中的相对路径就是相对于 WORKDIR 指定的路径。...是单个字符的占位符,比如匹配文件 check1.log 对于目录而言,COPY 和 ADD 命令具有相同的特点:只复制目录中的内容而不包含目录自身。...,并且还可以完成两类超酷的功能: 解压压缩文件并把它们添加到镜像中 从 url 拷贝文件到镜像中 当然,这些功能也让 ADD 命令用起来复杂一些,不如 COPY 命令那么直观。...ADD 命令在增加了功能的同时也增加了使用它的复杂度,比如从 url 拷贝压缩文件时弊大于利。希望本文能够解去大家对 Dockerfile 中 COPY 和 ADD 命令的疑惑。
大家好,又见面了,我是你们的朋友全栈君。 append():前面是被插入的对象。最后面增加子元素,父子级关系。 appendto():后面是被插入对象。最后面增加子元素,父子级关系。...DOCTYPE html> js中常用追加元素的几种方法 js...append("我是子元素append"); }); //appendTo(),将子元素追加到父级的最后...p class='siblings'>我是同级元素before"); }); //insertAfter(),将元素追加到指定对象的后面
---在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)会返回一个包含对象自身可枚举属性的数组。
返回一个数组的引用,不会创建新的数组对象而是将原数组改变成排序后的数组。 无参调用: 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,按照字符编码的顺序进行排序。...带参调用: 如果想要自己规定排序方式,就需要在sort()方法中提供一个比较函数,该函数要比较两个值即有两个形参a 和 b,函数执行时浏览器会将数组中的元素依次作为实参传入,返回一个用于说明这两个值的相对顺序的数字...sort()方法会根据函数返回值来进行数组元素的交换。返回值如下: 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。 若 a 等于 b,则返回 0。...三.对sort(sortby)方法的理解: sort()方法主要依靠其回调函数来进行排序,回调函数中需要两个参数,在执行sort()方法时会调用回调函数,这时会将调用sort()方法的数组中的元素作为实参两两依次作为回调函数实参传入...以上是关于JS中sort函数的小结,后续遇到新的问题再继续更新!
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
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的方法以及属性了.
给大家分享一个用原生JS编写的拖拽及拖拽方法继承的 小Demo,代码如下。 中的拖拽方法继承 #div1 { width: 100px; height: 100px;...that.fnDown(ev); return false; }; }; // 拖拽父级对象原型上添加鼠标落下时的方法...= function () { that.fnUp(); }; }; // 拖拽父级对象原型上添加鼠标移动时的方法...new Drag('div1'); // div2在拖动过程中通过将方法改写加上边界限制 new LimitDrag('div2
领取专属 10元无门槛券
手把手带您无忧上云