- 博客(12)
- 收藏
- 关注
原创 ConcurrentHashMap的简介
我想有基础的同学知道在jdk1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的,而1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现。JDK1.8的实现降低锁的粒度,JDK1.7版本锁的粒度是基于Segment的,包含多个HashEntry,而JDK1.8锁的粒度就是HashEntry(首节点)JDK1.8版本的数据结构变得更加简单,使得操作也更加清晰流畅,因为已经使用sy
2021-10-18 09:56:30
152
原创 设计模式之策略模式
将每一种算法都封装到具有共同接口的独立的类中,是算法本身和使用算法的对象分离开来,解决了多种相似算法情况下,以往if…else编程带来的复杂和难以维护。1.封装变化。2.使用接口编程。该模式中包含的角色及其职责:1.抽象策略角色:具体策略角色的抽象父类。2.具体策略角色:包装了具体的算法和行为。3.环境角色:内部会持有一个抽象角色的引用,给客户端调用。优点:1.减少了算法类和使用算法类之间的耦合。(扩展性好)2.Strategy类的层次为Context定义了一系列可供重用的算法或功能,有助
2021-03-02 14:31:07
259
4
原创 JDK1.8中hashMap和JDK1.7hashMap的区别
JDK1.8中的HashMap实现跟JDK1.7中的实现有很大差别。下面分析JDK1.8中的实现,主要看put和get方法构造方法的时候并没有初始化,而是在第一次put的时候初始化
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:1、平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。
2021-01-29 15:32:18
254
原创 queue详细分析
Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Deque接 口。Queue的实现1、没有实现的阻塞接口的LinkedList: 实现了java.util.Queue接口和java.util.AbstractQueue接口 内置的不阻塞队列: PriorityQueue 和 ConcurrentLinkedQueue PriorityQueue 和 ConcurrentL
2021-01-26 17:23:30
182
原创 mysql数据库底层原理
MySQL 的常用引擎InnoDBInnoDB 的存储文件有两个,后缀名分别是 .frm 和 .idb,其中 .frm 是表的定义文件,而 idb 是数据文件。InnoDB 中存在表锁和行锁,不过行锁是在命中索引的情况下才会起作用。InnoDB 支持事务,且支持四种隔离级别(读未提交、读已提交、可重复读、串行化),默认的为可重复读;而在 Oracle 数据库中,只支持串行化级别和读已提交这两种级别,其中默认的为读已提交级别。MyisamMyisam 的存储文件有三个,后缀名分别是 .frm
2021-01-03 07:36:33
498
原创 类加载说明
类加载过程1. 加载加载,是指Java虚拟机查找字节流(查找.class文件),并且根据字节流创建java.lang.Class对象的过程。这个过程,将类的.class文件中的二进制数据读入内存,放在运行时区域的方法区内。然后在堆中创建java.lang.Class对象,用来封装类在方法区的数据结构。类加载阶段:(1)Java虚拟机将.class文件读入内存,并为之创建一个Class对象。(2)任何类被使用时系统都会为其创建一个且仅有一个Class对象。(3)这个Class对象描述了这个类
2020-12-17 21:32:47
79
原创 单点跨域
第一次写博客,与大家共勉.这里用到的原理其实非常简单,将cookie存在一个公共的站点的页面上就可以了,这里我们管那个站点叫主站S.先说说所谓的跨域环境1:a.xxx.com需要跟b.xxx.com实现跨域,这种比较简单,只需要设置cookie的域名关联域就可以了 cookie.Domain = “xxx.com”,这样两个域名间的cookie就可以互相访问,实现跨域.环境2:a.aaa.com需要跟b.bbb.com实现跨域,这种不同域名的情况下,想要实现就必须换种方式了.在这里我将引入第三者,
2020-12-17 19:15:34
165
原创 ArrayList 扩容原理
面试中经常问到的问题之一就是List的扩容机制了,他是怎么做到扩容的,大家都能答出来底层是数组,复制一个数组来扩容,但是再具体一点来说,大家就不知道该怎么说了,如果不看源码说这么多确实就差不多了,但是看了源码你会说的更多,更详细,更具体,本篇主要看的是jdk1.8 至于其他版本大同小异,看看就知道了,言归正传1)List扩容实现步骤 总的来说就是分两步:1、扩容 把原来的数组复制到另一个内...
2020-12-02 18:52:48
999
原创 简单代码实现哈希表数据结构以及主要方法
数据结构与算法(哈希表)哈希函数:在记录的关键字与记录的存储地址之间建立的一 种对应关系叫哈希函数。哈希函数是一种映象,是从关键字空间到存储地址空间的一 种映象。可写成:addressi=H(keyi) ,其中i是表中某 个元素。哈希表:应用哈希函数,由记录的关键字确定记录在表中的 地址,并将记录放入此地址,这样构成的表叫哈希★哈希表的特点就是数据与其在表中的位置存在相关性,也就是有关系的,通过数据应该可以计算其位置,哈希表最大的特点是是可以快速实现查找,插入和删除。因为它独有的特点,Hash表经常
2020-11-17 19:52:20
886
1
原创 常见MySQL隐式类型转换
前言今天我们继续回到MySQL系列文章中,谈一谈MySQL中隐式类型转换。(其实我最早知道是在慢SQL优化中知道隐式类型转换概念的),在说隐式类型转换之前,首先我们通过一个实例来看看是怎么回事。数据结构本文中所有的操作,都是基于该数据结构(有兴趣的童鞋,可以实验):create table t_base_user( oid bigint(20) not null primary key auto_increment, name varchar(30) null comment...
2020-11-16 14:25:37
1072
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人