![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试技巧
文章平均质量分 72
智航云科技
学如逆水行舟,不进则退
展开
-
数据库 四大隔离级别
数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable。在事务的并发操作中可能会出现脏读,不可重复读,幻读脏读:指当一个事务正在访问数据,并且对数据进行了修改,而这种数据还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据还没有提交那么另外一个事务读取到的这个数据我们称之为脏数据。依据脏数据所做的操作肯能是不正确的。 不可重复读:指在一个事务内,多次读原创 2021-02-24 22:55:04 · 692 阅读 · 0 评论 -
SQL 优化指南
上篇文章说到使用慢日志来获取查询慢的SQL ,然后我们针对查询慢的SQL可对其进行优化常用的优化方式如下:服务器硬件SQL本身优化反范式设计优化索引优化服务器硬件优化就不说了,无非就是公司多花点钱,买牛逼的服务器,超大运行内存,及超大空间(反正我们公司没钱,用不了牛逼的服务器,只能多动动脑,来进行SQL本身的优化了)SQL本身优化:举个小例子我创建3张表以供测试,随便创建的,只是为了演示CREATE TABLE `t_user` ( `id` int(20) NOT NULL A原创 2021-02-21 01:20:04 · 261 阅读 · 1 评论 -
jdk1.8中HashMap底层链表转红黑树的阈值为什么是8?红黑树转链表为什么是6?
首先出结论:和hashcode碰撞次数的泊松分布有关,主要是为了寻找一种时间和空间的平衡。红黑树中的TreeNode是链表中的Node所占空间的2倍,虽然红黑树的查找效率为o(logN),要优于链表的o(N),但是当链表长度比较小的时候,即使全部遍历,时间复杂度也不会太高。固,要寻找一种时间和空间的平衡,即在链表长度达到一个阈值之后再转换为红黑树。之所以是8,是因为Java的源码贡献者在进行大量实验发现,hash碰撞发生8次的概率已经降低到了0.00000006,几乎为不可能事件,如果真的碰撞发生了8次原创 2021-02-18 23:54:10 · 1556 阅读 · 0 评论 -
为什么需要重写hashCode()方法和equals()方法,什么情况下重写?
1、为什么需要重写hashCode()方法和equals()方法?为什么要重写equals()方法。我们在定义类时,我们经常会希望两个不同对象的某些属性值相同时就认为他们相同,所以我们要重写equals()方法,按照原则,我们重写了equals()方法,也要重写hashCode()方法。来看一下Object.hashCode的通用约定(摘自《Effective Java》第45页)在一个应用程序执行期间,如果一个对象的equals方法做比较所用到的信息没有被修改的话,那么,对该对象调用hashCod原创 2021-02-18 23:45:44 · 541 阅读 · 0 评论 -
为什么HashMap的长度是2的整数次幂
先声明目的是为了:加快哈希计算以及减少哈希冲突为什么可以加快计算?要找到 KEY 的位置在哈希表的哪个槽里面,需要计算 hash(KEY) % 数组长度,但是 %(取模) 计算比 &(与) 慢很多,所以用 & 代替 %,为了保证 & 的计算结果等于 % 的结果需要把 length 减 1 也就是 hash(KEY) & (length - 1)下面是hashMap 计算索引存放位置的方法 /** * HashMap通过哈希算法得出哈希值之后,将键值原创 2021-02-18 23:34:00 · 179 阅读 · 0 评论 -
mysql 为什么用B+树做索引
回答这个问题,我们要先围绕着几种树形的数据结构来判断一下优劣二叉树:每个节点最多有两个子节点,每个子节点之间是无序的,如果要查某个数据很有可能要遍历整个二叉树,效率慢二叉搜索树:每个节点都有如下的性质若它的左子树不空,则左子树上所有的节点的值均小于它的根节点的值若它的右子树不空,则右子树上所有的结点的值均大于它的根结点的值它的左,右子树也分别为二叉树它的时间复杂度是O(log n),每次都折一半二叉搜索树的缺点是它不能保持平衡,因此如果极端情况下按照顺序插入拿这可二叉搜索树就会变成线性结构,时原创 2021-02-18 23:24:59 · 148 阅读 · 0 评论 -
HashMap与HashTable的区别,深入理解
HashMap与HashTable同为Key-Value 键值对存储的集合对象。各有各的优点,各有各的缺点,今天就谈谈他们两者直接的区别。区别如下:HashMap 线程不安全的 执行效率高,HashTable 线程安全的 执行效率低HashMap可以存放空的key ,HashTable 不能存放空的key接下来就围绕这2点来探究一下。1.HashMap 线程不安全的 执行效率高,HashTable 线程安全的 执行效率低这一点是因为,HashMap底层的方法均没加锁,没有使用synchron原创 2021-01-15 21:17:39 · 1295 阅读 · 0 评论 -
spring中循环依赖的解决方案
1.什么是循环依赖A对象依赖了对象B,B对象依赖了A对象循环依赖在JAVA中实际上不是问题,因为对象之间互相依赖是很正常的事情对于程序而言不会存在问题,但是,在Spring中循环依赖就是⼀个问题了,为什么?因为,在Spring中,⼀个对象并不是简单new出来了,⽽是会经过⼀系列的Bean的⽣命周期,就是因为 Bean的⽣命周期所以才会出现循环依赖问题。要明⽩Spring中的循环依赖,得先明⽩Spring中Bean的⽣命周期Bean的⽣命周期Bean的⽣命周期指的就是:在Spring中,Bea原创 2020-11-14 10:48:31 · 307 阅读 · 0 评论 -
Mybatis技能提升
mybatis是什么呢?mybatis是一个半ORM(对象关系映射)持久层框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。为什么说是半ORM,因为MyBatis需要程序员自己编写 Sql 语句,因此带来的一个优点是可以严格控制 sql 执行性能,灵活度高mybatis的比较核心的东西就是 SqlSessionFactory,SqlSessionFactory 的实例可以通过 SqlSessionFactory原创 2020-11-12 00:19:05 · 139 阅读 · 0 评论 -
Mapper 编写有哪几种方式?
Mapper 编写有哪几种方式?第一种:接口实现类继承 SqlSessionDaoSupport:使用此种方法需要编写mapper 接口,mapper 接口实现类、mapper.xml 文件。1、在 sqlMapConfig.xml 中配置 mapper.xml 的位置<mappers><mapper resource="mapper.xml 文件的地址" /><mapper resource="mapper.xml 文件的地址" /></mapper原创 2020-11-08 23:03:43 · 901 阅读 · 0 评论 -
Mybatis 的一级、二级缓存
Mybatis 的一级、二级缓存1)一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为Session,当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓存2)二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级原创 2020-11-05 00:34:58 · 141 阅读 · 0 评论 -
Mybatis 是否支持延迟加载?如果支持,它的实现原理是 什么?
MyBatis 实现一对一有几种方式?具体怎么操作的?有联合查询和嵌套查询联合查询是几个表联合查询,只查询一次, 通过在resultMap 里面配置 association 节点配置一对一的类就可以完成;嵌套查询是先查一个表,根据这个表里面的结果的 外键 id,去再另外一个表里面查询数据,也是通过 association 配置,但另外一个表的查询通过 select 属性配置。<mapper namespace="com.lcb.mapping.userMapper"><!--as原创 2020-11-03 23:43:20 · 4024 阅读 · 0 评论 -
为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动 的区别在哪里?
Xml 映射文件中,除了常见的 select|insert|updae|delete标签之外,还有哪些标签?<resultMap>、<parameterMap>、<sql>、<include>、<selectKey>,加上动态 sql 的 9 个标签,其中<sql>为 sql 片段标签,通过<include>标签引入 sql 片段,<selectKey>为不支持自增的主键生成策略标签。Mybatis 的 X原创 2020-10-28 23:24:46 · 824 阅读 · 1 评论 -
Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?
如何获取自动生成的(主)键值?insert 方法总是返回一个 int 值 ,这个值代表的是插入的行数。如果采用自增长策略,自动生成的键值在 insert 方法执行完后可以被设置到传入的参数对象中在 mapper 中如何传递多个参数?1.第一种 DAO 层的函数2.第二种 @param注解这种方式最多只支持2个参数,超过2个将无法识别3、第三种:多个参数封装成 mapMybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?Mybatis 动态 sql 可以在 Xml 映原创 2020-10-28 00:22:34 · 1689 阅读 · 0 评论 -
Mybatis 是如何进行分页的?分页插件的原理是什么?
Mybatis 是如何进行分页的?分页插件的原理是什么?Mybatis 使用 RowBounds 对象进行分页,它是针对 ResultSet 结果集执行的内存分页,而非物理分页。可以在 sql 内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。分页插件的基本原理是使用 Mybatis 提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 sql,然后重写 sql,根据 dialect 方言,添加对应的物理分页语句和物理分页参数Mybatis是如何将sql执行结果原创 2020-10-19 22:53:42 · 4819 阅读 · 0 评论 -
Dao 接口的工作原理是什么?Dao 接口里的方法, 参数不同时,方法能重载吗?
当实体类中的属性名和表中的字段名不一样 ,怎么办 ?第 1 种: 通过在查询的 sql 语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。第 2 种: 通过来映射字段名和实体类属性名的一一对应的关系。模糊查询 like 语句该怎么写?第 1 种:在 Java 代码中添加 sql 通配符。第 2 种:在 sql 语句中拼接通配符,会引起 sql 注入通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数原创 2020-10-17 00:05:57 · 2860 阅读 · 0 评论 -
MyBatis 与 Hibernate 有哪些不同?
MyBatis 框架适用场合:1、MyBatis 专注于 SQL 本身,是一个足够灵活的 DAO 层解决方案。2、对性能的要求高,或者需求变化较多的项目,MyBatis 将是不错的选择。MyBatis 与 Hibernate 有哪些不同?1、Mybatis 和 hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要程序员自己编写 Sql 语句。2、Mybatis 直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,原创 2020-10-15 23:56:21 · 237 阅读 · 0 评论 -
什么是 Mybatis?Mybaits 的优点?Mybaits 的缺点?
从今天开始以后每天3道面试题1、什么是 Mybatis?1、Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高。2、MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 3、通过 xm原创 2020-10-15 00:06:51 · 302 阅读 · 0 评论 -
模式的秘密---工厂模式
工厂模式什么是设计模式?设计模式就是经过前人无数次的实践总结出的,设计过程中可以反复使用的、可以解决特定问题的设计方法,也就是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结其目的是:使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码的可靠性。工厂模式的概念实列化对象,用工厂方法代替new操作工厂模式包括工厂方法模式和抽象工厂模式抽象工厂模式是工厂方法模式...原创 2020-01-28 15:56:56 · 543 阅读 · 0 评论 -
模式的秘密---单例模式
单例模式什么是设计模式?设计模式就是经过前人无数次的实践总结出的,设计过程中可以反复使用的、可以解决特定问题的设计方法,也可以理解为:一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结其目的是:使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码的可靠性。首先是饿汉模式:测试代码如下package com.example.demo.test2;/** ...原创 2020-01-28 11:43:07 · 131 阅读 · 0 评论 -
面试技巧之-----面试细节
既然准备分享面试技巧相关的文章,那就把之前面试的时候的准备一块给分享了吧主要有以下几条一、衣着整洁,女生不宜过于暴露,男生不宜过于随意二、态度端正三、讲话逻辑清晰,落落大方,禁忌说话声音小,普通话不标准四、有和面试的岗位相关的工作经验要着重表现,没有工作经验的要表现的谦虚好学机灵勤奋五、有没有结婚打算(看你的稳定性)六、评价一下以前的领导(不可说坏话)七、离职原因(别说压力大,行业...原创 2019-12-08 13:49:23 · 140 阅读 · 0 评论 -
面试技巧之----反向面试
在面试中,我们经常会被面试官问到各种各样的问题,很是头疼,每次都被牵着鼻子走,处处都掉坑,虽然技术上有些问题能过的去,但是对于其他的工作上的问题,总是回答不好。在我毕业的时候,老师告诉我们说,要想面试成功,在面试中就不能让面试官牵着鼻子走,要牵引这面试官走。虽然每次也都在这么做,但是最多问的就是,公司目前使用的技术,未来的发展前景等等。。。今天在关注的Java技术栈公众号中,发现这位大神创作的特别...转载 2019-12-08 13:27:47 · 819 阅读 · 0 评论