【Java并发编程系列】高并发工具类之常见并发集合
一、ConcurrentHashMap源码分析1.1 为什么要用ConcurrentHashMap在并发编程的情况下,使用HashMap可能会导致程序死循环,而使用线程安全的HashTable效率又十分低下,所以大名鼎鼎的Doug Lea写出了伟大的并发安全的ConcurrentHashMap!1.1.1 并发条件下使用HashMapHashMap在并发条件执行put操作会引起死循环,因为多...
一、ConcurrentHashMap源码分析1.1 为什么要用ConcurrentHashMap在并发编程的情况下,使用HashMap可能会导致程序死循环,而使用线程安全的HashTable效率又十分低下,所以大名鼎鼎的Doug Lea写出了伟大的并发安全的ConcurrentHashMap!1.1.1 并发条件下使用HashMapHashMap在并发条件执行put操作会引起死循环,因为多...
一、普通hash算法普通hash算法最大的特点是散列,说白了就是将一些具有相同特征的数据打散成完全不同,随机,均匀分配的数据看这个例子将abc和abcd进行md5运算,得到如下结果可以看出,两个及其相似的字符串进行md5后生成了两个完全不同的字符串,负载均衡正是利用这一特性,对于大量随机的请求或调用,通过一定形式的Hash将他们均匀的散列,从而实现压力的平均化。(当然,并不是只要使用了Has...
一、HashMap继承体系public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {HashMap继承AbstractMap抽象类,实现了Cloneable和Serializble接口二、Node节点以及底层存储结...
单例?一个类只有一个对象实例,并对外提供一个获取实例的方法。一句话就能概括单例这个设计模式,真的只有这么简单吗?单例模式分为两种方案,饿汉式和懒汉式一、饿汉式私有的构造方法只要当类加载的时候就初始化单例对象public class Hungry { private static Hungry hungry = new Hungry(); private Hungry(){ ...
写在前面explain命令中type中的属性,效率从上往下递减system:系统表,少量数据,往往不需要进行磁盘 IOconst:常量连接eq_ref:主键索引 (primary key) 或者非空唯一索引 (unique not null) 等值扫描ref:非主键非唯一索引等值扫描range:范围扫描index:索引树扫描ALL:全表扫描 (full table scan)表结构:Fiel...
索引?MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。我们可以简单理解为:快速查找排好序的一种数据结构。下面是一张未做任何操作的表,Col1为自增主键,Col2为Value此时我想查找值为22的那一行记录,因为表中值未被排序,所以只能从头遍历5次才能查找到主键为5,值为22的那一行记录。如果表中不止这7条数据,而是百万条、千万条记录呢?查询速度可想而知...
基于文档的基本操作Rest风格是一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。methodurl地址描述PUTlocalhost:9200/索引名称/类型名称/文档id创建文档(指定文档id)POSTlocalhost:9200/索引名称/类型名称创建文档(随机文档id)...
IK分词器什么是IK分词器?分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词器是将每个字看成一个词,比如"我爱可星"会被分为"我",“爱”,“可”,“星”,这显然不符合我们的要求,所以我们需要安装中文分词器IK来解决这个问题。IK提供了两个分词算法:ik_smart和ik_max...