部落格

  • 【Spring】@Transactional 閑聊

    菜瓜:上次的AOP理論知識看完收穫挺多的,雖然有一個自定義註解的demo,但還是覺得差點東西

    水稻:我也覺得沒有跟一遍源碼還是差點意思,這次結合@Transactional註解深入源碼看一下

    菜瓜:事務註解,這個平時用的挺多的

    水稻:是嗎?來看看你的基礎咋樣

    1. 要保證一個方法中多個數據庫操作的原子性,要共用一個數據庫連接,但是coding時我們不用显示傳遞連接對象,這是咋弄的?
    2. 如果一個方法裏面只有查詢操作,是否不用開啟事務?
    3. 如何解決非事務方法調用本地事務方法失效的?
    4. 註解常用的傳播屬性,你知道他們的區別嗎

    菜瓜:雖然沒看過源碼,我大膽猜測一下

    1. 隱式傳遞連接對象可以將其封裝到線程中,一般一次請求操作都是在一個線程中完成。使用ThreadLocal將連接和線程綁定
    2. 查詢操作也得看業務場景,如果多次查詢相同的數據要避免不可重複讀問題,可開啟只讀事務 (readOnly = true)
    3. 結合AOP的知識,這裏其實要解決調用事務方法的對象不是代理對象的問題。用代理對象調本地事務方法即可(注入自己)
      • /**
         * @author QuCheng on 2020/6/24.
         */
        @Service
        public class ItemServiceImpl implements ItemService {
        
            @Resource
            private IcbcItemMapper itemMapper;
        
            @Resource
            private ItemService itemService;
        
            @Override
            public void changeNameById(Long itemId) {
                // changeItemById(itemId);
                itemService.changeItemById(itemId);
            }
        
            @Transactional(rollbackFor = RuntimeException.class)
            @Override
            public void changeItemById(Long itemId) {
                itemMapper.updateNameById(itemId, "name4");
                int a = 10 / 0;
                itemMapper.updatePriceById(itemId, 100L);
            }
        }
    4. 傳播屬性這個沒了解過啊,數據庫事務裏面么得這個概念

    水稻:可以啊,平時的代碼沒白寫

    菜瓜:coding這種事情,easy啦!

    水稻:這就飄了?來看這個問題

    • 如果我想在A事務方法中調用B事務方法,B方法如果回滾了,不能影響A事務繼續執行,但是A事務如果執行出問題了,B也要回滾,怎麼弄?

    菜瓜:。。。這不就是大事務嵌套小事務嘛。。。我不會

    水稻:不扯了,來看源碼吧,這個問題等解釋了傳播屬性你就知道了

    • 上回我們說到,@Transactional是AOP的典型應用,bean被實例化之後要創建代理(參考自定義註解),就少不了切面類Advisor對象。那麼它是誰,它在哪,它在干什麼?
    • 回到夢開始的地方,事務功能開啟的註解@EnableTransactionManagement
      • 沒錯,它肯定會有一個Import註解引入TransactionManagementConfigurationSelector類,它又引入了切面類
      • public class TransactionManagementConfigurationSelector extends AdviceModeImportSelector<EnableTransactionManagement> {
         
           @Override
           protected String[] selectImports(AdviceMode adviceMode) {
              switch (adviceMode) {
                 case PROXY:
                    return new String[] {AutoProxyRegistrar.class.getName(),
                          // 看這裏
                          ProxyTransactionManagementConfiguration.class.getName()};
                 case ASPECTJ:
                    return new String[] {determineTransactionAspectClass()};
                 default:
                    return null;
              }
           }
        。。。
        
        }
        
        
        @Configuration
        public class ProxyTransactionManagementConfiguration extends AbstractTransactionManagementConfiguration {
        
           @Bean(name = TransactionManagementConfigUtils.TRANSACTION_ADVISOR_BEAN_NAME)
           @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
           public BeanFactoryTransactionAttributeSourceAdvisor transactionAdvisor() {
              BeanFactoryTransactionAttributeSourceAdvisor advisor = new BeanFactoryTransactionAttributeSourceAdvisor();
              advisor.setTransactionAttributeSource(transactionAttributeSource());
              advisor.setAdvice(transactionInterceptor());
              if (this.enableTx != null) {
                 advisor.setOrder(this.enableTx.<Integer>getNumber("order"));
              }
              return advisor;
           }
        
           @Bean
           @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
           public TransactionAttributeSource transactionAttributeSource() {
              return new AnnotationTransactionAttributeSource();
           }
        
           @Bean
           @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
           public TransactionInterceptor transactionInterceptor() {
        // 增強 TransactionInterceptor interceptor
        = new TransactionInterceptor(); interceptor.setTransactionAttributeSource(transactionAttributeSource()); if (this.txManager != null) { interceptor.setTransactionManager(this.txManager); } return interceptor; } } 
      • 切面類對象設置了事務的掃描器,也set了增強類TransactionInterceptor
      • public class TransactionInterceptor extends TransactionAspectSupport implements MethodInterceptor, Serializable {
        。。。
        @Override
            @Nullable
            public Object invoke(MethodInvocation invocation) throws Throwable {
                // Work out the target class: may be {@code null}.
                // The TransactionAttributeSource should be passed the target class
                // as well as the method, which may be from an interface.
                Class<?> targetClass = (invocation.getThis() != null ? AopUtils.getTargetClass(invocation.getThis()) : null);
        
                // Adapt to TransactionAspectSupport's invokeWithinTransaction...
                return invokeWithinTransaction(invocation.getMethod(), targetClass, invocation::proceed);
            }
        }
        
        public abstract class TransactionAspectSupport implements BeanFactoryAware, InitializingBean {
          
        。。。  
        @Nullable
        protected Object invokeWithinTransaction(Method method, @Nullable Class<?> targetClass,
              final InvocationCallback invocation) throws Throwable {
           。。。
        // ①創建事務,數據庫連接處理也在這 TransactionInfo txInfo
        = createTransactionIfNecessary(tm, txAttr, joinpointIdentification); Object retVal = null; try {
        // 調用目標方法 retVal
        = invocation.proceedWithInvocation(); } catch (Throwable ex) {
        // 異常後事務處理 completeTransactionAfterThrowing(txInfo, ex);
        throw ex; } finally { cleanupTransactionInfo(txInfo); } commitTransactionAfterReturning(txInfo); return retVal; } 。。。 } 

    菜瓜:懂,接下來的代碼邏輯就是在增強類TransactionInterceptor的invoke方法里

    水稻:對

    • 先看數據庫連接的處理 – 驗證ThreadLocal
    • protected void doBegin(Object transaction, TransactionDefinition definition) {
         。。。
      // 如果連接是新的,就進行綁定
      if (txObject.isNewConnectionHolder()) { TransactionSynchronizationManager.bindResource(this.obtainDataSource(), txObject.getConnectionHolder()); } 。。。 } class TransactionSynchronizationManager public static void bindResource(Object key, Object value) throws IllegalStateException { Object actualKey = TransactionSynchronizationUtils.unwrapResourceIfNecessary(key); Assert.notNull(value, "Value must not be null"); Map<Object, Object> map = resources.get(); // set ThreadLocal Map if none found if (map == null) { map = new HashMap<>(); resources.set(map); } Object oldValue = map.put(actualKey, value); // Transparently suppress a ResourceHolder that was marked as void... if (oldValue instanceof ResourceHolder && ((ResourceHolder) oldValue).isVoid()) { oldValue = null; } if (oldValue != null) { throw new IllegalStateException("Already value [" + oldValue + "] for key [" + actualKey + "] bound to thread [" + Thread.currentThread().getName() + "]"); } if (logger.isTraceEnabled()) { logger.trace("Bound value [" + value + "] for key [" + actualKey + "] to thread [" + Thread.currentThread().getName() + "]"); } }
    • 回過頭來看AB方法調用的回滾問題,直接給出答案(突然發現這個問題要講清楚篇幅會很大,就。。挺突然的。。挺突然der)
      • 在B方法上設置傳播屬性為NESTED即可,然後在A中catch住B的異常
      • 你肯定會問我不加NESTED去catch不行嗎?不行,非NESTED的方法拋出的異常是無法回滾的。
      • 不信你看
      • @Transactional(rollbackFor = RuntimeException.class)
            @Override
            public void changeNameById(Long itemId) {
                itemMapper.updateNameById(itemId, "A");
                try {
                    itemService.changeItemById(itemId);
        //            itemService.changeItemByIdNested(itemId);
                } catch (Exception e) {
                    System.out.println("我想繼續執行,不影響修改A");
                }
                itemMapper.updatePriceById(itemId, 1L);
            }
        
            @Transactional(rollbackFor = RuntimeException.class)
            @Override
            public void changeItemById(Long itemId) {
                itemMapper.updateNameById(itemId, "B+REQUIRED");
                itemMapper.updatePriceById(itemId, 10L);
                int a = 10 / 0;
            }
        
            @Transactional(rollbackFor = RuntimeException.class, propagation = Propagation.NESTED)
            @Override
            public void changeItemByIdNested(Long itemId) {
                itemMapper.updateNameById(itemId, "B+NESTED");
                itemMapper.updatePriceById(itemId, 100L);
                int a = 10 / 0;
            }
        
        
        -- 測試結果
        //①  itemService.changeItemById(itemId);  數據庫所有數據都不會改變
        我想繼續執行,不影響修改A
        org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
        
        // ② itemService.changeItemByIdNested(itemId); 第一個方法的修改會生效
        我想繼續執行,不影響修改A

    菜瓜:這就是傳播屬性NESTED?默認的是REQUIRED,還有一個常用的REQUIRES_NEW呢?

    水稻:搞清楚這個其實從數據庫連接入手其實就很清楚

    • REQUIRED修飾的方法和A使用同一個連接,A和B是掛一起的,誰回滾都會影響對方,且B方法的異常會被事務管理器標記為必須回滾
    • NESTED修飾的方法和A使用同一個連接,但是用到了數據庫的savePoint特性,它可以回滾到指定的點,如果是有回滾點的操作,拋出的異常可以被處理
    • REQUIRES_NEW修飾的方法和A使用的就不是一個連接了,回不回滾都不會影響對方,當然,要捕捉異常

    菜瓜:傳播屬性了解。回滾的問題還得再看看,篇幅很大是很複雜嗎?

    水稻:其實不複雜,就是要跟蹤源碼斷點調試。。。截圖搞來搞去,篇幅就很長,你自己去調的話其實很快

    菜瓜:那我下去康康

     

    總結

    • 這裏提到Transactional註解其實是為了鞏固AOP的,當然提到了一些注意點。譬如本地調用,譬如ThreadLocal的應用,還譬如傳播屬性
    • 傳播屬性其實用的少,但是聊起來就比較多了,可以聊事務的隔離級別,聊ACID的實現,聊MySQL的鎖

     

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

    【其他文章推薦】

    ※超省錢租車方案

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

    ※回頭車貨運收費標準

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

  • 三年增15萬個 北京2016年電動車搖號指標將占四成

    26日北京市人大常委會會議表示,北京將逐步提高北京市小客車搖號指標中電動車的數量,未來三年分別新增3萬、6萬、6萬輛。到2016年電動車指標將占所有搖號指標的40%。   2011年起,北京開始實施小客車總量調控政策,將每年新增指標控制在24萬輛。2014年,這一數位進一步壓縮到15萬輛。目前,北京市機動車保有量已經超過500萬輛。北京市提出,將在每年15萬輛小客車新增指標內逐步提高電動車的數量。

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

    【其他文章推薦】

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

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

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

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

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

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

  • 成大氫能電動機車 預估續航力可達 160 公里

    成大氫能電動機車 預估續航力可達 160 公里

      台灣機車密度是世界之最,造成嚴重的污染問題,電動、綠能機車的開發一直是學者致力的目標。國立成功大學近日整合關鍵技術,研發出以新型氫能燃料與鋰電池做為混合動力的新電動機車「飛馬一號」,首航測試即輕易完成 80 多公里路程,估計實際續航力可達 160 公里。   由成大航太工程學系賴維祥教授帶領的研究團隊,一年半前在經濟部能源局「能源學界科技專案」補助下,開始與銓寶工業、福桑聯合企業進行產學合作,共同研發代號「飛馬一號」氫能電動機車。   成大指出,「飛馬一號」是從銓寶公司提供的電動車改裝而來,除了原有的鋰電池外,研究團隊另外在車後加裝了 3,000 瓦級的燃料電池,以及 2 支容積達 6.8 公升、能儲存 300 大氣壓的儲氫瓶,原理大致與汽車大廠 TOYOTA 年底即將量產的氫氣電動車相同。   「飛馬一號」的動力系統是以新高壓儲存技術填充氫氣,可達傳統方式的 4 倍密度,利用氫能直接啟動燃料電池,再讓燃料電池把電傳給鋰電池,鋰電池的電力則驅動馬達運轉,此一模式可讓鋰電池在行進間同時充電,延長使用壽命。     (Source:)

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

    【其他文章推薦】

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

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

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

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

    ※新北清潔公司,居家、辦公、裝潢細清專業服務

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

  • 步伐密集 易事特再建江蘇充電樁專案

    易事特今日發佈公告稱,與江蘇高淳經濟開發區開發總公司就新能源汽車充電樁設備研發製造、IDC整體機房研發製造、智慧微電網等項目投資達成一致意見並簽署協議書。易事特承諾新辦企業固定資產投資總額為6億元人民幣(約新臺幣30億),畝均稅收不低於20萬元(約新臺幣101萬),首期建築面積不低於30000平方米。高淳經濟開發區將供地約120畝,使用年限為50年。   易事特佈局充電樁可謂步伐密集。今年8月13日,易事特與馬鞍山經濟技術開發區管理委員會簽訂了《投資框架協議書》,擬在對方區域內投資建設資料中心、分散式發電設備與系統集成和新能源汽車充電站(樁)項目。

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

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

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

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

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

    ※幫你省時又省力,新北清潔一流服務好口碑

    ※回頭車貨運收費標準

  • 中國政策放開電動車准入要求 小米或入局電動車

    中國政策放開電動車准入要求 小米或入局電動車

    11月26日,國家發改委網站掛出《新建純電動乘用車生企業投資項目和生產準入管理的暫行規定(徵求意見稿)》(以下簡稱《規定》),計劃為純電動車生準入放開口子。   《規定》要求的三條基礎能力中,最核心的是:(申報企業)有3年以上純電動乘用車的研發基礎,具有專業研發團隊和整車正向研發能力,掌握整車控制系統、動力電池系統、整車整合和整車輕量化方面的核心技術以及相應的試驗驗證能力,擁有純電動乘用車自主智慧財產權和已授權的相關發明專利。另外還要求新建企業只能生產純電動轎車和純電動其他乘用車(包括增程式電動乘用車),插電式混合動力不在準入範圍內。   面對新一批電動車開放名單,包括小米、樂視與萬向等企業集團都展現出高度興趣,爭取成為入圍名單。其中小米的動向最受矚目。小米創辦人之一黎萬強早在10月底就悄悄飛往矽谷展開暖身動作,小米董事長雷軍更在拜會特斯拉後就對電動車念念不忘。事實上,小米電動車的諜照早就在網路上曝光,只是細節外界所知不多。不過,這次開放的限制很嚴,小米能否如願以償擠進電動車窄門,備受關注。   (照片來源: )

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

    【其他文章推薦】

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

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

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

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

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

    ※超省錢租車方案

  • 電動巴士車廠華德今年拚損益兩平 年底前登錄興櫃

    電動巴士車廠華德動能於 11 月 3 日與群益金鼎證券簽訂股票上市櫃輔導契約,目標今年底前登錄興櫃,華德動能董事長蔡易忠表示,今年電動巴士預計出貨 53 輛 ,市占全台第一大,今年力拚損益兩平。   華德為台灣第二家電動巴士掛牌企業,同時也是車王電子轉投資公司,車王電持有比例為 14.9%,華德動能去年合併營收 5,782 萬元,虧損 6,000 萬元,每股虧損 4.73 元。今年上半年營收躍升至 2.28 億元,並順利轉盈,稅後純益 1,300 萬元,每股稅後純益 0.65 元。   蔡易忠表示,公司主要業務為電動巴士、電動商用貨車以及儲能系統三大主軸。華德電動巴士使用的電池為稀土鋰釔電池,不同於 F-立凱電為採用磷酸鐵鋰材料,蔡易忠表示,只要電池材料能讓電動巴士行駛安全、性能佳,都會持續找尋新的電池材料,不會局限在單一材料。   蔡易忠表示,華德積極布局開發海外市場,未來擬將底盤系統或關鍵動力組件出口至東南亞、中國、美國及歐洲地區,近期先出口至馬來西亞。目前公司也積極規劃建廠計畫,擬以租賃方式承租廠房,計劃由年產 80 輛擴大至 500 輛,目標 2015 年第 3 季加入營運。

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

    【其他文章推薦】

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

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

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

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

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

  • 晶華攜手 BMW 設電動車充電站 其他廠牌插頭符合也適用

    晶華攜手 BMW 設電動車充電站 其他廠牌插頭符合也適用

      台北晶華酒店與 BMW 總代理汎德公司首度合作,在酒店停車場設置「BMW i 公共充電站」,為全台第一個五星級飯店「BMW i 公共充電站」,也是 BMW 計畫在各通路設置「BMW i 公共充電站」的首站。   擁有 BMW i3 或 BMW i8 車款車主,不論是否到晶華用餐或是住宿均可免費充電,但要付停車費,第一個小時 300 元,第二個小時 200 元。此外,其他廠牌的電動車,只要插頭符合,同樣適用。晶華表示,晶華麗晶酒店集團旗下晶英酒店包括蘭城晶英及太魯閣晶英酒店正計畫裝設中。   BMW 總代理汎德表示,BMW i3 及 BMW i8 於今年第 2 季起全球開始量產上市,BMW i3 是純電動車,一台售價新台幣 239 萬元起,台灣目前已有 40 至 50 張訂單,BMW i8 是油電混合車,一台售價新台幣 989 萬元,目前約有 30 張訂單,已在陸續交車中。   汎德表示,電動車是未來趨勢,汎德已在全台 BMW 經銷商及服務廠設置充電站,目前已設 28 座,年底會再增 2 座,合計為 30 座,BMW 車主都提供免費充電服務。另與晶華酒店合作,於台北晶華設置 2 座,現已正式啟用。此外,汎德還會與裕隆、台達電洽談合作事宜。   (照片提供:台北晶華酒店)

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

    【其他文章推薦】

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

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

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

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

    ※新北清潔公司,居家、辦公、裝潢細清專業服務

  • 環保署:電動自行車補助延長 1 年

    環保署修正發布「新購電動自行車補助辦法」及「新購電動輔助自行車補助辦法」,環保署表示,將延長補助期限至 105 年 11 月 30 日,並依期限調整補助資格。   環保署指出,為配合共通規格電池的推動期程,並持續鼓勵民眾使用低污染交通工具,環保署決定延長民眾購買電動(輔助)自行車的補助期限 1 年。環保署說明,原 103 年執行民眾選購「使用共通規格電池車輛提高補助金額」,將延長補助期限 1 年至 104 年底。   而原 104 年民眾購買「採用共通規格電池始有補助」,環保署說,將順延 1 年於 105 年執行,盼能提升民眾購買及使用意願,加速電動車輛普及。

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

    【其他文章推薦】

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

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

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

    ※幫你省時又省力,新北清潔一流服務好口碑

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

  • 中國官方將 2014 訂為電動車市場元年 預估 2020 年達 500 萬輛

    永豐投顧研調處表示,目前全球電動車的滲透率不到 0.3%,預估 2017 年將突破百萬輛,其中,中國大陸設定 2020 年要達到 500 萬輛電動車的市場規模。   根據大陸中央政府推出的優惠補貼政策,2014 年 9 月推出電動車免徵購置稅的優惠,且示範城市地方政府提供的補貼金額往往與中央政府相當,而在北京、上海及廣東等限牌都市,新能源車可直接上牌,對民眾及車廠而言也是一大誘因。   大陸官方甚至將 2014 年稱為大陸電動車市場化元年,從銷售量來看,這樣的稱號一點也不為過,從 2013 年不到 2 萬輛的銷售量到 2014 年預估可望突破 6 萬輛,短短時間內,電動車市場銷售大爆發。

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

    【其他文章推薦】

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

    ※新北清潔公司,居家、辦公、裝潢細清專業服務

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

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

    ※超省錢租車方案

  • 北汽正研發8款新能源車 未來兩年陸續推出

    日前,北汽新能源車在未來兩年內的整體規劃曝光,其目前正在研發的車型有4款,策劃車型3款,預研車型1款,規劃車型1款,共計8款新能源車型,涵蓋了大、中、小系列產品規劃。   據悉,代號為C30DB、C33DB、C70GB和M30RB等四款正在研發的車型主要是針對現產品的技術改進,改進方向為制動能量回收技術、輕量化和智慧化等三大方面。如磷酸鐵鋰電池容量由60毫安培提升至80毫安培,整車續航里程提升至200公里。安全方面,新型動力電池實現IP67防護等級,並大量應用輕量化技術應用,動力電池箱蓋體則減重品質20公斤,減重率超過30%。   此外,代號為C10IB、C50EB、C71GB等三款車型為新產品開發,其中C10IB為微型車,C50EB為緊湊型車,而C71GB為中型車,這三款車型有望在2015年面向市場。而代號為C80GB的中大型車則計畫2016年面向市場。

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

    【其他文章推薦】

    ※新北清潔公司,居家、辦公、裝潢細清專業服務

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

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

    ※超省錢租車方案