![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
灼_灼
这个作者很懒,什么都没留下…
展开
-
重载和重写的区别
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同、的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。...原创 2022-04-26 23:27:40 · 221 阅读 · 0 评论 -
Java中实现动态代理的方式?
Java 中,实现动态代理有两种方式:1、JDK 动态代理:java.lang.reflect 包中的 Proxy 类和 InvocationHandler 接口提供了生成动态代理类的能力。2、Cglib 动态代理:Cglib (Code Generation Library )是一个第三方代码生成类库,运行时在内存中动态生成一个子类对象从而实现对目标对象功能的扩展。JDK 动态代理和 Cglib 动态代理的区别:JDK 的动态代理有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理原创 2022-04-23 23:57:51 · 5445 阅读 · 0 评论 -
(sleep与wait区别)&&(start与run区别)
sleep与wait区别对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object 类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu给其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态原创 2022-04-22 23:50:08 · 90 阅读 · 0 评论 -
final, finally, finalize 的区别
final—修饰符(关键字)如果一个类被声明为 final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract 的,又被声明为 final 的。将变量或方法声明为 final,可以保证它们在使用中不被改变。被声明为 final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch .原创 2022-04-21 23:35:52 · 1318 阅读 · 0 评论 -
数据库什么时候索引失效?
索引失效的地方:不满足最左匹配原则使用了select *索引列上有计算,如:id有索引,where id +1 = 3 这样索引列上用了函数字段类型不同,在这推荐数据库拼接时用concat关键字like左边包含%,如:like “%h”列对比,如:有着id和parentId两个字段,where id = parentId使用or关键字,要在使用or时走索引需要它前面和后面的字段都有加索引,才不会索引失效。not in和not exists,主键字段中使用not in查询数据范围,仍然可以原创 2022-04-20 23:45:41 · 1405 阅读 · 0 评论 -
throw和throws的区别
位置不同: throws 用在函数上,后面跟的是异常类,可以跟多个,而 throw 用在函数内,后面跟的是异常对象。功能不同:1. throws 用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先的处理方式;throw 抛出具体的问题对象,执行到 throw,功能就已经结束了,跳转到调用者,并将具体的问题对象抛给调用者。也就是说 throw 语句独立存在时,后面不要定义其他语句,因为执行不到。2. throws 表示出现异常的一种可能性,并不一定会发生这些异常;throw 则是抛出原创 2022-04-19 23:42:04 · 258 阅读 · 0 评论 -
为什么要有hashCode
我们先以“HashSet 如何检查重复”为例子来说明为什么要有 hashCode: 当你把对象加入 HashSet时,HashSet 会先计算对象的 hashcode 值来判断对象加入的位置,同时也会与该位置其他已经加入的对象的 hashcode 值作比较,如果没有相符的 hashcode,HashSet 会假设对象没有重复出现。但是如果发现有相同 hashcode 值的对象,这时会调用 equals() 方法来检查 hashcode 相等的对象是否真的相同。如果两者相同,HashSet 就不会让其加入原创 2022-04-17 22:42:28 · 557 阅读 · 1 评论 -
get和post的区别
Form 中的 get 和post 方法,在数据传输过程中分别对应了 HTTP 协议中的 GET 和 POST 方法。二者主要区别如下:Get 是用来从服务器上获得数据,而 Post 是用来向服务器上传递数据;Get 将表单中数据按照 variable=value 的形式,添加到 action 所指向的 URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将表单中的数据放在 form 的数据体中,按照变量和值相对应的方式,传递到 action 所指向 URL;原创 2022-04-16 23:52:59 · 66 阅读 · 0 评论 -
String,StringBuffer和StringBuilder的区别
String是不可变的对象,每次对String类型进行改变的时候其实是产生了一个新的String对象,然后指针指向新的String对象。StringBuffer是线程安全的可变字符序列,需要同步的时候,则使用。StringBuilder线程不安全,速度更快,单线程使用。 总结:StringBuffer和StringBuilder都是可变的。所以每次修改String对象的值都是新建一个对象再指向这个对象。而使用StringBuffer则是对StringBuffer对象本身进行操作。所以字符串经常改.原创 2022-04-15 23:35:31 · 192 阅读 · 0 评论 -
mysql的binlog有几种录入格式?
有三种格式,分别是:statement,row和mixed。 statement模式下,每一条修改数据的sql语句都会记录在binlog中。不需要记录每一行的变化,减少了binlog的日志量,同时节约了IO,还提高了性能。由于sql的执行是有上下文的,因此在保存的时候需要保存相关的信息,同时还有一些使用了函数之类的语句是无法被记录复制。 row级别下,不记录sql语句上下文相关信息,仅保存哪条记录被修改。记录单元为每一行的改动,基本上是可以全部记下来,但是由于很多操作,会导致大量行的改动(例原创 2022-04-14 21:51:10 · 754 阅读 · 0 评论 -
springboot不同环境下的配置文件名称
可以是 application-{profile}.properties/yml ,但默认是启动主配置文件application.properties,一般来说我们的不同环境配置如下。application.properties:主配置文件application-dev.properties:开发环境配置文件application-test.properties:测试环境配置文件application.prop-properties:生产环境配置文件...原创 2022-04-12 23:39:29 · 457 阅读 · 0 评论