白菜價,這3款合資緊湊SUV最低11萬,你還選國產車嗎?

內飾雖然不如外觀張揚個性,但設計感要比逍客強,並且在用料方面更優一些,中控大部分以軟性材料為主,並用以縫線做點綴。全液晶儀錶為全系標配,可開啟的全景天窗相比逍客的玻璃車頂更為實用,而在乘坐空間表現方面,兩者則差別不大。

在這碩大的汽車消費市場中,還是存在不少合資車擁躉,他們會覺得合資車更加成熟穩定,並且相比自主品牌更顯面子;那對於那些想隨SUV大流,預算只有十多萬的小夥伴來說,能買到哪些在體型、空間上可觀,開出去又不輸面子的合資SUV呢?下面跟着來看一下吧。

東風日產-逍客

上代逍客作為這個細分市場的開創者之一,憑藉著自身不錯的品質以及較為合理的售價,一經上市就取得了傲人的成績;這代車型於2015年上市,把原本稍顯圓潤的外形變得動感犀利,簡約直接的線條設計讓整個外形顯得耐看,甚至不會讓人覺得有過時感。

內飾設計和奇駿相似度極高,整體中規中矩,功能布局清晰,設計風格沒有什麼亮點,做工用料處於同級的中上游水平,後排空間只是夠用水平,不過座椅繼承了日產的特點,舒適性和柔軟度都不錯。

相比以往傳統的日產家用車,逍客的整體懸挂調校會偏硬一些,且擁有一定的韌性,反應也更為靈活;日常的舒適性還算不錯,不過在遇到較大的溝坎路面或減速帶時,懸挂會出現多餘的跳動,而且在高速過彎時的側傾較為明顯;方向盤虛位感明顯,指向也算不上精準。

東風雷諾-科雷嘉

作為逍客的孿生兄弟,晚些出生的科雷嘉在外觀方面充斥着滿滿的法式設計元素,整體線條更為活潑靈動,視覺效果圓潤飽滿,比逍客更顯壯實;外觀細節例如科技感十足的全LED頭燈、造型立體的尾燈等等,都設計得比逍客更顯精緻用心。

內飾雖然不如外觀張揚個性,但設計感要比逍客強,並且在用料方面更優一些,中控大部分以軟性材料為主,並用以縫線做點綴;全液晶儀錶為全系標配,可開啟的全景天窗相比逍客的玻璃車頂更為實用,而在乘坐空間表現方面,兩者則差別不大。

科雷嘉整體的駕駛風格和逍客接近,日常都是以追求穩定舒適為主,不過偏硬的懸挂設定,在過坎時處理不算從容,而且對多餘振動的抑制效果一般,但整體表現出的質感還是略好於逍客。

北京現代-ix35

全新ix35在外觀方面的變化可謂是巨大,原本流暢的外形變得方正硬朗,頗有一些硬派越野車的意思,整體顯得更“man”,安全感更足。

中控設計風格與外觀有所呼應,造型硬朗簡約,有着不錯的視覺質感,並且各功能分區布局清晰,容易上手,用料上則沒給人什麼驚喜,多為硬質材質,觸感一般;不過在空間方面表現不錯,並且後排中間地台凸起不算高,稍有遺憾的是全景天窗全系都沒有配備,在開揚感方面遜於對手。

ix35的懸挂遇到小的顛簸可以很從容地過濾掉,有着不錯的舒適性與質感,但遇到大的坑窪路面處理起來就沒那麼乾脆自然,懸挂會出現多餘的彈跳外,還伴隨着車身明顯的晃動,不過整體底盤的表現還算屬於這個級別的主流水準。

各地優惠參考

在優惠幅度方面,ix35的是最少的,而科雷嘉相比胞兄逍客有着稍多一些的優惠,總體來看,三者優惠后的最終成交價格相對接近。

總結

逍客和科雷嘉都是同平台的雙胞胎車型,逍客有着更高的品牌知名度,科雷嘉則在設計上有着自己獨特的表達方式,並且配置用料表現要更好一些;而ix35有着更顯硬朗的外觀和得體的空間表現;三者你會作出怎樣的選擇呢?歡迎在下方留言喔!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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

80后90后都在看,這5款中型車開起來也超爽,還不容易壞

別克君威點評:君威和雅閣同屬主打運動型的轎車,而全新系的君威不僅搭載了性能更好的9速HYDRA-MATIC智能變速箱,還對車身進行了輕量化處理,而豐富的配置和全方位加速運動下的操控感也是令人眼前一亮。此外,優化后的車內空間和給力的主動安全配置,足以讓君威即使是在實力強勁的雅閣面前也不會黯然失色,至於其充沛有勁的動力在其同級車裡面也算是个中翹楚。

在如今的21世紀,迅速崛起的90后一代已經是購車買車的生力軍,而對年輕運動化的追求是其購車的重要因素,很多的車企為了迎合市場的需求,也紛紛開始走年輕運動化路線,連素來以成熟穩重為主打歌的日系三劍客也無所倖免。今天,就來和大家聊一聊那些運動年輕級別的車子。

本田雅閣

點評:十代雅閣顛覆了其在人們心中的傳統形象,激進的運動氣質,轎跑似的身姿以及加長的車身更顯年輕活力和視覺衝擊力,可是一直令人期待的2.0T+10AT卻並未搭載在新一代雅閣之上,不免令人感到些許失落,但1.5T+CVT無級變速器的動力總成所帶來的7.6秒加速成績以及超強的乘坐舒適感,還是令人很驚艷。而依靠驚為天人的顏值和全面提升的實力,面對更為年輕化的90後市場新生代雅閣也是競爭力十足,至於在售價方面也是十分給力。

豐田凱美瑞

點評:八代凱美瑞基於全新的TNGA平台打造,從內到外都能給人一股全新的感受,完全沒有老款車的味道,而操控和運動性也成為此代凱美瑞的代名詞。至於在性價比方面它也做到了同級之最,無論是配置還是其它方面表現都很符合它的售價。八代凱美瑞全新的2.5L引擎的壓縮比可達13.0:1,將熱效率提高到40%,對燃油經濟性有很大的提升,動力性能表現也是更為有勁,匹配8AT的變速箱,換擋快且順,可以說,這兩大核心部件是此次換代凱美瑞的精華所在。

別克君威

點評:君威和雅閣同屬主打運動型的轎車,而全新系的君威不僅搭載了性能更好的9速HYDRA-MATIC智能變速箱,還對車身進行了輕量化處理,而豐富的配置和全方位加速運動下的操控感也是令人眼前一亮。此外,優化后的車內空間和給力的主動安全配置,足以讓君威即使是在實力強勁的雅閣面前也不會黯然失色,至於其充沛有勁的動力在其同級車裡面也算是个中翹楚。相信,有顏值有實力還有不錯購車優惠君威一定可以給你不一樣的體驗。

馬自達阿特茲

點評:說運動車必然少不了阿特茲,畢竟其運動屬性可是深入人心,魂動理念下的高顏值我們在這就不贅述了,來說說最新款阿特茲的配置,18款的阿特茲在配置上可謂是誠意滿滿,無論是主動配置還是操控配置那都是異常的豐富。值得一提的是,新款的阿特茲新加入了一套GVC加速度矢量控制系統,可進一步全面的提升其運動操控感,駕駛體驗會更有趣味性。另外,阿特茲看起來是有點不溫不火,但是從其銷量和定位上來看,八九不離十都是在悶聲發大財。

日產天籟

點評:在紐約車展上全新的Altima(天籟)正式亮相,不過目前尚未引入國內,但就目前國內天籟來看,性價比也是非常的高,市場優惠也是非常的給力。新款的Altima在各方面都進行了相應升級,外觀更為年輕運動化,配置也充滿黑科技,素有大沙發之稱的座椅舒適性也是絕佳,而最大的變化還是在於其2.5L的發動機,匹配模擬7擋CVT變速箱,不僅動力有勁,換擋也是又快又平順。相信新款天籟若能引入國內,憑藉在消費者中的良好口碑和雄厚的硬實力,在合資中級車中定會有不錯的競爭優勢。

結語

上述的這幾款車都是比較注重操控和運動,性價比也相對比較高的中型車,相信對於喜歡操控和運動的年輕人來說,吸引力絕對足夠大。另外,覺得,年輕運動將會逐漸成為車企造車的新趨勢,而這一趨勢也勢必為年輕人購車帶來新的選擇和方向。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

有德系有日系,10多20萬預算,家裡第一台車買這些SUV錯不了

至於翼虎的內飾造型變化不太大,主要是更換了三幅式的方向盤,高配車型主要變化是中控台採用了8寸屏幕,低配為4寸。途觀後排空間在很長一段時間里都是同級別標杆,座椅也很貼合人體。CX-5與其他車型不太一樣,優先注重的是駕駛體驗與前排駕駛者,所以後排空間會感覺稍微有點擁擠,中間地板的凸起也比較明顯。

目前全球都對SUV的需求激增,國人對於城市SUV的喜愛也是由來已久,要分析各種緣由,其實很簡單:SUV所特有的多功能性讓它具備了媲美轎車的舒適性、寬敞且靈活多變的空間、寬大的車身和體面的外形,必要的時候走個爛路也不成問題,它幾乎滿足了一個普通家庭對於車的所有基本需求。今天對比的4款SUV都有自己鮮明的特點,至於誰能成為閣下的愛車,不妨繼續看下去。

不知不覺,國產途觀上市已經有八年的時間,改款之後的途觀外觀繼續貫徹大眾的套娃戰術,神似老大哥途銳的五官是它最大的特點,富有科技感的光帶式尾燈看起來相當提氣。雖然車身沒有太多驚艷的設計,但整體很協調,屬於典型的耐看不過時的類型。

作為馬自達的城市型SUV,CX-5其實進入國內的時間並不算晚,如果從進口版本進入國內算起,已經有六年的時間了。作為最早使用魂·動設計理念的馬自達車型,CX-5算是在眾多城市SUV里中最靠“臉”吃飯的。當然這麼說並沒有任何貶義,一款外形漂亮的車誰都喜歡。

指南者在上市之初就有被稱為“小切”的外號,僅從前臉看,指南者真的很像效益好的大切諾基,整個前臉設計成熟,七孔格柵的辨識度太高了。作為夾在自由光與自由俠中間的“老二”,明確了自己是為了進一步加強產品細分化的產物。

長安福特翼虎憑藉在中國市場多年來的出色表現,讓他在消費者當中積攢了許多優良口碑。不論是1.5T還是2.0T車型,相比同級別對手都有着出色的動力表現,同時6速手自一體變速箱的使用,也讓整個發動機轉速區間的動力變得更加平順,為駕乘人員良好的舒適度奠定了基礎。

一進去,途觀的內飾布局我們是再熟悉不過了,典型的家族式中控設計,相比近兩年大眾推出的產品而言,依舊不會顯得落伍;改款之後的CX-5內飾有着各種明顯的變化,運用了更多的平直線條,整體層次更加分明,中控屏幕採用了時下流行的懸浮式設計,方向盤的造型也精緻了許多;除了外觀粗獷,指南者內飾設計也是顯得粗獷,整體內部用料對得起這個價位,中控台和門板都以軟性材質為主。中控面板雖然採用硬質塑料,但也十分厚實;至於翼虎的內飾造型變化不太大,主要是更換了三幅式的方向盤,高配車型主要變化是中控台採用了8寸屏幕,低配為4寸。

途觀後排空間在很長一段時間里都是同級別標杆,座椅也很貼合人體;CX-5與其他車型不太一樣,優先注重的是駕駛體驗與前排駕駛者,所以後排空間會感覺稍微有點擁擠,中間地板的凸起也比較明顯;指南者的後排並沒有因為定位自己是越野車而犧牲後排位置,可以看出後排腿部能有充裕的表現;最後看到翼虎,對於緊湊型SUV來說表現不錯,中間的凸起也能接受。在後排這一局途觀是完勝。

得益於6速雙離合變速箱的高效,途觀的動力輸出十分流暢,車輛能很容易理解你的意圖;說到動態那就是CX-5的強項了,油門響應很积極,加速時變速箱樂於降擋,隨時保持高度警惕,當深踩油門時甚至可以連降四個擋位;指南者採用的1.4T發動機與自由俠一樣,不過功率都有一點提升,起步時沒有自由俠那種接合不暢的感覺,但是感受到低扭表現一般,有越野需求的朋友不妨考慮2.4升頂配車型;翼虎就日常駕駛來說1.5T表現算是很不錯了,無論市區行駛還是高速巡航,都不會感到乏力。

總結

近幾年,SUV在中國市場的大戰大家有目共睹,今天推薦的4部緊湊型SUV都是很受歡迎的產品,目前部分車型落地也能控制在20萬左右。

途觀在這個級別里一直有着“老大哥”級別的存在,“德系品質”深入人心,如果想閉着眼購車的話,途觀准沒錯。CX-5把所有的精力都留在城市用途上,而且還做得比較地好,運動的外觀氣息以及優秀的駕駛感受都是選擇它的原因。指南者是這次對比里唯一可以真的把它當作“越野車”的車型,而且光看牌子以及造型就能讓人產生掏腰包的慾望。翼虎是一款個性非常鮮明的產品,無時無刻在強調自己的運動風格,而直接對手選的卻是沉穩中庸的途觀,但造型別緻的內飾實際上人性化設計很差這點,以及整體空間表現一般,又好像做不了途觀的對手。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

20多萬起步的SUV,最高優惠14萬!這3款車同級最有面

尺寸和容積還是X1處於領先地位。配置對比配置不是X1的強項,GLA在這方面的表現則要厚道一些,特別是偏駕駛層面的配置比兩位對手要好。動態數據對比換裝了UKL前驅平台的新X1雖然比老款損失了一定的操控樂趣,但其表現在同級中依舊可以稱得上數一數二,而且最大的改變就是終於懂得照顧乘客的感受,懸挂在擁有一定的操控路感下,兼顧了不錯的日常舒適性,特別是在遇到大的顛簸路面時,過濾時的從容感明顯要比老款進步不少。

奔馳、寶馬、奧迪,

這三個在群眾中認知度最高的豪華品牌,

相信是不少小夥伴們一直以來的奮鬥目標,

還記得年少時站在夢想前依依不舍的自己嗎?

不過呢,如今的BBA為了迎合市場需求,推出了不少相對親民的車型,讓各位小夥伴們離夢想更近一步;以下介紹的三款正是如此,最低二十多萬的售價不再高高在上,並且還都是當前火熱實用的SUV車型。

華晨寶馬-X1

全新換代的X1在三圍尺寸上相比老款有了十足的增長,也為了迎合國內消費者“喜大”的口味,國產車型進行了軸距加長,達到了2780mm,再配合變得更加飽滿寬厚的外觀設計,整體氣場得到了大幅度提升,即便在大哥X3、X5面前也毫不遜色。

北京奔馳-GLA

雖然被定位為SUV車型,但它的整體設計更像是一款底盤加高的兩廂跨界車,家族化的奔馳大標前臉凸顯動感與自信,車身線條簡潔流暢,高高上揚的車窗線也符合運動型車的設計特徵,而尾部設計則相對緊湊,尾燈是為數不多的亮點,且夜間的點亮效果也很不錯。

一汽奧迪-Q3

上市多年的Q3在外形上我們是非常熟悉了,路上的能見度也比較高,改款后的前六邊形格柵變得更加硬朗立體,這也是以後奧迪Q系列的設計特徵之一,側麵線條保持了奧迪一貫的平穩簡約,包圍式的尾門設計不僅好看,還能讓後備箱開口接近最大化,實用性很好。

車身尺寸對比

X1除了在寬度稍遜Q3外,其它尺寸數據全面超越對手。

內飾中控台對比

在這方面都有着各自濃濃的家族式設計風格,X1營造的豪華感是最強的、GLA內飾和外形契合,有着濃郁的運動氛圍、而Q3的內飾設計中規中矩,並沒有太多的亮點。

乘坐空間對比

空間是這代X1的亮點,得益於加長的軸距,後排的腿部空間非常寬裕,美中不足的是坐墊有些短,對大腿的承托不夠;GLA雖然軸距上比Q3長得多,不過在後排空間表現上明顯不如Q3。

天窗尺寸對比

X1繼續保持領先優勢,各項數據都超越對手;GLA採用了分體式天窗,在開揚感方面會稍遜一些。

後備箱尺寸對比

三者都支持座椅放倒,且平整度相當;尺寸和容積還是X1處於領先地位。

配置對比

配置不是X1的強項,GLA在這方面的表現則要厚道一些,特別是偏駕駛層面的配置比兩位對手要好。

動態數據對比

換裝了UKL前驅平台的新X1雖然比老款損失了一定的操控樂趣,但其表現在同級中依舊可以稱得上數一數二,而且最大的改變就是終於懂得照顧乘客的感受,懸挂在擁有一定的操控路感下,兼顧了不錯的日常舒適性,特別是在遇到大的顛簸路面時,過濾時的從容感明顯要比老款進步不少;

而小夥伴們最擔心的1.5T三缸發動機,其實放在X1上完全夠用,並且與6AT變速箱的配合默契,整體動力響應有着不錯的积極性,不過由於先天性的結構,發動機在低速時的抖動明顯。

GLA整體的駕駛風格類似於轎車,坐姿不算高,而且靈活輕快,底盤在舒適和運動之間拿捏到位,日常開雖然會給駕駛員一定的路面反饋,但又不至於太過影響乘坐舒適性,對坑窪路面的處理還算從容,質感也還不錯。

Q3則保持了奧迪一貫的輕鬆駕駛風格,方向盤偏輕,容易上手,並且沒有明顯的虛位,底盤的高速行駛表現紮實,在低速經過小顛簸路面時有着不錯的質感和乘坐舒適性,不過在通過較大的坑窪路面時,懸挂對振動的吸收並不算全面;1.4T的日常動力表現沒有問題,提速輕快,並與6速雙離合變速箱有着不錯的默契度,無論是起步還是超車都能給人不錯的信心。

優惠參考

新X1為了迎合市場需求,採用了UKL前驅平台換來了更好的空間實用性和日常乘坐舒適性;GLA的駕駛風格更接近於轎車,但又比轎車擁有更好的通過性,遺憾的是車內空間相對較小;Q3在空間、駕駛等方面更屬於它倆的折中表現。

如果是你將會如何選擇,歡迎在下方給留言喔!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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

90后買起來也輕鬆,10萬出頭買這些車你才不會後悔

這一部分人則跟表現中庸之道的卡羅拉契合,沉穩並不是中年人的詞彙,成家立業的年輕人同樣需要這份性格。辣評:卡羅拉的外觀不像思域那麼激進,極高辨識度的豐田前臉讓你開出去並不會掉面子。之所以用沉穩來形容卡羅拉,除了外觀之外,簡潔的內飾、不急不緩的動力表現、穩定的油耗都是卡羅拉的特點。

90后已經成為消費的主力軍,為什麼汽車在外觀的設計上越來越趨向於年輕化、運動化,就是為了迎合年輕消費者的口味,因而汽車變得個性分明。人有性格,車也有性格,我們所說的磨合期就是源自於此。為什麼二手車市場出現這麼多准新車,不是因為汽車出了事故,或者發了大財想要換新車,而是車主發現車並不適合自己。那麼買車為什麼不買契合自己性格的呢,確認過性格,找到對的車。

經濟崛起的這批年輕人或熱血或沉穩或放浪不羈或剛中帶柔……靠着努力與堅持,一步步走向成功,豪車目前對他們來說還很遙遠,10-15萬這個級別恰到好處,經濟上不會那麼吃力。那麼接下來要介紹的車符不符合你的性格?一起來看一下。

熱血思域

十代思域銷量持續增長的原因之一是前幾代思域口碑的加持,但認為最大的原因在於它年輕的外表加熱血的心。外觀上對年輕人有着極大的吸引力,車身低趴,線條之間搭配得很好,車頭線條柔和,腰線則凌厲。跟現在有個性的年輕人一樣,衣着光鮮,打扮新潮,如果你認為它是安分守己的乖孩子,那你就大錯特錯了。

現在很多廠家的宣傳往往都會打上秒天秒地秒思域的名頭,但是他們從來不敢說輸了直接燒車這樣的大話,因為他們旗下所謂的神車全都抵擋不了思域那顆火熱的“心”。思域1.0T、1.5T的發動機同屬本田當家技術-地球夢系列發動機,只不過1.0T是3缸發動機,不要因為它是三缸就小覷它。須知道缸內直噴、進排氣可變正時系統、進氣側可變升程技術、變排量機油泵等主流發動機技術都出現在它的身上,在保證燃油經濟性的同時,也為它帶來了125ps的動力;1.0T尚且如此,更不用說更為強大的1.5T 177ps的發動機。

辣評:在內飾、配置同級別都差不多的車型里,思域憑藉著較為強大的動力,再加上與CVT、6擋手動變速箱之間的配合,車主在享受速度的同時,換擋也比較順滑,一個同樣有衝勁的人可以掌控這台有衝勁的車,這才是這麼多人選擇它的理由,不知道年輕的你會做出怎樣選擇。

沉穩卡羅拉

思域不是唯一的選擇,還有同樣優秀的卡羅拉,一開始就說過,選擇契合自己性格的車。當然不是每一個人都這麼熱血衝動,有的人性格沉穩,遇事不急不緩。這一部分人則跟表現中庸之道的卡羅拉契合,沉穩並不是中年人的詞彙,成家立業的年輕人同樣需要這份性格。

辣評:卡羅拉的外觀不像思域那麼激進,極高辨識度的豐田前臉讓你開出去並不會掉面子。之所以用沉穩來形容卡羅拉,除了外觀之外,簡潔的內飾、不急不緩的動力表現、穩定的油耗都是卡羅拉的特點。你很難在這輛車上找出明顯的短板,同樣,令人側目的亮點也沒有。總的來說,這樣一輛車適合那些低調又不失格調的成熟人士。

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

【其他文章推薦】

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

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

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

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

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

開這輛車出去半條街的人都盯着看!滿足虛榮心的神器

Ghibli車上有多達13處的儲物空間,足夠日常使用。後備廂的空間有523L以上,足夠一家人出行使用。給Ghibli提供動力的是一台縱置的V6雙渦輪增壓發動機,最大馬力是350匹,最大扭矩是500牛·米。匹配的是一台8AT的變速箱。經過實測,Ghibli的百公里加速時間為6。

當天拍攝瑪莎拉蒂Ghibli的時候,有一位老人家過來跟我們聊了兩句

“這車挺漂亮的,值多少錢?”

“你猜猜”

“150到160萬吧”

“沒有啦,才110萬多。”

為什麼要把這個真實事件放在開頭呢?

因為真正要買的人看完就已經下單了。

下面就是你們的車輛說明書。

一款轎跑的外形不會差到哪兒去,更何況,這是一台瑪莎拉蒂的轎跑。亞平寧半島的設計師用迷人的曲線來描繪Ghibli的車身,而車頭上則配上了最兇悍的進氣格柵和大燈,將優雅與暴力這對二律背反的元素有機地結合在一台Ghibli身上。Ghibli的車身側面充滿着性能車的特徵。修長的車頭,是為了裝下大排量高性能的發動機;溜背的造型,是為了減少風阻。Ghibli的風阻係數僅為0.29,極低極低。

Ghibli定位是一款中大型車,同時,作為一款轎跑,Ghibli的尺寸當然比不上專為國人加長的5系等中大型車。這個尺寸正好能完成4門轎跑定位所賦予它的任務。

作為一款豪華車,Ghibli的做工自然對得起自己的身價。Ghibli的漆面非常厚,而且漆面平整,显示出良好的工藝水平。

Ghibli的內飾就稍顯四平八穩,對稱式的內飾設計讓內飾看上去莊重些。Ghibli的內飾採用了真皮+木紋飾板的組合,觸感溫潤,視覺感官豪華。儀錶盤採用經典的机械轉表+液晶显示屏的組合。時速的机械轉表表底高達310km/h,轉速的紅線區去到6500轉左右。8.4英寸的中控屏幕显示效果清晰,加入carplay后,功能更加完善,更加貼合時代。

Ghibli的座椅明顯是更注重支撐性的,座椅的填充物比較硬,坐墊和靠背兩側都有巨大的側面支撐,靠背與坐墊中央部分。後排中央為了留位置給四驅系統,所以地台高高聳起。既然你選擇了Ghibli,那當然選擇接受它啦。

Ghibli的乘坐空間不算大,以173cm的身高為例,前排頭部空間有四指,後排的頭部空間一拳,腿部空間一拳四指。

Ghibli車上有多達13處的儲物空間,足夠日常使用。後備廂的空間有523L以上,足夠一家人出行使用。

給Ghibli提供動力的是一台縱置的V6雙渦輪增壓發動機,最大馬力是350匹,最大扭矩是500牛·米。匹配的是一台8AT的變速箱。

經過實測,Ghibli的百公里加速時間為6.1秒。這個成績與官方5秒的成績有所出入。這是因為當天廣州高溫天氣導致的,不具有普遍性。

這套V6雙渦輪增壓發動機+8AT變速箱組成的動力系統可謂是天衣無縫。這套動力系統有三種邏輯,一是節能模式,二是普通模式,三是運動模式。節能模式下,整車的響應比較慢,油門的寬容度很大,需要稍微踩深一些才會給你反應。普通模式的油門響應就很快了,隨踩隨有,而且油門比較線性,踩多少就給多少力。運動模式的油門響應跟普通模式的區別不大,運動模式最大的區別就是變速箱邏輯。這時候的變速箱會更願意保持在低擋位,將發動機的轉速維持在較高的區間,以確保你需要動力的時候,能夠立刻給你最大的加速度。

Ghibli的底盤極限要比動力系統還高。Ghibli前後都採用了雙叉臂獨立懸挂的形式,底盤的高度比一般轎車還要低上一點點。豪華版的前輪胎寬是245mm,後輪胎寬是275mm。所以底盤的表現非常穩健,過彎的時候完全沒有察覺出一絲側滑,車身的側傾也非常小。

Ghibli的舒適性並不突出,這跟運動的定位有關。座椅是以支撐性為第一設計目標,偏硬的坐感註定了與舒適無緣。無框車門雖然帥,但是到了舒適性這一步,就成了缺點。還有那台雙渦輪增壓發動機帶來綿綿不絕的吼叫聲。所有這些要素都決定了Ghibli不會那麼舒適,但是,你真的在乎嗎?

毫無疑問,瑪莎拉蒂Ghibli的長處就在於強勁的動力和穩健的底盤。這兩項的組合可以讓你享受到暢快淋漓的駕駛感受。當然,性價比也是瑪莎拉蒂Ghibli的長處,花了110萬,有150萬的效果,這性價比也是沒誰了。所以,下面這個評分表,不看也罷。

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

【其他文章推薦】

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

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

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

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

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

Api接口簽名驗證

通過特性來統一驗證的入口,實現ActionFilterAttribute接口來進行接口的簽名驗證

    /// <summary>
    /// 標準接口基類Controller
    /// </summary>
    [SignVerification]
    public abstract class BaseApiController : Controller
    {
    }
    
    /// <summary>
    /// 接口簽名驗證
    /// </summary>
    public class SignVerificationAttribute : ActionFilterAttribute,IAuthenticationFilter
    {
    }

實現的思路為:

1.不同對接方的接口(插件)定義不同的驗證key,不同的插件間不能混用驗證key

2.不同的插件生成不同的partnerId,partnerKey。請求的Url中需要攜帶partnerId,通過partnerId作為key在redis中找到對應的插件驗證信息(包括:partnerId,partnerKey等)

3.Url參數中必須包含partnerId,ts(時間戳),sign(加密簽名)。ts時間戳的有效時間為5分鐘,sign為(時間戳:formBody:partnerId:partnerKey)的MD5加密

4.如果通過partnerId可以找到對應的驗證信息,再把(時間戳:formBody:partnerId:partnerKey)MD5加密后和sign比較確保請求沒有被篡改

5.確保partnerId為當前插件而非其他插件的,因為redis是共用的,只是通過key去取值而已

簽名方式

將時間戳和請求Form參數以及PartnerKey以冒號連接,如(時間戳:body:partnerId:PartnerKey)
將連接好的字符串進行MD5生成sign

Url參數

參數 說明 類型 必須 備註
pid partnerId string  
ts 時間戳(格式:yyyyMMddHHmmss) string 時間戳的有效時間為5分鐘
sign MD5(時間戳:body:partnerId:pkey) string 參考簽名方式

具體代碼實現

    /// <summary>
    /// 接口簽名驗證
    /// </summary>
    public class SignVerificationAttribute : ActionFilterAttribute, IAuthenticationFilter
    {
        private readonly IDefaultUserService _defaultUserService;
        private readonly IInterfaceSignProvider _interfaceSignProvider;
        public SignVerificationAttribute()
        {
            _defaultUserService = ObjectContainer.GetService<IDefaultUserService>();
            _interfaceSignProvider = ObjectContainer.GetService<IInterfaceSignProvider>();
        }

        public void OnAuthentication(AuthenticationContext filterContext)
        {
            var request = filterContext.HttpContext.Request;
            var partnerId = request.QueryString["pid"];
            var timeStamp = request.QueryString["ts"];
            var sign = request.QueryString["sign"];//獲取Url參數
            var body = GetBodyText(request.InputStream);

            if (!ValidSign(filterContext,timeStamp, sign, body,partnerId,out IInterfaceSignInfo signInfo))//加密驗證
            {
                filterContext.Result = new ApiResult {Success = false, ErrorMessage = "無效簽名"};
                return;
            }

            var service = ObjectContainer.GetService<IAuthenticationService>();
            var userId = _defaultUserService.GetDefaultUserId(signInfo.LicNo);
            var identity = service.SignIn(userId, signInfo.LicNo, false, TimeSpan.FromMinutes(5), SessionType.WebApi);
            var newPrincipal = new GenericPrincipal(identity, new string[] { });
            filterContext.Principal = newPrincipal;
        }
        private static string GetBodyText(Stream stream)
        {
            using (var ms = new MemoryStream())
            {
                stream.CopyTo(ms);
                return Encoding.UTF8.GetString(ms.ToArray());
            }
        }

        private bool ValidSign(AuthenticationContext filterContext,string timeStamp, string sign, string body,string partnerId,out IInterfaceSignInfo signInfo)
        {
            signInfo = null;
            if (!string.IsNullOrEmpty(timeStamp) && !string.IsNullOrEmpty(sign)&& !string.IsNullOrEmpty(partnerId))
            {
                var cache = _interfaceSignProvider.GetInterfaceSignInfo(partnerId);//通過partnerId當key讀取redis
                if (cache.Enabled)
                {
                    var areaName = filterContext.RouteData.DataTokens["area"]?.ToString().ToLower();//獲取請求的area,即請求的是哪個插件
                    if (string.IsNullOrEmpty(areaName) || !cache.PluginCode.ToLower().StartsWith(areaName))
                    {
                        return false;//PluginCode需以areaName開頭,否則意味着不是同一個插件(如:PluginCode=juwov1,areaName=JuWo)
                    }
                    if (DateTime.TryParseExact(timeStamp, "yyyyMMddHHmmss", CultureInfo.CurrentCulture.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces, out var time) &&
                        (DateTime.Now - time).TotalMinutes <= 5)//時間戳有效期為5分鐘
                    {
                        signInfo = cache;
                        var hashKey = EncryptHelper.Hash($"{timeStamp}:{body}:{partnerId}:{cache.PartnerKey}", "MD5").ToLowerInvariant();//MD5加密對比
                        return string.Equals(hashKey, sign);
                    }
                }
                
            }
            return false;
        }
public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext){}
    }

 

這樣就實現了接口的簽名驗證了。但是還有一個問題是,如果同時存在多個不同的對接接口(插件)時,partnerId,PartnerKey應該是不一樣的。即插件1和插件2的驗證key是不能混用的。

可以通過路由來區分不同的插件,來選擇進入不同的area,通過area來區分不同的插件驗證key。

    public class JuWoAreaRegistration: AreaRegistration
    {
        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "JuWo_default",
                "api/JuWo/{controller}/{action}/{id}",
                new {action = "Index", id = UrlParameter.Optional},
                new[] {"iERP.Its.Web.Areas.JuWo.Controllers"}
            );
        }

        public override string AreaName => "JuWo";
    }

 在之前的ValidSign方法中,通過var areaName = filterContext.RouteData.DataTokens[“area”]?.ToString().ToLower();來獲取到當前請求的是哪個插件,在把url上獲取到的partnerId與我們之前約定好的比較看是否能對應。

 

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

【其他文章推薦】

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

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

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

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

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

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

看到大廠的面試題,你慌了嗎?,【朝花夕拾】Android多線程之(二)ThreadLocal篇,android中getWidth()和getMeasuredWidth()之間的區別

       最近參加了TX音樂Android工程師崗位的面試,這裏憑記憶記錄了面試中的一些考點,希望能幫到正在面試的你(答案還在整理中)!

1、Java調用函數傳入實際參數時,是值傳遞還是引用傳遞?

2、單例模式的DCL方式,為什麼需要第二次判空?

    單例模式的DCL是一種比較好的單例實現方式,面試中被問及的頻率非常高,考察的方式也多種多樣。根據本題的提問,這裏簡單整理了一下,這裏面的每一個點最好都能夠做到爛熟於心:

 1 public class Test {
 2     private volatile static Test instance;
 3 
 4     private Test() {
 5 
 6     }
 7 
 8     public static Test getInstance() {
 9         if (instance == null) {
10             synchronized (Test.class) {
11                 if (instance == null) {
12                     instance = new Test();
13                 }
14             }
15         }
16         return instance;
17     }
18 }

 這裡有5個要點需要注意:

    (1)第一個注意點:使用私有的構造函數,確保正常情況下該類不能被外部初始化(非正常情況比如通過反射初始化,一般使用反射之後單例模式也就失去效果了)。

    (2)第二個注意點:getInstance方法中第一個判空條件,邏輯上是可以去除的,去除之後並不影響單例的正確性,但是去除之後效率低。因為去掉之後,不管instance是否已經初始化,都會進行synchronized操作,而synchronized是一個重操作消耗性能。加上之後,如果已經初始化直接返回結果,不會進行synchronized操作。

    (3)第三個注意點:加上synchronized是為了防止多個線程同時調用getInstance方法時,各初始化instance一遍的併發問題。

    (4)第四個注意點:getInstance方法中的第二個判空條件是不可以去除,如果去除了,並且剛好有兩個線程a和b都通過了第一個判空條件。此時假設a先獲得鎖,進入synchronized的代碼塊,初始化instance,a釋放鎖。接着b獲得鎖,進入synchronized的代碼塊,也直接初始化instance,instance被初始化多遍不符合單例模式的要求~。加上第二個判空條件之後,b獲得鎖進入synchronized的代碼塊,此時instance不為空,不執行初始化操作。

    (5)第五個注意點:instance的聲明有一個voliate關鍵字,如果不用該關鍵字,有可能會出現異常。因為instance = new Test();並不是一個原子操作,會被編譯成三條指令,如下所示。
          1)給Test的實例分配內存

          2)初始化Test的構造器

          3)將instance對象指向分配的內存空間(注意,此時instance就不為空)

        然後咧,java會指令重排序,JVM根據處理器的特性,充分利用多級緩存,多核等進行適當的指令重排序,使程序在保證業務運行的同時,充分利用CPU的執行特點,最大的發揮機器的性能!簡單來說就是jvm執行上面三條指令的時候,不一定是1-2-3這樣執行,有可能是1-3-2這樣執行。如果jvm是按照1-3-2來執行的話,當1-3執行完2還沒執行的時候,如果另外一個線程調用getInstance(),因為3執行了此時instance不為空,直接返回instance。問題是2還沒執行,此時instance相當於什麼都沒有,肯定是有問題的。然後咧,voliate有一個特性就是禁止指令重排序,上面的三條指令是按照1-2-3執行的,這樣就沒有問題了。

       參考:https://blog.csdn.net/hnd978142833/article/details/81633730

3、volatile有什麼作用?AtomiticInteger有什麼作用,底層實現原理是什麼?與synchronized關鍵字有什麼區別?cas有什麼弊端?

       關於多線程相關的知識點,volatile、AtomiticInteger、synchronized、cas問題都是高頻考點,與之相關的知識點如:重量級鎖/輕量級鎖、樂觀鎖/悲觀鎖、JMM(Java Memmory Mode Java內存模型)、用戶空間/內核空間、多線程三要素(原子性、可見性、順序性)、自旋、ABA問題等,都是需要掌握的要點。

       推薦閱讀:【死磕Synchronized底層實現】

                         【面試官沒想到,volatile能吹上半個小時】

                         【《吊打面試官》系列-樂觀鎖、悲觀鎖】

                         【「每日知識點」什麼是 CAS 機制】

4、Android Log中的tag,用類名.class.getSimpleName()來獲取,會有什麼弊端?

5、反射有什麼作用?有什麼弊端?

6、廣播底層實現機制?為什麼會比AIDL方式慢?與EventBus相比有什麼區別?

7、Handler如何保證每個線程只有一個looper?ThreadLocal有什麼作用?

       這道題其實主要考察ThreadLocal,不了解ThreadLocal的可以閱讀博文:【朝花夕拾】Android多線程之(二)ThreadLocal篇,以及【再有人問你什麼是ThreadLocal,就把這篇文章甩給他!】

8、100個0~100之間的整數,實現排序

9、RxJava介紹

10、Glide介紹

11、measuredWidth和width的區別

      結論:getMeasuredWidth()獲取的是view原始的大小,也就是這個view在XML文件中配置或者是代碼中設置的大小。getWidth()獲取的是這個view最終显示的大小,這個大小有可能等於原始的大小也有可能不等於原始大小。

      推薦閱讀:【android中getWidth()和getMeasuredWidth()之間的區別】

12、SparseArray介紹,為什麼能提高性能

13、MVP與MVVM的區別,MVVM的實現方式

14、分享時,Android N開始對url做了什麼限制?

15、HashSet介紹

16、軟引用和弱引用的區別,什麼時候會GC?System.gc()的時候系統會立即回收系統垃圾嗎?

17、Exception和Error有什麼區別?Error能被捕捉嗎?OOM Error能被捕捉嗎?

18、Sharepreference commit()和apply()的區別。Sharepreference進程安全嗎?線程安全嗎?

19、500×500的png圖片所佔的內存大小。同一張圖片在xxdpi-drawable和drawable中誰佔用的內存更大,大多少?

20、RecyclerView與ListView的區別。

大體上這記得么多,面試官會根據回答的內容進一步深入提問,讀者可以在該知識點上進一步拓展。

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

【其他文章推薦】

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

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

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

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

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

因為我最近忙、所以我寫了它

一、事出有因

       1、上周工作原因項目的事情每天都很忙,周五下班和樂師兄下班的時候已經晚上11點了,然後和師兄吃了一個燒烤吃到了12點了(結果啥也沒吃,錢也花了挺多的。ps:程序員建議養生)扯遠了 ,主要是一周比較忙周六沒有進行我們學校的健康報備信息填寫。導致輔導員給我打了6個電話(現在我還是在實習中,所以還歸學校管)自己剛好在看網絡請求這一塊的東西,說干就干!!!

二、知其所以然

       1、我們學校的健康報備主要是將自己每天的信息填寫到學校的公眾號上面。打開頁面是這樣的。這個時候我們就要想一下我們是要做什麼了。首先我們健康報備的流程是=>打開學校公眾號=>輸入自己的學號點擊查詢=>然後輸入自己的正式情況=>點擊提交。

             

     三、反向分析

            1、做為程序員的我們首先要清楚我們要什麼,現在我們已經清楚了要做什麼了和步驟。現在就是用我們的程序模擬用戶進行正常的報備工作。首先我將報備鏈接從學校公眾號複製出來,然後使用瀏覽器訪問查看我們在進行報備的時候我們向瀏覽器發起了什麼和做了什麼。

            2、在左邊的是我們的頁面,右邊的是網頁請求的文件和信息,我們就一步一步的進行分析。這裏我們可以看到我們在訪問頁面的時候會生成一些信息__EVENTVALIDATION   、 __VIEWSTATEGENERATOR 我以前在長沙寫的也是ASPX頁面使用控件程序的時候也會生成一些這個,需要通過這些東西來獲取我們頁面填寫的信息所以這裏我們需要保留,因為我們等下需要輸入學號然後點擊查詢,不過不傳這些參數獲取不到我輸入的學號,這個是我嘗試過的哈哈。

             3、下面看到的是我輸入了自己的學號點擊查詢獲取到的信息,我們可以看到這裏使用的是formData進行傳遞到後台去的,也可以明顯的看到我填寫的信息了。然後進入到了填寫頁面。然後我們在查看頁面上面生成的東西。

              4、我們輸入完整的信息之後,點擊報備按鈕又會發生什麼呢?可以看到我們提交的formData信息,請求也成功了(今天我已經報備了,所以是這個提示)。現在整個流程我們已經清楚了,以及請求的參數。那就讓我們開始整活吧。

 四、開始動手

        1、廢話不多說直接創建一個.net core 的項目整活。我先寫了一個簡單的html頁面進行填寫學號信息,然後在寫一個定時任務每天晚上12點之後自動執行,健康報備信息。

public async static Task AsyncQuartz()
        {
            await Task.Run(async () =>
             {
                 //創建一個鍵值集合
                 NameValueCollection nameValue = new NameValueCollection {
                    //定時任務的序列類型是二進制的
                    { "quartz.serializer.type", "binary" }
                 };
                 //創建定時任務調度器工廠
                 StdSchedulerFactory factory = new StdSchedulerFactory(nameValue);
                 //獲取工廠中的調度器
                 IScheduler scheduler = await factory.GetScheduler();

                 //開啟調度器
                 await scheduler.Start();

                 //然後就是創建我們的任務
                 //給任務一個身份
                 //在進行建立
                 IJobDetail userServiceJob = JobBuilder.Create<HealthForJob>()
                                              .WithIdentity("UserServiceJob", "UserServiceJobGroup")
                                              .Build();

                 //任務有了創建觸發器
                 ITrigger userServiceTrigger = TriggerBuilder.Create()
                  .WithIdentity("userServiceTrigger", "userServiceTriggerGroup")
                  .StartNow()

                  //給定執行時間,然後在重複執行
                  .WithSimpleSchedule(x => x.WithIntervalInHours(6).RepeatForever())
                  .Build();

                 //將任務和觸發器進行綁定放入觸發器中

                 //單任務調用
                 await scheduler.ScheduleJob(userServiceJob, userServiceTrigger);
             });
        }

            2、首先我們需要模擬用戶向報備網頁發起請求這裏我使用的是HttpClient 對象發起請求,怕被攔截我還填了很多請求頭哈哈。但我們發起get請求的時候獲取的是一段長的html字符串。

            3、然後我們要使用一個神器進行html分析了。HtmlAgilityPack 它可以解析我們獲取的html字符串代碼

          4、我們創建一個HtmlDocument htmlDoc1 = new HtmlDocument(); 對象然後然後將我們獲取的html 對象放到 htmlDoc1.LoadHtml(strHtml);就可以解析成了正常的html了,也可以直接在頁面上面複製xpath結構,然後直接放進來就好了

                            htmlDoc1.LoadHtml(strHtml);
                            //這裏就是通過html結構尋找我們想要的節點信息
                            var liNodes1 = htmlDoc1.DocumentNode.SelectNodes("//div[@class='aspNetHidden']/input");

            5、這裏我們獲取到了html節點之後就可以進行正常取數據啦。

                6、這裏就開始我們的請求三大步了,直接模擬一個form表單請求將我們的數據傳遞就好了

 

using (HttpContent httpContent = new FormUrlEncodedContent(keyValuePairs))
                        {
                            httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
                            strHtml = httpClient.PostAsync("URL", httpContent).Result.Content.ReadAsStringAsync().Result;
                            if (!string.IsNullOrWhiteSpace(strHtml))
                            {
                                htmlDoc1.LoadHtml(strHtml);
                                var liNodes1 = htmlDoc1.DocumentNode.SelectNodes("//div[@class='aspNetHidden']/input");
                                keyValuePairs.Clear();
                                foreach (var item in liNodes1)
                                {
                                    var id = item.Attributes["id"].Value;
                                    var value = item.Attributes["value"].Value;
                                    if (!string.IsNullOrWhiteSpace(id) && !string.IsNullOrWhiteSpace(value))
                                    {
                                        keyValuePairs.Add(id, value);
                                    }
                                }
                            }
                        }

 

五、項目部署

        1、項目部署使用的是Docker +JenKins 實現自動化部署,現在我在公司也想慢慢推廣因為我們公司服務器權限管的比較嚴格,每次發布測試環境都需要找師兄發布,導致師兄很多時間都在幫我們發布項目。所以這個技術我覺得是很有必要在我們部門推廣。這個項目主要使用的了.net core 3.1 作為框架 Dapper作為數據訪問層,Quartz 定時任務 ,HtmlAgilityPack 進行Html結構分析,Docker 部署項目 ,JenKins 實現項目自動化部署。由於篇幅問題這些技術會在後面的文章分享出來。我自己也多研究一下避免誤人子弟。哈哈

六、個人說明

        1、以上就是我寫的全部流程,我們需要重複試錯,因為你要了解寫這個程序的同行的思路哈哈,我還看過一些網站是通過惰性加載信息,還有一些比較重要的信息會通過其他的方式傳遞,就是防止我們爬取,比如京東的商品價格使用Js請求的方式傳遞Jsonp請求,這個這個就需要我們多動手動倒騰了。重點說明一下這個只是自己學習使用的,對於學校健康報備我雙手支持。源碼就不分享了大家動起手來吧。

 

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

協議生成器工具

前言

何為協議生成器?其實就是前後端同學在對協議的時候使用的工具,手動添加對應的內容,最後一鍵發布自己需要的任何與協議有關的內容。
有人會說,我直接寫proto文件用它的命令行也可以生成很多文件的。不過proto本身的能力,我工具都可以使用,因為本身工具就可以調用proto。下面開始介紹一下這款附帶源碼的工具
良心價格,買來不一定要用,但是你可以拿來學習這種思想;用什麼語言開並不重要,重要的還是思想;編程編的就是思想,就跟寫文章一樣。

介紹

  1. 文件功能
  2. 定義服務

    可能我門一款遊戲用到好幾個服務,比如登陸服務,大廳獲得道具服務,戰鬥服務。對於棋牌遊戲或者聯網對戰遊戲尤其如此。而這些服務器有的是長連接,有的是短鏈接,有的是proto格式,有的是json格式。在這個工具里都是可以設置的。

  3. 定義協議號

    我們用socket做遊戲的一般定義格式的時候都是協議號+數據長度+數據段。這個很正常,當然http也是可以這樣定義的。比如http://xxx.xxx.com:80/classname/functionname?xxx=cc&xx=xx
    ip+端口,這個跟socket是一樣的。端口之後和問號之前的就可以定義為協議號了,也就是資源路徑。這樣就可以長短鏈接使用同樣的處理方式。

  4. 定義模塊

    我個人喜歡將不同的功能分為不同的模塊。然後在模塊中定義消息。

  5. 定義消息格式

    比如這個商店模塊,在進入商店時需要給服務器發送獲取商品列表的消息。而服務器需要兩個字段。並設置了類型。而工具是支持註釋的,CNName就是了。有請求格式,自然也有返回格式,所以有GetProductInfoResult,並定義了返回的消息格式。

  6. 使用

    xxxHandler代表了一個請求處理。一個處理會有請求消息,響應消息。所以將剛才定義的兩個消息格式,設置到request和response中就可以了。

導出

xml目錄為項目配置文件,export為導出內容目錄

導出的文檔

導出proto的java類

使用lua腳本解析xml文件

結語

工具介紹就這些,希望對有需求的人提供一定的幫助。關鍵還是思想,結合我微店裡的網絡框架一起學習會更快速。
歡迎關注我的公眾號,獲取更多精彩內容。

歡迎掃碼關注公眾號《微笑遊戲》,瀏覽更多內容。

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

【其他文章推薦】

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

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

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

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

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

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