next

HashMap 相关方法的源码?

半世苍凉 提交于 2020-08-16 03:35:00
JDK8 之前 hash:计算元素 key 的散列值 ① 处理 String 类型时,调用 stringHash32 方法获取 hash 值。 ② 处理其他类型数据时,提供一个相对于 HashMap 实例唯一不变的随机值 hashSeed 作为计算初始量。 ③ 执行异或和无符号右移使 hash 值更加离散,减小哈希冲突概率。 indexFor:计算元素下标 将 hash 值和数组长度-1 进行与操作,保证结果不会超过 table 数组范围。 get:获取元素的 value 值 ① 如果 key 为 null,调用 getForNullKey 方法,如果 size 为 0 表示链表为空,返回 null。如果 size 不为 0 说明存在链表,遍历 table[0] 链表,如果找到了 key 为 null 的节点则返回其 value,否则返回 null。 ② 如果 key 为 不为 null,调用 getEntry 方法,如果 size 为 0 表示链表为空,返回 null 值。如果 size 不为 0,首先计算 key 的 hash 值,然后遍历该链表的所有节点,如果节点的 key 和 hash 值都和要查找的元素相同则返回其 Entry 节点。 ③ 如果找到了对应的 Entry 节点,调用 getValue 方法获取其 value 并返回,否则返回 null。 put:添加元素 ①

Git Push错误:没有足够的权限向存储库数据库添加对象

ⅰ亾dé卋堺 提交于 2020-08-16 01:45:58
问题: When I try to push to a shared git remote, I get the following error: insufficient permission for adding an object to repository database 当我尝试推送到共享git远程时,出现以下错误: insufficient permission for adding an object to repository database Then I read about a fix here: Fix This worked for the next push, since all of the files were of the correct group, but the next time someone pushed up a change it made a new item in the objects folder that had their default group as the group. 然后,我在此处了解到一个修复程序: 修复 此操作适用于下一次推送,因为所有文件都属于正确的组,但是下次有人推送更改时,它将在具有默认组的对象文件夹中创建一个新项目作为组。 The only thing I can think of is to

使用IntelliJ IDEA创建Spring Boot项目

隐身守侯 提交于 2020-08-16 01:43:59
在上一篇使用Spring Initializer创建Spring Boot项目 文章中,介绍了使用Spring Initializr创建Spring Boot项目,在本篇文章中,将一步一步介绍使用IntelliJ IDEA创建Spring Boot项目。 如果你尚未安装IntelliJ IDEA,你可以访问下面的连接,下载最新版的IntelliJ IDEA安装包进行安装: https://www.jetbrains.com/idea/ jetbrains官网 注:本系列教程默认使用IntelliJ IDEA作为代码编辑和调试工具,值得注意的是,如果习惯STS(Spring Tool Suite)的朋友都知道,在STS中有工作区的概念,而在IDEA中,则没有工作区的概念。在IDEA中Project类似于STS的Workspace,而IDEA中的Module类似于STS中的Project。 1. 在IDEA中创建Spring Boot项目 在开始详细介绍每个步骤之前,先通过一个简短的gif短片了解在IDEA中创建Spring Boot项目需要经过哪些步骤: IDEA中创建Spring Boot项目示例动画 请按照如下步骤进行操作: 1.1 创建新的Module 在IDEA的导航栏菜单中,依次点击File -> New -> Module…,进入Module编辑界面:

如何在悬停而不是单击时使Twitter Bootstrap菜单下拉列表

偶尔善良 提交于 2020-08-15 22:33:49
问题: I'd like to have my Bootstrap menu automatically drop down on hover, rather than having to click the menu title. 我想让我的Bootstrap菜单在悬停时自动下拉,而不必单击菜单标题。 I'd also like to lose the little arrows next to the menu titles. 我还想丢失菜单标题旁边的小箭头。 解决方案: 参考一: https://stackoom.com/question/bFa5/如何在悬停而不是单击时使Twitter-Bootstrap菜单下拉列表 参考二: https://oldbug.net/q/bFa5/How-to-make-Twitter-Bootstrap-menu-dropdown-on-hover-rather-than-click 来源: oschina 链接: https://my.oschina.net/u/4428122/blog/4311419

链表

北战南征 提交于 2020-08-15 21:44:36
语雀入口   https://www.yuque.com/along-n3gko/ezt5z9 介绍   要存储多个元素,一般都会选择数组,但是这种数据结构有一个缺点:一般数组的大小都是固定的,从数组的起点或中间插入或移除元素成本有点高。这时候就可以选择链表。 链表存储有序的元素集合,但不同于数组,链表的元素在内存中不是连续放置的,每个元素由一个存储元素本身的节点个指向下一个元素的引用组成。   相对于传统的数组,链表的一个好处在于,添加或移除元素的时候不需要移动其他元素。然 而,链表需要使用指针,因此实现链表时需要额外注意。数组的另一个细节是可以直接访问任何 位置的任何元素,而要想访问链表中间的一个元素,需要从起点(表头)开始迭代列表直到找到所需的元素。 创建链表 1 function LinkedList() { 2 let Node = function (element){ // Node辅助类,要加入列表的项。element要加入的值,next表示指向列表下一个节点 3 this .element = element; 4 this .next = null ; 5 }; 6 let length = 0; // 存储列表项数量 7 let head = null ; // 存储第一个节点的引用,存到变量head中。 8 this .append = function

ConcurrentHashMap 源码分析

大兔子大兔子 提交于 2020-08-15 21:37:08
和 HashMap 不同的是, ConcurrentHashMap 采用分段加锁的方式保障线程安全 ,JDK 1.8 之后,ConcurrentHashMap 的底层数据结构从 1.8 开始跟 HashMap 差不多。 HashTable 也是线程安全的,存储 Key-Value 键值对的数据结构, Key 和 Value 都不能为空,但不推荐使用,因为其所有的方法采用 synchronized 修饰,效率低。 Key 和 Value 都不能为 Null 的原因是:如果 map.get(key) 返回 null,可以认为是 value 的值本来就是 null,也可以认为 map 中不存在 key 的存储数据, 因此具有二义性 ,但 HashMap 在单线程环境,可以通过 map.containsKey(key) 判断,消除而已性。 但在多线程环境中,map.get(key) 和 map.containsKey(key) 是非原子的操作,可能在线程 A 的两个语句运行之间,其他线程 B 运行 map.put(key,value), 导致线程 A 无法消除上面的二义性 。 参考 https://www.cnblogs.com/thisiswhy/p/12059240.html 下图是 ConcurrentHashMap 的 UML 关系图。 1、底层存储结构 1.1、JDK 1.7

轻松学 Redux-Saga 视频教程(16 个视频)

放肆的年华 提交于 2020-08-15 16:01:25
轻松学 Redux-Saga 视频教程(16 个视频) 轻松学 Redux-Saga #1 课程简介与 Redux-Saga 介绍 「07:05」 轻松学 Redux-Saga #2 准备环境和安装 Redux 「04:52」 轻松学 Redux-Saga #3 Redux-Saga 的安装和输写第一个 Saga 「07:59」 轻松学 Redux-Saga #4 es6 的 generator part 1 介绍 「05:13」 轻松学 Redux-Saga #5 es6 的 generator part 2 next 方法传参数 「Pro」「05:06」 轻松学 Redux-Saga #6 es6 的 generator part 3 生成器的意义 「Pro」「07:16」 轻松学 Redux-Saga #7 es6 的 generator part 4 自动执行生成器 「Pro」「07:24」 轻松学 Redux-Saga #8 使用 Redux-Saga 处理异步事件 「Pro」「08:00」 轻松学 Redux-Saga #9 实例演练 takeEvery 和 takeLatest 的区别 「Pro」「04:50」 轻松学 Redux-Saga #10 call 方法 「Pro」「03:15」 轻松学 Redux-Saga #11 实例讲解发送 ajax 请求 「Pro」

python日记—函数生成器

我们两清 提交于 2020-08-15 15:51:41
# 求斐波那数列 :1,1,2,3,5,8,13,21,34...... ''' 函数生成器,关键字 yield ''' def get_fbn(max_num): a = 0 b = 1 c = list() while b <= max_num: tmp = a a = b b += tmp c.append(a) yield c # 返回c,并且暂停当前函数 if __name__ == '__main__': func = get_fbn(10) # 下面每执行一次func,则继续从get_fbn上次暂停位置继续执行 print(func.__next__()) # 输出:[1] print('xxxxxxx') print(func.__next__()) # 输出:[1, 1] print('xxxxxxx') print(func.__next__()) # 输出:[1, 1, 2] print('xxxxxxx') print(func.__next__()) # 输出:[1, 1, 2, 3] print('xxxxxxx') print(func.__next__()) # 输出:[1, 1, 2, 3, 5] print('xxxxxxx') print(func.__next__()) # 输出:[1, 1, 2, 3, 5, 8] 来源: oschina

【微思网络】思科CCNA/CCNP/CCIE 技术分享之策略路由的实现案例

笑着哭i 提交于 2020-08-15 15:07:28
策略路由配置案例 网络拓扑 说明:用户使用 NBR2000 作为网吧出口路由器,接入线路共 3 条,两条电信线路,一条 网通线路。由于 NBR2000 只有 2 个 WAN 口,因此两条电信线路通过一台二层交换机连接到 NBR2000 的 WAN 0 口上,WAN 0 口配置两个 IP 地址(其中一个为 second ip),WAN 1 口连接 网通线路。IP 地址如图所示。 功能需求: 访问网通的网络走网通线路,访问其他网络使用负载均衡的方式分别走两条电信线路。 这是一种以前很少碰到的方案需求。 配置实现: access-list 90 permit 192.168.0.0 0.0.0.254 access-list 91 permit 192.168.0.1 0.0.0.254 //定义偶数 IP //定义奇数 IP route-map Telcom permit 10 match ip address 90 set ip default next-hop 202.109.204.1 //定义偶数 IP 往电信 1 线路转发 route-map Telcom permit 20 match ip address 91 set ip default next-hop 61.154.8.1 //定义奇数 IP 往电信 2 线路转发 ip nat pool pool1 prefix

向经济衰退宣战[转载]

夙愿已清 提交于 2020-08-15 14:35:08
导读 1 听力|精读|翻译|词组 Bartleby 来自一天一篇经济学人 00:00 05:27 Waging war on recessions 向经济衰退宣战 英文部分选自经济学人20200620 期Business版块 Waging war on recessions 向经济衰退宣战 An early analysis of Denmark’s furlough scheme 丹麦带薪休假计划的早期分析 Since the emergence of the welfare state, adults who want to work have generally found themselves in one of two positions: earning a wage from their job or receiving unemployment benefits. The pandemic has led many people to find themselves in a halfway stage— furlough . This often involves the state paying a large slice of employees’ wages so that firms can keep them on the payroll during