PowerMock學習(三)之Mock局部變量

編寫powermock用例步驟:

  • 類上面先寫這兩個註解@RunWith(PowerMockRunner.class)、@PrepareForTest(StudentService.class)
  • 先模擬一個假對象即studentdao方法中的局部變量
  • 用無參的方式new對象
  • 再模擬這個對象被調用時,是否有返回,有返回值給出默認值,沒有用doNothing()
  • 驗證有返回值使用assertEquals即可,無返回值使用Mockito.verify驗證

實際案例

接着上一篇文章中的代碼,修改下service中的代碼,這次我不通過構造器注入Dao,在方法中new一個StudentDao,創建一個名為StudentNewService的類。

具體示例代碼如下:

package com.rongrong.powermock.service;

import com.rongrong.powermock.dao.StudentDao;

/**
 * @author rongrong
 * @version 1.0
 * @date 2019/11/17 21:13
 */
public class StudentNewService {


    /**
     * 獲取學生個數
     * @return返回學生總數
     */
    public int getTotal() {
        StudentDao studentDao = new StudentDao();
        return studentDao.getTotal();
    }

    /**
     * 創建學生
     * @param student
     */
    public void createStudent(Student student) {
        StudentDao studentDao = new StudentDao();
        studentDao.createStudent(student);
    }
}

針對上面修改部分代碼,進行單元測試,以下代碼有採用傳統方式測試和採用powermock方式進行測試,具體代碼如下:

package com.rongrong.powermock.service;

import com.rongrong.powermock.dao.StudentDao;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

/**
 * @author rongrong
 * @version 1.0
 * @date 2019/11/20 21:42
 */
@RunWith(PowerMockRunner.class)
@PrepareForTest(StudentNewService.class)
public class TestNewStudentService {

    /**
     * 傳統方式測試
     */
    @Test
    public void testGetStudentTotal() {
        StudentNewService studentNewService = new StudentNewService();
        int total = studentNewService.getTotal();
        assertEquals(total, 10);
    }

    /**
     * @desc測試有返回值類型 採用powermock進行測試獲取學生個數
     */
    @Test
    public void testGetStudentTotalWithPowerMock() {
        //先模擬一個假對象即studentdao方法中的局部變量
        StudentDao studentDao = PowerMockito.mock(StudentDao.class);
        try {
            //這句話我按照英文理解就是,我用無參的方式new了一個StudentDao對象
            PowerMockito.whenNew(StudentDao.class).withNoArguments().thenReturn(studentDao);
            //再模擬這個對象被調用時,我們默認假定返回10個證明調用成功
            PowerMockito.when(studentDao.getTotal()).thenReturn(10);
            //這裏就是service就不用再說了
            StudentNewService studentNewService = new StudentNewService();
            int total = studentNewService.getTotal();
            assertEquals(total, 10);
        } catch (Exception e) {
            fail("測試失敗了!!!");
            e.printStackTrace();
        }

    }

    /**
     * @desc測試的無返回值類型 採用powermock進行測試創建學生
     */
    @Test
    public void testCreateStudentWithPowerMock() {
        //先模擬一個假對象即studentdao方法中的局部變量
        StudentDao studentDao = PowerMockito.mock(StudentDao.class);
        try {
            //這句話我按照英文理解就是,我用無參的方式new了一個StudentDao對象
            PowerMockito.whenNew(StudentDao.class).withNoArguments().thenReturn(studentDao);
            Student student = new Student();
            //這句話註釋與否都能運行通過,也就是我只能判斷他是否被調用
            //PowerMockito.doNothing().when(studentDao).createStudent(student);
            //這裏就是service就不用再說了
            StudentNewService studentNewService = new StudentNewService();
            studentNewService.createStudent(student);
            Mockito.verify(studentDao).createStudent(student);
        } catch (Exception e) {
            fail("測試失敗了!!!");
            e.printStackTrace();
        }

    }

}

運行上面的測試用例,會發現第一個失敗,後面兩個都運行成功,即有返回值和無返回值類型的測試(void類型)。

 

 

注意:對於無返回值類型的測試,只能驗證其是否被調用,這裏還請注意。

 

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

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

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

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

小三通海運與一般國際貿易有何不同?

小三通快遞通關作業有哪些?

併發編程-硬件加持的CAS操作夠快么?

Talk is cheap

CAS(Compare And Swap),即比較並交換。是解決多線程并行情況下使用鎖造成性能損耗的一種機制,CAS操作包含三個操作數——內存位置(V)、預期原值(A)和新值(B)。如果內存位置的值與預期原值相匹配,那麼處理器會自動將該位置值更新為新值。否則,處理器不做任何操作。無論位置V的值是否等於A, 都將返回V原有的值。

CAS的含義是”我認為V的值應該是A,如果是,那我將V的值更新為B,否則不修改並告訴V的值實際是多少“

Show you my code

在單線程環境中分別使用無鎖,加鎖以及cas進行十組5億次累加運算,然後打印出平均耗時。

 /**
 * cas對比加鎖測試
 *
 * @author Jann Lee
 * @date 2019-11-21 0:12
 **/
public class CasTest {

    @Test
    public void test() {
        long times = 500_000_000;
        // 記錄耗時
        List<Long> elapsedTime4NoLock = new ArrayList<>(10);
        List<Long> elapsedTime4Synchronized = new ArrayList<>(10);
        List<Long> elapsedTime4ReentrantLock = new ArrayList<>(10);
        List<Long> elapsedTime4Cas = new ArrayList<>(10);

        // 進行10組試驗
        for (int j = 0; j < 10; j++) {
            // 無鎖
            long startTime = System.currentTimeMillis();
            for (long i = 0; i < times; i++) {
            }
            long endTime = System.currentTimeMillis();
            elapsedTime4NoLock.add(endTime - startTime);

            // synchronized 關鍵字(隱式鎖)
            startTime = endTime;
            for (long i = 0; i < times; ) {
                i = addWithSynchronized(i);
            }
            endTime = System.currentTimeMillis();
            elapsedTime4Synchronized.add(endTime - startTime);

            // ReentrantLock 顯式鎖
            startTime = endTime;
            ReentrantLock lock = new ReentrantLock();
            for (long i = 0; i < times; ) {
                i = addWithReentrantLock(i, lock);
            }
            endTime = System.currentTimeMillis();
            elapsedTime4ReentrantLock.add(endTime - startTime);

            // cas(AtomicLong底層是用cas實現)
            startTime = endTime;
            AtomicLong atomicLong = new AtomicLong();
            while (atomicLong.getAndIncrement() < times) {
            }
            endTime = System.currentTimeMillis();
            elapsedTime4Cas.add(endTime - startTime);
        }

        System.out.println("無鎖計算耗時: " + average(elapsedTime4NoLock) + "ms");
        System.out.println("synchronized計算耗時: " + average(elapsedTime4Synchronized) + "ms");
        System.out.println("ReentrantLock計算耗時: " + average(elapsedTime4ReentrantLock) + "ms");
        System.out.println("cas計算耗時: " + average(elapsedTime4Cas) + "ms");

    }

    /**
     * synchronized加鎖
     */
    private synchronized long addWithSynchronized(long i) {
        i = i + 1;
        return i;
    }

    /**
     * ReentrantLock加鎖
     */
    private long addWithReentrantLock(long i, Lock lock) {
        lock.lock();
        i = i + 1;
        lock.unlock();
        return i;
    }

    /**
     * 計算平均耗時
     */
    private double average(Collection<Long> collection) {
        return collection.stream().mapToLong(i -> i).average().orElse(0);
    }
}

從案例中我們可能看出在單線程環境場景下cas的性能要高於鎖相關的操作。當然,在競爭比較激烈的情況下性能可能會有所下降,因為要不斷的重試和回退或者放棄操作,這也是CAS的一個缺點所在,因為這些重試,回退等操作通常用開發者來實現。

CAS的實現並非是簡單的代碼層面控制的,而是需要硬件的支持,因此在不同的體系架構之間執行的性能差異很大。但是一個很管用的經驗法則是:在大多數處理器上,在無競爭的鎖獲取和釋放的”快速代碼路徑“上的開銷,大約是CAS開銷的兩倍。

為何CAS如此優秀

硬件加持,現代大多數處理器都從硬件層面通過一些列指令實現CompareAndSwap(比較並交換)同步原語,進而使操作系統和JVM可以直接使用這些指令實現鎖和併發的數據結構。我們可以簡單認為,CAS是將比較和交換合成是一個原子操作

JVM對CAS的支持, 由於Java程序運行在JVM上,所以應對不同的硬件體系架構的處理則需要JVM來實現。在不支持CAS操作的硬件上,jvm將使用自旋鎖來實現。

CAS的ABA問題

cas操作讓我們減少了鎖帶來的性能損耗,同時也給我們帶來了新的麻煩-ABA問題。

在線程A讀取到x的值與執行CAS操作期間,線程B對x執行了兩次修改,x的值從100變成200,然後再從200變回100;而後在線程A執行CAS操作過程中並未發現x發生過變化,成功修改了x的值。由於x的值100 ->200->100,所以稱之為ABA的原因。

魔高一尺道高一丈,解決ABA的問題目前最常用的辦法就是給數據加上“版本號”,每次修改數據時同時改變版本號即可。

Q&A

在競爭比較激烈的情況下,CAS要進行回退,重試等操作才能得到正確的結果,那麼CAS一定比加鎖性能要高嗎?

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

【其他文章推薦】

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

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

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

小三通海運與一般國際貿易有何不同?

小三通快遞通關作業有哪些?

EFCore批量操作,你真的清楚嗎

背景

EntityFramework Core有許多新的特性,其中一個重要特性便是批量操作。

批量操作意味着不需要為每次Insert/Update/Delete操作發送單獨的命令,而是在一次SQL請求中發送批量組合指令。

EFCore批量操作實踐

批處理是期待已久的功能,社區多次提出要求。現在EFCore支持開箱即用確實很棒,可以提高應用程序的性能和速度。

P1 對比實踐

下面以常見的批量插入為例,使用SQL Server Profiler 觀察實際產生並執行的SQL語句。

 還有一種關注EFCore產生的sql語句的方式,添加Nlog支持,關注Microsoft.EntityFrameworkCore.Database.Command 日誌

<logger name=”Microsoft.EntityFrameworkCore.Database.Command” minlevel=”Debug” writeTo=”sql” />

定義插入模型Category, 插入4個實體,這裏為什麼強調4,請留意下文。

    public class Category
    {
        public int Id { get; set; }
        public int CategoryID { get; set; }
        public string CategoryName { get; set; }
    }

/*EFCore 查看模型屬性,有Id使用id作為主鍵,
沒有Id,搜索public "{TableName}Id"作為主鍵,默認為int形主鍵設置標記列自增;
*/ info: Microsoft.EntityFrameworkCore.Database.Command[20100]
      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30']
      CREATE TABLE [Categories] (
          [Id] int NOT NULL IDENTITY,
          [CategoryID] int NOT NULL,
          [CategoryName] nvarchar(max) NULL,
          CONSTRAINT [PK_Categories] PRIMARY KEY ([Id])
      );

using (var db = new BloggingContext())
{
  db.Categories.Add(new Category() { CategoryID = 1, CategoryName = “Clothing” });
  db.Categories.Add(new Category() { CategoryID = 2, CategoryName = “Footwear” });
  db.Categories.Add(new Category() { CategoryID = 3, CategoryName = “Accessories” });
  db.Categories.Add(new Category() { CategoryID = 4, CategoryName = “Accessories” });
  db.SaveChanges();
} 

當執行SaveChanges(), 日誌显示:

info: Microsoft.EntityFrameworkCore.Database.Command[20100]
      Executing DbCommand [Parameters=[@p0='1', @p1='Clothing' (Size = 4000), @p2='2', @p3='Footwear' (Size = 4000), @p4='3', @p5='Accessories' (Size = 4000), @p6='4', @p7='Accessories' (Size = 4000)], CommandType='Text', CommandTimeout='30']
      SET NOCOUNT ON;
      DECLARE @inserted0 TABLE ([Id] int, [_Position] [int]);
      MERGE [Categories] USING (
      VALUES (@p0, @p1, 0),
      (@p2, @p3, 1),
      (@p4, @p5, 2),
      (@p6, @p7, 3)) AS i ([CategoryID], [CategoryName], _Position) ON 1=0
      WHEN NOT MATCHED THEN
      INSERT ([CategoryID], [CategoryName])
      VALUES (i.[CategoryID], i.[CategoryName])
      OUTPUT INSERTED.[Id], i._Position
      INTO @inserted0;

      SELECT [t].[Id] FROM [Categories] t
      INNER JOIN @inserted0 i ON ([t].[Id] = [i].[Id])
      ORDER BY [i].[_Position];

從SQL Profiler追溯到的SQL:

exec sp_executesql N’SET NOCOUNT ON;
DECLARE @inserted0 TABLE ([Id] int, [_Position] [int]);
MERGE [Categories] USING (
VALUES (@p0, @p1, 0),
(@p2, @p3, 1),
(@p4, @p5, 2),
(@p6, @p7, 3)) AS i ([CategoryID], [CategoryName], _Position) ON 1=0
WHEN NOT MATCHED THEN
INSERT ([CategoryID], [CategoryName])
VALUES (i.[CategoryID], i.[CategoryName])
OUTPUT INSERTED.[Id], i._Position
INTO @inserted0;

SELECT [t].[Id] FROM [Categories] t
INNER JOIN @inserted0 i ON ([t].[Id] = [i].[Id])
ORDER BY [i].[_Position];

‘,N’@p0 int,@p1 nvarchar(4000),@p2 int,@p3 nvarchar(4000),@p4 int,@p5 nvarchar(4000),@p6 int,@p7 nvarchar(4000)’,@p0=1,@p1=N’Clothing’,@p2=2,@p3=N’Footwear’,@p4=3,@p5=N’Accessories’,@p6=4,@p7=N’Accessories’

 如你所見,批量插入沒有產生4個獨立的語句,而是被組合為一個傳參存儲過程腳本(用列值作為參數);如果使用EF6執行相同的代碼,則在SQL Server Profiler中將看到4個獨立的插入語句 。

① 就性能和速度而言,EFCore批量插入更具優勢。 ② 若數據庫是針對雲部署,EF6運行這些查詢,還將產生額外的流量成本。

 經過驗證:EFCore批量更新、批量刪除功能,EFCore均發出了使用sp_executesql存儲過程+批量參數構建的SQL腳本。

 P2 深入分析

起關鍵作用的 sp_executesql存儲過程: 可以多次執行的語句或批處理 (可帶參)

-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse  
  
sp_executesql [ @stmt = ] statement  
[   
  { , [ @params = ] N'@parameter_name data_type [ OUT | OUTPUT ][ ,...n ]' }   
     { , [ @param1 = ] 'value1' [ ,...n ] }  
]  

注意官方限制: 

The amount of data that can be passed by using this method is limited by the number of parameters allowed. SQL Server procedures can have, at most, 2100 parameters. Server-side logic is required to assemble these individual values into a table variable or a temporary table for processing.       // SQL存儲過程最多可使用2100個參數

P3 豁然開朗

SqlServer  sp_executesql存儲過程最多支持2100個批量操作形成的列值參數,所以遇到很大數量的批量操作,EFCore SqlProvider會幫我們將批量操作分塊傳輸, 

實際上EFCore 對於少於4個的批量命令,不會使用sp_executesql 存儲過程,我這邊自己根據官方驗證確實如此:

估摸着EFCore使用sp_executesql 也是有點耗資源的,對於小批量(小於4條的批量操作)依舊是產生單條sql。

// 同時EFCore開放了【配置關係型數據庫批量操作大小】
protected override void OnConfiguring(DbContextOptionsBuilder optionbuilder) { string sConnString
= @"Server=localhost;Database=EFSampleDB;Trusted_Connection=true;"; optionbuilder.UseSqlServer(sConnString , b => b.MaxBatchSize(1)); // 批量操作的SQL語句數量,也可設定為1禁用批量插入 }

總結

① EFCore 相比EF6,已經支持批量操作,能有效提高應用程序的性能

② EFCore的批量操作能力,由對應的DataBaseProvider支撐(Provider實現過程跟背後的存儲載體密切相關)

      –  對於小批量操作(當前EFCore默認MinBatchSize為4》),EFCore不會啟用sp_executesql

  - 大批量關注存儲過程sp_executesql ,存儲過程的列值參數最多2100 個,這個關鍵因素決定了在大批量操作的時候 依舊會被分塊傳輸。

③ 另外一個批量操作的方法,這裏也點一下:構造Rawsql【EFCore支持Rawsql】。

  sqlite不支持存儲過程,為完成批量插入提高性能,可採用此方案。

var insertStr = new StringBuilder();
insertStr.AppendLine("insert into ProfileUsageCounters (profileid,datetime,quota,usage,natureusage) values");
var txt = insertStr.AppendLine(string.Join(',', usgaeEntities.ToList().Select(x =>
{
       return $"({x.ProfileId},{x.DateTime},{x.Quota},{x.Usage},{x.NatureUsage})";
}).ToArray()));
await _context.Database.ExecuteSqlCommandAsync(txt.ToString());

+

+

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

【其他文章推薦】

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

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

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

大陸寄台灣空運注意事項

大陸海運台灣交貨時間多久?

哈雷五年內推出電動機車

經典重型機車品牌哈雷終於將正式邁向電動車行列?媒體報導,哈雷高級副總裁Sean Cumming在受訪時透漏,哈雷將在五年內推出一款貨真價實的哈雷電動機車。

《癮科技》報導哈雷曾在2014年以Project LiveWire為名推出一款電動機車原型車,行駛續航力只有96公里左右;續航力差強人意的原因是,為了兼顧車體的美觀而無法安裝體積過於龐大的電池。

Sean Cumming在受訪時表示,公司會在五年內推出電動機車,但並未透漏更多細節。由於哈雷機車車體較大,或許就能安裝電容量更大的電池;未來電池的能量密度也會更高,續航力問題也許能獲得解決。

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

【其他文章推薦】

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

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

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

小三通海運與一般國際貿易有何不同?

小三通快遞通關作業有哪些?

電動車需求噴發、2035年將飆16倍

日本市調機構富士經濟(Fuji Keizai)15日公布了油電混和車(HV)/插電式油電混和車(PHEV)/電動車(EV)等次世代車種的市場動向調查報告,現行次世代車種以HV需求最大,預估截至2025年左右為止,HV仍將為次世代車種的主流產品,不過因HV僅部分日系車廠專注研發,故預估今後其需求增幅恐將趨緩。

另一方面,PHEV、EV在2025年以後的需求增幅將加快,預估2030年左右時,HV、PHEV、EV將呈現幾乎相互抗衡的局面,2035年在北美、歐洲、中國需求加持下,PHEV、EV市場將進一步擴大,超越HV。

富士經濟指出,2015年特斯拉(Tesla)「Model S」在北美、歐洲、中國市場需求強勁,加上中國車廠在獲得政府豐厚補助政策加持下、於中國國內的銷售走揚,帶動EV全球市場規模大幅增加至34萬台(其中歐洲10萬台、中國15萬台)。

富士經濟指出,全球EV市場當前將持續呈現緩和增長,不過預估自2020年左右起,EV需求將呈現急速擴大,預估2035年全球EV市場規模將達567萬台、將較2015年飆增近16倍(成長1,567%);其中,中國市場規模預估達203萬台(為2015年的13.5倍)、歐洲預估為149萬台(2015年的14.9倍)。

富士經濟並預估,2035年全球PHEV市場規模將達665萬台、將較2015年(21萬台)飆增近31倍(成長3,066%),其中歐洲市場規模預估達217萬台(為2015年的24.1倍)、北美市場為182萬台(2015年的36.4倍)。

2035年全球HV市場規模預估為468萬台、將較2015年(159萬台)成長近2倍(成長194%);其中日本市場規模預估達200萬台(2015年的2.3倍)、北美為135萬台(2015年的3.5倍)。

CNBC報導,著有「Clean Disruption of Energy and Transportation」(暫譯:能源和運輸業的綠化革命)一書的創業家Tony Seba 14日在野村證券舉辦的投資論壇上表示,電動車的運輸效能不斷改善,售價更是快速下降,預估以汽柴油做為動力的內燃式引擎(Internal combustion engine)很快就會失去競爭優勢。

Seba預估,到了2020年,美國一台電動車的售價大約會下降至3萬美元,相較之下,目前一台內燃式引擎新車平均售價還多達33,000美元。不僅如此,到了2022年,一台低階電動車的售價甚至有機會下殺到22,000美元。

日經新聞1月12日報導,日本汽車業龍頭豐田汽車社長豐田章男接受日經/金融時報聯訪時表示,「今後100年將是環保車的時代」,他說,「汽車產業過去1個世紀來,主要以汽油引擎為主流,不過下一個100年,燃料電池車(FCV)、插電式油電混合車(PHEV)等各種環保車需求將增長」。

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

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

【其他文章推薦】

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

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

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

大陸寄台灣空運注意事項

大陸海運台灣交貨時間多久?

2016 國際IoT 車用光電技術趨勢論壇-5車聯網時代

2016台北國際光電週將於6月15日至17日假台北世貿南港展覽館展出,本屆在光電產業大力支持下,結合了國內知名學會、公會,和產業聯盟,齊心推動國際光電大展、平面顯示器展、LED照明展、精密光學展、太陽光電展,以及奈米科技等6展,並開闢車用光電、生醫、3D列印、前瞻學術、雷射與真空技術等6個展區,加上同期舉行之植物工廠展,光電科技不僅跨足農業、醫療、傳統產業等,而且還搭上物聯網與車用光電的跨領域列車,可看出台北國際光電週與產業正進行之蛻變。   2016 國際IoT 車用光電技術趨勢論壇於2016年6月15日-17日舉辦,結合物聯網與車用光電市場,探討未來車用市場發展。工研院資通所車在資通訊與控制系統組組長 蔣村杰表示強化行車安全為車聯網當務之急。V2X 通訊技術大約包含六個層面: 汽車對汽車 V2V、汽車對路側設備 V2R、汽車對基礎設施 V2I、汽車對行人V2P、汽車對機車 V2M、汽車對公車 V2T。其中,V2V 車間通訊技術已發展日趨成熟。工研院為全球少數公司具有完整V2X 解決方案。  

  同時提到全球車聯網發展趨勢上,在政策面上,歐美相繼立法推動車聯網應用與服務,也宣布2022年9月1日起AEB 自動緊急剎車輔助系統將列為新車標準配備之中。   並且,未來智慧車輛系統三大趨勢包含: 車聯網;智慧感測,能結合影像辨識、環境偵測、等應用並發展客製化車用積體電路 (ASIC);先進駕駛輔助系統。  

凱銳光電 蔡家祥處長提出,物聯網應用於家庭之中,提升舒適程度;而應用於車輛之中,則是提升安全程度。智慧車載功能之中則包含安全駕駛、行車資訊彙整、車主運營效益、車上乘客資訊提供與娛樂。以車載資訊暨娛樂系統的挑戰來看,寬頻化、資安、自動駕駛等問題需要克服。當然未來,無人駕駛車時代隨之來臨!   國際富豪汽車股份有限公司 (VOLVO) 地區經理 吳廷颺提出 VOLVO 最重視駕駛安全性。在物聯網時代之下,車輛感測前方路況,提供警示或是緊急自動剎車;行人進入危險區域,提供警示或是緊急自動剎車;無人駕駛等等。時至今日,VOLVO 已正式售出200萬輛配備City Safety 自動煞車功能。   若以自動駕駛來說,VOLVO 從2009年起開始研發執行Drive Me。未來真正的自動駕駛除可判別周遭環境,甚至是駕駛者未能注意到的狀況,採用雷達、相機提供警告或是真正在危險時,可以直接執行指令,2017年將有可能提供100萬輛自動駕駛車於市。   (本文內容由授權使用)

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

【其他文章推薦】

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

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

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

小三通海運與一般國際貿易有何不同?

小三通快遞通關作業有哪些?

立凱攜手五龍電動車登陸,7月啟動建廠計畫拚商機

立凱-KY昨(27)日舉行股東會,並通過與香港首富李嘉誠投資的五龍電動車合作案。公司董事長張聖時指出,將與五龍電動車在中國大陸合作設立磷酸鋰鐵電池正極材料工廠,預計7月1日開始執行建廠計畫,並在一年內投產,搶攻中國大陸十三五的電動車商機。   張聖時表示,立凱今年改變策略往中國市場發展,因2015年台灣電動巴士市場僅有21台的規模,但中國十三五規畫則有20萬台需求量,其電動巴士和儲能市場龐大,因此,公司決定至中國建廠擴產,地點最有可能在貴州;公司內部對於今年下半年展望趨樂觀。   他也指出,此案將由五龍電動車和中國客戶出資約台幣50億至60億元建廠,立凱則以技術作價,不須出資;初期磷酸鋰鐵電池正極材料年產能規劃為2萬噸,較立凱目前在台的3,000噸年產能大增數倍,未來立凱將可依出貨量按比例收取技術授權金。   (本文內容由授權使用)

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

【其他文章推薦】

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

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

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

大陸寄台灣空運注意事項

大陸海運台灣交貨時間多久?

福斯汽車:電動車續航力目標300公里

在爆出排氣檢測造假、並付出高額罰金與賠償金後,福斯(VW)被強制投資20億美金於研發零碳排汽車。這個危機促使福斯在轉型的路上更為積極,並喊出「所有電動車續航力都須達300公里」的目標。

福斯的全球行銷主管Jurgen Stackman在Goodwood FOS會後受訪時表示,集團認為中等價位的家庭用車是電動車打入主流車款的關鍵,而非高階車款。各國駕駛所能接受的中等價位依經濟狀況有別,如美國消費者最能接受美金3.5萬元的車款,歐洲則是美金2.8萬元,但巴西可能只有美金1.2萬元的車款稱得上中階車。

由於各國對「中階車款」的定義和接受度相距甚遠,福斯表示,考慮研發一款專門提供給電動車的模組化平台MEB,可供旗下各廠牌發展電動車系列使用,包括:VW、Audi、Skoda、Porsche、Lamborghini、Bugatti等。

目前,福斯已上市的電動車僅有e-Golf 一款,售價自2.89萬美元起跳。藉由MEB平台,福斯目標在2025~2030年生產30款、300萬輛電動車,相當於提前了公司原先計畫的電動車商業化時程。Stackman透露,福斯未來的電動車都將搭載至少60kWh的蓄電池,續航力須達290~450km,以減輕消費者對於長途行駛的不安感。

(照片來源:福斯汽車)

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

【其他文章推薦】

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

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

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

小三通海運與一般國際貿易有何不同?

小三通快遞通關作業有哪些?

特斯拉出貨不順,第二季交車輛不如預期

全球電動車龍頭廠商特斯拉(Tesla)雖然討論度極高,旗下各款電動車產品的訂單量也大,但交車量卻不如預期,已是連續第三季度挑戰交車目標失敗。

相關報導指出,特斯拉今年第二季交車量合計約14,370輛,不只低於原先預期的17,000輛,也比第一季的14,810輛還少了3%左右。這已是特斯拉連續第三季實際交車量低於目標。

特斯拉表示,交車量不如預期的原因是因為產能擴張太快、且電動休旅車Model X生產延誤。特斯拉亦表示,目前仍有約5,150輛車正在運送途中,預計在第三季初陸續交付客戶,並將計入第三季交車量。

為供應大量訂單,特斯拉近期積極擴產,預計今年下半年共可交車5萬輛;但全年預計7.9萬輛的交車量,仍將低於原先預期的8~9萬輛。今年稍早,特斯拉執行長Elon Musk曾表示要在2018年前將年產能提高至50萬輛;但近期的出貨狀況再次引發市場懷疑。

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

【其他文章推薦】

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

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

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

大陸寄台灣空運注意事項

大陸海運台灣交貨時間多久?

三星投資比亞迪,傳砸美金5億取得4%股權

中國電動車市場蓬勃,海外投資也躍躍欲試。市場傳出南韓三星電子的中國分公司將參與中國最大的電動車廠商比亞迪(BYD)增資,投資人民幣30億元(約美金5億元)取得比亞迪的4%股權。

《韓國經濟日報》、《日經》等媒體指出,三星電子於7月15日發布消息,指出將投資人民幣30億元取得比亞迪的4%股權。但比亞迪於同日下午否認三星的投資金額。

中國最大電動車廠,比亞迪大發利市

比亞迪以電動車、油電混和車等新能源車產品,於2015年搶下61,772輛的銷售佳績,銷售額達人民幣776億元。在中國,比亞迪亦有30%左右的市占率,且在中央政府持續推動電動車的動能下,比亞迪2016年提出銷量倍增的目標,對零組件的需求也跟著增加。

比亞迪成立於1995年,除電動車事業外,亦有一般汽車、IT產業、新能源產業等相關事業群。目前,比亞迪所使用的車用電池主要皆為自主生產,使比亞迪成為中國目前少數可整合新能源發電、儲能系統、電動車事業的公司之一。

三星積極佈局電動車市場

三星集團對電動車市場的布局行動頻頻。2015年12月,三星電子成立「電裝事業組」,致力於生產次世代汽車零組件,例如:車載半導體、電池、顯示器等。無人駕駛車與聯網汽車也是此事業組的發展方向。

三星表示,本次對比亞迪的投資主要是提高資本業務、零組件供應方面的合作,以搶攻中國正要起飛的電動車市場。但三星也強調不會涉入比亞迪的經營,純屬財務投資。

除了注資比亞迪外,三星旗下的三星SDI也與中國逆變器廠商陽光電源(Sungrow)於合肥投資儲能系統廠,年產能2,000MWh,第一期已於日前投產。此外,三星SDI也曾申請中國工信部的電動車車用電池補助名單,但鎩羽而歸。若要搶攻中國市場,與中國本地企業合作是必須採取的行動。

三星並非第一個入股比亞迪的外資,美國股神巴菲特所擁有的投資公司Berkshire Hathaway曾在2008年取得比亞迪近10%股權,成為一大股東。除此之外,美商蘋果公司在5月12日宣布砸下10億美元投資中國叫車服務公司「滴滴打車」,為三星帶來了中國市場的競爭壓力。

(照片:比亞迪新能源車「元」。來源:)

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

【其他文章推薦】

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

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

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