为什么都说HashMap是线程不安全的呢?它在多线程环境下,又会发生什么情况呢? resize死循环 我们都知道HashMap的初始容量是16,一般来说,当插入数据时,都会检查容量有没有超过设定的thredhold,如果超过容量,就需要增大Hash表的尺寸,但是这样一来,整个Hash表内的元素都需要 ...
分类:
其他好文 时间:
2018-05-31 10:38:57
阅读次数:
173
[client] port = 3306 socket = /var/lib/mysql/mysql.sock [mysql] #这个配置段设置启动MySQL服务的条件;在这种情况下,no-auto-rehash确保这个服务启动得比较快。 no-auto-rehash [mysqld] user = ...
分类:
数据库 时间:
2018-04-20 14:34:43
阅读次数:
193
了解HashMap的人都知道HashMap是线程不安全的(多线程下的put方法达到一定大小,引发rehash,导致闭链,最终占满CPU),同时线程安全的HashTable效率又令人望而却步(每个方法都进行同步,效率低下),所以在这种情境下为并发而生的ConcurrentHashMap就应运而生! 接 ...
分类:
其他好文 时间:
2018-04-12 22:23:44
阅读次数:
176
虽然在hashmap的原理里面有这段,但是这个单独拿出来讲rehash或者resize()也是极好的。 什么时候扩容:当向容器添加元素的时候,会判断当前容器的元素个数,如果大于等于阈值 即当前数组的长度乘以加载因子的值的时候,就要自动扩容啦。 扩容(resize)就是重新计算容量,向HashMap对 ...
分类:
其他好文 时间:
2018-04-08 13:17:11
阅读次数:
187
mysql命令常用参数实例讲解以下是mysql命令常用的参数,配合实例进行简单讲解1,auto-rehash自动补全(表名及表中字段)---------------------------------------[mysql]#no-auto-rehashauto-rehash---------------------------------------mysql-uroot--auto-reha
分类:
数据库 时间:
2018-03-31 21:25:52
阅读次数:
223
[client]
default-character-set = utf8mb4
[mysql]
#开启 tab 补全
#auto-rehash
default-character-set = utf8mb4
[mysqld]
port=3306basedir=/data/server/mysql57/datadir=/data/se
分类:
数据库 时间:
2018-03-30 10:50:55
阅读次数:
302
这配置已经优化的不错了,如果你的mysql没有什么特殊情况的话,可以直接使用该配置参数 MYSQL服务器my.cnf配置文档详解硬件:内存16G [client]port = 3306socket = /data/3306/mysql.sock [mysql]no-auto-rehash [mysq ...
分类:
数据库 时间:
2018-03-11 14:14:46
阅读次数:
200
一、概述 散列算法有两个主要的实现方式:开散列和闭散列,HashMap采用开散列实现。 HashMap中,键值对(key-value)在内部是以Entry(HashMap中的静态内部类)实例的方式存储,散列表table是一个Entry数组,保存Entry实例。 对于冲突的情况,在开散列中,如果若干个 ...
分类:
其他好文 时间:
2018-02-26 13:27:51
阅读次数:
201
说到 ___hash table___ 有两个东西是我们经常会碰到的,首先就是 ___hash 碰撞___ 问题,__redis dict__ 是采用链地址法来解决,___dictEntry->next___ 就是指向下个冲突 __key__ 的节点。
还有一个经常碰到的就是 __rehash... ...
分类:
其他好文 时间:
2018-01-27 11:35:34
阅读次数:
151
本文介绍Redis的字典(是种Map)扩容与ConcurrentHashMap的扩容策略,并比较它们的优缺点。 (不讨论它们的实现细节) 首先Redis的字典采用的是一种‘’单线程渐进式rehash‘’,这里的单线程是指只有一个线程在扩容, 而在扩容的同时其他的线程可以并发的进行读写。 Redis系 ...
分类:
其他好文 时间:
2018-01-26 00:37:00
阅读次数:
279