Java面试
格子衬衫~
这个作者很懒,什么都没留下…
展开
-
@RequestMapping注解
— {“params1 = value1”, “param2”}:表示请求必须包含名为params1和params2两个请求参数,且params1的值必须为value1。—— /user/**/createUser 匹配/user/createUser、/user/aaa/bbb/createUser等URL (**匹配任意多层路径)—— /user/*/createUser 匹配/user/aaa/createUser、/user/bbb/createUser等URL (*匹配任意字符)原创 2022-10-13 09:42:45 · 995 阅读 · 0 评论 -
Spring中bean 的生命周期
10、Spring容器关闭时调用DisposableBean的destorv()方法;7、调用BeanPostProcessor的初始化后方法,此处会进行AOP;4、回调实现了Aware接口的方法,如BeanNameAware;2、通过BeanDefinition反射创建Bean对象;5、调用BeanPostProcessor的初始化前方法;8、将创建的Bean对象放入一个Map中;3、对Bean对象进行属性填充;6、调用init初始化方法;9、业务使用Bean对象;原创 2022-10-05 18:54:22 · 126 阅读 · 0 评论 -
MySQL的索引结构是什么样的?聚簇索引和非聚簇索引又是什么?
B+树:1、非叶子节点不存储数据,只进行数据索引。3、每个叶子节点都存有相邻叶子节点的指针。B-树:1、B-树的每个非叶子节点的子节点个数都不会超过D(这个D就是B-树的阶)2、所有的叶子节点都在同一层。->将name上的索引升级成为(name,sex)的联合索引。二叉树:每个节点最多只有两个子节点,左边的子节点都比当前节点小,右边的子节点都比当前节点大。3每个叶子节点都是黑色的空节点。5从任一节点到其每个叶子节点的所有路径都包含相同的黑色节点。二叉树-》AVL树-》红黑树-》B-树-》B+树。原创 2022-09-29 18:35:47 · 251 阅读 · 0 评论 -
@Responsebody注解作用
需要注意的呢,在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。那么在前台接收到的数据为:’{“userName”:“xxx”,“pwd”:“xxx”}’1、@responseBody注解的作用是。User字段:userName pwd。原创 2022-10-13 09:23:22 · 346 阅读 · 0 评论 -
什么是脏读、幻读、不可重复读?要怎么处理?
1、脏读:在修改时加排他锁,直到事务提交才释放。读取时加共享锁,读完释放锁。:在一个事务过程中,用同样的操作查询数据,得到的记录数不相同。这些问题都是MySQL进行事务并发控制时经常遇到的问题。2、不可重复读:读数据时加共享锁,写数据时加排他锁。:在事务进行过程中,读到了其他事务未提交的数据。处理的方式有很多种:加锁、事务隔离、MVCC。在一个事务过程中,多次查询的结果不一致。3、幻读:加范围锁。原创 2022-09-28 12:40:34 · 1705 阅读 · 0 评论 -
简述mysql中索引类型及对数据库的性能的影响
通过建立倒排索引,可以极大的提升检索效率解决判断字段是否包含的问题,是目前搜索引擎使用的一种关键技术。索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大,如果非聚集索引很多,一旦聚集索引改变,那么所有非聚集索引都会跟着变。是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字PRIMARY KEY 来创建。通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。可以保证数据记录的唯一性。原创 2022-09-28 10:51:44 · 420 阅读 · 0 评论 -
简述MylSAM和InnoDB的区别
一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为2G),受操作系统文件大小的限制;采用非聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯—性。支持ACID的事务,支持事务的四种隔离级别;不支持事务,但是每次查询都是原子的;支持表级锁,即每次操作是对整个表加锁;一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;原创 2022-09-28 10:36:23 · 392 阅读 · 0 评论 -
ACID靠什么保证的?
如果前面 prepare 成功,bin1og 写盘,再继续将事务日志持久化到 bin1og,如果持久化成功,那么、工nnoDB事务则进入commit状态(在 redo log里面写一个 commit记录)D持久性由内存+redo log来保证,mysql修改数据同时在内存和redo log记录这次操作,宕机的时候可以从redolog恢复。A原子性由undo log日志保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sql。C一致性由其他三大特性保证、程序代码要保证业务上的一致性。原创 2022-09-28 10:19:10 · 152 阅读 · 0 评论 -
事物的隔离级别
用户开启事务读取id=1用户,查询到age=10,再次读取发现结果=20,在同一个事务里同一个查询读取到不同的结果叫做不可重复读。用户本来应该读取到id=1的用户age应该是10,结果读取到了其他事务还没有提交的事务,结果读取结果age=20,这就是脏读。串行,一般是不会使用的,他会给每一行读取的数据加锁,会导致大量超时和锁竞争的问题。可重复复读,这是mysql的默认级别,就是每次读取结果都一样,但是有可能产生幻读。读未提交,可能会读到其他事务未提交的数据,也叫做脏读。原创 2022-09-28 10:12:49 · 131 阅读 · 0 评论 -
mysql锁的类型有哪些
如果当事务A加锁成功之后就设置一个状态告诉后面的人,已经有人对表里的行加了一个排他锁了,你们不能对整个表加共享锁或排它锁了,那么后面需要对整个表加锁的人只需要获取这个状态就知道自己是不是可以对表加锁,避免了对整个索引树的每个节点扫描是否加锁,而这个状态就是意向锁。也属于行锁的一种,并且它是INNODB的行锁默认算法,总结来说它就是记录锁和间隙锁的组合,临键锁会把查询出来的记录锁住,同时也会把该范围查询内的所有间隙空间也会锁住,再之它会把相邻的下一个区间也会锁住。基于锁的状态分类:意向共享锁、意向排它锁。原创 2022-09-28 09:39:27 · 129 阅读 · 0 评论 -
mysql索引的数据结构,各自优劣
如果是范围查询检索,这时候哈希索引就毫无用武之地了,因为原先是有序的键值,经过哈希算法后,有可能变成不连续的了,就没办法再利用索引完成范围查询检索;如果是范围查询检索,这时候哈希索引就毫无用武之地了,因为原先是有序的键值,经过哈希算法后,有可能变成不连续的了,就没办法再利用索引完成范围查询检索;索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash索引,B+树索引等,InnoDB存储引擎的默认索引实现为:B+树索引。因此,B+树索引被广泛应用于数据库、文件系统等场景。原创 2022-09-28 08:41:24 · 311 阅读 · 0 评论 -
mysql聚簇和非聚簇索引的区别
表数据存储在独立的地方,这两颗B+树的叶子节点都使用一个地址指向真正的表数据,对于表数据来说,这两个键没有任何差别。在聚簇索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引,辅助索引叶子节点存储的不再是行的物理位置,而是主键值。·聚簇索引:将数据存储与索引放到了一块、并且是按照一定的顺序组织的,找到索引也就找到了数据,数据的物理存放顺序与索引顺序是一致的,即:只要索引是相邻的,那么对应的数据一定也是相邻地存放在磁盘上的。原创 2022-09-28 08:16:25 · 427 阅读 · 0 评论 -
mysql读写分离
索引用来快速地寻找那些具有特定值的记录。如果没有索引,一般来说执行查询时遍历整张表。4.在查询的时候,先拿到倒排表内容,再取出数据地址链,从而拿到具体数据。索引的原理:就是把无序的数据变成有序的查询。1.把创建了索引的列的内容进行排序。3.在倒排表内容上拼上数据地址链。2.对排序结果生成倒排表。原创 2022-09-28 08:05:00 · 139 阅读 · 0 评论 -
mysql读写分离
mysql读写分离原创 2022-09-28 08:01:28 · 164 阅读 · 0 评论 -
谈一下MySQL中的死锁
通过innodblockwait_timeout来设置超时时间,一直等待直到超时;发起死锁检测,发现死锁之后,主动回滚死锁中的某一个事务,让其它事务继续执行。死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁。InnoDB Lock Monitor打开锁监控,每15s输出一次日志。使用完毕后建议关闭,否则会影响数据库性能。使用命令show engine innodb status查看最近的一次死锁。原创 2022-09-27 22:31:26 · 141 阅读 · 0 评论 -
请说下事务的基本特性
2.一致性指的是数据库总是从一个一致性的状态转换到另外一个一致性的状态。比如A转账给B100块钱,假设中间sql执行过程中系统崩溃A也不会损失100块,因为事务没有提交,修改也就不会保存到数据库。1.事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。原子性指的是一个事务中的操作要么全部成功,要么全部失败。3.隔离性指的是一个事务的修改在最终提交前,对其他事务是不可见的。持久性指的是一旦事务提交,所做的修改就会永久保存到数据库中。原创 2022-09-27 22:05:29 · 141 阅读 · 0 评论 -
MylSAM和InnoDB的区别是什么?
聚簇索引的文件存放在主键索引的叶子节点上,因此 InnoDB必须要有主键,通过主键索引效率很高。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。5.InnoDB最小的锁粒度是行锁,MyISAM最小的锁粒度是表锁。而MylSAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;而MylSAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;原创 2022-09-27 22:00:01 · 518 阅读 · 0 评论 -
linux查看日志的命令
这个命令可以查找日志文件特定的一段 , 根据时间的一个范围查询,可以按照行号和时间范围查询。sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行。原创 2022-09-27 10:35:54 · 273 阅读 · 0 评论 -
Linux命令
mv 123.txt /home/456.txt 将文件123.txt移动到/home目录下并重命名为456.txt。cp -r [目录绝对路径1] [目录绝对路径2] 将目录1复制到目录2。mv[文件1][目录2] 将文件1移动到目录2下。mv [目录1] [目录2] 将目录1移动到目录2下。ls [路径]:列出指定路径下的所有目录和文件。原创 2022-09-26 17:26:04 · 443 阅读 · 0 评论 -
git的常用命令
git pull origin master 把远程仓库的master分支文件拉取到本地仓库的master分支(有本地仓库的情况下)git push origin dev:dev 将本地的dev分支推送到远程仓库,如果远程没有dev分支就创建。git push origin master 将本地仓库的master分支推送到远程仓库的master分支。git clone 【仓库的url】 把远程仓库克隆到本地(没有本地仓库的情况下用)注意:在哪个分支创建新分支,就会复制该分支的所有内容到新分支。原创 2022-09-25 14:07:41 · 143 阅读 · 0 评论 -
集合总结!
HashSet: 底层是HashMap, value位置用new Object固定对象填充,数组+链表+红黑树,数组初始长度为16,元素个数到达加载因子*数组长度时进行扩容,2倍扩容,当链表长度到达8及以上并且数组长度到达64,链表会转化为红黑树。Hashtable: 线程安全的,可用有参构造器指定长度创建,用无参构造器创建,默认长度为11,到达总长度*加载因子的值时进行扩容,2n+1倍扩容。vector:线程安全,底层是数组,初始长度为10,当储存空间不够时扩容,2倍扩容。原创 2022-09-24 11:30:08 · 211 阅读 · 0 评论 -
LinkedHashSet的全面说明
2)LinkedHashSet底层是一个 LinkedHashMap,底层维护了一个数组+双。3) LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使。用链表维护元素的次序(图),这使得元素看起来是以插入顺序保存的。1) LinkedHashSet是 HashSet的子类。4) LinkedHashSet不允许添重复元素。原创 2022-09-24 11:03:54 · 141 阅读 · 0 评论 -
Collections工具类
2) Object max(Collection, Comparator):根据Comparator 指定的顺序,5) int frequency(Collection, Object):返回指定集合中指定元素的出现次数。6) void copy(List dest,List src):将src中的内容复制到dest中。1) Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素。Collections工具类。替换List 对象的所有旧值。返回给定集合中的最大元素。原创 2022-09-24 08:03:53 · 74 阅读 · 0 评论 -
遍历Map集合
遍历Map的几种方式原创 2022-09-24 07:55:24 · 111 阅读 · 0 评论 -
Map接口和常用方法
2) Map 中的key 和 value可以是任何引用类型的数据,会封装到HashMap$Node·对象中。5) Map的key可以为null, value 也可以为null,注意key为null,只能有一个,7) key 和 value之间存在单向一对一关系,即通过指定的key 总能找到对应的value。Map接口实现类的特点[很实用]注意:这里讲的是JDK8的Map接口特点Map_.java。注意:这里讲的是JDK8的Map接口特点Map_.java。4) Map中的value可以重复。原创 2022-09-23 19:35:27 · 212 阅读 · 0 评论 -
LinkedHashSet的全面说明.
2)LinkedHashSet底层是一个 LinkedHashMap,底层维护了一个数组+双。3) LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使。用链表维护元素的次序(图),这使得元素看起来是以插入顺序保存的。1) LinkedHashSet是 HashSet的子类。4) LinkedHashSet不允许添重复元素。原创 2022-09-23 18:49:49 · 384 阅读 · 0 评论 -
HashMap是怎么保证元素不可重复的
6.在Java8中,如果一条链表的元素个数超过TREEIFY_THRESHOLD(默认是8),并且table的大小>=MIN TREEIFY CAPACITY(默认64).就会进行树化(红黑树)5.如果有,调用equals比较,如果相同,就放弃添加,如果不相同,则添加到最后。3.找到存储数据表table,看这个索引位置是否已经存放的有元素。2.添加一个元素时,先得到hash值-会转成->索引值。1. HashSet底层是HashMap。4.如果没有,直接加入。原创 2022-09-22 19:37:58 · 975 阅读 · 0 评论 -
throw和throws的区别
throws:处理异常的方式。使用在方法声明处的末尾try-catch-finally。throw:生产一个异常对象,并抛出。使用在方法的内部自动抛出异常对象。原创 2022-09-20 18:34:00 · 88 阅读 · 0 评论 -
谈谈你对程序,进程,线程的理解
进程:是程序的一次执行过程,或是正在运行的一个程序是一个动态的过程,有它自身的产生,存在和消亡的过程。程序:是完成特定任务,用某种语言编写的一组指令的集合,即指一段静态的代码,静态对象。线程:进程可进一步细化为线程,是一个程序内部的一条执行路径。原创 2022-09-20 11:38:02 · 263 阅读 · 0 评论 -
Array和ArrayList有何区别?什么时候更适合用Array
若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。这些有序排列的同类数据元素的集合称为数组。ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处。对象所包含的方法不同。原创 2022-09-19 16:51:36 · 661 阅读 · 0 评论 -
如何决定选用HashMap还是TreeMap
对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。然而,假如你需要对一个有序 的key集合进行遍历,TreeMap是更好的选择。基于你的collection的大小,也许向HashMap中添加元 素会更快,将map换为TreeMap进行有序key的遍历。原创 2022-09-19 16:47:38 · 277 阅读 · 0 评论 -
Java反射的作用于原理
Java反射原创 2022-09-19 15:03:49 · 93 阅读 · 0 评论 -
Java 中 IO 流分为几种?
Java 中 IO原创 2022-09-19 15:01:32 · 413 阅读 · 0 评论 -
HashMap和HashTable、ConcurrentHashMap区别?
HashMap和HashTable、ConcurrentHashMap区别?原创 2022-09-19 14:56:22 · 251 阅读 · 0 评论 -
jdk1.8新特性
jdk1.8原创 2022-09-18 07:49:43 · 747 阅读 · 0 评论 -
String、StringBufer和StringBuilder的区别是什么?
String、 StringBufer和StringBuilder的区别是什么?原创 2022-09-10 08:47:07 · 126 阅读 · 0 评论 -
Hashcode的作用
Hashcode的作用原创 2022-09-10 08:40:46 · 65 阅读 · 0 评论 -
static关键字
static关键字原创 2022-09-08 19:49:36 · 88 阅读 · 0 评论 -
方法的重载和重写
方法的重载和重写原创 2022-09-08 14:51:10 · 104 阅读 · 0 评论 -
Java中关键字final
Java中关键字final原创 2022-09-08 14:36:20 · 113 阅读 · 0 评论