首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《Effective Java》—— 对于所有对象都通用方法

本节主要涉及Object中通用一些方法,比如equals,hashCode,toString,clone,finalize等等 覆盖equals时请遵守通用约定 equals方法实现等价关系:...自反性:对于所有的非null,a=a 对称性:a=b,则b=a 传递性:a=b,b=c,则a=c 一致性:对于没有被修改ab,如果a=b,则一直a=b 非空性:对于任何非Null,a!...=null 高质量equals方法诀窍: 使用==操作符检查——“参数是否为这个对象引用” 使用instanceof检查——“参数是否为正确类型” 参数转换成正确类型 对于每个关键域,检查参数中域是否与对象域相匹配...始终覆盖toString() 因为toString方法应该返回对象关键信息 谨慎覆盖clone 应该满足: x.clone() !...= x x.clone().getClass() == x.getClass() x.clone().equals(x) 另外clone方法相当于另一种构建器,不应该对原来对象产生影响。

61570
您找到你想要的搜索结果了吗?
是的
没有找到

​第3章 对于所有对象都通用方法

~~ 第3章 对于所有对象都通用方法 Object设定是为了扩展,它所有非final方法(equals hashCode toString clone finalize)都有明确通用约定,因为它们被设计是要被覆盖...: 逻辑相等,就是逻辑上是相等,比如id一样,判定它们相等,即使它们是两个不同对象 什么时候应该覆盖equals 当类需要逻辑相等这个概念时候就应该覆盖equals 比如要判断两个student是否是同一个人...,这个时候我们就需要按需重写equals 通用约定 重写equals时候就必须要遵守它通用约定 equals方法实现了等价关系(equivalence relation): 自反性(reflexive...这只不过是一种性能优化,如果比较操作有可能很昂贵,就值得这么做 (平时没有用过,怎么样比较操作算是昂贵呢?)...对于对象中每个关键域f(指equals方法中涉及每个域),完成以下步骤: 如果f是boolean,则计算 f?

50120

一种通用数据仓库分层方法

因此,本文将指出一种通用数据仓库分层方法,具体包含如下内容: 介绍数据分层作用 提出一种通用数据分层设计,以及分层设计原则 举出具体例子说明 提出可落地实践意见 0x01 数据分层?...因此,我们需要一套行之有效数据组织和管理方法来让我们数据体系更有序,这就是谈到数据分层。...,能够减少极大重复计算 统一数据口径:通过数据分层,提供统一数据出口,统一对外输出数据口径 复杂问题简单化:将一个复杂任务分解成多个步骤来完成,每一层解决特定问题 0x02 一种通用数据分层设计...一般来讲,为了考虑后续可能需要追溯数据问题,因此对于这一层就不建议做过多数据清洗工作,原封不动地接入原始数据即可,至于数据去噪、去重、异常值处理等过程可以放在后面的DWD层来做。...ODS 层:ODS 数据量一般非常大,所以大多数公司会选择存在HDFS上,即Hive或者Hbase,Hive居多。

17.3K1820

《Effective Java》 第二讲:对于所有对象都通用方法

上接《Effective Java》 第一讲:创建和销毁对象 八、覆盖 equals 时请遵守通用约定 1....自反性:对于任何非空引用 x 都有 x.equals( x ) 都必须返回 true 。 ( 参见:什么是自反、反自反 ) 2....对于任何非 null 引用值x,x.equals(null) 必须返回 false。 实现高质量equals方法诀窍: 1. 使用==操作符检查“参数是否为这个对象引用” 2....使用instanceof操作符检查“参数是否为正确类型” 3. 把参数转换成正确类型 4. 对于该类中每个”关键”域,检查参数中域是否与该对象中对应域相匹配 5....当你编写完成了equals方法之后,应该问自己三个问题:它是否是对称、传递、一致。 九、覆盖 equals( ) 时总要 覆盖 hashCode( )

13310

《Effective Java》读书笔记(二)之对于所有对象都通用方法

第八条 在改写equals时候请遵守通用约定 一般以下几种情况,不适宜覆盖equals方法 1.类每个实例本质上都是唯一对于代表活动实体而不是值类确实如此,例如Thread. 2.不关心类是否提供了...“逻辑相等”测试功能 3.超类已经覆盖了equals,从超类继承过来行为对子类也是合适 4.类是私有的或者包级私有的,可以确定它equals方法永远不会被调用。...实例受控,确保“每个值最多只存在一个对象”类,枚举通常属于这种类型。对于枚举类型来说, 逻辑相等与对象相等是同一回事, 因此不需要覆盖equals方法。...equals改写规范: 1)自反性:对于任何非null引用值x,x.equals(x)一定为true 2)对称性:对于任何非null引用值x和y,当且仅当x.dquals(y)为true;...4)一致性:对于任何非null引用值x和y,如果用于equals比较对象信息没有被修改的话,那么多次调用x.dquals(y)返回值是一致 5)对于非null引用值x,x.equals

27910

一种针对WEB前端混淆防护通用对抗方法

hook检测 hook在逆向分析中也是一种很常用方法。例如,如果对eval函数调用进行劫持,很可能非常轻松地实现脱壳。...四、安全测试中通用对抗思路 综上所述,如果测试人员想要通过代理工具修改请求参数: 1.由于请求参数编码和Cookie令牌存在,测试人员需要先阅读其具体算法 2.由于算法代码被混淆并动态执行,测试人员需要先进行调试或...五、浏览器内核hook案例 干涉JS代码输入过程方法有很多,本文给出了其中一种方法,通过修改主流开源浏览器内核代码,在关键函数上加入hook,实现了对部分JS输入值劫持和混淆措施应对。...= "id" && tname != "name" && tname !...另外需要注意,对于setTimeout和setInterval中第一个参数为函数(而非字符串)情况,由于不需要动态编译JS代码,上述位置hook不起作用。

3.5K20

Effective-java-读书笔记之对于所有对象都通用方法

第10条 覆盖equals时请遵守通用约定如果不覆盖equals方法, 类每个实例都只与它自身相等. 如果满足以下任何一个条件, 就不需要覆盖equals方法: 类每个实例本质上都是唯一....(代表活动实体类如Thread.)不关心类是否提供了逻辑相等测试功能.超类已经覆盖了equals, 从超类继承过来行为对于子类也是合适....无论是否指定了格式, 都应该在文档中说明意图.无论是否指定格式, 都应该为toString返回值中包含所有信息, 提供一种访问途径....(接口一种极端非典型用法.)来自Object规范中clone方法通用约定:创建和返回对象一个拷贝. 这个拷贝精确含义取决于该对象类. 通常要求:* x.clone() !...方法, 则应该首先调用super.clone得到对象.对于实现了Cloneable类, 我们总是期望它也提供一个功能适当公有的clone方法, 通常, 需要该类所有超类都提供了行为良好clone

43600

独家 | SVP:一种用于深度学习高效数据选择方法

本文主要介绍了SVP(Selection via proxy)方法。作为一种用于深度学习数据选择方法,其可以在保证识别准确率同时,有效地提高深度学习中计算效率。...在最近ICLR 2020工作中(https://openreview.net/pdf?id=HJg2b0VYDr),我们提出了一种将数据选择速度提高多达41.9倍方法。...我们使用一种规模较小、精度较差模型作为规模较大目标模型低代价代理,并用此来选择用于训练“核心”数据。...创建高效且有用代理模型 我们探索了两种创建代理模型主要方法: 缩小网络规模 对于具有多层深层模型,我们可以减小隐藏层大小或数量,这是在权衡模型精度下减少训练时间简单方法。...对于核心集选择,代理模型在选择保持高精度数据子集时性能几乎与目标模型相同甚至更好。

1.4K10

如何评估神经网络鲁棒性?一种通用方法:CLEVER

导言: 神经网络鲁棒性评估一直是深度学习领域中一个热门研究方向,该论文是通用评估神经网络鲁棒性方法开山之作。...作者将神经网络鲁棒性问题转换成局部Lipschitz常数估计问题,并利用极值理论方法进行评估,进而提出了一种度量神经网络鲁棒性通用方法-CLEVER,该方法可以对不可知攻击方式进行评估,并且对于大规模神经网络计算成本较少...如果是一个有Lipschitz常数Lipschitz函数,则对于任意,以下不等式成立 其中,是的梯度,并且有,。 证明:对于给定任意和,令表示是指向单位向量,其中有。...给定,对于任意可以通过查看从而来判断它属于哪一个区域。 同一个区域所有的点梯度范数是相同,即比如对于任意和满足,则可以推知。...下面两个表格分别表示了在和范数下,CLEVE分数与CW、I-FSGM以及SLOPE这四种评估方法在不同条件设置下实验结果,对比实验结果可以发现,针对不同神经网络模型CLEVER分数更好体现出不同扰动攻击程度

3K70

为什么项目中用了JOOQ后大家都不愿再用Mybatis?

,因为通过这样方式不仅SQL编写通用层度需要我们花费额外时间去考虑,而且由于Java面向对象编程方式,我们还需要花费很多时间来将数据库查询结果映射成为实体对象,所以使用Mybatis进行持久层开发时有时候真的是让人又爱又恨...那么有没有一种ORM框架既能够保持Mybatis灵活性又不像Hibernate那样重呢?毕竟大家也都是从Hibernate魔爪中逃离出来后才选择使用Mybatis直到今天!...JOOQ目前在国内相对来说还比较小众,对于大部分从SSH或者SSM成长起来码农朋友们来说,心里估计会质疑“这玩意用这么少,到底靠不靠谱?”。在这里码农哥可以很负责任JOOQ是靠谱!...executeInsert方法就可以完成insert操作了。...这里只是简单介绍了两种通过JOOQ实现常见数据库操作方法,更多细节,大家可以参考JOOQ用户手册!

2K20

jQuery通过id选择器绑定双击事件,和appendTo()方法使用详解

下拉列表绑定一个双击事件dblclick() $("#id”).dblclick(function(){ //获取列表中所有被选中option var alloptions...= $("option:selected");//这种写法存在问题,如果已分配列表中也有被选中option同样会被选中//不可以 var alloptions = $("#id option...");//不可以 var alloptions = $("option:selected",$("#id"));//选择哪个下拉(select)列表被选中值(第二种写法)...var alloptions = $("option:selected",#id);//这个是另外一种写法也是可以被识别的(第三中写法) var alloptions = $("option...//实际上,使用这个方法是颠倒了常规$(A).append(B)操作,即不是把b追加到a,而是把a追加到b $("option:selected",this).appendTo($("

1.1K20

一种基于权重自动选择最优iSCSI访问路径方法

这个方案并不是业界通用方案,目前作者把这个方案命名为“iSCSI priority path”。...P1:在相同机房A中不同机架M上iSCSI服务端。 P2:在不同机房B中不同机架X上iSCSI服务端。 在三条路径正常情况下,路径P0具有最高权重,客户端正在使用路径P0。...权重最高路径P0发生了异常,客户端切换到拥有较高权重路径P1。如果P1也发生故障,则选择P2。 4,iSCSI更优路径选择 ? P0路径已经恢复,那么P0权重逐渐增加。...P0权重超过P1和P2时候,就会选择切换回到P0路径上。 5,路径权重计算 现在有三条iSCSI路径p0,p1,p2,它们最大权重分别是100,90,80。...当前使用路径p0权重是100,如果发生异常,则把当前路径p0权重减掉一半,则当前路径p0权重变成50;那么客户端在三条路径中选择权重最高路径p1作为最优路径,达到了高可用并选择可用最优路径效果

1.2K21

【SLAM】视觉SLAM基本功能一种通用方法——体素图

,用于进一步特征匹配或直接跟踪是一种标准做法。...在这项工作中,我们认为关键帧不是最佳选择,由于一些固有的限制,如薄弱几何推理和较差可扩展性。我们提出了一种体素图表示,以有效地检索地图点视觉SLAM。特别是在一个规则体素网格中组织地图点。...该方法也可以自然地扩展到大场景和复杂多相机配置中。实验结果表明,本文方法与包含5个关键帧关键帧映射一样有效,并且在EuRoC数据集上提供了显著提高定位精度(RMSE平均提高46%)。...本文提出体素图表示是视觉SLAM基本功能一种通用方法,应用广泛。 主要框架及实验结果 ? ? ? ? ? ? ? ?...PS:腾讯最近更改公众号推送规则,文章推送不在按照时间排序,而是通过智能推荐算法有选择推送文章,为了避免收不到文章,看完文章您可以点击一下右下角"在看",以后发文章就会第一时间推送到你面前。

94830

防噪音深度度量学习:一种样本选择方法 | CVPR 2021

我们介绍本文提出一种快速、简单且有效算法:基于概率排序样本选择算法(PRISM),该算法使用图像特征平均相似度来识别minibatch中错误标签。...为了减轻memory bank带来高计算成本,我们提出了一种加速方法,该方法用类中心代替单个数据点。...2 方法 在本文中,我们提出了一种防御标签噪音深度度量学习算法:基于概率排序样本选择算法(Probabilistic Ranking-based Instance Selection with Memory...一种解决方案是top-R方法(TRM),将minibatch数据 从小到大排序,认为前R%小部分是噪音(R是一个超参数)。换句话说,判定数据为噪音阈值m是R%分位数。...为了减弱这种不准确噪音比例估计带来影响, 我们提出一种平滑top-R 方法(sTRM),它取最近 τ 个minibatch算得R%分位数做平均,来作为噪音数据识别的阈值m。

1.2K51

SIGIR2021 | 一种自动发掘CTR预估中强大特征交互通用方法

| 作者:YEN | 单位:东北大学 | 研究方向:推荐系统、计算广告 本文分享一篇发表在SIGIR’21点击率预估方面的文章,AutoPI:一种自动发掘点击率预估中强大特征交互通用方法[1] 论文核心内容...尽管对于仅有少量数据场景手工定制特征交互是有效,但这样方式在大数据量场景中通常需要费力而乏味特征工程。近年来,学者们提出了几种基于神经架构搜索(NAS)方法来自动设计特征交互。...然而,现有的方法只探索有限交互类型和连接方式,导致模型泛化能力较弱。为了解决这些问题,这篇论文提出了一种通用自动化方法来构建强大特征交互,命名为AutoPI。...具体来说,让 表示候选交互算子集合,每个交互算子定义为运用在 上函数 。对于每一个cell,目标是 中从选择最合适操作来连接两个节点。...id=S1eYHoC5FX

1.5K10

添加和共享打印机方法是_名称选择共享打印机输入什么

选择并按住(或右键单击)想要共享打印机、选择“打印机属性”,然后选择“共享”选项卡。 在“共享”选项卡上选择“共享此打印机”。 如果需要,可编辑打印机共享名称。...选择想要打印机,然后选择“添加设备”。 如果未看到想要打印机,请选择“我想要打印机未列出”。...在“添加打印机”对话框中,选择名称选择共享打印机”,然后输入主要电脑计算机或设备名称,和使用以下其中一种格式打印机共享名称:\\computername\printername http://computername...选择想要打印机,选择“下一步”。出现提示时,安装打印机驱动程序。 如果未看到想要打印机,请选择“我想要打印机未列出”。...在“添加设备”对话框中,选择名称选择共享打印机”,然后输入主要电脑计算机或设备名称,和使用以下其中一种格式打印机共享名称:\\computername\printername http://computername

4K30

一种CNN可视化方法,目标选择性梯度(TSG)反向传播

现有技术有很多是基于迭代擦除方式,生成视觉显著性图。与基于迭代显著性方法相比,基于单次反向传播显著性方法具有更快速度,并且在下游视觉任务中得到了广泛应用,比如CAM。...因此,我们工作侧重于单次反向传播方法。然而,这类现有方法难以成功地生成显著性图,可以专注于特定目标类别,而且显示得很精细。...这就是说,使用一个单一反向传播过程,生成同时满足目标选择性、细粒度、可靠显著性图,在该领域是一个具有挑战性问题。...受这些观察结果启发,我们提出了一种视觉显著性框架,称为目标选择梯度(TSG)反向传播,它利用校正操作,有效地强调目标类,并进一步有效地将显著性传播到输入空间,从而生成具有目标选择性和细粒度显著性图...在ImageNet和Pascal VOC上进行了大量定性和定量实验,结果表明,该框架比其他竞争性方法获得了更准确、更可靠结果。

33520

选择 JDBCTemplate!

因为项目需要选择数据持久化框架,看了一下主要几个流行和不流行框架,对于复杂业务系统,最终结论是,JOOQ是总体上最好,可惜不是完全免费,最终选择JDBC Template。...,可以让开发人员按照字段取得结果值,相对于JDBC,JOOQ会把结果值转换为合适Java类型,用起来比JDBC更简单。...JOOQDSL很大一部分是通用,例如分页查询中,Mysqllimit/offset关键字是很方便描述方式,但Oracle和SQLServerSQL不支持,如果我们用JOOQDSLlimit...和offset方法构造SQL语句,不修改移植到不支持limit/offsetOracle和SQLServer上,我们会发现这些语句还能正常使用,因为JOOQ会把limit/offset转换成等价目标数据库...相对于JOOQ,MyBatis在多数情况下没有任何优势。 Ebean同时具有很多不同框架优点,但它是基于JPA,难免有JPA各种限制,这是致命缺点。

2.7K40
领券