亞洲碳中和浪潮下 澳洲總理仍裹足不前捍衛煤炭

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

※回頭車貨運收費標準

動力更強,更好開還更省油,以後可以買到這些車

以前總說手動擋車型省油,但現在不少自動變速箱與發動機的匹配愈發爐火純青,油耗也持續往下走,有些自動擋車型的油耗數據完全不輸手動擋。曾經我認為四缸是一台車的底線,沒想到現在三缸機已經越來越普遍。最經典的就是寶馬1系,連一向對發動機輸出有苛刻要求的寶馬都推出了1。

隨着我國經濟的飛速發展,不少人民的錢包變得越來越鼓。近幾年,我國汽車的人均汽車保有量在迅速攀升,銷量已經連續幾年位居世界第一。各國的廠商已經越來越重視中國市場,甚至有不少車型都是為中國市場量身定做的。

這十幾年中國汽車市場的變化還是挺大的,但這些變化我個人認為並不能說都是好事,只能說是一種對現實的妥協,下面就來和大家談談那些變化。

在08年左右的時候,自然吸氣發動機的車還是大行其道,那時候對排放沒有捉得這麼嚴,所以各路廠家都喜歡推出自吸車。我自己家裡也有一輛1.6L老世嘉,一腳油門下去時,加速力雖然不是很猛,但循序漸進的感覺確實美妙。

到了現在2018年,自吸車雖然不至於說退出歷史舞台,但是佔比已經愈來愈低,渦輪車的普及程度越來越高。早些年的時候,渦輪還是比較容易壞的。不過經過這麼多年的發展,渦輪的耐用性得以大幅提升。

連一向崇尚自吸的日系車都大力推渦輪,就知道這個趨勢已經不可逆轉。不過日系車的渦輪車普遍體驗還是不錯的,像1.5T的思域、2.0T的漢蘭達都給消費者帶來了良好的駕乘質感。自吸這條路,目前也只有日產和馬自達等寥寥無幾的車企在苦苦支撐。

在過去的時候,雖然也有自動擋,但普及程度沒有現在這麼高。現在感覺10台車裡面有9台都是自動擋的,而大多數人估計拿了駕駛證以後就沒有再開過手動擋,也有不少女生是直接考了個C2駕照。

自動擋車型的門檻越來越低,這對於廣大消費者來講絕對是一件好事,畢竟不是所有人都喜歡開車這件事。以前總說手動擋車型省油,但現在不少自動變速箱與發動機的匹配愈發爐火純青,油耗也持續往下走,有些自動擋車型的油耗數據完全不輸手動擋。

曾經我認為四缸是一台車的底線,沒想到現在三缸機已經越來越普遍。最經典的就是寶馬1系,連一向對發動機輸出有苛刻要求的寶馬都推出了1.5T三缸發動機來搶佔更多的市場份額。

雖然現在的三缸機在抖動控制方面已經做得相當不錯,在車內如果不是仔細體會,還真不容易感覺出來。不過也有一些汽修人員指出,三缸機在老化以後,抖動要比四缸機明顯不少,這也是不少人擔心的地方。

儘管如此,隨着汽車技術的不斷髮展,三缸機的技術也會得到進一步優化。就像別克的英朗、閱朗和GL6已經全面三缸化,未來相信會有越來越多的車型加入其中。

在各種政策的大力鼓勵下,各種電動車企業像雨後春筍般湧現出來,不少品牌連我們都不大認識。毫無疑問電動車會是下一片紅海,很多企業都想從中分一杯羹。不過就目前來看,自願買電動車的人還是少數。

一直以來困擾電動車發展的兩大難題是充電速度和續航里程,前者的話,蔚來已經提出了換電服務,這算是頗為便捷的一個解決方式;後者的話,經過這幾年的發展,不少電動車的理論續航里程都能達到450km以上,未來我相信能持續增多。

我曾經駕駛過特斯拉,無可否認,那種一點就有的加速確實不錯。但沒有了引擎和排氣的聲音,感覺整個駕駛參与度不夠高,就像關了聲音看恐怖片般索然無味。這也不是無法彌補,現在有不少汽車都有聲浪彌補功能,可根據駕駛員踩踏油門的深度來模擬出引擎和排氣的聲音,但假的真不了。

總結

這幾個汽車的變化,到底是好還是壞,不同的人有不同的看法。這些轉變就像青春期的愛情變為工作后的愛情,前者是單純懵懂的,後者則是現實清晰的。更為關鍵的是,汽車和愛情都是不可逆轉的,而我們唯一能做的就是珍惜和享受眼前的汽車生活。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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

同級最帥的4款轎車,50萬以內沒對手,年輕人就該買這些車

68-68。38萬1、3、5、7系,大家肯定都知道,那4系是什麼鬼。基本上來說,把它“當”成3系的雙門版本准沒錯。這一代寶馬4系其實與3系關聯性非常大,應該說除了外形上的差異,動力系統與机械結構基本一致的。這時候肯定有人會說,“貴這麼多還要少兩扇門這是玩我呢。

基本上每個男生或者喜愛汽車的女性朋友都有着一個跑車夢,開着敞篷跑車在海邊公路上馳騁,或者傍晚獨自在山路享受日落的時間。但現實總是殘酷的,年輕的時候可能礙於經濟實力的原因,基本沒可能會選擇跑車,到了成家立業以後,手頭是寬裕了,可是為了家人買一台敞篷跑車似乎也不是太適合,當然如果是自己的第二第三台車的話就無所謂。那有沒有能作為第一台車,既能滿足家用,也有着想到高的顏值和動感的駕駛體驗呢?答案是有,而且還有4部給閣下選擇。

梅賽德斯-奔馳(進口)- C級

指導價:41.68萬-48.98萬

每次提起奔馳,用優雅這個形容詞最為合適,好像就是它與生俱來的氣質融入到每一款車中,而加上Coupe這個詞之後,這份優雅更能發揮到極致。性感的外形總能給路人留下深刻的印象,經過徹底的革新之後,完全不同於三廂版C級。如果閣下看到這樣一台陌生的屁股,絕對就是Coupe。

C級Coupe不管是300還是200,對應的都是個性化雙門轎跑風格的中型車市場,它們都擁有凌厲而運動的外觀設計,毫不保留的展現出自己的個性,時刻讓你記住一句話,你開的可是奔馳。

英菲尼迪(進口)- Q60

指導價38.98-40.98萬

也許是品牌關係,大家一說到英菲尼迪第一時間想到的就是Q50,然後,就沒有然後了。那現在大家不妨認識一下Q50的Coupe版,Q60,一台詮釋了什麼叫“曲線美”雙門轎跑。各種流暢似水的線條勾勒出絕美的車身輪廓,一副攻擊性十足的前臉相信能瞬間俘獲閣下的心,不說了,先去擦一下口水。

外觀融合了Q50 EauRouge和概念車Q80 Inspiration的設計新元素,使車頭更有衝擊力。內飾相比動感的外觀則溫柔很多,甚至略帶平淡。動力方面目前在售的版本均匹配2.0T發動機搭配7速手自一體變速箱,整體動態跟Q50L相似。

寶馬(進口)- 4系

指導價:41.68-68.38萬

1、3、5、7系,大家肯定都知道,那4系是什麼鬼?基本上來說,把它“當”成3系的雙門版本准沒錯。這一代寶馬4系其實與3系關聯性非常大,應該說除了外形上的差異,動力系統與机械結構基本一致的。這時候肯定有人會說,“貴這麼多還要少兩扇門這是玩我呢?”,這個問題一開始也是這麼想的,直到開上去的那瞬間,那操控手感,那底盤素質。值,非常值。

總結起來4系的特點就是:外觀比3系更寬更低,視覺效果也更震撼,內飾就是一台“寶馬”,沒有驚喜,沒有意外。要說4系最吸引的,還是跟3系的外觀差異,以及紮實的底盤功底。

雷克薩斯-RC

指導價:48.80-58.60萬

雷克薩斯這車在今天講的4部車裡算是比較特別的存在,很多人以為它是IS的雙門版本,但實際上RC可以完全看作單獨專門開發的跑車,而不是衍生車型。

日本紳士最厲害是什麼?當然就是那個固執起來又挺能跟上潮流的性格,RC霸氣的外觀設計會很容易讓人誤以為它有着強大的性能,事實上它對舒適性的妥協較多,很舒服的座椅,很舒服的車內氛圍,在高速上會開到困也不奇怪。性能也是今天講的4部車裡最不“跑車”的,但如果閣下就喜歡跑車造型設計和超級舒適的內在,那麼RC也許就是最適合閣下的那台愛車

結尾

50萬可以買一部思域然後改得“飛天遁地”,也可以買坐上去就舒服到馬上睡着的行政車,但能在外形和內部豪華感上達到平衡且高水準的,目前還是比較少見的。雖然4部都是2.0T汽油發動機,跟“性能”都相去甚遠,但日常在道路找找激情撒撒野還是沒任何問題的。如果閣下是“絕對顏控”,Q60肯定是第一選擇;如果說雙門跑車一定要德國車的話,C級Coupe和4系都不會讓閣下失望,甚至能有點小興奮;至於RC,它除了能給閣下“我很快”的感覺之外,雷克薩斯的匠人品質以及豪華感還能讓圍觀的路人都覺得“你好棒”。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

※回頭車貨運收費標準

mingw32 exception在sjlj與dwarf差別-反彙編分析

sjlj (setjump/longjump)與dwarf-2為mingw32兩種異常處理模型的實現。sjlj有着開銷,而隨linux發行的mingw32開發庫包都是用sjlj版編譯的,而Qt卻採用dwarf-2版,那麼兩者之間有多少差異,本文就這問題對兩版的異常代碼的反彙編進行分析比較。

我使用mingw-w65-i686-810的sjlj與dwarf-2兩個版本對下面異常代碼編譯。

__attribute__((dllimport)) int dllfunc();
int main()
{
    dllfunc();
    //_create_locale(LC_ALL, "C");
    printf("abc");
    //return 0;

    try
    {
        try
        {
            throw std::exception();
        }
        catch(std::exception&)
      {
            std::rethrow_exception(std::current_exception());
      }
        
    }
    catch(int)
    {
        
    }
    catch(std::exception& e)
    {
        std::cout << e.what() << std::endl;
    }
    catch(...)
    {
        std::cout << "unknown" << std::endl;
    }
    return 0;
}

代碼邏輯:

兩層 try/catch,

1. 裡層 try/catch

1.1 try塊, throw 異常

1.2 catch塊, rethrow

2. 外層 try/catch

2.1 有三catch分支。

 

開刷前,先定義一下。

如果將 try/catch 去除 c++語言特性后,基本就是一種由c++庫還有c++編譯器共同管理的 goto。

throw相當於goto, catch相當於label(一種以類型區分的)。

那麼c++編譯器與c++庫為我們提供了什麼樣的管理呢?

c++編譯器

0. 利用c++支持對象析構進行try塊保護。

1. 將 throw 關鍵字生成彙編 call __cxa_throw,調用 c++庫的函數。

2. 為每個catch塊生成代碼片斷,只能通過jmp跳轉進來。

2.1 開頭 call __cxa_begin_catch。

2.2 結尾 call __cxa_end_catch。

2.3 最後跳出到 try/catch塊邏輯代碼的下條執行指令。

3. 為同一try/catch塊的所有catch塊產生分支控制代碼。

4. 為try塊的析構代碼產生跳轉入口。

5. 為每一層try/catch塊生成 uncaught 代碼塊,調用 _Unwind_Resume。

c++庫:

1. __cxa_throw,馬上_Unwind_RaiseException。跳轉到當前最裏面一層 try/catch的支路控制代碼片斷。

2. _Unwind_Resume,向上繼續展開。

3. std::rethrow_exception,調用 __gcclibcxx_demangle_callback,

3.1 要麼有 catch可達跳回到原來代碼的控制流,直接離開std::rethrow_exception的調用上下文。

3.2 要麼從__gcclibcxx_demangle_callback返回,執行terminate結束進程。

 

sjlj 版的反彙編代碼比 dwarf-2 版的多了50行。

先來看dwarf-2的反彙編代碼 

  1  <+0>:    lea    0x4(%esp),%ecx
  2  <+4>:    and    $0xfffffff0,%esp
  3  <+7>:    pushl  -0x4(%ecx)
  4  <+10>:    push   %ebp
  5  <+11>:    mov    %esp,%ebp
  6  <+13>:    push   %esi
  7  <+14>:    push   %ebx
  8  <+15>:    push   %ecx
  9  <+16>:    sub    $0x2c,%esp
 10  <+19>:    call   0x401890 <__main>
 11  <+24>:    mov    0x4071a4,%eax
 12  <+29>:    call   *%eax
 13  <+31>:    movl   $0x404045,(%esp)
 14  <+38>:    call   0x4027c4 <printf>
 15  <+43>:    movl   $0x4,(%esp)
 16  <+50>:    call   0x4017ac <__cxa_allocate_exception>
 17  <+55>:    mov    %eax,%ebx
 18  <+57>:    mov    %ebx,%ecx
 19  <+59>:    call   0x402890 <std::exception::exception()>
 20  <+64>:    movl   $0x4017d4,0x8(%esp)
 21  <+72>:    movl   $0x4042a8,0x4(%esp)
 22  <+80>:    mov    %ebx,(%esp)
 23  <+83>:    call   0x401794 <__cxa_throw>
 24  <+88>:    mov    $0x0,%eax
 25  <+93>:    jmp    0x401723 <main()+355>
 26  <+98>:    mov    %edx,%ecx
 27  <+100>:    cmp    $0x2,%ecx
 28  <+103>:    je     0x40162b <main()+107>
 29  <+105>:    jmp    0x401663 <main()+163>
 30  <+107>:    mov    %eax,(%esp)
 31  <+110>:    call   0x4017a4 <__cxa_begin_catch>
 32  <+115>:    mov    %eax,-0x1c(%ebp)
 33  <+118>:    lea    -0x28(%ebp),%eax
 34  <+121>:    mov    %eax,(%esp)
 35  <+124>:    call   0x4017cc <_ZSt17current_exceptionv>
 36  <+129>:    lea    -0x28(%ebp),%eax
 37  <+132>:    mov    %eax,(%esp)
 38  <+135>:    call   0x4017c4 <_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE>
 39  <+140>:    mov    %eax,%esi
 40  <+142>:    mov    %edx,%ebx
 41  <+144>:    lea    -0x28(%ebp),%eax
 42  <+147>:    mov    %eax,%ecx
 43  <+149>:    call   0x4017ec <_ZNSt15__exception_ptr13exception_ptrD1Ev>
 44  <+154>:    call   0x40179c <__cxa_end_catch>
 45  <+159>:    mov    %esi,%eax
 46  <+161>:    mov    %ebx,%edx
 47  <+163>:    cmp    $0x1,%edx
 48  <+166>:    je     0x40166f <main()+175>
 49  <+168>:    cmp    $0x2,%edx
 50  <+171>:    je     0x401683 <main()+195>
 51  <+173>:    jmp    0x4016ca <main()+266>
 52  <+175>:    mov    %eax,(%esp)
 53  <+178>:    call   0x4017a4 <__cxa_begin_catch>
 54  <+183>:    mov    (%eax),%eax
 55  <+185>:    mov    %eax,-0x24(%ebp)
 56  <+188>:    call   0x40179c <__cxa_end_catch>
 57  <+193>:    jmp    0x401618 <main()+88>
 58  <+195>:    mov    %eax,(%esp)
 59  <+198>:    call   0x4017a4 <__cxa_begin_catch>
 60  <+203>:    mov    %eax,-0x20(%ebp)
 61  <+206>:    mov    -0x20(%ebp),%eax
 62  <+209>:    mov    (%eax),%eax
 63  <+211>:    add    $0x8,%eax
 64  <+214>:    mov    (%eax),%eax
 65  <+216>:    mov    -0x20(%ebp),%edx
 66  <+219>:    mov    %edx,%ecx
 67  <+221>:    call   *%eax
 68  <+223>:    mov    %eax,0x4(%esp)
 69  <+227>:    movl   $0x6ff07a00,(%esp)
 70  <+234>:    call   0x4017b4 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc>
 71  <+239>:    movl   $0x4017bc,(%esp)
 72  <+246>:    mov    %eax,%ecx
 73  <+248>:    call   0x4017f4 <_ZNSolsEPFRSoS_E>
 74  <+253>:    sub    $0x4,%esp
 75  <+256>:    call   0x40179c <__cxa_end_catch>
 76  <+261>:    jmp    0x401618 <main()+88>
 77  <+266>:    mov    %eax,(%esp)
 78  <+269>:    call   0x4017a4 <__cxa_begin_catch>
 79  <+274>:    movl   $0x404049,0x4(%esp)
 80  <+282>:    movl   $0x6ff07a00,(%esp)
 81  <+289>:    call   0x4017b4 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc>
 82  <+294>:    movl   $0x4017bc,(%esp)
 83  <+301>:    mov    %eax,%ecx
 84  <+303>:    call   0x4017f4 <_ZNSolsEPFRSoS_E>
 85  <+308>:    sub    $0x4,%esp
 86  <+311>:    call   0x40179c <__cxa_end_catch>
 87  <+316>:    jmp    0x401618 <main()+88>
 88  <+321>:    mov    %eax,%ebx
 89  <+323>:    call   0x40179c <__cxa_end_catch>
 90  <+328>:    mov    %ebx,%eax
 91  <+330>:    mov    %eax,(%esp)
 92  <+333>:    call   0x402770 <_Unwind_Resume>
 93  <+338>:    mov    %eax,%ebx
 94  <+340>:    call   0x40179c <__cxa_end_catch>
 95  <+345>:    mov    %ebx,%eax
 96  <+347>:    mov    %eax,(%esp)
 97  <+350>:    call   0x402770 <_Unwind_Resume>
 98  <+355>:    lea    -0xc(%ebp),%esp
 99  <+358>:    pop    %ecx
100  <+359>:    pop    %ebx
101  <+360>:    pop    %esi
102  <+361>:    pop    %ebp
103  <+362>:    lea    -0x4(%ecx),%esp
104  <+365>:    ret    

我們的主要代碼邏輯只有20-30條指令

 

 當 throw時,__cxa_throw函數是不會返回的, 如同goto最後是跳轉到他處,若被本層catch處理完才會跳轉回來<+88>。

然後看c++編譯器為我們生成的異常代碼 。

 

 

 

 

 

 對於沒有發生異常時,代碼執行路徑基本不會去涉及到異常代碼支路,開銷幾近為0,只是代碼量增大。

下面來看 sjlj 版的彙編代碼,

  1 function main():
  2  <+0>:    lea    0x4(%esp),%ecx
  3  <+4>:    and    $0xfffffff0,%esp
  4  <+7>:    pushl  -0x4(%ecx)
  5  <+10>:    push   %ebp
  6  <+11>:    mov    %esp,%ebp
  7  <+13>:    push   %edi
  8  <+14>:    push   %esi
  9  <+15>:    push   %ebx
 10  <+16>:    push   %ecx
 11  <+17>:    sub    $0x68,%esp
 12  <+20>:    movl   $0x4017ac,-0x44(%ebp)
 13  <+27>:    movl   $0x402958,-0x40(%ebp)
 14  <+34>:    lea    -0x3c(%ebp),%eax
 15  <+37>:    lea    -0x18(%ebp),%ebx
 16  <+40>:    mov    %ebx,(%eax)
 17  <+42>:    mov    $0x4015b4,%edx
 18  <+47>:    mov    %edx,0x4(%eax)
 19  <+50>:    mov    %esp,0x8(%eax)
 20  <+53>:    lea    -0x5c(%ebp),%eax
 21  <+56>:    mov    %eax,(%esp)
 22  <+59>:    call   0x402790 <_Unwind_SjLj_Register>
 23  <+64>:    call   0x4018b0 <__main>
 24  <+69>:    mov    0x406194,%eax
 25  <+74>:    movl   $0xffffffff,-0x58(%ebp)
 26  <+81>:    call   *%eax
 27  <+83>:    movl   $0x404001,(%esp)
 28  <+90>:    call   0x4027e4 <printf>
 29  <+95>:    movl   $0x4,(%esp)
 30  <+102>:    call   0x4017cc <__cxa_allocate_exception>
 31  <+107>:    mov    %eax,-0x60(%ebp)
 32  <+110>:    mov    %eax,%ecx
 33  <+112>:    call   0x4028b0 <std::exception::exception()>
 34  <+117>:    movl   $0x4017f4,0x8(%esp)
 35  <+125>:    movl   $0x404264,0x4(%esp)
 36  <+133>:    mov    -0x60(%ebp),%eax
 37  <+136>:    mov    %eax,(%esp)
 38  <+139>:    movl   $0x1,-0x58(%ebp)
 39  <+146>:    call   0x4017b4 <__cxa_throw>
 40  <+151>:    mov    $0x0,%eax
 41  <+156>:    mov    %eax,-0x60(%ebp)
 42  <+159>:    jmp    0x401733 <main()+547>
 43  <+164>:    lea    0x18(%ebp),%ebp
 44  <+167>:    mov    -0x54(%ebp),%edx
 45  <+170>:    mov    -0x50(%ebp),%ecx
 46  <+173>:    mov    -0x58(%ebp),%eax
 47  <+176>:    test   %eax,%eax
 48  <+178>:    je     0x4015e6 <main()+214>
 49  <+180>:    sub    $0x1,%eax
 50  <+183>:    test   %eax,%eax
 51  <+185>:    je     0x40161b <main()+267>
 52  <+187>:    sub    $0x1,%eax
 53  <+190>:    test   %eax,%eax
 54  <+192>:    je     0x4016f8 <main()+488>
 55  <+198>:    sub    $0x1,%eax
 56  <+201>:    test   %eax,%eax
 57  <+203>:    je     0x401712 <main()+514>
 58  <+209>:    sub    $0x1,%eax
 59  <+212>:    ud2    
 60  <+214>:    mov    %edx,%eax
 61  <+216>:    mov    %ecx,%edx
 62  <+218>:    mov    %edx,%ecx
 63  <+220>:    cmp    $0x2,%ecx
 64  <+223>:    je     0x4015f3 <main()+227>
 65  <+225>:    jmp    0x401642 <main()+306>
 66  <+227>:    mov    %eax,(%esp)
 67  <+230>:    call   0x4017c4 <__cxa_begin_catch>
 68  <+235>:    mov    %eax,-0x1c(%ebp)
 69  <+238>:    lea    -0x28(%ebp),%eax
 70  <+241>:    mov    %eax,(%esp)
 71  <+244>:    call   0x4017ec <_ZSt17current_exceptionv>
 72  <+249>:    lea    -0x28(%ebp),%eax
 73  <+252>:    mov    %eax,(%esp)
 74  <+255>:    movl   $0x2,-0x58(%ebp)
 75  <+262>:    call   0x4017e4 <_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE>
 76  <+267>:    mov    %edx,-0x60(%ebp)
 77  <+270>:    mov    %ecx,-0x64(%ebp)
 78  <+273>:    lea    -0x28(%ebp),%eax
 79  <+276>:    mov    %eax,%ecx
 80  <+278>:    call   0x40180c <_ZNSt15__exception_ptr13exception_ptrD1Ev>
 81  <+283>:    mov    -0x60(%ebp),%eax
 82  <+286>:    mov    %eax,-0x60(%ebp)
 83  <+289>:    mov    -0x64(%ebp),%esi
 84  <+292>:    mov    %esi,-0x64(%ebp)
 85  <+295>:    call   0x4017bc <__cxa_end_catch>
 86  <+300>:    mov    -0x60(%ebp),%eax
 87  <+303>:    mov    -0x64(%ebp),%edx
 88  <+306>:    cmp    $0x1,%edx
 89  <+309>:    je     0x40164e <main()+318>
 90  <+311>:    cmp    $0x2,%edx
 91  <+314>:    je     0x401665 <main()+341>
 92  <+316>:    jmp    0x4016b3 <main()+419>
 93  <+318>:    mov    %eax,(%esp)
 94  <+321>:    call   0x4017c4 <__cxa_begin_catch>
 95  <+326>:    mov    (%eax),%eax
 96  <+328>:    mov    %eax,-0x20(%ebp)
 97  <+331>:    call   0x4017bc <__cxa_end_catch>
 98  <+336>:    jmp    0x4015a7 <main()+151>
 99  <+341>:    mov    %eax,(%esp)
100  <+344>:    call   0x4017c4 <__cxa_begin_catch>
101  <+349>:    mov    %eax,-0x24(%ebp)
102  <+352>:    mov    -0x24(%ebp),%eax
103  <+355>:    mov    (%eax),%eax
104  <+357>:    add    $0x8,%eax
105  <+360>:    mov    (%eax),%eax
106  <+362>:    mov    -0x24(%ebp),%edx
107  <+365>:    mov    %edx,%ecx
108  <+367>:    call   *%eax
109  <+369>:    mov    %eax,0x4(%esp)
110  <+373>:    movl   $0x6ff29a00,(%esp)
111  <+380>:    movl   $0x3,-0x58(%ebp)
112  <+387>:    call   0x4017d4 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc>
113  <+392>:    movl   $0x4017dc,(%esp)
114  <+399>:    mov    %eax,%ecx
115  <+401>:    call   0x401814 <_ZNSolsEPFRSoS_E>
116  <+406>:    sub    $0x4,%esp
117  <+409>:    call   0x4017bc <__cxa_end_catch>
118  <+414>:    jmp    0x4015a7 <main()+151>
119  <+419>:    mov    %eax,(%esp)
120  <+422>:    call   0x4017c4 <__cxa_begin_catch>
121  <+427>:    movl   $0x404005,0x4(%esp)
122  <+435>:    movl   $0x6ff29a00,(%esp)
123  <+442>:    movl   $0x4,-0x58(%ebp)
124  <+449>:    call   0x4017d4 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc>
125  <+454>:    movl   $0x4017dc,(%esp)
126  <+461>:    mov    %eax,%ecx
127  <+463>:    call   0x401814 <_ZNSolsEPFRSoS_E>
128  <+468>:    sub    $0x4,%esp
129  <+471>:    movl   $0xffffffff,-0x58(%ebp)
130  <+478>:    call   0x4017bc <__cxa_end_catch>
131  <+483>:    jmp    0x4015a7 <main()+151>
132  <+488>:    mov    %edx,-0x60(%ebp)
133  <+491>:    call   0x4017bc <__cxa_end_catch>
134  <+496>:    mov    -0x60(%ebp),%eax
135  <+499>:    mov    %eax,(%esp)
136  <+502>:    movl   $0xffffffff,-0x58(%ebp)
137  <+509>:    call   0x402788 <_Unwind_SjLj_Resume>
138  <+514>:    mov    %edx,-0x60(%ebp)
139  <+517>:    movl   $0x0,-0x58(%ebp)
140  <+524>:    call   0x4017bc <__cxa_end_catch>
141  <+529>:    mov    -0x60(%ebp),%eax
142  <+532>:    mov    %eax,(%esp)
143  <+535>:    movl   $0xffffffff,-0x58(%ebp)
144  <+542>:    call   0x402788 <_Unwind_SjLj_Resume>
145  <+547>:    lea    -0x5c(%ebp),%eax
146  <+550>:    mov    %eax,(%esp)
147  <+553>:    call   0x402780 <_Unwind_SjLj_Unregister>
148  <+558>:    mov    -0x60(%ebp),%eax
149  <+561>:    lea    -0x10(%ebp),%esp
150  <+564>:    pop    %ecx
151  <+565>:    pop    %ebx
152  <+566>:    pop    %esi
153  <+567>:    pop    %edi
154  <+568>:    pop    %ebp
155  <+569>:    lea    -0x4(%ecx),%esp
156  <+572>:    ret    

下面的分析只列出不同的地方 

 上圖的註釋有誤沒有勘誤過,lea是不訪問內存,通常代替add指令做加法,應該是6條指令要訪問內存。

支路控制代碼:

 

 

 

 

 可以看出,支路選路控制指令多而且複雜,還有就是跳轉多。

最後是函數結束前。

 

 

 

 可以看出在 sjlj 版本中,即使代碼不發生異常,函數在進入與離開時都要為登記維護付出一此成本,當涉及異常代碼時,支路選路控制更加複雜更多跳轉。這裡有一個成本比例,你的函數邏輯簡單,上面的開銷比重就越大,如果是頻繁調用的輕量函數就要考慮不用exception這樣的error handle。

還有就是當發生異常時,需要交給c++庫去管理,不同異常處理模型的實現,有着不同的開銷,本文並沒有涉及到。只是單純從c++庫以外的代碼進行分析,也足夠看出他們之間有着一定的差別。

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

【其他文章推薦】

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

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

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

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

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

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

使用Apache commons email發送郵件

今天研究了一下怎麼用java代碼發送郵件,用的是Apache的commons-email包。

據說這個包是對javamail進行了封裝,簡化了操作。 這裏講一下具體用法吧

 

一.首先你需要有郵箱賬號和一個授權碼。

需要進入到QQ郵箱或者是網易郵箱裏面去獲取。在郵箱的設置->賬戶裏面,開啟如下服務,就能得到一個授權碼,這個授權碼要好好保管。有了這兩個東西就能夠通過第三方客戶端發送郵件了。

 

二.導入commons-email的maven依賴。

我用的是1.4,也可以去maven倉庫網站(https://mvnrepository.com)上面找別的版本。

<dependency>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-email</artifactId>
     <version>1.4</version>
 </dependency>

三.然後就可以寫發送郵件的代碼了。

我在網上找了幾個案例,如下。

 1.發送簡單文本郵件。這是最簡單也是最常用的。

    /**
     * @describe 發送內容為簡單文本的郵件
     * @throws EmailException
     */
    public static void sendSimpleTextEmail() throws EmailException {
         Email email = new SimpleEmail();
         //設置主機名,QQ郵箱是"smtp.qq.com",網易郵箱是"smtp.163.com"
         email.setHostName("smtp.163.com");
         // 用戶名和密碼為郵箱的賬號和授權碼(不需要進行base64編碼)
         email.setAuthenticator(new DefaultAuthenticator("myemailaddress@163.com", "myshouquanma"));
         //設置SSL連接,這樣寫就對了
         email.setSSLOnConnect(true);
         //設置來源,就是發送方的郵箱地址
         email.setFrom("myemailaddress@163.com");
         //設置主題,可以不設置
         email.setSubject("java發送郵件");
         //設置信息,就是內容,這個必須要有
         email.setMsg("這是測試郵件 ... :-)");
         //接收人郵箱地址
         email.addTo("receiveeraddress@qq.com");
         email.send();
    }

 

2.發送包含附件的郵件(附件為本地資源),這裏用到了一個EmailAttachment對象,也就是附件的意思

    /**
     * @describe 發送包含附件的郵件(附件為本地資源)
     * @throws EmailException
     */
    public static void sendEmailsWithAttachments() throws EmailException {
        // 創建一個attachment(附件)對象
        EmailAttachment attachment = new EmailAttachment();
        //設置上傳附件的地址
        attachment.setPath("C:\\Users\\Administrator\\Pictures\\Saved Pictures\\conti.png");
        attachment.setDisposition(EmailAttachment.ATTACHMENT);
        //這個描述可以隨便寫
        attachment.setDescription("Picture of conti");
        //這個名稱要注意和文件格式一致,這將是接收人下載下來的文件名稱
        attachment.setName("conti.png");

        //因為要上傳附件,所以用MultiPartEmail()方法創建一個email對象,固定步驟都是一樣的
        MultiPartEmail email = new MultiPartEmail();
        email.setHostName("smtp.163.com");
        email.setAuthenticator(new DefaultAuthenticator("myemailaddress@163.com", "myshouquanma"));
        email.setSSLOnConnect(true);
        email.addTo("receiveemail@qq.com", "Conti Zhang");
        email.setFrom("myemailaddress@163.com", "Me");
        email.setSubject("圖片");
        email.setMsg("這是發送給你的圖片");
        //將附件添加到郵件
        email.attach(attachment);

        email.send();
    }

 

3.發送包含附近的郵件(附件為在線資源),這個與上傳本地附件稍有區別,注意一下就行

   /**
     * @describe 發送包含附件的郵件(附件為在線資源)
     * @throws EmailException
     * @throws MalformedURLException
     */
    public static void sendEmailsWithOnlineAttachments() throws EmailException, MalformedURLException {
        EmailAttachment attachment = new EmailAttachment();
        //設置在線資源路徑,和上傳本地附件的唯一區別
        attachment.setURL(new URL("http://www.apache.org/images/asf_logo_wide.gif"));
        attachment.setDisposition(EmailAttachment.ATTACHMENT);
        attachment.setDescription("Apache logo");
        attachment.setName("Apache logo.gif");

        MultiPartEmail email = new MultiPartEmail();
        email.setHostName("smtp.163.com");
        email.setAuthenticator(new DefaultAuthenticator("myemailaddress@163.com", "myshouquanma"));
        email.setSSLOnConnect(true);
        email.addTo("receiveemail@qq.com", "Conti Zhang");
        email.setFrom("myemailaddress@163.com", "Me");
        email.setSubject("The logo");
        email.setMsg("Here is Apache's logo");
        email.attach(attachment);
        email.send();
    }

 

4.發送內容為HTML格式的郵件,有些郵件直接打開就是一個HTML頁面。雖然不一定用到,可以了解一下

   /**
     * @describe 發送內容為HTML格式的郵件
     * @throws EmailException
     * @throws MalformedURLException
     */
    public static void sendHTMLFormattedEmail() throws EmailException, MalformedURLException {
        // 這裏需要使用HtmlEmail創建一個email對象
        HtmlEmail email = new HtmlEmail();
        email.setHostName("smtp.163.com");
        email.setAuthenticator(new DefaultAuthenticator("myemailaddresss@163.com", "myshouquanma"));
        email.addTo("receiveemail@qq.com", "Conti Zhang");
        email.setFrom("myemailaddress@163.com", "Me");
        email.setSubject("Test email with inline image");

        // 嵌入圖像並獲取內容id,雖然案例這樣寫,但我感覺直接在html內容裏面寫圖片網絡地址也可以
        URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");
        String cid = email.embed(url, "Apache logo");

        // 設置html內容
        email.setHtmlMsg("<html>The apache logo - <img src=\"cid:" + cid + "\"></html>");

        // 設置替代內容,如果不支持html
        email.setTextMsg("你的郵件客戶端不支持html郵件");
        email.send();
    }

 

5.發送內容為HTML格式的郵件(嵌入圖片更方便)

這裏用到了DataSourceFileResolver對象,和DataSourceUrlResolver對象,前者可以解析本地文件路徑,後者可以解析網絡路徑

具體用法如下

    /**
     * @describe 發送內容為HTML格式的郵件(嵌入圖片更方便)
     * @throws MalformedURLException
     * @throws EmailException
     */
    public static void sendHTMLFormattedEmailWithEmbeddedImages() throws MalformedURLException, EmailException {
        //html郵件模板
String htmlEmailTemplate = "<img src=\"http://www.conti.com/images/1.jpg\">"; DataSourceResolver[] dataSourceResolvers =new DataSourceResolver[]{new DataSourceFileResolver(),new DataSourceUrlResolver(new URL("http://"))}; email.setDataSourceResolver(new DataSourceCompositeResolver(dataSourceResolvers)); email.setHostName("smtp.qq.com"); email.setAuthenticator(new DefaultAuthenticator("myemailaddress@qq.com", "myshouquanma")); email.addTo("receiveemail@qq.com", "Conti Zhang"); email.setFrom("myemailaddress@qq.com", "Me"); email.setSubject("Test email with inline image"); email.setHtmlMsg(htmlEmailTemplate); email.setTextMsg("你的郵件客戶端不支持html郵件"); email.send(); }

此種方式可能會報錯,會被郵箱認為是有害郵件不接收而導致發送失敗。解決方法就是,網易郵箱不行就換QQ郵箱,我就是這樣做的

 

好了,就這麼多,歡迎討論!

 

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

【其他文章推薦】

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

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

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

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

※回頭車貨運收費標準

新能源汽車需求井噴 助推鋰材料超預期大漲

據中國汽車工業協會最新發佈數據,今年前6個月我國新能源汽車產量達到7.6萬輛,這一產量同比增幅達到2.5倍。   然而,新能源整車產量快速增長的同時,配套動力電池的產量卻出現缺口。“現在動力電池基本上只要能造出來,銷售出去的問題不大。”乘用車市場資訊聯席會秘書長崔東樹向記者表示,這不僅大大制約了新能源汽車產能的釋放,同時也影響了動力電池技術的進步,“大家都忙著造,很難有人沉下心來做研發。”   實際上,據專家介紹,新能源汽車電池在生產上的技術門檻並不高,這直接導致的是動力電池產能處於快速擴張當中。然而,大批量技術含量較低電池企業的投產,則可能讓國內電池產能由短缺轉向過剩。業內人士預計,隨著產能的快速實現,電池產業可能將在2016年下半年迎來洗牌。  
研發上與日韓有較大差距   “國內電池企業在自動化和研發能力上都與日韓企業有較大差距。”華霆動力技術有限公司的一位負責人向記者介紹,目前日韓企業在生產成本和技術上都整體領先於國內動力電池企業。   一位電池技術專家告訴記者,現階段國內動力電池企業的生產成本大約是2元每瓦時,按照容量為25千瓦時的動力電池計算,成本大約在5萬元左右。   這樣的成本明顯高於LG、三星等韓國動力電池生產企業。據介紹,韓企的成本已降至1.8元每瓦時以下,這意味著同樣是25千瓦時的動力電池,其成本將會低於4.5萬元。   不僅如此,國內電池企業的能量密度也低於日韓企業。上述電池技術專家介紹,國內較好的動力電池模組的能量密度在130瓦時每千克,而松下等日本企業生產動力電池模組的能量密度則能超過200瓦時每千克,LG、三星等韓國企業所生產動力電池也能達到180瓦時每千克左右。   這意味著,國內電池企業生產容量25千瓦時的電池重量將超過190千克,而同樣容量的電池,韓企生產出來的重量為140千克左右,部分日企則能達到125千克。這對於新能源整車的輕量化影響不小。   “目前,在動力電池領域,松下領先LG和三星12~18個月,而LG和三星則領先國內企業12~18個月。”國內某動力電池企業的負責人向記者坦言,“國內電池企業的自動化程度不高,研發和製造水準都趕不上。”   乘聯會資料顯示,國內新能源整車企業除比亞迪擁有自己的配套電池廠外,大多數都通過外採的方式解決電池問題。  
明年底行業恐面臨洗牌   “現在國內電池企業的狀態普遍很浮躁。”上述電池企業負責人向記者表示,由於新能源車企對配套電池的需求持續旺盛,電池企業對產能投入的熱情已大於對研發和技術的追求。 隨著近年來新能源汽車產銷量高速增長,汽車電池產量的缺口也逐步展現出來。這激發了配套電池企業的投產熱情。   一位動力電池公司負責人向記者介紹,僅LG、三星、力神和CATL四家動力電池企業,明年將投產的產能就高達10吉瓦時以上,而每吉瓦時的電池產能可以滿足大約4萬輛新能源汽車的需要,也就是說,僅上述四家動力電池企業的產能就可以滿足40萬輛新能源車的裝配需要。“動力電池的技術門檻並不高。”一位充電設施企業的負責人告訴記者,目前動力電池的核心技術已相對成熟,因此企業實現投產並不難,這造成很多實力並不強大的電池企業紛紛上專案。   不過,“國內主流的12家新能源整車企業的採購,基本上都來自5家主要的動力電池廠家。”一位電池企業負責人向記者表示,隨著具備技術優勢的大電池企業產能的跟上,在技術和成本上都不具備優勢的小企業將很難生存,因此他預測“2016年底電池企業將面臨洗牌”。   乘聯會的資料顯示,目前電池企業CATL主要供應北汽、廣汽、長安和宇通等新能源車企;天津力神主要供應江淮、康迪、廣汽和宇通等;國軒高科則供應康迪、江淮、金龍、安凱和申沃等車企;萬向億能則供應上汽、奇瑞、廣汽、青年等車企。   文章來源:中財網

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

【其他文章推薦】

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

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

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

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

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

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

元晶維持獲利 第一季每股純益 0.11 元

今年第 1 季太陽能市況依然不佳,元晶在產能去瓶頸化,固定成本有效降低,營運仍維持獲利狀態,稅後淨利 3,643 萬元,每股純益 0.11 元。   元晶近年積極拓展高效產品市場,去年雖因美國雙反調查影響市場需求降溫,產品價格下滑,獲利縮水,不過,元晶去年仍有獲利,稅後淨利 1.7 億元,每股純益 0.56 元。   元晶目前太陽能電池年產能 720MW 規模,預計異質接面 (HiT) 高效太陽能電池技術達量產水準後,展開新一波擴產計畫,初步規劃 2017 年產能將倍增至 1,500MW 規模。

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

【其他文章推薦】

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

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

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

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

※回頭車貨運收費標準

澳洲新南威爾斯省 無尾熊2050年恐滅絕

摘錄自2018年09月08日蘋果日報澳洲報導

澳洲動物保護生物學家泰勒(Martin Taylor)周五(7日)提出一份報告,指出新南威爾士省如果繼續目前的土地清理工作,至2050年左右,當地的無尾熊恐面臨滅絕。

《澳洲新聞網》報導,這份報告由澳洲世界自然基金會(WFF)與自然保護委員會(NCC)發布,分析新南威爾士省北部衛星圖像,評估土地清理工作對瀕危物種的影響。泰勒指出,如果清理速度沒有減緩,將會對當地野生動物造成嚴重後果。「我們看到無尾熊的棲地正以驚人的速度消失,每個人都在告訴我們,無尾熊的數量正在下降。如果速度不變,本世紀中葉,新南威爾士省將沒有野生無尾熊。」泰勒的研究發現,自2016年至今,完全或部分被清理的土地面積幾乎增加了2倍,從2845公頃增加到8194公頃。

然而新南威爾士省政府對這項警告提出反駁,當地環境廳長辦公室聲明指控,澳洲世界自然基金會(WFF)與自然保護委員會(NCC)正在散布恐慌。並強調「政府承諾會為無尾熊提供更多自然棲地,並改善道路殺手問題,也已投入4500萬澳幣的大量經費。」政府也強調「無尾熊的數量事實上高於預期。」

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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

力挺能源轉型 全球最大開發銀行擬2020撤資化石燃料

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

※回頭車貨運收費標準

山葉 YAMAHA 與 Gogoro 㩗手合作!將用 Gogoro 電池交換結構在台推新車型

台灣知名電動機車品牌 Gogoro 將與日本著名機車品牌 YAMAHA 共同合作研發機車,此共同合作的車種將於 2019 年夏天發售,由台灣山葉機車發售,新車型將採用 Gogoro 的充換電結構與網路,Gogoro 這次與老牌機車廠合作無疑給其換電系統打了劑強心針,甚至有可能藉由 YAMAHA 之助在世界各地推動其系統,這個合作勢必也將對光陽(Kymco)與尚未選擇何種充換電系統的三陽(SYM)帶來更多壓力。

根據兩公司發出的資料顯示,該合作計畫的內容是有關電動機車的產品開發、委託製造以及電池交換系統的使用,雙方預計於今年內簽署正式合約。屆時將以 Gogoro 市面銷售的車款為基礎,進行 YAMAHA 品牌的電動機車設計,並委由 Gogoro 生產。所完成的車輛則交由台灣山葉機車的銷售通路進行銷售,預計 2019 年夏季將推出第一個車款。

同時,兩家公司的事業合作夥伴「住友商事株式會社」,在促成雙方合作上也扮演了重要的角色。

YAMAHA 自 1966 年起投入台灣機車市場,目前以台灣山葉機車所生產的機車為主,年間販賣 29 萬台(2017 年實績)。同時也製造、銷售電動機車 E-VINO,並輸出到日本。以開發機能來說,YAMAHA 在台灣設有 YAMAHA Motor R&D Taiwan,主要是負責台灣市場的速克達機車開發。此次和 Gogoro 的合作案,不只是想要在台灣市場擴充其包含燃油車種在內的產品種類,在電動車的部分,也想透過運用 Gogoro 所擁有的電池交換站網路,提高消費者使用上的便利性。

Gogoro 自 2015 年起投入台灣機車市場,以製造自有品牌的智慧雙輪和可方便交換電池的電池交換站,開展全新的電動機車商業模式。Gogoro 能源網路目前在台灣已設置超過 750 個電池交換站,預計 2019 年初將超過 1,000 站。並且,自產品上市以來,已達到 1,700 萬次以上的電池交換次數,透過此次的合作,Gogoro 可望擴大電動機車的產能。

YAMAHA 發動機株式會社 MC 事業本部長木下拓也表示:「此次和台灣 Gogoro 的合作,不只增加顧客對移動工具的選擇,同時透過共用先進的電池交換系統,將對新的移動工具服務和創造市場帶來挑戰。」

Gogoro 創辦人暨執行長陸學森表示:「Gogoro 為推動能源開放平台的創新品牌,並運用能源網路的建置來推進大型智慧城市的轉型。這次我們非常榮幸能與 YAMAHA 合作,向實現能源願景的目標邁出重要的一步。」

(合作媒體:。首圖來源:)

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

【其他文章推薦】

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

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

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

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

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

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