版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【強(qiáng)制】代碼中名均不能以下劃線或符號(hào)開始,也不能以下劃線或符號(hào)結(jié)束。反例:_name/ name/$Object/name_/name$/Object$【強(qiáng)制】代碼中名嚴(yán)禁使用拼音與英文混合的方式,更不允許直接使用中文的方式。反例:DaZhePromotion[打折]/getfenByName()[評(píng)分]/int某變量=正例:alibaba//youku/hangzhou等國際通用的名稱,可視同英文的相關(guān)命名)DO/BO/DTO/VO等。正例:MarcoPoloUserDOXmlServiceTcpUdpDeal反例:macroPoloUserDoXMLServiceTCPUDPDeal正例:localValuegetHttpMessage()正例:MAX_STOCK_COUNT反例: 命名以它要測(cè)試的類的名稱開始,以Test結(jié)尾。【強(qiáng)制】中括號(hào)是數(shù)組類型的一部分,數(shù)組定義如下:String[]【強(qiáng)制】POJO類中布爾類型的變量,都不要加is,否則部分框架解析會(huì)引起序列化錯(cuò)誤。spring的框架結(jié)構(gòu)) 正例:publicclassOrderFactory;publicclassLogin;publicclassResourceObserver;【推薦】接口類中的方法和屬性不要加任何修飾符號(hào)(public也不要加),保持代碼的簡(jiǎn)正例:接口方法簽名:void接口基礎(chǔ)常量表示:String=反例:接口方法定義 void的實(shí)現(xiàn)類用Impl的后綴與接口區(qū)別。 Translator實(shí)現(xiàn)Translatable?!緟⒖肌棵杜e類名建議帶上Enum后綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開。正例:枚舉名字:DealStatusEnum,成員名稱:SUCCESSUNKOWN_REASON插入的方法用save(推薦)或insert做前綴。6)修改的方法用update做前綴。 反例:Stringkey="Id#_"+tradeId;cache.put(key,說明:Longa2l21Long相關(guān)的常量放在類:CacheConsts下;系統(tǒng)配置相關(guān)的常量放在類:ConfigConsts下。 A中:publicstaticfinalStringYES類B中:publicstaticfinalStringYES="y"; privatestaticfinal使用Enum類,下面正例中的數(shù)字就是延伸信息,表示星期幾。Usetabcharactereclipseinsertspacesfortabs。(1-5點(diǎn)Stringsay= intflag=if(flag=={}if(flag=={}else}}StringBuffersb=newStringBuffersb=new,【強(qiáng)制】IDEtextfileencodingUTF-8IDEUnix格式,不要使用windows格式。inta=3;longb=4L;StringBuffersb=new正例:publicUsergetUsers(StringtypeInteger..影響。接口過時(shí)必須加@Deprecated注解,并清晰地說明采用的新接口或者新服務(wù)是什么。正例:反例:Integervar=?在-128127之間的賦值,Integer對(duì)象是在使用equals方法進(jìn)行判斷。nullNPE風(fēng)險(xiǎn)。數(shù)據(jù)類型的null值,能夠表示額外的信息,如:調(diào)用失敗,異常退出。果完全不兼容升級(jí),避免反序列化,那么請(qǐng)修改serialVersionUID值。內(nèi)容的檢查,否則會(huì)有拋IndexOutOfBoundception的風(fēng)險(xiǎn)。Stringstr=String[]ary=//預(yù)期大于3,結(jié)果是3【推薦】setter方法中,參數(shù)名稱與類成員變量名稱一致,this.{if(true)returndata+}elsereturndata-}}Stringstr=for(intI=0;I<100;{str=str+"}5)static成員變量如果僅在本類使用,必須是private。6)若是static成員變量,必須考慮是否為final。線內(nèi),變量作用域太大,如果的到處跑,那么你會(huì)擔(dān)心的。說明:String重寫了hashCodeequalsString對(duì)象作為key來使用。異常:java.util.RandomAccessSubListcannotbecasttojava.util.ArrayList;說明:subList返回的是ArrayList的內(nèi)部類SubList,并不是ArrayList,而是ArrayList的一個(gè)視圖,對(duì)于SubList子列表的所有操作最終會(huì)反映到原列表上。加、刪除均產(chǎn)生ConcurrentModificationException異常。一樣的數(shù)組,大小就是list.size()。內(nèi)存空間,并返回新數(shù)組地址;如果數(shù)組元素大于實(shí)際所需,下標(biāo)為list.size的數(shù)組null,其它數(shù)組元素保持原值,因此最好將方法入?yún)?shù)組大小定義與集合元素List<String>list=newArrayList<String>(2);String[]array=newString[list.size()];array=list.toArray(array);類型數(shù)組將出現(xiàn)ClassCastException錯(cuò)誤。法,它的add/remove/clear方拋出UnsupportedOperationException異常。String[]str=newString[]{"a","b"};Listlist=Arrays.asList(str);第二種情況:str[0"gujin"list.get(0)【強(qiáng)制】泛型通配符extendsT>add方法,而<?superT>不能使用get方法,做為接口調(diào)用賦值時(shí)易出錯(cuò)。說明:擴(kuò)展說一下PECS(ProducerExtendsConsumerSuper)原則:1)頻繁往外內(nèi)容的,適合用上界Extends。2)經(jīng)常往里插入的,適合用下界Super。List<String>a=newArrayList<String>();for(Stringtemp:a){if("1".equals(temp)){}}Itor<String>it=a.itor();while(it.hasNext()){Stringtempit.next();if(刪除元素的條件){}}Collections.sort會(huì)報(bào)IllegalArgumentException異常。x>y,y>z,則x>z{returno1.getId()>o2.getId()?1:-}}率更高。如果是JDK8,使用Map.foreach方法。一個(gè)Set集合對(duì)象;entrySet()返回的是K-V值組合集合。序是一定的。如:ArrayListorder/unsort;HashMapunorder/unsort;TreeSet是{publicTimerTaskThread(){super.setName("TimerTaskThread");...}},immutablethread-safe。,也必須是A、B、C,否則可能出現(xiàn)死鎖。鎖,要么在數(shù)據(jù)庫層使用樂觀鎖,使用version作為更新依據(jù)。數(shù)不得小于3次。【強(qiáng)制】多線程并行處理定時(shí)任務(wù)時(shí),TimerTimeTask時(shí),只要其中之一沒有捕獲至await方法,直到超時(shí)才返回結(jié)果。化問題隱患(可參考The"Double-CheckedLockingisBroken"Declaration),推薦問題解決方案中較為簡(jiǎn)單一種(適用于JDK5及以上版本),將目標(biāo)屬性為volatile型。classFooprivateHelperhelper=null;publicHelpergetHelper(){{if(helper==null)helper=new}}}【參考】volatile解決多線程內(nèi)存不可見問題。對(duì)于一寫多讀,是可以解決變量同步問題,但是如果多寫,同樣無法解決線程安全問題。如果是count++操作,使用如下類實(shí)現(xiàn):AtomicIntegercountnewAtomicInteger()count.addAndGet(1JDK8,推薦使用LongAdder對(duì)象,比AtomicLong性能更好(減少樂觀鎖的重試次數(shù))?!緟⒖肌縏hreadLocal無法解決共享對(duì)象的更新問題,ThreadLocalstatic下面的形式:if(condition)statements;}booleanexisted=(file.open(fileName,"w")!=null)&&(...)||(...);if(existed){}if((file.open(fileName,"w")!=null)&&(...)||(...))}臺(tái)服務(wù)器中,所以DAO的參數(shù)校驗(yàn),可以省略?!緩?qiáng)制】所有的抽象方法(包括接口中的方法)Javadoc注釋、除了返回值、參數(shù)、使用/**/注釋,注意與代碼對(duì)齊。//putelephantintofridgeput(elephant,fridge);1)待辦事宜(TODO):(標(biāo)記人,標(biāo)記時(shí)間,[預(yù)計(jì)處理時(shí)間說明:不要在方法體內(nèi)定義:Patternpattern= 前綴),會(huì)自動(dòng)調(diào)用isXxx()方法。取整,直接使用RandomnextIntnextLong方法?!緩?qiáng)制】獲取當(dāng)前毫秒數(shù)System.currentTimeMillis而不是newDate().getTime();時(shí)間等場(chǎng)景,推薦使用Instant類?!緩?qiáng)制】JavaRuntimeException可以通過預(yù)先檢查進(jìn)行規(guī)避,而不應(yīng)該通過catch來處理,比如:IndexOutOfBoundception,NullPointerException等等。NumberFormatException來實(shí)現(xiàn)。正例:if(objnull反例:tryobj.method(catch(NullPointerExceptione說明:如果JDK7及以上,可以使用try-with-resources方式。會(huì)再執(zhí)行try塊中的return語句。說明什么情況下會(huì)返回null值。調(diào)用方需要進(jìn)行nullNPE問題。反例:publicintfreturnInteger對(duì)象如果為nullNPE正例:可以使用JDK8Optional類來防止NPE問題。裝isSuccess、“錯(cuò)誤碼”、“錯(cuò)誤簡(jiǎn)息”。過的自定義異常,如:DAOException/ServiceException等。【參考】避免出現(xiàn)重復(fù)的代碼(Don’tRepeatYourself)DRYSLF4J中的API,使用門面模式的日志框架,有利于和各個(gè)類的日志處理方式統(tǒng)一。importorg.slf4j.Logger;說明:logger.debug("Processingtradewithididsymbolsymbol);執(zhí)行toString()方法,浪費(fèi)了系統(tǒng)資源,執(zhí)行了上述操作,最終日志卻沒有打印。logger.debug("Processingtradewithid:"+id+"symbol:"+}正例:<loggername="com..dubbo.config"additivity="false">關(guān)鍵字throws往上拋出。正例:logger.error(toString"_e.getMessage()要,請(qǐng)不要在此場(chǎng)景打出error級(jí)別。(1表示是,0表示否)【強(qiáng)制】表名、字段名必須使用小寫字母或數(shù)字,出現(xiàn)數(shù)字開頭,兩個(gè)下劃線中間只 說明:pk_primarykey;uk_即uniquekey;idx_index的簡(jiǎn)稱。說明:float和double在的時(shí)候,存在精度損失的問題,很可能在值的比較時(shí),得到不text,獨(dú)立出來一張表,用主鍵來對(duì)應(yīng),避免影響其它字【強(qiáng)制】表必備三字段:idgmt_creategmt_modified【推薦】表名最好是加上“業(yè)務(wù)名稱_表的作用”。正例:tiger_task/tiger_reader/mpp_config人龜orderby的場(chǎng)景,請(qǐng)注意利用索引的有序性。orderby最后的字段是組合正例:wherea=?andb=?orderbyc;索引:a_b_c反例:索引中有范圍查找,那么索引有序性無法利用,如:WHEREa>10ORDERBYb1111章對(duì)應(yīng)的那一頁嗎?瀏覽一下就好,這個(gè)就是起到覆蓋索引的作用。效果,用exin的結(jié)果,extra列會(huì)出現(xiàn):usingindex。特定閾值的頁數(shù)進(jìn)行SQL改寫。SELECTa.*FROM1a(selectidfrom1whereLIMIT100000,20bwhereref指的是使用普通的索引(normalindex)別比較range還低,與全表掃描是小巫見大巫。andb=?那么即使a的區(qū)分度更高,也必須把b放在索引的最前列。標(biāo)準(zhǔn)統(tǒng)計(jì)行數(shù)的語法,跟數(shù)據(jù)庫無關(guān),跟NULL和非NULL無關(guān)。col1,col2)如果其中一列全為NULL,那么即使另一列有不同的值,也返回為0。NULL,因此使用sum()時(shí)需注意NPE問題。FROMtable;制在1000個(gè)之內(nèi)。SELECTLENGTH("輕松工作")SELECTCHARACTER_LENGTH("輕松工作")說明:TRUNCATETABLE在功能上與不帶WHERE子句的DELETE語句相同。*作為查詢的字段列表,需要哪些字段必須明確寫明。說明:1)增加查詢分析器解析成本。2)增減字段容易與resultMap配置不一致。【強(qiáng)制】POJO類的Boolean屬性不能加isis_resultMap中在MyBatisGenerator生成的代碼中,需要進(jìn)行適當(dāng)?shù)男薷??!緩?qiáng)制】iBATISqueryForList(StringstatementName,intstart,intsize)不推start,size的子集合,線上因?yàn)檫@個(gè)原因曾經(jīng)出現(xiàn)過OOM。sqlmap.xml中引入#start#,#size#Map<StringObjectmapnewHashMap<StringObject>();map.put("start",start);updatetablesetc1=value1,c2=value2,c3=value3SQL時(shí),盡量不要更新無改動(dòng)的字段,一是易出錯(cuò);二是效率低;三是增加binlog。對(duì)第平臺(tái)封裝的層,預(yù)處理返回結(jié)果及轉(zhuǎn)化異常信息外部接口或 【參考】(分層異常處理規(guī)約)DAO層,產(chǎn)生的異常類型有很多,無法用細(xì)粒度的異常進(jìn)catchcatch(Exceptione)thrownewDAOException(e),不需要打印DTO(DataTransferObject):數(shù)據(jù)傳輸對(duì)象,ServiceManager使用Map類來傳輸。正例:com..jstorm或com.alibaba.dubbo.registerArtifactID格式:產(chǎn)品線名-模塊名。語義不重復(fù)不遺漏,先到倉庫中心去查證一下。正例:dubbo-/fastjson-api/jstorm-too
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年適用商業(yè)擔(dān)保借款協(xié)議樣式
- 國家教育戰(zhàn)略與育強(qiáng)國建設(shè)的目標(biāo)
- 2024年消防系統(tǒng)增補(bǔ)協(xié)議模板
- 2024年區(qū)域獨(dú)家食品銷售代理協(xié)議
- 公司工期合同范本
- 2024資格考試綜合服務(wù)項(xiàng)目協(xié)議
- 海南個(gè)體餐飲勞動(dòng)合同范本
- 訂鞋合同范本
- 藥廠勞務(wù)合同范本
- 2024屆廣東省深圳市龍崗區(qū)東升學(xué)校高三3月第一次模擬考試數(shù)學(xué)試題
- 大學(xué)生辯論賽評(píng)分標(biāo)準(zhǔn)表
- 診所污水污物糞便處理方案及周邊環(huán)境
- 江蘇開放大學(xué)2023年秋《馬克思主義基本原理 060111》形成性考核作業(yè)2-實(shí)踐性環(huán)節(jié)(占過程性考核成績(jī)的30%)參考答案
- 《我是班級(jí)的主人翁》的主題班會(huì)
- 酒店安全設(shè)施及安全制度
- 近代化的早期探索與民族危機(jī)的加劇 單元作業(yè)設(shè)計(jì)
- 租賃機(jī)械設(shè)備施工方案
- 屋面融雪系統(tǒng)施工方案
- 二年級(jí)家長(zhǎng)會(huì)語文老師課件
- 結(jié)構(gòu)加固改造之整體結(jié)構(gòu)加固教學(xué)課件
- 教堂安全風(fēng)險(xiǎn)分級(jí)管控體系方案全套資料(2019-2020新標(biāo)準(zhǔn)完整版)
評(píng)論
0/150
提交評(píng)論