- 事务的4个特性,以及每个特性的介绍?原子性,一致性,隔离性,持久性
隔离性:针对数据资源的并发访问,事务的执行是相互独立的,它们不会相互干扰,也就是多个事务之间要存在隔离。
- 事务的隔离级别以及每个隔离级别解决的问题?
- 分布式事务?解决办法介绍?两阶段提交 三阶段提交是什么? 阿里中间件seata? blog.csdn.net/u010425776/…
阿里中间件seata? seata.io/zh-cn/docs/…
-
锁,syncornized 和 retrantLock 介绍?
-
rocketmq 消息中间件学习?消息队列的设计?数据如何保存的?怎么存入到磁盘的? blog.csdn.net/qq_26896085…
-
doubbo学习?dubbo的SPI是如何设计的? aobing.blog.csdn.net/article/det…
-
sql语句优化,调优,慢sql问题解决?
-
jvm的垃圾回收器 gone垃圾回收器?垃圾回收算法?
-
jvm发生OOM异常,如何解决?工具是什么?
-
日常工作中 遇到哪些问题?如何解决的?解决效果如何?
- 二分查找算法?
- 二分查找又称折半查找:每次划分一半进行下一步搜索。
- 优点是比较次数少,查找速度快,平均性能好;
- 其缺点是要求待查表为有序列表,且插入删除数据困难。
- 因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
public class BinarySearch {
/**
* 二分查找算法
*
* @param srcArray 有序数组
* @param key 查找元素
* @return key的数组下标,没找到返回-1
*/
public static void main(String[] args) {
int srcArray[] = {3,5,11,17,21,23,28,30,32,50,64,78,81,95,101};
System.out.println(binSearch(srcArray, 0, srcArray.length - 1, 81));
}
// 二分查找递归实现
public static int binSearch(int srcArray[], int start, int end, int key) {
int mid = (end - start) / 2 + start;
if (srcArray[mid] == key) {
return mid;
}
if (start >= end) {
return -1;
} else if (key > srcArray[mid]) {
return binSearch(srcArray, mid + 1, end, key);
} else if (key < srcArray[mid]) {
return binSearch(srcArray, start, mid - 1, key);
}
return -1;
}
// 二分查找普通循环实现
public static int binSearch(int srcArray[], int key) {
int mid = srcArray.length / 2;
if (key == srcArray[mid]) {
return mid;
}
int start = 0;
int end = srcArray.length - 1;
while (start <= end) {
mid = (end - start) / 2 + start;
if (key < srcArray[mid]) {
end = mid - 1;
} else if (key > srcArray[mid]) {
start = mid + 1;
} else {
return mid;
}
}
return -1;
}
}
时间复杂度
比如:总共有n个元素,每次查找的区间大小就是n,n/2,n/4,…,n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数。 由于n/2^k取整后>=1,即令n/2^k=1, 可得k=log2n,(是以2为底,n的对数),所以时间复杂度可以表示O()=O(logn)
-
选择排序算法 选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序列表中找到最小(大)元素,存放到排序列表的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序列表的末尾。以此类推,直到所有元素均排序完毕。
-
持久化的三种状态
-
JMS概念
JMS即Java消息服务(Java Message Service)应用程序接口,是一个在Java平台中面向消息中间件的API,用于在两个应用程序之间,或分布式系统间发送消息,进行异步通信。
17HttpServletResponse接口
提供了与 HTTP 协议相关的一些方法,Servlet 可通过这些方法来设置HTTP响应头或向客户端写Cookie
负责处理HTTP响应报文。
18 线程调度和线程同步的相关方法
19 sleep和wait的区别?
20 jvm 堆溢出参数
21 spring如何解决循环依赖问题
- spring是通过递归的方式获取目标bean及其所依赖的bean的;
- Spring实例化一个bean的时候,是分两步进行的,首先实例化目标bean,然后为其注入属性。
结合这两点,也就是说,Spring在实例化一个bean的时候,是首先递归的实例化其所依赖的所有bean,直到某个bean没有依赖其他bean,此时就会将该实例返回,然后反递归的将获取到的bean设置为各个上层bean的属性的。
22 spring aop在什么时候加载?
- AOP是在初始化处理器的后置处理器方法中进行实现的,也就是BanPostProcessor接口相关的实现类进行postProcessAfterInitialization方法的重写
- AbstractAutoProxyCreator类实现重写了该方法,核心是实现了wrapIfNecessary方法 Aop阶段是在初始化处理器的的后置处理器方法中进行实现的,BeanPostProcessor接口里面有前置处理器方法与后置处理器方法
23 双重校验锁代码谈一下volatile关键字