每天一个知识点

1、mysql上千万数据查询增加索引提高查询效率的底层原理?

索引是有序的  索引的数据结构:二叉树、红黑树、hash表、B-tree  https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

假如索引的数据结构为 二叉树(由跟节点开始左边小 右边大) 查询数据的时候先去查找索引,由于二叉树的数据结构 很快能定位到索引,所用和对应表数据的位置是key  value形式的 根据key 找到对应数据的位置 避免了全表扫描 提高查询效率

2、如果未加索引 sql查询是怎么执行的 

根据某个字段值去查询 该表的对应数据 ,数据分散在磁盘中存储 ,执行查询指令,拿到结果跟条件作比对,每进行一次操作,就做了一次磁盘IO操作,如果数据越靠后,所产生的磁盘IO次数就越多,查询效率就越慢。 

3、arrayList 和 linkedlist 的区别

arraylist 数据结构是动态数组,linkedList 是双向链表的数据接口 ,数据结构也就决定了 arraylist 查询效率最高,根据下标就能定位到对象位置,但也存在 插入 或者删除 效率慢的问题,比如在中间插入某个对象,后边对象的位置都要移动 所以效率不高。linkedList 有比较高的插入或者删除的效率,比如插入某个对象 linkedList 只需要改动其指针指向就可以,但也存在着查询效率低下的问题,linkedList 除了存储当前对象 还会存储前后对象的位置,linkedList查询时会逐个筛查 指导找到所查的对象为止。

 

4、多线程并发

线程和进程的区别: 进程是操作系统进行资源分配的最小单元,线程是操作系统进行任务分配的最小单元,线程隶属于进程。

如何开启线程: 1、集成Thread类 重写run方法 2、实现runnable接口 重写run方法 3、实现callable接口 重写 call方法   4、通过线程池来开启线程                 设计两种的目的是 设计者考虑java语言的特性为 单继承多实现的特点

怎么保证线程安全:  (线程安全指的是 多个线程操作一个资源时出现的问题)核心思想 加锁, 加锁的方式:1、jvm提供的锁 synchronized  2、JDK提供的各种锁Lock 

volatile 和synchronized 的区别: synchronized是用来线程加锁,使线程串行执行,volatile 是用来保证变量的可见性(通常适用于一个线程写多个线程读的场景)

volatile  能保证线程安全吗 ?  不能,只保证线程的可见性,不能保证原子性。

DCL(double check Lock)单例为什么要加 volatile?  防止指令重排,指令重排会造成错误数据。(举例指令重排 int i = 8 正常cpu的执行顺序为 1 分配内存 2 对象初始化 3 建立指针对应关系,  加入我们做了相关优化 以节省cpu资源目的 顺序会变成1  3  2  这样会造成数据错误安全问题)

java线程锁机制是怎样的?  java的锁 就是在对象的markworld中记录一个锁的状态, 偏向锁、轻量级锁、重量级锁、无锁 就相当锁的每一个状态。

自旋锁 是轻量级锁的一种,

java 的锁机制 就是根据资源竞争的激烈过程中不断升级锁的一个过程。

new 对象处理,判断是否开启偏向锁没如果开启,先加上偏向锁 ,出现资源竞争 就升级为轻量级锁(自旋锁)处于排队等待的状态,为节省cpu资源,降低自旋锁的消耗转由操作系统处理,轻量级锁 升级为 重量级锁;另一种情况当偏向锁线程所执行耗时过长,则直接升级为重量级锁

什么是可重入锁?

 

谈谈你对AQS的理解?AQS如何实现可重入锁?

AQS是java线程同步的一个框架,

 

如何让ABC三个线程同时执行?CountDownLatch

如何在并发情况下保证ABC三个线程依次执行? 利用volatile 关键字可以实现

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值