分類: 3C資訊

  • 比思域還快,車主都說這款20來萬的SUV配置高動力強

    比思域還快,車主都說這款20來萬的SUV配置高動力強

    發動機:1。5T/2。0T最大馬力(pS):181/245最大扭矩(Nm):240/350變速箱:6AT百公里加速(s):9。92/7。1百公里油耗(L):7。2/8。2車主百公里油耗(L):9。61/11。9驅動方式:前置前驅/前置四驅底盤懸挂:前麥弗遜/后多連桿前排腿部空間(mm):870-1085前排高度(mm):990前排寬度(mm):1470後排腿部空間(mm):610-850後排高度(mm):955後排寬度(mm):1485實際體驗(體驗者178cm):前排頭部1拳/後排頭部4指/後排腿部2拳

    如果你手持20萬的購車預算,想買一款緊湊型SUV的的話,有非常多的選擇。而如果你對於操控性和動力有較大需求的話,福特的翼虎是一個不錯的選擇!

    首先,翼虎懸架的調校帶有的韌性,它對於路面細碎振動的過濾徹底,提供了不錯的舒適性,同時在過彎時支撐性比較充足,尾部隨動性也不錯,駕駛起來頗為靈活!

    它搭載的1.5T、2.0T兩台發動機具備強勁功率,與它們匹配的6AT變速箱降擋頗為积極,而且它帶有換擋撥片,可玩性挺高它還帶有S擋,能提升動力響應的靈敏程度。它2.0T四驅車型的破百時間僅為7.1秒,而1.5T兩驅車型百公里加速則在9.92秒內。

    長寬高:4524*1838*1701mm

    軸距:2690mm

    定位:緊湊型SUV

    外觀方面,現款的翼虎車身線條設計很凌厲,中網上粗壯的橫向條裝飾富有力量感。而且尾燈加入了黑色描邊細節,時尚感不低。而尾部的下方則採用了讓雙邊共兩出的排氣,運動感頗為出眾!

    而內飾方面則為比較保守的設計風格,中控台運用軟質搪塑工藝,手感不錯。細節處加入了鋼琴漆黑色亮面裝飾條點綴,質感表現還不錯。

    發動機:1.5T/2.0T

    最大馬力(pS):181/245

    最大扭矩(Nm):240/350

    變速箱:6AT

    百公里加速(s):9.92/7.1

    百公里油耗(L):7.2/8.2

    車主百公里油耗(L):9.61/11.9

    驅動方式:前置前驅/前置四驅

    底盤懸挂:前麥弗遜/后多連桿

    前排腿部空間(mm):870-1085

    前排高度(mm):990

    前排寬度(mm):1470

    後排腿部空間(mm):610-850

    後排高度(mm):955

    後排寬度(mm):1485

    實際體驗(體驗者178cm):前排頭部1拳/後排頭部4指/後排腿部2拳2指。

    感興趣的朋友可以點擊小程序查看詳細口碑,從口碑中可以看到車主們對翼虎的乘坐空間、操控性、2.0T發動機的強勁動力頗為滿意,但是對較高的油耗有些不滿。

    咱們發現翼虎的優惠幅度中規中矩,在廣州地需搭配店內置換、貸款、上保險、上牌等項目,在北京、武漢地區的一些4S店還需加點裝飾。在成都地區則以現金優惠。

    福特翼虎的電動助力轉向手感比較輕盈,精準度較高。懸架的調校帶有一定的韌性,它更多地側重於對震動的過濾,同時在過彎時支撐性比較充足,底盤質感較高!而且2.0T車型的動力表現強勁,當然油耗也較高!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

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

    台北網頁設計公司這麼多該如何選擇?

    ※智慧手機時代的來臨,RWD網頁設計為架站首選

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

    ※回頭車貨運收費標準

  • 男人最愛的這項熱血汽車運動,真的很爽!

    男人最愛的這項熱血汽車運動,真的很爽!

    除了可以感受到賽車的熱烈氣氛以外,還可以近距離看到不同賽車的結構和技術亮點。當然了,還可以去了解一下賽車手究竟都是怎樣的人,究竟真的是“超人么”。這次的視頻,我們還特別找到了珠海高卡車隊的老闆兼車手王遠先生,去了解一下賽車究竟是怎麼一回事如。

    對於喜歡汽車的朋友來說,總會看過一點關於賽車的東西。不過對於大部分對汽車不太熟悉的朋友,賽車貌似離我們非常遙遠,簡直好像是另外一個星球的事情。而賽車往往也是很高深莫測的精密机械,有超凡的性能,連駕駛賽車的車手也好像需要類似飛行員的體質和能力,才能駕馭這種可怕的機器!

    真的是這樣么?

    為了探尋這個秘密,我們到了珠海國際賽車場ZIC,去觀看泛珠三角賽車節春季賽(簡稱泛珠春季賽)。泛珠春季賽基本集合了大部分常見的賽車類別,包括方程式、prototype、GT、TCR、漂移賽車和改裝房車等等。除了可以感受到賽車的熱烈氣氛以外,還可以近距離看到不同賽車的結構和技術亮點。當然了,還可以去了解一下賽車手究竟都是怎樣的人,究竟真的是“超人么”。

    這次的視頻,我們還特別找到了珠海高卡車隊的老闆兼車手王遠先生,去了解一下賽車究竟是怎麼一回事如。如果想體驗賽車,又有什麼門檻。當然了,我們也對他們車隊一台GK5賽車進行剖析,看看它究竟和我們一般街道行駛的飛度又有什麼相同和不同的地方。

    如果你對賽車好奇,又想了解一下賽車究竟是怎麼回事,或者已經是一個熱血賽車迷的話,就不要錯過本期的視頻了。

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

    【其他文章推薦】

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

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

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

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

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

    ※超省錢租車方案

  • 買毛線飛度捷達!9萬就有高顏值省油SUV了!

    買毛線飛度捷達!9萬就有高顏值省油SUV了!

    雖然是定位年輕,但內飾除了配色之外就看不出有多個性,中規中矩就像大眾,哦,還是比大眾要靈活一些。斑馬系統還是很棒棒的,和目前那些什麼“天貓精靈”有異曲同工之妙,一句話能夠解決的問題,很多人可能還是習慣按鍵。

    10萬買什麼車?飛度啊!還用問?

    這樣的問答非常“知乎”。

    然而,這種“知乎”風格的回答只適合一部分人,你看,飛度一個月也就賣幾千台。其實10萬可以買的車很多,如果你想買“飛度”那樣省油大空間的,也有不少選擇,譬如今天我們視頻的主角,榮威RX3。

    RX3採用家族的“律動”設計,雖然談不上多驚艷,但目前這套設計在榮威RX5、i6上表現良好,市場接受度高,就像是大眾的風格那樣,為人們廣泛接受。

    雖然是定位年輕,但內飾除了配色之外就看不出有多個性,中規中矩就像大眾,哦,還是比大眾要靈活一些。

    斑馬系統還是很棒棒的,和目前那些什麼“天貓精靈”有異曲同工之妙,一句話能夠解決的問題,很多人可能還是習慣按鍵。

    1.6L阿特金森循環發動機主打燃油經濟性,配合上來自愛信的CVT變速箱,整體表現能夠滿足日常的使用,發動機輸出線性,符合這個排量發動機的表現。

    加減速測試

    至於駕駛感受方面,這台車挺日系的,怎麼說呢,一方面,懸挂偏軟,動力偏線性;另一方面,追求低油耗,不盲目追求性能。

    總結

    榮威RX3作為一款新生代車型,無論是外觀設計還是內飾做工都做到了這個級別的前列,並且1.6L+CVT的動力組合更加適合城市中穿梭,如果你的駕駛習慣是溫和的,沒有太多的動力需求,僅僅作為代步的話,榮威RX3值得你留意。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

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

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

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

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

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

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

  • 50年不怎麼變,它卻始終是王者

    50年不怎麼變,它卻始終是王者

    2011年,廣州車展上新一代的911車型正式發布。新一代保時捷911車內多處添加鍍鉻裝飾,檔次再度升級。新一代保時捷911 Carrera搭載的是3。4L水平對置發動機,最大功率達到345馬力,911 Carrera S搭載一台3。8L水平對置發動機,最大功率達到400馬力,而911 Turbo最大功率達到542馬力,此外,保時捷為新一代911全系標配了7速保時捷雙離合變速箱。

    說起跑車,我相信這款有着將近50年不變的後置后驅結構和萌萌噠”青蛙眼睛”的跑車,一定讓每位車迷都魂牽夢繞,從它誕生至今,因為其獨特的風格和超強的耐用性而享譽世界,沒錯,它就是世界經典—保時捷911。

    但是它成為一代經典的傳奇生涯你是否了解呢?不知道也沒關係,今天就為你再現它的成名之路以及競技生涯。

    自誕生日起,保時捷至今歷經七代車型,911於1963年以跑車的身份亮相法蘭克福車展。“蛙眼大燈”的前臉設計、COUpE車身造型、後置六缸水平對置發動機、良好的操控性為保時捷911的成功奠定了基礎。在不斷的升級換代中,911又加入了很多的創新系元素,但新一代的911整體設計思路都會傳承911車型的經典元素,所以911每一款成功的車型都會有屬於自己的氣質,它所體現出來的“車魂”是唯一的。

    第一代誕生於1963年,它的出現奠定了日後整個911系列車型的幾個重要元素,”蛙眼大燈“、後置六缸水平對置發動機以及空氣冷卻系統。底盤技術多沿用356的技術,包括四輪碟式制動器和后懸挂,前懸挂則為全新開發的。

    第二代是911車系裡面時間最長的一代,歷時15年。在這期間,911Turbo等技術不斷創新的全新車型為911贏得了許多國際大獎,其中四輪驅動的959曾是1984和1986年的達喀爾拉力賽的冠軍。

    第三代911開始,在引擎變速箱方面進行了技術革新,之後又相繼推出了新開發的四輪驅動911Carrera4 、Carrera以及第二代911Turbo車型,其中Carrera採用了當時比較新穎的“Tiptronic”自動變速器。另外由第三代開始,底盤編號開始正式記錄入911的車型歷史中。

    到了第四代911,Targa獨成一派,作為911新的版本車型。1992年,為了舉辦Carrera杯比賽,911 Carrera再度推出其賽道版本RS,該車擁有300匹的馬力,最高時速269KM/h。四代後期全球推出新的廢氣排放標準,為此911放棄了風冷發動機繼而推出新款水冷發動機,此款水冷發動機也是第五代911車型996的引擎雛形。

    第五代911正式開始採用水冷發動機,1999年保時捷穩定管理系統首次搭載在新問世的Carrera 4車型上,在五代時還發生件非常有趣的事,在勒芒大賽中獲獎的911GT1因為規則前進氣口必須修改,於是966式的新車誕生了,正式命名為911 GT1 Evolution。

    第六代911車身外觀依然是以流暢簡潔為主,經典的圓形大燈,鬼臉大燈下增加了兩個小燈,911也相繼推出敞篷型和四驅車型。第六代保時捷911(997)除了缸內直噴、主動懸挂系統和7速保時捷雙離合變速箱外,911 Turbo又增加了可變幾何渦輪和膨脹進氣歧管等技術。

    2011年,廣州車展上新一代的911車型正式發布。新一代保時捷911車內多處添加鍍鉻裝飾,檔次再度升級。新一代保時捷911 Carrera搭載的是3.4L水平對置發動機,最大功率達到345馬力,911 Carrera S搭載一台3.8L水平對置發動機,最大功率達到400馬力,而911 Turbo最大功率達到542馬力,此外,保時捷為新一代911全系標配了7速保時捷雙離合變速箱。

    911系列分為為Carrera系列、 Targa系列、Turbo系列、Turbo S系列、GT系列。

    其中的Carrera系列作為911車系當中的主打產品,款式是最多的,它也是整個911車系的靈魂。

    Targa的整體風格造型都顯得獨具特色、精美絕倫。這款極富典雅氣息的911跑車有自己的一套美學標準,透明的車頂從擋風玻璃一直延伸到引擎艙蓋,這樣設計讓車內的環境更親近大自然,寬大的天窗展開面積可達到0.45平方米,並且能夠在尾門的下方平穩滑行。

    911Turbo系列是整個系列中歷史最悠久的,可以追溯到1974年,適逢經濟衰退和石油缺乏的時期,於是這款名為911Turbo以”追求高效率“的新概念跑車就孕育而生。這也是保時捷的首款搭載渦輪增壓的911車型。

    TurboS 系列是Turbo的強化版本,在性能上有了實質性的突破,最大的輸出功率是390KW,比Turbo系列搞出了22KW,峰值扭矩更是達到了700牛.米,這是在民用版的車型中動力最為強勁的民用版車型。

    保時捷GT系列因為是為賽道而打造的車型,所以在性能配置和底盤調校上都更有賽道的風格。911GT系列的運動感比其他系列的會更強,不管是GT2、GT3還是GT3 RS都匹配了6MT的變速箱,操控性會更好,而且在車身的輕量化方面也做得很好,同時在韌性碰撞及安全性上有更大的提升。

    結語:911之所以是經典,離不開其經典的設計元素,也離不開它出色的性能表現以及對自身不斷完善,追求新技術的理念;當然了,更離不開它極其出色的可靠性以及實用性。曾經有個名人說:保時捷既可以穿梭於非洲沙漠甚至是沙漠,又可以開着它去廣場閑庭散步,穿梭於擁堵的城市街道看盡都市繁華。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

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

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

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

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

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

  • 合資轎車/自主SUV?15萬預算就該這麼選!

    合資轎車/自主SUV?15萬預算就該這麼選!

    配置這東西買的時候看不出來,用着沒有才坑爹。最近剛試駕一款合資小型SUV,頂配車型都沒有主駕駛化妝鏡。嘖······15萬落地,合資品牌優惠完基本上也只能要個次低配車型,就當為品牌和机械性能買單,哦,還有一點很重要,主流合資品牌的二手保值率還是不錯的,配置。

    當你每天都在看各種類型的“XX萬該買什麼車”,這都快成為一種套路化的流程。當你結合實際市場來看,這個價格又會顯得有些尷尬,理由沒別的——“落地價”三個字足矣,稅費保險先不算,基於中國特色的4S店購車流程,購車預算離最終成交價總會有些差距。在15萬這個大多數消費者的購車價位段中,你會發現自己要遇上無數個“艱難的選擇”。

    就從實際市場出發,如果指導價15萬內的產品,如果4S店報出七折以下且不含附加條件,那隻能說你和這家店老總關係硬到“老鐵送個飛機”的地步,有一點大家都清楚,4S店現在掙錢的主要渠道早就不是賣車了。目前市場韓系車不景氣,之前陪朋友去看K3,1.6L自動擋最低配指導價10.68萬,綜合優惠2.5萬,車價優惠1.2萬,要滿足另外那1.3萬的條件繁瑣的頭皮發麻。

    網上的新車落地攻略一抓一大把,都說的很簡單。建議各位去嘗試一下和4S店談談“裸車開走”這件事的複雜程度,至少筆者買車的時候,銷售明確表示:不在店內上牌+保險=不賣。想要裸車有想要優惠,現有4S銷售體系下很難實現。豪華車可能好一些,畢竟指導價底子夠厚。

    思域1.5T自動擋最低配,不算商業保險落地都不止15萬

    實際上裸車能優惠兩萬,對15萬級產品來說,稅費就算送的了,但這個級別能直接優惠兩萬的真的不多,大家看的基本是“綜合優惠”,而這個綜合優惠,一般是沒有那麼好拿的。

    回到正題,15萬購車的選擇很多嗎?真不多。如果要合資品牌,“緊湊級轎車+小型SUV”可以說完了,還得是中配以下。要是本田/馬自達這樣的個性之選,15萬還挺懸。自主品牌對15萬這個級別到做的挺好的,配置全/顏值高,就是太多人過不了自己心中“可靠性”那個坎。

    合資品牌的配置低已經不是談資是行規,都說經濟型車是拿來開的,但真正接受“買發動機送車”的用戶又有多少呢?配置這東西買的時候看不出來,用着沒有才坑爹。最近剛試駕一款合資小型SUV,頂配車型都沒有主駕駛化妝鏡。嘖······

    15萬落地,合資品牌優惠完基本上也只能要個次低配車型,就當為品牌和机械性能買單,哦,還有一點很重要,主流合資品牌的二手保值率還是不錯的,配置?汽配城走起吧。

    15萬落地選合資,管開不要想別的;那自主呢?可以提要求的地方就很多啦。很簡單的一點:自主品牌上升集中在SUV,合資15萬撐死來個小型,自主大把緊湊級可選,尺寸即正義,同時自主品牌在設計上的進步顯而易見。

    經常在一篇導購文章的評論區看到“中國人要買中國車”的觀點,相信現在說這句話不用像早幾年那樣咬牙切齒了,時下自主品牌中並不缺乏明星車型,在一些方面已經達到了與合資品牌五五開的水平,同時在向更好的方面發展,也許再過幾年,我們對自主品牌的印象不僅是停留在“配置高,價格低”上。

    做過一些市場調查,實際很多普通消費者對汽車產品的認識並不算高,選車基本延續“品牌-顏值-價格”依次步進,這也是自主品牌在第一輪就出局的原因。15萬內自主品牌有很大的產品空間,但大多數人不知道,知道的可能會有顧慮。很多人只認為自主的“大一級”僅體現在配置上的花架子,自主還需要更多時間為自己正名。

    這並不是一篇導購,15萬落地確實是一個尷尬的選擇,它不像20萬落地能夠有“雞頭鳳尾”之選,合資老實上低配,要麼選擇自主。如果沒有品牌忠誠度還好說,如果是想:“我要買本田,我要地球夢,我要創馳藍天”,那除掉發動機以外,其它的東西也就不要多講究了。

    買車就像堆積木,就算你是大神,想要堆個別墅也要積木夠多,而15萬內的產品卻只給你一個搭房頂的量,那你最終是就要個房頂還是來個雜物間?花15萬購車就像一個做減法的過程,性能-外觀-內飾-價格-品牌。它們就是一個大天平,很難做到“兩頭冒尖”。車企一樣是在做減法,只是合資的那個減號是大寫加粗,自主則做了模糊處理。對消費者來說,車企只會讓你知道它想讓你知道的。

    可以這麼說:“購買價值+使用體驗+使用時長”組成了一款車的伴隨你的全周期,最終它們都會走向零點。但選擇時的側重決定了你具體要哪款產品。買車尷尬的不是選擇怎樣的產品,而是沒有搞懂自己的需求,也可以為大家提供一個萬金油的解決方案:遇事不決上豐田!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

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

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

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

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

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

  • 曾月銷40000輛的SUV,才賣了3年就停產了?

    曾月銷40000輛的SUV,才賣了3年就停產了?

    )。雖然大多時候汽車的停產都難免讓人傷感惋惜,但這一次顯然不太一樣,坊間大眾的聲音可是十分的多樣,而也對實際情況相當好奇。

    清明節前,我們得知了一個比較沉重的消息,曾經月銷4萬的神車寶駿560,居然停產了!

    為了給旗下重點產品讓路,滿足新產品的產能需求,寶駿汽車於近日停產了寶駿560車型(你明擺着就是說我560不重要嘍?)。雖然大多時候汽車的停產都難免讓人傷感惋惜,但這一次顯然不太一樣,坊間大眾的聲音可是十分的多樣,而也對實際情況相當好奇。

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

    【其他文章推薦】

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

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

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

    ※超省錢租車方案

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

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

  • 【實拍】能賣得過凱美瑞邁騰?20萬級最熱門中型車到了!

    【實拍】能賣得過凱美瑞邁騰?20萬級最熱門中型車到了!

    而車尾造型簡潔,還帶有小鴨尾式的隆起。比較讓人費解的是它那雙C字型尾燈,雖然個性,但放在一款大尺寸的B級車身上顯得小氣,與簡潔明了的頭燈也沒太大呼應。內裝部分,它的設計沒有我們想象中那麼動感,造型四平八穩,反倒是具有幾分商務氣息。

    近日,虎哥收到一則重磅消息,那就是在廣州地區的一家廣汽本田4S店已經有全新一代雅閣到店!聽到這一則消息的虎哥馬上放開手中的糯米雞,帶上小夥伴飛奔到這家廣汽本田4S店!

    視頻看完還沒過癮?咱們繼續往下看。

    其實雅閣對於國內朋友來說是一款相當熟悉的車型,而對於廣東地區的朋友來說,它更加是屬於具有特殊情懷的車型!早在1999年3月份,第6代雅閣就正式在廣州實現國產,作為廣汽本田成立后推出的第一款車型它被寄予厚望。

    而截止到2002年第6代車型停產,它銷量一直很火爆,耐用、駕駛舒適成為它的最大標籤!在1999年-2002年間它銷量累計達到了13.8萬

    輛!

    緊接着推出的7代雅閣也一度造成一車難求的現象,也是經過兩代車型的努力,雅閣車型在家用中型車市場確立了標杆地位。

    而8代雅閣以前衛、富有動感的外觀,實用的大空間亦獲得優秀的市場表現。

    然而,從9代雅閣開始,“鍍鉻狂魔式”的前臉造型,和略顯臃腫的車身線條讓雅閣車型的油膩指數直線飆升!也是在這一代開始人們更多的認為它其實是一輛大叔座駕。

    當然,廣汽本田也意識到這代車型設計有些用力過猛,所以在後來改款的9.5代設計向運動感回歸,銷量得以上升!

    時至今日,第10代雅閣也即將來到我們身邊,“油膩”這個標籤也徹底與它脫離了關係!而關於它的具體細節我們就來細細分析。

    10代雅閣的前臉營造出強烈的視覺衝擊力,看實車的時候這種感覺尤為明顯。中網上粗壯的一條鍍鉻飾條立體感強,而頭燈內部一字排開的LED燈組,十分不低調!

    (注:本文圖片拍攝場地為廣汽本田第一店)

    而設計師為側面造型畫下了濃墨重彩的一筆,Coupe式的車身設計,具有溜背式的車尾造型,車頂弧線平滑。而A柱的位置比上一代車型延後了100mm,發動機艙更修長、造型也被壓得更低,運動感已相當明顯。

    輪轂的造型比較動感,但從目前的信息來看,雅閣的1.5T頂配車型也只配備17英寸的輪圈,它放在10代雅閣身上只是顯得剛剛夠用。想營造出讓人熱血噴張的運動感,它遠遠不行。或者廠家是出於對減低油耗的考慮,才限制了輪圈規格。畢竟它採用的是米其林primacy 3st浩悅系列 225/50 R17 規格的輪胎,它是一款注重降低油耗同時具備一定的操控性的輪胎型號。

    尾部帶有真雙出排氣,這點是比較厚道的。而車尾造型簡潔,還帶有小鴨尾式的隆起。比較讓人費解的是它那雙C字型尾燈,雖然個性,但放在一款大尺寸的B級車身上顯得小氣,與簡潔明了的頭燈也沒太大呼應。

    內裝部分,它的設計沒有我們想象中那麼動感,造型四平八穩,反倒是具有幾分商務氣息。

    而新車型的內飾在細節處理方面有了較明顯進步。它加入了深色的木紋飾板和金屬拉絲材質進行點綴,比以前採用的鋼琴烤漆更顯檔次感。而且做工水準也更符合B級車定位。

    儀錶盤左側設置了液晶显示屏,它能显示的多種信息,實用性不錯。值得一提的是,中控台上獨立式的8英寸多媒體觸控屏操作流暢,系統反應很快,而且显示界面也簡潔而細膩!比上一代車型好用不少,而兩側設置有實體按鍵,在開車過程中盲操作也便利,這提高了駕駛安全性。

    而中控屏支撐Honda CONNECT功能,這是一套本田開發的智能互聯繫統。頂配車型帶有前排座椅通風、加熱功能,雙區自動空調還帶有空氣凈化功能,而詳細的配置信息會在後期公布。

    這個內飾,並不能給人驚艷感,但它實用性很不錯,我想用一個“功能產生美”來形容它最貼切!

    本田的乘坐空間最大化理念在新車型上依然有很好的體現,它溜背式的尾部設計沒有對後排頭部空間帶來過多影響。而對於身高177cm的虎哥來說,它營造出接近3拳的腿部空間,翹個二郎腿很合適。

    而座椅柔軟程度和日產天籟有得一拼,坐墊長度也足夠,對於大腿的承托到位,中央扶手的長度和高度也到位,舒適性高!

    只是稍有遺憾的是後排乘客能享受到的配置基本上只有後排出風口和中央扶手上帶有的兩個杯架。

    關於新車預定:

    銷售人員表示,第10代雅閣現在已經接受預定,喜歡它的朋友可以多加留意,因為車型還沒上市,所以提車時間現在還不能確定。

    來到4S店看全新雅閣的人真的很多,可見它對於消費者吸引力還是比較大,而與這些潛在客戶交談時,他們也表示新車型內飾實用性強、做工有了進步!

    寫在最後:第10代雅閣即將到來,它的造型無疑有了脫胎換骨般的變化,其造型確實富有運動感、衝擊力!而內飾的質感得到進步,但是整體水準仍然只屬於B級車應該有的水平,乘坐空間表現出色,座椅很舒適!1.5T+CVT的動力總成雖值得期待,但2.0T+10AT車型的缺失確實有些遺憾,不過作為主力銷售的1.5T車型到底具備多大的競爭力,那就要等待後期它的配置和價格信息公布!

    特別鳴謝以下經銷商提供拍攝車輛:廣汽本田第一店;

    電話:020-36312608;地址:廣東省廣州市白雲區黃石東路448號。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

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

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

    ※超省錢租車方案

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

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

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

  • 12萬買1.6T合資緊湊型SUV?看完恍然大悟!

    12萬買1.6T合資緊湊型SUV?看完恍然大悟!

    7-2。9米C級=中大型車長度4。8米-5米,軸距2。8-3米,排量超過2。4LD級=大型車長度超過5米,軸距超過3米,排量超過3L呃,根據這個分類方法,不同的車型基本都可以找到各自對應的分類,而且通過看車型的分類級別,就能一目瞭然找到自己要的大小的車子。

    昨晚,現代ENCINO上市

    除了分體式大燈以及標配的1.6T發動機十分好看之外

    還注意到一個有意思的地方

    有媒體竟然叫它緊湊型SUV!

    緊湊型SUV?

    就是和CR-V、RAV4榮放一個級別?

    只要12萬而且還標配1.6T?

    這也太划算了吧

    然而,事情沒那麼簡單,這貨的尺寸為4195*1800*1575mm,軸距為2600mm

    長度和軸距甚至還不如本田XR-V這種小型SUV

    比起中國車企的東南DX3、傳祺GS3等小型SUV也差了不少

    這樣的尺寸也敢叫緊湊型SUV,是梁靜茹給它的勇氣嗎?

    吐槽的同時

    也必須弄清一個概念

    汽車級別怎麼劃分的?

    如今多數媒體車企給車型劃分分類的標準多是歐洲標準

    也就是大眾汽車的分級辦法,綜合排量、車型大小等因素分為

    A00級、A0級、A級、B級、C級、D級。

    A00級=微型車

    長度4米內,軸距2-2.3米

    A0級=小型車

    長度4-4.3米,軸距2.3-2.5米

    A級=緊湊型車

    長度4.2-4.6米,軸距2.5-2.7米

    B級=中型車

    長度4.5-4.9米,軸距2.7-2.9米

    C級=中大型車

    長度4.8米-5米,軸距2.8-3米,排量超過2.4L

    D級=大型車

    長度超過5米,軸距超過3米,排量超過3L

    呃,根據這個分類方法,不同的車型基本都可以找到各自對應的分類,而且通過看車型的分類級別,就能一目瞭然找到自己要的大小的車子。因此這一套分類方法十分流行。

    然而,這套方法的分級卻經常被車企混用,比如這一次,尺寸4195*1800*1575mm,軸距為2600mm的ENCINO也敢叫自己緊湊型SUV。

    除了ENCINO之外,還有不少這類型的例子:

    咱們熟悉的緊湊型轎車科魯茲,在官網pDF上把自己叫做“新銳性能中級車”,這,莫非科魯茲是中型轎車?

    非也,中型車與中級車一字之差,但是差距可不是一星半點,前文中說到中型車是歐洲分類標準,而中級車則是咱們中國的標準了,依照中國汽車分類標準(GB9417-89)的分級方法,中級車屬於排量1.6-2.5L的車型,因此依照這個標準來看,科魯茲還確實是中級車,而且大多數緊湊型車也確實可以叫自己中級車,不過在咱們大多數人的理解中,中級車=中型車啊!因此科魯茲也確實有鑽這個空子的嫌疑。

    為了產品賣得好一點,吹出一點牛皮也是合情合理的,不過相比上面兩款車型的手法,下面這些才是真大佬!

    奔馳S級:再次發明汽車

    奔馳S級在上市之初打出了許多十分誇張的口號,比如:“汽車發明者,再次發明汽車”“再見愛迪生”等等,雖然S級從設計的角度來說確實達到了一個新高度,但是再次發明汽車的口號也有些太狂了。

    昂科威:百萬級最好的隔音

    昂科威是別克旗下的中型SUV,售價21.99-31.99萬,這個價位的SUV老老實實賣車才是王道,然而昂科威並不安分,在上市之初昂科威便把百萬內最好的隔音作為賣點,要知道不同價位車型之間的差別可是十分大的,昂科威這口號也是夠大膽的,不過經實測,昂科威隔音確實比百萬級的卡宴更好。

    君越:圖書館級靜音

    同樣宣傳隔音的還有君越,這一次君越使用了圖書館級靜音水準這個詞彙,而根據《圖書館、博物館、美術館、展覽館衛生標準》(GB9669-1996)規定,圖書館的噪聲標準為≤50dB(A),這樣的噪音數值恐怕君越只有怠速工況下能夠達到吧~

    攬勝:越野車中的勞斯萊斯

    嚴格來說,這個稱號是廣大粉絲送的,不過也是非常霸氣的一個稱號了,除了越野車中的勞斯萊斯之外,路虎還有英國皇室狩獵專用車等頭銜,不過勞斯萊斯的越野車馬上就要上市了…

    總結:

    汽車廣告與宣傳中往往用到許多誇張的詞彙,越級、澎湃、奢華等詞語的出鏡率十分高,這樣的宣傳往往能讓人印象深刻,不過如果真的太相信這些宣傳詞彙,到頭來往往會讓人失望,汽車說到底也只是普通商品,既然是商品那麼一分錢一分貨這個道理還是適用的,用10萬元買到20萬的品質這種事情往往不會存在的,作為消費者,在看車企宣傳的同時一定要自己辨別,這樣才能避免被騙哦~本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

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

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

    ※回頭車貨運收費標準

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

    ※超省錢租車方案

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

  • 空間大做工好!這是6萬元區間最好的7座車?

    空間大做工好!這是6萬元區間最好的7座車?

    相比較7座SUV來說,歐尚A800的後備箱也小有優勢,主要體現在A800的後備箱高度和進深上,在這兩個參數上A800十分有優勢,超過1米的後備箱高度十分誇張。A800搭載了一台1。5T渦輪增壓發動機,型號為JL476ZQCD,這台全鋁發動機帶有DVVT技術,最大功率156馬力,最大扭矩225牛米,參數並不是很高。

    看過了非常適合家用的SUV奇駿、夠大夠霸氣的銳界、大氣實用的奧德賽、精緻好用的途安L之後,你是覺得SUV好還是MpV好呢?有興趣的朋友可以點擊鏈接查看往期文章:

    奧德賽:67.9分

    途安L:64.6分

    銳界:66分

    奇駿:65.4分

    說起8萬左右的MpV車型,就不得不提歐尚A800了!它最大的特點當然是空間、動力以及配置,這些方面它絲毫不遜於對手寶駿,而且由於這台車還是我們的工作車的原因,長期使用下來我們對它也是非常熟悉,歐尚A800外表雖然不算出色,但是論及內在絕對是一名出色的选手!

    在測試中歐尚A800也表現出了強大的實力,無論是在外觀品質、動力表現以及車內空間上都可圈可點。

    相比較長安以往的車型,歐尚A800在設計上盡量營造出時尚感與精緻感,從外觀很多細節上都能看到它的設計思路,這樣的造型設計顯然是成功的,A800雖然尺寸龐大,但是看上去卻並不顯臃腫,而且較大的車窗也能夠提供非常不錯的採光。

    內飾也是如此,我們這台高配車型中控台非常簡潔,碩大的屏幕與空調操作區的按鈕擺放都很有檔次感,全液晶儀錶盤在這個價格區間的車型里也十分少見,加上內飾的材質比較考究,整體營造的氛圍還是不錯的。

    A800的外觀工藝相比較更高價位的車型也毫不遜色,無論是外觀的鈑金縫隙,還是車漆的噴漆均勻度都很不錯,不過車漆的厚度平均不足100微米則有點太薄了。

    雖然內飾看上去不錯,但是受限於價格,A800在內飾材質上大面積使用了硬塑料,如果真的談及觸感的話還是顯得有一些廉價,不過好在內飾的拼裝工藝還是不錯的,塑料件也沒有毛刺。

    有了龐大的尺寸以及方正的設計,A800的內部空間可以說十分寬裕,無論是前排後排還是第三排空間都可以用寬敞來形容,而且A800的第二排還是採用獨立座椅設計,相比較大多數轎車來說都要更加舒適,不過受限於第三排地板以及空間,第三排的座椅規格比前兩排要小一些,硬度上也更硬一點。

    相比較7座SUV來說,歐尚A800的後備箱也小有優勢,主要體現在A800的後備箱高度和進深上,在這兩個參數上A800十分有優勢,超過1米的後備箱高度十分誇張。

    A800搭載了一台1.5T渦輪增壓發動機,型號為JL476ZQCD,這台全鋁發動機帶有DVVT技術,最大功率156馬力,最大扭矩225牛米,參數並不是很高。

    與之匹配的是6擋手動變速箱,這台變速箱齒比比較綿密,尤其是前兩個擋位可以說是為拉貨設計的,非常大的齒比對於載重來說是一件好事。

    不過由於齒比比較綿密,因此在加速上A800就有些吃虧了,2擋僅能跑到70km/h的速度來,再升上3擋之後才能破百,而3擋的加速度就遠不如1/2擋了,因此最終A800的破百成績為12.5秒,這樣的成績對於這台大傢伙來說倒也還算可以。

    作為一台MpV車型,A800顯然和運動扯不上關係,對於這類車型來說我們的要求也就是好開,從這個角度考慮A800確實算得上不錯,首先A800的離合點十分清晰,變速箱的換擋手感也不錯!加上發動機的低扭還算不錯,開起來比較得心應手。

    不過由於尺寸龐大且車身較高,懸挂也偏軟,因此A800在高速行駛的穩定性上和轎車以及多數SUV比還是不佔優勢,尤其是面對橫風的時候需要更加集中精力駕駛。

    雖然加速成績是橫評車型里最慢的,不過在實際動力感受上還是不錯,尤其是低速駕駛的時候會感覺車子很有力,再加上不錯的變速箱,A800是一台很能輕鬆駕馭的手動擋車型。

    對於這類型的MpV,其實最讓人擔心的就是隔音了,由於車內空間比較大,車子的迎風面積也大,所以容易在第二/三排產生較大的共鳴聲和風聲,不過在實際體驗中A800這個問題倒也不算嚴重,當然相比較轎車那肯定是差一些了。

    在售價上歐尚A800的指導價算是自主入門MpV中比較低的了,性價比還是不錯的。

    A800在諸多方面的表現都堪稱出色,優異的配置、不錯的駕駛感受和寬敞的空間都是它的優勢所在,對於這個價位買車的消費者來說這恰恰也是它們最關心的,再加上較低的售價使得這款車有了不錯的性價比,所以在6-9萬的MpV市場中A800確實算得上一個稱心的好選擇!

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

    【其他文章推薦】

    ※超省錢租車方案

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

    ※回頭車貨運收費標準

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

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

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

  • ThreadLocal源碼解析-Java8,ThreadLocal的使用場景分析,利用線性探測法解決hash衝突,Java-強引用、軟引用、弱引用、虛引用,利用線性探測法解決hash衝突,分析ThreadLocal的弱引用與內存泄漏問題-Java8

    ThreadLocal源碼解析-Java8,ThreadLocal的使用場景分析,利用線性探測法解決hash衝突,Java-強引用、軟引用、弱引用、虛引用,利用線性探測法解決hash衝突,分析ThreadLocal的弱引用與內存泄漏問題-Java8

    目錄

    一.ThreadLocal介紹

      1.1 ThreadLocal的功能

      1.2 ThreadLocal使用示例

    二.源碼分析-ThreadLocal

      2.1 ThreadLocal的類層級關係

      2.2 ThreadLocal的屬性字段

      2.3 創建ThreadLocal對象

      2.4 ThreadLocal-set操作

      2.5 ThreadLocal-get操作

      2.6 ThreadLocal-remove操作

    三.ThreadLocalMap類

      3.0 線性探測算法解決hash衝突

      3.1 Entry內部類

      3.2 ThreadLocalMap的常量介紹

      3.3 實例化ThreadLocalMap

      3.4 ThreadLocalMap的set操作

      3.5 清理陳舊Entry和rehash

    四.總結 

     

    一.介紹ThreadLocal

    1.1ThreadLocal的功能

      我們知道,變量從作用域範圍進行分類,可以分為“全局變量”、“局部變量”兩種:

      1.全局變量(global variable),比如類的靜態屬性(加static關鍵字),在類的整個生命周期都有效;

      2.局部變量(local variable),比如在一個方法中定義的變量,作用域只是在當前方法內,方法執行完畢后,變量就銷毀(釋放)了;

      使用全局變量,當多個線程同時修改靜態屬性,就容易出現併發問題,導致臟數據;而局部變量一般來說不會出現併發問題(在方法中開啟多線程併發修改局部變量,仍可能引起併發問題);

      再看ThreadLocal,可以用來保存局部變量,只不過這個“局部”是指“線程”作用域,也就是說,該變量在該線程的整個生命周期中有效。

      關於ThreadLocal的使用場景,可以查看ThreadLocal的使用場景分析。

     

    1.2ThreadLocal的使用示例

      ThreadLocal使用非常簡單。

    package cn.ganlixin;
    
    import org.junit.Test;
    
    import java.util.Arrays;
    import java.util.List;
    
    public class TestThreadLocal {
    
        private static class Goods {
            public Integer id;
            public List<String> tags;
        }
    
        @Test
        public void testReference() {
            Goods goods1 = new Goods();
            goods1.id = 10;
            goods1.tags = Arrays.asList("healthy", "cheap");
    
            ThreadLocal<Goods> threadLocal = new ThreadLocal<>();
            threadLocal.set(goods1);
    
            Goods goods2 = threadLocal.get();
            System.out.println(goods1); // cn.ganlixin.TestThreadLocal$Goods@1c655221
            System.out.println(goods2); // cn.ganlixin.TestThreadLocal$Goods@1c655221
    
            goods2.id = 100;
            System.out.println(goods1.id);  // 100
            System.out.println(goods2.id);  // 100
    
            threadLocal.remove();
            System.out.println(threadLocal.get()); // null
        }
    
        @Test
        public void test2() {
            // 一個線程中,可以創建多個ThreadLocal對象,多個ThreadLoca對象互不影響
            ThreadLocal<String> threadLocal1 = new ThreadLocal<>();
            ThreadLocal<String> threadLocal2 = new ThreadLocal<>();
            // ThreadLocal存的值默認為null
    
            System.out.println(threadLocal1.get()); // null
    
            threadLocal1.set("this is value1");
            threadLocal2.set("this is value2");
            System.out.println(threadLocal1.get()); // this is value1
            System.out.println(threadLocal2.get());  // this is value2
    
            // 可以重寫initialValue進行設置初始值
            ThreadLocal<String> threadLocal3 = new ThreadLocal<String>() {
                @Override
                protected String initialValue() {
                    return "this is initial value";
                }
            };
            System.out.println(threadLocal3.get()); // this is initial value
        }
    }
    

      

    二.源碼分析-ThreadLocal

    2.1ThreadLocal類層級關係

      

      ThreadLocal類中有一個內部類ThreadLocalMap,這個類特別重要,ThreadLocal的各種操作基本都是圍繞ThreadLocalMap進行的

      對於ThreadLocalMap有來說,它內部定義了一個Entry內部類,有一個table屬性,是一個Entry數組,和HashMap有一些相似的地方,但是ThreadLocalMap和HashMap並沒有什麼關係。

      先大概看一下內存關係圖,不理解也沒關係,看了後面的代碼應該就能理解了:

       

      大概解釋一下,棧中的Thread ref(引用)堆中的Thread對象,Thread對象有一個屬性threadlocals(ThreadLocalMap類型),這個Map中每一項(Entry)的value是ThreadLocal.set()的值,而Map的key則是ThreadLocal對象。

      下面在介紹源碼的時候,會從兩部分進行介紹,先介紹ThreadLocal的常用api,然後再介紹ThreadLocalMap,因為ThreadLocal的api內部其實都是在操作ThreadLocalMap,所以看源碼時一定要知道他們倆之間的關係

     

    2.2ThreadLocal的屬性

      ThreadLocal有3個屬性,主要的功能就是生成ThreadLocal的hash值。

    // threadLocalHashCode用來表示當前ThreadLocal對象的hashCode,通過計算獲得
    private final int threadLocalHashCode = nextHashCode();
    
    // 一個AtomicInteger類型的屬性,功能就是計數,各種操作都是原子性的,在併發時不會出現問題
    private static AtomicInteger nextHashCode = new AtomicInteger();
    
    // hash值的增量,不是隨便指定的,被稱為“黃金分割數”,能讓hash結果均衡分佈
    private static final int HASH_INCREMENT = 0x61c88647;
    
    /**
     * 通過計算,為當前ThreadLocal對象生成一個HashCode
     */
    private static int nextHashCode() {
        // 獲取當前nextHashCode,然後遞增HASH_INCREMENT
        return nextHashCode.getAndAdd(HASH_INCREMENT);
    }
    

      

    2.3創建ThreadLocal對象

      ThreadLocal類,只有一個無參構造器,如果需要是指默認值,則可以重寫initialValue方法:

    public ThreadLocal() {}
    
    /**
     * 初始值默認為null,要設置初始值,只需要設置為方法返回值即可
     *
     * @return ThreadLocal的初始值
     */
    protected T initialValue() {
        return null;
    }
    

      需要注意的是initialValue方法並不會在創建ThreadLocal對象的時候設置初始值,而是延遲執行:當ThreadLocal直接調用get時才會觸發initialValue執行(get之前沒有調用set來設置過值),initialValue方法在後面還會介紹。 

     

    2.4ThreadLocal-set操作

      下面這段代碼只給出了ThreadLocal的set代碼:

    public void set(T value) {
        // 獲取當前線程
        Thread t = Thread.currentThread();
    
        // 獲取當前線程的ThreadLocalMap屬性,ThreadLocal有一個threadLocals屬性(ThreadLocalMap類型)
        ThreadLocalMap map = getMap(t);
    
        if (map != null) {
            // 如果當前線程有關聯的ThreadLocalMap對象,則調用ThreadLocalMap的set方法進行設置
            map.set(this, value);
        } else {
            // 創建一個與當前線程關聯的ThreadLocalMap對象,並設置對應的value
            createMap(t, value);
        }
    }
    
    /**
     * 獲取線程關聯的ThreadLocalMap對象
     */
    ThreadLocalMap getMap(Thread t) {
        return t.threadLocals;
    }
    
    /**
     * 創建ThreadLocalMap
     * @param t          key為當前線程
     * @param firstValue value為ThreadLocal.set的值
     */
    void createMap(Thread t, T firstValue) {
        t.threadLocals = new ThreadLocalMap(this, firstValue);
    }

      如果想立即了解ThreadLocalMap的set方法,則可點此跳轉!

     

    2.5ThreadLocal-get操作

      前面說過“重寫ThreadLocal的initialValue方法來設置ThreadLocal的默認值,並不是在創建ThreadLocal的時候執行的,而是在直接get的時候執行的”,看了下面的代碼,就知道這句話的具體含義了,感覺設計很巧妙:

    public T get() {
        // 獲取當前線程
        Thread t = Thread.currentThread();
    
        // 獲取當前線程對象的threadLocals屬性
        ThreadLocalMap map = getMap(t);
    
        // 若當前線程對象的threadLocals屬性不為空(map不為空)
        if (map != null) {
            // 當前ThreadLocal對象作為key,獲取ThreadLocalMap中對應的Entry
            ThreadLocalMap.Entry e = map.getEntry(this);
    
            // 如果找到對應的Entry,則證明該線程的該ThreadLocal有值,返回值即可
            if (e != null) {
                @SuppressWarnings("unchecked")
                T result = (T) e.value;
                return result;
            }
        }
    
        // 1.當前線程對象的threadLocals屬性為空(map為空)
        // 2.或者map不為空,但是未在map中查詢到以該ThreadLocal對象為key對應的entry
        // 這兩種情況,都會進行設置初始值,並將初始值返回
        return setInitialValue();
    }
    
    /**
     * 設置ThreadLocal初始值
     *
     * @return 初始值
     */
    private T setInitialValue() {
        // 調用initialValue方法,該方法可以在創建ThreadLocal的時候重寫
        T value = initialValue();
        Thread t = Thread.currentThread();
    
        // 獲取當前線程的threadLocals屬性(map)
        ThreadLocalMap map = getMap(t);
        if (map != null) {
            // threadLocals屬性值不為空,則進行調用ThreadLocalMap的set方法
            map.set(this, value);
        } else {
            // 沒有關聯的threadLocals,則創建ThreadLocalMap,並在map中新增一個Entry
            createMap(t, value);
        }
    
        // 返回初始值
        return value;
    }
    
    /**
     * 初始值默認為null,要設置初始值,只需要設置為方法返回值即可
     * 創建ThreadLocal設置默認值,可以覆蓋initialValue方法,initialValue方法不是在創建ThreadLocal時執行,而是這個時候執行
     *
     * @return ThreadLocal的初始值
     */
    protected T initialValue() {
        return null;
    }
    

         

    2.6ThreadLocal-remove操作

      一般是在ThreadLocal對象使用完后,調用ThreadLocal的remove方法,在一定程度上,可以避免內存泄露;

     

    /**
     * 刪除當前線程中threadLocals屬性(map)中的Entry(以當前ThreadLocal為key的)
     */
    public void remove() {
        // 獲取當前線程的threadLocals屬性(ThreadLocalMap)
        ThreadLocalMap m = getMap(Thread.currentThread());
    
        if (m != null) {
            // 調用ThreadLocalMap的remove方法,刪除map中以當前ThreadLocal為key的entry
            m.remove(this);
        }
    }

     

    三.ThreadLocalMap內部類

    3.0 線性探測算法解決hash衝突

      在介紹ThreadLocalMap的之前,強烈建議先了解一下線性探測算法,這是一種解決Hash衝突的方案,如果不了解這個算法就去看ThreadLocalMap的源碼就會非常吃力,會感到莫名其妙。

      鏈接在此:利用線性探測法解決hash衝突

     

    3.1Entry內部類

      ThreadLocalMap是ThreadLocal的內部類,ThreadLocalMap底層使用數組實現,每一個數組的元素都是Entry類型(在ThreadLocalMap中定義的),源碼如下:

    /**
     * ThreadLocalMap中存放的元素類型,繼承了弱引用類
     */
    static class Entry extends WeakReference<ThreadLocal<?>> {
        // key對應的value,注意key是ThreadLocal類型
        Object value;
    
        Entry(ThreadLocal<?> k, Object v) {
            super(k);
            value = v;
        }
    }

      ThreadLocalMap和HashMap類似,比較一下:

      a:底層都是使用數組實現,數組元素類型都是內部定義,Java8中,HashMap的元素是Node類型(或者TreeNode類型),ThreadLocalMap中的元素類型是Entry類型;

      b.都是通過計算得到一個值,將這個值與數組的長度(容量)進行與操作,確定Entry應該放到哪個位置;

      c.都有初始容量、負載因子,超過擴容閾值將會觸發擴容;但是HashMap的初始容量、負載因子是可以更改的,而ThreadLocalMap的初始容量和負載因子不可修改;

      注意Entry繼承自WeakReference類,在實例化Entry時,將接收的key傳給父類構造器(也就是WeakReference的構造器),WeakReference構造器又將key傳給它的父類構造器(Reference):

    // 創建Reference對象,接受一個引用
    Reference(T referent) {
        this(referent, null);
    }
    
    // 設置引用
    Reference(T referent, ReferenceQueue<? super T> queue) {
        this.referent = referent;
        this.queue = (queue == null) ? ReferenceQueue.NULL : queue;
    }
    

      關於Java的各種引用,可以參考:Java-強引用、軟引用、弱引用、虛引用

     

    3.2ThreadLocalMap的常量介紹

    // ThreadLocalMap的初始容量
    private static final int INITIAL_CAPACITY = 16;
    
    // ThreadLocalMap底層存數據的數組
    private Entry[] table;
    
    // ThreadLocalMap中元素的個數
    private int size = 0;
    
    // 擴容閾值,當size達到閾值時會觸發擴容(loadFactor=2/3;newCapacity=2*oldCapacity)
    private int threshold; // Default to 0
    

      

    3.3創建ThreadLocalMap對象

      創建ThreadLocalMap,是在第一次調用ThreadLocal的set或者get方法時執行,其中第一次未set值,直接調用get時,就會利用ThreadLocal的初始值來創建ThreadLocalMap。

      ThreadLocalMap內部類的源碼如下:

    /**
     * 初始化一個ThreadLocalMap對象(第一次調用ThreadLocal的set方法時創建),傳入ThreadLocal對象和對應的value
     */
    ThreadLocalMap(ThreadLocal<?> firstKey, Object firstValue) {
        // 創建一個Entry數組,容量為16(默認)
        table = new Entry[INITIAL_CAPACITY];
    
        // 計算新增的元素,應該放到數組的哪個位置,根據ThreadLocal的hash值與初始容量進行"與"操作
        int i = firstKey.threadLocalHashCode & (INITIAL_CAPACITY - 1);
    
        // 創建一個Entry,設置key和value,注意Entry中沒有key屬性,key屬性是傳給Entry的父類WeakReference
        table[i] = new Entry(firstKey, firstValue);
    
        // 初始容量為1
        size = 1;
    
        // 設置擴容閾值
        setThreshold(INITIAL_CAPACITY);
    }
    
    /**
     * 設置擴容閾值,接收容量值,負載因子固定為2/3
     */
    private void setThreshold(int len) {
        threshold = len * 2 / 3;
    }

     

    3.4 ThreadLocalMap的set操作

      ThreadLocal的set方法,其實核心就是調用ThreadLocalMap的set方法,set方法的流程比較長

    /**
     * 為當前ThreadLocal對象設置value
     */
    private void set(ThreadLocal<?> key, Object value) {
        Entry[] tab = table;
        int len = tab.length;
    
        // 計算新元素應該放到哪個位置(這個位置不一定是最終存放的位置,因為可能會出現hash衝突)
        int i = key.threadLocalHashCode & (len - 1);
    
        // 判斷計算出來的位置是否被佔用,如果被佔用,則需要找出應該存放的位置
        for (Entry e = tab[i]; e != null; e = tab[i = nextIndex(i, len)]) {
            // 獲取Entry中key,也就是弱引用的對象
            ThreadLocal<?> k = e.get();
    
            // 判斷key是否相等(判斷弱引用的是否為同一個ThreadLocal對象)如果是,則進行覆蓋
            if (k == key) {
                e.value = value;
                return;
            }
    
            // k為null,也就是Entry的key已經被回收了,當前的Entry是一個陳舊的元素(stale entry)
            if (k == null) {
                // 用新元素替換掉陳舊元素,同時也會清理其他陳舊元素,防止內存泄露
                replaceStaleEntry(key, value, i);
                return;
            }
        }
    
        // map中沒有ThreadLocal對應的key,或者說沒有找到陳舊的Entry,則創建一個新的Entry,放入數組中
        tab[i] = new Entry(key, value);
        // ThreadLocalMap的元素數量加1
        int sz = ++size;
    
        // 先清理map中key為null的Entry元素,該Entry也應該被回收掉,防止內存泄露
        // 如果清理出陳舊的Entry,那麼就判斷是否需要擴容,如果需要的話,則進行rehash
        if (!cleanSomeSlots(i, sz) && sz >= threshold) {
            rehash();
        }
    }

      上面最後幾行代碼涉及到清理陳舊Entry和rehash,這兩塊的代碼在下面。

     

    3.5清理陳舊Entry和rehash

      陳舊的Entry,是指Entry的key為null,這種情況下,該Entry是不可訪問的,但是卻不會被回收,為了避免出現內存泄漏,所以需要在每次get、set、replace時,進行清理陳舊的Entry,下面只給出一部分代碼:

    /**
     * 清理map中key為null的Entry元素,該Entry也應該被回收掉,防止內存泄露
     *
     * @param i 新Entry插入的位置
     * @param n 數組中元素的數量
     * @return 是否有陳舊的entry的清除
     */
    private boolean cleanSomeSlots(int i, int n) {
        boolean removed = false;
        Entry[] tab = table;
        int len = tab.length;
        do {
            i = nextIndex(i, len);
            Entry e = tab[i];
            if (e != null && e.get() == null) {
                n = len;
                removed = true;
                i = expungeStaleEntry(i);
            }
        } while ((n >>>= 1) != 0);
        return removed;
    }
    
    private void rehash() {
        // 清除底層數組中所有陳舊的(stale)的Entry,也就是key為null的Entry
        // 同時每清除一個Entry,就對其後面的Entry重新計算hash,獲取新位置,使用線性探測法,重新確定最終位置
        expungeStaleEntries();
    
        // 清理完陳舊Entry后,判斷是否需要擴容
        if (size >= threshold - threshold / 4) {
            // 擴容時,容量變為舊容量的2倍,再進行rehash,並使用線性探測發確定Entry的新位置
            resize();
        }
    }
    

      在rehash的時候,涉及到“線性探測法”,是一種用來解決hash衝突的方案,可以查看利用線性探測法解決hash衝突了解詳情。

     

    3.6ThreadLocalMap-remove操作

      remove操作,是調用ThreadLocal.remove()方法時,刪除當前線程的ThreadLocalMap中該ThreadLocal為key的Entry。

    /**
     * 移除當前線程的threadLocals屬性中key為ThreadLocal的Entry
     *
     * @param key 要移除的Entry的key(ThreadLocal對象)
     */
    private void remove(ThreadLocal<?> key) {
        Entry[] tab = table;
        int len = tab.length;
    
        // 計算出該ThreadLocal對應的key應該存放的位置
        int i = key.threadLocalHashCode & (len - 1);
    
        // 找到指定位置,開始按照線性探測算法進行查找到該Thread的Entry
        for (Entry e = tab[i]; e != null; e = tab[i = nextIndex(i, len)]) {
    
            // 如果Entry的key相同
            if (e.get() == key) {
                // 調用WeakReference的clear方法,Entry的key是弱引用,指向ThreadLocal,現在將key指向null
                // 則該ThreadLocal對象在會在下一次gc時,被垃圾收集器回收
                e.clear();
    
                // 將該位置的Entry中的value置為null,於是value引用的對象也會被垃圾收集器回收(不會造成內存泄漏)
                // 同時內部會調整Entry的順序(開放探測算法的特點,刪除元素後會重新調整順序)
                expungeStaleEntry(i);
    
                return;
            }
        }
    }

     

    四.總結

      在學習ThreadLocal類源碼的過程還是受益頗多的:

      1.ThreadLocal的使用場景;

      2.initialValue的延遲執行;

      3.HashMap使用鏈表+紅黑樹解決hash衝突,ThreadLocalMap使用線性探測算法(開放尋址)解決hash衝突

      另外,ThreadLocal還有一部分內容,是關於弱引用和內存泄漏的問題,可以參考:分析ThreadLocal的弱引用與內存泄漏問題-Java8。

     

      原文地址:https://www.cnblogs.com/-beyond/p/13093032.html

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

    【其他文章推薦】

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

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

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

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

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

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