三菱插電式混動新技術 可為家庭供電

日前,日本三菱汽車公司宣佈,其歐藍德插電式混合動力汽車(PHEV)將配置V2H電動汽車家庭供電系統,其電池儲存的電量可以支援家庭供電的不時之需。此前V2H供電系統僅用於類似i-MIEV之類的純電動汽車。據悉,歐藍德PHEV搭載2.0升汽油發動機與一台電動馬達,可以以60英里每小時的速度行駛30英里,總續航里程可達540英里。

三菱的V2H系統在自然災害或停電的時候,可以作為100伏特(日本規格)的家用供電電源使用,運用1500瓦的交流電源,滿足家用需求。僅電池電量可以滿足普通家庭一天的用電需求。如果加滿汽油,其總電量或將滿足一個普通家庭將近10天的用電需求。

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

【其他文章推薦】

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

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

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

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

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

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

智慧電動機車與電池交換站體系並進,Gogoro 打造「平民特斯拉」

  台灣新創企業 Gogoro 挾著創辦人陸學森、主要投資人尹衍樑,以及 1.5 億美元募資總額,吸引了產業界的注意。Gogoro 揭櫫智慧城市與智慧能源的大方向,但主要專利卻集中在電動機車相關領域,電動機車與智慧城市的連結乍看似乎有些牽強,使得產業界相當好奇 Gogoro 為何研發機車卻言必稱智慧城市?   至 CES 2015,謎底揭曉,Gogoro 一方面展出設計與功能上均讓人驚豔的智慧電動機車,但更重要的戰略性意義,則在於搭配機車的電池交換站體系之上,電池交換站體系不僅作為電動機車的後勤系統,更可望藉由機車位入口,打進未來智慧城市基礎建設的重要領域。   Gogoro 先前對其產品三緘其口,頗有蘋果飢餓行銷策略之風範,也成功的引起媒體關注與好奇,CES 2015 上正式發表產品後,國內外多家科技媒體均第一時間報導,一時成為產業新聞熱門焦點,Gogoro 此次產品發表,較引人注目的主體是智慧電動機車,但實際上,Gogoro 可說是同時發表兩種產品,電動機車只是其一,電動機車的電池交換站則可說是另一個關鍵產品,兩者的戰略性一樣重要。  
 

   
革新電動車充電   Gogoro 電池交換站「GoStation」,系統設計風格相當簡潔,大小約如同一般的 ATM 機台,全白機身微微傾斜,上有 8 個容納電池的槽孔,頂端為智慧面板,旁邊可以單體 8 個槽孔為單位擴充,以利在熱門地段,能提供更多交換用電池,電池上有綠色提把設計,點綴於白色整體外觀之中,可說兼具時尚與實用的風格,這樣的設計可說較為偏向消費性電子產品風格,而非傳統的汽機車設計風格。  
 

    Gogoro 電動機車使用的電池與特斯拉(Tesla)Model S 電動車相同,為 Panasonic 18650 鋰電池,這呼應了先前 Gogoro 與 Panasonic 合作的消息,電池外觀大小有如鞋盒大小,重約 9 公斤,為一般人雙手可提起的重量,內建 NFC 等 25 種感測器,Gogoro 主打電池交換概念,當機車騎到電池沒電時,並不用慢慢等著充電,而是騎到 GoStation,將機車電池取出,放入空槽孔中,6 秒鐘後,會由其他槽孔跳出充滿電力的電池,拿取後直接上路。  
 

    (Source:)   過去電動機車為人詬病之處就是充電慢、行駛距離不足,但若能在城市中遍布 GoStation,則可解決此二個問題,因為隨時交換電池只需 6 秒鐘,只要在 GoStation 普及的範圍內,可說實際上不用擔心行駛距離問題,而由於機車在亞洲大多為市區交通,如通勤、快遞送貨等使用,只要能在市區內普遍設立 GoStation,就可大為提升電動機車的實用性,解除過去電動機車銷售上最大的障礙。而 GoStation 設置成本也並不高,每座約為 1 萬美元。    
邁入智慧城市   另一方面,GoStation 與交通有關、存有大量電池,並與電力網路相連結的特性,一旦普遍設立,將成為進軍智慧城市的踏腳石。   智慧城市的重要領域包括交通、能源、水資源、保健、廢棄物處理等領域,GoStation 的交換資料,能夠讓城市政府交通相關單位掌握機車的使用熱點,進而做出更好的市政規劃,而 GoStation 內部存放大量充電中的電池,在歐美,類似的設施,如特斯拉的電池交換站,都設想到可以同時作為智慧電網的一環,如當市區內某區域能源需求突增,可由附近的站點暫停充電,甚至從電池饋電,來因應變化,而不至於跳電,而 GoStation 也可能在夜間電力離峰時間充電,降低白天尖峰的用電壓力。  
 

 

  除此之外,《富比世》(Forbes)報導,陸學森表示,當大都會人口成長,尖峰用電需求不斷上升,想像 Gogoro 智慧電動機車與 GoStation 能收集車主何時、在何處交通的資料,將有助於城市的智慧電網了解與預測用電需求,因而能提早因應。如此一來,城市電力網路將不必為了尖峰流量而大幅擴建或更新輸配系統,可節省大量預算。   陸學森接受科技媒體《SlashGear》採訪時也指出,在都會化的趨勢下,世界最終將有 6 成人口居住在大城市之中,而目前的都市居民有 12% 的收入,都花費在能源相關的開銷上,其中有一半是汽油,若能節約這一大部分的開支,不僅對人類有幫助,也是廣大的市場,更有助於降低全球碳排放。   由此可知,GoStation 不僅只是推動電動機車的推手,其最終願景為協助城市以及電力網路智慧化。此外,GoStation 的智慧面板,若與智慧城市的資訊系統結合,不僅可提供氣候等資訊,甚至可能作為智慧服務功能。    
以亞洲都市為起點   智慧城市目前為全球主流趨勢,在台灣也成為多個市政府的重要施政目標,如台北市長柯文哲即期望建立智慧政府、智慧城市與智慧市民,也因此造成資訊局長一度難產,最初柯文哲市長期待新任資訊局長能夠成為台北智慧城市的資訊長,然而,智慧城市牽涉專業領域過廣,並非單一一人所能勝任,所需要的人才規格,也非市政府的薪資標準所能負擔,於是有了「香蕉的待遇只能僱到猴子」之嘆,最後折衷辦法為市府成立智慧城市委員會,由各領域專業的委員協助制定策略,資訊局負責執行。   由台北市資訊局長一度難產,可看出智慧城市千頭萬緒,對每個城市來說都是相當大的挑戰,若城市內以機車需求,由民間力量普設 GoStation,將可成為智慧城市推動的一大助力。  
 
 
 
 
 
  (Source:)
 
 
 
 
    Gogoro 於 CES 2015 中透露,2015 年將於一個亞洲城市開始進行 GoStation 計畫,但尚未明言將為哪個城市,可說繼承一貫的飢餓行銷策略,推測 Gogoro 可能於下一個消費性電子展會或是汽機車重要展會發表其首要主打城市。而《富比世》則報導,Gogoro 將選擇超過 1,000 萬人口的大都會,作為第一個起步的城市。    
消費性電子產品設計思維   然而,如此廣大的願景,仍然要 Gogoro 的智慧電動機車本身成功,才有可能成真。在機車本身,Gogoro 的表現可說也讓人相當驚艷,其機車的設計可說跳脫了傳統電動機車的既定印象,與 GoStation 的設計風格一樣,偏向消費性電子產品風格,而非傳統的汽機車設計風格,多家歐美科技媒體認為,這樣的特立獨行風格,來自於陸學森為設計消費性電子產品出身,過去從未設計過機車。但如此一來,反而帶來了新鮮感。科技媒體《The Verge》譽為「你所買得起最酷的機車」。   機車車身與零組件也與過去電動機車不同,並不利用現有機車零組件,全數零組件含傳動系統、懸吊系統、前後輪碟煞、LED 車燈、底盤與所有的電子系統都是由 Gogoro 原創設計打造。  

  機車的車身可說以輕便、小巧、簡潔的都市風格為主,在性能上,可由停車狀態在 4.2 秒鐘內加速到 30 英里(48.3 公里),最高速度約達 60 英里(96.6 公里),內建雙電池槽,兩個電池都充滿電的狀態下,行駛距離達 100 公里,以市區行駛來說這樣的性能與續航力已經相當足夠,CES 2015 上 Gogoro 更展示機車壓車快速轉彎與燒胎,宣告其智慧電動機車絕非過去一般人印象中「無力」的舊式電動機車。  

    (Source:)   目前全球機車市場最主流的機車為 125cc 車種,約佔 8 成市場,Gogoro 也以 125cc 為「假想敵」,其傳動系統動力在鋁輕量化車身上的表現,比 125cc 對手快上 16%。而 Gogoro 機車也加強防水性,而比內燃機機車防水性更佳,當亞熱帶地區下大雨積水,傳統機車擔心排氣管浸水拋錨,Gogoro 機車卻沒有這樣的顧慮。   Gogoro 強調其產品為智慧電動機車(Smartscooter),非僅是一般電動機車,身為智慧產品,除了頭燈會在天色暗時自動開啟這種智慧功能以外,與智慧型手機的連結更是重點。  
 

     
電動車與智慧手機的結合   陸學森曾於宏達電任職的經歷,為 Gogoro 帶來了更完整的與智慧型手機整合的概念,除了會在智慧型手機 app上顯示基本的行駛路線、電池電力等資料,可以用 app 開行李箱,以及可透過手機 app 個人化設定諸如機車面板顏色、鎖車燈號顏色等等以外,車身上有 30 種感測器,含電池上的 25 種感測器,隨時檢查車身與電池狀況,每 10 分鐘回報,若是車子有了任何問題,就會即時在手機上通知車主,若是車主沒有看手機,則會在下次交換電池時,在 GoStation 的智慧螢幕上通知車主,確保車主的安全。  
 

  (Source:)   Gogoro 智慧電動機車還有一個對手機重度使用者最貼心的功能:在行李箱裡頭就有 USB 埠可以幫手機充電。   車身上的感測器更結合了演算法,當車主買回 Gogoro 智慧電動機車,開始騎乘後,感測器收集的資料,會讓智慧電動機車不斷學習車主的行駛模式,一邊調整能源管理模式,最後,機車的能源管理,將能完全配合車主的日常需求,達到最省電的效果。    
用手機模式走一條不一樣的路   甚至連電動機車的商業模式也可能模仿手機。手機往往與電信業者結合,以便宜價格推出,但是收取服務費用,《富比世》報導,Gogoro 表示,電動車最大的成本來源就是電池,電池本身佔 4 成成本,若把電池與充電迴路除去,機車車身成本就會大為降低,如此一來,Gogoro 將可以追求手機商業模式,也就是說,機車本身以相當低廉的價格販售,主要從電池充電服務收費來得到營收。   如此一來,更能避免電動機車過去不能普及的另一個主要障礙:價格過高。Gogoro 雖然尚未宣布其價格,但預期若在手機商業模式下的補貼後,將比想像中低,由於其設計風格,與可能的低價,相對於特斯拉的高價,科技媒體《SlashGear》將 Gogoro 譽為「平民特斯拉」(Tesla for the everyone)。   大部分國內媒體,將 Gogoro 視為一般電動機車報導,但從許多外媒報導可看出,歐美媒體以及產業界已經看出 Gogoro 的野心與潛力,全球目前估計約有 2 億輛機車,而機車產業已經幾乎 20 年沒有重大創新,的確是進行破壞式創新的適當領域,而 Gogoro 結合智慧城市概念的遠大願景,將從哪個城市開始落實,發展是否順利,不僅是電動機車界動見觀瞻,也將成為智慧能源與智慧城市領域的注意焦點。   (首圖來源:)      本文全文授權轉載自《科技新報》─〈〉

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

【其他文章推薦】

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

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

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

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

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

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

不畏油價跌 美電動車 12 月創最高單月銷售紀錄

儘管美國汽油零售價格跟隨國際原油同步下挫到每加侖 2 美元的低水準,2014 年美國電動車銷售強勁增加 23%,12 月並創下單月最佳紀錄;顯見電動車已蔚為一股持久的趨勢,不受油價影響。   根據電動車專業網站 InsideEVs 統計,2014 年 12 月美國賣出 12,874 輛電動車,為統計以來最高單月銷售紀錄。至於 2014 年全年,電動車銷售勁揚 23%,達到 119,710 輛。   就個別品牌來看,全美電動車銷售冠軍是日產 Leaf,2014 年總計售出 30,200 輛,遙遙領先亞軍通用汽車雪佛蘭 Volt 的 18,805 輛。起價介於 3.5 萬到 4 萬美元的特斯拉 Model S 排名第 3,全年銷量為 17,300 輛,市占不及 15%。不過,在 12 月 Model S 首度擊敗售價較低的日產 Leaf(約 3 萬美元)。   2014 年美國電動車市場唯一新上市車款是 BMW,分別在 5 月及 8 月推出 i3 與 i8 ,加總的銷量僅 6,647 輛。展望 2015 年,將有數款新型電動車上路,尤其是在休旅車和越野車市場。而特斯拉的 Model X 則預計 2015 年下半年登場,是今年最受期待的電動車。

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

2014中國高新汽車國際峰會圓滿閉幕,廣受業界好評

第三屆中國高新汽車國際峰會已於2014年12月9日在上海浦東嘉里大酒店完美落幕。本屆峰會由法蘭克福展覽(上海)有限公司和中國國家發展和改革委員會國際合作中心聯合主辦,共邀請到包括政府官員、行業協會代表和知名整車企業在內的14位重量級演講嘉賓出席,共同探討未來汽車產業革新的重要創新技術、市場趨勢和發展戰略方針。為期一整天的峰會由一個主論壇和兩個分論壇組成,共迎來386位與會代表,專業領域橫跨汽車全產業鏈。

法蘭克福展覽(上海)有限公司總經理李慶新先生表示:“由於整體定位和結構調整,峰會由往年的兩天精簡為一天時間,但是本屆峰會的參會代表人數仍再創新高。由此印證了中國高新汽車國際峰會作為汽車行業的年度盛會,為業內重要政策決策者、企業高管和投資者建立了交流契機和合作機會。與會代表對我們表達了支持和鼓勵,我們非常高興可以收到如此正面的肯定。我們相信中國高新汽車國際峰會將會成為討論汽車行業發展趨勢、最新技術以及業界精英交流討論的高端平台。”

參會代表和演講嘉賓滿意會議定位,共同關注汽車行業未來合作契機

本屆峰會以「關注未來汽車發展趨勢,聚焦零部件產業升級」為主題,共邀請到多位政府領導蒞臨並致辭。其中包括:

  • 鄭惠強先生,全國政協常委、上海市人大副主任
  • 李鋼先生,國家發改委產業協調司處長
  • 徐秉金先生,中歐協會會長、商務部原副部長

峰會由上海市新能源汽車推進辦公室主任劉建華先生擔任首位演講嘉賓,就「發起『新能源汽車走進社區』倡議」議題發表真知灼見。除此之外,強大演講嘉賓陣容包括來自寶馬、特斯拉、沃爾沃、上汽和北汽等國內外知名整車企業。首次擔任演講嘉賓的上海汽車集團股份有限公司汽車工程中心車身開發總監邱國華博士此次主要圍繞上汽集團電動汽車發展戰略展開介紹,並評價道:“中國高新汽車國際峰會是一個高端的汽車行業交流平台,議題定位準確。主題覆蓋整車、能源和材料等一系熱門話題。峰會聚集了汽車行業的技術戰略研究和市場分析等高端人才,我認為這是一個非常出色的活動。”

特斯拉中國區公共政策和充電基礎設施總監高翔先生同樣也分享了他的感想,並表示:“本屆峰會邀請了很多政府政策制定者,他們的政策導向對於未來電動車的發展影響很大。我認為電動汽車產業正得到大眾越來越多的關注。我希望通過中國高新汽車國際峰會這個深入的交流平台,在政策環境和行業環境得到突破,未來能夠制定完善的行業標準,希望有更多的車企投入到電動汽車的開發中。”

上海大眾汽車有限公司信息系統部高級經理邱振捷先生擔任”用互聯網思維造車”主題的演講嘉賓,關注電動汽車行業的前瞻性概念。他認為:“去年我是峰會的參會代表,而今年我非常榮幸可以擔任演講嘉賓出席本屆峰會。中國高新汽車國際峰會是一個齊聚行業精英的平台,活動的整體規劃和安排超出我的預期。在這裏我遇到了很多零部件企業和整車廠,我非常願意和他們互相交流經驗,這給我工作帶來很多幫助。”

已經連續第二年出席的三菱綜合材料管理(上海)有限公司戰略企劃部經理徐冬榮先生對峰會在新能源汽車未來發展前景產生積極作用表示肯定,說道:“演講嘉賓介紹了最新的電動汽車技術和資訊,通過本屆峰會我瞭解到很多高新汽車的最新行業發展趨勢和扶持政策。我認為新能源汽車的未來發展前景是非常巨大的,因此發展速度和技術瓶頸將是最需要關注的問題。”

首次參會的參會代表德國ThyssenKrupp System Engineering GmbH的業務發展專員Elena Kaplun女士希望通過中國高新汽車國際峰會洞察中國汽車行業的最新潛在投資機會,她表示道:“我對中國汽車市場有了深入的認識和瞭解。我對新能源汽車和輕量化汽車技術發展的話題很感興趣,嘉賓的演講內容對市場研究和業務發展戰略規劃很有幫助。除此之外,我還有機會在這裏拓展我的人脈,更可以和卓越的業界人士有進一步的合作機會如特斯拉、BMW和上汽等,我非常高興能夠參加此次活動!”

2014 年中國高新汽車國際峰會同期舉行的 Automechanika Shanghai — 上海國際汽車零配件、維修檢測診斷設備及服務用品展覽會,是亞洲規模最大的汽車零部件、維修檢測診斷設備及汽車用品展覽會。

欲瞭解更多有關峰會詳情,敬請訪問官方網站

或發郵件至。

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

【其他文章推薦】

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

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

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

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

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

北京路燈變充電樁 望每天為一萬輛車充電

北京市首批路燈充電樁改造已經展開,位於昌平區京密北路上的八十八盞路燈,從傳統高壓鈉燈改造為LED燈,可讓十幾輛電動汽車同時充電;此外,昌平區內還設置了八個純電動汽車慢充樁,專供電動車充電,充電時間約為四、五個小時,且白天晚上皆可充電。北京市科委指出,希望今年內能達成北京五環內建成五公里半徑的快速充電網路和每天為一萬輛車充電的目標。   除北京市內,連接北京與上海全程1262公里的京滬高速公路也將開通全線快速充電系統。平均每五十公里將設一座充電站,最快三十分鐘可充電完成。同等里程電費支出為燃油車的一半,全程充電費不到人民幣400元(約合新臺幣2052元)。   目前中國大陸的國家電網已完成2.4萬個充電樁,形成「兩縱一橫」網路,規模為世界之最。但據報導,其目前已建成的四百多座充電站幾乎沒有盈利,處於全線虧損,而在深圳市營運的七座充電站,每年虧損額超過1000萬人民幣(約5132.3萬元)。

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

【其他文章推薦】

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

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

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

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

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

通用推雪佛蘭 Bolt 欲與定價相當的 Tesla Model 3 抗衡

  美國底特律汽車展於 1 月 12 日開幕,通用汽車(GM)新款電動車雪佛蘭 Bolt(Chevrolet Bolt)首度亮相,預料未來將與電動車大廠特斯拉(Tesla)激烈競爭。   雪佛蘭 Bolt 每次充電可行駛 200 英里,達到先前油電混合車款 Volt 的 4 倍之多, 電池由韓國樂金化學(LG Chem)所製造,預計於 2017 年上市,售價約為 3 萬美元,可望與同樣預定 2017 年上市,售價約 3.5 萬美元的 Model 3 車款競相抗衡。根據知情人士表示,Bolt 為掀背式(Hatchback)設計,外型傾向跨界車款。   通用汽車盼能藉雪佛蘭 Bolt,加強消費者對該品牌具備完整產品線的印象,也希望能將此車款擴及至包括中國等全球市場。     (Source:)

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

【其他文章推薦】

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

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

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

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

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

python高級-閉包-裝飾器

閉包內容:

  1. 匿名函數:能夠完成簡單的功能,傳遞這個函數的引用,只有功能

  2. 普通函數:能夠完成複雜的功能,傳遞這個函數的引用,只有功能

  3. 閉包:能夠完成較為複雜的功能,傳遞這個閉包中的函數以及數據,因此傳遞是功能+數據

  4. 對象:能夠完成最複雜的功能,傳遞很多數據+很多功能,因此傳遞的是數據+功能

———————————————————

  1. 對全局函數進行修改:在函數當中加global,在閉包中外邊中的變量加nonlocal

  2. 閉包定義:有兩個函數嵌套使用,裏面的函數可以使用外面函數所傳輸的參數,最後可傳遞的是裏面函數的結構與數據(個人理解)。

  3. 最後閉包可以在python中引申出裝飾器 ———————————————————

 1 def closure():
 2     # 在函數內部再定義一個函數,
 3     # 並且這個函數用到了外邊函數的變量,那麼將這個函數以及用到的一些變量稱之為閉包
 4     def closure_in(x):
 5         print('---------我是打不死的%s--------' %x)
 6     return closure_in
 7  8 x = closure()
 9 x('小強')
10 11 print('*'*20)
12 # -----加餐---------
13 def closure_1(a,b,c):
14     def closure_on(x):
15         print('-----%s加餐-------' %b)
16         print(a*x + c)
17     return closure_on
18 19 demo = closure_1(2,'小強',3) #傳closure_1函數
20 demo(4) #傳clsure_on函數
21 22 #注:函數不加括號,調用的是函數本身【function】;函數加括號,調用的是函數的return結果。

 

裝飾器內容:

代碼要遵守‘開放封閉’原則;對已經寫好的函數遵守封閉,對功能擴展遵守開放;

 1 # 裝飾器的作用:為了對原來的代碼上進行擴展
 2 def decoration(func):
 3     def call_func():
 4         print('-------正在裝飾 -------' )
 5         func()
 6     return call_func
 7  8 #@decoration     #--->demo_new = decoration(demo)
 9 def demo():
10    print('demo----')
11 12 demo_new = decoration(demo)
13 demo_new()

 

使用裝飾器來測試一個函數的運行時:

 1 import time
 2 def set_func(func):
 3     def call_func():
 4         start_time = time.time()
 5         func()
 6         stop_func = time.time()
 7         print(‘alltimes is %f’ %(stop_func-start_fun))
 8     return call_func
 9 @set_func
10 def test1():
11     print(‘——-test1———’)    
12 test1()
13 14 #等價於:
15 @set_func==test1 = set_func(test1)
16

 

1. 沒有參數,沒有返回值的函數進行裝飾:
 1 def set_func(func):
 2     def call_func():
 3         print(‘———test2——-’)
 4         print(‘———-test3——’)
 5         func()
 6     return call_func
 7     
 8 @set_func
 9 def test1():
10     print(‘——test1——-   ’)

 

2. 對有參數無返回值的函數進行裝飾:
 1 def set_func(func):
 2     def call_func(a):  #
 3         print(‘———test2——-’)
 4         print(‘———-test3——’)
 5         func(a) #
 6     return call_func
 7     
 8 @set_func
 9 def test1(num):
10     print(‘——test1——- %d    ’ %num)
11 12 test1(100) —->call_func(100)
13 test1(200)——>call_func(200)

 

復現裝飾器原理:

————————————————————————-

只要遇到@函數 裝飾器(這句話),在程序中就已經執行了!!
3. 不定長參數的函數裝飾:
 1 def set_func(func):
 2     def call_func(*args,**kwargs):  #
 3         print(‘———test2——-’)
 4         print(‘———-test3——’)
 5         func(*args,**kwargs) #(拆包)將元祖拆開,每個進行傳輸;
 6         #func(args,kwargs)—>不行,相當於傳遞了兩個參數:一個元祖,一個字典。
 7     return call_func
 8     
 9 @set_func
10 def test1(num,*args,**kwargs):
11     print(‘——test1——- %d    ’ %num)
12     print(‘——test1——-   ’ , args)
13     print(‘——test1——- ’ ,kwargs )
14     
15 test1(100)  
16 test1(100,200)
17 test1(100,200,300,mm=100)

注意:*args保存不定長參數,以元祖保存,**kwargs保存字典形式(mm=…)

4.對應的返回值參數進行裝飾、通用裝飾器:
 1 #通用裝飾器
 2 def set_func(func):
 3     print(“開始進行裝飾———-”)
 4     def call_func(*args,**kwargs):  #
 5         print(‘———test2——-’)
 6         print(‘———-test3——’)
 7         return func(*args,**kwargs) #(拆包)將元祖拆開,每個進行傳輸;如果沒有return ret返回none。
 8         #func(args,kwargs)—>不行,相當於傳遞了兩個參數:一個元祖,一個字典。
 9     return call_func
10     
11 @set_func
12 def test1(num,*args,**kwargs):
13     print(‘——test1——- %d    ’ %num)
14     print(‘——test1——-   ’ , args)
15     print(‘——test1——- ’ ,kwargs )
16     return ‘ok’    #—-返回給上面的func(),然後return func—ret
17     
18 ret = test1(100)
19

 

5. 多個裝飾器對同一個函數進行裝飾:
 1 def add_qx(func):
 2     print(“——開始進行裝飾權限1———-”)
 3     def call_func(*args,**kwargs):  #
 4         print(‘這是權限驗證1’)
 5         return func(*args,**kwargs)
 6     return call_func
 7     
 8  9 def add_xx(func):
10     print(“——開始進行裝飾xx功能———-”)
11     def call_func(*args,**kwargs):  #
12         print(‘這是xx權限驗證’)
13         return func(*args,**kwargs)
14     return call_func
15     
16 @add_qx
17 @add_xx
18 def test1():
19     print(‘——test1——-’) 
20 21 test1()
22

 

首先執行第一個,但是第一個裝飾器下面不是函數(裝飾器原則:下面必須是函數,否則不執行),所以第一個函數先等待,等第二個裝飾器執行后形成函數在交給第一個裝飾器;所以運行結果是:

  1. 開始進行裝飾xx的功能,

  2. 開始進行裝飾權限1,

  3. 這是權限驗證1,

  4. 這是xx權限驗證,

  5. ——-test1——-,

——————裝飾器練習—————- 輸出格式:<td><h1>haha</h1></td>

 1 def set_func_1(func):
 2     def call_func():
 3         return ‘<h1>’ + func() + ’</h1> 4     return call_func
 5     
 6  7 def set_func_2(func):
 8     def call_func():
 9         return ‘<td>’ + func() + ’</td>10     return call_func
11     
12 @set_func_1()
13 @set_func_2()
14 def get_str():
15     return ‘haha’
16     
17 print(get_str()) 

18 最後執行的效果: <h1><td>haha</td></h1>
6. 用類對函數進行裝飾(了解):
 1 class Test(object):
 2     def __init__(self,func):
 3         self.func = fun
 4         
 5     def __call__(self):
 6         print(‘這裡是裝飾器的功能。。。。’)
 7         return self.func()
 8         
 9 @Test
10 def get_str():
11     return ‘haha’
12     
13 print(get_str())

 

以上就是裝飾器與閉包的全部內容,希望有所收穫,如果有錯誤,希望指出,感謝!!

 

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

【其他文章推薦】

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

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

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

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

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

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

常見的索引模型淺析

  索引的出現是為了提高數據庫查詢的效率,就像書的目錄一樣。常見的索引模型有哈希表、有序數組、B+樹。

  • 自適應哈希索引(AHI)

  哈希表是一種常見的數據結構,即通過哈希算法計算出一個数字在表中的位置,並將数字存入該表。哈希索引就是通過哈希表來實現的,一般情況下查找時間複雜度為O(1)。InnoDB會監控對錶上各索引頁的查詢,會自動根據訪問的頻率和模式為某些熱點頁建立哈希索引,所以又叫自適應哈希索引,訪問模式一樣指查詢的條件一樣。

  比如我們維護一張身份證信息和用戶姓名的表,需要根據身份證號查詢姓名,哈希索引大概是這樣的:

  哈希索引適合只有等值查詢的場景,例如select * from T where index_col = ‘##’。哈希索引是無序的,如果需要區間查詢,那就要把所有數據掃描一遍。

  • 有序數組索引

  有序數組在等值查詢和區間查詢場景中效率都很高,同樣用上面的表舉例,索引大概是這樣的:

  要查詢某條數據或者區間的時候,使用二分法時間複雜度為O(logN)。但如果需要在中間更新數據時,那麼就要移動後面所有的數據。有序數組索引只適用於靜態存儲引擎,比如保存2019年度學校所有學生信息。

  • B+樹索引

  B+樹是為磁盤或其他直接存取輔助設備設計的一種平衡查找樹。下面是一顆高度為2的B+樹,所有記錄都在恭弘=叶 恭弘子結點上順序存放,恭弘=叶 恭弘子結點通過指針相連。

  B+樹索引就是B+樹在數據庫中的實現,由於B+索引在數據庫中具有高扇出性,在數據庫中B+樹的高度一般為2~4層。查找某一鍵值的行記錄時最多只需要2~4次IO。以InnoDB的一個整数字段索引為例,這顆B+樹大概是1200叉樹,這裏N叉樹的N取決於數據塊的大小。高度為4的時候就可以存1200的3次方個值,大概為17億。考慮到樹根的數據塊總是在內存中,一個10億行的表上一個整数字段的索引,查找一個值最多只需要訪問3次磁盤。

  在InnoDB存儲引擎中,表是根據主鍵順序存放的。根據恭弘=叶 恭弘子結點內容,B+樹索引又分為聚簇索引和輔助索引。

    • 聚簇索引:按照每張表的主鍵構造一顆B+樹,恭弘=叶 恭弘子結點的key是主鍵值, value是該行的其他字段值,聚簇索引的恭弘=叶 恭弘子結點也稱為數據頁。
    • 輔助索引:恭弘=叶 恭弘子結點的內容是主鍵的值。

我們用一個例子來說明上面的概念,創建一張表,在字段k上有索引:

create table T(
id int primary key, 
k int not null, 
name varchar(16),
index (k))engine=InnoDB;

  表中R1~R5的(ID,k)值分別為(100,1)、(200,2)、(300,3)、(500,5)和(600,6),兩顆B+樹如下,可以明顯看到這兩個顆樹的區別。

  使用普通索引查詢時,例如 select * from T where k = 2,需要先搜索k索引樹,得到ID的值為200;再到ID索引搜索一次。這個過程就叫做回表,非主鍵索引查詢需要多搜索一棵樹。

  參考資料:《MySQL實戰45講》

       《MySQL技術內幕:InnoDB存儲引擎》第二版

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

【其他文章推薦】

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

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

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

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

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

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

實時web應用方案——SignalR(.net core)

何為實時

先從理論上解釋一下兩者的區別。

大多數傳統的web應用是這樣的:客戶端發起http請求到服務端,服務端返回對應的結果。像這樣:

 

也就是說,傳統的web應用都是客戶端主動發起請求到服務端。

那麼實時web應用呢?它不需要主動發起請求,服務端可以主動推送信息到客戶端。

舉栗子的話,實時聊天工具、web遊戲等都可以算是實時應用。

什麼是SignalR

如果想做一個實時應用,最好用web socket。很早以前我也寫過web socket的實現方式,但不夠全面,這裏再補上一篇。

來說說signalR,它是一款開源的實時框架,可以使用三種方式實現通信(long polling、server sent events、web socket)。它很好的整合了底層技術,讓我們可以不用關注底層技術實現而把精力聚焦在業務實現上。一個完整的signalR包括客戶端和服務端,服務端支持net core/net framework,還支持大部分客戶端,比如瀏覽器和桌面應用。

回落機制

為了兼容不同瀏覽器(客戶端)和服務端,signalR採用了回落機制,使得它可以根據情況協商使用不同的底層傳輸方式。假如瀏覽器不支持web socket,就自動降級使用sse,再不行就long polling。當然,也可以禁用這種機制,指定其中一種。

三種通信方式

long polling(長輪詢)

長輪詢是客戶端發起請求到服務端,服務器有數據就會直接返回。如果沒有數據就保持連接並且等待,一直到有新的數據返回。如果請求保持到一段時間仍然沒有返回,這時候就會超時,然後客戶端再次發起請求。

這種方式優點就是簡單,缺點就是資源消耗太多,基本是不考慮的。

server sent events(sse)

如果使用了sse,服務器就擁有了向客戶端推送的能力,這些信息和流信息差不多,期間會保持連接。

這種方式優點還是簡單,也支持自動重連,綜合來講比long polling好用。缺點也很明顯,不支持舊的瀏覽器不說,還只能發送本文信息,而且瀏覽器對sse還有連接數量的限制(6個)。

web socket

web socket允許客戶端和服務端同時向對方發送消息(也就是雙工通信),而且不限制信息類型。雖然瀏覽器同樣有連接數量限制(可能是50個),但比sse強得多。理論上最優先使用。

進入正題

開始之前,還需要了解RPC和Hub的概念。

RPC:全程Remote Procedure Call,字面意思遠程服務調用,可以像調用本地方法一樣調用遠程服務。前端可以調用後端方法,後端也可以調用前端方法。

Hub:基於RPC,接受從客戶端發過來的消息,也同時負責把服務端的消息發送給客戶端。客戶端可以調用Hub裏面的方法,服務端可以通過Hub調用客戶端裏面的方法。

好了,概念已經理解清楚了,接下來上代碼。

在項目里新增Hub類:

using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;

namespace SignalRDemo.Server
{
    public class SignalRHub : Hub
    {
        /// <summary>
        /// 客戶連接成功時觸發
        /// </summary>
        /// <returns></returns>
        public override async Task OnConnectedAsync()
        {
            var cid = Context.ConnectionId;

            //根據id獲取指定客戶端
            var client = Clients.Client(cid);

            //向指定用戶發送消息
            await client.SendAsync("Self", cid);

            //像所有用戶發送消息
            await Clients.All.SendAsync("AddMsg", $"{cid}加入了聊天室");
        }
    }
}

為了讓外部可以訪問,我們還需要一個控制器。在控制器里聲明隨便建一個:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SignalR;
using SignalRDemo.Server;
using System.Threading.Tasks;

namespace SignalRDemo.Controllers
{
    public class HomeController : Controller
    {
        private readonly IHubContext<SignalRHub> _countHub;

        public HomeController(IHubContext<SignalRHub> countHub)
        {
            _countHub = countHub;
        }

        /// <summary>
        /// 發送信息
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task Send(string msg, string id)
        {
            await _countHub.Clients.All.SendAsync("AddMsg", $"{id}:{msg}");
        }
    }
}

再然後進入StartUp設置端點:

endpoints.MapHub<SignalRHub>("/hub");

完成以後,配置signalr客戶端:

setupConn = () => {
    conn = new signalR.HubConnectionBuilder()
        .withUrl("/hub")
        .build();

    conn.on("AddMsg", (obj) => {
        $('#msgPanel').append(`<p>${obj}</p>`);
    });

    conn.on("Finished", () => {
        conn.stop();
        $('#msgPanel').text('log out!');
    });

    conn.on("Self", (obj) => {
        $('#userId').text(obj);
    });

    conn.start()
        .catch(err => console.log(err));
}

要注意withUrl裏面的路徑就是之前設置好的端點。

運行效果:

 

 

 Hub還支持組操作,比如:

//將用戶添加到A組
await
Groups.AddToGroupAsync(Context.ConnectionId, "GroupA");
//將用戶踢出A組
await Groups.RemoveFromGroupAsync(Context.ConnectionId, "GroupA");
//向A組所有成員廣播消息
await Clients.Group("GroupA").SendAsync("AddMsg", "群組消息");

更多操作請參考官方文檔。

本文演示demo的源碼見git,地址:https://gitee.com/muchengqingxin/SignalRDemo.git

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

2020/6/11 JavaScript高級程序設計 DOM

DOM(文檔對象模型)是針對HTML和XML文檔的一個API(應用程序接口)。他描繪了一個層次化的節點樹,允許開發人員添加、移除和修改頁面的某一部分。

10.1 節點層次

DOM將任何HTML和XML文檔描繪成一個由多層節點構成的結構。

文檔節點(Document)是每個文檔的根節點。文檔節點只有一個子節點(HTML文檔中實終是<html>),我們稱之為文檔元素(每個文檔只能有一個文檔元素)。文檔元素是文檔的最外層元素,其他所有元素都包含在文檔元素中。

每一段標記都能通過樹中一個節點來表示,包括特性、文檔類型、註釋等,共有12種節點類型。這些類型都繼承自一個基類型

10.1.1 Node類型

 JavaScript中的所有節點類型都繼承自Node類型,所有的節點類型都共享相同的基本屬性和方法。

nodeType屬性:表明節點的類型(12種)

eg:Node.ELEMENT_NODE(1);  //元素節點

通過該屬性可以確定一個節點的類型,可以通過類型字面量判等,也可以通過数字值比較。

if (someNode.nodeType == Node.ELEMENT_NODE){  //在IE中無效
    alert("Node is element.");
}

if (someNode.nodeType == 1){  //適用於任何瀏覽器
    alert("Node is element.");
}

1. nodeName和nodeValue屬性

可以了解節點的具體信息。

對於元素節點,nodeName保存的始終是標籤名,nodeValue的值始終是null。

2. 節點關係

 

  • 屬性
1 childNodes屬性 保存NodeList對象(類數組,但不是數組),這個對象也有length屬性。可以通過方括號,也可以通過item()方法訪問節點。可以通過Array.prototype.slice()方法將其轉換為數組。
2 parentNode屬性 指向父節點。
3 previousSibling / nextSibling屬性 訪問同一列表中的其他屬性。即前一個和后一個同胞節點。
4 firstChild / lastChild屬性 指向childNodes列表的第一個和最後一個節點。
  • 方法
1 hasChildNodes() 檢驗是否存在子節點。存在時返回true。
2 ownerDocument() 指向整個文檔的文檔節點。方便直接到達頂端。

3. 操作節點

1 appendChild() 向childNodes列表的末尾添加一個節點。返回新的節點。由於任何一個節點不能同時出現在多個位置上,所以當傳入的節點是父節點的子節點時,這個節點會變成最後一個子節點。
2 insertBefore()

將節點插入到childNodes列表中一個特定的位置。接收兩個參數:要插入的節點和作為參照的節點。

插入節點后,被插入節點會成為參照節點的前一個同胞節點,同時被方法返回。省略參照節點時與appendChild()執行相同的操作。

3 replaceChild() 替換節點(複製所有的關係指針)。接收兩個參數:要插入的節點和要替換的節點。被替換的節點將從文檔樹中移除,但仍然在文檔中,只是沒有了自己的位置(指針)
4 removeChild() 移除節點。返回被移除的節點。同樣被移除的節點仍然在文檔中。

PS1:使用這幾個方法必須取得父節點(使用parentNode屬性)。

PS2:不是所有類型的節點都有子節點。在不支持子節點的節點上調用這些方法,會拋出錯誤。

4. 其他方法

1 cloneNode()

創建調用這個方法的節點的一個完全相同的副本。接受一個布爾值參數,表示是否執行深複製(true則執行深複製)。

  • 深複製:複製節點以及整個子節點樹
  • 淺複製:只複製節點本身

複製后返回的節點歸文檔所有,沒有為他指定父節點。要通過其他的方法把他加入到文檔中。

IE>9及其他瀏覽器會計入空白節點。

2 normalize()

處理文檔樹中的文本節點。

  • 出現文本節點不包含文本 => 刪除空白文本節點
  • 接連出現兩個文本節點 => 合併為一個文本節點

10.1.2 Document類型

Document類型表示文檔。

  • document對象是HTMLDocument的一個實例,表示整個HTML頁面。
  • document對象是window對象的一個屬性,可以作為全局對象來訪問。

Document節點的特徵:

  • nodeType的值為9;
  • nodeName的值是”#document”;
  • nodeValue和parentNode的值為null;
  • ownerDocument的值為null。

1. 文檔的子節點

1 DocumentType(最多一個) <!DOCTYPE>標籤,可以通過document.doctype屬性來訪問他的信息。
2 Element(最多一個)

文檔元素<html>。

通過documentElement屬性childNodes列表(在無處理指令的情況下是firstChild)訪問可快速找到html元素。

document.body屬性可以指向<body>元素(因為該元素使用頻率高,為了便於開發增添該屬性)。

3 ProcessingInstruction 表示處理指令。
4 Comment 註釋。

2. 文檔信息

作為HTMLDocument的實例,document對象還有一些特殊的屬性。

1 title <title>元素中的文本,是當前頁面的標題。
2 URL 完整的URL。
3 domain

頁面的域名。僅domain可以設置。但有一定的限制:

  • 不能設置為URL中不包含的域
  • 如果域名一開始是“鬆散的”(wrox.com),那麼就不能再將其設置回“緊繃的”(p2p.wrox.com)

作用:將每個頁面的document.domain設置為相同的值,就可以互相訪問對方包含的JavaScript對象了。(解決跨域問題)

4 referrer 鏈接到當前頁面的那個頁面的URL。在沒有來源頁面的情況下是空字符串。

3. 查找元素

1 getElementById() 參數為要取得元素的ID。找到返回該元素,沒有找到返回null。如果有多個id值相同,則只會返回第一個。
2 getElementByTagName() 參數為要取得元素的標籤名。返回元素的NodeList。在HTML文檔中,返回的是HTMLCollection對象。可以通過方括號或者item()方法來訪問。
3 nameItem() HTMLCollection對象的方法。通過元素的name屬性取得集合中的項(第一項)。同時HTMLCollection對象還支持按名稱訪問項。
4 getElementByName() 返回帶有給定name屬性的所有元素(一個HTMLCollection)。

4. DOM的一致性檢測

ducument.implementation屬性:提供關於實現了DOM 哪些部分的信息的對象。

 他有一個方法,hasFeature()。接收兩個參數:要檢測的DOM功能的名稱和版本號。如果支持給定名稱和版本的功能,則返回true。

檢驗結果true不意味着現實與規範一致,最好除了檢測hasFeature()之外,同時使用能力檢測

5. 文檔寫入

write() / writeln():接受一個字符串,即寫入輸出流中的文本。write()會原樣寫入,writeln()會在字符串末尾添加一個換行符(\n)。這兩個方法可以向頁面中動態的加入內容。

//在頁面加載過程中輸出當前的日期和時間
document.write("<strong>" + (new Date()).toString() + "</strong>");

同時還可以用來動態的包含外部資源,例如JavaScript文件等。

document.write("<script type=\"text/javascript\" src=\"file.js\"> + "<\/script>");

PS:由於不能直接包含字符串”</script>”(這樣會導致該字符串被解釋為腳本的結束,後面的代碼無法運行),所以要將這個字符串分開寫。

在頁面被呈現的過程中,會直接輸出內容。如果在文檔加載結束后(window.onload)再調用write(),那麼輸出的內容會重寫整個頁面。

方法open()close()分別用於打開和關閉網頁的輸出流。

10.1.3 Element類型

Element類型提供了對元素標籤名、子節點及特性的訪問。Element節點具有以下特徵:

  • nodeType值為1;
  • nodeName的值為元素的標籤名;
  • nodeValue的值為null;
  • parentNode可能是Document或Element;

tagName屬性:返回訪問元素的標籤名(與nodeName相同)。 => 在HTML中標籤名始終以全部大寫表示,需要檢驗標籤類型時最好調用toLowerCase()方法。

1. HTML元素

所有HTML元素都由HTMLElement類型表示。HTMLElement類型直接繼承自Element並添加了一些屬性。

  • id,元素在文檔中的唯一標識;
  • title,有關元素的附加說明信息,一般通過工具提示條显示出來;
  • dir,語言的方向(”ltr”,即left-to-right)或“rtl”;
  • className,與元素的class特性對應,為元素制定的CSS類。

2. 取得特性

 

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

【其他文章推薦】

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

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

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

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

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