freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

阿里巴巴java開發(fā)手冊-資料下載頁

2025-03-23 14:40本頁面
  

【正文】 須添加注釋充分 說明什么情況下會返回 null 值。調(diào)用方需要進行 null 判斷防止 NPE 問題。 說明:本手冊明確防止 NPE 是調(diào)用者的責任。即使被調(diào)用方法返回空集合或者空對象,對調(diào)用 者來說,也并非高枕無憂,必須考慮到遠程調(diào)用失敗、序列化失敗、運行時異常等場景返回 null 的情況。10. 【推薦】防止 NPE,是程序員的基本修養(yǎng),注意 NPE 產(chǎn)生的場景:1)返回類型為基本數(shù)據(jù)類型,return 包裝數(shù)據(jù)類型的對象時,自動拆箱有可能產(chǎn)生 NPE。反例:public int f() { return Integer 對象}, 如果為 null,自動解箱拋 NPE。2) 數(shù)據(jù)庫的查詢結果可能為 null。3) 集合里的元素即使 isNotEmpty,取出的數(shù)據(jù)元素也可能為 null。4) 遠程調(diào)用返回對象時,一律要求進行空指針判斷,防止 NPE。5) 對于 Session 中獲取的數(shù)據(jù),建議 NPE 檢查,避免空指針。6) 級聯(lián)調(diào)用 ().getB().getC();一連串調(diào)用,易產(chǎn)生 NPE。正例:使用 JDK8 的 Optional 類來防止 NPE 問題。11. 【推薦】定義時區(qū)分 unchecked / checked 異常,避免直接拋出 new RuntimeException(), 更不允許拋出 Exception 或者 Throwable,應使用有業(yè)務含義的自定義異常。推薦業(yè)界已定義 過的自定義異常,如:DAOException / ServiceException 等。12. 【參考】在代碼中使用“拋異?!边€是“返回錯誤碼”,對于公司外的 /api 開放接口必須 使用“錯誤碼”;而應用內(nèi)部推薦異常拋出;跨應用間 RPC 調(diào)用優(yōu)先考慮使用 Result 方式,封 裝 isSuccess()方法、“錯誤碼”、“錯誤簡短信息”。說明:關于 RPC 方法返回方式使用 Result 方式的理由: 1)使用拋異常返回方式,調(diào)用方如果沒有捕獲到就會產(chǎn)生運行時錯誤。 2)如果不加棧信息,只是 new 自定義異常,加入自己的理解的 error message,對于調(diào)用 端解決問題的幫助不會太多。如果加了棧信息,在頻繁調(diào)用出錯的情況下,數(shù)據(jù)序列化和傳輸 的性能損耗也是問題。13. 【參考】避免出現(xiàn)重復的代碼(Don’t Repeat Yourself),即 DRY 原則。 說明:隨意復制和粘貼代碼,必然會導致代碼的重復,在以后需要修改時,需要修改所有的副 本,容易遺漏。必要時抽取共性方法,或者抽象公共類,甚至是共用模塊。 正例:一個類中有多個 public 方法,都需要進行數(shù)行相同的參數(shù)校驗操作,這個時候請抽?。簆rivate boolean checkParam(DTO dto) {...}(二) 日志規(guī)約1. 【強制】應用中不可直接使用日志系統(tǒng)(Log4j、Logback)中的 API,而應依賴使用日志框架 SLF4J 中的 API,使用門面模式的日志框架,有利于維護和各個類的日志處理方式統(tǒng)一。import 。import 。private static final Logger logger = ()。2. 【強制】日志文件推薦至少保存 15 天,因為有些異常具備以“周”為頻次發(fā)生的特點。3. 【強制】應用中的擴展日志(如打點、臨時監(jiān)控、訪問日志等)命名方式: 。logType:日志類型,推薦分類有 stats/desc/monitor/visit 等;logName:日志描述。這種命名的好處:通過文件名就可知 道日志文件屬于什么應用,什么類型,什么目的,也有利于歸類查找。正例:mppserver 應用中單獨監(jiān)控時區(qū)轉(zhuǎn)換異常,如: 說明:推薦對日志進行分類,如將錯誤日志和業(yè)務日志分開存放,便于開發(fā)人員查看,也便于 通過日志對系統(tǒng)進行及時監(jiān)控。4. 【強制】對 trace/debug/info 級別的日志輸出,必須使用條件輸出形式或者使用占位符的方 式。說明:(Processing trade with id: + id + symbol: + symbol)。 如果日志級別是 warn,上述日志不會打印,但是會執(zhí)行字符串拼接操作,如果 symbol 是對象, 會執(zhí)行 toString()方法,浪費了系統(tǒng)資源,執(zhí)行了上述操作,最終日志卻沒有打印。 正例:(條件)if (()) {(Processing trade with id: + id + symbol: + symbol)。}正例:(占位符)(Processing trade with id: {} symbol : {} , id, symbol)。5. 【強制】避免重復打印日志,浪費磁盤空間,務必在 中設置 additivity=false。正例:logger name= additivity=false6. 【強制】異常信息應該包括兩類信息:案發(fā)現(xiàn)場信息和異常堆棧信息。如果不處理,那么通過 關鍵字 throws 往上拋出。正例:(各類參數(shù)或者對象 toString + _ + (), e)。7. 【推薦】謹慎地記錄日志。生產(chǎn)環(huán)境禁止輸出 debug 日志;有選擇地輸出 info 日志;如果使 用 warn 來記錄剛上線時的業(yè)務行為信息,一定要注意日志輸出量的問題,避免把服務器磁盤 撐爆,并記得及時刪除這些觀察日志。 說明:大量地輸出無效日志,不利于系統(tǒng)性能提升,也不利于快速定位錯誤點。記錄日志時請 思考:這些日志真的有人看嗎?看到這條日志你能做什么?能不能給問題排查帶來好處?8. 【參考】可以使用 warn 日志級別來記錄用戶輸入?yún)?shù)錯誤的情況,避免用戶投訴時,無所適 從。注意日志輸出的級別,error 級別只記錄系統(tǒng)邏輯出錯、異常等重要的錯誤信息。如非必 要,請不要在此場景打出 error 級別?!褂糜谏虡I(yè)用途,違者必究——20 / 33三、MySQL 數(shù)據(jù)庫(一) 建表規(guī)約1. 【強制】表達是與否概念的字段,必須使用 is_xxx 的方式命名,數(shù)據(jù)類型是 unsigned tinyint( 1 表示是,0 表示否)。說明:任何字段如果為非負數(shù),必須是 unsigned。正例:表達邏輯刪除的字段名 is_deleted,1 表示刪除,0 表示未刪除。2. 【強制】表名、字段名必須使用小寫字母或數(shù)字,禁止出現(xiàn)數(shù)字開頭,禁止兩個下劃線中間只 出現(xiàn)數(shù)字。數(shù)據(jù)庫字段名的修改代價很大,因為無法進行預發(fā)布,所以字段名稱需要慎重考慮。 正例:getter_admin,task_config,level3_name 反例:GetterAdmin,taskConfig,level_3_name3. 【強制】表名不使用復數(shù)名詞。 說明:表名應該僅僅表示表里面的實體內(nèi)容,不應該表示實體數(shù)量,對應于 DO 類名也是單數(shù) 形式,符合表達習慣。4. 【強制】禁用保留字,如 desc、range、match、delayed 等,請參考 MySQL 官方保留字。5. 【強制】主鍵索引名為 pk_字段名;唯一索引名為 uk_字段名;普通索引名則為 idx_字段名。說明:pk_ 即 primary key;uk_ 即 unique key;idx_ 即 index 的簡稱。6. 【強制】小數(shù)類型為 decimal,禁止使用 float 和 double。說明:float 和 double 在存儲的時候,存在精度損失的問題,很可能在值的比較時,得到不 正確的結果。如果存儲的數(shù)據(jù)范圍超過 decimal 的范圍,建議將數(shù)據(jù)拆成整數(shù)和小數(shù)分開存儲。7. 【強制】如果存儲的字符串長度幾乎相等,使用 char 定長字符串類型。8. 【強制】varchar 是可變長字符串,不預先分配存儲空間,長度不要超過 5000,如果存儲長 度大于此值,定義字段類型為 text,獨立出來一張表,用主鍵來對應,避免影響其它字段索 引效率。9. 【強制】表必備三字段:id, gmt_create, gmt_modified。說明:其中 id 必為主鍵,類型為 unsigned bigint、單表時自增、步長為 1。gmt_create,gmt_modified 的類型均為 date_time 類型。10. 【推薦】表的命名最好是加上“業(yè)務名稱_表的作用”。正例:tiger_task / tiger_reader / mpp_config11. 【推薦】庫名與應用名稱盡量一致。12. 【推薦】如果修改字段含義或?qū)ψ侄伪硎镜臓顟B(tài)追加時,需要及時更新字段注釋。——禁止用于商業(yè)用途,違者必究——32 / 3313. 【推薦】字段允許適當冗余,以提高查詢性能,但必須考慮數(shù)據(jù)一致。冗余字段應遵循:1)不是頻繁修改的字段。2)不是 varchar 超長字段,更不能是 text 字段。 正例:商品類目名稱使用頻率高,字段長度短,名稱基本一成不變,可在相關聯(lián)的表中冗余存 儲類目名稱,避免關聯(lián)查詢。14. 【推薦】單表行數(shù)超過 500 萬行或者單表容量超過 2GB,才推薦進行分庫分表。說明:如果預計三年后的數(shù)據(jù)量根本達不到這個級別,請不要在創(chuàng)建表時就分庫分表。15. 【參考】合適的字符存儲長度,不但節(jié)約數(shù)據(jù)庫表空間、節(jié)約索引存儲,更重要的是提升檢 索速度。正例:如下表,其中無符號值可以避免誤存負數(shù),且擴大了表示范圍。對象年齡區(qū)間類型表示范圍人150 歲之內(nèi)unsignedtinyint無符號值:0 到 255龜數(shù)百歲unsignedsmallint無符號值:0 到 65535恐龍化石數(shù)千萬年unsignedint無符號值:0 到約 億太陽約 50 億年unsignedbigint無符號值:0 到約 10 的 19 次方(二) 索引規(guī)約1. 【強制】業(yè)務上具有唯一特性的字段,即使是多個字段的組合,也必須建成唯一索引。 說明:不要以為唯一索引影響了 insert 速度,這個速度損耗可以忽略,但提高查找速度是明 顯的;另外,即使在應用層做了非常完善的校驗控制,只要沒有唯一索引,根據(jù)墨菲定律,必 然有臟數(shù)據(jù)產(chǎn)生。2. 【強制】 超過三個表禁止 join。需要 join 的字段,數(shù)據(jù)類型必須絕對一致;多表關聯(lián)查詢 時,保證被關聯(lián)的字段需要有索引。說明:即使雙表 join 也要注意表索引、SQL 性能。3. 【強制】在 varchar 字段上建立索引時,必須指定索引長度,沒必要對全字段建立索引,根據(jù) 實際文本區(qū)分度決定索引長度即可。 說明:索引的長度與區(qū)分度是一對矛盾體,一般對字符串類型數(shù)據(jù),長度為 20 的索引,區(qū)分 度會高達 90%以上,可以使用 count(distinct left(列名, 索引長度))/count(*)的區(qū)分度 來確定。4. 【強制】頁面搜索嚴禁左模糊或者全模糊,如果需要請走搜索引擎來解決。 說明:索引文件具有 BTree 的最左前綴匹配特性,如果左邊的值未確定,那么無法使用此索 引。5. 【推薦】如果有 order by 的場景,請注意利用索引的有序性。order by 最后的字段是組合 索引的一部分,并且放在索引組合順序的最后,避免出現(xiàn) file_sort 的情況,影響查詢性能。 正例:where a=? and b=? order by c。 索引:a_b_c 反例:索引中有范圍查找,那么索引有序性無法利用,如:WHERE a10 ORDER BY b。 索引 a_b 無法排序。6. 【推薦】利用覆蓋索引來進行查詢操作,避免回表。說明:如果一本書需要知道第 11 章是什么標題,會翻開第 11 章對應的那一頁嗎?目錄瀏覽 一下就好,這個目錄就是起到覆蓋索引的作用。 正例:能夠建立索引的種類:主鍵索引、唯一索引、普通索引,而覆蓋索引是一種查詢的一種 效果,用 explain 的結果,extra 列會出現(xiàn):using index。7. 【推薦】利用延遲關聯(lián)或者子查詢優(yōu)化超多分頁場景。說明:MySQL 并不是跳過 offset 行,而是取 offset+N 行,然后返回放棄前 offset 行,返回 N 行,那當 offset 特別大的時候,效率就非常的低下,要么控制返回的總頁數(shù),要么對超過 特定閾值的頁數(shù)進行 SQL 改寫。正例:先快速定位需要獲取的 id 段,然后再關聯(lián):SELECT a.* FROM 表 1 a, (select id from 表 1 where 條件 LIMIT 100000,20 ) b where =8. 【推薦】SQL 性能優(yōu)化的目標:至少要達到 range 級別,要求是 ref 級別,如果可以是 consts最好。說明:1)consts 單表中最多只有一個匹配行(主鍵或者唯一索引),在優(yōu)化階段即可讀取到數(shù)據(jù)。2)ref 指的是使用普通的索引(normal index)。3)range 對索引進行范圍檢索。反例:explain 表的結果,type=index,索引物理文件全掃描,速度非常慢,這個 index 級 別比較 range 還低,與全表掃描是小巫見大巫。9. 【推薦】建組合索引的時候,區(qū)分度最高的在最左邊。正例:如果 where a=? and b=? ,a 列的幾乎接近于唯一值,那么只需要單建 idx_a 索引即 可。 說明:存在非等號和等號混合判斷條件時,在建索引時,請把等號條件的列前置。如:where a? and b=? 那么即使 a 的區(qū)分度更高,也必須把 b 放在索引的最前列。10. 【推薦】防止因字段類型不同造成的隱式
點擊復制文檔內(nèi)容
黨政相關相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1