国产美女精品自在线拍照片,欧美人与兽,欧美成人高清在线播放,欧美成人精品三级网站,两个人免费完整在线观看直播

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

時(shí)間:2024-11-27 15:01:14 信創(chuàng)OA資訊首頁


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

在西方國家的云存儲(chǔ)服務(wù)紛紛在俄羅斯切斷業(yè)務(wù)關(guān)系之后,所有俄羅斯公司都因受到制裁而被迫轉(zhuǎn)向國內(nèi)云存儲(chǔ)服務(wù)提供商。 由于俄羅斯境內(nèi)沒有足夠的數(shù)據(jù)中心來滿足地方運(yùn)營商的需求,這造成了一個(gè)無法克服的實(shí)際問題。因此,俄羅斯需要一種全國性的解決辦法來應(yīng)對(duì)這場存儲(chǔ)危機(jī)。 另一個(gè)有望釋放存儲(chǔ)空間的舉措是,要求isp們擯棄消耗寶貴資源的流媒體服務(wù)及其他在線娛樂平臺(tái)。 第三條路子是,可以選擇從國內(nèi)數(shù)據(jù)處理中心購買所有的可用存儲(chǔ)空間。 然而,這可能會(huì)給需要額外存儲(chǔ)空間以添加服務(wù)和內(nèi)容的娛樂提供商帶來進(jìn)一步的問題。 俄羅斯還在考慮要不要沒收已撤出俄羅斯的那些公司留下的it服務(wù)器和存儲(chǔ)資源,并將它們整合到公共基礎(chǔ)設(shè)施中。 據(jù)當(dāng)?shù)孛襟w報(bào)道,數(shù)字發(fā)展部目前正在分析:如果政府頒布這類政策,有望提供多少的可用資源。如果一套加快進(jìn)程的程序足以支持關(guān)鍵政府部門的運(yùn)作,相關(guā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è)比較專業(yè)的問題。 企業(yè)的it技術(shù)人員在給應(yīng)用系統(tǒng)進(jìn)行本地服務(wù)網(wǎng)格搭建的時(shí)候,首先應(yīng)該選擇一款好用的服務(wù)網(wǎng)格軟件,這些軟件大部分都是開源軟件,可以幫助技術(shù)人員在二次開發(fā)上面擴(kuò)展一些全新的功能。 了解了本地服務(wù)網(wǎng)格怎么搭建之后,再來了解一下服務(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è)政府部門也在積極尋求智能化管理轉(zhuǎn)型升級(jí)的有效路徑,但過程中依然面臨著如政務(wù)信息共享難、數(shù)據(jù)資源整合難 首先,soda理事會(huì)理事、蘇打數(shù)據(jù)ceo高豐分享了政府?dāng)?shù)據(jù)開放創(chuàng)新生態(tài)的探索和經(jīng)驗(yàn),他表示,生態(tài)建設(shè)需要數(shù)據(jù)的流通和協(xié)同,流通起來的數(shù)據(jù)可以幫助供需雙方更好地去解讀社會(huì)問題和城市問題,解讀了之后,才能有針對(duì)去做創(chuàng)新 他說:“大數(shù)據(jù)企業(yè)要不斷創(chuàng)新應(yīng)用,找到更多更合適的應(yīng)用場景,政府、企業(yè)乃至每個(gè)人才能享受到社會(huì)信用體系帶來的便利。” 藍(lán)燈數(shù)據(jù)董事長 周強(qiáng)隨著人類的生產(chǎn)生活方式及社會(huì)管理方式向著“智慧”的方向發(fā)展,城市管理及公安機(jī)關(guān)的警務(wù)管理也正朝著一種新的形態(tài)演變。 夢創(chuàng)雙楊大數(shù)據(jù)負(fù)責(zé)人 杜國寧最后,夢創(chuàng)雙楊大數(shù)據(jù)負(fù)責(zé)人杜國寧以《產(chǎn)融大數(shù)據(jù)助力”雙創(chuàng)”快速發(fā)展》為主題,分享了精彩的內(nèi)容。

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

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

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

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

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

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

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

具體說,“三年行動(dòng)計(jì)劃”推進(jìn)四項(xiàng)主要任務(wù):(1)專注于開發(fā)智能和網(wǎng)絡(luò)化產(chǎn)品,如車輛、服務(wù)機(jī)器人和識(shí)別系統(tǒng);(2)強(qiáng)調(diào)開發(fā)支持ai的系統(tǒng),包括智能傳感器和神經(jīng)網(wǎng)絡(luò)芯片;(3)鼓勵(lì)智能制造的發(fā)展;(4)構(gòu)建行業(yè)訓(xùn)練資源庫 政府還宣布了進(jìn)一步開放政府?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ì)通過了一份20頁的有關(guān)人工智能的文件,列出了歐盟對(duì)人工智能的方法。 雖然不是正式的人工智能戰(zhàn)略,但德國已經(jīng)制定了一系列政策和舉措,這些政策和舉措相當(dāng)于事實(shí)上的戰(zhàn)略。政府主要與學(xué)術(shù)界和工業(yè)界參與者合作,致力于將人工智能技術(shù)融入德國的出口行業(yè)。 報(bào)告還建議在每個(gè)core和ictai建立一個(gè)道德委員會(huì)聯(lián)盟,制定關(guān)于隱私、安全和道德的行業(yè)指南,建立國家ai市場以增加市場發(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ù)開發(fā),以及(3)創(chuàng)建各個(gè)領(lǐng)域連接的生態(tài)系統(tǒng)。

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

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

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

轉(zhuǎn)載請注明出處,本站網(wǎng)址:http://www.opentechcloud.com/news_2017.html
相關(guān)推薦