摘要:
finally 中的代码一定会执行吗 通常在面试中,只要是疑问句一般答案都是"否定"的,因为如果是"确定"和"正常"的,那面试官就没有必要再问了。 典型回答 正常运行的情况下,finally 中的代码是一定会执行的,但是,如果遇到以下异常情况,那么 finally 中的代码就不会继续执行了: 程序在 阅读全文
摘要:
这个问题我看网上有人做了实验,是in的效率会比or高 去查了官方文档 expr IN (value,...) Returns 1 (true) if expr is equal to any of the values in the IN() list, else returns 0 (false) 阅读全文
摘要:
线程安全与锁优化 在软件业发展的初期,程序编写都是以算法为核心的,程序员会把数据和过程分别作为独立的部分来考虑,数据代表问题空间中的客体,程序代码则用于处理这些数据,这种思维方式直接站在计算机的角度去抽象问题和解决问题,被称为面向过程的编程思想。与此相对,面向对象的编程思想则站在现实世界的角度去抽象 阅读全文
摘要:
类加载 加载 java数据类型分为基本数据类型和引用数据类型, 基本数据类型由虚拟机预先定义,引用数据类型才需要类的加载过程。 类的加载,就是将java类的字节码文件加载到内存中,并通过字节码在内存中构建出类的原型 类模板对象。 jvm把字节码中的常量池,类字段,类方法等信息存储到类模板中,这样jv 阅读全文
摘要:
引用类型 无论是通过引用计数法判断对象引用数量,还是通过可达性分析法判断对象的引用链是否可达,判定对象的存活都与“引用”有关。 JDK1.2 之前,Java 中引用的定义很传统:如果 reference 类型的数据存储的数值代表的是另一块内存的起始地址,就称这块内存代表一个引用。 JDK1.2 以后 阅读全文
摘要:
MySQL 的数据都是存在磁盘中的,那么我们要更新一条记录的时候,得先要从磁盘读取该记录,然后在内存中修改这条记录。那修改完这条记录是选择直接写回到磁盘,还是选择缓存起来呢? 当然是缓存起来好,这样下次有查询语句命中了这条记录,直接读取缓存中的记录,就不需要从磁盘获取数据了。 为此,Innodb 存 阅读全文
摘要:
隔离级别 下面介绍四种因为事务的并发产生的问题: 脏写 假设银行账户中有100元, 有事务A,B A事务把余额改为200,但还未提交 这时,B事务把余额改为300,提交, 如果A发生了回滚,那么账户余额回到100元,事务B无效。 脏写就是已经提交的事务的写操作因为另一个还未提交的事务的回滚而失去效果 阅读全文
摘要:
重传机制 TCP 实现可靠传输的方式之一,是通过序列号与确认应答。在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回一个确认应答消息,表示已收到消息。 但在错综复杂的网络,并不一定能如上图那么顺利能正常的数据传输,万一数据在传输过程中丢失了呢? 所以 TCP 针对数据包丢失的情况,会用重 阅读全文
摘要:
1.子类与父类的加载过程,静态方法重写,静态代码块 2.Java中sync阻塞与可重入是怎么实现的,轻量级锁这么可重入,重量级锁维护了wait set 3.sync锁升级,AQS 4.用户态,内核态 5.wait与sleep,调用后操作系统发生了什么,sleep是怎样唤醒的 6.concurrent 阅读全文
摘要:
sync.once 阅读全文
摘要:
defer 阅读全文
摘要:
Java中的对象一定是在堆上分配的吗? JVM的内存分配策略 首先回顾一下JVM的内存分配策略。 JVM的内存包括方法区、堆、虚拟机栈、本地方法栈、程序计数器。 一般情况下JVM运行时的数据都是存在栈和堆上的。 栈用来存放一些基本变量和对象的引用,堆用来存放数组和对象,也就是说new出来的实例。 但 阅读全文