奇瑞全新小型SUV瑞虎3x智趣上市 售價5.89-8.09萬元

9L,燃油經濟性十分突出。瑞虎3x大量選用環保材料技術,在零件、系統、整車各個階段對內飾空氣質量層層監控,營造綠色、環保、低氣味的內飾空間。同時,瑞虎3x遵循五星安全標準設計,具有高強度車身結構和嚴謹的製造工藝,不僅擁有輕量化前防撞鋼樑、環護式四位一體安全氣囊的全方位被動安全配置,還配備了全方位倒車雷達+動態輔助倒車影像系統、全新ESC車身穩定系統、TpMS直接式胎壓監測、EBA剎車輔助控制系統、上坡輔助HHC等越級高科技主動安全配置,全方位保障用戶行車安全。

11月15日,奇瑞全新小型SUV—瑞虎3x正式上市。新車共推出搭載1.5VVT發動機共10款車型,售價5.89萬——8.09萬元。

瑞虎3x是奇瑞戰略2.0體系下的第三款全新產品,將以“同級首款4G互聯SUV”的優勢進軍小型SUV市場,並與此前上市的新瑞虎3共同組成產品雙擎,進一步完善瑞虎家族產品線,實現對年輕時尚細分市場的全面覆蓋。

以“智趣”為標籤的瑞虎3x是奇瑞基於當下年輕消費群體的用車需求以及SUV年輕化、智能化、個性化的發展趨勢,為追求獨特個性、玩樂精神的年輕群體量身打造的一款“4G智趣SUV”。

“全新品質標杆” 引領小型SUV新潮流

作為奇瑞2.0產品的新一代小型SUV,無論是引領潮流的造型設計,還是智能互聯的科技屬性,都讓瑞虎3x領先一步樹立起小型SUV市場的全新品質標杆。

雖然是一款體量小的SUV,但瑞虎3x在尺寸空間和動力性能上都有獨特優勢。4200 *1760 *1570 mm的車身尺寸和2555 mm的超長軸距全面超越同級競爭對手。合理的設計使瑞虎3x在實際空間的表現上更為突出,提供了同級別最優的前排頭腿部空間、後排頭部空間,高達420L的後備箱載物空間也是同級容積最大。升級后的1.5VVT全國十佳發動機匹配5MT/4AT兩款變速箱,使瑞虎3x的最大輸出功率高達106馬力。百公里40m制動距離、186mm的最小離地間隙、24°接近角、32°離去角更是造就了瑞虎3x的同級最優通過性。

憑藉奇瑞2.0體系的強大支撐,瑞虎3x的品質和可靠性比肩國際水準。在耐久可靠性方面,瑞虎3x經歷了全球極限環境的苛刻路試,通過了近100項試驗驗證,開發過程中總計投入試驗車超過200台,累計行駛里程數約110萬公里;百公里綜合油耗僅5.9L,燃油經濟性十分突出。瑞虎3x大量選用環保材料技術,在零件、系統、整車各個階段對內飾空氣質量層層監控,營造綠色、環保、低氣味的內飾空間。同時,瑞虎3x遵循五星安全標準設計,具有高強度車身結構和嚴謹的製造工藝,不僅擁有輕量化前防撞鋼樑、環護式四位一體安全氣囊的全方位被動安全配置,還配備了全方位倒車雷達+動態輔助倒車影像系統、全新ESC車身穩定系統、TpMS直接式胎壓監測、EBA剎車輔助控制系統、上坡輔助HHC等越級高科技主動安全配置,全方位保障用戶行車安全。在售後服務方面也擁有尊貴禮遇,可享受“3年10萬公里整車保修”的服務品質保障。

“4G全時互聯” 定義全新用車生活

對以“智趣”為靈魂的瑞虎3x來說,“4G全時互聯”的引入,成為瑞虎3x最受關注之處。在智能科技配置方面,瑞虎3x深諳年輕用戶對互聯的需求,搭載了Cloudrive2.0智雲互聯行車系統,不僅配備了4G極速wifi、VOS智能語音控制、語音導航、Carplay手機互聯、8寸超大高清彩屏、動態輔助倒車影像、GSI換擋提醒等多項同級別獨有配置,還配有定速巡航、伴我回家功能、后視鏡電加熱 、外后視鏡集成轉向燈、遙控鑰匙等人性化科技配置,樹立起小型SUV配置標杆。

汽車“雲”服務是未來汽車發展的趨勢,瞄準年輕用戶的瑞虎3x,此次聯手業界“語音怪獸”科大訊飛推出Cloudrive 2.0智能語音交互系統,是同級唯一擁有4G互聯功能的SUV。這套系統此前在艾瑞澤5車型上已經體現了強大的功能和互動便利性,此次更是不惜成本在原先版本上升級優化,打造出“中國最強”車載語音系統。

“能說話絕不動手”,瑞虎3x還突破性地迎來了人機之間的無障礙溝通。系統內置4G無線網卡、硬件採用2G DDR3/8G ROM雙核,可實現最快的瀏覽分享速度;雙麥語音降噪模塊、雲+端語音識別技術的應用,普通話識別率近100%,16種方言也能精準識別交互;On Cloud全網雲端在線服務,私人定製在線服務、海量數據支持等互聯體驗使人與機器的交流像人與人之間的“對話”,一舉顛覆傳統用車方式。

2.0發力 品牌年輕化築優勢

從小型SUV瑞虎3到緊湊型SUV瑞虎5,再到中級SUV瑞虎7……瑞虎3x的上市,將進一步完成奇瑞在SUV市場的全方位布局。瑞虎3x將與新瑞虎3一起組合“雙子星“,實現奇瑞在SUV市場實現更細分的市場覆蓋,形成個性鮮明、高低搭配的瑞虎家族產品矩陣。

從今年上市的艾瑞澤5、瑞虎7、瑞虎3x這三款奇瑞2.0產品可以看到,奇瑞在設計中摒棄了中庸的設計理念,採用了大量時尚、個性的元素,充分迎合年輕消費者的審美和喜好。在科技配置上,新一代車型增強了智能互聯功能,搭載了語音交互、雲端服務、內置4G網卡等配置,滿足年輕消費群體高度依賴互聯網的生活方式和出行需求。奇瑞把未來品牌和產品的主力目標人群鎖定為年輕人,品牌形象正在變得更加年輕、時尚、國際范。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

※回頭車貨運收費標準

我對互聯網汽車的一些思考

理想非常美好,現實不確定性很多,唯有務實工作,埋頭苦幹,用釘釘子的精神,把一個又一個的問題解決,一個又一個的難關攻克,不斷夯實技術基礎,不斷積累試驗數據,不斷磨鍊人才隊伍,不斷疊代升級,螺旋發展,才有可能到達勝利的彼岸。

11月16日,以“創新驅動 造福人類——攜手共建網絡空間命運共同體”為主題的第三屆世界互聯網大會在烏鎮開幕,作為參与本屆大會的汽車行業代表,浙江吉利控股集團董事長李書福發表了題為《我對互聯網汽車的一些思考》的署名文章,全文如下:

我對互聯網汽車的一些思考

吉利控股集團董事長 李書福

外行人看熱鬧,內行人看門道。我半路出家,談不上內行,但由於在汽車行業工作幾十年,對所謂的互聯網汽車略有所研究。如果我沒有記錯的話,大概在2007年夏天,有一位中國記者問我:“李總,智能手機改變了傳統電話,在通訊領域發起了一場革命,你認為下一場革命是什麼行業?”我當初回答不出來,我真的不知道是哪個行業。她說:“有人講下一場革命會發生在汽車行業。”

我當初確實沒有想到,也不以為然。當然這位記者也沒有搞清楚這場革命將如何起源,如何發展。而今天,基本上已經有了一個方向,比如電動化、智能化、輕量化,尤其是無人駕駛及人們所謂的互聯網汽車,這些方向在汽車行業內已經被廣泛認同。但如何電動化,電動化程度及水平,如何輕量化,輕量化程度及水平,如何智能化,智能化程度及水平等等問題都沒有標準答案。行業內不同的企業尋求不同的解決方案,大家都在大量投入研發,尤其是在一些基礎技術研發方面的投資是巨大的。

有些技術的研發不僅僅是錢的問題,錢當然重要,但完全靠錢不一定達到目的。比如電動化程度及水平的問題,電動車技術不是新鮮技術,一百多年來一直存在。到今天,有些技術雖然取得了突破,但還有許多技術難題依然找不到解決方案。許多人都說自己的技術世界第一,都說自己的商業模式最有競爭力。但無論怎麼說,汽車電動化這條道路上還有許多困難與問題在等待着我們克服與解決,就是成為“世界第一”了也不一定就能取得成功。

我認為這一場產業革命今天才剛剛開始,離真正的成功還有很大的距離。又比如輕量化的問題,表面上看,電動化與輕量化沒有直接聯繫,但事實上二者關聯非常密切。從商業的本質與產品競爭來講,沒有輕量化就不能電動化,二者密不可分。由於電池的能量密度太低,今天的電動化技術還不能幫助整車解決輕量化的難題,二者是矛盾體。如何解決這個矛盾,全球汽車同行都在做各種嘗試,既要在成本上可行,又要在用戶體驗上有競爭力,雖然已經有了一些科學發明,已經有了一些創新成果,已經有了一些解決方案,在世界各地經常傳來一些神奇的重大技術突破的好消息,但還是需要實踐檢驗。這些檢驗不僅僅是技術可行性,同時還必須要有商業可行性。由於汽車這個產品的特殊性,這種檢驗需要一個漫長而反覆的過程。

探明石油儲量的增加以及全球石油價格的下降,對電動汽車的發展不是好消息,對電動車的成本、經濟性及用戶體驗提出更高要求。由於汽車的電動化與輕量化技術還走在路上,因此我們必須了解行業全貌,共同努力,积極探索,必須明白電動化技術路線存在許多不確定性,需要耐心,切勿急於求成。操之過急可能欲速而不達,只有尊重規律,認清現實,一步一個腳印,循序漸進,才能水到渠成。

互聯網與電動化、輕量化照樣有着先天的關係。汽車工業的發展過程就是工業與信息化技術融合的過程。傳統汽車工業是機電一體化工業,今天的汽車工業是人機、機電、电子信息一體化工業,也就是有些人所謂的互聯網汽車。

所謂互聯網,就是信息技術的網絡化發展,既涉及到汽車本身通訊技術的研發,也涉及到汽車與外部通訊網絡的連接。所謂互聯網汽車,就是把汽車與互聯網有機融合,實現人機交互智能化、機電執行自動化、駕駛路線信息化,最終實現完全無人駕駛,讓汽車成為服務於交通運輸領域的超級機器人。

但是,所有這一切美好追求,都是人們的理想藍圖。什麼時候能夠實現?如何實現?成功率有多高?誰能保證?所有這一切的一切,都需要市場檢驗。理想非常美好,現實不確定性很多,唯有務實工作,埋頭苦幹,用釘釘子的精神,把一個又一個的問題解決,一個又一個的難關攻克,不斷夯實技術基礎,不斷積累試驗數據,不斷磨鍊人才隊伍,不斷疊代升級,螺旋發展,才有可能到達勝利的彼岸。

吉利雖然制定了“藍色吉利行動”計劃,但現在看來需要重新審視,滾動修訂,尤其是美國新一任總統的能源戰略將會對巴黎氣候協定產生影響,從而對汽車行業產生影響,對汽車的電動化進程產生影響。

從理論上講,真正的互聯網汽車必須是高度電動化的汽車,沒有電動化就很難實現互聯網化,也就不可能高度智能化。原因很簡單,電動化有利於能源供給自動化、車輛啟停安全性及長時間待機網絡化的在線服務,但是從此岸到彼岸不能簡單跨越發展,也無法跨越發展,必須按規律發展。

沃爾沃新一代XC90是全球第一輛真正意義上的互聯網概念汽車

有想法的人很多,把想法變成現實卻非常艱難。十多年前沃爾沃就開始研究無人駕駛汽車、電動汽車及輕量化技術。去年沃爾沃XC90新一代車型在全球同步投放市場,其受歡迎程度完全出乎人們的想象,尤其在美國、德國、日本等市場更是供不應求,一車難求,一年內在全球拿了一百多個大獎,這麼一輛沃爾沃XC90,為何如此受歡迎呢?原因有以下幾條:

一、全球第一輛真正意義上的互聯網概念汽車,並且具備持續迭代升級的基礎能力;

二、已經實現0-130公里高度輔助駕駛功能,可以讓司機駕車更加輕鬆;

三、車內空氣質量達到兒童級別標準,不僅過濾了pM2.5,而且確保一氧化氮、一氧化碳、碳氧化合物、甲醛、花粉等各種有害物質得到有效控制;

四、車內音響設計達到歌劇院標準,舉世無雙;

五、安全水平全球遙遙領先;

六、2.0的排氣量油耗,相當於4.0功率、扭矩。

基於可疊代升級的SpA基礎架構開發的沃爾沃XC90,雖然走在行業前列,獲得市場的廣泛認可,但追兵與模仿者也不在少數,其競爭對手紛紛解剖、分析研究XC90,同行開發的類似產品也陸續推向市場,參与競爭。因此,如何更快更好升級疊代,始終擺在汽車行業的面前。

CMA模塊架構具有很強的疊代升級屬性

2013年,吉利歐洲研發中心成立,沃爾沃主導與協同吉利研發CMA基礎架構模塊,這種模塊的最大特點就是靈活、軟硬件都可疊代升級,可以搭載純電、油電、插電,也可以搭載傳統能源,电子架構技術領先,人機交互智能,最終可升級為完全無人駕駛。吉利汽車、沃爾沃汽車兩個汽車公司都可以使用CMA基礎架構模塊進行各自汽車產品的研發設計,雙方的汽車產品標準不同,設計不同,配置不同,消費群體不同。簡單地講,CMA架構就是吉利汽車公司與沃爾沃汽車公司聯合打造的互聯網汽車基礎架構,與傳統汽車底盤概念完全不同。吉利汽車基於CMA基礎架構推出的全新品牌LYNK & CO已於上月在歐洲發布,媒體和消費者給與了高度評價,該品牌下首款車型將於明年第四季度面世。

吉利汽車旗下全新品牌LYNK&CO應互聯網而生

我可以毫不誇張地說,沃爾沃汽車公司的自動駕駛技術是當今世界上最先進的技術,沃爾沃公司研發的XC90、S90汽車產品是全球唯一大批量商業化的高度輔助駕駛汽車,實現了時速0-130公里的智能輔助駕駛。自動駕駛的目的首先是為了安全,無論是電動汽車還是傳統汽車,安全是最基本的前提,這一點全世界沒有第二個汽車公司可以與沃爾沃相抗衡。美國優步與沃爾沃合作開發無人車並由沃爾沃提供基礎車型;全球知名汽車安全零部件公司奧特利夫與沃爾沃合作,聯合研發完全無人駕駛技術等等,都足以說明沃爾沃在無人駕駛技術方面的全球地位。即便這樣,我們依然認為前方的道路充滿了挑戰。

S90已經實現時速0-130公里的智能輔助駕駛

變革是需要條件的,革命是需要環境的。汽車行業的變革雖然已經開始,但條件還需要繼續成熟,環境還需要不斷改善。汽車行業的變革是需要時間的,而且可能反覆並充滿不確定性。理想可以吹得天花亂墜,可以充滿無窮想象,但現實依然殘酷無情。商場就是戰場,眼淚不能解決問題。吉利造汽車是從自己投資建設技師學院及工程師學院開始培養人才的,近二十年來在技師、工程師培養上大量投入。沃爾沃汽車公司雖然做了大量基礎性工作,雖然在汽車及交通領域互聯互通技術上取得了大量研究成果,但以後的路還很長,面臨的挑戰依然非常嚴峻。當然,我們充滿信心,我們堅信,世上無難事,只要肯登攀。

最後,我想用一句千年古訓與大家共勉:“不積跬步,無以至千里;不積小流,無以成江海。”本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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

※回頭車貨運收費標準

聽說奧迪要找“新歡”?一汽只打算用硬實力說話

前有一汽-大眾奧迪佔盡先機,後有競爭對手環飼左右,前景如何,殊未可知。相比之下,顯然合作已近30年,彼此知根知底的一汽-大眾奧迪更為老練。從率先實現國產、開創軸距加長,到成為第一個突破“百萬”銷量的豪華車品牌,再到如今打出新能源、数字出行服務和未來營銷這三張牌,都掐住了奧迪未來的全球布局,在中國市場佔盡先機。

11月11日,上汽集團與奧迪汽車股份有限公司在德國沃爾夫斯堡簽署合作框架協議,雙方將成立股比對等的合資公司,共同生產和銷售奧迪相關車型。

上汽和奧迪要聯手的消息早已傳得沸沸揚揚,隨着這次緋聞被坐實,關於奧迪“移情別戀”、“紅杏出牆”、“二嫁上汽大眾”等一系列犀利點評便紛至沓來。

然而,就在大家為一汽-大眾奧迪未來處境擔憂的時候,劇情發生了驚天翻轉——首先在11月14日上汽發布與奧迪合作的公告中,上汽最後明確指出該合作事項存在不確定性,請投資者注意風險。可見,未來仍然存在較大變數,上汽和奧迪的聯姻走向如何尚未可知。

其次就在同一天,奧迪鄭重發出與一汽的未來10年合作計劃。雙方將在電動車、移動出行服務和数字化服務及市場銷售等諸多領域展開深入合作。相比於上汽公告的語焉不詳,這份聲明拳拳到肉,明晰直接得多。

如今中國豪華車市場競爭激烈,奧迪為了滿足戰略需求,在華謀求新的合作夥伴,這無可厚非。不過上汽和奧迪將以怎樣的方式合作、又得經歷怎樣的磨合模式都在摸索中,如何落子仍然舉棋不定,然而變化多端絞殺激烈的市場形勢卻未必給他們足夠的摸索時間。前有一汽-大眾奧迪佔盡先機,後有競爭對手環飼左右,前景如何,殊未可知。

相比之下,顯然合作已近30年,彼此知根知底的一汽-大眾奧迪更為老練。從率先實現國產、開創軸距加長,到成為第一個突破“百萬”銷量的豪華車品牌,再到如今打出新能源、数字出行服務和未來營銷這三張牌,都掐住了奧迪未來的全球布局,在中國市場佔盡先機。未來一汽-大眾奧迪還將國產5款奧迪e-tron車型,其中就包括在今年品牌峰會中被提及的續航里程超過500公里的純電動車型。

此外,奧迪也是最早將4S體系引入到中國市場的豪華品牌。一汽-大眾奧迪在華有近400萬用戶,堅實的群眾基礎和體系能力優勢,也是上汽在短期內無法複製的。

所以,對於一汽來說,奧迪即使找了個“新歡”,也根本構不成威脅,最多也就是一種激勵吧。比較,硬實力不是一天能練成的,領先者的地位也不是能被輕易撼動的。總是周遭再彩旗飄飄,家裡這桿指引方向的紅旗依舊屹立不倒。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

※回頭車貨運收費標準

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

17萬起可以買到大切諾基的親弟弟?要趕緊下單了嗎

5牛米。自由俠搭載了7擋雙離合變速箱導致溜坡,並且行駛過程中頓挫不斷,而自由光的9速變速箱則到120km/h也上不了第9擋。因此,對於這兩個動力組合,我持保留意見。配置從配置上來看,全系標配ESC电子穩定控制系統和胎壓監測系統,這點頗為厚道。

前言11月16日,全新指南者正式上市,新車的定位介於自由光與自由俠之間,那麼這款車究竟有什麼特別呢?

售價上入門級的200T指南者在17萬以內,中高配則去到18到20萬區間,200TS高性能四驅版的售價在24萬元左右。從售價上不難看出,指南者完全是對準了合資緊湊型SUV的消費市場,直接競爭對手包括奇駿,CR-V等城市SUV。不過,這個價格段內,可供選擇的車型還是有點少,如果將來可以豐富一下車型選擇,那就挺不錯。

外觀設計

外觀設計上,指南者就是典型的小號大切諾基。長寬高分別為4415x1819x1625mm,而200TS版本的高度會提升到1648mm,軸距則同為2636mm前臉七個鍍鉻矩形框,整齊劃一地置在中心,相當霸氣,給人一種一夫當關,萬夫莫開的感覺。不過,這些矩形框的面積還是小於大切諾基的。

側面則複製了自由光,雖然看上去簡潔,但是一條從A柱沿車窗頂部一直延伸到尾部的鍍鉻裝飾條更顯大氣,梯形輪拱則展現了美國車剛強的一面。在輪轂的造型上,採用了五幅式漏斗形的樣式,看上去比較有力量感。尾部造型也是縮小版的大切諾基,但是由於車身尺寸不夠大, 所以整個造型無法做到很舒展,兩個車燈上方開始有明顯的回收,對乘坐空間有一定影響。

動力總成

全新指南者有兩套動力系統可供選擇分別是1.4T+7速雙離合變速箱和2.4L+9速手自一體變速箱。前者最大輸出165馬力和250牛米,後者最大輸出175馬力和227.5牛米。自由俠搭載了7擋雙離合變速箱導致溜坡,並且行駛過程中頓挫不斷,而自由光的9速變速箱則到120km/h也上不了第9擋。因此,對於這兩個動力組合,我持保留意見。

配置

從配置上來看,全系標配ESC电子穩定控制系統和胎壓監測系統,這點頗為厚道。上到頂配,則多了很多高科技配置,包括自適應定速巡航系統、前碰撞預警制動系統、行駛盲點監測系統、車道偏離預警系統、自動雙方位泊車輔助系統。

從舒適性配置來看,除最低配外,均有電動全景天窗、無鑰匙進入與啟動系統,以及雙區獨立控制空調。另外,全系標配日間行車燈和家人最喜歡的後排座椅出風口,這幾點也誠意十足。

在多媒體方面,全系標配Uconnect智能車載控制系統和語音控制系統,最低配配有5.0英寸中控台彩色显示屏,其餘配置均有8.4英寸的大屏。

作為一輛Jeep,儘管定位於城市SUV,但是一些越野的配置還是不能少的。指南者的頂配車型有Active Drive Low智能四驅系統,並且擁有同級中絕無僅有的低速扭矩放大功能。除此以外,還有五種駕駛模式可供選擇,分別是標準、沙地、泥地、雪地、岩石,全方位滿足各種路況需求。

編者總結:

Jeep近幾年也在慢慢地往市場需求投入更多的精力,然而做出來的產品卻差強人意。可見,在通往優秀家用SUV的路上,Jeep還有不少路要走,但求屬於它的那份野性不會就此丟失。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

※回頭車貨運收費標準

台中搬家公司費用怎麼算?

CDN百科第三講 | 如果用了雲服務器,還需要做CDN加速嗎?

在全站上雲的背景下,雲計算已經不僅僅是大型互聯網公司的獨享概念,正在被更多的傳統企業、中小企業甚至個人站長所採用。在眾多雲計算服務中,最常見兩個產品就是雲服務器和CDN,今天的CDN百科第三講,就給大家介紹下你關心的問題:如果用了雲服務器,還需不需要做CDN加速?

先上結論:雲服務器和CDN的業務場景不同,並不能彼此替代,同時,它們可以互相補充已達到提升效率的目的。

相對於傳統服務器,雲服務器以簡單高效、安全可靠、處理能力可彈性伸縮的計算形態為用戶提供服務,有助於降低用戶的企業IT成本,提升運維效率。雲計算髮展至今,雲服務器作為基礎服務受到了眾多企業和站長的歡迎,用於部署企業官網網站、資訊門戶、電商應用、辦公系統等等,承載數據。通常針對不同的業務場景,會有不同規格、價位、性能的雲服務器可供選擇。

CDN全稱Content Delivery Network,即內容分髮網絡,它是指將源站內容分發至最接近用戶的節點服務器,使用戶可就近取得所需內容,提高用戶訪問的響應速度和成功率。解決因分佈、帶寬、服務器性能帶來的訪問延遲問題,適用於站點加速、音樂、圖片、文件、點播、直播、應用程序等內容的加速分發。

我們就拿618促銷背後的物流體系來舉例,服務器源站就相當於某品牌自己的貨倉,而CDN就像分佈於各地的倉儲物流點。

現在很多品牌都會預先在各地倉儲物流點,提前儲備一些常用的商品(靜態文件使用CDN進行緩存),當用戶從電商平台下單購買貨物的時候(用戶發起請求),平台根據用戶的收穫地址就近匹配到最近的倉儲物流點並直接進行派貨(就近分發),讓用戶以最快的速度拿到快遞包裹(分發的內容)。我們可以用實際的生活經驗來做個對比,如果從江浙滬包郵區寄給杭州的用戶,一般第二天就能到,如果是從北京、深圳發貨,一般需要2-3天!

這種方案還能避免所有訂單都從單一貨倉發貨爆倉的風驗,當就近的貨倉物流比較繁忙時,則智能匹配其它就近的貨倉進行分流,可以減少包裹全部由總倉(源站服務器)發貨到各地的運輸(帶寬)成本。另外,採用共享的倉儲物流點(CDN)模式也可以完美地根據銷售需求來調整倉儲規模和方案,避免自建貨倉(多地雲服務器)后在業務高峰后的資源閑置浪費。

所以,降低延時,提高穩定性,降低帶寬成本,彈性靈活,都是使用CDN的好處。除此之外,CDN還可以:

第一,降低服務器帶寬壓力

假如你的服務器同時支持1000人在線,那麼當超過1000人訪問的時候,你的網站就會出現訪問瓶頸,延時、卡頓甚至宕機問題接踵而至。在使用CDN后,CDN可以將網站的靜態內容緩存在邊緣節點上,這樣當用戶訪問靜態資源時候就不用再請求回源服務器了,以此減少服務器的帶寬峰值。

第二,保護源站服務器

由於CDN的分佈式架構,用戶通過訪問就近邊緣節點獲取內容,通過這樣的跳板,有效地隱藏源站IP,從而分解源站的訪問壓力。當大規模惡意攻擊來襲時,CDN也可以做為第一道防線進行防護,大大分散攻擊強度,即使是針對動態內容的的惡意請求,CDN的智能調度系統還可以卸載源站服務器的壓力,維護系統平穩。

相信看過這篇文章后,再有人問你:使用雲服務器之後到底要不要再用CDN,你應該會有答案了吧。

往期回顧

CDN百科第一講,最近你的APP崩了嗎?

CDN百科第二講,假如沒用CDN,網絡世界會變成什麼樣?

【CDN百科】專欄中,我們會不斷科普CDN知識,解讀CDN實踐,分享CDN案例,如果你也關注CDN、使用CDN,請留言回復你關心的話題,說不定會被翻牌子哦~~

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

【其他文章推薦】

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

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

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

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

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

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

【大廠面試04期】講講一條MySQL更新語句是怎麼執行的?

在面試中,經常會問到在MySQL中一條更新語句是怎麼執行的?在本文中,我們就來詳細學習一下更新語句的執行流程,也有利於我們在工作中更好地使用MySQL。

流程圖

這是在網上找到的一張流程圖,寫的比較好,大家可以先看圖,然後看詳細閱讀下面的各個步驟。

執行流程:

1.連接驗證及解析

客戶端與MySQL Server建立連接,發送語句給MySQL Server,接收到後會針對這條語句創建一個解析樹,然後進行優化,(解析器知道語句是要執行什麼,會評估使用各種索引的代價,然後去使用索引,以及調節表的連接順序)然後調用innodb引擎的接口來執行語句。

2.寫undo log

innodb 引擎首先開啟事務,對舊數據生成一個UPDATE的語句(如果是INSERT會生成UPDATE語句),用於提交失敗后回滾,寫入undo log,得到回滾指針,並且更新這個數據行的回滾指針和版本號(會設置為更新的事務id)。

3.從索引中查找數據

根據查詢條件去B+樹中找到這一行數據(如果是唯一性索引,查到第一個數據就可以了(因為有唯一性約束),如果是普通索引,會把所有數據查找出來。)

4.更新數據

首先判斷數據頁是否在內存中?

4.1 如果數據頁在內存中

先判斷更新的索引是普通索引還是唯一性索引?

4.1.1 普通索引

如果更新的索引是普通索引,直接更新內存中的數據頁

4.1.2 唯一性索引

如果更新的索引是唯一性索引,判斷更新后是否會破壞數據的唯一性,不會的話就更新內存中的數據頁。

4.2 如果數據頁不在內存中

先判斷更新的索引是普通索引還是唯一性索引?

4.2.1 普通索引

如果是更新的索引是普通索引,將對數據頁的更新操作記錄到change buffer,change buffer會在空閑時異步更新到磁盤。

4.2.2 唯一性索引

如果是更新的索引是唯一性索引,因為需要保證更新后的唯一性,所以不能延遲更新,必須把數據頁從磁盤加載到內存,然後判斷更新后是否會數據衝突,不會的話就更新數據頁。

5.寫undo log(prepare狀態)

將對數據頁的更改寫入到redo log,將redo log設置為prepare狀態。

6.寫bin log(commit狀態),提交事務

通知MySQL server已經更新操作寫入到redo log 了,隨時可以提交,將執行的SQL寫入到bin log日誌,將redo log改成commit狀態,事務提交成功。(一個事務是否執行成功的判斷依據是是否在bin log中寫入成功。寫入成功后,即便MySQL Server崩潰,之後恢復時也會根據bin log, redo log進行恢復。具體可以看看下面的崩潰恢復原則)

補充資料:

二段提交制是什麼?

更新時,先改內存中的數據頁,將更新操作寫入redo log日誌,此時redo log進入prepare狀態,然後通知MySQL Server執行完了,隨時可以提交,MySQL Server將更新的SQL寫入bin log,然後調用innodb接口將redo log設置為提交狀態,更新完成。
如果只是寫了bin log就提交,那麼忽然發生故障,主節點可以根據redo log恢複數據到最新,但是主從同步時會丟掉這部分更新的數據。
如果只是寫binlog,然後寫redo log,如果忽然發生故障,主節點根據redo log恢複數據時就會丟掉這部分數據。
MySQL崩潰后,事務恢復時的判斷規則是怎麼樣的?(以redolog是否commit或者binlog是否完整來確定)
如果 redo log 裏面的事務是完整的,也就是已經有了 commit 標識,則直接提交;

如果 redo log 裏面的事務只有完整的 prepare,則判斷對應的事務 binlog 是否存在並完整:a. 如果是,則提交事務;b. 否則,回滾事務。

undo log是什麼?

undo log主要是保證事務的原子性,事務執行失敗就回滾,用於在事務執行失敗后,對數據回滾。undo log是邏輯日誌,記錄的是SQL。(可以認為當delete一條記錄時,undo log中會記錄一條對應的insert記錄,反之亦然,當update一條記錄時,它記錄一條對應相反的update記錄。)
在事務提交后,undo log日誌不會立即刪除,會放到一個待刪除的鏈表中,有purge線程判斷是否有其他事務在使用上一個事務之前的版本信息,然後決定是否可以清理,簡單的來說就是前面的事務都提交成功了,這些undo才能刪除。
change buffer是什麼(就是將更新數據頁的操作緩存下來)
在更新數據時,如果數據行所在的數據頁在內存中,直接更新內存中的數據頁。
如果不在內存中,為了減少磁盤IO的次數,innodb會將這些更新操作緩存在change buffer中,在下一次查詢時需要訪問這個數據頁時,在執行change buffer中的操作對數據頁進行更新。
適合寫多讀少的場景,因為這樣即便立即寫了,也不太可能會被訪問到,延遲更新可以減少磁盤I/O,只有普通索引會用到,因為唯一性索引,在更新時就需要判斷唯一性,所以沒有必要。

redo log 是什麼?

redo log就是為了保證事務的持久性。因為change buffer是存在內存中的,萬一機器重啟,change buffer中的更改沒有來得及更新到磁盤,就需要根據redo log來找回這些更新。
優點是減少磁盤I/O次數,即便發生故障也可以根據redo log來將數據恢復到最新狀態。
缺點是會造成內存臟頁,後台線程會自動對臟頁刷盤,或者是淘汰數據頁時刷盤,此時收到的查詢請求需要等待,影響查詢。

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

※回頭車貨運收費標準

.Net Core 會逆襲成為最受歡迎開發平台嗎?

本文由葡萄城技術團隊於博客園原創並首發

轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。

.Net Core 是什麼?

最新.Net Core 熱詞霸佔了各個技術熱搜,看來微軟近年來發布的 .Net Core 還是成功了引起了大家的熱烈討論。如果您對微軟熟悉,肯定是很了解.Net 平台,但是隨着互聯網的興起,好像微軟這個霸主的地位有所撼動。

 

.NET Core 是.NET Framework的新一代版本,是微軟開發的第一個跨平台 (Windows、Mac OSX、Linux) 的應用程序開發框架(Application Framework),未來也將會支持 FreeBSD 與 Alpine 平台。.Net Core也是微軟在一開始發展時就開源的軟件平台[1],由於 .NET Core 的開發目標是跨平台的因此 .NET Core 會包含 .NET Framework 的類別庫,但與 .NET Framework 不同的是 .NET Core 採用包化 (Packages) 的管理方式,應用程序只需要獲取需要的組件即可,與 .NET Framework 大包式安裝的作法截然不同,同時各包亦有獨立的版本線 (Version line),不再硬性要求應用程序跟隨主線版本。

 

重點來啦:

  • 跨平台:可在 Windows、macOS 和 Linux 操作系統上運行
  • 跨體繫結構保持一致:在多個體繫結構(包括 x64、x86 和 ARM)上以相同的行為運行代碼
  • 命令行工具:包括可用於本地開發和持續集成方案中的易於使用的命令行工具。
  • 部署靈活:可以包含在應用或已安裝的并行(用戶或系統範圍安裝)中。 可搭配 Docker 容器使用
  • 兼容性: .NET Core 通過 .NET Standard 與 .NET Framework、Xamarin 和 Mono 兼容
  • 開放源代碼: .NET Core 平台是開放源代碼,使用 MIT 和 Apache 2 許可證。 .NET Core 是一個 .NET Foundation 項目
  • 強勁性能:超強的後台性能,超出.Net Framework
  • 支持命令行執行所有操作

 

.Net Core 當前的現狀是什麼

目前可以看到很多傳統行業的信息系統也在逐漸升級平台,而且很多大的互聯網公司也已經使用,畢竟一次開發即可實現跨平台的部署及應用,也是減少成本的重要體現。

 

可以確定.Net Core 是未來的發展趨勢。 .Net FrameWork也會延續使用,畢竟短期內遷移一些大型項目是很有難度的,而且也不太可能。.Net Core 和.Net FrameWork 的關係就如同是新能源汽車和傳統穩定的油耗汽車。油耗汽車已經經歷了多年的發展,技術非常成熟穩定,可以放心自由的使用。而新能源汽車是一個新興的技術,也是未來將要取待傳統技術的未來發展方向,所以使用.Net Core 開發項目必須越早越好。

 

.Net Core 與. Net FrameWork 對比:

.NET Core

.NET Framework

跨平台 (OS platform): 支持Windows, Linux, 及 macOS

僅支持在 Windows運行

安裝過程是獨立,端對端,可以在同一計算器中為應用程序指定獨立的.Net Core 版本。

一台計算機上的所有應用程序都在同一.NET Framework版本上運行

高性能:在集合,數學,正則表達式,字符串,文件等方面都有提升。.

高兼容性

開源: 基於.NET平台既可以根據 MIT或 Apache 2 授權

與最廣泛的NuGet軟件包,第三方庫和內部庫兼容

v2.0 實現了.NET Standard 2.0¹

v4.6.1+ 以上版本支持s .NET Standard 2.0

 

使用.Net Core 優勢:

1. 支持在任何平台部署,跨平台幾乎沒有任何成本

2. 龐大的.Net 標準庫支持

3. 面向高性能的服務器開發,基於 微軟 Azure雲的平台優勢,已提供高性能的服務。

4. 高性能和可移植性

5. 兼容多平台

 

如何平滑的遷移項目至.Net Core 平台

很多原有的項目是基於.Net FrameWork 開發的,可能是 Windows. WPF, ASP.NET MVC,那本身的局限是只能在Windows系統部署外,還涉及到一些核心功能的實現。傳統框架的種種不足,需要大的突破和改變。這意味着打破變化,但結果是值得期待的。

 

遷移原有項目到新的.Net Core 平台意味着你可以保留舊項目的所有核心業務功能,不需要重構整個項目,從0開始開發。以下是我們根據經驗給出了幾類的應用的遷移難度。

項目類型

遷移難易程度

Web 應用: ASP.NET MVC

簡單

WebForm 應用

不建議遷移,因為.Net Core 支持 WebForm

Windows 應用 (Universal Framework)

不需要遷移

Windows 應用(基於Sliverlight)

簡單

WPF 及WinForms 桌面應用

複雜

控制台應用

簡單

 

1. 遷移還是重構

如果針對前端項目,遷移是最佳選擇,畢竟前端代碼均可復用,唯一要改動的就是後端代碼。儘管.Net Core 和.Net Frame Work 項目都是基於C# 語言做開發的,然而兩者是不同的運行機制。所以如果是後端很重的項目,還是建議重寫,這樣也會利用一些新技術的優勢。

 

2. NuGet 包

在遷移之前,需要確認引用的.Net 標準庫是否在.Net Core中支持或丟棄,如果不支持的話,就需要考慮如何用新的包代替或者當前功能的重構。

.Net 標準包是在.Net 4.6.1 和.Net Core 中都可使用的,所以只需要可以使用該技術升級舊的PCL。如果你添加了.Net 標準庫的引用,同樣也可以在.Net Core 項目中使用。

 

3. Html / JavaScript / CSS 復用

可以將這些文件直接複製到.NET Core解決方案中。 但是,請確保更改代碼中的文件路徑,例如CSS中的圖像路徑。 因為經典的ASP.NET / MVC模板使用“ / Content /”目錄,而.NET Core使用“ / css /”,“ / js /”,“ / lib /”等。對此沒有任何限制,它們只是約定而已 。

 

如何選擇.Net Core 的開發工具

在開發項目時候,新的平台和技術總是帶給你項目的一些新的重大突破功能,比如性能,比如核心功能提升,所以不僅我們的項目要一直跟隨升級,我們所選擇的開發工具,也要緊跟技術前沿,甚至要領先於我們的項目升級進度,為我們開發項目始終提供最有力的技術支持。

 

.NET Core是多平台應用程序的未來。 如我們所見,.NET Core提供了傳統框架不支持的強大的本機新功能。 另一方面,.NET Core並不完全支持所有現有的應用程序類型進行遷移,尤其是那些與Windows OS緊密集成的應用程序類型,因此必須仔細考慮並計劃這些挑戰。

 

所以我們在選擇新平台的同時,也需要考慮一些輔助開發的工具。以及這些工具在該領域的技術背景,是否足夠穩定,是否有足夠明確的未來,甚至比我們更能預先跟蹤未來的技術棧,以始終在我們遷移新項目的時候提供輔助工具。

 

這裏推介一些支持.Net Core 平台的開發控件:

  • API Protability Tool。這是一款輔助.net開發者在不同的開發框架上遷移源代碼工程的靜態代碼審查工具。由於.net framework具有多個歷史版本,並且.net core以及Xamarin等開發框架在基礎類庫中實現API數量和類型有很多的不一致情況。.net開發者想把自身源代碼升級到更高的.net版本或者遷移到其他的.net開發框架上,會面臨很多API調用不兼容的問題。該工具就是幫助.net開發者審查.net項目的源代碼,並生成審查報告,快速幫助開發人員找到不兼容代碼行以及協助評估遷移工作量。
  • PostMan,Postman是一款支持跨平台的應用程序,用來幫助開發者快速構建和測試REST API 服務。Postman可以模擬HTTP請求的所有謂詞,用於REST API的測試。
  • Visual Studio Code , Visual Studio Code是跨操作系統平台的輕量級代碼編輯器。支持絕大多數主流語言編譯和調試的能力。
  • ActiveReports .Net 報表控件,專註報表領域20餘年,所以可見專業性以及對於.Net 技術的完善的集成技術,支持最新的ASP.Net Core MVC (.Net Core)項目的開發。可快速解決.Net Core 平台的報表設計,展示,打印/導出,數據鑽取等功能,與此也提供了最終用戶免費設計器(在線/桌面端)解決部署差異的難題。
  •  

     

  • Wyn Enterprise 嵌入式商業智能和報表軟件,基於.NET Core平台,可以以白標的方式嵌入到應用系統中,快速增強應用系統的自助式分析、移動BI、數據可視化、報表統計和數據填報等功能,最終用戶在業務系統中便能通過數據分析,為決策制定提供數據支撐。

  •  

     

     

 

綜上所述,無論從其性能和生態上預測,.NET Core 都極有可能成為最受歡迎的開發平台,不過,當前國內僅有騰訊、阿里等廠家願意試水,葡萄城作為一家具備30多年開發經驗的軟件廠商,同樣也在持續對.NET控件進行更新迭代。

如果您有 .NET Core及其衍生技術和開發工具的需求,請訪問葡萄城官網了解詳情。

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

【其他文章推薦】

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

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

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

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

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

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

※回頭車貨運收費標準

MongoDB 4.X CRUD基本操作

本文總結了MongoDB 4.X在mongo shell客戶端涉及的對文檔一些基本的增刪改查操作,即CRUD操作。主要結合了自己平時使用MongoDB的操作命令,更詳細的命令可以參考官方文檔: https://docs.mongodb.com/manual/crud/

創建(Create Operations)

創建(Create Operations)也叫插入操作,當集合不存在時,插入操作同時也會創建集合。MongoDB提供以下幾種插入文檔方法:

  • db.collection.insert():在指定集合中插入單個或多個文檔。
  • db.collection.insertOne():在指定集合中插入單個文檔(版本3.2新增)。
  • db.collection.insertMany():在指定集合中插入多個文檔(版本3.2新增)。

db.collection.insert()

在平時的使用當中,db.collection.insert()是我用得最多的文檔插入方式,具體的語法格式如下:

db.collection.insert(
   <document or array of documents>,
   {
     writeConcern: <document>,
     ordered: <boolean>
   }
)

參數說明:

  • document:指定一個或多個文檔;
  • writeConcern:文檔寫入確認級別(可選),關於讀寫策略確認級別,以後再進行討論;
  • ordered:指定文檔是否按順序插入(可選),默認為true;
    • 當指定為true時,插入多個文檔時將文檔排序保存在一個數組中進行插入,如果其中有一個文檔插入失敗,則會導致數組中餘下的文檔不進行插入操作;
    • 當指定為false時,插入多個文檔時將文檔不進行排序保存在一個數組中進行插入,如果其中有一個文檔插入失敗,則不影響數組中餘下的文檔進行插入操作。

如果插入的文檔當中沒有指定_id字段,則MongoDB會自動為文檔生成具有唯一ObjectId值的字段_id

使用示例:

// 沒有指定_id字段的插入單個文檔
db.products.insert( { item: "card", qty: 15 } );

// 指定_id字段的插入單個文檔
db.products.insert( { _id: 10, item: "box", qty: 20 } );

// 插入多個文檔,不進行排序,多個文檔包含在數組[]中
db.products.insert(
   [
     { _id: 11, item: "pencil", qty: 50, type: "no.2" },
     { item: "pen", qty: 20 },
     { item: "eraser", qty: 25 }
   ]
);

// 插入多個文檔,並進行排序
db.products.insert(
   [
     { _id: 20, item: "lamp", qty: 50, type: "desk" },
     { _id: 21, item: "lamp", qty: 20, type: "floor" },
     { _id: 22, item: "bulk", qty: 100 }
   ],
   { ordered: false }
);

db.collection.insertOne()

語法格式如下:

db.collection.insertOne(
   <document>,
   {
      writeConcern: <document>
   }
)

參數說明:

參考db.collection.insert()的參數說明。

使用示例:

// 單行插入文檔,關於_id字段指定與否也與db.collection.insert()一致
db.products.insertOne( { item: "card", qty: 15 } );

db.collection.insertMany()

語法格式如下:

db.collection.insertMany(
   [ <document 1> , <document 2>, ... ],
   {
      writeConcern: <document>,
      ordered: <boolean>
   }
)

參數說明:

參考db.collection.insert()的參數說明。

使用示例:

參考db.collection.insert()的參數說明。

關於返回確認信息

db.collection.insert()在插入文檔成功之後返回的信息相對較為簡潔:

db.products.insert( { item: "card", qty: 15 } );
WriteResult({ "nInserted" : 1, "writeConcernError" : [ ] })

db.collection.insertOne()db.collection.insertMany()返回的信息較為詳細:

db.products.insertOne( { item: "card", qty: 15 } );
{
    "acknowledged": true,
    "insertedId": ObjectId("5eccbd214139000074003be8")
}

db.products.insertMany( [
      { _id: 10, item: "large box", qty: 20 },
      { _id: 11, item: "small box", qty: 55 },
      { _id: 12, item: "medium box", qty: 30 }
   ] );
{
    "acknowledged": true,
    "insertedIds": [
        10,
        11,
        12
    ]
}

查詢(Read Operations)

查詢(Read Operations)讀操作,是對集合中已存在的文檔進行查詢,即對應關係型數據庫當中的select操作,比如MySQL,MongoDB提供以下幾種主要查詢文檔方法:

  • db.collection.find():查詢指定集合中滿足條件的一個或多個文檔和視圖;
  • db.collection.findOne():查詢指定集合中滿足條件的第一個文檔,並以格式化方式展現,通過pretty()方法。

來自官方文檔的測試數據:

db.inventory.insertMany([
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

db.collection.find()

db.collection.find()可以說是使用頻率最高的方法了,可以用來查詢數據庫集合當中的文檔。

語法格式如下:

db.collection.find(<query>, <projection>)
  • query:查詢表達式;
  • projection:指定查詢結果集中需要显示的字段。
    • Col_name:1|true 代表显示該字段;
    • Col_name:0 | false 代表不显示該字段。

_id字段是默認显示的,如果不想显示,則顯式指定{"_id" : 0}

查詢所有文檔:

db.inventory.find()

db.inventory.find({})

db.collection.findOne()

db.collection.findOne()方法显示符合條件查詢的第一條文檔,接受的參數與db.collection.find()方法一致。

條件查詢操作符

通常對文檔的查詢,是需要帶條件的,而很少使用到不帶條件的全文檔檢索,以下總結了幾種常使用的查詢操作符:

比較操作符

比較操作符涉及的操作如下錶所示:

名稱 說明
$eq 與指定值相等
$gt 大於指定的值
$gte 大於或等於指定的值
$in 指定的值在數組中
$lt 小於指定的值
$lte 小於或等於指定的值
$ne 所有不等於指定的值
$nin 指定的值不在數組中

使用示例:

// $eq:等值查詢 SQL: SELECT * FROM inventory WHERE status = "D";
db.inventory.find( { status: "D" } )

// $ne 同$eq

// $gt:範圍查詢(以大於為例) SQL: SELECT * FROM inventory WHERE qty > 30;
db.inventory.find( { qty: { $gt: 30 } } )

// $gte、$lt、$lte 同$gt

// $in:或查詢,可使用or代替 SQL: SELECT * FROM inventory WHERE status in ("A", "D")
db.inventory.find( { status: { $in: [ "A", "D" ] } } )

// $nin 同$in

邏輯操作符

邏輯操作符涉及的操作如下錶所示:

名稱 說明
$and 指定查詢同時滿足多個條件查詢子句
$not 指定查詢不滿足條件查詢子句
$nor 指定查詢無法滿足多個條件查詢子句
$or 指定查詢滿足其中某個條件查詢子句

使用示例:

// $and: 邏輯與查詢 SQL: SELECT * FROM inventory WHERE status = "A" AND qty < 30;
db.inventory.find( { $and: [ { status: { $eq: "A" },  qty: { $lt: 30 } } ] } )

// $not: 不符合查詢 SQL: SELECT * FROM inventory WHERE status <> "A";
db.inventory.find( { status: { $not: { $eq: "A" } } } )

/*
$nor: 無法同時滿足多個條件查詢,字段不存在時也符合 SQL: SELECT * FROM inventory WHERE status <> "A" AND qty > 30; 
符合以下條件之一都會出現在結果集中:
1.文檔包含status和qty字段並且符合條件;
2.文檔包含status字段並且符合條件,不包含qty字段;
3.文檔不包含status字段,包含qty字段並且符合條件;
4.文檔不包含status字段和qty字段。
*/
db.inventory.find( { $nor: [ { status: { $eq: "A" } },  { qty: { $lt: 30 } } ] } )

// $or: 邏輯或查詢 SQL: SELECT * FROM inventory WHERE status = "A" OR qty < 30;
db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )

元素操作符

元素操作符主要涉及的操作如下錶所示:

名稱 說明
$exists 指定查詢文檔是否有對應的字段
$type 指定查詢文檔的某個字段是否是對應類型

使用示例:

// $exists: 是否存在指定字段查詢
db.inventory.find( { price: { $exists: true } } )

// $type: 字段是否是指定類型查詢
db.inventory.find( { "qty": { $type: "double" } } )

評估操作符

評估操作符主要涉及的操作如下錶所示,更多操作符可以參考官方文檔:https://docs.mongodb.com/manual/reference/operator/query-evaluation/

名稱 說明
$expr 為同一個文檔中的字段指定表達式並且符合條件的查詢,比如比較同一文檔當中兩個字段的值
$mod 為字段值取模並且符合條件的查詢

為了更好的使用這兩個主要的操作符,額外創建個文檔:

db.monthlyBudget.insertMany([
    { "_id" : 1, "category" : "food", "budget": 400, "spent": 450 },
    { "_id" : 2, "category" : "drinks", "budget": 100, "spent": 150 },
    { "_id" : 3, "category" : "clothes", "budget": 100, "spent": 50 },
    { "_id" : 4, "category" : "misc", "budget": 500, "spent": 300 },
    { "_id" : 5, "category" : "travel", "budget": 200, "spent": 650 }
]);

使用示例:

// $expr: 允許使用聚合表達式,這裏以$gt為例,更多表達式參考 https://docs.mongodb.com/manual/meta/aggregation-quick-reference/#aggregation-expressions
db.monthlyBudget.find( { $expr: { $gt: [ "$spent" , "$budget" ] } } )

// $mod: 對字段所在值進行取模運算,显示符合條件的查詢,如qty字段值對4取模,並且餘數為0
db.inventory.find( { qty: { $mod: [ 4, 0 ] } } )

更新(Update Operations)

更新(Update Operations)是對已存在的文檔進行修改操作,MongoDB提供以下幾種主要更新文檔方法:

  • db.collection.update():更新或替換集合中符合條件的一個或多個文檔;
  • db.collection.updateOne():只更新集合中符合條件的第一個文檔,即使有多個文檔(版本3.2新增);
  • db.collection.updateMany():更新集合中所有符合條件的文檔(版本3.2新增)。

db.collection.update()

根據update指定的表達式可以修改文檔中符合條件的字段或代替整個文檔。具體的語法格式如下:

db.collection.update(
   <query>,   //查詢表達式
   <update>,  //更新表達式
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ],
     hint:  <document|string>                   // 版本4.2新增
   }
)

參數說明:

  • query:更新文檔的查詢表達式;如果指定了參數upsert: true並且集合中沒有符合查詢條件的文檔,查詢條件中有關於字段_id指定了.分隔符的,並不會插入新的文檔;

  • update:主要包含三種格式

    • 1.更新文檔:只包含更新操作符表達式;
    • 2.替換文檔:只包含<field1>: <value1>對;
    • 3.聚合管道:版本4.2新增,詳細參考官方文檔。
  • upsert:當query查詢條件沒符合更新的文檔,就新創建文檔(可選),默認值為false

  • multi:是否更新多個符合條件的文檔(可選),默認值為false,只更新符合條件的第一個文檔;

  • writeConcern:參考db.collection.insert()相同參數說明;

  • collation:指定校對規則(可選,版本3.4新增);

  • arrayFilters:文檔數組更新過濾操作符(可選,版本3.6新增);

    詳細參考:https://docs.mongodb.com/manual/reference/method/db.collection.update/#specify-arrayfilters-for-array-update-operations

  • hint:採用文檔或字符串的形式指定適用於查詢表達式的索引,如果索引不存在則報錯(可選,版本4.2新增)。

使用示例:

使用示例將通過使用兩種場景進行,一是沒有使用參數選項upsert,二是使用參數選項upsert

  • 不使用選項upsert
// 測試數據
db.books.remove({});

db.books.insertMany([
  {
    "_id" : 1,
    "item" : "TBD",
    "stock" : 0,
    "info" : { "publisher" : "1111", "pages" : 430 },
    "tags" : [ "technology", "computer" ],
    "ratings" : [ { "by" : "ijk", "rating" : 4 }, { "by" : "lmn", "rating" : 5 } ],
    "reorder" : false
   },
   {
    "_id" : 2,
    "item" : "XYZ123",
    "stock" : 15,
    "info" : { "publisher" : "5555", "pages" : 150 },
    "tags" : [ ],
    "ratings" : [ { "by" : "xyz", "rating" : 5 } ],
    "reorder" : false
   }
]);


/* 使用選項參數 upsert: true
1、如果查詢表達式找到匹配的文檔,則執行更新操作;
2、如果查詢表達式沒有找到匹配的文檔,則執行插入操作;
*/
db.books.update(
   { item: "ZZZ135" },   // 查詢表達式
   {                     // 更新或替換文檔
     item: "ZZZ135",
     stock: 5,
     tags: [ "database" ]
   },
   { upsert: true }
);

// 1.使用更新操作表達式
/* $set操作符
1、查詢表達式指定需要更新的文檔 _id;
2、$inc操作符: stock的字段值+5;
3、$set操作符: 替換item字段值,替換嵌入文檔info的publisher字段值,替換tags字段值,替換數組ratings的第二個元素值
*/
db.books.update(
   { _id: 1 },
   {
     $inc: { stock: 5 },
     $set: {
       item: "ABC123",
       "info.publisher": "2222",
       tags: [ "software" ],
       "ratings.1": { by: "xyz", rating: 3 }
     }
   }
);
更新之後的文檔:
{

  "_id" : 1,
  "item" : "ABC123",
  "stock" : 5,
  "info" : { "publisher" : "2222", "pages" : 430 },
  "tags" : [ "software" ],
  "ratings" : [ { "by" : "ijk", "rating" : 4 }, { "by" : "xyz", "rating" : 3 } ],
  "reorder" : false
}

// 2.為已存在的數組添加元素
// $push操作符: 為指定文檔數組ratings添加一個元素
db.books.update(
   { _id: 2 },
   {
     $push: { ratings: { "by" : "jkl", "rating" : 2 } }
   }
);
更新之後的文檔:
{
  "_id" : 2,
  "item" : "XYZ123",
  "stock" : 15,
  "info" : {
   "publisher" : "5555",
   "pages" : 150
  },
  "tags" : [ ],
  "ratings" : [
   { "by" : "xyz", "rating" : 5 },

   { "by" : "jkl", "rating" : 2 }

  ],
  "reorder" : false
 }

// 3.文檔移除字段
// $unset操作符: 移除文檔的指定字段,為_id:1文檔移除tags字段
db.books.update( { _id: 1 }, { $unset: { tags: 1 } } );
更新后的文檔:
{
  "_id" : 1,
  "item" : "TBD",
  "stock" : 0,
  "info" : {
   "publisher" : "1111",
   "pages" : 430
  },
  "ratings" : [ { "by" : "ijk", "rating" : 4 }, { "by" : "lmn", "rating" : 5 } ],
  "reorder" : false
 }

// 4.替換整個文檔
// 替換_id:2的文檔
db.books.update(
   { _id: 2 },
   {
     item: "XYZ123",
     stock: 10,
     info: { publisher: "2255", pages: 150 },
     tags: [ "baking", "cooking" ]
   }
);
更新后的文檔:
{
   "_id" : 2,
   "item" : "XYZ123",
   "stock" : 10,
   "info" : { "publisher" : "2255", "pages" : 150 },
   "tags" : [ "baking", "cooking" ]
}

// 5.更新多個文檔
db.books.update(
   { stock: { $lte: 10 } },
   { $set: { reorder: true } },
   { multi: true }
);
更新后的全部文檔:
[
  {
    "_id" : 1,
    "item" : "ABC123",
    "stock" : 5,
    "info" : {
     "publisher" : "2222",
     "pages" : 430
    },
    "ratings" : [ { "by" : "ijk", "rating" : 4 }, { "by" : "xyz", "rating" : 3 } ],

    "reorder" : true

   }
   {
     "_id" : 2,
     "item" : "XYZ123",
     "stock" : 10,
     "info" : { "publisher" : "2255", "pages" : 150 },
     "tags" : [ "baking", "cooking" ],

     "reorder" : true

   }
]
  • 使用upserts選項
/* 使用選項參數 upsert: true
1、如果查詢表達式找到匹配的文檔,則執行更新操作;
2、如果查詢表達式沒有找到匹配的文檔,則執行插入操作;
*/

// 1.插入未符合更新條件的文檔
db.books.update(
   { item: "ZZZ135" },   
   {                     
     item: "ZZZ135",
     stock: 5,
     tags: [ "database" ]
   },

   { upsert: true }      

);
因為集合併未滿足條件的文檔,則插入的文檔為:
{
  "_id" : ObjectId("5da78973835b2f1c75347a83"),
  "item" : "ZZZ135",
  "stock" : 5,
  "tags" : [ "database" ]
}

// 2.插入未符合更新條件並且基於更新操作符的文檔
// 如果沒有符合更新查詢條件,並且使用的是更新操作符,則會基於當前的查詢條件和更新操作符字段插入新的文檔
db.books.update(
   { item: "BLP921" },   
   {                     
      $set: { reorder: false },
      $setOnInsert: { stock: 10 }
   },
   { upsert: true }      
);
新插入的文檔為:
{
  "_id" : ObjectId("5da79019835b2f1c75348a0a"),
  "item" : "BLP921",
  "reorder" : false,
  "stock" : 10
}

// 3.插入未符合更新條件並且基於聚合管道的文檔
// 關於聚合管道請參考官方文檔:https://docs.mongodb.com/manual/reference/method/db.collection.update/#update-with-aggregation-pipeline

// 4.插入未符合更新條件並且同時聯合多文檔操作符的文檔
如果不符合查詢條件,則只會插入單個文檔
db.books.update(
  { "info.publisher": "Self-Published" },   
  {                                         
    $set: { reorder: false, tags: [ "literature", "hardcover" ], stock: 25 }
  },
  { upsert: true, multi: true }             
);
新插入的文檔:
{
  "_id" : ObjectId("5db337934f670d584b6ca8e0"),
  "info" : { "publisher" : "Self-Published" },
  "reorder" : false,
  "stock" : 25,
  "tags" : [ "literature", "hardcover" ]
}

db.collection.updateOne()

根據update指定的參數可以修改文檔中符合條件的字段或代替整個文檔,與db.collection.update()不同的是每次只更新單個文檔。

語法格式如下:

db.collection.updateOne(
   <filter>,
   <update>,
   {
     upsert: <boolean>,
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ],
     hint:  <document|string>        
   }
)

參數說明:

參考db.collection.update()的參數說明。

使用示例:

// 參考db.collection.update()

db.collection.updateMany()

根據update指定的參數可以修改文檔中符合條件的字段或代替整個文檔,與db.collection.updateOne()不同的是更新所有符合條件的文檔。

語法格式如下:

db.collection.updateMany(
   <filter>,
   <update>,
   {
     upsert: <boolean>,
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ],
     hint:  <document|string>        
   }
)

參數說明:

參考db.collection.update()的參數說明。

使用示例:

// 參考db.collection.update()

刪除(Delete Operations)

刪除是指對集合當中已存在的文檔進行清除操作,MongoDB提供以下幾種主要刪除文檔方法:

  • db.collection.deleteOne():只刪除集合中符合條件的一個文檔;
  • db.collection.deleteMany():刪除集合中所有符合條件的文檔;
  • db.collection.remove():刪除集合中符合條件的一個或多個文檔。

db.collection.deleteOne()

根據filter選項條件刪除集合中的單個文檔,具體語法格式如下:

db.collection.deleteOne(
   <filter>,
   {
      writeConcern: <document>,
      collation: <document>
   }
)

參數說明:

  • filter:指定基於查詢表達式的過濾條件,關於查詢表達式可以查看db.collecion.find()中的<query>
  • writeConcern:參考db.collection.insert()相同參數說明;
  • collation:指定校對規則(可選,版本3.4新增);

使用示例:

// 刪除指定條件的單個文檔
db.orders.deleteOne( { "_id" : 1 } );
{ "acknowledged" : true, "deletedCount" : 1 }

db.collection.deleteMany()

根據filter選項條件刪除集合中的單個文檔,具體語法格式如下:

db.collection.deleteMany(
   <filter>,
   {
      writeConcern: <document>,
      collation: <document>
   }
)

參數說明:

參考db.collection.deleteOne()的參數說明。

使用示例:

// 刪除指定條件的多個文檔
db.orders.deleteMany( {"cust_id" : "Cam Elot"} );
{ "acknowledged" : true, "deletedCount" : 2 }

注意: 如果是對固定集合進行刪除文檔操作則會報錯,固定集合的清除操作使用方法db.collection.drop()

總結

  1. 本文簡單梳理了在Mongo Shell下基本的CRUD操作,主要適用於DBA的運維管理,如果是研發同學,根據不同的編程語言使用不同客戶端驅動進行操作,詳細同樣可以參考官方文檔;
  2. 針對CRUD各個方面還有其他一些額外的方法,比如查詢修改文檔方法db.collection.findAndModify(),這裏只是總結每個文檔操作中一些最基礎的方法,對於額外高級的方法這裏不再贅述;
  3. 掌握了這些基本的CRUD操作,就可以對MongoDB文檔進行操作了,但還是需要控制好權限,畢竟數據安全不是小事,做變更之前做好數據的備份,以防萬一。

參考

https://docs.mongodb.com/manual/crud/

https://docs.mongodb.com/manual/reference/operator/query-evaluation/

https://docs.mongodb.com/manual/reference/method/db.collection.update/#specify-arrayfilters-for-array-update-operations

https://docs.mongodb.com/manual/reference/method/db.collection.update/#update-with-aggregation-pipeline

〖本人水平有限,文中如有錯誤還請留言批評指正!〗

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

【其他文章推薦】

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

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

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

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

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

※回頭車貨運收費標準

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

Python面試常用的高級用法,怎麼動態創建類?

本文始發於個人公眾號:TechFlow,原創不易,求個關注

今天是Python專題的第16篇文章,今天我們來聊聊Python當中的元類。

元類是Python當中的高級用法,如果你之前從來沒見過這個術語或者是沒聽說過這個概念,這是非常正常的,因為一方面它的使用頻率不高,另外一方面就是它相對不太容易理解。以至於很多Python開發者都理解得不是很深入,導致了市面上相關的資料也並不太多。我也是讀了一些大牛的代碼才開啟了這扇新世界的大門。

一切都是對象

我們之前的時候曾經介紹過,在Python當中一切都是對象,注意,是一切都是對象。我們都知道對象是類實例化之後的結果,可以簡單地將類和對象類比成模具和成品的關係。模具是類,而根據模具做出來的產品是對象。

這個比喻思想比較接近,但是不完美。因為實際當中一個模具可以做出多個產品,一個產品只有一個模具。但編程語言當中不同,由於類之間可以繼承以及多繼承,也就是說一個對象可以對應多個類。所以這個比喻不是特別合適,但是類和對象的關係是沒錯的。

但是這就有了一個問題,既然Python當中一切都是對象,那麼是不是說類其實也是一個對象呢?也就是說一個模具其實也是另外一個模具的產品?同樣,這個模具的模具其實也是另外一個模具的產品,那麼我們一直追問下去會怎麼樣呢?

很簡單,我們做個實驗就知道了,我們可以用_class__關鍵字來查看一個變量的類型,那麼我們反覆調用就可以查看其中的關係了:

從上面的圖中我們可以發現,num是int類型的變量。我們繼續查看int這個類型的類型,得到了type類型。而當我們去查看type的類型的時候,會發現我們得到的還是一個type的類型。

所以我們可以明白了,type是Python中用來創建所有類的元類,是所有模具的模具。在Python當中,我們把一個類的類叫做元類(metaclass)。所以type就是Python當中內置的元類,我們也可以自己創建我們需要的元類。通過元類,我們創建的對象也是一個類,而不是一個實例。

動態創建類

理解了type是一切類基礎之後,再來看動態類就簡單了。動態類是動態語言最大的特性之一,作為典型的動態語言,Python自然也是支持類型的動態創建的。

在Python當中,創建動態類型的一種方式就是通過type關鍵字。說起來有些意想不到,type函數不是用來查詢對象所屬的類型的嗎,怎麼還可以創建類呢?

這其實是type的另外一種用法,作為元類來創建一個類。在這種用法,type函數接收3個參數,分別是類型的名稱,父類的元組,以及一個字典。除了第一個參數之外,後面兩個參數都可以為空。比如我們來看一個例子:

注意,type返回的結果是一個類,而不是一個實例。所以我們還可以通過它創建實例:

hello = Hello()

這樣創建出來的是最簡單的空類,它什麼也沒有,和下面的代碼等價。

class Hello:
    pass

我們也可以在type的參數當中為這個類填充屬性和方法:

def hello_world(self):
    print('hello')
    
Hello = type('Hello', (), {'hello':hello_world, 'num': 3})

這樣我們就為Hello這個類創建了一個方法叫做hello,一個屬性num等於3。我們可以來調用一下試試:

也就是說我們可以使用type來根據我們的需要自行定義類,只不過type既可以獲取對象的類型又可以創建新的類,看起來可能覺得有些不太直觀,但是其實這也是說得通的。我們在Python當中通過調用str創建一個string對象,通過int來創建一個integer對象,那麼通過type則是創建一個類的對象。

實現繼承

我們之前說了,當我們使用type來創建類的時候,還可以傳入父類的元組從而實現類的繼承。

比如我們再創建一個叫做World的類繼承剛才通過type創建出來的Hello類,然後在為它加上額外的函數:

def say_world(self):
    print('World')
    
World = type('World', (Hello, ), {'world': say_world})

注意這裏傳入第二個參數是父類的元組,既然是元組,那麼當元素只有一個的時候,需要加上逗號,表示這是一個元組。這樣創建出來的類和我們通過class定義的靜態類效果是一樣的:

也就是說,我們可以先把函數實現,然後再根據任務的需要把這些函數組裝成新的類。顯然,這和傳統的C++以及Java這些靜態類型的語言相比,要靈活得多。

總結

我們固然可以通過type來創建動態創建類,但是從上面的使用過程也應該看得出來,這樣使用起來並不太方便,並且很多進階的功能很難實現。舉個簡單的例子,比如我們想要動態地為一個已有的類添加一些動態的方法,生成新的類。我們使用type就很難實現。type也的確不是Python元類的主要運用,metaclass才是王道,但由於篇幅限制,這部分將放在下一篇文章當中。

當然,元類是一個非常高級的用法,以至於Python的創始人說99%的Python程序員並不需要用到它。所以如果你覺得理解起來非常費勁的話也沒有關係,知道這麼個概念就可以了。

今天的內容就是這些,如果喜歡本文,可以的話,請點個關注,給我一點鼓勵,也方便獲取更多文章。

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

【其他文章推薦】

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

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

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

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

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

※回頭車貨運收費標準

台中搬家公司費用怎麼算?

本年度印象最深刻的四台轎車

作為一輛主打舒適的旅行車,2系旅行版已經做得足夠好了。從去年在海外上市,到今天由東本投產,十代思域可謂是颳起了一股屬於自己的旋風。1。5T發動機搭載6MT/CVT變速箱,能爆發出最大177馬力,不到8秒完成破百,加上不到13萬的起售價,這些標籤已經足以讓很多人瘋狂。

我們之前一共做了年度印象最深的性能車和SUV兩期大爆炸節目,今天,就該論到年度印象最深刻的轎車了。

奔馳S級在豪華級別車型中一直都是最強者般的存在,而之前新E級面世后,大家紛紛表示買這輛小S級就夠了。然而,試完S500L之後,我們認為還是太年輕了。

S500L的各方面的質感,完全是高E級一個檔次的,而它所搭載的4.0T V8發動機能提供相當有力道的動力輸出,這就已經和其他用着2.0T發動機的同級車型拉開差距了。

而無與倫比的後排乘坐體驗,真的讓人深深感嘆有錢真好。舒適度極高的座椅,坐到老闆位上之後,你就可以開始享受人生了。

雖然S級無論是自己開還是司機開,都會被人認為是司機,但是,S級的魅力真的很難讓人拒絕。

寶馬2系旅行版在換上了UKL前驅平台後,成為了首輛前驅寶馬。而大家一向對寶馬的認識就是直六發動機+后驅,而2系旅行版這樣一改,還得了?

但事實是,2系旅行版取消了后驅設定之後,整輛車的後排和後備廂空間得到了不少的提升。 畢竟是旅行版,所以兼顧家用才是它的屬性。作為一輛主打舒適的旅行車,2系旅行版已經做得足夠好了。

從去年在海外上市,到今天由東本投產,十代思域可謂是颳起了一股屬於自己的旋風。1.5T發動機搭載6MT/CVT變速箱,能爆發出最大177馬力,不到8秒完成破百,加上不到13萬的起售價,這些標籤已經足以讓很多人瘋狂。

雖然駕駛表現相當強勢,但十代思域犧牲了內飾造工來換取了更大的性能表現,就可能會讓一些想入手思域的朋友只能繼續觀望了。但是對於改裝愛好者來說,十代思域無疑是相當好的選擇之一。

不過,現在你想入手一輛思域,大部分地區還是要等待或是加價提車,這產能跟不上,想銷量瘋漲也很難。

CT6上市之初的定價使其擁有了相當強的價格優勢,加上驚艷的外觀設計,着實讓人覺得它能在風雲變幻的國內豪華車市場站穩腳跟。但可惜的是,由於種種原因,CT6並沒有取得理想的銷量。除去品牌知名度因素之後,實在想不到有更好的理由來解釋了。

但是,你只要試駕了這輛配有電磁懸挂和后轎轉向系統的CT6,你就會覺得它開起來根本不像一輛中大型轎車,甚至你要快開的時候,信心會更加充足。只可惜,如果你開的車型沒有配備這兩個神器的話,那麼你就會覺得它遠遠不如寶馬5系。

以上四輛車就是我們年度印象最深的轎車,各位敬請期待下一期印象最深的新能源車!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

※超省錢租車方案

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

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

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

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!