栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

面试day04(14.nosql 和关系型数据库的区别?)(15.==和equals区别?)(16.Hashcode和equals的区别?)(17.Java中深克隆和浅克隆的区别?怎么实现?)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面试day04(14.nosql 和关系型数据库的区别?)(15.==和equals区别?)(16.Hashcode和equals的区别?)(17.Java中深克隆和浅克隆的区别?怎么实现?)

14.nosql 和关系型数据库的区别?

nosql的优点:

       查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。

       存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。

       扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难

nosql缺点:

      不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。

      不提供关系型数据库对事物的处理。

非关系型数据库的优势:

      1. 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过  SQL层的解析,所以性能非常高。

      2. 可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

关系型数据库的优势:

     1. 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。

     2. 事务支持使得对于安全性能很高的数据访问要求得以实现。对于这两类数据库,对方的优势就是自己的弱势,反之亦然。

读写集中在一个数据库上让数据库不堪重负,大部分网站已使用主从复制技术实现读写分离,以提高读写性能和读库的可扩展性。

15.==和equals区别? 

“==”:

      ==是判断的意思,对于局部变量的基本类型存储在栈之中,比较的是值,只要值相等,(byte,short,int,long,float,double,char,boolean)就返回True

       引用类型来说,它比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。

“equals”:

       对于equals方法,注意:equals方法不能作用于基本数据类型的变量,如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

16.Hashcode和equals的区别?

     hashCode()方法和equal()方法的作用其实一样,在Java里都是用来对比两个对象是否相等一致,那么equal()既然已经能实现对比的功能了,为什么还要hashCode()呢?因为重写的equal()里一般比较的比较全面比较复杂,这样效率就比较低,而利用hashCode()进行对比,则只要生成一个hash值进行比较就可以了,效率很高,那么hashCode()既然效率这么高为什么还要equal()呢?因为hashCode()并不是完全可靠,有时候不同的对象他们生成的hashcode也会一样(生成hash值得公式可能存在的问题),所以hashCode()只能说是大部分时候可靠,并不是绝对可靠,所以我们可以得出:
    1.equal()相等的两个对象他们的hashCode()肯定相等,也就是用equal()对比是绝对可靠的。
    2.hashCode()相等的两个对象他们的equal()不一定相等,也就是hashCode()不是绝对可靠的。

17.Java中深克隆和浅克隆的区别?怎么实现?

浅克隆(Shadow Clone):

把原型对象中成员变量为引用类型的引用地址也复制给克隆对象, 即原型对象汇总如果有成员变量为引用对象,则此引用对象的地址是共享给原型对象的和克隆对象的

深克隆(Deep Clone): 

将原型对象中的所有类型,无论是值类型还是引用类型,都复制一份给克隆对象, 即 深克隆会把原型对象和原型对象所引用的对象,都复制一份给克隆对象

实现深克隆的几种方式:

1.所有对象都实现克隆方法;

2.通过构造方法实现深克隆;

3.使用JDK自带的字节流实现深克隆;

4.使用第三方工具实现深克隆,比如ApacheCommonsLang;

5.使用JSON工具类实现;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/658822.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号