全棧項目|小書架|服務器開發-JWT 詳解

JWT

文章基本是官網內容的翻譯,英文不錯的同學可點擊上面的鏈接直接看英文文檔。

什麼是 JWT

JWT全稱是JSON Web Token(JWT)是一個開放標準(RFC 7519),它定義了一種緊湊且自包含的方式,用於在各方之間作為JSON對象安全地傳輸信息。由於此信息是經過数字簽名的,因此可以被驗證和信任。

可以使用密鑰(HMAC算法)或使用RSAECDSA的公用/專用密鑰對對JWT進行簽名。

什麼時候使用 JWT 驗證

  • 授權(Authorization)
    這是使用JWT的最常見情況。一旦用戶登錄,每個後續請求將包括JWT,從而允許用戶訪問該令牌允許的路由,服務和資源。單一登錄是當今廣泛使用JWT的一項功能,因為它的開銷很小並且可以在不同的域中輕鬆使用。
  • 信息交換(Information Exchange)
    JWT是在各方之間安全地傳輸信息的好方法。因為可以對JWT進行簽名(例如,使用公鑰/私鑰對),所以您可以確保發件人是他們所說的人。另外,由於簽名是使用Headerpayload計算的,因此您還可以驗證內容是否未被篡改。

JWT 的結構格式

由三部分組成,這些部分由點.分隔,分別是:

  • Header
  • Payload
  • Signature

因此,JWT通常如下所示。

xxxxx.yyyyy.zzzzz

Header

通常由兩部分組成:

  • 令牌的類型(即JWT
  • 所使用的簽名算法,例如: 或。

例如:

{
  "alg": "HS256",
  "typ": "JWT"
}

然後,將此JSON通過Base64Url編碼以形成JWT的第一部分。

Payload

令牌的第二部分是有效負載,其中包含聲明。聲明是有關實體(通常是用戶)和其他數據的聲明。共有三種類型的索賠: registered、public、private claims

  • Registered claims
    這些是一組預定義的權利要求,不是強制性的,而是建議使用的,以提供一組有用的可互操作的權利要求。其中一些是:iss(發出者),exp(到期時間),sub(主題),aud(受眾) 等。
    Tip: 請注意,聲明名稱僅是三個字符,因為JWT是緊湊的。
  • Public claims
    這些可以由使用JWT的人員隨意定義。但是為避免衝突,應在IANA JSON Web令牌註冊表中定義它們,或將其定義為包含抗衝突名稱空間的URI
  • Private claims
    這些是自定義聲明,旨在在同意使用它們的各方之間共享信息,既不是註冊聲明也不是公共聲明。

有效負載示例:

{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

同樣需要Base64Url編碼,以形成JWT的第二部分。

Signature

簽名(Signature)用於驗證消息在整個過程中沒有更改,並且對於使用私鑰進行簽名的令牌,它還可以驗證JWT的發送者是它所說的真實身份。

例如,如果要使用HMAC SHA256算法,則將通過以下方式創建簽名:

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

將這三部分合併

輸出是三個由.分隔的Base64-URL字符串,可以在HTMLHTTP環境中輕鬆傳遞這些字符串,與基於XML的標準(例如SAML)相比,它更緊湊。

下圖显示了一個JWT,它已對先前的HeaderPayload進行了編碼,並用一個Signature

可以在這個網頁 驗證和生成JWT

JWT 如何工作

在身份驗證中,當用戶使用其憑據成功登錄時,將返回令牌。由於令牌是憑據,因此必須格外小心以防止安全問題。通常,令牌的有效時間不宜設置過長。

Tip: 由於缺乏安全性,您也不應該將敏感的會話數據存儲在瀏覽器存儲中。

每當用戶想要訪問受保護的路由或資源時,用戶代理通常應在Bearer模式中使用授權頭髮送JWTHeader的內容應如下所示:

Authorization: Bearer <token>

在某些情況下,接口訪問並不需要身份授權。服務器的受保護路由將在Authorization Header中檢查JWT令牌是否有效,如果存在且有效,則將允許用戶訪問受保護的資源。

如果JWT包含必要的數據,則可以減少查詢數據庫中某些操作的需求。

如果令牌是在Authorization Header中發送的,則跨域資源共享 不會成為問題,因為它不使用cookie

下圖显示了如何獲取JWT並將其用於訪問API或資源

  1. 應用程序或客戶端向授權服務器請求授權。生產JWT令牌
  2. 授予授權后,授權服務器會將訪問令牌返回給應用程序。
  3. 應用程序使用訪問令牌來訪問受保護的資源(例如API)。
  4. 服務器檢查JWT令牌是否有效,返回對應結果給客戶端

下圖詳細的流程:

ps:請注意,使用簽名令牌,令牌或令牌中包含的所有信息都會暴露給用戶或其他方,即使他們無法更改它。這意味着您不應將機密信息放入令牌中。

為什麼需要 JWT

對比 Simple Web Tokens (SWT)Security Assertion Markup Language Tokens (SAML),看看使用JSON Web Tokens (JWT) 有什麼好處。

  • 由於JSON不如XML冗長,因此在編碼時JSON的大小也較小,從而使JWTSAML更緊湊。這使得JWT是在HTMLHTTP環境中傳遞的不錯的選擇。
  • 在安全方面,SWT只能使用HMAC算法進行對稱簽名。但是JWTSAML令牌可以使用X.509證書形式的公用/專用密鑰對進行簽名。與簽名JSON的簡單性相比,使用XML Digital Signature簽名XML而不引入模糊的安全漏洞是非常困難的。
  • JSON解析器在大多數編程語言中都很常見,因為它們直接映射到對象。相反,XML沒有自然的文檔到對象映射。與SAML斷言相比,這使使用JWT更加容易。
  • 關於用法,JWT是在Internet規模上使用的。這強調了在多個平台(尤其是移動平台)上對JSON Web令牌進行客戶端處理的簡便性。

如果您想了解有關JSON Web令牌的更多信息,甚至開始使用它們在自己的應用程序中執行身份驗證,請瀏覽到 頁面。

諮詢請加微信:輕撩即可。

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

【其他文章推薦】

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

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

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

紅毛猩猩家園不保 印尼水壩爭議 凸顯聯合國碳排放計算漏洞

環境資訊中心綜合外電;黃鈺婷 翻譯;彭瑞祥 審校;稿源:Mongabay

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

【其他文章推薦】

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

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

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

財政部長樓繼偉:2020年針對新能源汽車的補貼將退出

中國財政部長樓繼偉日前在中國電動汽車百人會論壇上表示,汽車企業對消費補貼過度依賴,2020年針對新能源汽車的補貼將退出。

樓繼偉稱2020年針對新能源汽車的補貼將退出;2017-2018年的補貼標準比2016年水準下調20%。

樓繼偉稱對優勢企業的補貼將提高。十三五期間中國新能源汽車市場進一步開放,將加快建立新能源汽車積分交易機制。

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

【其他文章推薦】

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

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

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

電動車生意難做?電池廠三星SDI淨損飆、股價遭熊吻

三星集團的電池大廠三星SDI(Samsung SDI)公布2015年第4季財報,虧損擴大。不過三星SDI的化學部門即將分拆出售給樂天集團(Lotte),或許有助未來獲利。   韓聯社報導,三星SDI 25日盤後公布,去年Q4營收年減2.53%至1.86兆韓圜,營損為808億韓圜。淨損為2,313億韓圜(1.94億美元),虧損高於2014年同期的淨損1,288億美元,也不及Q3出現淨利5,024億韓圜。   此外,三星SDI股東25日同意,將分拆化學部門成立獨立公司,暫名為「SDI Chemical」,其中90%股權將在今年上半之前,出售給Lotte Chemical。去年十月樂天集團以3兆韓圜(25億美元)入股三星SDI化學部門,並購買Samsung Fine Chemicals的31.5%股權。   嘉實XQ全球贏家系統報價顯示,三星SDI 25日上漲0.49%收在102,500韓圜。和去年12月16日波段收盤高點(129,000韓圜),重挫21%之多。   三星集團積極卡位汽車市場,旗下電池大廠三星SDI (Samsung SDI)展示最新的車用電池,充電一次可跑600公里,預定2020年量產。   韓聯社11日報導,三星SDI在底特律車展秀出新的車用電池原型,充電一次可跑600公里,高於先前的500公里,預定2020年量產。該公司估計,2020年全球電動車銷量將增至116萬輛,遠高於2015年的27.8萬輛。   三星SDI已成為純粹的車用電池廠,該公司目前在南韓與中國擁有五座生產線、總產能多達4.5GWh。到了2020年,該公司還打算把產能擴充到35GWh。barron`s.com 去年11月4日報導,Bernstein Research分析師Mark Newman發表研究報告指出,三星SDI在2020年的車用電池產能,正好與特斯拉預定的Gigafactory產能完全一致。   (本文內容由授權使用)

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

【其他文章推薦】

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

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

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

手把手教你實現熱更新功能,帶你了解 Arthas 熱更新背後的原理

文章來源:

一、前言

一天下午正在摸魚的時候,測試小姐姐走了過來求助,說是需要改動測試環境 mock 應用。但是這個應用一時半會又找不到源代碼存在何處。但是測試小姐姐的活還是一定要幫,突然想起了 Arthas 可以熱更新應用代碼,按照網上的步驟,反編譯應用代碼,加上需要改動的邏輯,最後熱更新成功。對此,測試小姐姐很滿意,並表示下次會少提 Bug。

嘿嘿,以前一直對熱更新背後原理很好奇,藉著這個機會,研究一下熱更新的原理。

二、Arthas 熱更新

我們先來看下 Arthas 是如何熱更新的。

詳情參考:

假設我們現在有一個 HelloService 類,邏輯如下,現在我們使用 Arthas 熱更新代碼,讓其輸出 hello arthas

public class HelloService {

    public static void main(String[] args) throws InterruptedException {

        while (true){
            TimeUnit.SECONDS.sleep(1);
            hello();
        }
    }

    public static void hello(){
        System.out.println("hello world");
    }

}

2.1、jad 反編譯代碼

首先運行 jad 命令反編譯 class 文件獲取源代碼,運行命令如下:。

jad --source-only com.andyxh.HelloService > /tmp/HelloService.java

2.2、修改反編譯之後的代碼

拿到源代碼之後,使用 VIM 等文本編輯工具編輯源代碼,加入需要改動的邏輯。

2.3、查找 ClassLoader

然後使用 sc 命令查找加載修改類的 ClassLoader,運行命令如下:

$ sc -d  com.andyxh.HelloService | grep classLoaderHash
 classLoaderHash   4f8e5cde

這裏運行之後將會得到 ClassLoader 哈希值。

2.4、 mc 內存編譯源代碼

使用 mc 命令編譯上一步修改保存的源代碼,生成最終 class 文件。

$ mc -c 4f8e5cde  /tmp/HelloService.java  -d /tmp
Memory compiler output:
/tmp/com/andyxh/HelloService.class
Affect(row-cnt:1) cost in 463 ms.

2.5、redefine 熱更新代碼

運行 redefine 命令:

$ redefine /tmp/com/andyxh/HelloService.class
redefine success, size: 1

熱更新成功之後,程序輸出結果如下:

一般情況下,我們本地將會有源代碼,上面的步驟我們可以進一步省略,我們可以先在自己 IDE 上改動代碼,編譯生成 class 文件。這樣我們只需要運行 redefine 命令即可。也就是說實際上起到作用只是 redefine

三、 Instrumentation 與 attach 機制

Arthas 熱更新功能看起來很神奇,實際上離不開 JDK 一些 API,分別為 instrument API 與 attach API。

3.1 Instrumentation

Java Instrumentation 是 JDK5 之後提供接口。使用這組接口,我們可以獲取到正在運行 JVM 相關信息,使用這些信息我們構建相關監控程序檢測 JVM。另外, 最重要我們可以替換修改類的,這樣就實現了熱更新。

Instrumentation 存在兩種使用方式,一種為 pre-main 方式,這種方式需要在虛擬機參數指定 Instrumentation 程序,然後程序啟動之前將會完成修改或替換類。使用方式如下:

java -javaagent:jar Instrumentation_jar -jar xxx.jar

有沒有覺得這種啟動方式很熟悉,仔細觀察一下 IDEA 運行輸出窗口。

另外很多應用監控工具,如:zipkin、pinpoint、skywalking。

這種方式只能在應用啟動之前生效,存在一定的局限性。

JDK6 針對這種情況作出了改進,增加 agent-main 方式。我們可以在應用啟動之後,再運行 Instrumentation 程序。啟動之後,只有連接上相應的應用,我們才能做出相應改動,這裏我們就需要使用 Java 提供 attach API。

3.2 Attach API

Attach API 位於 tools.jar 包,可以用來連接目標 JVM。Attach API 非常簡單,內部只有兩個主要的類,VirtualMachineVirtualMachineDescriptor

VirtualMachine 代表一個 JVM 實例, 使用它提供 attach 方法,我們就可以連接上目標 JVM。

 VirtualMachine vm = VirtualMachine.attach(pid);

VirtualMachineDescriptor 則是一個描述虛擬機的容器類,通過該實例我們可以獲取到 JVM PID(進程 ID),該實例主要通過 VirtualMachine#list 方法獲取。

        for (VirtualMachineDescriptor descriptor : VirtualMachine.list()){

            System.out.println(descriptor.id());
        }

介紹完熱更新涉及的相關原理,接下去使用上面 API 實現熱更新功能。

四、實現熱更新功能

這裏我們使用 Instrumentation agent-main 方式。

4.1、實現 agent-main

首先需要編寫一個類,包含以下兩個方法:

public static void agentmain (String agentArgs, Instrumentation inst);          [1]
public static void agentmain (String agentArgs);            [2]

上面的方法只需要實現一個即可。若兩個都實現, [1] 優先級大於 [2],將會被優先執行。

接着讀取外部傳入 class 文件,調用 Instrumentation#redefineClasses,這個方法將會使用新 class 替換當前正在運行的 class,這樣我們就完成了類的修改。

public class AgentMain {
    /**
     *
     * @param agentArgs 外部傳入的參數,類似於 main 函數 args
     * @param inst
     */
    public static void agentmain(String agentArgs, Instrumentation inst) {
        // 從 agentArgs 獲取外部參數
        System.out.println("開始熱更新代碼");
        // 這裏將會傳入 class 文件路徑
        String path = agentArgs;
        try {
            // 讀取 class 文件字節碼
            RandomAccessFile f = new RandomAccessFile(path, "r");
            final byte[] bytes = new byte[(int) f.length()];
            f.readFully(bytes);
            // 使用 asm 框架獲取類名
            final String clazzName = readClassName(bytes);

            // inst.getAllLoadedClasses 方法將會獲取所有已加載的 class
            for (Class clazz : inst.getAllLoadedClasses()) {
                // 匹配需要替換 class
                if (clazz.getName().equals(clazzName)) {
                    ClassDefinition definition = new ClassDefinition(clazz, bytes);
                    // 使用指定的 class 替換當前系統正在使用 class
                    inst.redefineClasses(definition);
                }
            }

        } catch (UnmodifiableClassException | IOException | ClassNotFoundException e) {
            System.out.println("熱更新數據失敗");
        }


    }

    /**
     * 使用 asm 讀取類名
     *
     * @param bytes
     * @return
     */
    private static String readClassName(final byte[] bytes) {
        return new ClassReader(bytes).getClassName().replace("/", ".");
    }
}

完成代碼之後,我們還需要往 jar 包 manifest 寫入以下屬性。

## 指定 agent-main 全名
Agent-Class: com.andyxh.AgentMain
## 設置權限,默認為 false,沒有權限替換 class
Can-Redefine-Classes: true

我們使用 maven-assembly-plugin,將上面的屬性寫入文件中。

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <!--指定最後產生 jar 名字-->
        <finalName>hotswap-jdk</finalName>
        <appendAssemblyId>false</appendAssemblyId>
        <descriptorRefs>
            <!--將工程依賴 jar 一塊打包-->
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifestEntries>
                <!--指定 class 名字-->
                <Agent-Class>
                    com.andyxh.AgentMain
                </Agent-Class>
                <Can-Redefine-Classes>
                    true
                </Can-Redefine-Classes>
            </manifestEntries>
            <manifest>
                <!--指定 mian 類名字,下面將會使用到-->
                <mainClass>com.andyxh.JvmAttachMain</mainClass>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id> <!-- this is used for inheritance merges -->
            <phase>package</phase> <!-- bind to the packaging phase -->
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

到這裏我們就完成熱更新主要代碼,接着使用 Attach API,連接目標虛擬機,觸發熱更新的代碼。

public class JvmAttachMain {
    public static void main(String[] args) throws IOException, AttachNotSupportedException, AgentLoadException, AgentInitializationException {
        // 輸入參數,第一個參數為需要 Attach jvm pid 第二參數為 class 路徑
        if(args==null||args.length<2){
            System.out.println("請輸入必要參數,第一個參數為 pid,第二參數為 class 絕對路徑");
            return;
        }
        String pid=args[0];
        String classPath=args[1];
        System.out.println("當前需要熱更新 jvm pid 為 "+pid);
        System.out.println("更換 class 絕對路徑為 "+classPath);
        // 獲取當前 jar 路徑
        URL jarUrl=JvmAttachMain.class.getProtectionDomain().getCodeSource().getLocation();
        String jarPath=jarUrl.getPath();

        System.out.println("當前熱更新工具 jar 路徑為 "+jarPath);
        VirtualMachine vm = VirtualMachine.attach(pid);//7997是待綁定的jvm進程的pid號
        // 運行最終 AgentMain 中方法
        vm.loadAgent(jarPath, classPath);
    }
}

在這個啟動類,我們最終調用 VirtualMachine#loadAgent,JVM 將會使用上面 AgentMain 方法使用傳入 class 文件替換正在運行 class。

4.2、運行

這裏我們繼續開頭使用的例子,不過這裏加入一個方法獲取 JVM 運行進程 ID。

public class HelloService {

    public static void main(String[] args) throws InterruptedException {
        System.out.println(getPid());
        while (true){
            TimeUnit.SECONDS.sleep(1);
            hello();
        }
    }

    public static void hello(){
        System.out.println("hello world");
    }

    /**
     * 獲取當前運行 JVM PID
     * @return
     */
    private static String getPid() {
        // get name representing the running Java virtual machine.
        String name = ManagementFactory.getRuntimeMXBean().getName();
        System.out.println(name);
        // get pid
        return name.split("@")[0];
    }

}

首先運行 HelloService,獲取當前 PID,接着複製 HelloService 代碼到另一個工程,修改 hello 方法輸出 hello agent,重新編譯生成新的 class 文件。

最後在命令行運行生成的 jar 包。

HelloService 輸出效果如下所示:

4.3、調試技巧

普通的應用我們可以在 IDE 直接使用 Debug 模式調試程序,但是上面的程序無法直接使用 Debug。剛開始運行的程序碰到很多問題,無奈之下,只能選擇最原始的辦法,打印錯誤日誌。後來查看 arthas 的文檔,發現上面一篇文章介紹使用 IDEA Remote Debug 模式調試程序。

首先我們需要在 HelloService JVM 參數加入以下參數:

-Xrunjdwp:transport=dt_socket,server=y,address=8001  

此時程序將會被阻塞,直到遠程調試程序連接上 8001 端口,輸出如下:

然後在 Agent-main 這個工程增加一個 remote 調試。

圖中參數如下:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8001

Agent-main 工程打上斷點,運行遠程調試, HelloService 程序將會被啟動。

最後在命令行窗口運行 Agent-main 程序,遠程調試將會暫停到相應斷點處,接下來調試就跟普通 Debug 模式一樣,不再敘述。

4.4、相關問題

由於 Attach API 位於 tools.jar 中,而在 JDK8 之前 tools.jar 與我們常用JDK jar 包並不在同一個位置,所以編譯與運行過程可能找不到該 jar 包,從而導致報錯。

如果 maven 編譯與運行都使用 JDK9 之後,不用擔心下面問題。

maven 編譯問題

maven 編譯過程可能發生如下錯誤。

解決辦法為在 pom 下加入 tools.jar 。

        <dependency>
            <groupId>jdk.tools</groupId>
            <artifactId>jdk.tools</artifactId>
            <scope>system</scope>
            <version>1.6</version>
            <systemPath>${java.home}/../lib/tools.jar</systemPath>
        </dependency>

或者使用下面依賴。

        <dependency>
            <groupId>com.github.olivergondza</groupId>
            <artifactId>maven-jdk-tools-wrapper</artifactId>
            <version>0.1</version>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>

程序運行過程 tools.jar 找不到

運行程序時拋出 java.lang.NoClassDefFoundError,主要原因還是系統未找到 tools.jar 導致。

在運行參數加入 -Xbootclasspath/a:${java_home}/lib/tools.jar,完整運行命令如下:

4.5、熱更新存在一些限制

並不是所有改動熱更新都將會成功,當前使用 Instrumentation#redefineClasses 還是存在一些限制。我們僅只能修改方法內部邏輯,屬性值等,不能添加,刪除方法或字段,也不能更改方法的簽名或繼承關係。

五、彩蛋

寫完熱更新代碼,收到一封系統郵件提示 xxx bug 待修復。恩,說好的少提 Bug 呢 o(╥﹏╥)o。

六、幫助

歡迎關注我的公眾號:程序通事,獲得日常乾貨推送。如果您對我的專題內容感興趣,也可以關注我的博客:

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

【其他文章推薦】

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

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

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

微型電動車或納入摩托車管理範疇 政策或將2016年出臺

據瞭解,工信部、發改委、公安部、環境部等部委已經對微型電動汽車進行調研,通過高標準放行一小部分產品後,其他微型電動車或將納入新的摩托車管理範疇。

中國電動汽車百人會微型電動車課題組組長介紹,通過多次微型電動車發展問題的調研與討論,並形成了相關的政策管理建議方案。他表示,馬凱總理對微型電動車的發展已有批示,要納入正常的機動車管理。

這是一個積極正面的信號,而不是否認微型電動車的存在價值。

在具體的管理標準上,一位從事新能源汽車研究的相關人士告訴記者,目前政策傾向于按照類似歐盟的摩托車歸類管理微型電動車。同時,在歐盟標準之上,按照中國不同城市特色區分管理,比如,在北上廣深等一線城市禁止微型電動車上路,但遠郊區可放開,三四線及以下的城市也可以上路,這就規避了實際管理中的很多矛盾。
 

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

【其他文章推薦】

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

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務

南美洲成立新網站 鼓勵舉報投訴貪污及破壞環境

摘錄自2020年2月20日星島日報報導

三個非政府組織在南美洲成立一個新網站,鼓勵公眾舉報及投訴貪污及破壞環境的行為。由智利民權組織 Ciudadania Inteligente 、美國 Proyecto PODER 組織及西班牙國際巴爾塔薩.加爾松基金會(International Baltasar Garzon Foundation)合力促成。

三個組織發表聲明稱,成立這個網站的目的是提供一個重要工具和途徑,鼓勵公眾舉報不公義的事情和行為,藉以建立更公平的社會,為那些權利和生活都面對危害的拉丁美洲人提供保障。

三個組織指出,過往一些震動拉丁美洲的政治和金錢醜聞,都是因為有人察覺到詐騙和犯罪行為而揭發的,包括涉及巴西大型工程公司 Odebrecht 的醜聞。該公司被指在區內數個國家行賄,獲取大型基建工程合約,涉及款項數以10億美元計。

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

【其他文章推薦】

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

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務

特斯拉公布 2015 年第四季暨全年財報,預告 Model 3 車款 3 月 31 日發表

在正式發表 SUV 車款 Model X,並推出自動駕駛模式 Autopilot 之後,受到投資人關注的美國電動車製造商特斯拉(Tesla),10 日公布截至 2015 年 12 月 31 日的第四季暨全年財務報告,並且預告入門級 Model 3 車款將訂於 3 月 31 日發表。

依照美國通用會計準則,特斯拉第四季營收 12.1 億美元,相較去年同期成長 27%,全年營收則是 40.5 億美元(約台幣 1,356.4 億元),相較去年同期成長 27%,毛利率 18%,該季自核心營運項目獲得 1.79 億美元(約台幣 60 億元)的現金流。   雖然第四季與全年的營收有所成長,但是該季特斯拉淨虧損 3.2 億美元(約台幣 107.2 億元),高於去年同期的淨虧損 1.08 億美元,每股虧損 2.44 美元;全年淨虧損則是 8.89 億美元(約台幣 297.7 億元),高於 2014 年的 2.94 億美元,每股虧損 6.93 美元。財報數據顯示特斯拉仍有近 12 億美元(約台幣 401.9 億元)的現金,但是相較 2014 年持有現金 19 億美元,這一年來確實不斷地燒錢。   儘管財報不如預期,特斯拉對於新的一年仍然抱持樂觀。該公司預期 2016 年將能產生現金流,使 2016 年底的現金餘額比 2015 年底有所提高。特斯拉將在設備方面進行投資,以便支援超級電池工廠 Gigafactory 生產電池,開始組裝入門級 Model 3 車款,並且開設約 80 個銷售據點與服務中心,以及約 300 座超級充電站。   Model X 已自去年底開始交車,為了達成上述目標,該公司計畫 2016 年將交付 8 萬至 9 萬輛 Model S 與 Model X 新車;而且第一季的目標設定為 1.6 萬輛,相較去年同期欲成長 60%。   最後,特斯拉並預告 Model 3 車款將訂於 3 月 31 日發表,預計 2017 年下半年交車,執行長 Elon Musk 證實售價大約在 3.5 萬美元(約台幣 117.2 萬元),加上聯邦(美金7500元扣抵)、與各州政府的補貼。估計實際價格在三萬一千元美金上下。可謂“平價” 機種。有望帶入新的購買族群。   消費者可望能在 3 月 31 日起於特斯拉的銷售據點進行預購。  

  (本文授權轉載自《》─〈〉)

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

【其他文章推薦】

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

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務

因安全帶隱患 豐田宣佈全球召回百萬輛RAV4等

2016年2月16日,豐田汽車美國銷售公司在美國召回112.4萬輛後排安全帶存在斷裂隱患的RAV4。旋即2月18日豐田汽車公司將召回擴大到全球範圍,覆蓋中國等市場,涉及更多車型,召回車輛的總數也倍增至287萬輛。

按照地區劃分,豐田本次在北美召回130萬輛車(其中美國占1,124,000輛),在歐洲召回625,000輛,在中國召回434,000輛,在日本本土召回177,000輛,其他地區占30,700輛。

車型方面,在全球市場主要是生產於2005年7月和2014年8月之間的RAV4型SUV,而在日本本土市場為生產於2005年10月至2016年1月之間的Vanguard型SUV。在美國市場,召回的傳統動力版RAV4為2006-2012款,而RAV4EV電動車則是2012至2014款。

這將是豐田迄今為止,因安全問題而開展的最大一次召回。

故障解釋:安全帶或被座椅割斷

從本次召回的發端看,2015年10月加拿大進行汽車碰撞研究,發現在遭遇嚴重的正面碰撞事故時,安全帶可能觸及金屬座椅框架/骨架,邊緣被割開導致安全帶斷裂,從而增大了乘員受傷的風險。在加拿大方面發現缺陷之後,豐田開始展開調查研究,因而發起召回。

關於本次召回,豐田承認是車輛設計的問題,而與零部件供應商無關。

目前尚未有相關事故或受傷報導。豐田將通過郵件的方式通知車主進行召回,將車輛交予經銷商免費維修。解決方案是採用樹脂包裹金屬座椅骨架,防止撞車後金屬片結構切割安全帶,杜絕意外發生。
 

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

【其他文章推薦】

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

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務

李克強:進一步支持新能源汽車產業,要推動五項措施

國務院總理李克強2月24日主持召開國務院常務會議,確定進一步支持新能源汽車產業的措施,以結構優化推動綠色發展。

會議指出,發展新能源汽車,推動產業邁向中高端,有利於保護和改善環境,是培育新動能的重要抓手、發展新經濟的重要內容。近兩年來,在國家政策引導和各方努力下,中國新能源汽車在研發推廣、技術水準等方面取得明顯成效,產銷快速增長。下一步,要堅持市場導向和創新驅動,依託大眾創業、萬眾創新,努力攻克核心技術,打破瓶頸制約,加速新能源汽車發展步伐。

一是加快實現動力電池革命性突破。推動大中小企業、高校、科研院所等組建協同攻關、開放共用的動力電池創新平臺,在關鍵材料、電池系統等共性、基礎技術研發上集中發力。中央財政採取以獎代補方式,根據動力電池性能、銷量等指標對企業給予獎勵。加大對動力電池數位化製造成套裝備的支援。

二是加快充電基礎設施建設。明確地方政府、業主、開發商、物業和電網企業等責權利,推動落實住宅社區和黨政機關、企事業單位、機場景區及其他社會停車場等建設充電設施的要求。利用中央預算內投資和配電網專項金融債等支持各地充電設施建設,鼓勵地方建立以充電量為基準的獎勵補貼政策,減免充電服務費用。

三是擴大城市公交、計程車、環衛、物流等領域新能源汽車應用比例。中央國家機關、新能源汽車推廣應用城市的政府部門及公共機構購買新能源汽車占當年配備更新車輛總量的比例,要提高到50%以上。

四是提升新能源汽車整車品質。完善准入標準,加強品質安全監管,發展新能源汽車+物聯網,強化生產企業對新能源汽車的安全監控、動態檢查,建立懲罰性賠償和市場退出等機制。

五是完善財政補貼等扶持政策,督促落實不得對新能源汽車限行限購的要求,破除地方保護,打擊“騙補”行為。建立合理投資回報機制,鼓勵社會資本進入充電設施建設運營、整車租賃、電池回收利用等服務領域。國務院新能源汽車協調機制及其辦公機構要履行好協調職責。

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

【其他文章推薦】

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

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

台灣海運大陸貨務運送流程

兩岸物流進出口一站式服務