欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java自定義equals產(chǎn)生的問(wèn)題分析

 更新時(shí)間:2023年01月30日 11:33:15   作者:畢小寶  
這篇文章主要介紹了Java自定義equals時(shí)super.equals帶來(lái)的問(wèn)題分析,總的來(lái)說(shuō)這并不是一道難題,那為什么要拿出這道題介紹?拿出這道題真正想要傳達(dá)的是解題的思路,以及不斷優(yōu)化探尋最優(yōu)解的過(guò)程。希望通過(guò)這道題能給你帶來(lái)一種解題優(yōu)化的思路

Java自定義equals注意事項(xiàng)

對(duì)于需要用某業(yè)務(wù)主鍵判斷對(duì)象相等時(shí),通常用 IDE 自動(dòng)生成 equals 方法,選定特點(diǎn)的判斷字段。

但對(duì)于有父類(lèi)的類(lèi)來(lái)說(shuō),默認(rèn)有一句調(diào)用比較坑:

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; 這一句默認(rèn)的代碼,遭遇過(guò)兩次坑。例如這里的 Person 對(duì)象只需要根據(jù) id 相等,就視為同一個(gè)對(duì)象,但是有了這句調(diào)用,執(zhí)行列表的 contains 方法始終返回 false,斷點(diǎn)找到了這個(gè)問(wèn)題。

解決辦法:自定義具有父類(lèi)的類(lèi)的 equals 方法時(shí),需要去掉這行。這個(gè)問(wèn)題一碰到就感覺(jué)很熟悉,想起去年6月也遇到集合操作自定義對(duì)象判斷失敗的問(wèn)題,所以斷點(diǎn)到了 super 調(diào)用返回 false 就知道問(wèn)題所在了。

logback.xml配置maxFileSize單位問(wèn)題

項(xiàng)目中的 logback.xml 配置文件,忘記了從哪里扒來(lái)的,本地測(cè)試時(shí)只關(guān)注控制臺(tái)日志,沒(méi)發(fā)現(xiàn)問(wèn)題。部署測(cè)試機(jī)器后,發(fā)現(xiàn)異常信息沒(méi)有寫(xiě)入到日志文件中,為什么呢?

日志文件生成策略是滾動(dòng)達(dá)到文件最大值后新建文件,配置如下:

<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
    <maxFileSize>50M</maxFileSize>
</triggeringPolicy>

跟蹤過(guò)程,打開(kāi)調(diào)試配置,在 logback.xml 中添加配置:<configuration debug="true">。

啟動(dòng),查看日志插件的調(diào)試信息,異常提示 maxFileSize 屬性設(shè)置報(bào)錯(cuò)了。調(diào)試到 logback-core 源碼中,發(fā)現(xiàn)文件大小的單位使用的是 gb/mb/kb,且不區(qū)分大小寫(xiě)。修正文件大小配置為:

<maxFileSize>50MB</maxFileSize>

為什么以前沒(méi)有碰到過(guò)這個(gè)問(wèn)題呢?因?yàn)橐郧暗娜罩径际菨L動(dòng)按天生成的,這里拷貝過(guò)來(lái)的日志文件生成策略是按文件大小。這個(gè)配置有個(gè)好處,就是不會(huì)生成太多日志文件。

SpringCloud gateway項(xiàng)目引入druid

SpringCloud 的 gateway 項(xiàng)目是基于 Netty 的,與 Servlet 不相容。網(wǎng)關(guān)模塊中需要加入數(shù)據(jù)庫(kù)操作,引入 druid,常規(guī)的數(shù)據(jù)源配置報(bào) Servlet 包相關(guān)的問(wèn)題。

解決辦法是,關(guān)掉 spring.datasource.druid 的 stat-view-servlet 配置:

stat-view-servlet:
    enabled: false
    web-stat-filter:
      enabled: false

Shell編寫(xiě)腳本

Shell 編寫(xiě)腳本時(shí),cd 命令切換到一個(gè)不存在的變量時(shí),默認(rèn)會(huì)到當(dāng)前用戶的 HOME 目錄。

#!/sh
currentDir=$(cd `dirname $0`; pwd)
cd $currrentDir
echo `pwd`

這是常用的獲取當(dāng)前執(zhí)行命令腳本的路徑,第三行切換路徑時(shí),變量拼寫(xiě)錯(cuò)誤,導(dǎo)致切換到腳本目錄總是到了 /root ,這個(gè)低級(jí)錯(cuò)誤,找了半天。

到此這篇關(guān)于Java自定義equals產(chǎn)生的問(wèn)題分析的文章就介紹到這了,更多相關(guān)Java自定義equals內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn)

    SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn)

    本文主要介紹了SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2023-09-09
  • javaweb中Filter(過(guò)濾器)的常見(jiàn)應(yīng)用

    javaweb中Filter(過(guò)濾器)的常見(jiàn)應(yīng)用

    這篇文章主要介紹了javaweb中Filter的常見(jiàn)應(yīng)用,過(guò)濾器的使用方法,感興趣的小伙伴們可以參考一下
    2015-12-12
  • idea如何快速查找一個(gè)類(lèi)或類(lèi)中方法名和變量

    idea如何快速查找一個(gè)類(lèi)或類(lèi)中方法名和變量

    這篇文章主要介紹了idea如何快速查找一個(gè)類(lèi)或類(lèi)中方法名和變量問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • SpringBoot整合Mybatis Generator自動(dòng)生成代碼

    SpringBoot整合Mybatis Generator自動(dòng)生成代碼

    SpringBoot 整合 Mybatis Generator自動(dòng)生成dao、entity、mapper.xml實(shí)現(xiàn)單表增刪改查。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • springboot中websocket簡(jiǎn)單實(shí)現(xiàn)

    springboot中websocket簡(jiǎn)單實(shí)現(xiàn)

    本文主要介紹了springboot中websocket簡(jiǎn)單實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 詳解mall整合SpringBoot+MyBatis搭建基本骨架

    詳解mall整合SpringBoot+MyBatis搭建基本骨架

    這篇文章主要介紹了詳解mall整合SpringBoot+MyBatis搭建基本骨架,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 淺談為什么Java里面String類(lèi)是不可變的

    淺談為什么Java里面String類(lèi)是不可變的

    這篇文章主要介紹了為什么Java里面String類(lèi)是不可變的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Spring打包jar包時(shí)jsp頁(yè)面無(wú)法訪問(wèn)問(wèn)題解決

    Spring打包jar包時(shí)jsp頁(yè)面無(wú)法訪問(wèn)問(wèn)題解決

    這篇文章主要介紹了Spring打包jar包時(shí)jsp頁(yè)面無(wú)法訪問(wèn)問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 利用Maven實(shí)現(xiàn)將代碼打包成第三方公共jar包

    利用Maven實(shí)現(xiàn)將代碼打包成第三方公共jar包

    在項(xiàng)目開(kāi)發(fā)過(guò)程中,我們經(jīng)常需要將一些公共方法提取出來(lái),然后單獨(dú)封裝成一個(gè)第三方公共jar包,采用普通的方式打包后的jar,依賴的工程執(zhí)行編譯時(shí),卻提示找不到對(duì)應(yīng)的依賴包,那么如何將工程打包為可執(zhí)行jar包呢?下面向大家分享三種方法
    2022-10-10
  • 淺談Java中向上造型向下造型和接口回調(diào)中的問(wèn)題

    淺談Java中向上造型向下造型和接口回調(diào)中的問(wèn)題

    這篇文章主要介紹了淺談Java中向上造型向下造型和接口回調(diào)中的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08

最新評(píng)論