- 博客(11)
- 收藏
- 关注
原创 杂记_Java
如果父类和子类中有相同的变量,用父类对象去调用这个变量,优先调用父类的变量。比如父类中a=1,子类中a=2,那么father.a的值为1而不是2。用父类引用调子类的覆盖方法,运行的就是子类重写的方法。
2023-10-14 10:42:19 65 1
原创 面试-Spring
采用了三级缓存来解决这个问题。假设BeanA和BeanB循环依赖,首先假设要初始化BeanA,那么就会将BeanA放到三级缓存中,然后进行依赖注入,发现BeanA依赖BeanB,所以需要对BeanB进行初始化,BeanB也需要依赖注入,然后要注入BeanA,BeanB就可以从三级缓存中获取BeanA并完成初始化,同时将BeanA从三级缓存中删除移动到二级缓存中,BeanB也会放入到以及缓存中,这个时候BeanA就可以从一级缓存中获取BeanB实现依赖注入,之后完成初始化,将BeanA放入到一级缓存中。
2023-09-18 09:30:40 86
原创 面试-计网
三次握手可以同步双方的初始序列号,保证双方的发送和接收能力,能够避免历史连接初始化造成的混乱,此外可以避免资源的浪费。举个例子:假设客户端向服务端发送连接请求,但是网络拥塞一直没到达服务端,并且客户端宕机了。客户端重启之后再次向服务端发送新的连接请求,但是这个时候之前的请求连接这时候到达了服务端,服务端就会向客户端返回响应报文。如果是两次握手的话,服务端在接收到连接请求后就会进入到连接建立状态,并且向客户端发送数据,这就会造成资源浪费等问题。
2023-09-04 10:16:15 131
原创 面试-Redis
因此混合持久化在记录日志文件的时候,AOF日志文件的前半部分记录的是RDB格式的全量数据,后半部分记录的是AOF格式的增量数据,这样在恢复的时候,加载数据会比较快,数据丢失也少。但是在同步数据的时候,旧的主节点会删掉所有的数据然后同步新的数据,这就导致了数据丢失的问题。假设请求A和B,请求A要更新数据,首先删除缓存值,然后请求B抢先操作,数据进行了访问,但是这时候缓存值被删除了,因此请求B到数据库中访问到数据后写回缓存更新为2,这时候请求A再更新数据库为1,这样数据不一致。用于排序场景,比如排行榜等。
2023-08-29 21:21:30 83
原创 面试-MySQL
索引就是数据库用来提高数据库表访问的一种数据结构。索引下推是为了减少回表次数,并将Server层的事情下推到引擎层。索引下推适用于非聚簇索引。对于组合索引,假设查询a>?andb=?,如果不使用索引下推,会先定位到符合a>?的主键id,然后回表查询记录,之后在server层比较b的条件是否成立。如果使用索引下推,则会在定位到符合a>?的时候,直接比较b是否成立,如果不成立就查找符合a条件的下一个记录。
2023-08-27 17:01:15 74
原创 面试-JVM
双亲委派就是当需要加载一个类的时候,自定义加载器会先判断自己有没有加载过这个类,如果有就直接加载,否则向上委托给系统类加载器。启动类加载器会看自己能不能加载这个类,如果可以就自己加载,如果不行就向下委派给扩展类加载器,看它能不能加载这个类。如果扩展类加载器也不能就继续向下委派给系统类加载器,系统类加载器不能加载的话会委派给自定义加载器加载。否则,会去判断老年代连续空间是否大于之前每次新生代晋升对象的平均值,如果大于会尝试进行一次Minor GC,否则会担保失败,触发Full GC。虚拟机栈也是线程私有的。
2023-08-24 15:42:45 61
原创 面试-Java集合
在put元素的时候,会计算hashcode值然后高低16位异或操作后进行取模运算。在这里取模运算使用的是将异或结果和数组长度减一进行与操作来实现。用位运算可以提高运行的速度。
2023-08-22 19:34:40 89
原创 面试-Java基础
值传递就是传递这个变量的副本,改变这个副本不会影响这个变量引用传递传递的是对象的地址,对这个对象进行操作会影响原对象顾名思义,字符串常量池就是存储字符串常量的池子。在需要创建一个字符串的时候,会先去字符串常量池中查找,如果存在该字符串就返回这个字符串的引用,如果不存在就会在堆中新建一个字符串放到常量池中,然后返回其引用。反射指的是在运行状态中,对于任意一个类,能够动态地获取类的属性和方法;对于任意一个对象,能够调用它的属性和方法。反射的场景有:JDK动态代理,JDBC连接数据库等。
2023-08-21 15:01:28 110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人