其他面筋

2024-10-18

什么是SQL注入?

sql注入是一种安全漏洞,攻击者向程序中插入恶意的代码,而程序没有对sql语句进行正确的验证,导致攻击者修改了原有的sql查询,从而获取,修改数据库的信息。

解决方法:

  • 在java中使用PreparedStatement
  • 对用户的输入进行验证和过滤
  • 使用orm框架,这些工具会自动处理输入的安全性


接口和抽象类的区别

共同点:

  • 接口和抽象类都不能被实例化,接口是用来被实现的,抽象类是被用来继承的
  • 接口和抽象类都可以有抽象方法,抽象方法没有方法体

区别:

  • 接口用于对类的行为进行约束,而抽象类主要解决代码复用的问题
  • 接口是多继承,抽象类是单继承
  • 接口中的成员变量是由public final static 修饰,而抽象类不限
  • java8之前,接口的默认方法是public abstract,8之后允许有默认的方法以及static方法,而抽象类的抽象方法不可以有private,final,static等关键字,因为和重写相违背


jdk动态代理和cglib动态代理的区别

jdk动态代理是基于接口的,要求代理类一定是有定义的接口的

cglib动态代理基于ASM字节码生成工具,他是通过继承的方式生成目标类的代理类


深拷贝和浅拷贝

浅拷贝:浅拷贝会在堆上创建一个新的对象,如果说原对象的内部属性是引用类型的话,那么浅拷贝会复制这个引用类型,也就是说,拷贝对象和原对象共用一个内部对象。

深拷贝:深拷贝会完整的复制整个对象,包括内部对象。

补充:引用拷贝就是将两个不同的引用指向堆中同一个对象。

image-20241018165847775