TA的博客

157

一、索引的概念1、什么是索引?MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。从官方的定义可以得到索引的本质:索引是数据结构,可以简单理解为索引就是一种数据结构,它可以帮助我们快速的从数据库查询到数据。索引就类似于一本书的目录,通过目录可以快速找到需要查找对内容。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向...

一、整体架构图和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。MySQL官方给出的系统逻辑架构分为4层,如下图所示:这四层自顶向下分别是连接层,服务层(核心层),存储引擎层,系统文件层。我们自顶向...

Java集合框架体系总览总的来说,Java集合框架以Collection接口为中心,下属三个重要的子接口,分别是:List(线性表)、Set、Queue(队列),以及还有一个非常重要的Map接口。下面我们分别总结一下每种类型集合下的知识点。一、Collection接口首先我们来看一下Collection接口中的方法:二、Iterable接口Collection接口继承了Iterable接口,...

队列是一种访问受限的线性数据结构,它有两个基本操作:在队列尾部加入元素和从队列头部移除元素。在我们日常开发中,经常用来并发操作数据。java中提供了一些应用比较广泛的特殊队列:一种是以ConcurrentLinkedQueue为代表的非阻塞队列;另一种是以BlockingQueue接口为代表的阻塞队列。一、初识阻塞队列在J.U.C包中提供的BlockingQueue很好的解决了多线程中如何高...

CopyOnWriteArrayList是J.U.C包下的一个并发容器,它是线程安全且读操作无锁的ArrayList,写操作(增删改)则通过将底层数组拷贝一份,更改操作全部在新数组上进行,是一种读写分离的并发策略,我们也可以称这种容器为"写时复制器",Java并发包中类似的容器还有CopyOnWriteArraySet。本文会对CopyOnWriteArrayList的实...

一、ConcurrentLinkedQueue简介在Java开发个过程中我们不可避免的会使用到一些集合类,比如ArrayList、HashMap等,这些集合类型在多线程环境下使用会有线程安全问题。虽然不同的集合类型都有他的线程安全版本,比如ArrayList不是线程安全的,Vector是线程安全。而保障Vector线程安全的方式,是非常粗暴的在方法上用synchronized独占锁,将多线程...

面试官:HashMap在多线程环境下存在线程安全问题,那你⼀般都是怎么处理这种情况的?一般在多线程的场景,我都会使用好几种不同的方式去代替:使用Collections.synchorinzedMap构造一个线程安全的HashMap使用Hashtable使用ConcurrentHashMap不过鉴于要保证多线程环境下程序的并发度,后两种方案直接Pass,因为他们保证线程安全的机制是synchr...

一、认识HashMapHashMap最早在jdk1.2就出现了,直到jdk1.7都没有太大的改动:jdk1.7及以前采用的存储结构是采用了数组+链表,jdk1.8的存储结构是数组+链表+红黑树HashMap的底层其实就是一个哈希表,通过哈希表可以实现O(1)的查询效率,HashMap允许存储一个key-value都为null的元素(这一点Hashtable不可以),HashMap在多线程环境...

在JDK的并发中提供了几个非常有用的并发工具类:CountDwonLatch、CyclicBarrier、Semaphore。下面我们就一起了解一下这些类的基本使用以及基本原理吧。PS:最起码你得知道它们是干什么用得,下面列出得代码也建议你跑跑。其实如果你理解AQS的设计原理的话,这些工具类的原理就不难理解了。一、闭锁CountDwonLatchCountDownLatch允许一个或多个线程...

一、从Lock接口说起锁时用来控制多个线程范文共享资源,保证资源安全性的一种重要手段。在Lock接口出现以前,Java陈旭是靠synchorinzed关键字实现锁功能点的,在jdk1.5之前使用synchroinzed绝对是一个重量级的操作,因为synchroinzed是依赖对象锁实现的,而对象锁(ObjectMonitor)又依赖底层操作系统的mutexlock指令,这个指令需要操作系统在...