代码编织梦想

面试官:mysql事务的隔离性是如何实现的?_事务中的隔离性是如何保证的呢?面试_java识堂的博客-爱代码爱编程

并发场景 最近做了一些分布式事务的项目,对事务的隔离性有了更深的认识,后续写文章聊分布式事务。今天就复盘一下单机事务的隔离性是如何实现的? 隔离的本质就是控制并发,如果SQL语句就是串行执行的。那么数据库的四大特性中

面试官:说说常用的排序算法呗-爱代码爱编程

十大排序算法思路汇总 在面试的过程中经常会遇到手写排序算法,所以本文就简单总结一下。不对算法的细节做介绍,只做一个概括性的描述。 交换类:通过元素之间的两两交换来实现排序 插入类:将数分为2部分,依次将无序的数插入到有序的数列中 选择类:从待排序数列中找到最小值或者最大值元素,放到已拍好序的序列后面 计数排序和基数排序可以认为是桶排序的一种特殊

面试官:说一下JVM内存分配策略?-爱代码爱编程

JVM运行时数据区 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。Java虚拟机所管理的内存将会包括以下几个运行时数据区域其中方法区和堆是所有线程共享的数据区。程序计数器,虚拟机栈,

面试官:RocketMQ如何保证消息的可靠性投递?-爱代码爱编程

介绍 要想保证消息的可靠型投递,无非保证如下3个阶段的正常执行即可。 生产者将消息成功投递到brokerbroker将投递过程的消息持久化下来消费者能从broker消费到消息发送端消息重试 producer向broker发送消息后,没有收到broker的ack时,rocketmq会自动重试。重试的次数可以设置,默认为2次 DefaultMQPr

面试官:Spring声明式事务在那些情况下会失效?-爱代码爱编程

编程式事务 在Spring中事务管理的方式有两种,编程式事务和声明式事务。先详细介绍一下两种事务的实现方式 配置类 @Configuration @EnableTransactionManagement @ComponentScan("com.javashitang") public class AppConfig { @Bean

面试官:BeanFactory和FactoryBean有哪些区别?-爱代码爱编程

区别 说实话,他俩除了名字比较像以外,好像没有其他共同点了。 BeanFactory和FactoryBean有哪些区别? BeanFactory是一个最基础的IOC容器,提供了依赖查找,依赖注入等基础的功能FactoryBean是创建Bean的一种方式,帮助实现复杂Bean的创建和BeanFactory相关的还有一个高频的面试题 Applica

面试官:@Resource和@Autowired有啥区别?-爱代码爱编程

自动绑定(Autowiring)模式 模式说明no默认值,未激活 Autowiring,需要手动执行依赖注入对象byName根据被注入属性的名称作为Bean名称进行依赖查找,并将对象设置到该属性byType根据被注入属性的类型作为依赖类型进行查找,并将对象设置到该属性constructor特殊的byType类型,用户构造器参数@Autowired是S

面试官:Spring Boot 自动装配是如何实现的?-爱代码爱编程

Enable注解是如何实现的? 当我们使用Spring Boot的时候,只需要在启动类上加@SpringBootApplication注解即可,非常方便。@SpringBootApplication是一个复合注解 @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan 其

面试官:说一下Spring Boot的启动过程把!-爱代码爱编程

介绍 Spring Boot相对于Spring在启动流程上来说并没有太大的区别,只是借助于SpringApplication将启动过程模版化了,并在其中增加了批量注册,自动装配的功能,并开放了一系列的扩展点 对了还有一个重要的区别,原来基于servlet的web应用,是由servlet容器如tomcat来启动spring容器,现在是spring容器

面试官:说一下Spring MVC的启动流程呗!-爱代码爱编程

基于XML配置的容器启动过程 我们常用的Spring MVC是基于Servlet规范实现的,所以我们先来回顾一下Servlet相关的内容。 如果我们直接用Servlet来开发web应用,只需要继承HttpServlet,实现service方法即可,HttpServlet继承自Servlet,Servlet中常用的方法如下 public int

面试官:内存泄漏,内存溢出如何排查?-爱代码爱编程

前言 我们先来了解一下Java堆的组成机构。对于大多数应用来说,Java堆(Java Heap)是Java虚拟机锁管理的内存中最大的一块。Java堆是所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存 堆的结构如下新生代老年代的具体划分比例如下分代的主要作用就是为了更高效的管理内

面试官:Object类有哪些方法?-爱代码爱编程

方法介绍 1.getClass() final,native方法,获得运行时类型。 2.hashCode() hashCode()方法主要用于hash表,比如HashMap,当集合要添加元素时,大致按如下步骤: 先调用该元素的hashCode()方法获取hashCode,hashCode对数组取模定位到它应该放置的物理位置如果这个位置上没有元

面试官:Synchronized和Lock接口有哪些区别?-爱代码爱编程

Lock接口的使用 既然有了synchronized,为啥还要提供Lock接口呢?也许你会说Lock接口比synchronized性能高。在jdk1.5之前确实如此,但是在jdk1.6之后,两者性能差不多了。直接来看Lock接口的定义,看看比synchronized多了哪些功能? public interface Lock { // 加锁

面试官:MySQL是如何解决幻读的?-爱代码爱编程

介绍 众所周知,在不同隔离级别下,会发生如下问题。 √ 为会发生,×为不会发生 隔离级别脏读不可重复读幻读read uncommitted(未提交读)√√√read committed(提交读)×√√repeatable read(可重复读)××√serializable (可串行化)×××不知道这些问题是如何产生的,可以看如下文章《面试官:脏读

面试官:MVCC是如何实现的?-爱代码爱编程

MVCC有啥作用? mvcc即多版本并发控制,通过读取指定版本的历史记录,并通过一些手段保证读取的记录值符合事务所处的隔离级别,在不加锁的情况下解决读写冲突 如果小伙伴对mvcc不熟,估计看了这句话会有点懵,没事,等看完这篇文章你就能看懂这句话了 对于使用InnoDB存储引擎的表来说,聚集索引记录中都包含下面2个必要的隐藏列 trx_id:一个

面试官:Mybatis一级缓存和二级缓存同时开启,先查询哪个缓存?-爱代码爱编程

介绍 要想回答这个问题,必须把一级缓存和二级缓存的实现搞明白,详细介绍一下 我们知道Mybatis有一级缓存和二级缓存,底层都是用HashMap实现的 key为CacheKey对象(后续说原因),value为从数据库中查出来的值。 Mybatis的二级缓存模块是装饰器的典型实现,不清楚装饰者模式的看如下文章 面试官:说一下装饰者模式的作用,以及

面试官:说一下NIO和BIO的区别-爱代码爱编程

介绍 BIO,面向流,只能读或者只能写,阻塞IONIO,面向缓冲区,可以同时进行读写,非阻塞IO 整个BIO的继承关系如上图,每种流只能写或者读,整个BIO流的设计用了装饰者模式,如果你不清楚的话,可以看《面试官:说一下装饰者模式的作用,以及哪些地方用到了装饰者模式吧》,本文不再介绍 NIO涉及到的api主要为Buffer Channel Sel

面试官:如何查看/etc目录下包含abc字符串的文件?-爱代码爱编程

介绍 其实这种需求在工作中用的还是很多的,例如进行数据库迁移的时候,就得知道哪些项目用了指定的数据库,如果一个一个查看配置文件还是很费时间的。 我想到的有2种写法 第一种写法 find /etc -type f | xargs grep -l 'abc' 第二种写法 grep -rl abc /etc find命令还是挺强大的,我打算重

面试官:maven jar包冲突如何解决?-爱代码爱编程

依赖仲裁 依赖仲裁就是当项目中引入的jar包,groupId (公司域名倒过来)和artifactId (功能命令)一样,但是version不一样,应该选用哪一个version?也经常被人叫做依赖冲突 最短路径原则 假如说我们现在的项目依赖关系如图?那么maven会选用st-common-lib的那个版本呢? 答案是1.1这个版本,st-web到

面试官:我想把Spring Boot项目放在tomcat中运行,该怎么配置?-爱代码爱编程

介绍 继承SpringBootServletInitializer并重写configure方法spring-boot-starter-tomcat的scope改为provided打包方式改为war<dependency> <groupId>org.springframework.boot</groupId>