下面这个sql问题,求大佬帮忙解答一下

每日一语:人生之路多坎坷,摔个跟头别难过,爬起来,掸掸土,前方就是一片乐土。 

本面试题是在牛客的论坛上面一些大佬的面试真题,答案是我在csdn社区找的答案,如果哪个地方有不对的地方还请各位大佬斧正,也希望对大家有所帮助!!! 


1.适用于基本数据类型的比较。

2.判断引用是否指向堆内存中的同一个地址。

判断两个变量是否引用同一个对象,即堆中内容是否相同,返回值为布尔类型。

==是Java中的一个比较运算符,比较两个变量的内存地址是否相同。而equals是Object中提供的一个方法,equals默认是返回两个对象==比较的结果。但是equals是可以重写的,所以我们在具体使用的时候需要关注equals()方法有没有被重写.


MySQL的索引类型有:主键索引,普通索引,组合索引,唯一索引,全文索引。

组合索引(包含多列的索引,与单行索引相对)


我们知道,对于表的单列(如id)数据,是可以建立索引的,对于多列(id和name组合,或者,name和id组合),也可以建立索引。联合索引,也称之为组合索引。 

答:对多个字段同时建立的索引(有顺序,ABC,ACB是完全不同的两种联合索引。

联合索引可以建立多列(列数大于2)的索引,建议列数最多不要越过3列,超过3列,应重新设计表。


我们可以来看一下MySQL的基本架构示意图。 


从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。

在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载

面试时,问:重载(Overload)和重写(Override)的区别?


答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。


1、原子性:在整个操作的事务中,要么全部成功,要么全部失败
2、隔离性:所谓隔离性,就是每个事务执行的时候,相互之间不会受到影响,都是单独的事务。
3、一致性:也就是说事务在执行之后,必须和之前的数据保持一致。
4.   持久性:事务一旦提交,就会持久化到数据库中,不能回滚。 


1.栈内存存储的是局部变量而堆内存存储的是实体;

2.栈内存的更新速度要快于堆内存,因为局部变量的生命周期很短;

3.栈内存存放的变量生命周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定时的回收。


什么样的类不能被继承?

一,在Java中,只要是被定义为final的类,也可以说是被final修饰的类,就是不能被继承的。


二,final是java中的一个关键字,可以用来修饰变量、方法和类。用关键词final修饰的域成为最终域。用关键词final修饰的变量一旦赋值,就不能改变,也称为修饰的标识为常量。如果一个类的域被关键字final所修饰,它的取值在程序的整个执行过程中将不会改变。


三,假如说整个类都是final,就表明自己不希望从这个类继承,或者不答应其他任何人采取这种操作。换言之,出于这样或那样的原因,我们的类肯定不需要进行任何改变;或者出于安全方面的理由,我们不希望进行子类化(子类处理)。



2、声明为Integer的变量需要实例化,而声明为int的变量不需要实例化;

3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向 此对象;而int则是直接存储数据值

为什么在项目里面用Integer?


1,因为Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。

2,在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。

3,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。


一、什么是sql注入呢?

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。 黑客通过SQL注入攻击可以拿到网站数据库的访问权限,之后他们就可以拿到网站数据库中所有的数据,恶意的黑客可以通过SQL注入功能篡改数据库中的数据甚至会把数据库中的数据毁坏掉。做为网络开发者的你对这种黑客行为恨之入骨,当然也有必要了解一下SQL注入这种功能方式的原理并学会如何通过代码来保护自己的网站数据库

二、sql注入产生原因

 sql注入攻击是利用是指利用设计上的漏洞,在目标服务器上运行Sql语句以及进行其他方式的攻击,动态生成Sql语句时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要原因。对于java数据库连接JDBC而言,SQL注入攻击只对Statement有效,对PreparedStatement是无效的,这是因为PreparedStatement不允许在不同的插入时间改变查询的逻辑结构。
如验证用户是否存在的SQL语句为:


其中编号为了方便使用id作为编号,实际运用中编号应该用特定的格式,以上语句中id设置为了主键,保证了编号的唯一性。

第一条查询,查询某个学生的信息;该语句中使用了学号来查询学生的信息,也可改为其他条件。

第二条:查询某个辅导员班级的学生成绩

第三条:查询某个协会的学生,根据协会的名称查询

由于没有画图工具,E-R图暂不画出。

我要回帖

更多关于 问题大佬的饲养指南 的文章

 

随机推荐