Java自定義equals產生的問題分析
Java自定義equals注意事項
對于需要用某業(yè)務主鍵判斷對象相等時,通常用 IDE 自動生成 equals 方法,選定特點的判斷字段。
但對于有父類的類來說,默認有一句調用比較坑:
public class Person extends ParentObject{
private String id;
private String name;
private int age;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
Person person = (Person) o;
return id.equals(person.id);
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), id);
}
}
if (!super.equals(o)) return false; 這一句默認的代碼,遭遇過兩次坑。例如這里的 Person 對象只需要根據 id 相等,就視為同一個對象,但是有了這句調用,執(zhí)行列表的 contains 方法始終返回 false,斷點找到了這個問題。
解決辦法:自定義具有父類的類的 equals 方法時,需要去掉這行。這個問題一碰到就感覺很熟悉,想起去年6月也遇到集合操作自定義對象判斷失敗的問題,所以斷點到了 super 調用返回 false 就知道問題所在了。
logback.xml配置maxFileSize單位問題
項目中的 logback.xml 配置文件,忘記了從哪里扒來的,本地測試時只關注控制臺日志,沒發(fā)現(xiàn)問題。部署測試機器后,發(fā)現(xiàn)異常信息沒有寫入到日志文件中,為什么呢?
日志文件生成策略是滾動達到文件最大值后新建文件,配置如下:
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>50M</maxFileSize>
</triggeringPolicy>
跟蹤過程,打開調試配置,在 logback.xml 中添加配置:<configuration debug="true">。
啟動,查看日志插件的調試信息,異常提示 maxFileSize 屬性設置報錯了。調試到 logback-core 源碼中,發(fā)現(xiàn)文件大小的單位使用的是 gb/mb/kb,且不區(qū)分大小寫。修正文件大小配置為:
<maxFileSize>50MB</maxFileSize>
為什么以前沒有碰到過這個問題呢?因為以前的日志都是滾動按天生成的,這里拷貝過來的日志文件生成策略是按文件大小。這個配置有個好處,就是不會生成太多日志文件。
SpringCloud gateway項目引入druid
SpringCloud 的 gateway 項目是基于 Netty 的,與 Servlet 不相容。網關模塊中需要加入數(shù)據庫操作,引入 druid,常規(guī)的數(shù)據源配置報 Servlet 包相關的問題。
解決辦法是,關掉 spring.datasource.druid 的 stat-view-servlet 配置:
stat-view-servlet:
enabled: false
web-stat-filter:
enabled: false
Shell編寫腳本
Shell 編寫腳本時,cd 命令切換到一個不存在的變量時,默認會到當前用戶的 HOME 目錄。
#!/sh
currentDir=$(cd `dirname $0`; pwd)
cd $currrentDir
echo `pwd`
這是常用的獲取當前執(zhí)行命令腳本的路徑,第三行切換路徑時,變量拼寫錯誤,導致切換到腳本目錄總是到了 /root ,這個低級錯誤,找了半天。
到此這篇關于Java自定義equals產生的問題分析的文章就介紹到這了,更多相關Java自定義equals內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
IDEA中創(chuàng)建maven項目webapp目錄無法識別即未被標識的解決辦法
在學習SpringMVC課程中,基于IDEA新建maven項目模塊后,webapp目錄未被標識,即沒有小藍點的圖標顯示,所以本文給大家介紹了IDEA中創(chuàng)建maven項目webapp目錄無法識別即未被標識的解決辦法,需要的朋友可以參考下2024-03-03
利用java+mysql遞歸實現(xiàn)拼接樹形JSON列表的方法示例
這篇文章主要給大家介紹了關于利用java+mysql遞歸實現(xiàn)拼接樹形JSON列表的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面跟著小編來一起看看吧。2017-08-08

