1. Java開發(fā)手冊黃山版新增規(guī)約摘錄

        共 2815字,需瀏覽 6分鐘

         ·

        2022-04-07 15:29


        早期文章



        ? ? ????在 2020 年 8 月 3 日 推出的《Java 開發(fā)手冊嵩山版》后歷經(jīng)了 18 個月阿里又推出了《Java 開發(fā)手冊黃山版》。想必每個 Java 程序員應(yīng)該都會關(guān)注阿里推出的《Java 開發(fā)手冊》,個人覺得這份開發(fā)手冊短小精干,非常實用。在整個手冊中可以逐步地學(xué)到知識(手冊背不下來,只能逐步的吸收,并盡量付諸實踐),也可以從知識的表面理解一些更深層的思想。其實之前我做 PHP 的時候,就對這份手冊非常的喜歡。因此手冊有更新,我把更新的規(guī)約摘錄在這里,方便閱讀,方便學(xué)習(xí)。


        ? ? ????按照《手冊》中《附1》來看,黃山版比嵩山版新增了 11 條規(guī)約,修改了描述 22 處,具體如下:

        1)新增 11 條新規(guī)約。比如,浮點數(shù)的后綴統(tǒng)一為大寫;枚舉的屬性字段必須是私 有且不可變;配置文件中的密碼需要加密等。2)新增描述中的正反例 2 條。比如,多個構(gòu)造方法次序、NoSuchMethodError 處 理;新增擴展說明 5 條。比如,父集合元素的增加或刪除異常等。3)修改描述 22 處。比如,魔法值的示例代碼、ScheduledThreadPool 問題等。4)修正嵩山版中部分代碼格式錯誤和描述錯誤。

        《Java 開發(fā)手冊》(黃山版)

        ? ? ? ? 以上部分引自《Java 開發(fā)手冊》(黃山版),截圖如下:

        d684bf0d76b555ae5c5a1904285a8d43.webp

        ? ? ? ? 本文整理了新增的 11 條規(guī)約,這里都列舉出來,具體內(nèi)容如下:




        一、編程規(guī)約

        (二)常量定義(P3)

        3.【強制】浮點數(shù)類型的數(shù)值后綴統(tǒng)一為大寫的 D 或 F。

        正例:public static final double HEIGHT = 175.5D;

        ?public static final float WEIGHT = 150.3F;

        ?

        ?(十一) 其他(?p23)

        ?6.【強制】枚舉 enum(括號內(nèi))的屬性字段必須是私有且不可變

        ?

        ?二、異常日志

        ?(三) 日志規(guī)約(?p28)

        ?14.【推薦】為了保護用戶隱私,日志文件中的用戶敏感信息需要進行脫敏處理。

        說明:日志排查問題時,推薦使用訂單號、UUID 之類的唯一編號進行查詢。


        ?四、安全規(guī)約(p31)

        ?9.【強制】對于文件上傳功能,需要對于文件大小、類型進行嚴(yán)格檢查和控制。

        說明:攻擊者可以利用上傳漏洞,上傳惡意文件到服務(wù)器,并且遠(yuǎn)程執(zhí)行,達(dá)到控制網(wǎng)站服務(wù)器的目的。

        10.【強制】配置文件中的密碼需要加密。


        五、MySQL 數(shù)據(jù)庫

        (一) 建表規(guī)約(p32)

        10.【強制】在數(shù)據(jù)庫中不能使用物理刪除操作,要使用邏輯刪除。

        說明:邏輯刪除在數(shù)據(jù)刪除后可以追溯到行為操作。不過會使得一些情況下的唯一主鍵變得不唯一,需要根據(jù)情況來酌情解決。



        六、工程結(jié)構(gòu)

        (二) 二方庫依賴(p38)

        6.【強制】二方庫定制包的命名方式,在規(guī)定的版本號之后加“-英文說明[序號]”,英文說明可以是部門簡稱、業(yè)務(wù)名稱,序號直接緊跟在英文說明之后,表示此定制包的順序號。

        說明:fastjson 給 SCM 定制的版本號:1.0.0-SCM1。注:請盡可能在應(yīng)用端來解決類沖突和加載問題,避免隨意發(fā)布此類定制包。


        (三) 服務(wù)器(p39)

        1.【強制】調(diào)用遠(yuǎn)程操作必須有超時設(shè)置。

        說明:類似于 HttpClient 的超時設(shè)置需要自己明確去設(shè)置 Timeout。根據(jù)經(jīng)驗表明,無數(shù)次的故障都是因為沒有設(shè)置超時時間。

        2.【推薦】客戶端設(shè)置遠(yuǎn)程接口方法的具體超時時間(單位 ms),超時設(shè)置生效順序一般為:1)客戶端 Special Method;2)客戶端接口級別;3)服務(wù)端 Special Method;4)服務(wù)端接口級別。

        7.【推薦】了解每個服務(wù)大致的平均耗時,可以通過獨立配置線程池,將較慢的服務(wù)與主線程池隔離開,免得不同服務(wù)的線程同歸于盡。


        七、設(shè)計規(guī)約(p40)

        7.【強制】系統(tǒng)設(shè)計時要準(zhǔn)確識別出弱依賴,并針對性地設(shè)計降級和應(yīng)急預(yù)案,保證核心系統(tǒng)正??捎谩?/span>

        說明:系統(tǒng)依賴的第三方服務(wù)被降級或屏蔽后,依然不會影響主干流程繼續(xù)進行,僅影響信息展示、或消息通知等非關(guān)鍵功能,那么這些服務(wù)稱為弱依賴。

        正例:當(dāng)系統(tǒng)弱依賴于多個外部服務(wù)時,如果下游服務(wù)耗時過長,則會嚴(yán)重影響當(dāng)前調(diào)用者,必須采取相應(yīng)降級措施,比如,當(dāng)調(diào)用鏈路中某個下游服務(wù)調(diào)用的平均響應(yīng)時間或錯誤率超過閾值時,系統(tǒng)自動進行降級或熔斷操作,屏蔽弱依負(fù)面影響,保護當(dāng)前系統(tǒng)主干功能可用。

        反例:某個疫情相關(guān)的二維碼出錯:“服務(wù)器開了點小差,請稍后重試”,不可用時長持續(xù)很久,引起社會高度關(guān)注,原因可能為調(diào)用的外部依賴服務(wù) RT 過高而導(dǎo)致系統(tǒng)假死,而在顯示端沒有做降級預(yù)案,只能直接拋錯給用戶。





        ? ? ? ? 我在每個分類后都增加了具體的頁碼,大家可以自行查閱。

        ? ? ? ? 從上面的列舉可以看出,黃山版《手冊》中“編程規(guī)約”增加了 2 條,“異常日志”增加了 1 條,“安全規(guī)約”增加了 2 條,“MySQL 數(shù)據(jù)庫”規(guī)約增加了 1 條,“工程結(jié)構(gòu)”增加了 4 條,“設(shè)計規(guī)約”增加了 1 條,一共剛好 11 條規(guī)約。11 條規(guī)約當(dāng)中強制的 8 條,推薦的 3 條。摘錄的不多不少。

        ? ? ? ? 廢話不多說了,覺得有用就點贊、關(guān)注、在看吧??!

        ? ? ? ??


        ? ? ? ??回復(fù)【java開發(fā)手冊】獲取《Java開發(fā)手冊》黃山版。



        212ca351d3938bdb13d068b5d65a6de1.webp

        公眾號內(nèi)回復(fù)?【mongo】 下載 SpringBoot 整合操作 MongoDB 的文檔。

        公眾號內(nèi)回復(fù)?【cisp知識整理】 下載 CISP 讀書筆記。


        ? ? ? ? 之前整理的關(guān)于 Redis 的文章:

        Redis | Redis 的安裝

        Redis | Redis 的幫助命令

        Redis | Redis 命令分類

        Redis | Redis 通用命令

        Redis | Redis 字符串相關(guān)命令

        Redis | Redis 列表相關(guān)命令

        Redis | Redis 集合相關(guān)命令

        Redis | Redis 有序集合相關(guān)命令

        Redis | Redis 哈希相關(guān)命令

        Redis | 源碼閱讀 —— 字符串

        Redis | 源碼閱讀 —— 鏈表

        Redis | Redis Pub/Sub相關(guān)命令

        Redis | 管道 —— PipeLine

        Redis | SpringBoot整合Redis

        Redis | Redis 的事務(wù)一

        Redis | Redis 的事務(wù)二

        Redis | 基礎(chǔ)數(shù)據(jù)類型應(yīng)用場景

        Redis | 事務(wù)源碼閱讀

        Redis | 事務(wù)源碼閱讀 —— watch

        Redis | 慢查詢

        Redis | 給接口添加緩存

        Redis | Redis 也會算距離




        瀏覽 114
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 猛烈撞击灌满白浊花液h | 男人的天堂欧美 | 色老板成人 | 中国乱轮视频 | 波多野结无码高清中文 |