摘要: 一、前言 1.本文基于JDK1.8源码分析,会贴出涉及的相关数据结构及源码。 2.为节省大家时间,先给出结论。 1)ArrayList创建对象时,若未指定集合大小初始化大小为0;若已指定大小,集合大小为指定的大小; 2)当第一次调用add方法时,集合长度变为DEFAULT_CAPACITY(也就是1 阅读全文
posted @ 2020-04-02 17:08 Ghostor 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 一、前言 1.本文基于JDK1.8源码分析,会贴出涉及的相关数据结构及源码。 2.文中只涉及hashmap的put/get方法,代码理解附在注释上(直接看代码更清晰)。 3.JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树。 二、数据结构 1. 阅读全文
posted @ 2020-04-01 15:48 Ghostor 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 一、前言 本文基于mysql8.0的innodb测试,建表在做对应的优化策略测试时记得加索引,由于文中太多查询例子不一一针对建立索引了,只挑几个建索引举例。 CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(20) DEFAULT 阅读全文
posted @ 2020-03-19 16:38 Ghostor 阅读(754) 评论(0) 推荐(0) 编辑
摘要: 一、前言 本文主要解释以下几个问题: 1.什么是回表查询? 2.什么是索引覆盖? 3.如何实现索引覆盖? 4.那些场景可以利用索引覆盖优化sql? 本文实验基于8.0版本innodb 二、回表查询 1.建表 CREATE TABLE `user` ( `id` int(11) NOT NULL, ` 阅读全文
posted @ 2020-03-17 16:39 Ghostor 阅读(4084) 评论(0) 推荐(1) 编辑
摘要: 一、前言 1.Mysql5.5版本开始Innodb是默认引擎(之前是MyISAM),本文仅针对5.5之后版本做比较,先会给出结论最后给出选择。 2.聚集索引:索引值顺序和数据存储顺序一致。 3.非聚集索引:索引值顺序和数据存储顺序不一致。 二、区别 1.InnoDB支持事务,MyISAM不支持。 2 阅读全文
posted @ 2020-03-17 11:40 Ghostor 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 一、前言 1.ReentrantLock是可重入锁,意味着一个线程可以进入任何一个该线程已拥有的锁同步着的代码块,实现了Lock接口,通过Condition精细控制多线程休眠唤醒。 2.Lock接口 //获取锁,获取不到lock就不罢休,不可被打断,即使当前线程被中断,线程也一直阻塞,直到拿到锁, 阅读全文
posted @ 2020-03-16 12:40 Ghostor 阅读(818) 评论(0) 推荐(0) 编辑
摘要: 一、前言 Redis的所有键都可以设置过期策略,Redis的每个设置了过期时间的key都会被放在一个独立的字典中,用于遍历删除。 二、过期策略 1.先区分两个概念,被动删除与主动删除 1)被动删除:key再被操作时,Redis主动检查key是否过期,过期则删除; 优劣:对CPU友好,只有CPU在被操 阅读全文
posted @ 2020-01-17 12:46 Ghostor 阅读(651) 评论(0) 推荐(0) 编辑
摘要: 前言 for与while各有功效,下面就只列举for之于while的优势有哪些 优势 1.循环中提供了特殊的机会来将变量的作用域最小化。(无论是传统的还是for-each形式的)for循环,都允许声明循环变量,它们的作用域被限定在正好需要的范围之内。(这个范围包含循环体,以及之前的初始化、测试、更新 阅读全文
posted @ 2018-10-08 17:49 Ghostor 阅读(551) 评论(0) 推荐(0) 编辑
摘要: 前言: IntelliJ IDEA2018请在官网下载:https://www.jetbrains.com/idea/ 一、license server激活 输入http://idea.jialeens.com 二、注册码 前往 http://idea.lanyus.com/ 三、svn插件(如果需 阅读全文
posted @ 2018-09-30 10:57 Ghostor 阅读(1232) 评论(0) 推荐(0) 编辑
摘要: 原因与解决方案 1.原因:修改表结构表结构发生变化后再对表进行任何操作都不被允许,SQLState为57016(因为表不活动,所以不能对其进行访问),由于修改了表字段权限,导致表处于不可用状态 2.解决方案:对表进行重构,重构的过程,就是对部分数据打散再重新组合的过程 需要执行语句: 命令行中执行: 阅读全文
posted @ 2018-09-03 18:35 Ghostor 阅读(10011) 评论(0) 推荐(0) 编辑