這3台中型SUV一出來,什麼奔馳寶馬統統得靠邊

頂配的3。6T版本4。8 S的百公里加速性能更是令人折服。當然,300mm的涉水深度令人匪夷所思。而中控台上的空白按鍵時刻在提醒你:囊中羞澀以致某項配置未能選裝。此外,保時捷的售價就像你跟媽媽說晚上9點準時回家一樣不靠譜。

2018北京車展於4.25正式拉開帷幕,因工作關係得以參与這場人山人海的車界盛會。在車展上,除了各大傳統車企紛紛推出SUV新品外,諸多造車新勢力所亮相或展示的車型也是SUV為多,由此可見SUV的市場熱度一直未曾消減。

那些展出的SUV近乎都是:外觀愈發年輕、愈加運動“猙獰”,再難覓得一平庸之輩。若是將它們置於三五年前,必定都是明星車型。可在同質化異常嚴重的當下,已鮮有車型能在這股趨於一致的“年輕運動”的SUV洪流之中脫穎而出。

當然,也有例外。這幾款集情懷、血統、顏值、性能於一身的“尤物”備受青睞。

點評:一貫擅長打造英倫優雅紳士風的捷豹,強盛的藝術生命力在這款SUV上得以延續,俊朗精緻的外觀頗有幾分F-TYpE的神韻。年度風雲車、年度最佳設計等大獎便是對這走在時尚尖端寵兒的肯定。在老東家福特的EcoBoost 2.0T替換為自家的Ingenium 2.0T(2018沃德十佳發動機之一)后,性格變得愈加“狂豹”,低沉的聲浪時刻撩撥着駕駛者的慾望;早已滲透骨子里的獨特基因,令其在拐彎抹角的山間道路中犹如一隻飛馳的野豹。

點評:在卡宴身上嘗得SUV甜頭后,保時捷推出與老款Q5共享MLB平台(新款Q5L出自MLB EVO平台)的另一搖錢樹—Macan。萬年不變的青蛙臉令人百看不厭;跑車基因的加持,操控性能自然是無與倫比;頂配的3.6T版本4.8 S的百公里加速性能更是令人折服。當然,300mm的涉水深度令人匪夷所思;而中控台上的空白按鍵時刻在提醒你:囊中羞澀以致某項配置未能選裝。此外,保時捷的售價就像你跟媽媽說晚上9點準時回家一樣不靠譜。

點評:作為阿爾法羅密歐品牌百年歷史中第一款SUV產品,意大利人對藝術獨到的見解與對性能的痴迷在其身上得以極佳體現。精準的轉向、汽車愛好者極易上手的完美操控、恰到好處的零百以及超高的彎道極限令人愛不釋手。在北京車展上完成亞洲首秀的Stelvio QV版本更是紐北最快量產SUV圈速的記錄保持者。只是FCA的尿性,大家心照不宣,難怪有媒體朋友曾言:等我有錢了,就買它個兩台,一台修理一台開。

俗語言:逆水行舟,不進則退。在主流的市場里,品牌的差異性將變得越來越小,不論是國際品牌還是本土品牌。因此,“變通”是明智的生存之道。多數人認為保時捷、阿爾法羅密歐等豪華品牌推出SUV獲取更大市場份額意味着喪失了品牌的獨有特質。

但恰恰是這種“變通”,洞察出市場真正的需求點,才讓人看到更多好看的皮囊,感受到更多有趣的靈魂。畢竟只有存活下來,才能讓自身的基因得到延續。如果保時捷只生產跑車,捷豹只生產轎車,我們將錯過多少“尤物”呢?本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※台北網頁設計公司全省服務真心推薦

※想知道最厲害的網頁設計公司"嚨底家"!

※推薦評價好的iphone維修中心

想買車?看完最低9.9萬起的這6款全新SUV就可以下單了

我們再一起來回顧一下吧現代ENCINO是一款以性能著稱的小型SUV,搭載1。6T渦輪增壓發動機和雙離合器變速箱作為動力總成,177匹馬力的賬面參數也是十分誘人,配合上個性張揚的外觀設計和尚且不貴的售價,現代ENCINO要成為未來年輕人的首選車型的決心顯而易見。

《後來的我們》上映不久票房已超過10億,

繼《前任3》后又再一次給了年輕人5條建議:

1.如果結婚就要找愛你的

2.千萬別輸在“等”這個字身上

3.永遠留住30%的神秘

4.如何才能配得上你的伴侶?

關注玩車是

走向人生巔峰迎娶白富美嫁給高富帥的前提噢!

5.牢記第4條,前3條沒什麼用…

好吧,皮了一下,我們說回正事吧

看看了5月或將上市的車,

心想:除了個別車型,毫無驚喜!

這跟4月份的新車比起來,差距可不是一點點啊

起碼,全新的SUV,就有6款重磅新車了

不是改款,不是換代,

這幾款都是扎紮實實的新車、新SUV噢!

我們再一起來回顧一下吧

現代ENCINO是一款以性能著稱的小型SUV,搭載1.6T渦輪增壓發動機和雙離合器變速箱作為動力總成,177匹馬力的賬面參數也是十分誘人,配合上個性張揚的外觀設計和尚且不貴的售價,現代ENCINO要成為未來年輕人的首選車型的決心顯而易見。

威馬EX5是一款非常具有市場潛力的電動SUV,雖然是新品牌下的新車型,但是威馬公司背後的技術背書和他們自建工廠的生產方式讓他們的品牌形象顯得十分靠譜。而威馬EX5的實車已經正式上市,在2018年下半年就可以正式交付,EX5的設計非常符合大眾審美,屬於十分耐看的一款車型,而且續航里程可以達到400多公里的動力特性,也讓它十分有成為一二線限行城市的熱銷車型的潛力。

自主品牌非承載式SUV對於普通消費者來說更像是一個要麼廉價,要麼粗糙的存在。但是榮威RX8的上市便打破了這一種的傳統認知,榮威RX8的非承載式SUV和全時四驅的特性讓它有着比較出色的越野能力,而且定位豪華的RX8在內飾氛圍的設計上融入了非常多的木紋飾板和檔次感出眾的軟質材料,讓整車的檔次感顯現地非常到位。

對於越野有需求的消費者,或許就在途達上市以後有了新的選擇,非承載式車身,分時四驅,二十五萬以內的頂配售價,這些特點都在表明途達是一款可以入門越野圈的新車;而且久經市場考驗的動力總成更讓它的可靠性有所保障,雖然內飾設計相對廉價,但是對於追求更多在嚴苛環境下有靠譜表現的消費者來說,途達的產品力正是他們想要的。

Jeep在中國市場上的發力趨勢愈發明顯,相繼自由光,指南者這類車型在國內市場獲得一定成功以後,現如今又推出了一款中國特供的中型SUV,大指揮官。雖然這款車型是一款低於大切諾基的中型SUV,但是它的外觀與內飾設計,配置供給與裝配工藝等等方面都基本上稱得上是現如今合資國產的Jeep車型中的旗艦。售價區間與漢蘭達,銳界等車型有着高度重合,未來中型7座SUV中的強有力競爭者勢必將會多出大指揮官的身影。

GLC和Q5在BBA的豪華中型SUV市場稱雄已久,操控大師寶馬也就看不過眼了,華晨寶馬X3正式在中國上市,都說它沒有加長會影響車內空間,但其實這款車型換代后本就有了一定車身尺寸上的增加,所以空間並不是什麼硬傷,相反,更原汁原味的引入國產化后的Q3勢必會成為BBA中型SUV中最具運動基因的一款車型,而廣大寶馬迷們在X3上市以後也必定有了更為接地氣和更實惠的車型備選方案。

怎麼樣,這幾款新SUV很吸引吧~

感興趣的話不妨去4S店看看實車噢本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

15萬買啥車?有轎車有SUV,這2款合資車可以放心買

勁客的優勢在於成熟可靠的動力總成,採用1。5L自然吸氣發動機+CVT無級變速器的搭配能夠帶來非常平順線性的輸出,油門調校靈敏,能夠很好地應付日常市區內行駛,並且也非常省油,可靠性較高。不過其檔次感與配置水平不如哈弗H2。

15萬左右比較推薦的是本田XR-V與豐田卡羅拉,這兩款車目前在市場上都有着不錯的銷量、保值率以及口碑,XR-V在小型SUV市場混得風生水起,靠的就是其成熟的動力系統和越級的空間表現,家用是個非常棒的選擇。而卡羅拉乃全球銷量神車,中庸就是其最大的武器,除了汽油版本外還有雙擎版本可選,擁有非常優秀的燃油經濟性,能夠滿足許許多多的消費者,除了隔音濾振差點,其它方面的表現都非常不錯,乃家用車的不二之選。

一輛是接近中型車的緊湊型車,一輛是標準的中型車,凌渡280DSG豪華版擁有更加豐富的配置,不過因為其比較扁平的設計所以頭部空間表現一般,而君威中型車的身份自然擁有更大的空間以及更高的檔次感,同時全系標配9AT也讓其競爭力進一步上升,採用的1.5T發動機也有着不錯的動力輸出,因此更推薦君威1.5T中配。

510採用的是6擋手動變速器和5擋AMT變速器,假設會開手動擋的話更加推薦手動車型,6個擋位在高速行駛時把轉速壓得更低,能帶來更好的燃油經濟性,同時擁有更高的傳動效率及可靠性,510的手動擋換擋手感不錯,有吸入感並且行程不長,離合器的力度也不沉,沒那麼容易疲勞。而AMT變速器雖然說省去了踩離合器的麻煩,但是其換擋邏輯不清晰,而且頓挫比較嚴重,尤其是在起步階段或者是在堵車狀況下,因此更加推薦510的手動版車型。

兩車都是定位小型SUV,哈弗H2擁有更加親民的售價,更加大氣上檔次的外觀內飾設計,同時配置更加豐富,採用的1.5T發動機+7擋雙離合的搭配,擁有不錯的爆發力,但是雙離合變速器的邏輯有待提高,並且油耗也會偏高。

勁客的優勢在於成熟可靠的動力總成,採用1.5L自然吸氣發動機+CVT無級變速器的搭配能夠帶來非常平順線性的輸出,油門調校靈敏,能夠很好地應付日常市區內行駛,並且也非常省油,可靠性較高。不過其檔次感與配置水平不如哈弗H2。

綜上,假如你預算充足的話,更加建議購買勁客的中配以上車型,而預算不是很足的話,那麼家用選擇H2是一個非常具有性價比的選擇。

2018款飛度新增了運動套件車型,不過在配置方面還是一如既往的寒酸,比較推薦指導價為8.88萬的1.5L CVT潮跑版,在配置上面擁有主/副駕駛座安全氣囊、運動外觀套件、行車電腦显示屏、前霧燈等,類似比較常用的电子車身穩定系統、駐車雷達要到頂配才配備,但是飛度的動力和空間還是非常不錯的,1.5L自吸發動機就能爆發出131匹馬力,日常市區駕駛毫無壓力,加上本田“MM”理念,讓它的空間能夠滿足大多數人的使用需求,市面上大量的改裝件也能讓每位飛度車主把愛車改成獨一無二的樣子。

以上就是本期網友問答欄目的全部內容,假如你也想上牆的話,點擊下方留言留下你的問題並且點個贊,就有機會在下期欄目看見你的身影!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

網頁設計最專業,超強功能平台可客製化

容器技術之Docker資源限制

  上一篇我們聊到了docker容器的單機編排工具docker-compose的簡單使用,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/13121678.html;今天我們主要來聊一聊docker容器的資源限制;通常情況下我們啟動一個docker容器,其內存和CPU都是同宿主機一樣大,這意味着該容器和宿主機共享相同大小的內存和CPU資源;這樣一來容器正常情況下沒有什麼問題,假如容器里運行的進程特別愛吃內存,很可能存在把宿主機上的內存全部吃掉,觸發內核OOM,從而導致docker daemon直接被內核殺死;為了避免這樣的尷尬局面,對啟動容器我們有必要對容器的資源進行限制;

  所謂OOM就是當系統上的應用申請內存資源時,發現申請不到內存,這個時候Linux內核就會啟動OOM,內核將給系統上的所有進程進行評分,通過評分得分最高的進程就會被系統第一個幹掉,從而騰出一些內存空間,如果騰出的內存空間還是不夠該應用使用,它會繼續殺得分第二高的,直到應用有足夠的內存使用;一旦發生OOM,任何進程都有可能被殺死,包括docker daemon在內,為此,docker特定調整了docker daemon的oom優先級,以免發生oom被內核殺死,但是容器的oom優先級並未做任何調整;

  那麼對於內存資源來講,在啟動為容器時,我們可以通過一些選項來指定容器的內存相關設置;如下圖

  提示:-m 或 –memory 用來指定容器最大能夠使用的內存大小,默認情況不指定表示共享物理宿主機的內存大小;–memory-swap 用來指定容器的內存和交換內存的總大小;對於這個參數的取值比較詭異;待會在說吧;–memory-swappiness該選項用來指定容器使用交換內存的傾向性,swap啟用有個好處就是在內存不夠使用的情況,它可以臨時頂替一部分,但是性能會急劇下降;所以数字越大越早使用交換內存,数字越小越晚使用交換內存,取值在0-100之間;0不代表不是用交換內存,0表示能不用交換內存,則不用,但是在迫不得已的情況還是會使用的,100表示只要有一絲可以使用交換內存的希望,就使用交換內存;通常情況在運行容器的主機上不建議使用swap設備;swap交換分區如果一旦被激活,系統性能會急劇下降,建議直接禁用;–memory-reservation該選項用來指定給系統保留的內存空間大小;–kernel-memory用來指定給內核保留的內存大小;–oom-kill-disable該選項用於指定當發生oom時,是否禁用因oom而殺死該容器進程;

  提示:通常情況–memory-swap這個選項必須同–memory選項一起使用,不可用單獨使用;

  示例:限制容器使用最大內存為256M

[root@docker_registry ~]# docker run --name test --rm -m 256M lorel/docker-stress-ng --vm 2

  提示:以上命令表示啟動一個名為test的容器,限制該容器最大使用內存大小為256M;lorel/docker-stress-ng這個進行用來壓測容器;–vm表示同時使用多少進程來做壓測;

  驗證:用docker stats看看我們啟動test容器是否只能使用256M內存?

  提示:從上面的結果可以看到,在我們啟動容器時,使用-m指定內存大小的容器limit的值就是我們指定的值,而對於沒有用-m指定的容器,默認就是同宿主機內存大小一樣;

  對於CPU來講,默認情況啟動容器時,不限制CPU的資源,此時容器是共享宿主機的CPU資源,也就是說默認情況宿主機上有幾顆cpu核心,啟動的容器就有多少顆核心;對於CPU這種可壓縮資源,不會像內存那樣,如果CPU滿載,也不會導致某個容器崩潰,原因是因為cpu是可壓縮資源;而不同於內存,內存屬於不可壓縮資源,如果申請不到內存,就會出現異常,出現oom;對啟動容器來限制cpu資源,通常也是使用選項來限定;如下圖

  提示:–cpus用來指定容器能夠使用的最大cpu核心數,例如–cpus=1.5,就表示該容器最大能夠使用1.5核的CPU資源,如果宿主機上有4顆CPU核心,那麼該容器最多可把1.5顆核心跑滿;這樣說吧,如果宿主機上有4顆核心,那麼該容器如果使用–cpus限定為1.5,那麼該容器就只能使用宿主機上的百分之150的核心;–cpu-period 和–cpu-quota該選項在docker1.13以後基本廢棄;–cpuset-cpus該選項用於指定容器能夠在哪些CPU上運行;如果宿主機上有4顆CPU,–cpuset-cpus=2,3就表示該容器只能使用第2號cpu和第3號cpu;–cpu-shares該選項用於指定容器使用cpu的比例;比如宿主機上只有一個容器,而該容器啟動時指定–cpu-shares=1024,則表示,如果沒有其他容器,則它可以使用宿主機上的所有cpu資源,如果有第二個容器啟動時,指定cpu-shares=512,那麼第一個容器會從原來使用整個宿主機的cpu變為使用整個宿主機的cpu的2/3;以此類推,如果有第三個,第四個,他們使用cpu資源都是按照給定的比例動態調整;

  示例:第一個容器使用–cpu-shares=256;第二個容器使用–cpu-shares=512,看看當第一個容器啟動后,看看cpu使用情況,然後第二個容器啟動后再看看cpu使用情況

  提示:可以看到當第一個容器啟動時,雖然設置的cpu-shares=256,但是它還是把所有核心幾乎都跑滿了;我們在跑一個容器看看,看看第二個容器啟動后,第一個容器的cpu使用情況是否有變化?

  提示:從上面的結果看,t1和t2的cpu使用比例大概是1比2;總量還是400%並沒有變化;

  示例:設置容器使用1.5個CPU核心

  提示:從上面的結果可以看到使用–cpus來限定容器使用的CPU資源,默認它會在每顆黑核心上都要使用一部分,但是重量不會超過150%;

  示例:限定容器使用CPU核心,只能在0號和3號核心上使用;

  提示:從上面的結果可以看到,限定t1容器只能使用0號和3號CPU后,1號和2號就基本不會被使用,總量也不會增加;

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※台北網頁設計公司全省服務真心推薦

※想知道最厲害的網頁設計公司"嚨底家"!

※推薦評價好的iphone維修中心

小師妹學JVM之:GC的垃圾回收算法

目錄

  • 簡介
  • 對象的生命周期
  • 垃圾回收算法
    • Mark and sweep
    • Concurrent mark sweep (CMS)
    • Serial garbage collection
    • Parallel garbage collection
    • G1 garbage collection
    • Z Garbage Collection
  • 怎麼選擇
  • 總結

簡介

JVM的重要性不言而喻了,如果把java的應用程序比作一輛跑車,那麼JVM就是這輛車的發動機,沒有它,java程序就成了空中樓閣,無根浮萍。而在JVM中有一塊內存區域叫做運行時數據區域,存儲了運行時所需要的所有對象,而Heap Area則是其中最大的一塊。

內存畢竟不是無限的,所以就需要一種機制來將不再使用的對象進行回收,這種機制就是今天我們要講的GC。

更多精彩內容且看:

  • 區塊鏈從入門到放棄系列教程-涵蓋密碼學,超級賬本,以太坊,Libra,比特幣等持續更新
  • Spring Boot 2.X系列教程:七天從無到有掌握Spring Boot-持續更新
  • Spring 5.X系列教程:滿足你對Spring5的一切想象-持續更新
  • java程序員從小工到專家成神之路(2020版)-持續更新中,附詳細文章教程

對象的生命周期

小師妹:F師兄,你相信這個世界有輪迴嗎?

師兄我是一個堅定的無神論者,活在當下就好了,何必操心後面的輪迴呢?

小師妹:F師兄,這個你就不懂了,意識是組成腦的原子群的一種組合模式,我們大腦的物質基礎和一塊石頭沒有什麼不同。當我們掌握大腦的組合方式,然後重構,我們的意識就重現了,這就是輪迴。這可是量子理論中提到的觀念哦。

哇,小師妹什麼時候這麼厲害了,都開始探討這麼高深的話題了。F師兄我實在是跟不上節奏啊。

小師妹,F師兄,我是怕你尷尬,想引出java對象的生命周期這個話題嘛。

量子理論我不熟,java對象我還沒怕過誰。

對象的生命周期其實很簡單:創建,使用中,最後被銷毀。

  1. 創建對象

舉個最簡單的創建對象的例子:

Object obj = new Object();

對象創建的時候,將會為該對象分配特定的空間。

  1. 使用對象

對象創建之後,就可以被其他的對象使用,如果其他的對象有使用該對象,那麼我們成為該對象被引用了。

  1. 對象銷毀

當一個對象沒有被其他對象引用的時候,我們就稱為該對象可以被回收了。在Java中,對象的回收是由GC來負責的。

垃圾回收算法

小師妹:F師兄,我覺得垃圾回收好像挺簡單的,我們為每個對象維持一個指針計數器,每引用一次就加一,這樣不就可以實現垃圾回收器了嗎?

底層原理是這麼一個道理,但是JVM需要一種更加高效的算法來保證垃圾回收的效率,同時也不會影響正在運行的程序。

接下來我們將會介紹一下,在JVM中比較常用幾個垃圾回收算法:

Mark and sweep

Mark and sweep是最最簡單的垃圾回收算法,簡單點講,它可以分為兩個步驟:

  1. 標記live對象

標記live對象聽起來很簡單,就是掃描堆中的對象,看這些對象是否被引入。

但是這裡有一個問題,如果是兩個對象互相引用的時候,而這兩個對象實際上並沒有被外部的對象所引用,那麼這兩個對象其實是應該被回收的。所以我們還需要解決一個關鍵性的問題:從哪裡開始掃描的問題。

JVM定義了一些Root對象,從這些對象開始,找出他們引用的對象,組成一個對象圖。所有在這個圖裡面的對象都是有效的對象,反之不在對象圖中的對象就應該被回收。有效的對象將會被Mark為alive。

這些Root對象包括:正在執行的方法中的本地對象和輸入參數。活動的線程,加載類中的static字段和JNI引用。

注意,這種遍歷其實是有個缺點的,因為為了找到對象圖中哪些對象是live的,必須暫停整個應用程序,讓對象變成靜止狀態,這樣才能構建有效的對象圖。後面我們會介紹更加有效的垃圾回收算法。

  1. 刪除對象

掃描對象之後,我們就可以將未標記的對象刪除了。

刪除有三種方式,第一種方式是正常刪除。但是正常刪除會導致內存碎片的產生。所以第二種方式就是刪除之後進行壓縮,以減少內存碎片。還有一種方式叫做刪除拷貝,也就是說將alive的對象拷貝到新的內存區域,這樣同樣可以解決內存碎片的問題。

Concurrent mark sweep (CMS)

在講CMS之前,我們先講一下垃圾回收器中的Eden,Old和Survivor space幾個大家應該都很熟悉的分代技術。

Young Gen被劃分為1個Eden Space和2個Suvivor Space。當對象剛剛被創建的時候,是放在Eden space。垃圾回收的時候,會掃描Eden Space和一個Suvivor Space。如果在垃圾回收的時候發現Eden Space中的對象仍然有效,則會將其複製到另外一個Suvivor Space。

就這樣不斷的掃描,最後經過多次掃描發現任然有效的對象會被放入Old Gen表示其生命周期比較長,可以減少垃圾回收時間。

之後要將的幾個垃圾回收器,除了ZGC,其他都使用的是分代的技術。

好了,現在繼續講CMS,CMS是mark and swap的升級版本,它使用多個線程來對heap區域進行掃描,從而提升效率。

CMS在Young Generation中使用的是mark-copy,而在Old Generation主要使用的是mark-sweep。

使用CMS的命令很簡單:

-XX:+UseConcMarkSweepGC

上面是列出的一些CMS的調優參數。

Serial garbage collection

Serial garbage collection使用單一的線程來進行垃圾回收操作,其好處就是不需要和其他的線程進行交互。如果你是單核的CPU,那麼最好就是選擇Serial garbage collection,因為你不能充分利用多核的好處。同樣的它也常常用在比較小型的項目中。

Serial garbage collection在Young Generation中使用的是mark-copy,而在Old Generation主要使用的是 mark-sweep-compact。

下面是開啟命令:

-XX:+UseSerialGC

Parallel garbage collection

和serial GC類似,它在Young Generation中使用的是mark-copy,而在Old Generation主要使用的是 mark-sweep-compact。不同的是它是并行的。

可以通過下面的命令來指定併發的線程:

-XX:ParallelGCThreads=N

如果你是多核處理器,那麼Parallel GC可能是你的選擇。

Parallel GC是JDK8中的默認GC。而在JDK9之後, G1是默認的GC。

使用下面的命令來開啟Parallel GC:

-XX:+UseParallelGC

G1 garbage collection

為什麼叫G1呢,G1=Garbage First,它是為替換CMS而生的,最早出現在java7中。

G1將heap區域劃分成為多個更小的區域,每個小區域都被標記成為young generation 或者old generation。從而運行GC在更小的範圍里運行,而不是影響整個heap區域。

可以使用下面的命令來開啟:

-XX:+UseG1GC 

Z Garbage Collection

ZGC是一個可擴展的,低延遲的GC。ZGC是併發的,而且不需要停止正在運行的線程。

使用下面的命令來開啟:

 -XX:+UseZGC 

ZGC是在JDK11中被引入的。

怎麼選擇

小師妹:F師兄,你講了這麼多個GC,到底我該用哪個呢?

高射炮不能用來打蚊子,所以選擇合適的GC才是最終要的。這裏F師兄給你幾個建議:

  1. 如果你的應用程序內存本來就很小,那麼使用serial collector : -XX:+UseSerialGC.

  2. 如果你的程序運行在單核的CPU上,並且也沒有程序暫停時間的限制,那麼還是使用serial collector : -XX:+UseSerialGC.

  3. 如果對峰值期的性能要求比較高,但是對程序暫停時間沒多大的要求,那麼可以使用 parallel collector: -XX:+UseParallelGC。

  4. 如果更加關注響應時間,並且GC的對程序的暫停時間必須要小,那麼可以使用-XX:+UseG1GC。

  5. 如果響應時間非常重要,並且你在使用大容量的heap空間,那麼可以考慮使用ZGC: -XX:UseZGC。

總結

本文介紹了幾種GC的算法,大家可以根據需要選用。

本文作者:flydean程序那些事

本文鏈接:http://www.flydean.com/jvm-gc-algorithms/

本文來源:flydean的博客

歡迎關注我的公眾號:程序那些事,更多精彩等着您!

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

Node.js躬行記(4)——自建前端監控系統

  這套前端監控系統用到的技術棧是:React+MongoDB+Node.js+Koa2。將性能和錯誤量化。因為自己平時喜歡吃菠蘿,所以就取名叫菠蘿系統。其實在很早以前就有這個想法,當時已經實現了前端的參數搜集,只是後台遲遲沒有動手,也就拖着。

  • 目前完成的還只是個雛形,僅僅是搜集了錯誤和相關的性能參數。

  • 後台樣式採用了封裝過的matrix。

  • 分析功能還很薄弱,只是做了簡單的演示,並且各種基礎功能還有待完善。

  • 後面打算強化數據分析,並且還要實現錯誤的回放機制,思路的話以前也調研過,參考之前的一篇文章

  現在的這個系統還只能算是個玩具,後期還需要雕琢雕琢。下面是這套系統的目錄結構。

├── pingapple --------------------------------- 菠蘿監控系統
│   ├── client -------------------------------- 系統的前端部分
│   ├── sdk ----------------------------------- 信息搜集代碼庫
│   ├── server -------------------------------- 系統的後端部分

一、SDK

1)primus.js

  在之前的《前端頁面性能參數搜集》一文中,詳細記載了各類性能指標的計算規則,並整理到了primus.js中。

  本次將在primus.js的基礎上做適當的修改,包括刪除代理、測速、資源信息等功能,改變部分性能指標的計算規則,例如從瀏覽器發起HTTP請求算起,忽略瀏覽器重定向的時間等。

2)錯誤處理

  完善錯誤處理,將錯誤分成三類:runtime、load和Promise。在window的error事件中,處理前兩種錯誤。像img元素載入的圖片地址不存在,就會執行formatLoadError()函數;像變量未定義,就會執行formatRuntimerError()函數。

window.addEventListener("error", function (event) {
    var errorTarget = event.target;
    // 過濾 target 為 window 的異常
    if (
      errorTarget !== window &&
      errorTarget.nodeName &&
      LOAD_ERROR_TYPE[errorTarget.nodeName.toUpperCase()]
    ) {
      handleError(formatLoadError(errorTarget));
    } else {
      handleError(
        formatRuntimerError(
          event.message,
          event.filename,
          event.lineno,
          event.colno,
          event.error
        )
      );
    }
  }, true
);

  將window綁定unhandledrejection事件后,就會在Promise被拒絕且沒有reject的回調函數時觸發。

window.addEventListener(
  "unhandledrejection",
  function (event) {
    // console.log('Unhandled Rejection at:', event.promise, 'reason:', event.reason);
    handleError({
      type: ERROR_PROMISE,
      desc: event.reason,
      stack: "no stack"
    });
  },
  true
);

3)初始化

  由於要計算白屏時間,DOM時間等,所以位置不能隨便放,得要放在head的最後面。

<head>
  <script>
    window.pineapple || (pineapple = {});
    pineapple.param = {
      "token": "dsadasd2323dsad23dsada"
    };
  </script>
  <script src="js/pineapple.js"></script>
</head>

二、服務端

1)Koa

  Koa是由Express原班人馬打造的Web輕量框架,通過組合各種中間件來避免繁瑣的回調函數嵌套,當前使用的版本是V2。

npm install --save koa

  使用的Koa腳手架:koa-generator,創建項目的結構,並且在此基礎上做了調整(目錄如下所示)。暫時還不會用到靜態資源和視圖層。

npm install -g koa-generator
├── server --------------------------------- 服務端
│   ├── bin -------------------------------- 命令
│   ├── config ----------------------------- 配置目錄
│   ├── controllers ------------------------ MVC中的邏輯層
│   ├── db --------------------------------- MVC中的數據層
│   ├── public ----------------------------- 靜態資源
│   ├── routes ----------------------------- 路由
│   ├── utils ------------------------------ 工具庫
│   ├── views ------------------------------ MVC中的視圖層
│   ├── app.js ----------------------------- 入口文件

  為了區分開發環境和生產環境,通過cross-env統一不同系統設置環境變量的方式。

npm install --save cross-env

  package.json中的命令如下,添加了環境配置。

"scripts": {
  "start": "node bin/www",
  "dev": "cross-env NODE_ENV=development ./node_modules/.bin/nodemon bin/www",
  "prd": "cross-env NODE_ENV=production pm2 start bin/www"
}

  prd按字面意思應該是生產環境的命令,其中使用了pm2,默認沒有安裝。還沒部署過Node.js,還不清楚裏面有多少坑。

npm install --save pm2

2)MongoDB

  MongoDB是一個開源的非關係型數據庫(圖1是下載界面),既沒有表、行等概念,也沒有固定的模式和結構,所有的數據以文檔(一個對象)的形式存儲。但其使用方式和關係型數據庫相似,並且還支持對數據建立索引,適用於高併發讀寫、海量數據存儲和實時分析等。

圖1

  注意,在安裝時默認會下載MongoDB Compress(一個可視化的MongoDB工具),默認下載會非常慢,建議自行下載,該工具的界面還是蠻清爽的,如圖2所示。

圖2

  在Mac上配置MongoDB比較麻煩,不像Windows那樣一件安裝,需要一些步驟,廢了點力氣才裝好,下面是執行的命令。

sudo mongod --dbpath=/Users/pw/data

3)Mongoose

  Mongoose是MongoDB的一個ORM(Object-Document Mapper,對象文檔映射)工具,可在Node.js環境中執行,封裝了MongoDB操作文檔的常用方法,包括引入數據庫連接(connect),定義模型(model),聲明文檔結構(scheme),實例化模型等操作數據庫的方法。

npm install --save mongoose

  借鑒了以前PHP數據分層的思想,單獨分離出數據庫的連接,並抽象通用的Model層(如下所示)。

const mongoose = require("./db");
class Mongodb {
  constructor(name, schema) {
    //聲明結構
    const mySchema = new mongoose.Schema(schema, { typeKey: "$type" });
    this.model = mongoose.model(name, mySchema);
  }
  //保存
  save(obj) {
    obj.created = Date.now();         //日期
    const doc = new this.model(obj);
    return new Promise((resolve, reject) => {
      doc.save((err, row) => {
        if (err) {
          reject(err);
          return;
        }
        resolve(row);
      });
    });
  }
}
module.exports = {
  model: Mongodb,
  mongoose
};

4)路由

  由於發送的地址是一張gif圖片,因此在處理路由時,返回本地的一張gif圖,如下所示,圖像地址得是絕對路徑,否則無法讀取。

router.get('/pa.gif', async (ctx, next) => {
  const ctr = new indexController();
  ctr.collect(ctx);
  const url = path.resolve(__dirname, "../public/images/blank.gif");
  ctx.body = fs.readFileSync(url);    //空白gif圖
});

5)代理分析

  在接收參數的時候分析代理所帶的信息,例如瀏覽器、操作系統、設備等。使用的是一個第三方庫:UAParser.js,四年前就關注過,當時GitHub上只有1K多個關注量,現在已經翻了4倍。

npm install --save ua-parser-js

6)假數據

  製作一套合適的假數據,新增命令“npm run data”,初始化數據,便於展示。

三、後台

1)UI

  後台模板採用了之前封裝過的Matrix,但不會依賴Bootstrap框架。

  將整個頁面分成五塊,分別是導航、側邊欄、麵包屑、底部欄以及主體。

  安裝react-router的history,用於路由。

npm install --save history

  期間也會安裝各類依賴包,例如不支持在類中直接聲明屬性等。

  在使用的過程中,ESLint會不時的彈出各種錯誤和警告,期間就不停的修改問題或查找相關配置忽略部分限制。

  後台的側邊欄和麵包屑等部分,會隨着URL的不同而發生狀態變化,本來想用多頁實現,但配置要改很多,就依然做成一個SPA,只是稍微做了些改動。

  組件庫採用了流行的Ant Design,調用了按鈕、單選框、日期等組件。

npm install --save antd

  圖表庫使用的是ECharts,目前只用到了折線圖和餅圖。在引用圖表時,為了優化構建,採取了按需引用的手段。

npm install --save echarts

2)項目管理

  首先建立一個項目,然後才能分析該項目的性能和錯誤,如圖3所示。

圖3

  用彈框的形式來創建項目,使用了Ant Design的Model、Form等組件,如圖4所示。

圖4

3)性能分析

  在第一個折線圖標籤中的過濾條件包括項目、字段、日期等,性能指標按平均值呈現,可看到每個性能指標的趨勢,如圖5所示。

圖5

  按分時日統計性能平均數,在MongoDB中計算。原先創建日期是以時間戳的形式存儲的,為了便於使用Aggregate,改成字符串形式。碰到一個坑,MongoDB中的Date類型採用的是格林尼治時間,而不是當前時區的時間,也就是說存在數據庫中的時間會比當前時間早8小時。

  在第二個列表標籤中,可以詳細看到每條記錄的信息,包括代理、網絡等,便於在了解趨勢的前提下,獲悉更為細節的內容,如圖6所示。

圖6

  點擊ajax那一列,可彈出具體的異步請求信息,如圖7所示。

圖7

4)錯誤分析

  有三個標籤,第一個也是折線圖,描繪的是某個時間的錯誤個數;第二個是錯誤列表,會給出具體的錯誤信息,如圖8所示。

圖8

  第三個是餅圖,餅圖主要體現的是發生錯誤的瀏覽器分佈情況(如圖9所示),點擊某一塊可查看瀏覽器的具體版本(如圖10所示)。

圖9

圖10

 

 

【參考資料】
PerformanceTiming

unhandledrejection 處理沒有顯式捕獲的 Promise 異常

狼書(卷2)

Node-區分環境

Koa從零搭建到Api實現—項目部署

koa如何連接MongoDB

Koa2進階學習筆記

如何計算首屏加載時間 

Mongoose Schema Error: “Cast to string failed for value” when pushing object to empty array

Support for the experimental syntax ‘classProperties’ isn’t currently enabled

Template string failing with Cannot read property ‘range’ of null

Disallow JSX props spreading (react/jsx-props-no-spreading)

TypeError: Cannot read property ‘range’ of null from template-curly-spacing

echarts項目的優化

使用 happypack 提升 Webpack 項目構建速度

mac下的mongoDB的安裝和啟動

安裝MongoDB報錯 mkdir: /data/db: Read-only file system

$sum mongoose

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

網頁設計最專業,超強功能平台可客製化

python工業互聯網應用實戰2—從需求開始

前言:隨着國家工業2025戰略的推進,工業互聯網發展將會提速,將迎來一個新的發展時期,越來越多的企業開始逐步的把產線自動化,去年年底投產的小米亦庄的智能工廠就是一個熱議的新聞。小米/華為智能工廠只能說是中國製造2025的一個代表,產業轉型和製造升級,筆者從事的企業領域就越到越來越多的(製造)企業開始悄悄的自動化/智能化。這裏肯定有國家政策推動的大背景,同時,也有着企業自身不斷提高生產率的“剛需”。

  本序列我們也從一個需求問題開始;然後,拆解需求(問題);其次,解決拆解需求(問題)的點;再次,通過的不斷技術摸索和迭代過程找到一個個合理的解決需求的方法和手段,最終,完成了這個需求(問題)的項目實戰。我們會在文中描述演化過程、方法論、過程保證機制和實用的工具等,最終帶着大家完成這樣一個實際項目需求的項目過程項目涉及的Django的多基礎知識請大家閱讀筆者早期的《Python開發入門與實戰系列》。

  本文的過程採用python3.6和django2.1版本

項目需求:這是一個簡版物流自動化倉庫實例,倉庫控制系統(以下簡稱WCS)需要調度AGV小車運送一個實托盤(搬運單元)從1樓入庫站台經由提升機搬運到2樓指定的倉庫貨位。 

1.需求分析

  倉庫控制系統(以下簡稱WCS)需要調度AGV小車運送一個實托盤(搬運單元)從1樓入庫站台經由提升機搬運到2樓指定的倉庫貨位。這句簡要描述常常是我們在項目URS看到的需求描述,接下來我們需要對拿到的需求進行分析,形成一個個可度量的開發功能點。

1.1.用例說明

  需求用例說明文檔能夠很好的對需求進行詳細的分析,主要的包含內容包括:前置條件、事件流程和後置條件(執行結果)用例描述如下錶,通過用例分析我們能夠很好的把握需求的具體事件執行流程,並通過文檔清晰的描述出來,便於後期設計編碼時作為開發設計人員的指導。

  經過團隊頭腦風暴討論,大家基本上達成了如下錶的需求用例說明,我們把這個調度設備的搬運過程設計成一個序列順序執行的步驟(子任務),這些子任務對應着設備的執行分解動作。

用例編碼

1.1

執行角色

WCS

用例名稱

托盤入庫用例

前提條件

  1. WMS已完成任務貨位的分配,任務核心信息:托盤條碼、源地址、目標地址;
  2. AGV不能跨樓層作業,1樓與2樓分別是不同的AGV小車執行任務;

需求描述

1 WCS分解搬運任務成3個設備作業

2 調度AGV入庫站台搬運托盤到提升機1樓門口工位;

3 調度提升機到1樓並打開廊門

4 調度AGV提升機1樓門口工位到提升機並卸貨,返回提升機門口工位;

5 調度提升機1樓提升到2樓並開門;

6 調度AGV進入提升機並載貨搬運到2樓門口工位;

7 調度提升機關門;

8 調度AGV從2樓門口工位搬運到庫存貨位。

備選過程

 

擴展過程

 

 

原始需求描述

參見 《XXX URS》

特殊需求

後置條件

WCS調度相關設備完成實托盤從入庫站台搬運到庫存貨位,反饋結果給WMS 

2. 需求功能點

  從上面的用例說明的需求描述事件流程來看,我們需要先把這一趟搬運任務分解成設備子任務,並串行的方式順序下達到設備執行,任務清單如下錶:

序號

作業描述

執行設備

1

調度AGV入庫站台搬運托盤到提升機1樓門口工位

1AGV

2

調度提升機到1樓並打開門

提升機

3

調度AGV提升機1樓門口工位到提升機並卸貨,返回提升機門口工位

1AGV

4

調度提升機1樓提升到2樓並開門

提升機

5

調度AGV進入提升機並載貨搬運到2樓門口工位

2AGV

6

調度提升機關門

提升機

7

調度AGV從2樓門口工位搬運到庫存貨位

2AGV

  也就是說這一趟搬運任務,WCS需要分解成7個設備作業子任務,並順序下達給相應的執行設備執行,最終完成任務的執行(當前的任務劃分粒度實際對接AGV和提升機廠家來說會有調整,最終以上步驟會依賴與實際對接的情況,但是主流程不會有太大變化)。 

   經過分析從1樓入庫站台運送托盤到二樓某個指定貨位這樣一個任務,系統需要分解成7個子任務,下達給設備順序執行。系統活動圖如下:

3. 活動圖

  經過分析從1樓入庫站台運送托盤到2樓某個指定貨位這樣一個任務,系統需要分解成7個子任務,下達給設備順序執行。我們還可以通過UML活動圖來進一步詳細的描述作業的執行順序如下圖: 

    從圖中我們可以看出來一次入庫任務,系統分解為7個設備子任務(作業)來執行完整的托盤入庫流程,只有所有子任務(作業)執行完成,托盤的入庫才算完成。

 4. 功能模塊

  對於這樣一個看似簡單的需求來說,包含兩大主要功能模塊

    1. 任務分解:依據物理設備處理任務的條件,對任務進行分解,任務分解的粒度是設備能夠識別並執行(動作)
    2. 任務調度:任務調度就是按照順序執行的邏輯,把任務順序和逐一下達給設備 

  這裏也有幾個基本邏輯就是,設備在某一個時間點上只能執行一個子任務,只有這個任務執行完畢後方能下達新的子任務。多重任務邏輯只會導致設備無法完成任務(不知道到底該執行那個動作)。

 4.1. 實體關係

  我們從上面需求分析整理當前至少包括2個實體,包含的屬性(字段)如下: 

1任務

任務ID,任務號,源地址(從哪兒),目標地址(到哪兒),開始時間,結束時間,狀態 

2子任務:

子任務ID,任務ID,源地址(從哪兒 上一個子任務的目標地址), 目標地址(到哪兒 下一個子任務的源地址), 執行機構,開始時間,結束時間,狀態

5. 小節

  本章我們從一個需求問題開始,然後經過需求分析,把需求問題分解為功能點和數據實體,實體是下一步我們設計表或ORM model的基礎原型,上面的實體只是一個初步的需求分析主要字段要求,實體屬性(字段)會設計時會增加特定的其它屬性(字段)。 下一章節我們將描繪如何把這個需求逐步演化到模型設計。

 

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

※教你寫出一流的銷售文案?

GitHub 熱點速覽 Vol.24:程序員自我增值,優雅賺零花錢

摘要:升職加薪,出任 CTO,迎娶白富美/高帥富,走向人生巔峰是很多人的夢想。在本期的熱點速覽中你將了解自由作者 Easy 如何優雅賺取零花錢的方法,以及定投改變命運 —— 讓時間陪你慢慢變富。說到程序員自我增值,除了優雅賺錢之外,還可以研究下各種生活中小工具的代碼實現,例如,收錄 20+ Web 小應用的 vanillawebprojects。將技術應用在生活中點滴,展現你的技術輔助日常“肝”口袋妖精,或者偶爾用技術給自己生活添加點小樂趣,用遺傳算法製作一個繪製圖像過程的小玩具。

以下內容摘錄自微博@HelloGitHub 的 GitHub Trending,選項標準:新發布 | 實用 | 有趣,根據項目 release 時間分類,發布時間不超過 7 day 的項目會標註 New,無該標誌則說明項目 release 超過一周。由於本文篇幅有限,還有部分項目未能在本文展示,望周知

  • 本文目錄
      1. 本周特推
      • 1.1 遺傳算法玩具:genetic-drawing
      • 1.2 馬斯克火箭:SpaceX-API
      1. GitHub Trending 周榜
      • 2.1 Go 語法書:go-ast-book
      • 2.2 數據庫好搭檔:xgenecloud
      • 2.3 前端小玩意:vanillawebprojects
      • 2.4 統計代碼:lihang-code
      • 2.5 Poke 輔助工具:Pokedex
      • 2.6 高性能框架:Fastapi
      • 2.7 JS 面經:javascript-questions
      1. 本周 GitHub Trending #程序員增值# 主題的主力軍
      • 3.1 優雅賺錢:howto-make-more-money
      • 3.2 定投改變命運:regular-investing-in-box
      • 3.3 機器學習課程個人筆記:Coursera-ML-AndrewNg-Notes
      1. 推薦閱讀

1. 本周特推

1.1 遺傳算法玩具:genetic-drawing

本周 star 增長數:1200+

Newgenetic-drawing 作者在 2017 年做的模仿給定目標圖像的繪製過程的玩具項目,效果見下圖。項目受到互聯網上許多基因繪製示例的啟發,由於項目深受歡迎,作者便在近日將其開源。

GitHub 地址→https://github.com/anopara/genetic-drawing

1.2 馬斯克火箭:SpaceX-API

本周 star 增長數:900+

SpaceX-API 是一個用於火箭、核心艙、太空艙、發射台和發射數據的開源 REST API。技術棧

  • 部署在美國中部 Linode 服務器上
  • 使用了 Nodejs 的 Koa 框架
  • 使用了 Redis、Nginx 和 Cloudflare 進行內容緩存
  • 使用了 Jest 和 Supertest 做測試
  • 使用了 Circle CI 進行持續集成/部署
  • 所有的數據存儲在 MongoDB Atlas 3 節點的副本集集群中
  • 使用 mongodump 在晚上進行數據備份

GitHub 地址→https://github.com/r-spacex/SpaceX-API

2. GitHub Trending 周榜

2.1 Go 語法書:go-ast-book

本周 star 增長數:1000+

go-ast-book 是一個 Go 語法樹入門項目。讓我們語法樹這個維度重新審視 Go 語言程序,我們將得到創建Go語言本身的技術。本書簡單介紹語法樹相關包的使用。

GitHub 地址→https://github.com/chai2010/go-ast-book

2.2 數據庫好搭檔:xgenecloud

本周 star 增長數:800+

New xgenecloud 是一個能即時生成任何數據庫上的 REST 和 GraphQL API 工具,它支持 MySQL、PostgreSQL、MsSQL、SQLite、MariaDB。特性:

  • 為現有數據庫生成 REST API
  • 提供用於調試的 GUI
  • 生成的 API 均可基於 Serverless 部署在任意雲平台

GitHub 地址→https://github.com/xgenecloud/xgenecloud

2.3 前端小玩意:vanillawebprojects

本周 star 增長數:1100+

vanillawebprojects 收錄了用前端技術(Javascript、CSS、HTML5)開發的 20+ 款小應用,包括:表單驗證、匯率計算、打字遊戲、語音閱讀、新年倒計時等等。

GitHub 地址→https://github.com/bradtraversy/vanillawebprojects

2.4 統計代碼:lihang-code

本周 star 增長數:10900+

《統計學習方法》可以說是機器學習的入門寶典,許多機器學習培訓班、互聯網企業的面試、筆試題目,很多都參考這本書。本項目收錄了該書的所有代碼實現,特別是監督學習方法,包括感知機、k 近鄰法、樸素貝恭弘=叶 恭弘斯法、決策樹、邏輯斯諦回歸與支持向量機、提升方法、em 算法、隱馬爾可夫模型和條件隨機場等。

GitHub 地址→https://github.com/fengdu78/lihang-code

2.5 Poke 輔助工具:Pokedex

本周 star 增長數:500+

NewPokedex 使用基於 MVVM 架構的 Dagger Hilt、Motion、Coroutines、Jetpack 開發的 Poke(口袋妖精)輔助工具。這個項目專註實現依賴注入的新庫,支持從網絡獲取數據,並通過存儲庫模式集成數據庫中的持久化數據。

GitHub 地址→https://github.com/skydoves/Pokedex

2.6 高性能框架:Fastapi

本周 star 增長數:1300+

Fastapi 是一個基於 python 的框架,該框架鼓勵使用 Pydantic 和 OpenAPI 進行文檔編製,使用 Docker 進行快速開發和部署以及基於 Starlette 框架進行的簡單測試。特性:

  • 高性能
  • 快速編寫代碼:將功能開發的速度提高大約 200% 至 300%
  • 錯誤更少:減少約40%的人為錯誤(開發人員)
  • 直觀:強大的編輯器支持。完成無處不在。調試時間更少
  • 簡易:旨在易於使用和學習。減少閱讀文檔的時間
  • 短:最小化代碼重複。每個參數聲明中的多個功能,更少的錯誤
  • 健壯:獲取可用於生產的代碼,具有自動交互式文檔。
  • 基於標準:基於(並完全兼容)API的開放標準

GitHub 地址→https://github.com/tiangolo/fastapi

2.7 JS 面經:javascript-questions

本周 star 增長數:800+

從基礎到高級,JavaScript Questions 收錄了 JS 相關的面試題及解法。

GitHub 地址→https://github.com/lydiahallie/javascript-questions

3. 本周 GitHub Trending #程序員增值#主題的主力軍

在本期主題模塊,小魚乾這裏選取了 3 個和增值相關的小工具,希望能提高你生活、工作的幸福值。

3.1 優雅賺錢:howto-make-more-money

howto-make-more-money 是一個程序員@Easy 現身講述優雅的掙零花錢的項目,雖然是一個教你如何賺零花錢的項目,但是通過閱讀本賺零花錢小書你可理清自己的核心資源,以及如何創造資產。

GitHub 地址→https://github.com/easychen/howto-make-more-money

3.2 定投改變命運:regular-investing-in-box

定投改變命運 —— 讓時間陪你慢慢變富。regular-investing-in-box 這本書要講的是普通人擺脫階層固化的路徑 —— 絕對可行,毫無水分,並且全靠你自己。這裏所說的普通人,不分國界、不分地域、不分種族、不分性別、不分年齡、不分高矮胖瘦美醜、不分何種性取向…… 關鍵在於,甚至壓根不分智商和學歷!換言之,這個解決方案,甚至對在北京跑腿送外賣的小哥都適用……

GitHub 地址→https://github.com/xiaolai/regular-investing-in-box

3.3 機器學習課程個人筆記:Coursera-ML-AndrewNg-Notes

Coursera-ML-AndrewNg-Notes 是吳恩達老師的機器學習課程個人筆記,旨在提供了一個廣泛的介紹機器學習、數據挖掘、統計模式識別的課程。主題包括:

  • 監督學習(參數/非參數算法,支持向量機,核函數,神經網絡)。
  • 無監督學習(聚類,降維,推薦系統,深入學習推薦)。
  • 在機器學習的最佳實踐(偏差/方差理論;在機器學習和人工智能創新過程)。

項目還將使用大量的案例研究,你可學習到如何運用學習算法構建智能機器人(感知,控制),文本的理解(Web 搜索,反垃圾郵件),計算機視覺,醫療信息,音頻,數據挖掘,和其他領域。

GitHub 地址→https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes

推薦閱讀

  • GitHub 熱點速覽 Vol.23:前後端最佳實踐
  • GitHub 熱點速覽 Vol.22:如何打造超級技術棧
  • GitHub 熱點速覽 Vol.21:Go 新手起手式,學就完事兒了

以上為 2020 年第 23 個工作周的 GitHub Trending 如果你 Pick 其他好玩、實用的 GitHub 項目,記得來 HelloGitHub issue 區和我們分享下喲

HelloGitHub 交流群現已全面開放,添加微信號:HelloGitHub 為好友入群,可同前端、Java、Go 等各界大佬談笑風生、切磋技術~

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

C# 9.0 新特性之目標類型推導 new 表達式

閱讀本文大概需要 2 分鐘。

呼~~,每次過完一個周末,寫作就失去了動力,一两天才能緩過來。儘管如此,還是要堅持寫好每一篇文章的。寧缺毋濫嘛,寧願發文的頻率低一點,也要保證文章的質量,至少排版不能差,行文要流暢,錯別字不能有。

關於類型推導想必大家都很熟悉,它是在 var 關鍵字引入的時候引入 C# 的。

var i = 10;
var u = new User();

編譯器會通過右邊的字面量自動推導左邊變量的類型,這種推導方式可以歸納為:從上下文右邊推導出左邊的類型。我們不妨把它稱為源類型推導(Source-typed inferring,參考 Target-typed 自創的術語)。

相應的,有源類型推導就有目標類型推導 (Target-typed inferring),它是指從上下文左邊推導出右邊的類型。比如數組的初始化和 Lambda 表達式常常是目標類型推導的表達式。舉個例子:

// 沒有使用類型推導
string[] s = new string[] { "a", "b" };
// 目標類型推導(左推右)
string[] s = new { "a", "b" };
string[] s = new [] { "a", "b" };

// 沒有使用類型推導
Users.FirstOrDefault<User>(u => u.id = 123);
// 目標類型推導(左推右)
Users.FirstOrDefault(u => u.id = 123);

這次在 C# 9 中,增加了用戶定義類型 new 表達式的目標類型推導,即通過上下文左邊自動推導 new 表達式的類型,從而在使用 new 構造時省略類型的指定,請看示例:

// C# 9 之前
Point p = new Point(3, 5);

// C# 9
Point p = new (3, 5);

除此之外,C# 9 也增加了操作符 ???: 的目標類型推導支持。之前這兩個操作符必須要求兩邊的操作對象都是相同的類型,否則會編譯報錯。而在 C# 9 中,只要目標類型是操作對象共同的基類就不再會編譯報錯了,比如:

// Student 和 Customer 擁有共同的父類 Person
Person person = (Person)(student ?? customer); // C# 9 之前
Person person = student ?? customer; // C# 9

// 可空類型,0 和 null 都可以隱式轉換為 int? 類型
int? result = b ? 0 : (int?)null; // C# 9 之前
int? result = b ? 0 : null; // C# 9

其實本文的核心就一句代碼:

Point p = new (3, 5);

卻一不小心啰嗦了這麼一堆。但講真,學習新的知識不是要死記硬背,而要學會歸類推理,舉一反三,經常思考,最好能形成自己的一種思維習慣,這樣學習才會變成一件水到渠成的事。多看我的文章,希望你能學到的不僅僅是生硬的編程知識點,也希望我的行文風格和思維習慣對你有所啟發。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※別再煩惱如何寫文案,掌握八大原則!

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※超省錢租車方案

※教你寫出一流的銷售文案?

網頁設計最專業,超強功能平台可客製化

※產品缺大量曝光嗎?你需要的是一流包裝設計!

極端天氣自然災害激增 專家籲強化預警和減災

摘錄自2020年10月13日中央社報導

專家今(13日)呼籲,隨著極端天氣與自然災害激增,世人應投注更多心力預測災害,同時儘早行動減輕災害的衝擊。

法新社報導,今天是國際減少災害風險日(International Day for Disaster Risk Reduction),10多個聯合國(UN)單位和金融機構藉最新報告釋出訊息,呼籲人們「(別問)未來天氣如何,該問的是天氣會造成什麼影響」,因為現實情況證明天氣愈來愈具毀滅力。

這份世界氣象組織(WMO)協調做成的報告表示,尤其近幾十年來,氣候變遷已推升這類災害的發生頻率、強度和嚴重性。

報告指出,2018年的風暴、旱澇與野火,曾使1億800萬人尋求國際人道體系協助。報告預估到2030年前,這個人數可能增加約5成。

氣候變遷
國際新聞
極端天氣
自然災害
減災

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※台北網頁設計公司全省服務真心推薦

※想知道最厲害的網頁設計公司"嚨底家"!

※推薦評價好的iphone維修中心