通用汽車與 Lyft 合作,無人計程車上路測試

未來一年內,通用汽車(General Motors,GM)將與 Lyft 合作,在一般道路上測試無人駕駛的最新款電動車  Chevrolet Bolt,並計畫以此車款成為叫車服務的車隊主力。通用汽車近期正試圖整合幾筆投資,以迎接矽谷科技巨頭對傳統汽車行業的挑戰,包含 Tesla 的電動車、Google 的自動駕駛以及 Uber 的分享出租服務。   根據《華爾街日報》報導,今年 1 月通用汽車曾投資 Lyft 高達 5 億美元,並以 10 億美元價格收購了位於舊金山的自動駕駛技術開發商 Cruise Automation,預期接下來的服務將仰賴該公司技術。   通用汽車與 Lyft 的合作主要針對 Google 和 Uber 而來。Google 的自動駕駛汽車技術目前遙遙領先,即便與福特汽車合作告吹,他們也順利另外和飛雅特─克萊斯勒(Fiat Chrysler)成功聯手。而作為 Lyft 難以撼動的競爭對手,Uber 也在匹茲堡成立了無人駕駛研究中心,並計劃於 2020 年將無人駕駛車投入車隊營運。   Lyft 高層表示,關於無人計程車測試的細節仍在研究當中,不過這一項測試將在某些城市供用戶參與。Lyft 目前擁有一款原型的智慧型手機應用,用戶藉此透過 Lyft 叫車,可以選擇是否由無人駕駛車前來接送。在發生問題時,用戶也可以聯繫通用汽車 OnStar 系統助理請求協助。這款應用還支援讓用戶指示車輛何時出發,以及車輛是否已達到目的地可以離開。   目前有加州、密西根州、內華達州、佛羅里達州與華盛頓特區等地通過無人駕駛車上路測試的相關法案,Google 則已經在這些地區以外的其他城市,包含奧斯汀、鳳凰城與華盛頓州的柯克蘭進行他們的自動駕駛車測試。這也意味著通用汽車和 Lyft 同樣可以選擇在某些立法未詳的州以實行他們的計畫。Lyft 和 Uber 高層之前都曾表示,無人駕駛車的主要障礙來自於監管法規如何適用於這類車輛,以及責任歸屬如何界定。為了解決監管問題,Lyft 最初仍會在無人駕駛車上配備司機,以在必要情況下進行人工介入。   除了無人駕駛車外,通用汽車最重要的如意算盤,就是讓 Lyft 及其司機團隊成為 Chevrolet Bolt 的主要客戶。這款電動車將於 2016 年底上市。目前通用汽車和 Lyft 在芝加哥將 Chevrolet Equinox 租給有需要的司機駕駛,而未來的主力車型將會是 Bolt,而不是作為 SUV 的 Equinox。   Bolt 比上一款 Chevrolet Volt 能儲存更多電力,續航力更強;電池位於車身底盤,因此車輛前半部多出了空間,讓後排乘客的腿部空間更大。通用汽車表示,這款車型非常適合需要更多空間,同時希望降低運營成本的司機。

(首圖來源: CC BY 2.0)   (本文授權轉載自《》─〈〉)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

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

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

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

中國電動車達規模前 特斯拉不會本地建廠

據《中國日報》報導,特斯拉的一位高管稱公司不會在中國建廠,除非電動轎車的銷量達到”關鍵量產”規模。

特斯拉聯合創始人和首席技術官J.B. Straubel對可能在中國建廠的猜測潑了冷水,因為此前有特斯拉高管稱可能在中國生產特斯拉Model 3車型。

Straubel是在德國雷茲格的國際運輸論壇上接受《中國日報》採訪時,給出上述言論的。

只有美國市場的特斯拉3預訂單超過中國,但IHS汽車供應商新聞報導稱,特斯拉擱置了在中國建設總裝廠的計畫,因為沒有合適的合資夥伴。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!

廣汽將與樂視聯手打造互聯網生態圈

6月6日晚間,廣汽集團正式發佈公告稱,公司董事會審議並通過了《關於調整廣汽集團汽車互聯網生態圈專案的議案》。公告正式公佈了廣汽集團汽車互聯網生態圈專案將由廣州汽車集團股份有限公司、樂視控股(北京)有限公司及眾誠汽車保險股份有限公司共同出資,三方股比分別為45%、40%和15%。

事實上,早在公告發佈之前,樂視與廣汽就各自在汽車電商方面有著完整的規劃與佈局。在不久之前的北京車展上,樂視超級汽車聯合創始人,全球副董事長丁磊就曾透露,樂視將於近期與國內一家一流汽車集團開展汽車電商方面的合作,探索全新的生態電商模式。而樂視生態O2O高級副總裁、樂視商城負責人趙一成也在發佈會上表示,樂視商城將進軍汽車領域,打造全球首家生態型O2O汽車電商。

廣汽集團在2015年7月已經宣佈將啟動汽車互聯網生態圈專案的實施,建設包括整車電商平臺、車生活平臺、車聯網平臺和創業投融資平臺等四個平臺。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計、台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

中國北汽、日本松下合資,投入中國電動車市場

日本松下(Panasonic)、中國北京汽車宣布將共同投資數百億日圓,於中國天津成立合資公司,用於生產純電動車之核心零組件,搶攻中國龐大的電動車市場商機。

《日本經濟新聞》中文版、日本《共同社》等多家媒體報導,松下社長津賀一宏日前曾前往中國,與北汽公司商討成立合資公司一事,並達成協議。北汽旗下兩家汽車零組件廠商將出資54%、松下的中國公司則出資46%,合資公司計畫在2018年左右開始投入量產,主要產品是電動車空調的電動壓縮機,供貨對象則是北汽公司與其他公司。

電動車的空調電力來自蓄電池。為優化電動車的行駛里程,電動車空調壓縮機須能以更好的效率控制冷、暖風,因此性能需求較一般汽油車高。性能佳的空調壓縮機,將有助提高電動車的續航力。

中國市場蓬勃,松下積極搶進

在政府的大力推動下,中國已在2015年成為全球最大電動車市場之一。《日經》指出,日廠豐田決定在2018年起於中國生產插電式混和動力車(PHEV);而松下與北汽的合作,則象徵松下在中國市場的在地化布局行動。未來預計還會有更多日商在中國展開本土化生產。

松下已宣布退出電視面板製造事業,並轉而提高在住宅、汽車等兩大領域的業務著力。2015財年,松下所生產的車載導航儀與車載電池等零組件銷售額達1.3兆日圓。松下表示,到2018年度時,希望上述零組件銷售額能進一步提高到2兆日圓。

松下在電動車、鋰電池方面的海外投資,包括與美商特斯拉(Tesla)合作在美國內華達州建立的鋰電池工廠Gigafactory,以及中國大連建立的車用鋰電池工廠。大連工廠預計在2017年正式投產。

北汽成立於1953年,為國有企業。在電動車、PHEV領域,北汽是中國僅次於比亞迪(BYD)的第二大業者。北汽計畫到2020年時生產40萬輛電動車。

(照片來源:Wikipedia)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

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

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

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

特斯拉上海工廠獲當局協助,預計 2/10 復工

電動車龍頭特斯拉(Tesla)股價近期出現戲劇性走勢,3、4 日連續兩天以 2 位數速度暴漲,5 日則受中國交車進度料延遲的消息影響,股價重挫逾 17%。不過,中國官員 8 日表示,將盡全力協助企業復工,特斯拉上海工廠將於 10 日恢復生產。

路透社 8 日報導,中國各地工廠的農曆新年假期停工時間,原定 1 月 30 日結束,但由於新型冠狀病毒肺炎疫情嚴峻,中國政府緊急要求企業及工廠延長停工至 2 月 9 日,以防堵疫情擴散。

2 月 4 日,特斯拉全球副總裁陶琳在個人微博表示,原定春節後 2 月初的交車計畫將會暫緩,疫情好轉後會盡力補上交車進度。受此消息影響,5 日特斯拉股價大跌 17.18%,創公司史上第二高單日跌幅,僅次 2012 年 1 月 13 日的 19.33%。

對此,上海市人民政府新聞發言人徐威表示,針對特斯拉等重點企業在復工過程遇到的實際困難,當局將盡全力協調,幫助企業儘快恢復正常生產。

報導指出,特斯拉上海工廠耗資 20 億美元,是特斯拉旗下首座海外工廠,受中國政府大力支持。工廠去年 10 月開始生產,並於今年 1 月舉辦首批中國製 Model 3 交車儀式。

7 日特斯拉股價下跌 0.12%,收 748.07 美元。3 日及 4 日,特斯拉股價分別飆漲 19.89%、13.73%,使股價衝上 887.06 美元,但隨後回吐漲幅,5 日重挫 17.18% 至 734.70 美元。

光 2020 年初以來,特斯拉股價已瘋狂上漲 78.82%,但也引來泡沫效應的疑慮聲浪。CNBC 8 日報導,據 FactSet 數據,目前約 45% 華爾街分析師給予特斯拉股票「賣出」評級,比率創歷來新高,僅 19% 分析師給予「買進」評級,「持有」評級則佔 36%。

券商 Needham 分析師 Rajvindra Gill 5 日出具研究報告,對特斯拉給出「遜於大盤」評級。他指出,從未見過股價上漲如此快速,投資人對過去基本面或成長紀錄卻鮮少關注的現象,反映特斯拉股票的「非理性繁榮」(Irrational exuberance)達到歷史新高。

(本文內文由  授權使用;首圖來源:)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計

※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務

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

※帶您來看台北網站建置,台北網頁設計,各種案例分享

開賣!裕隆純電動車明年打進中國市場

因應大陸明年起針對汽車廠實施能耗總量管制(Corporate Average Fuel Consumption,CAFC)新措施,裕隆集團啟動新能源車登陸計畫。裕隆總經理姚振祥 27 日宣布,明年將在大陸投產首款納智捷純電動車 S5 EV+。   裕隆、中華車高層均示警,大陸 CAFC 的實施,至 2020 年要實現出廠新車平均每公升行駛 20 公里的超低油耗水準,大陸車廠將掀淘汰潮。法人看好 CAFC 上路,大陸低價車、低技術能量車廠將陸續遭淘汰空出市場,裕隆集團大陸事業將受惠,後市看多。   裕隆集團看好今年兩岸車市規模均將較去年小幅成長,台灣預估將達 42 萬輛的近 10 年新高,大陸可望成長至 2,513 萬輛新高。在車市看增,加上全球經濟成長審慎樂觀下,裕隆三寶今年兩岸均訂下新車銷量成長的目標。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

※南投搬家前需注意的眉眉角角,別等搬了再說!

比亞迪擬募股 規模可能達 100 億人民幣

股神巴菲特投資的比亞迪汽車向特斯拉看齊,計畫強化電池製造能力,藉以迎合電動車成長需求。且外媒日前報導指出,比亞迪打算配售 A 股,規模可能達 100 億人民幣。比亞迪在官方投資人網站上表示,該公司急需資金擴增電池產能,間接證實募股消息。   比亞迪目前是中國本土最大電動車製造商,為不想受制於人,電池被比亞迪視為核心技術,也是其電動車業務成敗的關鍵。據彭博社報導,比亞迪上個月搶下美國大眾電動巴士的訂單後,已調升展望。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!

Flink中異步AsyncIO的實現 (源碼分析)

先上張圖整體了解Flink中的異步io

 

阿里貢獻給flink的,優點就不說了嘛,官網上都有,就是寫庫不會柱塞性能更好

然後來看一下, Flink 中異步io主要分為兩種

  一種是有序Ordered

  一種是無序UNordered

主要區別是往下游output的順序(注意這裏順序不是寫庫的順序既然都異步了寫庫的順序自然是無法保證的),有序的會按接收的順序繼續往下游output發送,無序就是誰先處理完誰就先往下游發送

兩張圖了解這兩種模式的實現

 

有序:record數據會通過異步線程寫庫,Emitter是一個守護進程,會不停的拉取queue頭部的數據,如果頭部的數據異步寫庫完成,Emitter將頭數據往下游發送,如果頭元素還沒有異步寫庫完成,柱塞      

無序:record數據會通過異步線程寫庫,這裡有兩個queue,一開始放在uncompleteedQueue,當哪個record異步寫庫成功后就直接放到completedQueue中,Emitter是一個守護進程,completedQueue只要有數據,會不停的拉取queue數據往下游發送 

    

可以看到原理還是很簡單的,兩句話就總結完了,就是利用queue和java的異步線程,現在來看下源碼

這裏AsyncIO在Flink中被設計成operator中的一種,自然去OneInputStreamOperator的實現類中去找

於是來看一下AsyncWaitOperator.java

  

看到它的open方法(open方法會在taskmanager啟動job的時候全部統一調用,可以翻一下以前的文章)

這裏啟動了一個守護線程Emitter,來看下線程具體做了什麼

 

 1處拉取數據,2處就是常規的將拉取到的數據往下游emit,Emitter拉取數據,這裏先不講因為分為有序的和無序的

 這裏已經知道了這個Emitter的作用是循環的拉取數據往下游發送

 回到AsyncWaitOperator.java在它的open方法初始化了Emitter,那它是如何處理接收到的數據的呢,看它的ProcessElement()方法

 

    

 

 其實主要就是三個個方法

先是!!!將record封裝成了一個包裝類StreamRecordQueueEntry,主要是這個包裝類的構造方法中,創建了一個CompleteableFuture(這個的complete方法其實會等到用戶代碼執行的時候用戶自己決定什麼時候完成)

1處主要就是講元素加入到了對應的queue,這裏也分為兩種有序和無序的

 

這裏也先不講這兩種模式加入數據的區別

接着2處就是調用用戶的代碼了,來看看官網的異步io的例子

 

 給了一個Future作為參數,用戶自己起了一個線程(這裏思考一下就知道了為什麼要新起一個異步線程去執行,因為如果不起線程的話,那processElement方法就柱塞了,無法異步了)去寫庫讀庫等,然後調用了這個參數的complete方法(也就是前面那個包裝類中的CompleteableFuture)並且傳入了一個結果

看下complete方法源碼

 

 這個resultFuture是每個record的包裝類StreamRecordQueueEntry的其中一個屬性是一個CompletableFuture

 那現在就清楚了,用戶代碼在自己新起的線程中當自己的邏輯執行完以後會使這個異步線程結束,並輸入一個結果

 那這個幹嘛用的呢

 

最開始的圖中看到有序和無序實現原理,有序用一個queue,無序用兩個queue分別就對應了

OrderedStreamElementQueue類中

 

 UnorderedStreamElementQueue類中

 

回到前面有兩個地方沒有細講,一是兩種模式的Emitter是如何拉取數據的,二是兩種模式下數據是如何加入OrderedStreamElementQueue的

有序模式:

1.先來看一下有序模式的,Emitter的數據拉取,和數據的加入

    其tryPut()方法

      

      

     onComplete方法

       

       onCompleteHandler方法

        

  這裏比較繞,先將接收的數據加入queue中,然後onComplete()中當上一個異步線程getFuture() 其實就是每個元素包裝類裏面的那個CompletableFuture,當他結束時(會在用戶方法用戶調用complete時結束)異步調用傳入的對象的 accept方法,accept方法中調用了onCompleteHandler()方法,onCompleteHandler方法中會判斷queue是否為空,以及queue的頭元素是否完成了用戶的異步方法,當完成的時候,就會將headIsCompleted這個對象signalAll()喚醒

 

2.接着看有序模式Emitter的拉取數據

       

   這裡有序方式拉取數據的邏輯很清晰,如果為空或者頭元素沒有完成用戶的異步方法,headIsCompleted這個對象會wait住(上面可以知道,當加入元素的到queue且頭元素完成異步方法的時候會signalAll())然後將頭數據返回,往下游發送

 

這樣就實現了有序發送,因為Emitter只拉取頭元素且已經完成用戶異步方法的頭元素

 

無序模式: 

  這裏和有序模式就大同小異了,只是變成了,接收數據后直接加入uncompletedQueue,當數據完成異步方法的時候就,放到completedQueue裏面去並signalAll(),只要completedqueue裏面有數據,Emitter就拉取往下發

 

這樣就實現了無序模式,也就是異步寫入誰先處理完就直接放到完成隊列裏面去,然後往下發,不用管接收數據的順序

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

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

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

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

Medium高贊系列,如何正確的在Stack Overflow提問

在我們寫程序的時候,經常會遇到各色各樣的問題,在國內,小夥伴們經常去知乎、CSDN、博客園、思否、安卓巴士等地方提問並獲得答案。

這些地方彙集了很多優秀的、愛分享的國內資源。小編比較自豪的一件事情就是:當初學習dubbo期間,因為一個數據關閉錯誤一直找不到正確的解決方式,就順手把自己解決問題的步驟寫下,並附上參考資料中的方法,算是把那類問題做了一個增強版的總結,沒想過幾個月後,有位粉絲專門找上來感謝我,幫他解決了疑惑。

技術人,就是那麼容易得到滿足。得到別人的一句謝謝,開心的像個傻瓜。前行路上,愛分享、把資源提供給更多的人,是最開心和愉快的事情。

現在是移動互聯網的時代,倘若我們能鏈接到更多的人,倘若我們來連接的不僅僅有國內,還有國外,那豈不是更好?那麼如何在國外得到自己想要的答案?我們不妨去Stack Overflow這個平台去試試,優秀的問答平台,你們懂的。

但是提問也是一門藝術,所以趕緊來看看他們的總結,助你更好地在平台上提問。

原文地址:https://medium.com/better-programming/how-to-ask-a-question-that-gets-answered-on-stack-overflow-45f87f1a2fef

作者:Nabil Nalakath

時間:2019.11.12

當有人告訴我他們在開發中遇到的問題時,在大多數情況下,我的直接答覆是:“您在Stack Overflow上發現了什麼?”

但是,很多開發者會給出奇怪的答案,例如:“我不知道如何使用它,我因提出較差的問題而被禁止,人們總是不贊成我的帖子,或者給我有關如何提問的鏈接,”等。

Stack Overflow是互聯網上最有用,訪問最多的網站之一,但它也是互聯網上最殘酷的平台之一。

如果您犯了一個錯誤或提出了一個愚蠢的問題,人們不會理財你,這就是該平台自成立以來一直保持其標準的方式。因此,別指望有什麼收穫。

相反,我們需要習慣它並改變提問的方式。夠了,讓我們來看看您在提問時要注意哪些重要事項。

發布問題時要注意的事項

  1. 標題要具體(不要在標題中張貼整個問題或廣泛的問題)

  2. 使用正確的標籤(這對於快速獲得答案非常重要)

  3. 張貼代碼的相關部分,並在問題編輯器中使用代碼標籤將其格式化為代碼(如果代碼不是整齊的,大多數人都不會去回答)

  4. 如果您要解釋運行時出現的問題,請嘗試發布屏幕截圖

  5. 如果有日誌的話,發布正確的錯誤日誌(特別是在應用崩潰的情況下)

  6. 如果您的部分輸出沒有錯誤,並且想要對輸出進行特定的修改,而且您似乎無法弄清楚如何,將問題分為兩部分,在問題中清楚提及:

  • 你現在有什麼
  • 你需要達到的目標
  1. 如果與UI相關,請發布線框屏幕截圖,如果不可用,請嘗試在現有的UI屏幕截圖中使用諸如Paint之類的簡單工具標記所需的內容或您要進行的更改

  2. 如果您認為版本代碼可能與解決問題有關,請發布版本代碼(例如:果問題僅在舊版本的PHP或Android中發生,而在新版本中則沒有)

發布時要避免的錯誤

  • 切勿發布代碼中包含品牌名稱或公司名稱的部分

  • 裁剪屏幕截圖以僅显示相關內容

  • 如果代碼包含部分內容,例如鍵或密碼(例如PHP郵件程序代碼中的电子郵件密碼),請始終用****或特殊字符替換密碼字段

  • 不要發布自己創建的特殊算法或應用引擎代碼,除非您不介意其他人使用它或將其開源

壞問題和好問題

讓我們看一下146票贊成的這篇文章:

地址:https://stackoverflow.com/questions/3905734/how-to-send-100-000-emails-weekly?source=post_page-----45f87f1a2fef----------------------

如您在本示例中看到的,已發布的問題不是特定問題。如果您要這樣的教程類型答案,那麼Stack Overflow並不是一個好地方。

以該示例為例,在這種情況下,用戶要求每周使用PHP向100,000個用戶發送一封电子郵件。但問題並沒有显示用戶方面的任何努力。

到目前為止,還沒有提及用戶已經嘗試了什麼或他們面臨的任何特定錯誤。這是不能回答問題的完美範例。

另外,這裡有一些很好的示例問題供您參考。

地址:https://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-processing-an-unsorted-array?source=post_page-----45f87f1a2fef----------------------

地址:https://stackoverflow.com/questions/51096796/how-to-enable-horizontal-scrolling-for-chart-js-in-ionic?source=post_page-----45f87f1a2fef----------------------

地址:https://stackoverflow.com/questions/47923524/app-is-crashing-on-some-devices-android-studio-shows-out-of-memory-exception-er?source=post_page-----45f87f1a2fef----------------------

如您所見,即使有人不回答,如果您以適當的方式提出問題,您仍然會獲得贊成票

致謝

最後,如果您得到查詢的答案並且符合您的要求,請將其標記為可接受的答案以關閉問題。

這將幫助發布答案的人獲得聲譽,並鼓勵他們幫助更多人。

畢竟,平台的存在僅是因為這些樂於助人的無私奉獻者願意為您提供幫助,因此這是您為他們所做的最少的事情。

結尾

提問是一門藝術,小編也經常遇到很多提問看不懂、看不明白的情況。無論是在團隊里還是平時和大家交流的過程中,多多少少會遇到互相不理解的情況,所以,做技術的我們實在是太難了,哈哈。

當然,如果學會了一些必要的技巧,提問對我們來說還是just so so,畢竟共同語言這麼多,雖然問題形形色色,但是茫茫人海,總會有人遇到你遇到的問題,總存在能解決問題的方法。

這是一篇很好的提問的範例,不僅僅是在Stack Overflow上,包括我們自己國內的平台、自己項目組、都可以用類似的技巧來提問,能大大節省溝通成本,獲得更高效率。

本文由博客一文多發平台 發布!

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

【其他文章推薦】

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

※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!

JVM 中你不得不知的一些參數

有的同學雖然寫了一段時間 Java 了,但是對於 JVM 卻不太關注。有的同學說,參數都是團隊規定好的,部署的時候也不用我動手,關注它有什麼用,而且,JVM 這東西,聽上去就感覺很神秘很高深的樣子,還是算了吧。

沒錯,部署的時候可能用不到你親自動手,但是出現問題了怎麼辦,難道不用你解決問題嗎,如果對 JVM 了解不夠的話,有些問題可能排查起來就很費力,或者根本無法解決。

本篇以 JDK Hotspot 8 為背景,介紹一下 JVM 的常用參數。建議你在做一些小項目、小 demo 的時候,也把這些參數加上,加深印象。以我的經驗來看,有些知識你剛開始接觸的時候會感覺很難理解,但是沒關係,萬事開頭難嘛,知識點都是需要消化時間的。第一天不理解,甚至過了一個月也不理解,但是總有那麼一刻,你會突然有種茅塞頓開的感覺,感覺一下子通了。最後心裏面感謝自己在多少多少天以前能夠開始學習並堅持學習這些知識點。

只介紹一些常用參數,除了這些常用參數外,Hotspot 還提供了很多其他的參數,每一個都值得考究。

在使用這些參數之前,你需要對 Java 內存模型有一定的了解,可以讀一下 了解一下內存模型。

還是要把內存模型圖放在這裏,方便理解。

堆參數:

-Xms: 堆的初始值,例如 -Xmx2048,初始堆大小為 2G

-Xmx: 堆的最大值,例如 -Xmx2048M,允許最大堆內存 2G

-Xmn: 新生代大小

-XX:SurvivorRatio:Eden 區所佔比例,默認是 8,也就是 80%,例如 -XX:SurvivorRatio=8

最好將 -Xms 和 -Xmx 的值設置成一樣的值,這樣做是為了防止隨着堆空間使用量增加,會動態的調整堆空間大小,有一定的性能損耗,不如開始就設置成相同的值,來規避性能損失。

棧參數

-Xss:棧空間大小,棧是線程獨佔的,所以是一個線程使用棧空間的大小,例如 -Xss256K,如果不設置此參數,默認值是 1M,一般來講設置成 256K 就足夠了。

Metaspace 參數

-XX:MetaspaceSize:Metaspace 空間初始大小,如果不設置的話,默認是20.79M,這個初始大小是觸發首次 Metaspace Full GC 的閾值,例如 -XX:MetaspaceSize=256M

-XX:MaxMetaspaceSize:Metaspace 最大值,默認不限制大小,但是線上環境建議設置,例如

-XX:MaxMetaspaceSize=256M

-XX:MinMetaspaceFreeRatio:最小空閑比,當 Metaspace 發生 GC 后,會計算 Metaspace 的空閑比,如果空閑比(空閑空間/當前 Metaspace 大小)小於此值,就會觸發 Metaspace 擴容。默認值是 40 ,也就是 40%,例如 -XX:MinMetaspaceFreeRatio=40

-XX:MaxMetaspaceFreeRatio:最大空閑比,當 Metaspace 發生 GC 后,會計算 Metaspace 的空閑比,如果空閑比(空閑空間/當前 Metaspace 大小)大於此值,就會觸發 Metaspace 釋放空間。默認值是 70 ,也就是 70%,例如 -XX:MaxMetaspaceFreeRatio=70

建議將 MetaspaceSize 和 MaxMetaspaceSize 設置為同樣大小,避免頻繁擴容。

GC 日誌

簡單日誌

-verbose:gc 或者 -XX:+PrintGC

日誌格式:

[GC (Allocation Failure)  7892K->5646K(19456K), 0.0060442 secs]
[GC (Allocation Failure) , 0.0066315 secs]
[Full GC (Allocation Failure)  19302K->13646K(19456K), 0.0032698 secs]

詳細日誌

#打印詳細日誌
-XX:+PrintGCDetails
#打印 GC 的時間點
-XX:+PrintGCDateStamps

日誌格式:

2019-11-13T14:06:46.099-0800: [GC (Allocation Failure) 2019-11-13T14:06:46.099-0800: [DefNew (promotion failed) : 9180K->9157K(9216K), 0.0084297 secs]2019-11-13T14:06:46.107-0800: [Tenured: 10145K->10145K(10240K), 0.0035768 secs] 13802K->13646K(19456K), [Metaspace: 3895K->3895K(1056768K)], 0.0120887 secs] [Times: user=0.00 sys=0.00, real=0.02 secs] 
2019-11-13T14:06:47.243-0800: [Full GC (Allocation Failure) 2019-11-13T14:06:47.244-0800: [Tenured: 10145K->10145K(10240K), 0.0042686 secs] 19304K->19146K(19456K), [Metaspace: 3895K->3895K(1056768K)], 0.0043232 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 

以下幾個 GC 日誌相關的參數打印的內容比較多,生產環境可選擇性開啟,大多數時候不需要開啟。

GC 前後的堆信息

-XX:+PrintHeapAtGC

{Heap before GC invocations=0 (full 0):
 def new generation   total 9216K, used 7892K [0x00000007bec00000, 0x00000007bf600000, 0x00000007bf600000)
  eden space 8192K,  96% used [0x00000007bec00000, 0x00000007bf3b5200, 
  xxx....
  class space    used 445K, capacity 462K, committed 512K, reserved 1048576K
Heap after GC invocations=1 (full 0):
 def new generation   total 9216K, used 1023K [0x00000007bec00000,
 xxx...
 Metaspace       used 3892K, capacity 4646K, committed 4864K, reserved 1056768K
  class space    used 445K, capacity 462K, committed 512K, reserved 1048576K
}

GC 導致的 Stop the world 時間

-XX:+PrintGCApplicationStoppedTime

Total time for which application threads were stopped: 0.0070384 seconds, Stopping threads took: 0.0000200 seconds

加載類信息

-verbose:class

[Loaded java.net.URLClassLoader$3$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/rt.jar]

GC 前後的類加載情況

-XX:+PrintClassHistogramBeforeFullGC
-XX:+PrintClassHistogramAfterFullGC
 num     #instances         #bytes  class name
----------------------------------------------
   1:           140       19016264  [B
   2:          2853         226256  [C
   3:           138         169072  [I
   4:           761          86240  java.lang.Class
   5:          2850          68400  java.lang.String
   6:           660          41024  [Ljava.lang.Object;

日誌輸出到文件

以上參數配置好之後,默認會輸出到控制台或者服務指定的統一日誌的位置。但是這裏還會有服務的一般性信息日誌、錯誤日誌等,都混在一起的話會比較亂,所以,一般都會把 jvm 日誌單獨存放。

#GC 活動日誌,根據配置的參數輸出內容
-Xloggc:/Users/fengzheng/jvmlog/gc.log

#致命錯誤日誌,只有在 jvm 發生崩潰的時候會輸出
-XX:ErrorFile=/Users/fengzheng/jvmlog/hs_err_pid%p.log

堆溢出現場保留

有些錯誤雖然不會導致 jvm 崩潰,但是對於服務而言也是非常嚴重的,比如stackOverflow、OutOfMemoryError,發生錯誤后,留存現場信息對分析錯誤原因是至關重要的。jvm 提供了保留堆溢出現場的方法,對於 JDK 8 而言,可能是 heap 溢出,也可能是 Metasapce 溢出。

-XX:HeapDumpPath=/Users/fengzheng/jvmlog
-XX:+HeapDumpOnOutOfMemoryError

最後出現異常后,保存的文件格式為 java_pidxxx.hprof,pid 後面是發生溢出的進程 id,之後可以用 VisualVM、JProfiler 等工具打開分析。

設置垃圾回收器類型

隨着 JDK 版本的升級,可使用的垃圾收集器類型也越來越多了。JDK 8 可使用的垃圾收集器有 7 種,當然有點只適用於年輕代,有點只使用於老年代,JDK 8 中最新的垃圾收集器是 G1,可以用於年輕代和老年代。到了 JDK 11,還出了 ZGC。

下圖是 JDK 8 中可使用的垃圾收集器以及它們配合使用的關係。

Serial、ParNew、Parallel Scavenge 只適用於年輕代,CMS、Serial Old、Parallel Old 只適用於老年代,而 G1 通用於年輕代和老年代。連線表示它們之間可配合使用的關係,其中 CMS 和 Serial Old 連線的意思是說 Serial Old 會作為 CMS 的后預案,當 CMS 發生 Concurrent Mode Failure 時啟用。

在 JDK 8 中,如果不指定垃圾收集器,默認使用參數 -XX:+UseParallelGC,新生代使用 Parallel Scavenge,老年代使用 Serial Old。

-XX:+UseSerialGC:使用 Serial + Serial Old ,運行於 client 模式下的默認設置

-XX:+UseConcMarkSweepGC:使用 ParNew+CMS+Serial Old,CMS 垃圾收集器

-XX:+UseParallelGC:Parallel Scavenge + Serial Old,JDK 8 server 模式下的默認設置

-XX:+UseParallelOldGC:Parallel Scavenge + Parallel Old

-XX:+UseG1GC:使用 G1 垃圾收集器

開啟遠程 JMX 監控

除了日誌外,當我們需要實時查看 JVM 運行情況的時候怎麼辦,當然可以到 JVM 所在服務器用 jstack、jmap、jinfo 等工具進行查看,但是又不夠直觀,這時候就需要開啟 JMX 遠程功能,使用 jConsole、VisualVM 等工具進行監控。或者自己開發監控平台,比如我之前就做了一個 web 版的簡易 VisualVm。

開啟參數如下:

-Dcom.sun.management.jmxremote
#指定 jvm 所在服務器 ip 或域名
-Djava.rmi.server.hostname=192.168.1.1
#指定端口
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.rmi.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
相關閱讀:

不要吝惜你的「推薦」呦

歡迎關注,不定期更新本系列和其他文章
古時的風箏 ,進入公眾號可以加入交流群

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

【其他文章推薦】

※USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計、台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開