重學 Java 設計模式:實戰享元模式「基於Redis秒殺,提供活動與庫存信息查詢場景」

作者:小傅哥
博客:https://bugstack.cn

沉澱、分享、成長,讓自己和他人都能有所收穫!

一、前言

程序員‍‍的上下文是什麼?

很多時候一大部分編程開發的人員都只是關注於功能的實現,只要自己把這部分需求寫完就可以了,有點像被動的交作業。這樣的問題一方面是由於很多新人還不了解程序員的職業發展,還有一部分是對於編程開發只是工作並非興趣。但在程序員的發展來看,如果不能很好的處理上文(產品),下文(測試),在這樣不能很好的了解業務和產品發展,也不能編寫出很有體繫結構的代碼,日久天長,1到3年、3到5年,就很難跨越一個個技術成長的分水嶺。

擁有接受和學習新知識的能力

你是否有感受過小時候在什麼都還不會的時候接受知識的能力很強,但隨着我們開始長大后,慢慢學習能力、處事方式、性格品行,往往會固定。一方面是形成了各自的性格特徵,一方面是圈子已經固定。但也正因為這樣的故步,而很少願意聽取別人的意見,就像即使看到了一整片內容,在視覺盲區下也會過掉到80%,就在眼前也看不見,也因此導致了能力不再有較大的提升。

編程能力怎樣會成長的最快

工作內容往往有些像在工廠擰螺絲,大部分內容是重複的,也可以想象過去的一年你有過多少創新和學習了新的技能。那麼這時候一般為了多學些內容會買一些技術書籍,但!技術類書籍和其他書籍不同,只要不去用看了也就只是輕描淡寫,很難接納和理解。就像設計模式,雖然可能看了幾遍,但是在實際編碼中仍然很少會用,大部分原因還是沒有認認真真的跟着實操。事必躬親才是學習編程的最好是方式。

二、開發環境

  1. JDK 1.8
  2. Idea + Maven
  3. 涉及工程三個,可以通過關注公眾號:bugstack蟲洞棧,回復源碼下載獲取(打開獲取的鏈接,找到序號18)
工程 描述
itstack-demo-design-11-01 使用一坨代碼實現業務需求
itstack-demo-design-11-02 通過設計模式優化代碼結構,減少內存使用和查詢耗時

三、享元模式介紹

享元模式,主要在於共享通用對象,減少內存的使用,提升系統的訪問效率。而這部分共享對象通常比較耗費內存或者需要查詢大量接口或者使用數據庫資源,因此統一抽離作為共享對象使用。

另外享元模式可以分為在服務端和客戶端,一般互聯網H5和Web場景下大部分數據都需要服務端進行處理,比如數據庫連接池的使用、多線程線程池的使用,除了這些功能外,還有些需要服務端進行包裝后的處理下發給客戶端,因為服務端需要做享元處理。但在一些遊戲場景下,很多都是客戶端需要進行渲染地圖效果,比如;樹木、花草、魚蟲,通過設置不同元素描述使用享元公用對象,減少內存的佔用,讓客戶端的遊戲更加流暢。

在享元模型的實現中需要使用到享元工廠來進行管理這部分獨立的對象和共享的對象,避免出現線程安全的問題。

四、案例場景模擬

在這個案例中我們模擬在商品秒殺場景下使用享元模式查詢優化

你是否經歷過一個商品下單的項目從最初的日均十幾單到一個月後每個時段秒殺量破十萬的項目。一般在最初如果沒有經驗的情況下可能會使用數據庫行級鎖的方式下保證商品庫存的扣減操作,但是隨着業務的快速發展秒殺的用戶越來越多,這個時候數據庫已經扛不住了,一般都會使用redis的分佈式鎖來控制商品庫存。

同時在查詢的時候也不需要每一次對不同的活動查詢都從庫中獲取,因為這裏除了庫存以外其他的活動商品信息都是固定不變的,以此這裏一般大家會緩存到內存中。

這裏我們模擬使用享元模式工廠結構,提供活動商品的查詢。活動商品相當於不變的信息,而庫存部分屬於變化的信息。

五、用一坨坨代碼實現

邏輯很簡單,就怕你寫亂。一片片的固定內容和變化內容的查詢組合,CV的哪裡都是!

其實這部分邏輯的查詢在一般情況很多程序員都是先查詢固定信息,在使用過濾的或者添加if判斷的方式補充變化的信息,也就是庫存。這樣寫最開始並不會看出來有什麼問題,但隨着方法邏輯的增加,後面就越來越多重複的代碼。

1. 工程結構

itstack-demo-design-11-01
└── src
    └── main
        └── java
            └── org.itstack.demo.design
                └── ActivityController.java
  • 以上工程結構比較簡單,之後一個控制類用於查詢活動信息。

2. 代碼實現

/**
 * 博客:https://bugstack.cn - 沉澱、分享、成長,讓自己和他人都能有所收穫!
 * 公眾號:bugstack蟲洞棧
 * Create by 小傅哥(fustack) @2020
 */
public class ActivityController {

    public Activity queryActivityInfo(Long id) {
        // 模擬從實際業務應用從接口中獲取活動信息
        Activity activity = new Activity();
        activity.setId(10001L);
        activity.setName("圖書嗨樂");
        activity.setDesc("圖書優惠券分享激勵分享活動第二期");
        activity.setStartTime(new Date());
        activity.setStopTime(new Date());
        activity.setStock(new Stock(1000,1));
        return activity;
    }

}
  • 這裏模擬的是從接口中查詢活動信息,基本也就是從數據庫中獲取所有的商品信息和庫存。有點像最開始寫的商品銷售系統,數據庫就可以抗住購物量。
  • 當後續因為業務的發展需要擴展代碼將庫存部分交給redis處理,那麼久需要從redis中獲取活動的庫存,而不是從庫中,否則將造成數據不統一的問題。

六、享元模式重構代碼

接下來使用享元模式來進行代碼優化,也算是一次很小的重構。

享元模式一般情況下使用此結構在平時的開發中並不太多,除了一些線程池、數據庫連接池外,再就是遊戲場景下的場景渲染。另外這個設計的模式思想是減少內存的使用提升效率,與我們之前使用的原型模式通過克隆對象的方式生成複雜對象,減少rpc的調用,都是此類思想。

1. 工程結構

itstack-demo-design-11-02
└── src
    ├── main
    │   └── java
    │       └── org.itstack.demo.design
    │           ├── util
    │           │	└── RedisUtils.java	
    │           ├── Activity.java
    │           ├── ActivityController.java
    │           ├── ActivityFactory.java
    │           └── Stock.java
    └── test
        └── java
            └── org.itstack.demo.test
                └── ApiTest.java

享元模式模型結構

  • 以上是我們模擬查詢活動場景的類圖結構,左側構建的是享元工廠,提供固定活動數據的查詢,右側是Redis存放的庫存數據。
  • 最終交給活動控制類來處理查詢操作,並提供活動的所有信息和庫存。因為庫存是變化的,所以我們模擬的RedisUtils中設置了定時任務使用庫存。

2. 代碼實現

2.1 活動信息

public class Activity {

    private Long id;        // 活動ID
    private String name;    // 活動名稱
    private String desc;    // 活動描述
    private Date startTime; // 開始時間
    private Date stopTime;  // 結束時間
    private Stock stock;    // 活動庫存
    
    // ...get/set
}
  • 這裏的對象類比較簡單,只是一個活動的基礎信息;id、名稱、描述、時間和庫存。

2.2 庫存信息

public class Stock {

    private int total; // 庫存總量
    private int used;  // 庫存已用
    
    // ...get/set
}
  • 這裡是庫存數據我們單獨提供了一個類進行保存數據。

2.3 享元工廠

public class ActivityFactory {

    static Map<Long, Activity> activityMap = new HashMap<Long, Activity>();

    public static Activity getActivity(Long id) {
        Activity activity = activityMap.get(id);
        if (null == activity) {
            // 模擬從實際業務應用從接口中獲取活動信息
            activity = new Activity();
            activity.setId(10001L);
            activity.setName("圖書嗨樂");
            activity.setDesc("圖書優惠券分享激勵分享活動第二期");
            activity.setStartTime(new Date());
            activity.setStopTime(new Date());
            activityMap.put(id, activity);
        }
        return activity;
    }

}
  • 這裏提供的是一個享元工廠,通過map結構存放已經從庫表或者接口中查詢到的數據,存放到內存中,用於下次可以直接獲取。
  • 這樣的結構一般在我們的編程開發中還是比較常見的,當然也有些時候為了分佈式的獲取,會把數據存放到redis中,可以按需選擇。

2.4 模擬Redis類

public class RedisUtils {

    private ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);

    private AtomicInteger stock = new AtomicInteger(0);

    public RedisUtils() {
        scheduledExecutorService.scheduleAtFixedRate(() -> {
            // 模擬庫存消耗
            stock.addAndGet(1);
        }, 0, 100000, TimeUnit.MICROSECONDS);

    }

    public int getStockUsed() {
        return stock.get();
    }

}
  • 這裏處理模擬redis的操作工具類外,還提供了一個定時任務用於模擬庫存的使用,這樣方面我們在測試的時候可以觀察到庫存的變化。

2.4 活動控制類

public class ActivityController {

    private RedisUtils redisUtils = new RedisUtils();

    public Activity queryActivityInfo(Long id) {
        Activity activity = ActivityFactory.getActivity(id);
        // 模擬從Redis中獲取庫存變化信息
        Stock stock = new Stock(1000, redisUtils.getStockUsed());
        activity.setStock(stock);
        return activity;
    }

}
  • 在活動控制類中使用了享元工廠獲取活動信息,查詢后將庫存信息在補充上。因為庫存信息是變化的,而活動信息是固定不變的。
  • 最終通過統一的控制類就可以把完整包裝后的活動信息返回給調用方。

3. 測試驗證

3.1 編寫測試類

public class ApiTest {

    private Logger logger = LoggerFactory.getLogger(ApiTest.class);

    private ActivityController activityController = new ActivityController();

    @Test
    public void test_queryActivityInfo() throws InterruptedException {
        for (int idx = 0; idx < 10; idx++) {
            Long req = 10001L;
            Activity activity = activityController.queryActivityInfo(req);
            logger.info("測試結果:{} {}", req, JSON.toJSONString(activity));
            Thread.sleep(1200);
        }
    }

}
  • 這裏我們通過活動查詢控制類,在for循環的操作下查詢了十次活動信息,同時為了保證庫存定時任務的變化,加了睡眠操作,實際的開發中不會有這樣的睡眠。

3.2 測試結果

22:35:20.285 [main] INFO  org.i..t.ApiTest - 測試結果:10001 {"desc":"圖書優惠券分享激勵分享活動第二期","id":10001,"name":"圖書嗨樂","startTime":1592130919931,"stock":{"total":1000,"used":1},"stopTime":1592130919931}
22:35:21.634 [main] INFO  org.i..t.ApiTest - 測試結果:10001 {"desc":"圖書優惠券分享激勵分享活動第二期","id":10001,"name":"圖書嗨樂","startTime":1592130919931,"stock":{"total":1000,"used":18},"stopTime":1592130919931}
22:35:22.838 [main] INFO  org.i..t.ApiTest - 測試結果:10001 {"desc":"圖書優惠券分享激勵分享活動第二期","id":10001,"name":"圖書嗨樂","startTime":1592130919931,"stock":{"total":1000,"used":30},"stopTime":1592130919931}
22:35:24.042 [main] INFO  org.i..t.ApiTest - 測試結果:10001 {"desc":"圖書優惠券分享激勵分享活動第二期","id":10001,"name":"圖書嗨樂","startTime":1592130919931,"stock":{"total":1000,"used":42},"stopTime":1592130919931}
22:35:25.246 [main] INFO  org.i..t.ApiTest - 測試結果:10001 {"desc":"圖書優惠券分享激勵分享活動第二期","id":10001,"name":"圖書嗨樂","startTime":1592130919931,"stock":{"total":1000,"used":54},"stopTime":1592130919931}
22:35:26.452 [main] INFO  org.i..t.ApiTest - 測試結果:10001 {"desc":"圖書優惠券分享激勵分享活動第二期","id":10001,"name":"圖書嗨樂","startTime":1592130919931,"stock":{"total":1000,"used":66},"stopTime":1592130919931}
22:35:27.655 [main] INFO  org.i..t.ApiTest - 測試結果:10001 {"desc":"圖書優惠券分享激勵分享活動第二期","id":10001,"name":"圖書嗨樂","startTime":1592130919931,"stock":{"total":1000,"used":78},"stopTime":1592130919931}
22:35:28.859 [main] INFO  org.i..t.ApiTest - 測試結果:10001 {"desc":"圖書優惠券分享激勵分享活動第二期","id":10001,"name":"圖書嗨樂","startTime":1592130919931,"stock":{"total":1000,"used":90},"stopTime":1592130919931}
22:35:30.063 [main] INFO  org.i..t.ApiTest - 測試結果:10001 {"desc":"圖書優惠券分享激勵分享活動第二期","id":10001,"name":"圖書嗨樂","startTime":1592130919931,"stock":{"total":1000,"used":102},"stopTime":1592130919931}
22:35:31.268 [main] INFO  org.i..t.ApiTest - 測試結果:10001 {"desc":"圖書優惠券分享激勵分享活動第二期","id":10001,"name":"圖書嗨樂","startTime":1592130919931,"stock":{"total":1000,"used":114},"stopTime":1592130919931}

Process finished with exit code 0
  • 可以仔細看下stock部分的庫存是一直在變化的,其他部分是活動信息,是固定的,所以我們使用享元模式來將這樣的結構進行拆分。

七、總結

  • 關於享元模式的設計可以着重學習享元工廠的設計,在一些有大量重複對象可復用的場景下,使用此場景在服務端減少接口的調用,在客戶端減少內存的佔用。是這個設計模式的主要應用方式。
  • 另外通過map結構的使用方式也可以看到,使用一個固定id來存放和獲取對象,是非常關鍵的點。而且不只是在享元模式中使用,一些其他工廠模式、適配器模式、組合模式中都可以通過map結構存放服務供外部獲取,減少ifelse的判斷使用。
  • 當然除了這種設計的減少內存的使用優點外,也有它帶來的缺點,在一些複雜的業務處理場景,很不容易區分出內部和外部狀態,就像我們活動信息部分與庫存變化部分。如果不能很好的拆分,就會把享元工廠設計的非常混亂,難以維護。

八、推薦閱讀

  • 1. 重學 Java 設計模式:實戰工廠方法模式(多種類型商品發獎場景)
  • 2. 重學 Java 設計模式:實戰抽象工廠模式(替換Redis雙集群升級場景)
  • 3. 重學 Java 設計模式:實戰建造者模式(裝修物料組合套餐選配場景)
  • 4. 重學 Java 設計模式:實戰原型模式(多套試每人題目和答案亂序場景)
  • 5. 重學 Java 設計模式:實戰橋接模式(多支付渠道「微信、支付寶」與多支付模式「刷臉、指紋」場景)
  • 6. 重學 Java 設計模式:實戰組合模式(營銷差異化人群發券,決策樹引擎搭建場景)

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

【其他文章推薦】

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

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

※回頭車貨運收費標準

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

※超省錢租車方案

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

使用Apache Spark和Apache Hudi構建分析數據湖

1. 引入

大多數現代數據湖都是基於某種分佈式文件系統(DFS),如HDFS或基於雲的存儲,如AWS S3構建的。遵循的基本原則之一是文件的“一次寫入多次讀取”訪問模型。這對於處理海量數據非常有用,如數百GB到TB的數據。

但是在構建分析數據湖時,更新數據並不罕見。根據不同場景,這些更新頻率可能是每小時一次,甚至可能是每天或每周一次。另外可能還需要在最新視圖、包含所有更新的歷史視圖甚至僅是最新增量視圖上運行分析。

通常這會導致使用用於流和批處理的多個系統,前者處理增量數據,而後者處理歷史數據。

處理存儲在HDFS上的數據時,維護增量更新的常見工作流程是這裏所述的Ingest-Reconcile-Compact-Purge策略。

Apache Hudi之類的框架在這裏便可發揮作用。它在後台為我們管理此工作流程,從而使我們的核心應用程序代碼更加簡潔,Hudi支持對最新數據視圖的查詢以及查詢在某個時間點的增量更改。

這篇文章將介紹Hudi的核心概念以及如何在Copy-On-Write模式下進行操作。

本篇文章項目源代碼放在github。

2. 大綱

  • 先決條件和框架版本
  • Hudi核心概念
  • 初始設置和依賴項
  • 使用CoW表

2.1 先決條件和框架版本

如果你事先了解如何使用scala編寫spark作業以及讀取和寫入parquet文件,那麼本篇文章理解起來將非常容易。

框架版本如下

  • JDK: openjdk 1.8.0_242
  • Scala: 2.12.8
  • Spark: 2.4.4
  • Hudi Spark bundle: 0.5.2-incubating

注意:在撰寫本文時,AWS EMR與Hudi v0.5.0-incubating集成在一起,該軟件包具有一個bug會導致upsert操作卡死或花費很長時間才能完成,可查看相關issue了解更多,該問題已在當前版本的Hudi(0.5.2-incubating及之後版本)中修復。如果計劃在AWS EMR上運行代碼,則可能要考慮用最新版本覆蓋默認的集成版本。

2.2 Hudi核心概念

先從一些需要理解的核心概念開始。

1. 表類型

Hudi支持兩種表類型

  • 寫時複製(CoW):寫入CoW表時,將運行Ingest-Reconcile-Compact-Purge周期。每次寫操作后,CoW表中的數據始終是最新記錄,對於需要儘快讀取最新數據的場景,可首選此模式。數據僅以列文件格式(parquet)存儲在CoW表中,由於每個寫操作都涉及壓縮和覆蓋,因此此模式產生的文件最少。

  • 讀時合併(MoR):MoR表專註於快速寫操作。寫入這些表將創建增量文件,隨後將其壓縮以生成讀取時的最新數據,壓縮操作可以同步或異步完成,數據以列文件格式(parquet)和基於行的文件格式(avro)組合存儲。

這是Hudi文檔中提到的兩種表格格式之間的權衡取捨。

Trade-off CoW MoR
數據延遲 Higher Lower
更新開銷 (I/O) Higher (重寫整個parquet文件) Lower (追加到delta log文件)
Parquet文件大小 Smaller (高update(I/0) 開銷) Larger (低更新開銷)
Write Amplification Higher Lower (由compaction策略決定)

2. 查詢類型

Hudi支持兩種主要類型的查詢:“快照查詢”和“增量查詢”。除兩種主要查詢類型外,MoR表還支持“讀優化查詢”。

  • 快照查詢:對於CoW表,快照查詢返回數據的最新視圖,而對於MoR表,則返回接近實時的視圖。 對於MoR表,快照查詢將即時合併基本文件和增量文件,因此可能會有一些讀取延遲。使用CoW,由於寫入負責合併,因此讀取很快,只需要讀取基本文件。

  • 增量查詢:增量查詢使您可以通過指定“開始”時間或在特定時間點通過指定“開始”和“結束”時間來查看特定提交時間之後的數據。

  • 讀優化查詢:對於MoR表,讀取優化查詢返回一個視圖,該視圖僅包含基本文件中的數據,而不合併增量文件。

3. 以Hudi格式寫入時的關鍵屬性

  • hoodie.datasource.write.table.type,定義表的類型-默認值為COPY_ON_WRITE。對於MoR表,將此值設置為MERGE_ON_READ。

  • hoodie.table.name,這是必填字段,每個表都應具有唯一的名稱。

  • hoodie.datasource.write.recordkey.field,將此視為表的主鍵。此屬性的值是DataFrame中列的名稱,該列是主鍵。

  • hoodie.datasource.write.precombine.field,更新數據時,如果存在兩個具有相同主鍵的記錄,則此列中的值將決定更新哪個記錄。選擇諸如時間戳記的列將確保選擇具有最新時間戳記的記錄。

  • hoodie.datasource.write.operation,定義寫操作的類型。值可以為upsert,insert,bulk_insert和delete,默認值為upsert。

2.3 初始設置和依賴項

1. 依賴說明

為了在Spark作業中使用Hudi,需要使用spark-sql,hudi-spark-bundle和spark-avro依賴項,此外還需要將Spark配置為使用KryoSerializer。

pom.xml大致內容如下

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <encoding>UTF-8</encoding>
    <scala.version>2.12.8</scala.version>
    <scala.compat.version>2.12</scala.compat.version>
    <spec2.version>4.2.0</spec2.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>${scala.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_${scala.compat.version}</artifactId>
        <version>2.4.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hudi</groupId>
        <artifactId>hudi-spark-bundle_${scala.compat.version}</artifactId>
        <version>0.5.2-incubating</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-avro_${scala.compat.version}</artifactId>
        <version>2.4.4</version>
    </dependency>
</dependencies>

2. 設置Schema

我們使用下面的Album類來表示表的schema。

case class Album(albumId: Long, title: String, tracks: Array[String], updateDate: Long)   

3. 生成測試數據

創建一些用於upsert操作的數據。

  • INITIAL_ALBUM_DATA有兩個記錄,鍵為801。
  • UPSERT_ALBUM_DATA包含一個更新的記錄和兩個新的記錄。
def dateToLong(dateString: String): Long = LocalDate.parse(dateString, formatter).toEpochDay

private val INITIAL_ALBUM_DATA = Seq(
    Album(800, "6 String Theory", Array("Lay it down", "Am I Wrong", "68"), dateToLong("2019-12-01")),
    Album(801, "Hail to the Thief", Array("2+2=5", "Backdrifts"), dateToLong("2019-12-01")),
    Album(801, "Hail to the Thief", Array("2+2=5", "Backdrifts", "Go to sleep"), dateToLong("2019-12-03"))
  )

  private val UPSERT_ALBUM_DATA = Seq(
    Album(800, "6 String Theory - Special", Array("Jumpin' the blues", "Bluesnote", "Birth of blues"), dateToLong("2020-01-03")),
    Album(802, "Best Of Jazz Blues", Array("Jumpin' the blues", "Bluesnote", "Birth of blues"), dateToLong("2020-01-04")),
    Album(803, "Birth of Cool", Array("Move", "Jeru", "Moon Dreams"), dateToLong("2020-02-03"))
  )

4. 初始化SparkContext

最後初始化Spark上下文。這裏要注意的重要一點是KryoSerializer的使用。

val spark: SparkSession = SparkSession.builder()
    .appName("hudi-datalake")
    .master("local[*]")
    .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
    .config("spark.sql.hive.convertMetastoreParquet", "false") // Uses Hive SerDe, this is mandatory for MoR tables
    .getOrCreate()

2.4 使用CoW表

本節將處理CoW表的記錄,如讀取和刪除記錄。

1. basePath(基本路徑)和Upsert方法

定義一個basePath,upsert方法會將表數據寫入該路徑,該方法將以org.apache.hudi格式寫入Dataframe,請確保上面討論的所有Hudi屬性均已設置。

val basePath = "/tmp/store"

private def upsert(albumDf: DataFrame, tableName: String, key: String, combineKey: String) = {
    albumDf.write
      .format("hudi")
      .option(DataSourceWriteOptions.TABLE_TYPE_OPT_KEY, DataSourceWriteOptions.COW_TABLE_TYPE_OPT_VAL)
      .option(DataSourceWriteOptions.RECORDKEY_FIELD_OPT_KEY, key)
      .option(DataSourceWriteOptions.PRECOMBINE_FIELD_OPT_KEY, combineKey)
      .option(HoodieWriteConfig.TABLE_NAME, tableName)
      .option(DataSourceWriteOptions.OPERATION_OPT_KEY, DataSourceWriteOptions.UPSERT_OPERATION_OPT_VAL)
      // Ignore this property for now, the default is too high when experimenting on your local machine
      // Set this to a lower value to improve performance.
      // I'll probably cover Hudi tuning in a separate post.
      .option("hoodie.upsert.shuffle.parallelism", "2")
      .mode(SaveMode.Append)
      .save(s"$basePath/$tableName/")
  }

2. 初始化upsert

插入INITIAL_ALBUM_DATA,我們應該創建2條記錄,對於801,該記錄的日期為2019-12-03。

val tableName = "Album"
upsert(INITIAL_ALBUM_DATA.toDF(), tableName, "albumId", "updateDate")
spark.read.format("hudi").load(s"$basePath/$tableName/*").show()

讀取CoW表就像使用格式(“hudl”)的常規spark.read一樣簡單。

// Output
+-------------------+--------------------+------------------+----------------------+--------------------+-------+-----------------+--------------------+----------+
|_hoodie_commit_time|_hoodie_commit_seqno|_hoodie_record_key|_hoodie_partition_path|   _hoodie_file_name|albumId|            title|              tracks|updateDate|
+-------------------+--------------------+------------------+----------------------+--------------------+-------+-----------------+--------------------+----------+
|     20200412182343|  20200412182343_0_1|               801|               default|65841d0a-0083-447...|    801|Hail to the Thief|[2+2=5, Backdrift...|     18233|
|     20200412182343|  20200412182343_0_2|               800|               default|65841d0a-0083-447...|    800|  6 String Theory|[Lay it down, Am ...|     18231|
+-------------------+--------------------+------------------+----------------------+--------------------+-------+-----------------+--------------------+----------+

另一種確定的方法是查看Workload profile的日誌輸出,內容大致如下

Workload profile :WorkloadProfile {globalStat=WorkloadStat {numInserts=2, numUpdates=0}, partitionStat={default=WorkloadStat {numInserts=2, numUpdates=0}}}

3. 更新記錄

upsert(UPSERT_ALBUM_DATA.toDF(), tableName, "albumId", "updateDate")

查看Workload profile的日誌輸出,並驗證它是否符合預期

Workload profile :WorkloadProfile {globalStat=WorkloadStat {numInserts=2, numUpdates=1}, partitionStat={default=WorkloadStat {numInserts=2, numUpdates=1}}}

查詢輸出如下

spark.read.format("hudi").load(s"$basePath/$tableName/*").show()

//Output
+-------------------+--------------------+------------------+----------------------+--------------------+-------+--------------------+--------------------+----------+
|_hoodie_commit_time|_hoodie_commit_seqno|_hoodie_record_key|_hoodie_partition_path|   _hoodie_file_name|albumId|               title|              tracks|updateDate|
+-------------------+--------------------+------------------+----------------------+--------------------+-------+--------------------+--------------------+----------+
|     20200412183510|  20200412183510_0_1|               801|               default|65841d0a-0083-447...|    801|   Hail to the Thief|[2+2=5, Backdrift...|     18233|
|     20200412184040|  20200412184040_0_1|               800|               default|65841d0a-0083-447...|    800|6 String Theory -...|[Jumpin' the blue...|     18264|
|     20200412184040|  20200412184040_0_2|               802|               default|65841d0a-0083-447...|    802|  Best Of Jazz Blues|[Jumpin' the blue...|     18265|
|     20200412184040|  20200412184040_0_3|               803|               default|65841d0a-0083-447...|    803|       Birth of Cool|[Move, Jeru, Moon...|     18295|
+-------------------+--------------------+------------------+----------------------+--------------------+-------+--------------------+--------------------+----------+

4. 查詢記錄

我們在上面查看數據的方式稱為“快照查詢”,這是默認設置,另外還支持“增量查詢”。

4.1 增量查詢

要執行增量查詢,我們需要在讀取時將hoodie.datasource.query.type屬性設置為incremental,並指定hoodie.datasource.read.begin.instanttime屬性。 這將在指定的即時時間之後讀取所有記錄,對於本示例,我們將instantTime指定為20200412183510。

spark.read
    .format("hudi")
    .option(DataSourceReadOptions.QUERY_TYPE_OPT_KEY, DataSourceReadOptions.QUERY_TYPE_INCREMENTAL_OPT_VAL)
    .option(DataSourceReadOptions.BEGIN_INSTANTTIME_OPT_KEY, "20200412183510")
    .load(s"$basePath/$tableName")
    .show()

這將在提交時間20200412183510之後返回所有記錄。

+-------------------+--------------------+------------------+----------------------+--------------------+-------+--------------------+--------------------+----------+
|_hoodie_commit_time|_hoodie_commit_seqno|_hoodie_record_key|_hoodie_partition_path|   _hoodie_file_name|albumId|               title|              tracks|updateDate|
+-------------------+--------------------+------------------+----------------------+--------------------+-------+--------------------+--------------------+----------+
|     20200412184040|  20200412184040_0_1|               800|               default|65841d0a-0083-447...|    800|6 String Theory -...|[Jumpin' the blue...|     18264|
|     20200412184040|  20200412184040_0_2|               802|               default|65841d0a-0083-447...|    802|  Best Of Jazz Blues|[Jumpin' the blue...|     18265|
|     20200412184040|  20200412184040_0_3|               803|               default|65841d0a-0083-447...|    803|       Birth of Cool|[Move, Jeru, Moon...|     18295|
+-------------------+--------------------+------------------+----------------------+--------------------+-------+--------------------+--------------------+----------+

5. 刪除記錄

我們要查看的最後一個操作是刪除,刪除類似於upsert,需要一個待刪除記錄的DataFrame,如下面的示例代碼所示,不需要整行,只需要主鍵即可。

val deleteKeys = Seq(
    Album(803, "", null, 0l),
    Album(802, "", null, 0l)
)

import spark.implicits._

val df = deleteKeys.toDF()

df.write.format("hudi")
    .option(DataSourceWriteOptions.TABLE_TYPE_OPT_KEY, DataSourceWriteOptions.COW_TABLE_TYPE_OPT_VAL)
    .option(DataSourceWriteOptions.RECORDKEY_FIELD_OPT_KEY, "albumId")
    .option(HoodieWriteConfig.TABLE_NAME, tableName)
    // Set the option "hoodie.datasource.write.operation" to "delete"
    .option(DataSourceWriteOptions.OPERATION_OPT_KEY, DataSourceWriteOptions.DELETE_OPERATION_OPT_VAL)
    .mode(SaveMode.Append) // Only Append Mode is supported for Delete.
    .save(s"$basePath/$tableName/")

spark.read.format("hudi").load(s"$basePath/$tableName/*").show()

這是本部分介紹的全部內容。後面我們將探討在MERGE-ON-READ表進行操作。

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

【其他文章推薦】

※超省錢租車方案

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

※回頭車貨運收費標準

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

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

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

國產最快的SUV?這車上市連80萬的特斯拉都得服!

買電動車還要注意充電時間要多久,這點上,MODEL X的快充時間為4。5小時,慢充10。5小時。MARVEL X可在40分鐘內把80%的電充滿,就這點而言,明顯優勝於MODEL X。MARVEL X的底盤由保時捷工程師參与設計並調校,參考一下Macan和卡宴在公路上的操控表現,估計MARVEL X也差不到哪裡去。

4月23號下午,上汽集團在五棵松舉辦了第二屆汽車創行者大會。這屆大會一開始的時候,主要還是探討一下未來的汽車發展動向,講的都是頗為抽象的話題。最後才是榮威MARVEL X量產車型的亮相儀式。

去年第一屆汽車創行者大會時,上汽榮威便發布了光之翼概念車,只是那時候沒有實車。今年,光之翼的量產車型MARVEL X能順利亮相,也是給了我們不少驚喜。

MARVEL,原意為“造物的奇迹、令人驚奇的創造力”,而“X”延續了榮威品牌“重探索”的科技精神,更是預示着“新物種”(Xspecies)的鋒芒展露。從命名中可以看出,榮威MARVEL X攜帶了與生俱來的智能天賦和無限的創造力基因。

MARVEL X這款車的外形依舊是採用榮威的家族式前臉,只是整個設計會是家族中最為誇張的一個。前臉的全LED大燈和U型光弧尤為犀利,中網的橫條形鍍鉻裝飾條大氣耐看,與大燈相連的設計一體感較強。

側麵線條簡潔修長,門把手採用了與攬勝星脈一樣的感應式設計,只有用戶靠近時,才會自動彈出。底部的鍍鉻裝飾條頗有高級感,五輻式輪圈帥氣耐看。兩盞尾燈由一條鍍鉻裝飾條相連,加強了一體感。

MARVEL X保留了90%的概念車設計,從造型來看,更像是一台SUV。在聽廠商介紹一些關鍵數據時,發現這款車完全就是對飆MODEL X,甚至MODEL X 75D在它面前都要敗下來。

從上面的表格來看,MARVEL X雖然在風阻係數上高於MODEL X,但在零百加速和續航里程兩個關鍵數據上,都是表現得比MODEL X 75D要好。4秒破百這樣的成績已經是堪比不少超級跑車,所以說MARVEL X是一輛性能怪獸也不為過,這裏的性能僅僅只是指加速性能。

買電動車還要注意充電時間要多久,這點上,MODEL X的快充時間為4.5小時,慢充10.5小時。MARVEL X可在40分鐘內把80%的電充滿,就這點而言,明顯優勝於MODEL X。

MARVEL X的底盤由保時捷工程師參与設計並調校,參考一下Macan和卡宴在公路上的操控表現,估計MARVEL X也差不到哪裡去。除了這些過硬的實力外,MARVEL X還有五個全球第一。

全球第一台搭載“AR增強現實技術”的量產車,圖標直接出現在實景中,讓導航更精準更直觀;全球第一台搭載3.0版本互聯網汽車斑馬智行系統的量產車,配以14寸超級懸浮式大屏和更智能的人機交互,讓用戶搶先體驗到互聯網功能升級;

全球第一套全方位智能迎賓系統,只要用戶靠近,即可自動亮燈並自動調節座椅空間,歡迎用戶上車;全球第一台搭載無線智能給電系統的純電動車,讓電動汽車進入“無線時代”;全球第一台會自己找車位、自己泊車入庫的量產車,實現“人工智能代主泊車”的尊享體驗。

這麼多個第一中,雖然有部分是噱頭,但是最令人期待的莫過於3.0版本互聯網汽車斑馬智行系統,它可以實現更豐富的功能。此次亮相併沒有對內飾進行曝光,這點頗為可惜。

總結

雖然沒有公布預售價,但從各方面來看,MARVEL X將會是繼蔚來ES8后,又一款定位高端的國產電動車。這款車將在6月底開始預售,9月開始交付用戶,具體表現如何,我們大可拭目以待。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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

【神回復】思域高爾夫怎麼選?20萬內哪款合資SUV更值?

新款捷達的性價比還是挺高的,在市場征戰多年擁有良好的口碑,性價比較高的版本為1。5L手動舒適型與1。5L自動舒適型,兩個配置車型的區別在於變速器不同,在配置上都擁有电子車身穩定系統,后駐車雷達,定速巡航,電動天窗,行車電腦显示屏等,滿足日常家用需求完全沒問題,同時在市場上也有三萬左右的優惠。

如果是自己一個人開的話,那麼在空間方面就不用考慮太多了,高爾夫的話採用的1.4T發動機搭配雙離合的組合,雖然在動力輸出上以及雙離合變速器的平順性上不如思域,但是在轉向的精度上比思域高,換裝多連桿后獨立懸架后底盤更加有韌性,隔音濾振相比思域都有更好的表現。

思域則是擁有非常強的動力輸出,跑高速的話後勁相比高爾夫會更強,同時乘坐空間以及配置要優於高爾夫,搭載的CVT變速器也更加平順,不過就是在轉向,底盤濾振以及隔音上面不如高爾夫。

總的來說,高爾夫的操控性能更佳,思域的動力更強,如果是經常跑高速的話更推薦動力更強的思域。

20萬左右性價比高的SUV可以看看雪佛蘭的探界者或者是斯柯達的柯迪亞克,其中雪佛蘭探界者擁有更低的售價同時加上有可觀的優惠,外觀充滿粗獷之感同時在動力,操控上都有非常不錯的表現,不足在於內飾做工用料一般並且啟停系統無法關閉。

柯迪亞克在華的銷量雖然不溫不火,但是它的產品力同樣十分強大,擁有硬朗的外觀以及非常可觀的乘坐空間,還有七座車型可選,次低配車型的配置已經十分豐富,再加上大眾的成熟動力總成以及良好的底盤濾振和隔音,開起來還是有一定高級感的。

新款捷達的性價比還是挺高的,在市場征戰多年擁有良好的口碑,性價比較高的版本為1.5L手動舒適型與1.5L自動舒適型,兩個配置車型的區別在於變速器不同,在配置上都擁有电子車身穩定系統,后駐車雷達,定速巡航,電動天窗,行車電腦显示屏等,滿足日常家用需求完全沒問題,同時在市場上也有三萬左右的優惠。

假如對空間沒有很大需求的話更加推薦選擇性價比更高的威馳,不僅外觀內飾相比於老氣的經典軒逸更加好看,同時在安全配置上也更加豐富,而經典軒逸的動力相比威馳來說有更強一點的輸出,各種舒適性配置更加齊全,但是售價更高,假如預算充足並且也能接受經典軒逸的外觀內飾的話買來代代步可以可以的,但是預算不是很充足只能買到經典軒逸低配的話建議選擇威馳。

假如是純家用車型的話更加推薦XR-V,雖然其定位為小型SUV,但是在空間上擁有越級的表現,採用的自吸發動機搭配CVT的組合能夠帶來比較平順的體驗,而且在配置方面也能滿足一般的家用需求,性價比頗高,不足之處在於底盤濾振和隔音較差。

馬自達對於運動、操控有着非同一般的偏執,在其SUV車型上也毫不妥協,採用創馳藍天技術+魂動跨界車的風格設計,帶來年輕動感的外觀以及不俗的操控體驗,單憑這兩點就能讓CX-4成為許多年輕消費者的心頭好,不過馬自達在空間方面的造詣一直平平淡淡,適合對操控有追求並且對空間無要求的消費者。

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

新福克斯來了?還有新的工廠也馬上來了?

4英寸中控屏。這些舉措將滿足中國消費者對於大屏幕車載信息娛樂系統的需求,也將提供更多可以滿足人們日常需求的應用軟件。屆時,車主將可以用支付寶輕鬆支付停車費,用餓了么點外賣,或者通過團隊駕駛模式進行群聊、分享定位和目的地。

2018年4月25日,中國北京——福特品牌在北京車展上開啟最大規模新車首秀,吹響了其宏偉的“中國2025計劃”新品攻勢的號角。新車陣容包括最新一代的中級車家族和長安福特在中國市場的第一款新能源車——福特新蒙迪歐插電混動版。同時,即將在中國正式上市的全境越野皮卡福特Ranger Wildtrak也將和超性能越野皮卡福特F-150猛禽一同強勢登陸北京車展,讓消費者一睹“Built Ford Tough” 兩員大將的強悍風采。

四月初在重慶全球首秀的新一代福克斯攜其兩廂版、三廂版以及全新推出的運動感十足的ST-Line悉數登場。新一代福克斯將與新福睿斯和現款福克斯兩廂版一起實現福特在中國中級車市場的三車戰略,滿足消費者的多樣化需求。

2017年,福特率先將”Built Ford Tough”和超性能越野皮卡F-150猛禽引入中國,激起了中國高端皮卡用戶和越野迷的熱烈反響,市場反應火爆。福特汽車公司宣布,旗下全境越野皮卡福特Ranger Wildtrak也將於近日正式上市,並以進口方式引入中國市場。憑藉福特Ranger Wildtrak和福特F-150猛禽兩款旗艦產品,福特將填補國內高端皮卡空白,將為消費者帶來更多福特暢銷全球的皮卡產品。

“我們正在深入調整運營結構與模式,從而在中國市場開啟營收增長的新篇章,”福特汽車集團副總裁兼亞太地區總裁傅禮德表示,“我們不斷增強在華合作和深耕中國市場,在北京車展上展示我們傑出的全新產品和科技陣容就是最好的證明。”

更加多元的中級車陣容

去年,中國共售出超過730萬台中級轎車,佔中國乘用車市場總銷量的31%,而福特將持續深耕中級車這一關鍵細分市場。福特深知,市場越廣闊,消費者對於汽車的需求就越多元化,福特致力於滿足他們不同的審美品味與人生追求。

這正是福特在中級市場推出三車戰略——新福睿斯、新一代福克斯和現款福克斯兩廂版的原因。每一款車型都凝結了福特深厚的全球設計和工程實力,並在研發的最初階段就充分考慮了中國消費者的需求和偏好,這些車型都將在長安福特生產。

作為迄今為止最動感、最創新和最激動人心的福克斯,新一代福克斯造型時尚動感,為中國消費者打造舒適安全、智能互聯的卓越駕乘體驗。極具雕塑感的外觀設計,讓新一代福克斯魅力十足,展現出自信、富有力量感的形象。在保證福克斯引以為豪的愉悅駕駛體驗同時,為充分滿足中國消費者需求,採用全新架構設計的新一代福克斯軸距加長超過50毫米,使寬敞的後排空間達到同級領先的水平。

作為中國市場首款搭載福特Co-pilot360™智行駕駛輔助系統的車型,新一代福克斯為用戶帶來安全愉悅、舒享自如的駕乘體驗。新一代福克斯也是國內首款標配車聯網模塊的傳統燃油版福特車型,與福特派相結合,使車主能夠更加自如地用手機隨時隨地掌控愛車,遠程啟動車輛、提前開啟空調,遠程定位車輛,實時了解車輛油量、警示狀態、機油壽命等信息以及遠程鎖定/解鎖車門。此外,車型搭載的SYNC® 3車載連接系統讓消費者實時互聯、盡在掌握,暢享便捷、安全、愉悅自如的駕乘體驗。

新福睿斯設計更加時尚大氣、更具品質感,擁有加強版的安全配置、豐富的智能科技配置,堪稱中國時尚家轎的新典範。

科技強強聯合,吸引更多消費者

福特致力於用智能汽車服務智能世界,用科技創新為消費者節約寶貴時間,讓他們享受便捷生活。到2019年,在中國上市的福特新車將100%實現車載互聯,讓車內駕乘人員實時在線。福特正在中國與多家科技公司积極合作,其中包括蘋果、阿里巴巴和百度,以不斷推動科技創新,履行其“在中國,為中國”的承諾。合作研究領域包含人車交互技術、智能網聯技術和自動駕駛汽車技術。

自從去年福特和阿里巴巴簽署合作意向書之後,雙方已經開展了一系列線上營銷和消費者體驗活動的嘗試,例如我們與天貓合作的“超級試駕”項目創新性地使用了面部識別、移動支付和大數據等技術,推出不到一個月的時間就完成了超過1000次試駕。

除了屢獲殊榮的SYNC® 3車載連接系統,今年晚些時候,購買福特翼虎的車主們將有機會率先使用由阿里巴巴提供操作系統軟件技術支持的10.4英寸中控屏。這些舉措將滿足中國消費者對於大屏幕車載信息娛樂系統的需求,也將提供更多可以滿足人們日常需求的應用軟件。屆時,車主將可以用支付寶輕鬆支付停車費,用餓了么點外賣,或者通過團隊駕駛模式進行群聊、分享定位和目的地。

“從中國消費者的日常生活需求出發,我們會持續對產品和服務進行調整和升級,”長安福特汽車有限公司執行副總裁何朝兵表示,“通過和本土的科技公司合作,我們將以全新的方式參与到消費者的生活中,為他們提供線上線下無縫銜接的卓越消費體驗。”

打造更強大的經銷商網絡,未來將提供更多的本土化產品

今年晚些時候,福特將正式成立一個全新的全國分銷服務機構。作為合作夥伴長安福特的一部分,新機構將以更高的工作效率,為消費者打造更為便捷的購車和擁車體驗。它將負責福特品牌所有進口及國產乘用車在中國市場所有市場營銷、銷售和服務相關的業務。

美國最暢銷的SUV車型福特探險者將首開先河,所有的長安福特經銷商均有機會銷售這款車型。福特同時確認下一代福特探險者將在長安福特工廠落地生產。

為中國市場量身定製的福睿斯和三排七座銳界已經取得了成功,這隻是一個開始。福特正在迅速擴充和增強在中國的研發和工程能力來履行它“在中國,為中國”生產更多車型的承諾。

從2019年到2025年,福特將在現有國產車型基礎上,新增加5款全新國產車型,其中包括福特品牌首款純電動小型SUV和下一代福特探險者。

此外,福特將在中國全力加快產品研發進程,將從開始設計到投產的時間縮短20%,以大幅縮短產品從研發到上市的時間。同時公司將強化“以人為本”的設計理念,在研發過程的最初階段就融入對於消費者的洞察。

“全新的全國分銷服務機構不僅將為消費者提供一個優化的、品牌統一的服務體驗,還將堅定不移地履行我們對中國市場的承諾,持續地推出卓越的新產品和新技術。”長安福特汽車有限公司總裁何駿傑表示,“到2021年底,福特品牌經銷商展廳的產品數量將至少翻番,並涵蓋乘用車、SUV、電動車、卡車等諸多車型。”

兩位中國本土高層的人事任命

作為“在中國,為中國”戰略的一部分,福特宣布了兩項新的領導職務任命:李宏鵬先生被任命為福特汽車大中華區市場和銷售副總裁,將於5月7日正式生效。陳曄先生將擔任福特汽車大中華區戰略及夥伴關係副總裁。該任命將於5月16日正式生效。

李宏鵬先生將在為福特品牌的所有乘用車產品和服務組建統一的分銷渠道方面發揮重要作用。這一機構的組建將對我們的品牌、合作夥伴、經銷商和消費者帶來重大利好。在加入福特汽車公司之前,李宏鵬先生曾在中國組建了一個高效、盈利能力強並可持續發展的全國分銷網絡。

陳曄先生將負責福特汽車在華整體戰略的規劃,以及公司在華的夥伴關係和其他利益相關方關係的管理工作。

“李宏鵬和陳曄這兩位資深的本土管理人才加入福特汽車的高管團隊,是我們‘在中國,為中國’策略的一個重要組成部分。”傅禮德表示,“我們相信,通過發揮他們優秀的領導能力,我們能夠進一步加強我們在中國快速應對日益變化的市場需求的能力。”

新一代福克斯和新福睿斯將在今年晚些時候於中國上市。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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

廣汽三菱全新SUV高調亮相,詳細解析Eclipse Cross

尾燈的視覺辨識度更高,加上LED的燈帶與前大燈相互對應,總體看來頗有種概念車的feel,增添幾分獨有的尊貴感。實力大玩家,強悍產品實力讓Eclipse Cross備受稱讚除了外表俊俏的外觀設計,Eclipae Cross擁有卓越的動力性能,硬實力毋庸置疑。

作為中國規模最大、參展品牌最多的中國車展之一,北京車展會吸引到全世界最主流的汽車廠商和供應商,展示最重磅的產品和最前沿的科技,被譽為中國汽車行業的風向標。而在2018年的北京車展上,廣汽三菱全新戰略車型Eclipse Cross的亮相引起車迷的熱烈關注。

Eclipse曾經是三菱旗下的經典入門級跑車,在消費者心中具有很重要的地位。這一次,三菱用Eclipse Cross這個名字來為這款全新SUV命名,可謂意義深長。作為三菱汽車的全球戰略車型,Eclipse Cross已經在北美市場、日本還有台灣等地區先行上市,一經上市便贏得消費者的熱烈反響。根據廣汽三菱的企業發展規劃,Eclipse Cross將在今年投放市場,屆時將助力企業銷量與品牌實力的雙重提升。

俊俏小鮮肉,高顏值是Eclipse Cross的鮮明特徵

犹如一個俊俏的小鮮肉,第一眼見到Eclipse Cross定會被它的高顏值所吸引。這裏所指的高顏值,不是一般群眾所熱捧的那種炫酷誇張高大上的未來感,它本身並沒有承襲三菱其他SUV固有的霸氣外露的形象,而是很聰明地把精緻的設計與運動元素融洽地結合在一起。

承襲三菱Dynamic shield設計語言,Eclipse Cross的前臉的特徵十分明顯。同色的保險杠與大面積鍍鉻裝飾條搭配相得益彰,使整個車頭都極具衝擊力。遠近光一體的LED大燈是Eclipse Cross的另一亮點,造型設計與歐藍德師出同門,只是Eclipse Cross的大燈輪廓會更加犀利,犹如刀鋒一般,十分符合年輕化的設計風格。

車身側面的Cross元素顯露無疑,Eclipse Cross擁有動感型SUV特有的俯衝式腰線及外輪廓造型,車身多處有着尋人耐味的線條稜角造型;從前門底部延伸至後輪眉的曲線條更是給這充滿運動活力的車身賦予了更多力量感。輪轂造型極具設計感,與整車運動風格十分契合。細節來看,輪拱以及側裙處的黑色運動套件非常醒目,在Coupe風格中也顯露了一絲小野性,具有運動范。

尾燈作為整車最大的點睛之筆,儼然成為了Eclipse Cross最具代表性的標籤。橫貫式的尾燈把整塊尾窗玻璃一分為二,極具個性設計。當尾燈亮起,尤其是在黑暗的環境下觀察,不難發現這種設計的絕妙之處。尾燈的視覺辨識度更高,加上LED的燈帶與前大燈相互對應,總體看來頗有種概念車的feel,增添幾分獨有的尊貴感。

實力大玩家,強悍產品實力讓Eclipse Cross備受稱讚

除了外表俊俏的外觀設計,Eclipae Cross擁有卓越的動力性能,硬實力毋庸置疑。Eclipse Cross配備了一套S-AWC超級全輪控制系統,該系統源自三菱多年的世界拉力錦標賽的比賽經驗,是經過多年的技術積累研發出來的电子式動力分配系統。在車輛行駛過程中,S-AWC能夠根據不同的行駛路況,精確控制牽引力、制動力、前後、左右輪間扭矩輸出,從而大幅提升車輛在過彎等情況下的穩定性,抑制側滑、轉向不足、轉向過度等情況的出現,更好地發揮車輛極限,大幅提高車輛的行駛穩定性。

空間上,Eclipse Cross的空間舒適性和靈活性同樣值得稱讚。後排座椅支持前後調節,最大200mm的空間位移給足後排消費者最大的乘坐空間。與此同時,後排座椅還支持4/6放倒,能大幅增加空間的裝載面積。據悉,Eclipse Cross 還將搭載廣汽三菱全新的車聯網技術,具備很高的實用性。

“三菱官方稱用Eclipse這個名字是因為這款SUV的車尾採用溜背式設計,整體看起來非常動感。” 美國權威媒體Car And Driver這樣評價。

除了權威媒體的肯定,Eclipse Cross也獲得國際權威機構的實力認可。憑藉著潮流時尚的外觀和強悍的產品實力,日前,Eclipse Cross榮獲美國️芝加哥優良設計獎(GOOD DESIGN Awards)。該獎項是全球最為知名、歷史悠久的國際設計大獎之一,與德國紅點設計大獎(Red Dot)、日本優秀設計獎(GOOD DESIGN Awards)並列為設計界的三大獎。

總結:

Eclipse Cross從設計上開始有了巨大的改變,以Dynamic Shield家族設計語言為基調,車身整體造型不再平庸,變得更具個性、更加年輕。高顏值的設定,相信Eclipse Cross將會成為繼歐藍德之後又一爆款車型。

以Eclipse Cross為代表的全新車型亮相,標志著廣汽三菱產品矩陣的進一步完善。除了Eclipse Cross,在此次北京車展上,廣汽三菱還帶來了首款純電動概念車E MORE、歐藍德榮耀冠軍版等多款重磅車型,吸睛無數。伴隨着產品陣營的不斷優化,廣汽三菱勢必躋身主流視野,圓滿完成2020年30萬的年銷量目標。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

6萬塊就能買部蒙迪歐?你先別急着給錢

哈弗H6近年來久坐SUV銷量冠軍寶座,自是離不開口碑和性價比的支持,空間大、配置高、價格實惠並且毛病不多,買一輛預算不是很高的二手SUV,個人覺得首選哈弗H6,而且二手哈弗H6的實際使用年份也不高,值得考慮。買二手車,要注意的問題比較多,借用二手車從業者的話來說,這一行的水比較深。

買車的目的是什麼?很多人可能會脫口而出:“當然是為了日常代步,從此再也感覺不到距離的約束”。照這樣看來汽車僅僅是一個代步工具而已,沒有那麼簡單,汽車的代名詞實在是太多,豪華、家用、智能、低奢、時尚等等數不勝數,這些形容詞往往跟臉面掛鈎,所以汽車除了代步的功能外,它還是面子的象徵。

小明有5、6萬的存款,這點錢肯定是買不起一個廁所的,他感到很氣憤,決定先實現他另一個抱負,先賺上一個億,啊不,先買一輛車。為此他天天瀏覽玩車、車買買、玩車TV的內容,跟留言互動,學到了不少跟汽車相關的知識。同時他也明白了他這5、6萬在新車裡面根本就翻不起浪花。為此他在的建議之下轉戰二手車市場,運用所學過的知識為自己挑一輛價格低,好開又有面子的車。

2018年3月5日政府報告中提出全面取消二手車限遷政策,這對想買二手車的人來說無疑是個好消息,這意味着想買就買,再也不用擔心排放不達標的問題。隨着國家政策的支持和市場制度的規範化,買二手車將會越來越放心,遠離事故車,保障我們的財產安全。

蒙迪歐-致勝當年就是靠性價比拉低了B級車的售價,它的外觀即使在現在看來也不會過時,花五六萬就可以享受B級車帶來的駕駛及乘坐體驗無疑是划算的。只不過買車的時候注意轉向,據不少車主反映致勝有跑偏現象,至於氣門室蓋墊漏油的現象,這是上了年紀的福特車的老毛病了,換一個墊圈也花不了多少錢。油耗偏高,百公里10個油左右,2.3L的發動機跑出這樣的油耗也是可以理解的。

油耗要低,小毛病要少。沒問題,本田“超跑”飛度滿足你的需求,飛度的年份比較新,日常用車也不會帶給你很多麻煩。省油是必須的,平均1公里3毛錢甚至更少,動力表現良好,妥妥的小鋼炮。如果你對空間沒有太高的要求,飛度絕對是花少錢大樂趣的典範。

轎車有轎車的好處,而有些人則喜歡大氣一點的SUV,可以不用擔心泥濘的鄉間小道。哈弗H6近年來久坐SUV銷量冠軍寶座,自是離不開口碑和性價比的支持,空間大、配置高、價格實惠並且毛病不多,買一輛預算不是很高的二手SUV,個人覺得首選哈弗H6,而且二手哈弗H6的實際使用年份也不高,值得考慮。

買二手車,要注意的問題比較多,借用二手車從業者的話來說,這一行的水比較深。事故車、泡水車經過處理之後有時候連從業多年的二手車評估師都會看漏眼,更不用說一些對汽車知識了解不深的朋友了。如何避免上當受騙,關鍵是要選擇可靠的二手車平台,因為這些比較大的平台都會對出售的二手車有一個質保,即使是買到有問題的車也會進行不同額度的賠付,比較可靠。

雖然有這些平台的保障,但是我們在看車的時候也要注意一些細節,這些地方不注意,買到的車即使不是事故車也會虧,小明就用親身經歷告訴你該怎麼看二手車的細節。

小明看上了一輛14款CVT舒適型飛度,外觀良好,首先將鑰匙打到“ON”擋,不要點火,讓發動機自動檢查故障碼,片刻之後點火。故障碼未消除:存在情況一:汽車某處存在故障;存在情況二:自然現象,本田車經常出現故障碼;解決方法,專業人員使用OBD(汽車故障診斷儀)檢測。接着再看翼子板、車門、後備廂各處螺絲是否擰動,如果此處部件有更換,很大部分原因是汽車發生過碰撞。

小明就發現了飛度的左側翼子板有更換;踩油門試發動機,車身抖動較大,發動機響聲大。在這個年份的飛度上一般不會出現這種情況。小明結合自己發現的問題再三追問才知道該飛度有一次追尾事故,未傷及大梁,更換了左翼子板。這種出過事故但是未傷及兩梁六柱四避震的都不算事故車,雖然沒有多大的問題,但會對汽車的價值造成影響,可以藉此砍價。

買二手車除了要選擇大平台之外,還要有熟悉汽車構架的人幫你看一下車,畢竟不是每個人都像小明一樣从里面學了點汽車知識。二手車行業沒有想的那麼可怕,擦亮眼睛還是可以發現問題的,再說了有問題平台也會給你賠償。沒有那麼多的預算,但是想要開一台不錯的車,二手車是最好的選擇了,不知道你們怎麼看。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

搭載同級最強的寶馬1.6T發動機,這款智能社交SUV厲害了!

智能音樂:內容庫提供了1700萬首QQ正版音樂,滿足了年輕人的娛樂需求。智能導航:系統提供免費的智能導航,遇到停車或加油等需求,系統會主動推薦附近最合適的加油站和停車場。智能社交:用戶可以通過“AI in car”發起好友集結或加入好友集結,還可以連接行車記錄儀、智能相機等智能硬件,記錄沿途美景趣事,形成路書分享到朋友圈。

是個“喜新厭舊”的人,所以在逛車展的時候,會比較關注新車型的發布,此次北京車展上新車也不少,其中有一款新發布的SUV就非常引人關注-東風風行T5,第一次見到真車,有眼前一亮的感覺,外觀真的很亮眼。

據官方透露,風行T5是東風風行3.0時代的首款產品,除了全新的設計語言,還搭載了和騰訊合作開發的FutureLink3.0車聯網系統,社交是這款新車非常強調的一點,明顯能感覺得這款車就是為年輕人量身訂做的。不過,現在早已不是SUV的紅利期了,在SUV已經接近了泛濫的情況下,這款車型要憑藉什麼來脫穎而出呢?

正如前面所說的,目前市面上SUV已經犹如黃河泛濫,一發不可收拾,作為一款新車,如果長相普通的話,很快就會淹沒在車海里,就外觀而言,東風風行T5的氣場足夠強大,有着明顯的辨識度。

風行T5的整體設計非常霸氣,超大進氣格柵向兩側延展,和劍羽式的LED大燈融為一體,拉寬了橫向的視覺,內部的細節也很有設計感,黑色的中網搭配線段式的鍍鉻飾條,同時一條粗壯的鍍鉻飾條將格柵一分為二,兩側的霧燈區域造型和線條較為誇張,並配有銀色的下護板,車頭看起來氣勢很足,視覺衝擊力強 。

車身側面的腰線比較筆直硬朗,D柱採用了時下比較流行的懸浮式車頂,並通過收窄的設計形成一種聚焦的效果。車尾部分的線條極為豐富,造型富有層次感,一體貫穿式的尾燈設計別具一格,和下方的鍍鉻飾條將“FORTHING”的標識環繞其中,嵌入式的雙邊雙出矩形尾排設計看起來更為兇悍,突出了運動的定位。

風行T5的內飾也是比較喜歡的一點,採用環抱式的布局,營造了一種以駕駛者為中心的感覺,大面積軟質材料的包裹,配合縫線的設計很好地提升檔次感,撞色的設計散發出濃濃的運動氣息。真皮的平底多功能方向盤的樣式也比較新穎,搭配部分銀色裝飾提升了時尚感,中控台的鋼琴式按鍵也很精緻考究。

而最吸引眼球12英寸超大懸浮式中央觸控大屏與12.3英寸全液晶儀錶,中控大屏比榮威RX5的10.4英寸還要大,無論是科技感還是檔次感都非常出色。可惜車展現場沒能看到大屏和液晶儀錶盤點亮的效果,但從效果圖來看還是很贊的。

智能社交是風行T5非常強調的一點,去年中國移動社交用戶規模高達5.9億,像這樣的年輕一代很多都是“離開網絡就會死星人”,對車載互聯功能有着很強烈的願望。風行T5搭載了聯合騰訊開發的“FutureLink3.0”車聯網系統,通過鏈接騰訊“AI in Car”雲端生態,構建了一個智能汽車交互平台,形成了一套完整的智能生態系統,大致有3大功能模塊:智能音樂、智能導航、智能社交。

智能音樂:內容庫提供了1700萬首QQ正版音樂,滿足了年輕人的娛樂需求;

智能導航:系統提供免費的智能導航,遇到停車或加油等需求,系統會主動推薦附近最合適的加油站和停車場;

智能社交:用戶可以通過“AI in car”發起好友集結或加入好友集結,還可以連接行車記錄儀、智能相機等智能硬件,記錄沿途美景趣事,形成路書分享到朋友圈。

車內的眾多操作都可以通過騰訊叮噹語音助理進行,即使是口語化的表達也能精準識別,充分解放了駕駛者的雙手,便利性大大提升。此外,基於騰訊大數據,系統會根據用戶的使用習慣,作出個性化的精準推薦,比如導航可以預判用戶出行的目的地,QQ音樂可以根據用戶的喜好推薦歌單,說不定,最懂你的就是你的車。

風行T5雖然定位為緊湊型SUV,但車長為4530mm,軸距達到了2720mm,空間表現自然不會差。以身高4375px的體驗者來看,後排有接近3拳的腿部空間,並不輸一般的中型SUV。同時後排中央座椅帶有頭枕,座椅很厚實,填充物比較柔軟,坐墊也比較長,對大腿承托效果很明顯,後排也還有空調出風口,底部還設計了12V電源和USB接口,這個配置對於後排乘客來說還是很好用的,細節方面做得很好。

動力也是風行T5的一大亮點,搭載了由寶馬技術授權的1.6TD渦輪增壓發動機,擁有缸內直噴、雙通道渦管增壓、連續可變氣門升程、可變流量機油泵等多項技術,最大功率為150kW(204ps),在1700轉時即可爆發出280N.m的最大扭矩,傳動匹配7速雙離合變速箱,官方綜合油耗為7.5L/100km,經濟性方面也有不錯的表現。

從數據來看,風行T5的動力不僅在中國品牌陣營中屬於強悍,即便是算上合資陣營,同級中也基本無人能出其右,壓榨動力頗為厲害的本田高功率版1.5T渦輪增壓發動機的最大功率也不超過200ps,風行T5的動力確實令人期待。

據悉,風行T5擁有ADAS智能駕駛輔助系統,採用了與特斯拉相同的Mobileye圖像識別技術,可實現ACC自適應巡航、AEB主動剎車、LDW車道偏移提醒、IHC智能遠近光等6大智能模塊功能。此外,還有自動感應智能電動尾門、半自動泊車系統、藍牙鑰匙、手機無線充電等諸多智能科技加持,不過具體的配置還不得而知。

緊湊型SUV可以說是兵家必爭之地,這個市場已經不是一般的擁擠了,競爭的激烈程度已不用多說,像哈弗H6、傳祺GS4、博越和榮威RX5這些長期霸佔銷量排行榜前列的熱門車型,可能開始擔心起風行T5這個後起之秀。不過在看來,風行T5的后發優勢不容小覷,其在動力、智能化和空間方面有着不小的優勢,外觀內飾也是年輕人喜歡的風格。不過,在此次車展上,風行T5並沒有公布價格,現在唯一的問題就是風行T5的售價,如果價格依然像以往非常親民的話,覺得風行T5會有非常不錯的市場表現。

總 結

在這屆北京車展發布的眾多新車之中,作為東風風行的緊湊型SUV,東風風行T5絕對配得上“重磅”二字,外觀和內飾屬於一眼就讓人喜歡的類型,設計手法越來成熟,高級感方面做得也足夠出色,還有同級最強悍的動力和年輕人最喜歡的智能互聯,加上中國品牌一貫以來配置和質價比方面的優勢,風行T5值得期待,希望不用等太久吧。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

※超省錢租車方案

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

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

這台被稱為“雷霆”的小跑車,性能炸裂連超跑也顧忌三分

而內飾也不含糊,彩色液晶儀錶板、在M5上首次使用、帶M1、M2快速設定按鈕的三幅式運動型方向盤、包裹性更好的真皮桶椅、紅色點火按鈕等等。可以說,M2 雷霆版相比M2普通版,無論從机械上還是設備上都有了很大的改進,也難怪在國內這款車被稱為“M2 雷霆版”。

今年3月份,作為寶馬M最強最新的旗艦和燈塔車型,全新BMW M5以打破上海國際賽車場量產四門房車最快圈速紀錄的形象,呈現在世人眼前。而這,也揭開了2018年寶馬M在中國新篇章的開端。在北京車展上,寶馬M2雷霆版的全新亮相,再次為寶馬M點燃了在中國市場的下一個火種。

說到寶馬M,相信大家都不會陌生。而相對於其DNA而言,寶馬M一直堅持着紮根於賽道,源於賽道的精神,為我們提供了一款又一款令人振奮的、具有濃烈個性的產品。事實上,全新寶馬M2雷霆版的推出也展現了寶馬M對中國市場的理解。在採訪BMW M部門總裁范梅爾先生時得知,作為一個以賽道為基本的品牌,由於中國的賽車歷史和傳統並不深遠,很多人對賽車還是保持着一知半解的狀態。

不過由於寶馬M堅持在中國進行大力度的推廣,並舉辦如BMW M精英駕駛訓練營、M嘉年華等活動,讓更多的朋友對寶馬M開始有了興趣。很多購買帶M package和M performance package車型的朋友開始去體驗寶馬M所帶來的樂趣,並最終進入了寶馬M的大家庭。而對於那些對駕駛非常有要求,也希望提升自身駕駛技術和車輛性能的M 狂熱粉絲,寶馬M也提供從經典的M車型、Competition、CS、CSL等各個層級的車型,來提供給消費者選擇。

就以這次推出的M2雷霆版為例,它是基於原廠的M2所打造的一款“准”入門級M車型。在中國,M2是現在M家族之中最好賣的車型之一,也是操控最好、最純粹的M車。因此不少熱衷於性能的朋友,也希望能夠有一款更“辣”的M2。相比標準版的M2,M2雷霆版的性能會更高一個層次。

首先最大改變的是發動機部分。M2雷霆版採用了與M3、M4同款的S55B30雙渦輪增壓直六發動機,配上7速雙離合變速箱。雖然馬力被調低至410匹,但S55的反應和動力響應會更快更直接,也更能激化M2的底盤潛力。而扭矩維持M3、M4上S55的550牛米,相信更輕的M2在加速性能上絕對有機會幹掉大哥。也難怪有人說,這才是真正的M2“完全版”。

除了發動機以外,為了對應增加的動力輸出,M2雷霆版的引擎機艙加入了M3、M4上見到的U型CFRp穩定桿,以增加車頭的整體剛性和抗扭性。另外,鋁製輕量化前後懸挂可以提供更輕的簧下重量提升操控反應;帶電控閥門的雙邊雙出型排氣讓S55的性能更好發揮之餘,也有更雄渾的聲浪。Brembo代工的前四后二剎車和打孔剎車碟設計讓M2雷霆版有更強的、能對應賽道極限需求的剎車性能;全新設計的19寸輕量化合金輪圈除了顏值更高,也能提升操控動力反應。

而外觀方面,M2雷霆版上也有不少專屬設計。譬如通風性能更好的熏黑的雙腎型進氣格柵、主動式LED頭燈、輕微修改的前包圍、M4的雙色后視鏡等等等等。而內飾也不含糊,彩色液晶儀錶板、在M5上首次使用、帶M1、M2快速設定按鈕的三幅式運動型方向盤、包裹性更好的真皮桶椅、紅色點火按鈕等等。可以說,M2 雷霆版相比M2普通版,無論從机械上還是設備上都有了很大的改進,也難怪在國內這款車被稱為“M2 雷霆版”。

不過,即使這是一台“Competition”競技版的M車型,在駕駛性能上足以做到不妥協。不過寶馬M2雷霆版並不代表這是一台在街道上很難開的車。相反,M2 雷霆版依然很照顧到舒適性的需求,這也是寶馬M在誕生以來的一種堅持。按照范梅爾先生的說法,將一台快車做得舒適,會比將一台舒適的車做得快更簡單,這也是寶馬M一直以來兼顧舒適性和不妥協的操控性的一條獨特的方程式。

從M2雷霆版在北京車展的全球首發可以看出,中國已經成為寶馬M相當重要的市場。可以說,其受歡迎程度的與日俱增,其實和寶馬M敢於創新的工匠精神是分不開的。譬如寶馬M5首次在高性能M房車上使用了M X-drive四驅系統。而在能夠完美解決重量的問題之後,M也將會出現電動車型。范梅爾先生稱,即使是自動駕駛,對M來說也是非常重要的技術,這和M本身秉承的賽道精神並不矛盾。假如能夠以自動駕駛通勤,再在賽車場上親自去駕駛M系列車型體驗高性能帶來的樂趣,這將是非常美妙的。

2017年,M在中國銷量勁增37%,2018年1月至2月,M在中國的銷量較去年同比漲幅達到90%。同時,2017年M運動套件車型銷售超過9萬台,占整體BMW 銷量的15%。這種市場效應足以證明BMW M已經開始在消費者心中紮根,成為眾多BMW愛好者的共同追求。而除了M系列的車型以外,寶馬M也一直在尋求降低門檻的手段。就以寶馬M2為例,雖然已經是作為M家族最入門的車款,但相信對於很多熱愛寶馬M的年輕人來說門檻也可能會有點高。而M240i作為一款高性能2系,能夠銜接從普通寶馬到寶馬M之間的空間,這對於很多熱愛寶馬M的朋友來說,相信也是一個很好的消息。

隨着不斷壯大的粉絲群體,BMW M也在努力致力於打造中國的高性能汽車運動文化,促進賽車運動發展。2018年,備受M粉絲推崇的M嘉年華將繼續在中國舉辦。中國成為該活動德國之外的唯一舉辦國家。

2018年,BMW M將於2018年在國內推出7款新車。為了讓更多的朋友接觸到M的樂趣,也將會以消費者需求為先,推出更多的M運動套件車型。對於國內消費者來說,這無疑是最樂於看到的事情。現在我們已經知道有寶馬M5、寶馬M2雷霆版和寶馬M4 CS,再加上M8概念車。那接下來將會有什麼M車型,相信非常值得期待。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

※超省錢租車方案

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

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

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

能讓奔馳寶馬甚至是蘭博基尼、法拉利都服的,大概只有TA了

不說廢話了,今晚秋名山上見,輸了的向思域學習。報告,在街邊發現一款神似路虎的“五菱宏光S“款SUV,不知道售價如何的,趕緊問一問,錯過就買不到了。你說你這年輕人哈,年紀輕輕就開上五菱宏光S,也不知道低調點,你讓我三十歲開寶馬的怎麼好意思。

有種車,不是任何人都有能力駕馭;有種車,開豪車之人唯恐避之不及;有種車,雖然相貌平平卻震懾天下眾車。也許機智的你已猜到,沒錯,它就是號稱“神車“的五菱宏光(還有S)。

提起五菱宏光,相信車迷們都知道”決戰秋名山,輸者留下車標“,也許是秋名山急彎太多,豪車固然馬力大,但車重,開起來還不好掌控出彎入彎的時機,特別是最後1公里的5連髮夾彎,不少豪車都栽在此地。那麼宏光是怎麼成為一代“神車”的呢?

五菱宏光(S)名震天下后,它的代表性文字徽章更是受到眾車的膜拜,車尾部不貼個五菱宏光徽章都不好意思開出街頭。

蘭博基尼Lp700都貼上了“五菱宏光S”,這個操作很6,掌聲響起來。不過還是想問一句,這款五菱宏光S哪裡有賣,賣多少錢,我也想買一輛。

寶馬車也來湊熱鬧了,你TM這是湊熱鬧,還是來炫富的,老子反手就是一巴掌。不說廢話了,今晚秋名山上見,輸了的向思域學習。

報告,在街邊發現一款神似路虎的“五菱宏光S“款SUV,不知道售價如何的,趕緊問一問,錯過就買不到了。

你說你這年輕人哈,年紀輕輕就開上五菱宏光S,也不知道低調點,你讓我三十歲開寶馬的怎麼好意思。

小子,你就不能正經點嗎?好好的五菱宏光S你幹嘛把它改成跑車了,想去交警局喝茶嗎?

自從家裡有了五菱宏光S,我就愛上了野馬。

獨步江湖的五菱宏光S,闖蕩江湖多年未逢敵手。一言不合就是開干,拳打瑪莎拉蒂,腳踢保時捷,勇撞小牛,這些根本都不是事。

然而根據中華人民共和國交通法和機動車登記當中的相關條列显示,其實這些貼車標的行為已經涉及到違法行為。還是覺得各位車主要好自為之,且行且珍惜,被警察蜀黍請去喝茶就不太好了。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

※回頭車貨運收費標準

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

※超省錢租車方案

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