一對多分頁的SQL到底應該怎麼寫?

1. 前言

MySQL一對多的數據分頁是非常常見的需求,比如我們要查詢商品和商品的圖片信息。但是很多人會在這裏遇到分頁的誤區,得到不正確的結果。今天就來分析並解決這個問題。

2. 問題分析

我們先創建一個簡單商品表和對應的商品圖片關係表,它們之間是一對多的關係:

然後我分別寫入了一些商品和這些商品對應的圖片,通過下面的左連接查詢可以看出它們之間具有明顯的一對多關係:

SELECT P.PRODUCT_ID, P.PROD_NAME, PI.IMAGE_URL
FROM PRODUCT_INFO P
         LEFT JOIN PRODUCT_IMAGE PI
                   ON P.PRODUCT_ID = PI.PRODUCT_ID

按照傳統的思維我們的分頁語句會這麼寫:

    <resultMap id="ProductDTO" type="cn.felord.mybatis.entity.ProductDTO">
        <id property="productId" column="product_id"/>
        <result property="prodName" column="prod_name"/>
        <collection property="imageUrls"  ofType="string">
            <result column="image_url"/>
        </collection>
    </resultMap>

    <select id="page" resultMap="ProductDTO">
        SELECT P.PRODUCT_ID, P.PROD_NAME,PI.IMAGE_URL
        FROM PRODUCT_INFO P
                 LEFT JOIN PRODUCT_IMAGE PI
                           ON P.PRODUCT_ID = PI.PRODUCT_ID
        LIMIT #{current},#{size}
    </select>               

當我按照預想傳入了(0,2)想拿到前兩個產品的數據,結果並不是我期望的:

2020-06-21 23:35:54.515 DEBUG 10980 --- [main] c.f.m.mappers.ProductInfoMapper.page     : ==>  Preparing: SELECT P.PRODUCT_ID, P.PROD_NAME,PI.IMAGE_URL FROM PRODUCT_INFO P LEFT JOIN PRODUCT_IMAGE PI ON P.PRODUCT_ID = PI.PRODUCT_ID limit ?,? 
2020-06-21 23:35:54.541 DEBUG 10980 --- [main] c.f.m.mappers.ProductInfoMapper.page     : ==> Parameters: 0(Long), 2(Long)
2020-06-21 23:35:54.565 DEBUG 10980 --- [main] c.f.m.mappers.ProductInfoMapper.page     : <==      Total: 2
page = [ProductDTO{productId=1, prodName='杯子', imageUrls=[http://asset.felord.cn/cup1.png, http://asset.felord.cn/cup2.png]}]

我期望的兩條數據是杯子和筆記本,但是結果卻只有一條。原來當一對多映射時結果集會按照多的一側進行輸出(期望4條數據,實際上會有7條),而前兩條展示的只會是杯子的數據(如上圖),合併后就只有一條結果了,這樣分頁就對不上了。那麼如何才能達到我們期望的分頁效果呢?

3. 正確的方式

正確的思路是應該先對主表進行分頁,再關聯從表進行查詢。

拋開框架,我們的SQL應該先對產品表進行分頁查詢然後再左關聯圖片表進行查詢:

SELECT P.PRODUCT_ID, P.PROD_NAME, PI.IMAGE_URL
FROM (SELECT PRODUCT_ID, PROD_NAME
      FROM PRODUCT_INFO
      LIMIT #{current},#{size}) P
         LEFT JOIN PRODUCT_IMAGE PI
                   ON P.PRODUCT_ID = PI.PRODUCT_ID

這種寫法的好處就是通用性強一些。但是MyBatis提供了一個相對優雅的路子,思路依然是開頭所說的思路。只不過我們需要改造上面的Mybatis XML配置:

<resultMap id="ProductDTO" type="cn.felord.mybatis.entity.ProductDTO">
    <id property="productId" column="product_id"/>
    <result property="prodName" column="prod_name"/>
     <!-- 利用 collection 標籤提供的 select 特性 和 column   -->
    <collection property="imageUrls" ofType="string" select="selectImagesByProductId" column="product_id"/>
</resultMap>
<!-- 先查詢主表的分頁數據    -->
<select id="page" resultMap="ProductDTO">
    SELECT PRODUCT_ID, PROD_NAME
    FROM PRODUCT_INFO
    LIMIT #{current},#{size}
</select>
<!--根據productId 查詢對應的圖片-->
<select id="selectImagesByProductId" resultType="string">
    SELECT IMAGE_URL
    FROM PRODUCT_IMAGE
    WHERE PRODUCT_ID = #{productId}
</select>

4. 總結

大部分情況下分頁是很容易的,但是一對多還是有一些小小的陷阱的。一旦我們了解了其中的機制,也並不難解決。當然如果你有更好的解決方案可以留言討論,集思廣益。多多關注:碼農小胖哥,獲取更多開發技巧。

關注公眾號:Felordcn 獲取更多資訊

個人博客:https://felord.cn

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

【其他文章推薦】

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

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

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

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

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

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

深入理解進程,線程,協程

今日得到

  • 計算機科學領域的任何問題都可以通過增加一個間接的中間層來解決

  • 併發:Do not communicate by sharing memory; instead, share memory by communicate. (不要以共享內存的方式來通信,相反,要通過通信來共享內存)

1. 進程

進程是系統進行資源分配和調度的一個獨立單位,程序段、數據段、PCB三部分組成了進程實體(進程映像),PCB是進程存在的唯一標準

1.1 進程的組織方式:

  • 鏈接方式
    • 按照進程狀態將PCB分為多個隊列,就緒隊列,阻塞隊列等
    • 操作系統持有指向各個隊列的指針
  • 索引方式
    • 根據進程狀態的不同,建立幾張索引表
    • 操作系統持有指向各個索引表的指針

1.2 進程的狀態

  • 創建態: 操作系統為進程分配資源,初始化PCB

  • 就緒態:運行資源等條件都滿足,存儲在就緒隊列中,等待CPU調度

  • 運行態:CPU正在執行進程

  • 阻塞態:等待某些條件滿足,等待消息回復,等待同步鎖,sleep等,阻塞隊列

  • 終止態 :回收進程擁有的資源,撤銷PCB

1.3 進程的切換和調度

進程在操作系統內核程序臨界區中不能進行調度與切換

臨界資源:一個時間段內只允許一個進程使用資源,各進程需要互斥地訪問臨界資源

臨界區:訪問臨界資源的代碼

內核程序臨界區:訪問某種內核數據結構,如進程的就緒隊列(存儲各進程的PCB)

進程調度的方式:

  • 非剝奪調度方式(非搶佔方式),只允許進程主動放棄處理機,在運行過程中即便有更緊迫的任務到達,當前進程依然會繼續使用處理機,直到該進程終止或者主動要求進入阻塞態
  • 剝奪調度方式(又稱搶佔方式)當一個進程正在處理機上執行時,如果有一個優先級更高的進程需要處理機,則立即開中斷暫停正在執行的進程,將處理機飯呢陪給優先級高的那個進程

進程的切換與過程:進程的調度、切換是有代價的

  1. 對原來運行進程各種數據的保存
  2. 對新的進程各種數據恢復(程序計數器,程序狀態字,各種數據寄存器等處理機的現場)

進程調度算法的相關參數:

  • CPU利用率:CPU忙碌時間/作業完成的總時間
  • 系統吞吐量:單位時間內完成作業的數量
  • 周轉時間:從作業被提交給系統開始,到作業完成為止的時間間隔 = 作業完成時間-作業提交時間
  • 帶權周轉時間:(由於周轉時間相同的情況下,可能實際作業的運行時間不一樣,這樣就會給用戶帶來不一樣的感覺) 作業周轉時間/作業實際運行時間, 帶權周轉時間>=1, 越小越好
  • 平均帶權周轉時間:各作業帶權周轉時間之和/作業數
  • 等待時間
  • 響應時間

調度算法:

算法思想,用於解決什麼問題?

算法規則,用於作業(PCB作業)調度還是進程調度?

搶佔式還是非搶佔式的?

優缺點?是否會導致飢餓?

以下調度算法是適用於當前交互式操作系統

  • 時間片輪轉(Round-Robin)
    • 算法思想:公平地、輪流地為各個進程服務,讓每個進程在一定時間間隔內可以得到相應
    • 算法規則:按照各進程到達就緒隊列的順序,輪流讓各個進程執行一個時間片(如100ms)。若進程未在一個時間片內執行完,則剝奪處理機,將進程重新放到就緒隊列隊尾重新排隊。
    • 用於作業/進程調度:用於進程的調度(只有作業放入內存建立相應的進程后,才會被分配處理機時間片)
    • 是否可搶佔?若進程未能在規定時間片內完成,將被強行剝奪處理機使用權,由時鐘裝置發出時鐘中斷信號來通知CPU時間片到達
    • 優缺點:適用於分時操作系統,由於高頻率的進程切換,因此有一定開銷;不區分任務的緊急程度
    • 是否會導致飢餓? 不會
  • 優先級調度算法
    • 算法思想:隨着計算機的發展,特別是實時操作系統的出現,越來越多的應用場景需要根據任務的進程成都決定處理順序
    • 算法規則:每個作業/進程有各自的優先級,調度時選擇優先級最高的作業/進程
    • 用於作業/進程調度:即可用於作業調度(處於外存後備隊列中的作業調度進內存),也可用於進程調度(選擇就緒隊列中的進程,為其分配處理機),甚至I/O調度
    • 是否可搶佔? 具有可搶佔版本,也有非搶佔式的
    • 優缺點:適用於實時操作系統,用優先級區分緊急程度,可靈活地調整對各種作業/及進程的偏好程度。缺點:若源源不斷地提供高優先級進程,則可能導致飢餓
    • 是否會導致飢餓: 會
  • 多級反饋隊列調度算法
    • 算法思想:綜合FCFS、SJF(SPF)、時間片輪轉、優先級調度

    • 算法規則:

      • 1.設置多級就緒隊列,各級別隊列優先級從高到底,時間片從小到大
      • 2.新進程到達時先進入第1級隊列,按照FCFS原則排隊等待被分配時間片,若用完時間片進程還未結束,則進程進入下一級隊列隊尾
      • 3.只有第k級別隊列為空時,才會為k+1級對頭的進程分配時間片
    • 用於作業/進程調度:用於進程調度

    • 是否可搶佔? 搶佔式算法。在k級隊列的進程運行過程中,若更上級別的隊列(1-k-1級)中進入一個新進程,則由於新進程處於優先級高的隊列中,因此新進程會搶佔處理機,原理運行的進程放回k級隊列隊尾。

    • 優缺點:對各類型進程相對公平(FCFS的有點);每個新到達的進程都可以很快就得到相應(RR優點);短進程只用較少的時間就可完成(SPF)的有點;不必實現估計進程的運行時間;可靈活地調整對各類進程的偏好程度,比如CPU密集型進程、I/O密集型進程(拓展:可以將因I/O而阻塞的進程重新放回原隊列,這樣I/O型進程就可以保持較高優先級)

    • 是否會導致飢餓: 會

2. 線程

引入線程之後,進程只作為除CPU之外的系統資源的分配單元(如:打印機,內存地址空間等都是分配給進程的)

線程的是實現方式:

  • 用戶級線程(User-Level Thread),用戶級線程由應用程序通過線程庫是實現如python (import thread), 線程的管理工作由應用程序負責。
  • 內核級線程(kernel-Level Thread),內核級線程的管理工作由操作系統內核完成,線程調度,切換等工作都由內核負責,因此內核級線程的切換必然需要在核心態下才能完成

進程和線程的關係:一條線程指的是進程中一個單一順序的控制流,一個進程中可以併發多個線程,每條線程并行執行不同的任務。CPU的最小調度單元是線程,所以單進程多線程是可以利用多核CPU的。

2.1 線程模型:

  • 用戶級線程模型(一對多模型)

多個用戶態的線程對應着一個內核線程,程序線程的創建、終止、切換或者同步等線程工作必須自身來完成。python就是這種。雖然可以實現異步,但是不能有效利用多核(GIL)

  • 內核級線程模型 (一對一)

這種模型直接調用操作系統的內核線程,所有線程的創建、終止、切換、同步等操作,都由內核來完成。C++就是這種

  • 兩級線程模型(M:N)

這種線程模型會先創建多個內核級線程,然後用自身的用戶級線程去對應創建的多個內核級線程,自身的用戶級線程需要本身程序去調度,內核級的線程交給操作系統內核去調度。GO語言就是這種。

python中的多線程因為GIL的存在,並不能利用多核CPU優勢,但是在阻塞的系統調用中,如sock.connect(), sock.recv()等耗時的I/O操作,當前的線程會釋放GIL,讓出處理器。但是單個線程內,阻塞調用上還是阻塞的。除了GIL之外,所有的多線程還有通病,他們都是被OS調用的,調度策略是搶佔式的,以保證同等有限級的線程都有機執行,帶來的問題就是:並不知道下一刻執行那個線程,也不知道正在執行什麼代碼,會存在競態條件

3. 協程

協程通過在線程中實現調度,避免了陷入內核級別的上下文切換造成的性能損失,進而突破了線程在IO上的性能瓶頸。

python的協程源於yield指令

  • yield item 用於產出一個值,反饋給next()的調用方法
  • 讓出處理機,暫停執行生成器,讓調用方繼續工作,直到需要使用另一個值時再調用next()

協程式對線程的調度,yield類似惰性求職方式可以視為一種流程控制工具,實現協作式多任務,python3.5引入了async/await表達式,使得協程證實在語言層面得到支持和優化,大大簡化之前的yield寫法。線程正式在語言層面得到支持和優化。線程是內核進行搶佔式調度的,這樣就確保每個線程都有執行的機會。而coroutine運行在同一個線程中,有語言層面運行時中的EventLoop(事件循環)來進行調度。在python中協程的調度是非搶佔式的,也就是說一個協程必須主動讓出執行機會,其他協程才有機會運行。讓出執行的關鍵字 await, 如果一個協程阻塞了,持續不讓出CPU處理機,那麼整個線程就卡住了,沒有任何併發。

PS: 作為服務端,event loop最核心的就是I/O多路復用技術,所有來自客戶端的請求都由I/O多路復用函數來處理;作為客戶端,event loop的核心在於Future對象延遲執行,並使用send函數激發協程,掛起,等待服務端處理完成返回后再調用Callback函數繼續執行。[python 協程與go協程的區別]

3.1 Golang 協程

Go 天生在語言層面支持,和python類似都是用關鍵字,而GO語言使用了go關鍵字,go協程之間的通信,採用了channel關鍵字。

go實現了兩種併發形式:

  • 多線程共享內存:如Java 或者C++在多線程中共享數據的時候,通過鎖來訪問
  • Go語言特有的,也是Go語言推薦的 CSP(communicating sequential processes)併發模型。
package main 

import ("fmt")

func main() {
    jobs := make(chan int)
    done := make(chan bool)  // end flag
    
    go func() {
        for {
            j, ok := <- jobs 
            fmt.Println("---->:", j, ok)
            if ok {
                fmt.Println("received job")
            } else {
                fmt.Println("end received jobs")
                done <- true
                return
            }
        }
    }()
    
    go func() {
        for j:= 1; j <= 3; j++ {
            jobs <-j
            fmt.Println("sent job", j)
        }
        close(jobs)
        fmt.Println("close(jobs)")
    }()
    
    fmt.Println("sent all jobs")
    <-done  // 阻塞 讓main等待協程完成
}

Go的CSP併發模型是通過goroutine 和 channel來實現的。

  • goroutine是go語言中併發的執行單位。
  • channel是Go語言中各個併發結構體之間的通信機制。
    • channel -< data 寫數據
    • <- channel 讀數據

協程本質上來說是一種用戶態的線程,不需要系統來執行搶佔式調度,而是在語言測個面實現線程的調度。

4. 併發

併發:Do not communicate by sharing memory; instead, share memory by communicate.

4.1 Actor模型

Actor模型和CSP模型的區別:

  • CSP並不Focus發送消息的實體/Task, 而是關注發送消息時消息所使用的載體,即channel。
  • 在Actor的設計中,Actor與信箱是耦合的,而在CSP中channel是作為first-class獨立存在的
  • Actor中有明確的send/receive關係,而channel中並不區分這樣的關係,執行快可以任意選擇發送或者取消息

好文推薦:Go/Python/Erlang編程語言對比分析及示例

4.4 Go 協程調度器 GPM

  • G 指的是Goroutine,其本質上也是一種輕量級的線程
  • P proessor, 代表M所需要的上下文環境,也是處理用戶級代碼邏輯處理器。同一時間只有一個線程(M)可以擁有P, P中的數據都是鎖自由(lock free)的, 讀寫這些數據的效率會非常的高
  • M Machine,一個M直接關聯一個內核線程,可以運行go代碼 即goroutine, M運行go代碼需要一個P, 另外就是運行原生代碼,如 syscall。運行原生代碼不需要P。

一個M會對應一個內核線程,一個M也會連接一個上下文P,一個上下文P相當於一個“處理器”,一個上下文連接一個或者多個Goroutine。P(Processor)的數量是在啟動時被設置為環境變量GOMAXPROCS的值,或者通過運行時調用函數runtime.GOMAXPROCS()進行設置

erlang和golang都是採用CSP模型,python中協程是eventloop模型。但是erlang是基於進程的消息通信,go是基於goroutine和channel通信。

python和golang都引入了消息調度系統模型,來避免鎖的影響和進程線程的開銷問題。

計算機科學領域的任何問題都可以通過增加一個間接的中間層來解決 — G-P-M模型正是此理論踐行者,此理論也用到了python的asyncio對地獄回調的處理上(使用Task+Future避免回調嵌套),是不是巧合?
其實異步≈可中斷的函數+事件循環+回調,go和python都把嵌套結構轉換成列表結構有點像算法中的遞歸轉迭代.

調度器在計算機中是分配工作時所需要的資源,Linux的調度是CPU找到可運行的線程,Go的調度是為M線程找到P(內存,執行票據)和可運行的G(協程)

Go協程是輕量級的,棧初始2KB(OS操作系統的線程一般都是固有的棧內存2M), 調度不涉及系統調用,用戶函數調用前會檢查棧空間是否足夠,不夠的話,會進行站擴容,棧大小限制可以達到1GB。

Go的網絡操作是封裝了epoll, 為NonBlocking模式,切換協程不阻塞線程。

Go語言相比起其他語言的優勢在於OS線程是由OS內核來調度的,goroutine則是由Go運行時(runtime)自己的調度器調度的,這個調度器使用一個稱為m:n調度的技術(復用/調度m個goroutine到n個OS線程)。 其一大特點是goroutine的調度是在用戶態下完成的, 不涉及內核態與用戶態之間的頻繁切換,包括內存的分配與釋放,都是在用戶態維護着一塊大的內存池, 不直接調用系統的malloc函數(除非內存池需要改變),成本比調度OS線程低很多。 另一方面充分利用了多核的硬件資源,近似的把若干goroutine均分在物理線程上, 再加上本身goroutine的超輕量,以上種種保證了go調度方面的性能。點我了解更多

4.5 Go 調度器的實現 以及搶佔式調度

legendtkl阿里雲技術專家

Golang源碼探索(二) 協程的實現原理

相關參考文獻:

王道操作系統

操作系統中調度算法(FCFS、RR、SPN、SRT、HRRN)

Python協程與Go協程的區別二

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

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

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

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

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

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

※回頭車貨運收費標準

特斯拉今年或沿京滬高速布局充電設施

據阿思達克財經報導,特斯拉產品專家表示,特斯拉預計第二或者第三季度在上海開店,同時,特斯拉在中國的充電設施首先會沿著京滬高速布局,只是具體布局時間暫不確定。

上述人士表示,特斯拉(Tesla)中國客戶現在訂車,將於今年年底拿到車。上海客戶屆時則可以直接在上海提車,不需要自己出錢把車從北京提到上海。另外,特斯拉客戶可以用自己的燃油車車牌置換,或者參與上海市拍牌。

據介紹,特斯拉在中國大陸目前有6輛,北京店有3輛上牌車,還有3輛試駕車。

針對客戶關心的充電問題,該產品專家表示,客戶購買特斯拉的車價裡面已經包含了充電樁費用,消費者不會再另外花錢購買充電樁,隻需要再支付從物業拉電到車位的材料、人工等費用。

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

【其他文章推薦】

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

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

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

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

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

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

2014第三屆混合動力汽車技術高峰會議

展會主題:
時間:2014年06月26日 至 2014年06月27日
地點:Sheraton Shanghai Hongqiao Hotel
主辦單位:Merisis Consulting

會議背景介紹:

在中國日益嚴重的環境污染壓力和“霧霾”陰影籠罩下,混合動力及純電動汽車的發展形成了勢在必行的趨勢。即使《節能與新能源汽車產業發展規劃》以及四部委聯合發佈的《關於繼續開展新能源汽車推廣應用工作的通知》中明確了純電動以及插電式混合動力汽車的補貼政策,第二批新能源汽車試點運行城市也出臺在即,但新能源汽車產業的前景仍然未能明朗化,標準不統一,基礎建設不健全,電池技術受到局限的電動車以及補貼政策不明確的混合動力汽車都面臨各自發展的瓶頸。在全球並未形成一種成熟應用模式的狀況下,中國應該走出怎樣的一條有自我特色的路線圖。

上海麥瑞賽公司舉辦的混合動力技術峰會將在2014年走入第三個年頭,今年的活動將以“技術驅動混合動力汽車市場化”為主題,探討更多整車廠以及關鍵零部件廠商們共同關注的電池、動力總成、變速箱等關鍵技術,也會融合更多探索純電動車,燃料電池汽車及混合動力汽車未來政策趨勢,商業模式以及標準推進方面的資訊。

我們希望本次峰會可以幫助更多業界同仁通過會議的一手資訊更好的判斷行業未來走向,並且在交換前沿及最新技術,展示領先產品的同時,汲取海外整車廠以及頂尖廠商的經驗,推動整車廠們對純電動及混合動力汽車的研發和市場化的進展。也説明技術/材料/產品提供商們展示自身最新研發和技術成果,並在此平臺上找到與整車商項目以及需求的契合點,獲得在中國本土市場上更多的推廣機會和品牌知名度。

關鍵議題:

  • 如何降低新能源汽車成本並提高市場接受度
  • 技術轉化成產業化,依靠企業還是政策
  • 未來HEV的補貼政策出臺的大致時間表
  • 不同整車廠在底盤系統及變速箱方面的新技術進展
  • 整車集成 / 電機集成的項目方案和合作資源,找到適合自身的合作夥伴
  • 探討近年鋰電池安全事故頻發,如何增加安全性。其他電池安全評估現狀如何
  • PHEV的現有技術的最新進展
  • 如何像特拉斯一樣從根本上顛覆傳統汽車設計

 

部分已確認演講嘉賓:

孟凡一    秘書長    中國機電產品進出口商會汽車分會
張銅柱    高級工程師    中國汽車技術研究中心
劉彥龍    副秘書長    中國化學與物理電源行業協會
鄧先泉    新能源汽車研究所所長    深圳市五洲龍汽車有限公司
Phil Barker    合動力及電動車輛產品總工程師    蓮花汽車科技工程公司
梁春奇    總工程師    長城汽車研究院  底盤研究院院長
徐嚴冬    總工程師    上海電驅動股份有限公司

欲瞭解更多詳情,請登錄官網:

聯繫方式:

聯繫電話:021-61808505*212
手 機:15900722272
傳 真:021-61808511
郵 件:
聯 系 人:萬小姐
網 址:

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

【其他文章推薦】

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

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

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

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

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

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

新技術如何驅動混合動力汽車市場化-第三屆混合動力汽車技術峰會

在中國日益嚴重的環境污染壓力和“霧霾”陰影籠罩下,混合動力及純電動汽車的發展形成了勢在必行的趨勢。即使《節能與新能源汽車產業發展規劃》以及四部委聯合發佈的《關於繼續開展新能源汽車推廣應用工作的通知》中明確了純電動以及插電式混合動力汽車的補貼政策,第二批新能源汽車試點運行城市也出臺在即,但新能源汽車產業的前景仍然未能明朗化,標準不統一,基礎建設不健全,電池技術受到局限的電動車以及補貼政策不明確的混合動力汽車都面臨各自發展的瓶頸。在全球並未形成一種成熟應用模式的狀況下,中國應該走出怎樣的一條有自我特色的路線圖。

目前,全球能源和環境系統面臨巨大的挑戰,汽車作為石油消耗和二氧化碳排放的大戶,需要進行革命性的變革。目前全球新能源汽車發展已經形成了共識,從長期來看,包括純電動、燃料電池技術在內的純電驅動將是新能源汽車的主要技術方向,在短期內,油電混合、插電式混合動力將是重要的過渡路線。目前來看,全球新能源汽車的發展還面臨著一些共同的難題,例如關鍵技術的突破、汽車工業的轉型、基礎設施的建設以及消費者的接受度等。

為了提升中國混合動力汽車技術發展,幫助整車廠獲得一手的技術和市場訊息,第三屆混合動力汽車技術峰會茲定於2014年6月26日至27日,在虹橋喜來登上海太平洋大飯店舉行,主題為“技術驅動混合動力汽車市場化”。

市場方面,中國汽車技術研究中心的高級工程師張銅柱將在此次會議上對電動汽車分標委工作及標準最新制修訂情況做相關發言,介紹工作組成立背景、工作組籌備情況、成員構成、工作內容及工作計畫等。中國化學與物理電源行業協會副秘書長劉彥龍將會就新能源汽車用動力電池市場需求發表演講,深度分析目前國內外鋰電池的發展處於一個什麼狀態,決定鋰電池未來應用之路的關鍵是什麼。中國機電產品進出口商會汽車分會秘書長孟凡一將會對中國汽車進出口情況進行回顧及展望,並分析在全球經濟活動較弱以及國際貿易保護主義抬頭的態勢下,2014年國際汽車市場的總體形勢和客觀上嚴重影響我國汽車出口行業的諸多不確定因素。

技術方面,精進電動創始人兼CTO蔡蔚將會對汽車電動化的動力總成與動力總成的電機系統做相關介紹,講述他觀點中混合動力汽車長期存在的基礎,動力總成的拓撲結構,混合動力變速箱的分析與比較,以及動力總成對電機系統要求與電機系同的開發及產業化。上海電驅動股份有限公司技術中心主任徐延東將結合領先的Demo project解析混合動力電機控制器集成裝置及其技術解決方案。其他技術題目還包括底盤,控制器軟硬體,逆變器,插電式混合動力,增程式混合動力汽車以及超級電容等領域的領先技術。

歷屆混合動力汽車技術峰會得到了發改委能源研究所、中國汽車工業協會專家委員會、上海汽車工程學會、中國汽車技術研究中心、中國電源產業創新聯盟、上海交通大學汽車工程研究院、汽車安全與節能國家重點實驗室、中國北方車輛研究所動力電池實驗室等組織的大力支持。

更多詳情請聯繫第三屆混合動力汽車技術峰會組委會
朱小姐電話:+86 21 61808505*212
郵箱:

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

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

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

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

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

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

※回頭車貨運收費標準

未來3到4年 Tesla規劃在中國生產電動汽車

特斯拉(Tesla)執行長 Elon Musk 昨(21) 日在華盛頓 Geekpark 大會上表示,公司正準備交付首批S型號的電動車給中國的客戶。Tesla 也正在中國佈建“龐大”的充電站網路,包括在北京及上海的超級充電站。Musk預期,未來 3 ~4 年內,Tesla 公司將開始在中國生產電動汽車。

在中國本土生產可避免繳付中國25%的入口關稅,因此可讓公司降低電動車售價。Tesla 公司預測,最快在明年,其在中國市場的銷售量將追平在美國的銷量。

配備85千瓦時電池的S型號電動車,在中國的售價為73.4萬元人民幣(約11.8萬美元),遠高於在美國未計聯邦稅務寬減前的售價約為7.1萬美元,因為加入了運費、增值稅及入口稅。

該公司自去年8月開始接受中國客戶的訂購,並在去年底於北京一個商場開設了一個800平方米的銷售點,展示其電動車。

中國商務部:今年是電動汽車消費元年

中國政府竭盡所能想讓人們購買使用電動汽車,以改善中國的空氣污染問題,而 Musk 相信,Tesla 能幫助中國政府達成這一目標。

中國商務部研究院消費經濟研究部主任趙萍近日在《2014年消費市場發展報告》新聞發布會上表示,今年將是電動汽車消費元年。政策、產品、設施「三位一體」協同推進,意味著今年將迎來中國汽車電子市場的蓬勃發展。

趙萍指出,今年限購或將席捲更多城市,使汽車消費在一二線主要城市遭遇到行政力量預製的「天花板」。由於空氣污染等環境壓力,中國汽車市場的產銷趨勢將存在較大的不確定性,自主品牌也將遭受到更大的挑戰。佔社會消費品零售總額比重高達1/4的汽車消費增速放緩,將會降低總消費增長對汽車的過度依賴。

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

【其他文章推薦】

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

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

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

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

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

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

第五屆中國國際新能源汽車及配套設施展覽會

日期:2014年11月20 – 22日
地點:中國國際展覽中心(三元橋)

NEVIP2014概況

開館時間:週四—週六
展會主題:匯新興、享低碳生活
展會規模:22000 m2(1、2、3、4、5館)
汽車(天然氣汽車)展區14000m2+ 配套設施展區3000m2+ 電機及零部件展區3000m2+ 電池展區2000m2;參展資格:註冊資金需在500萬人民幣以上。
展會活動:中國國際新能源汽車產業促進推廣周+20餘場專題活動
同期舉辦:第六屆中國國際汽車製造業博覽會
企業數量:200家以上、國際企業(含港、澳、台):30%以上
觀眾數量:超過8000名與會者、超過70%與會者來自中國以及亞太地區
全球彙聚:中國、奧地利、比利時、加拿大、捷克共和國、丹麥、芬蘭、法國、德國、希臘、香港特別行政區、以色列、義大利、日本、韓國、荷蘭、紐西蘭、俄羅斯、新加坡、西班牙瑞典、瑞士、台灣地區、英國等31個國家及地區以上企業構成。
主辦單位:中國國際貿易促進委員會、中國汽車技術研究中心、中國電池工業協會
支援單位:國家發展和改革委員會、國家科技部、 國家財政部、國家工信部、國家能源局、國務院發展研究中心
協辦單位:中國汽車工業協會、中國汽車工程學會、世界電動車協會、亞洲電池協會、中國城市發展研究會、中國汽車工程學會電動車分會、清華大學汽車研究所、加中貿易理事會、德國工商總會
合作單位:中國汽車工業工程公司、機械工業部第四設計研究院、機械工業部第九設計研究院、東風汽車設計研究院、中國汽車工程研究院、北京汽車研究院 
承辦單位:中國國際貿易促進委員會經濟資訊部、中國國際經濟技術合作諮詢公司、東都國際展覽(北京)有限公司、中國汽車技術研究中心汽車技術情報研究所

NEVIP行業背景

隨著國際不可再生資源的日益匱乏,在能源與環保的壓力下,新能源汽車無疑將成為未來汽車的發展方向。根據出臺的《汽車產業調整和振興規劃》提出的發展目標,今後三年內我國要形成50萬輛純電動、充電式混合動力和普通型混合動力等新能源汽車產能,新能源汽車銷量占乘用車銷售總量的5%左右,到2030年,電動汽車保有量占汽車保有量50%以上,年生產銷售電動汽車1000萬—1950萬輛。而要實現這一目標,政府的扶持將會是電動汽車產業在現階段得以穩步發展的最有力的驅動。

NEVIP展會介紹

中國國際新能源汽車及配套設施展覽會(簡稱 nevip),創辦於2010年,由中國國際貿易促進委員牽頭舉辦,至今已成功舉辦4屆,自2014年起,得到了中國汽車技術研究中心、中國電池工業協會的加盟合作,與中國貿促會共同主辦,之後被定位於中國新能源汽車領域的國家級、國際性展覽盛會。 

nevip舉辦以來共吸引了來自30多國家和地區的500家展商,世界500強企業9家,專業觀眾累計超過40,000人次,展會面積達到50,000平米,目前已於17個國家大使館、商協會建立長期合作關係。 

nevip歷屆國內外著名參展企業有北汽、一汽、廣汽、長安、通用、日產、恒通、比亞迪、陸地方舟、大連森穀、寶雅、嘉遠、京儀敬業、永泰、貝迪、南方軸承、銀巢等整車及關鍵部件企業和ABB、西門子、施耐德、艾默生、Better Place、韓國KODI-S、德國拜耳、魏德米勒、普天、奧特迅、科陸、廣州南方電力、魯能、優科利爾、電巴、力神、突破電氣、嘉兆科技、艾普斯、凱翔、匯千、旗翔、凱源新能、宇能、亨通、上海永乾等基礎設施企業。

nevip觀眾主要來自行業:汽車公司、電力公司、石油公司、能源公司、公交公司、計程車公司、汽車諮詢公司、電力專案承包和管理公司及投資商、貿易商、代理機構、分銷商、施工單位、政府機構、行業協會、規劃設計單位、高等院校、 研發基地、技術與工程人員等。

展會有新華社、中央電視臺、中國日報、人民日報、光明日報、中國經營報、中國汽車報、中國能源報、汽車要聞、美國湯森路透、美國《The Truth About Cars》、財富雜誌、《美國汽車新聞•中國》、德國《auto motor undsport》、巴西《Brasil Economico》、英國《AutoCar》、《China car times》、AI《汽車製造業》、第一財經日報、華爾街日報及新華網、新浪、搜狐、人民網等國內外上百家媒體報導。

中國國際新能源汽車及配套設施展覽會(nevip 2014),將於2014年11月20日-22日在北京•中國國際展覽中心(三元橋)舉辦,歡迎您屆時參觀參展!

NEVIP2014展示內容 

  • 新能源汽車展區
    新能源汽車:混合動力、純電動(汽車、客車、公車、校車等),低排放、節能型汽車、電動代步車、電動特種車(環衛車、電力車、郵政車、小型客貨車、高爾夫車、房車、叉車、搬運車、牽引車、旅遊觀光車、醫療車、警用車等),氫能燃料電池汽車等; 
  • 零部件展區 
    零部件:電池、電機、電控:動力電池、儲能電池、電池管理系統BMS、鋰電池、燃料電池、超級電容器,無刷直流電機和永磁同步電機、開關磁阻電機,電驅動系統、整車匯流排與控制系統、動力總成等;低排放節能型發動機、混合動力發動機,電力電容器、電動助力轉向、電動空調、飛輪、逆變器、輪轂輪胎、儀錶儀盤、車燈、線束、車載電子、檢測修復設備、監控、防護儀器、內外裝飾及座椅等;
  • 配套基礎設施建設展區
    配套基礎設施建設:電動汽車充換電新模式、新技術、新產品;無線充電方案;充換電站智慧型網路專案規劃及成果展示;充電站配電設備、直接充換電設備、管理輔助設備、能源管理系統;換電機器人、機械臂、換電搬運設備、電池倉儲充電架;停車場充電設施、智慧監控、相關技術、連接器、線纜等; 
  • 電池技術展區
    電池及技術裝備:鋰離子電池、聚合物鋰離子電池、燃料電池、釩電池、超級電容器、鈉硫電池、鉛酸蓄電池;各系列新型動力、儲能電池;新型電池生產設備、測試儀器、充電器;新型電池材料及零配件;電池環保設備、回收處理技術等; 

NEVIP 2014怎麼收費

標準展位:外資企業:RMB 22000/9平方米  內資企業:RMB 16800/9平方米
光地展位:外資企業:RMB 2200/每平方米  內資企業:RMB1600/每平方米
展位搭建說明:光地起租面積為36平方米,展商可自行選擇展館內以規劃好相應面積的展位,並自行雇傭搭建商進行展位的設計與搭建,或選擇標準展位搭建。標準展位包含楣板、牆板、地毯 5A/220V
電源插座展位元照明,展位元日常清潔基本傢俱配置。(注:雙開口展位另加收10%展位費)

NEVIP 2014技術交流會

展會期間,組委會將協助參展企業在展館會議室舉辦技術交流講座,內容由企業自定,每場聽眾60-80人,由企業自行邀請,組委會協助組織,並於2014年10月1日前將講座題目主要內容主講人姓名提交組委會。講座場次有限,報滿為止,每場講座60分鐘,費用¥8,000元/場。

怎樣在NEVIP 2014中國最具影響力的新能源汽車展會上凸顯您的品牌?

我們提供的一攬子贊助計畫將能最大程度滿足您市場宣傳的需要,助推您的企業:

  • 在會展宣傳資料中充分介紹
  • 在全新的NEVIP 2014網站上作線上展示
  • 觀眾、參展商胸卡、掛帶、手提袋贊助
  • 論壇相關贊助
  • 現場拱門、看板、旗杆廣告贊助

詳情請登錄官方網址 或聯繫我們:
地址:中國北京市東城區和平里東土城路甲14號8層  郵編:100013
電  話:+86 010-52338120
傳  真:+86 010 -62500724
E-mail:

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

【其他文章推薦】

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

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

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

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

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

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

雷諾計畫2016年啟動在華生産 純電動汽車也在考慮之列

據日經新聞今(23)日報導,法國車企雷諾(Renault)將從2016年開始啟動在華生産,並與組成聯盟的日産汽車(Nissan)在採購和生産等廣泛領域展開合作,通過共享日産的採購網等舉措來削減成本,以提高價格競爭力。值得注意的是,雷諾還將考慮在中國生産純電動汽車(EV)。

在正在舉行的北京國際車展上,雷諾亞太區董事長吉爾斯•諾曼德(Gilles Normand)表示,「(在中國)起步較晚的雷諾要想脫穎而出,如何推進本地化生産非常重要」。

雷諾將積極利用日産的採購網等,將零部件的本地採購率提高至85%左右。德國福斯(VW)和美國通用汽車(GM)等主要企業已經進駐中國,而本地採購率被認為達到80~90%。

雷諾去年12月從中國政府獲得了工廠建設許可,距離其計劃發佈已有9年。諾曼德表示,亞太地區汽車銷量佔世界的45%,而雷諾全球份額中僅有約10%來自亞太,「希望提高存在感」。

雷諾在中國已經與東風汽車建立了合資公司。工廠位於湖北省武漢市,將於2016年開始生産多功能運動車(SUV)等,年産能在15萬輛左右。該公司首席執行官(CEO)卡洛斯•戈恩表示,將來希望擴大至年産60~70萬輛。

中國目前面臨著嚴重的大氣污染問題。諾曼德表示,「在中國無法避開環境問題」,針對純電動車的生産,「公司內部正在進行各方面討論」,承認正在考慮純電動車的本地化生産。

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

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

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

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

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

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

※回頭車貨運收費標準

java併發之volatile關鍵字

Java面試中經常會涉及關於volatile的問題。本文梳理下volatile關鍵知識點。

volatile字意為“易失性”,在Java中用做修飾對象變量。它不是Java特有,在C,C++,C#等編程語言也存在,只是在其它編程語言中使用有所差異,但總體語義一致。比如使用volatile 能阻止編譯器對變量的讀寫優化。簡單說,如果一個變量被修飾為volatile,相當於告訴系統說我容易變化,編譯器你不要隨便優化(重排序,緩存)我。

Happens-before

規範上,Java內存模型遵行happens-before

volatile變量在多線程中,寫線程和讀線程具有happens-before關係。也就是寫值的線程要在讀取線程之前,並且讀線程能完全看見寫線程的相關變量。

happens-before:如果兩個有兩個動作AB,A發生在B之前,那麼A的順序應該在B前面並且A的操作對B完全可見。

happens-before 具有傳遞性,如果A發生在B之前,而B發生在C之前,那麼A發生在C之前。

如何保證可見性

多線程環境下counter變量的更新過程。線程1先從主存拷貝副本到CPU緩存,然後CPU執行counter=7,修改完后寫入CPU緩存,等待時機同步到主存。在線程1同步主存前,線程2讀到counter值依然為0。此時已經發生內存一致性錯誤(對於相同的共享數據,多線程讀到視圖不一致)。因為線程2看不見線程1操作結果,也將這個問題稱為可見性問題

public class SharedObject {
    public int counter = 0;
}

因為多了緩存優化導致,導致可見性問題。所以volatile通過消除緩存(描述可能不太準確)來避免。例如當使用volatile修飾變量后,操作該變量讀寫直接與主存交互,跳過緩存層,保證其它讀線程每次獲取的都是最新值。

    public volatile int counter = 0;

volatile 不單隻消除修飾的變量的緩存。事實上與之相關的變量在讀寫時也會消除緩存,如同使用了volatile一樣。

如下 years,months,days 三個變量中只有days是volatile,但是對years,months讀寫操作也和days時也會跳過緩存,其它線程每次讀到的都是最新值。

public class MyClass {
    private int years;
    private int months
    private volatile int days;
    public int totalDays() {
        int total = this.days;
        total += months * 30;
        total += years * 365;
        return total;
    }
    public void update(int years, int months, int days){
        this.years  = years;
        this.months = months;
        this.days   = days;
    }
}

這是為什麼?我們分析一下。

一個寫線程調用 update,讀線程調用totalDays。單線程中,對於update方法,wa與wb存在happens-before關係, wawb 之前執行並對wb可見。

多線程中rc與wb存在happens-before關係,wbrc之前執行並對rc可見。根據 happens-before傳遞性,wa需要在rc前先執行並對rc可見。

因為wb是volatile變量,所以rc獲取的years,months也是最新值。

我們知道出於性能原因,JVM和CPU會對程序中的指令進行重新排序。如果update方法裏面wawb順序被重排,那它們的happens-before關係將不在成立。

為了避免這個問題,volatile對重排序做了保證 對於發生在volatile變量操作前的其他變量的操作不能重新排序

由此我們得到volatile通過消除緩存防止重排保證線程的可見性。

volatile保證線程安全?

討論線程安全,大家都會提及原子性順序性可見性。volatile側重於保證可見性,也就是當寫的線程更新后,讀線程總能獲得最新值。在只有一個線程寫,多個線程讀的場景下,volatile能滿足線程安全。可如果多個線程同時寫入volatile變量時,則需要引入同步語義才能保證線程安全。

模擬10個線程同時寫入volatile變量,一個線程讀counter,執行完后正確結果應該是counter=10。

    public static class WriterTask implements Runnable {
        private final ShareObject share;
        private final CountDownLatch countDownLatch;
        public WriterTask(ShareObject share, CountDownLatch countDownLatch) {
            this.share = share;
            this.countDownLatch = countDownLatch;
        }
        @Override
        public void run() {
            countDownLatch.countDown();
            share.increase();
        }
    }
    
    public class ShareObject {
        private volatile int counter;
        public void increase() {
            this.counter++;
        }
    }

執行結果出現counter=5或6 錯誤結果。

通過 synchronized,Lock或AtomicInteger 原子變量保證了結果的正確。

完整demo https://gist.github.com/onlythinking/ba7ca7aa5faf00a58f4cedae474fa6f6

volatile性能

volatile變量帶來可見性的保證,訪問volatile變量還防止了指令重排序。不過這一切是以犧牲優化(消除緩存,直接操作主存開銷增加)為代價,所以不應該濫用volatile,僅在確實需要增強變量可見性的時候使用。

總結

本文記錄了volatile變量通過消除緩存,防止指令重排序來保證線程可見性,並且在多線程寫入的變量的場景下,不保證線程安全。

歡迎大家留言交流,一起學習分享!!!

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

【其他文章推薦】

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

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

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

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

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

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

拿來即用:用C+JS結構來處理JSON數據

【面對的問題】

        在物聯網產品的開發過程中,對JSON格式的數據處理是一個強需求,例如亞馬遜的 AWS IOT平台,設備與後台之間的通訊數據都是JSON格式,先瞄一眼大概的樣子:

     這是一個真實產品的通訊數據,設備端的代碼C代碼中利用cJSON這個開源工具來完成JSON字符的解析和組裝工作。代碼我這裏就不貼了,解析函數很長,要滾動好多次鼠標滑輪。而且一不注意釋放資源就會發生內存泄漏!

    那麼,是否有更好的方式來解決這個問題呢?

    答案就是這篇文章介紹的duktape引擎!

【Duktape簡介】

    這裏只是簡單介紹下duktape,詳細的介紹大家自己去google。

    Duktape 是一個嵌入式 Javascript引擎,專註於可移植性和空間佔用。

    易於集成到C/C++項目中,使用API實現C代碼與JS代碼的雙向調用。

 

【代碼說明】

1.文件說明

 

 

    duktape.c:引擎主要C文件。

    duktape.h:引擎頭文件。

    main.c      :  main函數所在文件。

   main.js      :Javascript文件,處理業務邏輯的代碼就放在這裏。

    Makefile   :  編譯腳本。

    miniz.c     :有時候為了js代碼的保密,不能把js源碼放到最終產品中,需要壓縮和混淆;加載的時候再進行解壓。

2.核心步驟 

 

    當C代碼中需要對JSON格式的字符串進行處理時,把JSON數據通過棧結構傳給JS程序,在JS程序中處理數據之後,把處理結果再返回給C程序中。

    在JS程序中,如果有些操作無法處理(例如:發送數據給串口),那麼就調用C程序中的函數來處理。

3.代碼說明

 

 

【測試環境】

1. x86系統

    我是在  Ubuntu16.04 下測試的,使用系統自帶 gcc 編譯器。

2.嵌入式系統

    只需要把編譯器換成對應的交叉編譯器即可。

 

【END】

1.這是原創文章,請尊重版權。如需轉載,請保留全部內容並註明來源。如果方便的話,請聯繫我確認。

2.文章中如有錯誤,或者希望交流、探討相關內容,非常歡迎聯繫我。

3.郵箱:sewain@126.com

4.公眾號:IOT物聯網小鎮

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

【其他文章推薦】

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

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

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

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

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

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