国产91在线|日韩,色国产精品一区在线观看,亚洲国产综合网,亚洲国产精品久久网午夜,欧美变态人zozo禽交,久久综合伊人77777麻豆,午夜亚洲国产成人不卡在线

天等縣政務(wù)OA:湟中縣政府oa系統(tǒng)中java開(kāi)發(fā)手冊(cè)黃山版_碼出高效java開(kāi)發(fā)手冊(cè)pdf

時(shí)間:2025-02-08 06:15:19 信創(chuàng)OA資訊首頁(yè) 下關(guān)區(qū)政務(wù)OA

PHPOA!國(guó)內(nèi)首家專(zhuān)業(yè)OA辦公軟件、OA系統(tǒng)、政務(wù)辦公開(kāi)源oa系統(tǒng)服務(wù)提供商,采用PHP+MYSQL開(kāi)源語(yǔ)言,一直致力于應(yīng)用管理軟件基層研發(fā),現(xiàn)己推出企業(yè)OA、政府OA、集團(tuán)OA、SAAS版OA等應(yīng)用平臺(tái),詳細(xì)咨詢13807814037 現(xiàn)在論壇購(gòu)買(mǎi),只需588元

天等縣政務(wù)oa:湟中縣政府政務(wù)OA系統(tǒng)中java開(kāi)發(fā)手冊(cè)黃山版_碼出高效java開(kāi)發(fā)手冊(cè)pdf小企業(yè)也加入到了政務(wù)OA系統(tǒng)的計(jì)劃中,那么,也同時(shí)出現(xiàn)了政務(wù)OA系統(tǒng)選型的問(wèn)題,小型企業(yè)如何選型成為了企業(yè)領(lǐng)導(dǎo)的首要問(wèn)題。&nbis_xxx 的命名方式,所以,需要在 設(shè)置從 is_xxx到 xxx的映射關(guān)系。 反例:定義為基本數(shù)據(jù)類(lèi)型 boolean isdeleted 的屬性,它的方法也是 isdeleted(),rpc框架在反向解 析的時(shí)候,“誤以為”對(duì)應(yīng)的屬性名稱是 deleted,導(dǎo)致屬性獲取不到,進(jìn)而拋出異常。 【參考】各層命名規(guī)約: a) service/dao 層方法命名規(guī)約 1) 獲取單個(gè)對(duì)象的方法用 get 做前綴。 2) 獲


俄羅斯的 it 危機(jī):存儲(chǔ)快用完了。。。:

在西方國(guó)家的云存儲(chǔ)服務(wù)紛紛在俄羅斯切斷業(yè)務(wù)關(guān)系之后,所有俄羅斯公司都因受到制裁而被迫轉(zhuǎn)向國(guó)內(nèi)云存儲(chǔ)服務(wù)提供商。 由于俄羅斯境內(nèi)沒(méi)有足夠的數(shù)據(jù)中心來(lái)滿足地方運(yùn)營(yíng)商的需求,這造成了一個(gè)無(wú)法克服的實(shí)際問(wèn)題。因此,俄羅斯需要一種全國(guó)性的解決辦法來(lái)應(yīng)對(duì)這場(chǎng)存儲(chǔ)危機(jī)。 另一個(gè)有望釋放存儲(chǔ)空間的舉措是,要求isp們擯棄消耗寶貴資源的流媒體服務(wù)及其他在線娛樂(lè)平臺(tái)。 第三條路子是,可以選擇從國(guó)內(nèi)數(shù)據(jù)處理中心購(gòu)買(mǎi)所有的可用存儲(chǔ)空間。 然而,這可能會(huì)給需要額外存儲(chǔ)空間以添加服務(wù)和內(nèi)容的娛樂(lè)提供商帶來(lái)進(jìn)一步的問(wèn)題。 俄羅斯還在考慮要不要沒(méi)收已撤出俄羅斯的那些公司留下的it服務(wù)器和存儲(chǔ)資源,并將它們整合到公共基礎(chǔ)設(shè)施中。 據(jù)當(dāng)?shù)孛襟w報(bào)道,數(shù)字發(fā)展部目前正在分析:如果政府頒布這類(lèi)政策,有望提供多少的可用資源。如果一套加快進(jìn)程的程序足以支持關(guān)鍵政府部門(mén)的運(yùn)作,相關(guān)部門(mén)就會(huì)制定。

本地服務(wù)網(wǎng)格怎么搭建?服務(wù)網(wǎng)格有哪些重要性?:

服務(wù)網(wǎng)格的重要性,現(xiàn)在已經(jīng)被很多人所知道了,越是大型的應(yīng)用系統(tǒng)當(dāng)中越是要使用到服務(wù)網(wǎng)格,所以很多的應(yīng)用系統(tǒng)的一個(gè)重要內(nèi)容,就是建設(shè)好的api網(wǎng)關(guān)系統(tǒng)以及好的服務(wù)網(wǎng)格系統(tǒng),這些服務(wù)架構(gòu)都是可以應(yīng)用在微服務(wù)架構(gòu)之中的有效工具 現(xiàn)在帶大家了解一下本地服務(wù)網(wǎng)格怎么搭建。本地服務(wù)網(wǎng)格怎么搭建?本地服務(wù)網(wǎng)格怎么搭建?是一個(gè)比較專(zhuān)業(yè)的問(wèn)題。 企業(yè)的it技術(shù)人員在給應(yīng)用系統(tǒng)進(jìn)行本地服務(wù)網(wǎng)格搭建的時(shí)候,首先應(yīng)該選擇一款好用的服務(wù)網(wǎng)格軟件,這些軟件大部分都是開(kāi)源軟件,可以幫助技術(shù)人員在二次開(kāi)發(fā)上面擴(kuò)展一些全新的功能。 了解了本地服務(wù)網(wǎng)格怎么搭建之后,再來(lái)了解一下服務(wù)網(wǎng)格有哪些重要性?服務(wù)網(wǎng)格的重要性和系統(tǒng)安全需求是相輔相成的。 而服務(wù)網(wǎng)格可以有效的對(duì)所有的流量進(jìn)行安全認(rèn)證和監(jiān)控。以上就是本地服務(wù)網(wǎng)格怎么搭建的相關(guān)內(nèi)容。了解了更多的本地服務(wù)網(wǎng)格搭建知識(shí),才能夠在系統(tǒng)的安全性以及流暢性上面提供更多的保障。

機(jī)遇與挑戰(zhàn)并存 看政務(wù)大數(shù)據(jù)如何提升民生服務(wù)水平:

記者 | 郭敏官網(wǎng) | www.datayuan.cn微信公眾號(hào)id | datayuancn數(shù)據(jù)大爆炸時(shí)代,各個(gè)政府部門(mén)也在積極尋求智能化管理轉(zhuǎn)型升級(jí)的有效路徑,但過(guò)程中依然面臨著如政務(wù)信息共享難、數(shù)據(jù)資源整合難 首先,soda理事會(huì)理事、蘇打數(shù)據(jù)ceo高豐分享了政府?dāng)?shù)據(jù)開(kāi)放創(chuàng)新生態(tài)的探索和經(jīng)驗(yàn),他表示,生態(tài)建設(shè)需要數(shù)據(jù)的流通和協(xié)同,流通起來(lái)的數(shù)據(jù)可以幫助供需雙方更好地去解讀社會(huì)問(wèn)題和城市問(wèn)題,解讀了之后,才能有針對(duì)去做創(chuàng)新 他說(shuō):“大數(shù)據(jù)企業(yè)要不斷創(chuàng)新應(yīng)用,找到更多更合適的應(yīng)用場(chǎng)景,政府、企業(yè)乃至每個(gè)人才能享受到社會(huì)信用體系帶來(lái)的便利?!?藍(lán)燈數(shù)據(jù)董事長(zhǎng) 周強(qiáng)隨著人類(lèi)的生產(chǎn)生活方式及社會(huì)管理方式向著“智慧”的方向發(fā)展,城市管理及公安機(jī)關(guān)的警務(wù)管理也正朝著一種新的形態(tài)演變。 夢(mèng)創(chuàng)雙楊大數(shù)據(jù)負(fù)責(zé)人 杜國(guó)寧最后,夢(mèng)創(chuàng)雙楊大數(shù)據(jù)負(fù)責(zé)人杜國(guó)寧以《產(chǎn)融大數(shù)據(jù)助力”雙創(chuàng)”快速發(fā)展》為主題,分享了精彩的內(nèi)容。

亞馬遜ring:已解雇四名濫用權(quán)利訪問(wèn)用戶視頻數(shù)據(jù)的員工:

大數(shù)據(jù)產(chǎn)業(yè)創(chuàng)新服務(wù)媒體——聚焦數(shù)據(jù) · 改變商業(yè) 據(jù)外媒報(bào)道,在一封致信國(guó)會(huì)議員有關(guān)其安全做法的信中,亞馬遜旗下的監(jiān)控?cái)z像頭品牌ring承認(rèn),在過(guò)去四年中,該公司已解雇了四名因?yàn)E用權(quán)利訪問(wèn)用戶視頻數(shù)據(jù)的員工 在每種情況下,一旦得知這些行為,ring便立即調(diào)查該事件,并在確定該個(gè)人違反公司政策后將其解雇。 ring提到的事件可能與the information和ring 的攔截有關(guān)的報(bào)告有關(guān),該報(bào)告使總部位于烏克蘭的研發(fā)團(tuán)隊(duì)能夠無(wú)限制地訪問(wèn)每一個(gè)創(chuàng)建的ring視頻到amazon web服務(wù)器。? ring還聲稱,“它不知道有任何違反客戶個(gè)人識(shí)別信息的情況,需要向政府機(jī)構(gòu)報(bào)告。”但該公司表示,正在看到來(lái)自其他站點(diǎn)的盜竊登錄憑據(jù)被用于訪問(wèn)ring設(shè)備。 ring的數(shù)據(jù)安全實(shí)踐受到了持續(xù)的審查,特別是與執(zhí)法部門(mén)共享的數(shù)據(jù)。例如,在8月,vice報(bào)道說(shuō),警察部門(mén)已要求ring共享通過(guò)補(bǔ)貼計(jì)劃購(gòu)買(mǎi)ring攝像頭的人的個(gè)人信息。

天等縣政務(wù)oa:湟中縣政府政務(wù)OA系統(tǒng)中java開(kāi)發(fā)手冊(cè)黃山版_碼出高效java開(kāi)發(fā)手冊(cè)pdf

且效益有限,所以購(gòu)買(mǎi)政務(wù)OA系統(tǒng)時(shí)肯定要有一定的預(yù)算,預(yù)算金額也不會(huì)很高。這是因?yàn)樾⌒推髽I(yè)的局限性所影響的,所以,購(gòu)買(mǎi)政務(wù)OA系統(tǒng)首先會(huì)考慮價(jià)格因素,價(jià)格適中,功能優(yōu)秀是企業(yè)選擇政務(wù)OA系統(tǒng)的主要因素。 二、以提高效率為出發(fā)點(diǎn)在選型之前,要明確企業(yè)企業(yè)所需要解決的眾多問(wèn)題,需要通過(guò)政務(wù)OA系統(tǒng)如何提高工作效率,避免買(mǎi)到花拳繡腿的政務(wù)OA系統(tǒng)軟件。 三、以長(zhǎng)遠(yuǎn)發(fā)展為方向?qū)τ谛∑髽I(yè)來(lái)說(shuō),業(yè)務(wù)與規(guī)模都在不斷變化中,不同時(shí)期會(huì)有新的任務(wù)增加,所以企業(yè)購(gòu)買(mǎi)軟件不僅僅要將關(guān)注點(diǎn)放到是否能實(shí)現(xiàn)解決目前的企業(yè)問(wèn)題,還需要實(shí)現(xiàn)未來(lái)可能會(huì)發(fā)生的問(wèn)題。 綜上所述,小企業(yè)選型需要追逐性價(jià)比高的、核心功能扎實(shí)細(xì)致的,并且政務(wù)OA系統(tǒng)具有開(kāi)放性和二次開(kāi)發(fā)能力的。大家好,又見(jiàn)面了,我是你們的朋友全棧君。 一、 編程規(guī)約 (一) 命名風(fēng)格 6. 【強(qiáng)制】抽象類(lèi)命名使用abstract或base開(kāi)頭;異常類(lèi)命名使用exception 結(jié)尾;測(cè)試類(lèi) 命名以它要測(cè)試的類(lèi)的名稱開(kāi)始,以test結(jié)尾。 【強(qiáng)制】pojo類(lèi)中布爾類(lèi)型變量都不要加is前綴,否則部分框架解析會(huì)引起序列化錯(cuò)誤。 說(shuō)明:在本文 mysql 規(guī)約中的建表約定第一條,表達(dá)是與否的值采用 is_xxx 的命名方式,所以,需要在 設(shè)置從 is_xxx到 xxx的映射關(guān)系。 反例:定義為基本數(shù)據(jù)類(lèi)型 boolean isdeleted 的屬性,它的方法也是 isdeleted(),rpc框架在反向解 析的時(shí)候,“誤以為”對(duì)應(yīng)的屬性名稱是 deleted,導(dǎo)致屬性獲取不到,進(jìn)而拋出異常。 【參考】各層命名規(guī)約: a) service/dao 層方法命名規(guī)約 1) 獲取單個(gè)對(duì)象的方法用 get 做前綴。 2) 獲取多個(gè)對(duì)象的方法用 list 做前綴,復(fù)數(shù)形式結(jié)尾如:listobjects。 3) 獲取統(tǒng)計(jì)值的方法用 count 做前綴。 4) 插入的方法用save/insert 做前綴。 5) 刪除的方法用remove/delete 做前綴。 6) 修改的方法用update 做前綴。 b) 領(lǐng)域模型命名規(guī)約 1) 數(shù)據(jù)對(duì)象:xxxdo,xxx 即為數(shù)據(jù)表名。 2) 數(shù)據(jù)傳輸對(duì)象:xxxdto,xxx為業(yè)務(wù)領(lǐng)域相關(guān)的名稱。 3) 展示對(duì)象:xxxvo,xxx一般為網(wǎng)頁(yè)名稱。 4) pojo是 do/dto/bo/vo的統(tǒng)稱,禁止命名成 xxxpojo。 (三) 代碼格式 5. 【強(qiáng)制】采用4個(gè)空格縮進(jìn),禁止使用tab字符。 說(shuō)明:如果使用 tab 縮進(jìn),必須設(shè)置1 個(gè)tab 為4 個(gè)空格。idea 設(shè)置 tab 為4 個(gè)空格時(shí),請(qǐng)勿勾選 use tab character;而在 eclipse 中,必須勾選 insert spaces for tabs。 正例: (涉及1-5 點(diǎn)) public static void main(string[] args) { // 縮進(jìn)4個(gè)空格 string say = “hello”; // 運(yùn)算符的左右必須有一個(gè)空格 int flag = 0; // 關(guān)鍵詞if與括號(hào)之間必須有一個(gè)空格,括號(hào)內(nèi)的f與左括號(hào),0與右括號(hào)不需要空格 if (flag == 0) { system.out.println(say); } // 左大括號(hào)前加空格且不換行;左大括號(hào)后換行 if (flag == 1) { system.out.println(“world”); // 右大括號(hào)前換行,右大括號(hào)后有else,不用換行 } else { system.out.println(“ok”); // 在右大括號(hào)后直接結(jié)束,則必須換行 } } (四) oop規(guī)約 【強(qiáng)制】避免通過(guò)一個(gè)類(lèi)的對(duì)象引用訪問(wèn)此類(lèi)的靜態(tài)變量或靜態(tài)方法,無(wú)謂增加編譯器解析 成本,直接用類(lèi)名來(lái)訪問(wèn)即可。 【強(qiáng)制】浮點(diǎn)數(shù)之間的等值判斷,基本數(shù)據(jù)類(lèi)型不能用==來(lái)比較,包裝數(shù)據(jù)類(lèi)型不能用 equals來(lái)判斷。 說(shuō)明:浮點(diǎn)數(shù)采用“尾數(shù)+階碼”的編碼方式,類(lèi)似于科學(xué)計(jì)數(shù)法的“有效數(shù)字+指數(shù)”的表示方式。二進(jìn)制無(wú)法精確表示大部分的十進(jìn)制小數(shù) 【強(qiáng)制】為了防止精度損失,禁止使用構(gòu)造方法 bigdecimal(double)的方式把double值轉(zhuǎn) 化為 bigdecimal對(duì)象。 關(guān)于基本數(shù)據(jù)類(lèi)型與包裝數(shù)據(jù)類(lèi)型的使用標(biāo)準(zhǔn)如下: 1) 【強(qiáng)制】所有的 pojo類(lèi)屬性必須使用包裝數(shù)據(jù)類(lèi)型。 2) 【強(qiáng)制】rpc 方法的返回值和參數(shù)必須使用包裝數(shù)據(jù)類(lèi)型。 3) 【推薦】所有的局部變量使用基本數(shù)據(jù)類(lèi)型。 說(shuō)明:pojo類(lèi)屬性沒(méi)有初值是提醒使用者在需要使用時(shí),必須自己顯式地進(jìn)行賦值,任何 npe問(wèn)題,或 者入庫(kù)檢查,都由使用者來(lái)保證。 正例:數(shù)據(jù)庫(kù)的查詢結(jié)果可能是 null,因?yàn)樽詣?dòng)拆箱,用基本數(shù)據(jù)類(lèi)型接收有 npe 風(fēng)險(xiǎn)。 反例:比如顯示成交總額漲跌情況,即正負(fù) x%,x為基本數(shù)據(jù)類(lèi)型,調(diào)用的 rpc 服務(wù),調(diào)用不成功時(shí), 返回的是默認(rèn)值,頁(yè)面顯示為 0%,這是不合理的,應(yīng)該顯示成中劃線。所以包裝數(shù)據(jù)類(lèi)型的 null值,能 夠表示額外的信息,如:遠(yuǎn)程調(diào)用失敗,異常退出。 【強(qiáng)制】pojo類(lèi)必須寫(xiě)tostring方法。使用ide中的工具:source> generate tostring 時(shí),如果繼承了另一個(gè)pojo類(lèi),注意在前面加一下super.tostring。 說(shuō)明:在方法執(zhí)行拋出異常時(shí),可以直接調(diào)用 pojo的 tostring()方法打印其屬性值,便于排查問(wèn)題。 【強(qiáng)制】禁止在pojo類(lèi)中,同時(shí)存在對(duì)應(yīng)屬性xxx的isxxx()和getxxx()方法。 說(shuō)明:框架在調(diào)用屬性 xxx的提取方法時(shí),并不能確定哪個(gè)方法一定是被優(yōu)先調(diào)用到。 【推薦】使用索引訪問(wèn)用string的split方法得到的數(shù)組時(shí),需做最后一個(gè)分隔符后有無(wú)內(nèi) 容的檢查,否則會(huì)有拋indexoutofboundsexception 的風(fēng)險(xiǎn)。 說(shuō)明: string str = “a,b,c,,”; string[] ary = str.split(“,”); // 預(yù)期大于3,結(jié)果是3 system.out.println(ary.length); 【推薦】循環(huán)體內(nèi),字符串的連接方式,使用stringbuilder的append方法進(jìn)行擴(kuò)展。 說(shuō)明:下例中,反編譯出的字節(jié)碼文件顯示每次循環(huán)都會(huì) new出一個(gè) stringbuilder 對(duì)象,然后進(jìn)行 append 操作,最后通過(guò) tostring 方法返回 string 對(duì)象,造成內(nèi)存資源浪費(fèi)。 反例: string str = “start”; for (int i = 0; i < 100; i++) { str = str + “hello”; } 【推薦】final可以聲明類(lèi)、成員變量、方法、以及本地變量,下列情況使用 final關(guān)鍵字: 1) 不允許被繼承的類(lèi),如:string 類(lèi)。 2) 不允許修改引用的域?qū)ο蟆?3) 不允許被覆寫(xiě)的方法,如:pojo類(lèi)的 setter 方法。 4) 不允許運(yùn)行過(guò)程中重新賦值的局部變量。 5) 避免上下文重復(fù)使用一個(gè)變量,使用 final可以強(qiáng)制重新定義一個(gè)變量,方便更好地進(jìn)行重構(gòu)。 【推薦】慎用 object的 clone方法來(lái)拷貝對(duì)象。 說(shuō)明:對(duì)象clone 方法默認(rèn)是淺拷貝,若想實(shí)現(xiàn)深拷貝需覆寫(xiě)clone 方法實(shí)現(xiàn)域?qū)ο蟮纳疃缺闅v式拷貝。 【推薦】類(lèi)成員與方法訪問(wèn)控制從嚴(yán): 1) 如果不允許外部直接通過(guò) new來(lái)創(chuàng)建對(duì)象,那么構(gòu)造方法必須是 private。 2) 工具類(lèi)不允許有 public或default 構(gòu)造方法。 3) 類(lèi)非static 成員變量并且與子類(lèi)共享,必須是 protected。 4) 類(lèi)非static 成員變量并且僅在本類(lèi)使用,必須是private。 5) 類(lèi)static 成員變量如果僅在本類(lèi)使用,必須是 private。 6) 若是static 成員變量,考慮是否為final。 7) 類(lèi)成員方法只供類(lèi)內(nèi)部調(diào)用,必須是 private。 8) 類(lèi)成員方法只對(duì)繼承類(lèi)公開(kāi),那么限制為 protected。 (五) 集合處理 【強(qiáng)制】關(guān)于hashcode和equals的處理,遵循如下規(guī)則: 1) 只要覆寫(xiě)equals,就必須覆寫(xiě)hashcode。 2) 因?yàn)閟et 存儲(chǔ)的是不重復(fù)的對(duì)象,依據(jù) hashcode和equals進(jìn)行判斷,所以 set 存儲(chǔ)的對(duì)象必須覆 寫(xiě)這兩個(gè)方法。 3) 如果自定義對(duì)象作為map 的鍵,那么必須覆寫(xiě)hashcode 和equals。 說(shuō)明:string 已覆寫(xiě)hashcode 和equals方法,所以我們可以愉快地使用 string 對(duì)象作為key來(lái)使用。 【強(qiáng)制】使用map 的方法 keyset()/values()/entryset()返回集合對(duì)象時(shí),不可以對(duì)其進(jìn)行添 加元素操作,否則會(huì)拋出unsupportedoperationexception 異常。 說(shuō)明:entryset()中有key和value,所以直接加入元素或者刪除元素的方法都是無(wú)效的。keyset()中有key,可以對(duì)key進(jìn)行操作,所以能使用remove()和equals(),所以返回true。 values()中只有value值,沒(méi)有key,value值是沒(méi)什么用的,所以values()方法也僅僅是獲取所有value值方便。 【強(qiáng)制】collections 類(lèi)返回的對(duì)象,如:emptylist()/singletonlist()等都是immutable list,不可對(duì)其進(jìn)行添加或者刪除元素的操作。 反例:如果查詢無(wú)結(jié)果,返回 collections.emptylist()空集合對(duì)象,調(diào)用方一旦進(jìn)行了添加元素的操作,就 會(huì)觸發(fā) unsupportedoperationexception 異常。 【強(qiáng)制】在sublist場(chǎng)景中,高度注意對(duì)原集合元素的增加或刪除,均會(huì)導(dǎo)致子列表的遍 歷、增加、刪除產(chǎn)生concurrentmodificationexception 異常。 正例:string[] sids = slist.toarray(new string[slist.size()]); list list = new arraylist<>(2); list.add(“guan”); list.add(“bao”); string[] array = list.toarray(new string[0]); 說(shuō)明:使用 toarray 帶參方法,數(shù)組空間大小的 length: 1) 等于 0,動(dòng)態(tài)創(chuàng)建與 size 相同的數(shù)組,性能最好。 2) 大于 0 但小于size,重新創(chuàng)建大小等于 size 的數(shù)組,增加 gc負(fù)擔(dān)。 java 開(kāi)發(fā)手冊(cè) 12/44 3) 等于 size,在高并發(fā)情況下,數(shù)組創(chuàng)建完成之后,size 正在變大的情況下,負(fù)面影響與上相同。 4) 大于 size,空間浪費(fèi),且在size 處插入 null 值,存在 npe隱患。 反例:string[] array= (string[]) list.toarray();運(yùn)行,報(bào)錯(cuò) 【強(qiáng)制】使用工具類(lèi)arrays.aslist()把數(shù)組轉(zhuǎn)換成集合時(shí),不能使用其修改集合相關(guān)的方 法,它的add/remove/clear方法會(huì)拋出unsupportedoperationexception 異常。 說(shuō)明:aslist 的返回對(duì)象是一個(gè) arrays內(nèi)部類(lèi),并沒(méi)有實(shí)現(xiàn)集合的修改方法。arrays.aslist 體現(xiàn)的是適 配器模式,只是轉(zhuǎn)換接口,后臺(tái)的數(shù)據(jù)仍是數(shù)組。 string[] str = new string[] { “yang”, “hao” }; list list = arrays.aslist(str); 第一種情況:list.add(“yangguanbao”); 運(yùn)行時(shí)異常。 第二種情況:str[0] = “changed”; 也會(huì)隨之修改,反之亦然。 【強(qiáng)制】泛型通配符<? extends t>來(lái)接收返回的數(shù)據(jù),此寫(xiě)法的泛型集合不能使用 add方 法,而<? super t>不能使用 get方法,作為接口調(diào)用賦值時(shí)易出錯(cuò)。 說(shuō)明: extends 可用于返回類(lèi)型限定,不能用于參數(shù)類(lèi)型限定(換句話說(shuō):? extends xxx 只能用于方法返回類(lèi)型限定,jdk能夠確定此類(lèi)的最小繼承邊界為xxx,只要是這個(gè)類(lèi)的父類(lèi)都能接收,但是傳入?yún)?shù)無(wú)法確定具體類(lèi)型,只能接受null的傳入)。 super 可用于參數(shù)類(lèi)型限定,不能用于返回類(lèi)型限定(換句話說(shuō):? supper xxx 只能用于方法傳參,因?yàn)閖dk能夠確定傳入為xxx的子類(lèi),返回只能用object類(lèi)接收)。 ? 既不能用于方法參數(shù)傳入,也不能用于方法返回。 【強(qiáng)制】不要在foreach循環(huán)里進(jìn)行元素的remove/add操作。remove元素請(qǐng)使用 iterator方式,如果并發(fā)操作,需要對(duì)iterator對(duì)象加鎖。 正例: list list = new arraylist<>(); list.add(“1”); list.add(“2”); iterator iterator = list.iterator(); while (iterator.hasnext()) { string item = iterator.next(); if (刪除元素的條件) { iterator.remove(); } } 調(diào)用iterator的刪除方法: 1.首先檢查集合 2.刪除元素 3.下一個(gè)元素的索引位置cursor重新賦值 4.檢查集合參數(shù)重新賦值 反例: for (string item : list) { if (“1”.equals(item)) { list.remove(item); } } 總結(jié):如果我們我們用foreach刪除的元素剛好是最后一個(gè),刪除完成前下一個(gè)元素的索引位置cursor剛好等于集合長(zhǎng)度size的大小。但是,刪除完成后size的數(shù)量減1,但是cursor并沒(méi)有變化。導(dǎo)致下一次循環(huán)不相等繼續(xù)向下執(zhí)行,導(dǎo)致檢查數(shù)組不通過(guò),拋出java.util.concurrentmodificationexception 【強(qiáng)制】在 jdk7版本及以上,comparator實(shí)現(xiàn)類(lèi)要滿足如下三個(gè)條件,不然 arrays.sort, collections.sort會(huì)拋 illegalargumentexception異常。 說(shuō)明:三個(gè)條件如下 1) x,y的比較結(jié)果和 y,x的比較結(jié)果相反。 2) x>y,y>z,則x>z。 3) x=y,則x,z 比較結(jié)果和 y,z 比較結(jié)果相同。 反例:下例中沒(méi)有處理相等的情況,交換兩個(gè)對(duì)象判斷結(jié)果并不互反,不符合第一個(gè)條件,在實(shí)際使用中 可能會(huì)出現(xiàn)異常。 new comparator () { @override public int compare(student o1, student o2) { return o1.getid() > o2.getid() ? 1 : -1; } }; 代碼語(yǔ)言:javascript 復(fù)制 15. 【推薦】使用 entryset遍歷 map類(lèi)集合 kv,而不是 keyset方式進(jìn)行遍歷。 說(shuō)明:keyset 其實(shí)是遍歷了2 次,一次是轉(zhuǎn)為 iterator 對(duì)象,另一次是從 hashmap 中取出key所對(duì)應(yīng) 的 value。而entryset 只是遍歷了一次就把 key和value 都放到了 entry中,效率更高。如果是 jdk8, 使用 map.foreach 方法。 正例:values()返回的是 v值集合,是一個(gè) list 集合對(duì)象;keyset()返回的是k 值集合,是一個(gè) set 集合 對(duì)象;entryset()返回的是k-v值組合集合。 【參考】合理利用好集合的有序性(sort)和穩(wěn)定性(order),避免集合的無(wú)序性(unsort)和不穩(wěn) 定性(unorder)帶來(lái)的負(fù)面影響。 說(shuō)明:有序性是指遍歷的結(jié)果是按某種比較規(guī)則依次排列的。穩(wěn)定性指集合每次遍歷的元素次序是一定 的。如:arraylist 是order/unsort;hashmap 是unorder/unsort;treeset是 order/sort。 【參考】利用set元素唯一的特性,可以快速對(duì)一個(gè)集合進(jìn)行去重操作,避免使用list的 contains方法進(jìn)行遍歷、對(duì)比、去重操作。 (六) 并發(fā)處理 3. 【強(qiáng)制】線程資源必須通過(guò)線程池提供,不允許在應(yīng)用中自行顯式創(chuàng)建線程。 說(shuō)明:線程池的好處是減少在創(chuàng)建和銷(xiāo)毀線程上所消耗的時(shí)間以及系統(tǒng)資源的開(kāi)銷(xiāo),解決資源不足的問(wèn) 題。如果不使用線程池,有可能造成系統(tǒng)創(chuàng)建大量同類(lèi)線程而導(dǎo)致消耗完內(nèi)存或者“過(guò)度切換”的問(wèn)題。 【強(qiáng)制】線程池不允許使用executors去創(chuàng)建,而是通過(guò)threadpoolexecutor的方式,這 樣的處理方式讓寫(xiě)的同學(xué)更加明確線程池的運(yùn)行規(guī)則,規(guī)避資源耗盡的風(fēng)險(xiǎn)。 說(shuō)明:executors返回的線程池對(duì)象的弊端如下: 1) fixedthreadpool和singlethreadpool: 允許的請(qǐng)求隊(duì)列長(zhǎng)度為 integer.max_value,可能會(huì)堆積大量的請(qǐng)求,從而導(dǎo)致 oom。 2) cachedthreadpool: 允許的創(chuàng)建線程數(shù)量為 integer.max_value,可能會(huì)創(chuàng)建大量的線程,從而導(dǎo)致 oom。 【強(qiáng)制】simpledateformat 是線程不安全的類(lèi),一般不要定義為 static變量,如果定義為 static,必須加鎖,或者使用 dateutils工具類(lèi)。 正例:注意線程安全,使用 dateutils。亦推薦如下處理: private static final threadlocal df = new threadlocal () { @override protected dateformat initialvalue() { return new simpledateformat(“yyyy-mm-dd”); } }; 說(shuō)明:如果是jdk8 的應(yīng)用,可以使用 instant 代替 date,localdatetime 代替 calendar, datetimeformatter 代替simpledateformat,官方給出的解釋?zhuān)簊imple beautiful strong immutable thread-safe。 【強(qiáng)制】必須回收自定義的threadlocal變量,尤其在線程池場(chǎng)景下,線程經(jīng)常會(huì)被復(fù)用, 如果不清理自定義的 threadlocal變量,可能會(huì)影響后續(xù)業(yè)務(wù)邏輯和造成內(nèi)存泄露等問(wèn)題。 盡量在代理中使用try-finally塊進(jìn)行回收。 正例: objectthreadlocal.set(userinfo); try { // … } finally { objectthreadlocal.remove(); } 【強(qiáng)制】高并發(fā)時(shí),同步調(diào)用應(yīng)該去考量鎖的性能損耗。能用無(wú)鎖數(shù)據(jù)結(jié)構(gòu),就不要用鎖; 能鎖區(qū)塊,就不要鎖整個(gè)方法體;能用對(duì)象鎖,就不要用類(lèi)鎖。 說(shuō)明:盡可能使加鎖的代碼塊工作量盡可能的小,避免在鎖代碼塊中調(diào)用 rpc方法 【強(qiáng)制】在使用阻塞等待獲取鎖的方式中,必須在try 代碼塊之外,并且在加鎖方法與try 代 碼塊之間沒(méi)有任何可能拋出異常的方法調(diào)用,避免加鎖成功后,在 finally 中無(wú)法解鎖。 說(shuō)明一:如果在 lock 方法與 try代碼塊之間的方法調(diào)用拋出異常,那么無(wú)法解鎖,造成其它線程無(wú)法成功 獲取鎖。 說(shuō)明二:如果lock 方法在try代碼塊之內(nèi),可能由于其它方法拋出異常,導(dǎo)致在 finally代碼塊中, unlock 對(duì)未加鎖的對(duì)象解鎖,它會(huì)調(diào)用aqs的tryrelease 方法(取決于具體實(shí)現(xiàn)類(lèi)),拋出 illegalmonitorstateexception 異常。 說(shuō)明三:在lock 對(duì)象的lock 方法實(shí)現(xiàn)中可能拋出 unchecked 異常,產(chǎn)生的后果與說(shuō)明二相同 【強(qiáng)制】在使用嘗試機(jī)制來(lái)獲取鎖的方式中,進(jìn)入業(yè)務(wù)代碼塊之前,必須先判斷當(dāng)前線程是 否持有鎖。鎖的釋放規(guī)則與鎖的阻塞等待方式相同。 說(shuō)明:lock 對(duì)象的 unlock 方法在執(zhí)行時(shí),它會(huì)調(diào)用 aqs的 tryrelease 方法(取決于具體實(shí)現(xiàn)類(lèi)),如果 當(dāng)前線程不持有鎖,則拋出 illegalmonitorstateexception 異常。 【強(qiáng)制】并發(fā)修改同一記錄時(shí),避免更新丟失,需要加鎖。要么在應(yīng)用層加鎖,要么在緩存 加鎖,要么在數(shù)據(jù)庫(kù)層使用樂(lè)觀鎖,使用 version作為更新依據(jù)。 說(shuō)明:如果每次訪問(wèn)沖突概率小于 20%,推薦使用樂(lè)觀鎖,否則使用悲觀鎖。樂(lè)觀鎖的重試次數(shù)不得小于 3 次。 【強(qiáng)制】多線程并行處理定時(shí)任務(wù)時(shí),timer運(yùn)行多個(gè) timetask時(shí),只要其中之一沒(méi)有捕獲 拋出的異常,其它任務(wù)便會(huì)自動(dòng)終止運(yùn)行,如果在處理定時(shí)任務(wù)時(shí)使用 scheduledexecutorservice 則沒(méi)有這個(gè)問(wèn)題。 【推薦】使用 countdownlatch進(jìn)行異步轉(zhuǎn)同步操作,每個(gè)線程退出前必須調(diào)用 countdown 方法,線程執(zhí)行代碼注意 catch異常,確保 countdown方法被執(zhí)行到,避免主線程無(wú)法執(zhí)行 至 await方法,直到超時(shí)才返回結(jié)果。 說(shuō)明:注意,子線程拋出異常堆棧,不能在主線程 try-catch 到。 【推薦】避免 random實(shí)例被多線程使用,雖然共享該實(shí)例是線程安全的,但會(huì)因競(jìng)爭(zhēng)同一 seed 導(dǎo)致的性能下降。 說(shuō)明:random實(shí)例包括java.util.random 的實(shí)例或者 math.random()的方式。 正例:在jdk7 之后,可以直接使用 api threadlocalrandom,而在 jdk7 之前,需要編碼保證每個(gè)線 程持有一個(gè)實(shí)例。 【推薦】在并發(fā)場(chǎng)景下,通過(guò)雙重檢查鎖(double-checked locking)實(shí)現(xiàn)延遲初始化的優(yōu)化 問(wèn)題隱患(可參考 the “double 【參考】volatile解決多線程內(nèi)存不可見(jiàn)問(wèn)題。對(duì)于一寫(xiě)多讀,是可以解決變量同步問(wèn)題,但 是如果多寫(xiě),同樣無(wú)法解決線程安全問(wèn)題。 說(shuō)明:如果是count++操作,使用如下類(lèi)實(shí)現(xiàn):atomicinteger count = new atomicinteger(); count.addandget(1); 如果是jdk8,推薦使用longadder 對(duì)象,比 atomiclong 性能更好(減少樂(lè)觀 鎖的重試次數(shù))。 【參考】hashmap 在容量不夠進(jìn)行resize時(shí)由于高并發(fā)可能出現(xiàn)死鏈,導(dǎo)致cpu飆升,在 開(kāi)發(fā)過(guò)程中可以使用其它數(shù)據(jù)結(jié)構(gòu)或加鎖來(lái)規(guī)避此風(fēng)險(xiǎn)。 【參考】threadlocal對(duì)象使用static修飾,threadlocal 無(wú)法解決共享對(duì)象的更新問(wèn)題。 說(shuō)明:這個(gè)變量是針對(duì)一個(gè)線程內(nèi)所有操作共享的,所以設(shè)置為靜態(tài)變量,所有此類(lèi)實(shí)例共享此靜態(tài)變 量,也就是說(shuō)在類(lèi)第一次被使用時(shí)裝載,只分配一塊存儲(chǔ)空間,所有此類(lèi)的對(duì)象(只要是這個(gè)線程內(nèi)定義 的)都可以操控這個(gè)變量。 (七) 控制語(yǔ)句 2. 【強(qiáng)制】當(dāng)switch 括號(hào)內(nèi)的變量類(lèi)型為string并且此變量為外部參數(shù)時(shí),必須先進(jìn)行null 判斷。 【強(qiáng)制】在高并發(fā)場(chǎng)景中,避免使用”等于”判斷作為中斷或退出的條件。 說(shuō)明:如果并發(fā)控制沒(méi)有處理好,容易產(chǎn)生等值判斷被“擊穿”的情況,使用大于或小于的區(qū)間判斷條件 來(lái)代替。 反例:判斷剩余獎(jiǎng)品數(shù)量等于 0 時(shí),終止發(fā)放獎(jiǎng)品,但因?yàn)椴l(fā)處理錯(cuò)誤導(dǎo)致獎(jiǎng)品數(shù)量瞬間變成了負(fù)數(shù), 這樣的話,活動(dòng)無(wú)法終止。 (八) 注釋規(guī)約 11. 【參考】特殊注釋標(biāo)記,請(qǐng)注明標(biāo)記人與標(biāo)記時(shí)間。注意及時(shí)處理這些標(biāo)記,通過(guò)標(biāo)記掃 描,經(jīng)常清理此類(lèi)標(biāo)記。線上故障有時(shí)候就是來(lái)源于這些標(biāo)記處的代碼。 1) 待辦事宜(todo):(標(biāo)記人,標(biāo)記時(shí)間,[預(yù)計(jì)處理時(shí)間]) 表示需要實(shí)現(xiàn),但目前還未實(shí)現(xiàn)的功能。這實(shí)際上是一個(gè) javadoc 的標(biāo)簽,目前的 javadoc 還沒(méi) 有實(shí)現(xiàn),但已經(jīng)被廣泛使用。只能應(yīng)用于類(lèi),接口和方法(因?yàn)樗且粋€(gè) javadoc 標(biāo)簽)。 2) 錯(cuò)誤,不能工作(fixme):(標(biāo)記人,標(biāo)記時(shí)間,[預(yù)計(jì)處理時(shí)間]) 在注釋中用fixme標(biāo)記某代碼是錯(cuò)誤的,而且不能工作,需要及時(shí)糾正的情況。 (九) 其它 4. 【強(qiáng)制】注意 math.random() 這個(gè)方法返回是 double類(lèi)型,注意取值的范圍 0≤x<1(能夠 取到零值,注意除零異常),如果想獲取整數(shù)類(lèi)型的隨機(jī)數(shù),不要將 x放大10的若干倍然后 取整,直接使用 random對(duì)象的 nextint或者 nextlong方法。 二、異常日志 (一) 異常處理 5. 【強(qiáng)制】有try塊放到了事務(wù)代碼中,catch異常后,如果需要回滾事務(wù),一定要注意手動(dòng)回 滾事務(wù)。 【強(qiáng)制】finally塊必須對(duì)資源對(duì)象、流對(duì)象進(jìn)行關(guān)閉,有異常也要做try-catch。 說(shuō)明:如果jdk7 及以上,可以使用 try-with-resources方式。 【強(qiáng)制】不要在finally塊中使用return。 說(shuō)明:try塊中的 return 語(yǔ)句執(zhí)行成功后,并不馬上返回,而是繼續(xù)執(zhí)行 finally塊中的語(yǔ)句,如果此處存 在 return 語(yǔ)句,則在此直接返回,無(wú)情丟棄掉try塊中的返回點(diǎn)。 【推薦】防止 npe,是程序員的基本修養(yǎng),注意 npe產(chǎn)生的場(chǎng)景: 1) 返回類(lèi)型為基本數(shù)據(jù)類(lèi)型,return 包裝數(shù)據(jù)類(lèi)型的對(duì)象時(shí),自動(dòng)拆箱有可能產(chǎn)生 npe。 反例:public int f() { return integer 對(duì)象}, 如果為 null,自動(dòng)解箱拋 npe。 2) 數(shù)據(jù)庫(kù)的查詢結(jié)果可能為 null。 3) 集合里的元素即使 isnotempty,取出的數(shù)據(jù)元素也可能為 null。 4) 遠(yuǎn)程調(diào)用返回對(duì)象時(shí),一律要求進(jìn)行空指針判斷,防止 npe。 5) 對(duì)于session 中獲取的數(shù)據(jù),建議進(jìn)行 npe檢查,避免空指針。 6) 級(jí)聯(lián)調(diào)用 obj.geta().getb().getc();一連串調(diào)用,易產(chǎn)生 npe。 正例:使用 jdk8的optional 類(lèi)來(lái)防止 npe問(wèn)題。 (二) 日志規(guī)約 6. 【強(qiáng)制】避免重復(fù)打印日志,浪費(fèi)磁盤(pán)空間,務(wù)必在 log4j.xml中設(shè)置 additivity=false。 正例: 【推薦】謹(jǐn)慎地記錄日志。生產(chǎn)環(huán)境禁止輸出 debug日志;有選擇地輸出 info日志;如果使 用 warn來(lái)記錄剛上線時(shí)的業(yè)務(wù)行為信息,一定要注意日志輸出量的問(wèn)題,避免把服務(wù)器磁盤(pán) 撐爆,并記得及時(shí)刪除這些觀察日志。 說(shuō)明:大量地輸出無(wú)效日志,不利于系統(tǒng)性能提升,也不利于快速定位錯(cuò)誤點(diǎn)。記錄日志時(shí)請(qǐng)思考:這些 日志真的有人看嗎?看到這條日志你能做什么?能不能給問(wèn)題排查帶來(lái)好處? 【推薦】可以使用warn日志級(jí)別來(lái)記錄用戶輸入?yún)?shù)錯(cuò)誤的情況,避免用戶投訴時(shí),無(wú)所 適從。如非必要,請(qǐng)不要在此場(chǎng)景打出error級(jí)別,避免頻繁報(bào)警。 說(shuō)明:注意日志輸出的級(jí)別,error 級(jí)別只記錄系統(tǒng)邏輯出錯(cuò)、異?;蛘咧匾腻e(cuò)誤信息。 【推薦】盡量用英文來(lái)描述日志錯(cuò)誤信息,如果日志中的錯(cuò)誤信息用英文描述不清楚的話使 用中文描述即可,否則容易產(chǎn)生歧義。 三、單元測(cè)試 【強(qiáng)制】好的單元測(cè)試必須遵守 air原則。 說(shuō)明:?jiǎn)卧獪y(cè)試在線上運(yùn)行時(shí),感覺(jué)像空氣(air)一樣并不存在,但在測(cè)試質(zhì)量的保障上,卻是非常關(guān) 鍵的。好的單元測(cè)試宏觀上來(lái)說(shuō),具有自動(dòng)化、獨(dú)立性、可重復(fù)執(zhí)行的特點(diǎn)。 ? a:automatic(自動(dòng)化) ? i:independent(獨(dú)立性) ? r:repeatable(可重復(fù)) 【推薦】編寫(xiě)單元測(cè)試代碼遵守 bcde原則,以保證被測(cè)試模塊的交付質(zhì)量。 ? b:border,邊界值測(cè)試,包括循環(huán)邊界、特殊取值、特殊時(shí)間點(diǎn)、數(shù)據(jù)順序等。 ? c:correct,正確的輸入,并得到預(yù)期的結(jié)果。 ? d:design,與設(shè)計(jì)文檔相結(jié)合,來(lái)編寫(xiě)單元測(cè)試。 ? e:error,強(qiáng)制錯(cuò)誤信息輸入(如:非法數(shù)據(jù)、異常流程、業(yè)務(wù)允許外等),并得到預(yù)期的結(jié)果。 【參考】為了更方便地進(jìn)行單元測(cè)試,業(yè)務(wù)代碼應(yīng)避免以下情況: ? 構(gòu)造方法中做的事情過(guò)多。 ? 存在過(guò)多的全局變量和靜態(tài)方法。 ? 存在過(guò)多的外部依賴。 ? 存在過(guò)多的條件語(yǔ)句。 說(shuō)明:多層條件語(yǔ)句建議使用衛(wèi)語(yǔ)句、策略模式、狀態(tài)模式等方式重構(gòu)。 四、安全規(guī)約 【強(qiáng)制】隸屬于用戶個(gè)人的頁(yè)面或者功能必須進(jìn)行權(quán)限控制校驗(yàn)。 說(shuō)明:防止沒(méi)有做水平權(quán)限校驗(yàn)就可隨意訪問(wèn)、修改、刪除別人的數(shù)據(jù),比如查看他人的私信內(nèi)容、修改 他人的訂單。 【強(qiáng)制】用戶敏感數(shù)據(jù)禁止直接展示,必須對(duì)展示數(shù)據(jù)進(jìn)行脫敏。 說(shuō)明:中國(guó)大陸個(gè)人手機(jī)號(hào)碼顯示為:137****0969,隱藏中間 4 位,防止隱私泄露。 【強(qiáng)制】用戶輸入的 sql參數(shù)嚴(yán)格使用參數(shù)綁定或者 metadata字段值限定,防止 sql注 入,禁止字符串拼接 sql訪問(wèn)數(shù)據(jù)庫(kù)。 【強(qiáng)制】用戶請(qǐng)求傳入的任何參數(shù)必須做有效性驗(yàn)證。 說(shuō)明:忽略參數(shù)校驗(yàn)可能導(dǎo)致: ? page size 過(guò)大導(dǎo)致內(nèi)存溢出 ? 惡意order by導(dǎo)致數(shù)據(jù)庫(kù)慢查詢 ? 任意重定向 ? sql 注入 ? 反序列化注入 ? 正則輸入源串拒絕服務(wù) redos 說(shuō)明:java代碼用正則來(lái)驗(yàn)證客戶端的輸入,有些正則寫(xiě)法驗(yàn)證普通用戶輸入沒(méi)有問(wèn)題,但是如果攻 擊人員使用的是特殊構(gòu)造的字符串來(lái)驗(yàn)證,有可能導(dǎo)致死循環(huán)的結(jié)果。 【強(qiáng)制】在使用平臺(tái)資源,譬如短信、郵件、電話、下單、支付,必須實(shí)現(xiàn)正確的防重放的 機(jī)制,如數(shù)量限制、疲勞度控制、驗(yàn)證碼校驗(yàn),避免被濫刷而導(dǎo)致資損。 說(shuō)明:如注冊(cè)時(shí)發(fā)送驗(yàn)證碼到手機(jī),如果沒(méi)有限制次數(shù)和頻率,那么可以利用此功能騷擾到其它用戶,并 造成短信平臺(tái)資源浪費(fèi)。 五、mysql數(shù)據(jù)庫(kù) (一) 建表規(guī)約 【強(qiáng)制】表達(dá)是與否概念的字段,必須使用is_xxx的方式命名,數(shù)據(jù)類(lèi)型是unsigned tinyint(1表示是,0表示否)。 說(shuō)明:任何字段如果為非負(fù)數(shù),必須是 unsigned。 注意:pojo類(lèi)中的任何布爾類(lèi)型的變量,都不要加 is前綴,所以,需要在 設(shè)置從 is_xxx 到 xxx的映射關(guān)系。數(shù)據(jù)庫(kù)表示是與否的值,使用 tinyint 類(lèi)型,堅(jiān)持 is_xxx的命名方式是為了明確其取 值含義與取值范圍。 正例:表達(dá)邏輯刪除的字段名 is_deleted,1 表示刪除,0 表示未刪除。 【強(qiáng)制】小數(shù)類(lèi)型為 decimal,禁止使用 float和double。 【強(qiáng)制】varchar是可變長(zhǎng)字符串,不預(yù)先分配存儲(chǔ)空間,長(zhǎng)度不要超過(guò)5000,如果存儲(chǔ)長(zhǎng) 度大于此值,定義字段類(lèi)型為 text,獨(dú)立出來(lái)一張表,用主鍵來(lái)對(duì)應(yīng),避免影響其它字段索 引效率。 【強(qiáng)制】表必備三字段:id, create_time, update_time。 (二) 索引規(guī)約 【強(qiáng)制】業(yè)務(wù)上具有唯一特性的字段,即使是多個(gè)字段的組合,也必須建成唯一索引。 說(shuō)明:不要以為唯一索引影響了 insert 速度,這個(gè)速度損耗可以忽略,但提高查找速度是明顯的;另外, 即使在應(yīng)用層做了非常完善的校驗(yàn)控制,只要沒(méi)有唯一索引,根據(jù)墨菲定律,必然有臟數(shù)據(jù)產(chǎn)生。 【強(qiáng)制】超過(guò)三個(gè)表禁止 join。需要 join的字段,數(shù)據(jù)類(lèi)型必須絕對(duì)一致;多表關(guān)聯(lián)查詢 時(shí),保證被關(guān)聯(lián)的字段需要有索引。 說(shuō)明:即使雙表 join 也要注意表索引、sql 性能。 【強(qiáng)制】在 varchar字段上建立索引時(shí),必須指定索引長(zhǎng)度,沒(méi)必要對(duì)全字段建立索引,根據(jù) 實(shí)際文本區(qū)分度決定索引長(zhǎng)度即可。 說(shuō)明:索引的長(zhǎng)度與區(qū)分度是一對(duì)矛盾體,一般對(duì)字符串類(lèi)型數(shù)據(jù),長(zhǎng)度為 20 的索引,區(qū)分度會(huì)高達(dá) 90%以上,可以使用 count(distinct left(列名, 索引長(zhǎng)度))/count(*)的區(qū)分度來(lái)確定。 【強(qiáng)制】頁(yè)面搜索嚴(yán)禁左模糊或者全模糊,如果需要請(qǐng)走搜索引擎來(lái)解決。 說(shuō)明:索引文件具有 b-tree 的最左前綴匹配特性,如果左邊的值未確定,那么無(wú)法使用此索引。 【推薦】如果有order by的場(chǎng)景,請(qǐng)注意利用索引的有序性。order by 最后的字段是組合 索引的一部分,并且放在索引組合順序的最后,避免出現(xiàn)file_sort的情況,影響查詢性能。 正例:where a=? and b=? order by c; 索引:a_b_c 反例:索引如果存在范圍查詢,那么索引有序性無(wú)法利用,如:where a>10 order by b; 索引a_b 無(wú) 法排序。 【推薦】利用覆蓋索引來(lái)進(jìn)行查詢操作,避免回表。 說(shuō)明:如果一本書(shū)需要知道第 11 章是什么標(biāo)題,會(huì)翻開(kāi)第 11 章對(duì)應(yīng)的那一頁(yè)嗎?目錄瀏覽一下就好,這 個(gè)目錄就是起到覆蓋索引的作用。 正例:能夠建立索引的種類(lèi)分為主鍵索引、唯一索引、普通索引三種,而覆蓋索引只是一種查詢的一種效 果,用 explain 的結(jié)果,extra列會(huì)出現(xiàn):using index。 【推薦】利用延遲關(guān)聯(lián)或者子查詢優(yōu)化超多分頁(yè)場(chǎng)景。 說(shuō)明:mysql 并不是跳過(guò) offset 行,而是取 offset+n 行,然后返回放棄前 offset 行,返回 n行,那當(dāng) offset 特別大的時(shí)候,效率就非常的低下,要么控制返回的總頁(yè)數(shù),要么對(duì)超過(guò)特定閾值的頁(yè)數(shù)進(jìn)行 sql 改寫(xiě)。 正例:先快速定位需要獲取的 id 段,然后再關(guān)聯(lián): select a.* from 表1 a, (select id from 表1 where 條件 limit 100000,20 ) b where a.id=b.id (三) sql語(yǔ)句 【強(qiáng)制】不要使用count(列名)或count(常量)來(lái)替代count(),count()是sql92定義的 標(biāo)準(zhǔn)統(tǒng)計(jì)行數(shù)的語(yǔ)法,跟數(shù)據(jù)庫(kù)無(wú)關(guān),跟null和非null無(wú)關(guān)。 說(shuō)明:count(*)會(huì)統(tǒng)計(jì)值為null 的行,而 count(列名)不會(huì)統(tǒng)計(jì)此列為 null 值的行。 【強(qiáng)制】count(distinct col) 計(jì)算該列除null之外的不重復(fù)行數(shù),注意 count(distinct col1, col2) 如果其中一列全為null,那么即使另一列有不同的值,也返回為0。 【強(qiáng)制】當(dāng)某一列的值全是null時(shí),count(col)的返回結(jié)果為0,但sum(col)的返回結(jié)果 為null,因此使用sum()時(shí)需注意npe問(wèn)題。 正例:使用如下方式來(lái)避免 sum的npe問(wèn)題:select ifnull(sum(column), 0) from table; 【強(qiáng)制】使用 isnull()來(lái)判斷是否為 null值。 說(shuō)明:null 與任何值的直接比較都為 null。 1) null<>null 的返回結(jié)果是 null,而不是 false。 2) null=null 的返回結(jié)果是 null,而不是true。 3) null<>1 的返回結(jié)果是 null,而不是 true。 【強(qiáng)制】代碼中寫(xiě)分頁(yè)查詢邏輯時(shí),若 count為0應(yīng)直接返回,避免執(zhí)行后面的分頁(yè)語(yǔ)句。 【強(qiáng)制】不得使用外鍵與級(jí)聯(lián),一切外鍵概念必須在應(yīng)用層解決。 說(shuō)明:以學(xué)生和成績(jī)的關(guān)系為例,學(xué)生表中的 student_id 是主鍵,那么成績(jī)表中的 student_id 則為外 鍵。如果更新學(xué)生表中的 student_id,同時(shí)觸發(fā)成績(jī)表中的 student_id 更新,即為級(jí)聯(lián)更新。外鍵與級(jí) 聯(lián)更新適用于單機(jī)低并發(fā),不適合分布式、高并發(fā)集群;級(jí)聯(lián)更新是強(qiáng)阻塞,存在數(shù)據(jù)庫(kù)更新風(fēng)暴的風(fēng) 險(xiǎn);外鍵影響數(shù)據(jù)庫(kù)的插入速度。 【強(qiáng)制】禁止使用存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程難以調(diào)試和擴(kuò)展,更沒(méi)有移植性。 【強(qiáng)制】數(shù)據(jù)訂正(特別是刪除、修改記錄操作)時(shí),要先 select,避免出現(xiàn)誤刪除,確認(rèn)無(wú) 誤才能執(zhí)行更新語(yǔ)句。 【推薦】in操作能避免則避免,若實(shí)在避免不了,需要仔細(xì)評(píng)估 in后邊的集合元素?cái)?shù)量,控 制在1000個(gè)之內(nèi) (四) orm映射 3. 【強(qiáng)制】不要用resultclass當(dāng)返回參數(shù),即使所有類(lèi)屬性名與數(shù)據(jù)庫(kù)字段一一對(duì)應(yīng),也需要 定義;反過(guò)來(lái),每一個(gè)表也必然有一個(gè)pojo類(lèi)與之對(duì)應(yīng)。 說(shuō)明:配置映射關(guān)系,使字段與 do類(lèi)解耦,方便維護(hù)。 【強(qiáng)制】sql.xml配置參數(shù)使用:#{},#param# 不要使用${} 此種方式容易出現(xiàn) sql注入。 【強(qiáng)制】不允許直接拿 hashmap與 hashtable作為查詢結(jié)果集的輸出。 說(shuō)明:resultclass=”hashtable”,會(huì)置入字段名和屬性值,但是值的類(lèi)型不可控。 發(fā)布者:全棧程序員棧長(zhǎng),轉(zhuǎn)載請(qǐng)注明出處:https://javaforall.cn/168267.html原文鏈接:https://javaforall.cn

google最新vr產(chǎn)品引虛擬旅行熱潮;被2.8億刀收購(gòu)的時(shí)光網(wǎng)要用科技改變命運(yùn) | 大數(shù)據(jù)周周看:

來(lái)源:數(shù)據(jù)猿 作者:abby 熱 點(diǎn) 微軟簽署最大規(guī)模能源購(gòu)買(mǎi)協(xié)議,全面提高數(shù)據(jù)中心能源使用率目前,隨著云服務(wù)、大數(shù)據(jù)等技術(shù)的普及,企業(yè)以及政府紛紛投入到了數(shù)據(jù)中心的建設(shè)工作中,但是隨之而來(lái)的能耗問(wèn)題卻已成為數(shù)據(jù)中心的發(fā)展瓶頸 達(dá)觀數(shù)據(jù)與磨鐵在內(nèi)多家小說(shuō)網(wǎng)站合作,網(wǎng)絡(luò)文學(xué)進(jìn)入“科技春天”近兩年來(lái),網(wǎng)絡(luò)文學(xué)進(jìn)入空前繁盛的階段,縱觀目前熱播的影視作品,有近80%皆改編自網(wǎng)絡(luò)文學(xué),其中《甄嬛傳》、《瑯琊榜》等更是成為現(xiàn)象級(jí)作品。 近日,達(dá)觀數(shù)據(jù)宣布與瀟湘書(shū)院、磨鐵中文網(wǎng)在內(nèi)的多家小說(shuō)網(wǎng)站達(dá)成合作,并為其提供基于人工智能、機(jī)器學(xué)習(xí)等技術(shù)的用戶行為挖掘與預(yù)測(cè)系統(tǒng),通過(guò)對(duì)文本數(shù)據(jù)的挖掘?qū)ふ移潆[藏規(guī)律,并提供智能搜索推薦服務(wù),從而提升小說(shuō)網(wǎng)站的運(yùn)營(yíng)效率 微信小程序引領(lǐng)的開(kāi)發(fā)熱,阿拉丁社區(qū)發(fā)布相關(guān)數(shù)據(jù)統(tǒng)計(jì)分析工具前不久,隨著微信小程序的公測(cè),一連串與之相關(guān)的第三方工具應(yīng)運(yùn)而生,例如火速移動(dòng)、小云社區(qū)等等。 ,致力于大型計(jì)算機(jī)信息系統(tǒng)網(wǎng)絡(luò)安全和數(shù)據(jù)系統(tǒng)安全建設(shè)與服務(wù),主要經(jīng)營(yíng)范圍包括云服務(wù)中心、數(shù)據(jù)中心、大數(shù)據(jù)平臺(tái)、數(shù)據(jù)共享服務(wù)等。

【ai世界杯15強(qiáng)決戰(zhàn)】中美英日德法印等15國(guó)戰(zhàn)略大曝光:

具體說(shuō),“三年行動(dòng)計(jì)劃”推進(jìn)四項(xiàng)主要任務(wù):(1)專(zhuān)注于開(kāi)發(fā)智能和網(wǎng)絡(luò)化產(chǎn)品,如車(chē)輛、服務(wù)機(jī)器人和識(shí)別系統(tǒng);(2)強(qiáng)調(diào)開(kāi)發(fā)支持ai的系統(tǒng),包括智能傳感器和神經(jīng)網(wǎng)絡(luò)芯片;(3)鼓勵(lì)智能制造的發(fā)展;(4)構(gòu)建行業(yè)訓(xùn)練資源庫(kù) 政府還宣布了進(jìn)一步開(kāi)放政府?dāng)?shù)據(jù)、試驗(yàn)監(jiān)管沙箱、加強(qiáng)網(wǎng)絡(luò)安全的舉措。歐盟委員會(huì):強(qiáng)調(diào)內(nèi)部合作,成立歐洲ai聯(lián)盟2018年4月,歐盟委員會(huì)通過(guò)了一份20頁(yè)的有關(guān)人工智能的文件,列出了歐盟對(duì)人工智能的方法。 雖然不是正式的人工智能戰(zhàn)略,但德國(guó)已經(jīng)制定了一系列政策和舉措,這些政策和舉措相當(dāng)于事實(shí)上的戰(zhàn)略。政府主要與學(xué)術(shù)界和工業(yè)界參與者合作,致力于將人工智能技術(shù)融入德國(guó)的出口行業(yè)。 報(bào)告還建議在每個(gè)core和ictai建立一個(gè)道德委員會(huì)聯(lián)盟,制定關(guān)于隱私、安全和道德的行業(yè)指南,建立國(guó)家ai市場(chǎng)以增加市場(chǎng)發(fā)現(xiàn)并減少收集數(shù)據(jù)的時(shí)間和成本,以及一些幫助整體勞動(dòng)力獲得技能的舉措。 該戰(zhàn)略最重要的是工業(yè)化路線圖,將ai作為一項(xiàng)服務(wù),并將人工智能的發(fā)展分為三個(gè)階段:(1)各個(gè)領(lǐng)域的數(shù)據(jù)驅(qū)動(dòng)的ai的利用;(2)各個(gè)領(lǐng)域ai的公共使用和數(shù)據(jù)開(kāi)發(fā),以及(3)創(chuàng)建各個(gè)領(lǐng)域連接的生態(tài)系統(tǒng)。

美國(guó)最嚴(yán)技術(shù)出口管制,中國(guó)芯片大軍轉(zhuǎn)向歐羅巴:

不過(guò),隨著歐洲監(jiān)管政策收緊,這扇窗口隨時(shí)可能關(guān)閉。風(fēng)頭轉(zhuǎn)向歐羅巴。 但憂心的事情也即將到來(lái):隨著歐洲各國(guó)政府與美國(guó)政府一道對(duì)此類(lèi)交易采取更強(qiáng)硬的立場(chǎng),這種趨勢(shì)可能不會(huì)持續(xù)下去,中國(guó)半導(dǎo)體在歐洲的交易更像是“末日狂歡”。中國(guó)芯片的全球并購(gòu)?fù)顿Y該走向何方? 芯片不再是創(chuàng)業(yè)公司的機(jī)會(huì),中國(guó)的技術(shù)巨頭們:如阿里巴巴、百度和華為都在集中自己的力量做芯片。此外,隨著人工智能的興起,讓中國(guó)在處理器領(lǐng)域?qū)崿F(xiàn)彎道超車(chē)獲得了絕佳的機(jī)遇。 有跡象顯示,隨著歐洲各國(guó)政府加大對(duì)海外交易的投資審查力度,投資者轉(zhuǎn)向歐洲的趨勢(shì)可能是短暫的。例如,就在本周,德國(guó)政府收緊了對(duì)非歐洲企業(yè)收購(gòu)德國(guó)企業(yè)的規(guī)定。 目前,他認(rèn)為從中國(guó)投資者那里籌集資金沒(méi)有任何問(wèn)題?!爱?dāng)我們談?wù)撏顿Y時(shí),唯一的風(fēng)險(xiǎn)就是歐洲外國(guó)投資委員會(huì)的變動(dòng)。到目前為止,我們還沒(méi)有看到這種風(fēng)險(xiǎn),但監(jiān)管政策可能在一夜之間改變?!?br>
英研究人員利用ai監(jiān)測(cè)預(yù)防城市洪水:

首先,研究人員從高分辨率城市洪水計(jì)算機(jī)模型開(kāi)始,著手開(kāi)發(fā)早期洪水探測(cè)系統(tǒng)。模型結(jié)果需經(jīng)數(shù)據(jù)驗(yàn)證,從而保證其可靠性,但經(jīng)過(guò)三個(gè)月的數(shù)據(jù)采集,研究人員卻空手而歸。 其次,研究人員計(jì)劃用基于物理學(xué)的洪泛模型來(lái)更新他們的模型,來(lái)預(yù)測(cè)洪水發(fā)展。衛(wèi)星遙感價(jià)格昂貴,且在城市地區(qū)經(jīng)常受到技術(shù)問(wèn)題的影響,而地面?zhèn)鞲衅骶W(wǎng)絡(luò)的安裝和維護(hù)成本很高。 即使是最常見(jiàn)的方法,政府工作人員的目擊調(diào)查也不在預(yù)算之內(nèi)。于是,研究人員將推特和眾包應(yīng)用程序mycoast作為替代方案,用來(lái)收集侵蝕和潮汐等海岸條件的數(shù)據(jù)。 利用這一替代方案進(jìn)行數(shù)據(jù)收集的步驟如下:(1)掃描推特上的“洪水”、“水壩”和“堤壩”等關(guān)鍵詞,識(shí)別洪水相關(guān)事件。 有了這些工具,他們希望能在潛在的洪水問(wèn)題上發(fā)揮積極的作用。這項(xiàng)研究近期已在《計(jì)算機(jī)與地球科學(xué)》雜志上發(fā)刊。(實(shí)習(xí)編譯:蔡萬(wàn)爽 審稿:李宗澤)

轉(zhuǎn)載請(qǐng)注明出處,本站網(wǎng)址:http://www.nds518.com/news_2017.html
相關(guān)推薦
熱門(mén)TAG

常德做網(wǎng)站 廣東哪家網(wǎng)站制作公司好 福田區(qū)做網(wǎng)站 伽師縣網(wǎng)站設(shè)計(jì) 峨邊彝族自治縣網(wǎng)站建設(shè) 云南SEO網(wǎng)站優(yōu)化 便宜的網(wǎng)站建設(shè)公司 山海關(guān)企業(yè)網(wǎng)站開(kāi)發(fā) 西安網(wǎng)站建設(shè)公司 市轄區(qū)SEO網(wǎng)站優(yōu)化 富寧做網(wǎng)站 渝北區(qū)公司網(wǎng)站建設(shè) seo服務(wù)網(wǎng)站 新蕪區(qū)自助建站 鞍山網(wǎng)站開(kāi)發(fā) 網(wǎng)站制作策劃 南芬政府公文系統(tǒng) 網(wǎng)站怎么優(yōu)化seo 靈武市網(wǎng)頁(yè)設(shè)計(jì) 磴口做網(wǎng)站 海林市政務(wù)OA 萬(wàn)盛區(qū)SEO網(wǎng)站優(yōu)化 東莞網(wǎng)站制作的公司 建一個(gè)網(wǎng)站的步驟 網(wǎng)站優(yōu)化排名公司 涉 縣自助建站 潁上縣網(wǎng)站設(shè)計(jì) 武進(jìn)區(qū)網(wǎng)頁(yè)設(shè)計(jì) 蘇尼特右旗公司網(wǎng)站建設(shè) 吳橋SEO網(wǎng)站優(yōu)化 好建站 濟(jì)陽(yáng)縣網(wǎng)站設(shè)計(jì) 新田縣SEO網(wǎng)站優(yōu)化 平山網(wǎng)頁(yè)設(shè)計(jì) 市轄區(qū)自助建站 沙依巴克區(qū)網(wǎng)站設(shè)計(jì) 天門(mén)市做網(wǎng)站 富拉爾基區(qū)政務(wù)OA 市轄區(qū)政府辦公oa系統(tǒng) 漢中SEO網(wǎng)站優(yōu)化 北京旅游網(wǎng)站建設(shè) 內(nèi)鄉(xiāng)縣做網(wǎng)站 古冶網(wǎng)站建設(shè) 蒲城縣SEO網(wǎng)站優(yōu)化 seo公司 北京 本溪網(wǎng)站制作 方城縣政務(wù)oa系統(tǒng) 市轄區(qū)企業(yè)網(wǎng)站開(kāi)發(fā) 普蘭店網(wǎng)站建設(shè) 新興縣網(wǎng)站建設(shè) 沈陽(yáng)企業(yè)自助建站系統(tǒng) 北安市政府公文系統(tǒng) 遵義網(wǎng)頁(yè)設(shè)計(jì) 燈塔政府oa系統(tǒng) 吉木乃縣做網(wǎng)站 臨汾網(wǎng)站建設(shè) 應(yīng)城市網(wǎng)站設(shè)計(jì) 洞口縣SEO網(wǎng)站優(yōu)化 渭源縣做網(wǎng)站 浮梁縣網(wǎng)頁(yè)設(shè)計(jì) 江永縣網(wǎng)站設(shè)計(jì) 遂川縣自助建站 羅甸縣政府辦公oa系統(tǒng) 霍山縣人民政府電話 市中區(qū)網(wǎng)站設(shè)計(jì) 武定網(wǎng)頁(yè)設(shè)計(jì) 岳陽(yáng)縣SEO網(wǎng)站優(yōu)化 吉林公司網(wǎng)站建設(shè) 沂源縣網(wǎng)頁(yè)設(shè)計(jì) 容 縣自助建站 荔波縣網(wǎng)站建設(shè) 好的建站網(wǎng)站 梧州網(wǎng)站建設(shè) 曲松縣自助建站 寶雞政務(wù)oa系統(tǒng) HR大數(shù)據(jù)分析與經(jīng)營(yíng)模擬決策平臺(tái)題目