![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
文章平均质量分 92
面试过程中,学习新内容
老板加点辣!
这个作者很懒,什么都没留下…
展开
-
面试知识点
java线程模型 关于线程的理解 关于多线程并发: 并发不一定依赖多线程(如php中很常见的多进程并发),但是在java中谈并发大多数和线程拖不了关系 线程和进程: 线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的分配资源和执行调度分开,各个线程既可以共享资源(内存地址,文件io等),又可以独立调度(线程是cpu调度的基本单位) 线程与操作系统: 主流的操作系统都提供了线程实现,Java语言则提供了在不同硬件和操作系统平台下对线程操作的统一处理,每个已经执行start()且还未结束原创 2021-04-29 17:02:19 · 143 阅读 · 0 评论 -
数据库索引(详细)
索引 对于索引的理解 二叉树的索引结构:key存放索引字段, value放索引字段所在行的磁盘地址的文件指针 当执行sql语句时,会去找当前的字段是否建立了索引文件,如果拿取字段的值根据搜索方法(遍历)去索引结构找到对应的key,如果相等,则根据value磁盘地址的文件指针去找到对应的数据文件。而不需要进行全表扫描查询这样效率很低 使用二叉树(缺点:单边增长) 根据主键索引字段插入,使用二叉树会变成线性链表,跟表的轮询一样没区别,某些特定场景(单边增长,)效率太低 使用红黑树(数据多,元素在叶子原创 2021-04-29 16:50:42 · 1383 阅读 · 0 评论 -
jvm调优
JVM调优 1.关于程序的运行 字节码文件可以一份运行,到处执行,不过得在不同的操作系统上安装不同版本的jdk即可 程序的运行: 先通过java文件经过javac的指令编译成class文件 class文件加载在JVM里面,会先进行类装载子系统,然后将相关信息存储到JVM运行时数据区 当执行程序的时候,会进行执行引擎去执行相关操作 2.关于虚拟机栈理解(详细) 虚拟机栈由一个个的栈帧组成,每个栈帧由局部变量表,操作数栈,动态链接,出口方法信息组成。 栈:数据结构,先进后出,FILO,方法执行完,就出栈原创 2021-04-29 16:43:46 · 53 阅读 · 0 评论 -
线程池原理理解
线程池原理 参考b站图灵诸葛老师 1.关于run和start方法 我们通过打断点,可以发现run是方法级别的调用,start是线程级别的调用(调用时会多开一个线程进行执行run方法) 2.线程池原理解析 2.1 对比线程和线程池的创建执行 我们对比普通线程创建的方法,和使用线程池创建的方法,我们发现后者比前者快了很多!!! 分库分表,分布式事务都会用到线程池 普通线程创建执行: 线程池的创建执行: 2.2 比较三种核心线程池的创建速度 newCached > newFix >原创 2021-04-29 16:31:56 · 192 阅读 · 0 评论 -
redis分布式锁原理以及方案
Redis分布式锁 关于分布式锁 关于分布式锁,一般有三种选择, 1、redis 2、zk 3、DB锁(悲观锁、乐观锁) 乐观锁加版本号,悲观锁加for update 超卖问题演变 1.使用同步代码块,使用多个服务器集群,就不行了 使用nginx做负载均衡 2.使用redis的setnx )] 问题: 进行执行代码块的时候,会导致出现异常,然后无法删除key,导致之后的线程一致无法进行抢购 解决办法; 使用finally,防止死锁 出现宕机 解决办法:给key设置过期时间 原创 2021-04-29 16:12:19 · 387 阅读 · 0 评论