聯合國氣候峰會 川普出席15分鐘

摘錄自2019年9月24日公共電視、中央社報導

第74屆聯合國大會,23日在美國紐約召開,全球有約60國領袖,出席聯合國氣候行動峰會。

原本預計會缺席的美國總統川普,也意外現身,但沒有發言,只待了15分鐘後,聽了印度總理莫迪,和德國總理梅克爾的演說後就離席。而梅克爾發言時表示,德國在2030年時,希望將二氧化碳排放量,減少到1990年的55%,並且在2050年時達到零碳排。

瑞典16歲環保少女童貝里激動地痛斥各國領袖不解決碳排,背叛她這個世代;媒體還捕捉到美國總統川普意外現身,童貝里怒瞪川普的畫面。不過肢體語言專家伍德(Patti Wood)伍德解釋,童貝里的肢體反應有可能被誇大。

政策
公約
環境政策
全球變遷
氣候變遷
國際新聞
美國
川普
全球暖化

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

※回頭車貨運收費標準

美國蘿蔓生菜染大腸桿菌 12/27前禁輸入

摘錄自2019年11月28日公視報導

美國加州傳出蘿蔓生菜遭出血型大腸桿菌污染中毒事件,我國食藥署昨(27日)傍晚緊急宣布,從今天起一個月,暫停受理美國蘿蔓生菜進口查驗申請;也提醒民眾要注意。

感恩節前,美國又再度爆發蘿蔓生菜遭出血型大腸桿菌污染中毒事件,目前已知有19州、67例確定病例,美國疾病管制署日前發出安全警告,而我國衛福部食藥署27號傍晚也宣布,從28號起到下個月27號,暫停受理美國蘿蔓生菜輸入查驗申請。

食藥署食品組科長廖姿婷說:「在邊境是需要檢附未有受污染的證明文件,我們才可以受理它報驗,如果來自美國的生菜是沒有相關的證明文件的話,我們邊境是不會允許它受理報驗。」

食藥署表示,美國從9月底開始,就陸續傳出「O157:H7型」大腸桿菌污染蘿蔓生菜案例,而這種大腸桿菌傳染途徑、大多與飲食有關,例如吃到未煮熟又遭汙染的牛肉、蔬果等,臨床症狀包括噁心、嘔吐、出血性腹瀉,嚴重者會出現溶血性尿毒症,甚至腎衰竭而死亡,台灣曾在2001年出現過一例。

醫師提醒,家中如果還有美國蘿蔓生菜,建議丟棄不要食用或煮熟後再吃,而根據食藥署統計,今年1月至今,國內共進口蘿蔓生菜約4000公噸,以美國為大宗,流向大多為果菜市場、大賣場等。

生活環境
國際新聞
美國
生菜
大腸桿菌
中毒
食藥署
食品安全

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

【其他文章推薦】

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

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

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

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

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

網頁設計最專業,超強功能平台可客製化

※回頭車貨運收費標準

【其他文章推薦】

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

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

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

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

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

網頁設計最專業,超強功能平台可客製化

※回頭車貨運收費標準

暖化、伐木威脅馬達加斯加 東部雨林、特有種可能在50年後消失

環境資訊中心外電;姜唯 翻譯;林大利 審校;稿源:ENS

紐約市立大學研究生中心的研究發現,若再不積極因應森林砍伐和人類引起的氣候變遷問題,兩者的綜合效應到了2070年可能使整個馬達加斯加東部的雨林消失,影響該島國特有的數千種植物、哺乳動物、爬行動物和兩棲動物。

研究發表在當期《自然氣候變遷》(Nature Climate Change)期刊。研究指出,保護區有助於減輕破壞,而環境人士則致力於尋求長期解決方案,以解決溫室氣體排放失控和隨之而來的氣候變遷。

研究確立了應優先保護的完整森林區域,以加強受威脅物種的恢復能力和生存能力。

位於馬達加斯加境內拉努馬法納國家公園外,由於農業用途而遭到砍燒的森林。照片來源:Nina Beeby(CC BY-ND 4.0)

馬達加斯加位於印度洋,是僅次於澳洲的世界第二大島國,距東非海岸250英里(400公里)。由於與周邊各大洲長期處於隔離狀態,馬達加斯加有許多其他地方所沒有的動植物。

馬達加斯加是生物多樣性熱點,80%至90%的動植物物種為特有種,但數十年來的濫墾濫伐破壞了許多特殊和瀕危野生動物的棲地,包括瀕危的狐猴。

目前有兩種領狐猴瀕臨滅絕,牠們在生態系統中的角色是散播植物種子,而這些植物為雨林中的其他動物提供食物和庇護所。

研究主要作者、紐約市立大學研究生中心和亨特學院人類學教授巴登(Andrea Baden)博士說:「由於狐猴是重要的種子傳播者,對生活環境劣化也很敏感,因此牠是馬達加斯加整個東部雨林健康狀況的關鍵指標。」

非政府組織保護國際(Conservation International)認為,狐猴是馬達加斯加的代表性哺乳動物。在沒有猴子和其他競爭者的情況下,這些靈長類動物已經適應了當地遼闊的棲息地,並演化出許多不同的物種。

由於狐猴是重要的種子傳播者,因此牠是馬達加斯加整個東部雨林健康狀況的關鍵指標。照片來源:Franck Rabenahy(CC BY-ND 4.0)

截至2012年,已正式確立103個狐猴的物種和亞種,其中有39種是動物學家在2000年至2008年間發現的。牠們幾乎都是稀有、易危或瀕危物種。自人類抵達馬達加斯加以來,至少有17種狐猴滅絕。

巴登博士和她的團隊在馬達加斯加研究兩種極度瀕危的領狐猴,利用長達三十年的研究資料,分析該國東部熱帶雨林面臨的威脅。

巴登說:「我們預測森林砍伐和氣候變遷的影響時,發現光是森林砍伐和氣候變遷兩個因素,就足以使狐猴棲息地減少50%以上。更令人震驚的是,這兩個因素到本世紀末將明顯減少熱帶雨林棲息地。」

研究人員的資料顯示,馬達加斯加東部雨林破壞的速度和強度將取決於該國是否制定嚴格的保護措施來防止毀林或因應鬆散的政策。

森林是狐猴的庇護所,也是連接牠們活動範圍的生態廊道。保護森林的工作非常重要,因為狐猴是當地的關鍵物種,在這個全球生物多樣性最豐富的地區,牠們的存續和許多其他動植物的存續息息相關。

自人類抵達馬達加斯加以來,至少有17種狐猴滅絕。照片來源:Varecia Garbutt(CC BY-ND 4.0)

馬達加斯加有許多特有哺乳動物,例如馬島獴(Fossa, Cryptoprocta ferox)。島上記錄到300多種鳥類,其中60%以上是特有種,還有全世界三分之二的變色龍物種,包括已知最小的一種。科學家認為。馬達加斯加可能是所有變色龍的起源地。

在馬達加斯加的14,883種植物中,有80%以上是特有種,包括五個植物科。島上許多原生植物物種被用作草藥。像長春花鹼和長春新鹼都是馬達加斯加長春花的生物鹼,用於治療霍奇金氏病、白血病和其他癌症。

巴登說:「我們的研究結果能幫助非營利組織、國家公園管理和更廣泛的狐猴群聚保育。結果顯示,森林覆蓋度和連結度是領狐猴和所有棲息於森林的野生動物生存的關鍵。保護區對於物種的生存至關重要。」

非營利組織已經在著手保護這個獨特而受威脅的地區。保護國際自1996年起就在馬達加斯加東部進行自然保育計畫。總部位於美國的「保護國際」正在協助馬達加斯加政府制定和實施「具有保育意識的永續發展策略」。

保護國際正在馬達加斯加東部的Ankeniheny-Zahamena廊道執行測試計畫,目的是產生碳信用額度,可以出售給想抵消碳排放量的公司或其他買家。這個計畫由外部審核方雨林聯盟(Rainforest Alliance)驗證,透過保護協議吸引社區參與、提供社區財政激勵措施,保護他們的森林並監測威脅。

世界野生動物基金會(WWF)在該地區也已經耕耘了三十多年,與當地社區合作保護馬達加斯加的獨特環境。

2020年是馬達加斯加脫離法國獨立60週年,將種下6000萬棵幼苗綠化馬達加斯加。在環境與永續發展部的邀請下,約有20個環境組織和多所大學的學生會參與這項公民活動。

環境與永續發展部植樹造林與景觀和森林管理總監傑克斯(Jaozandry Jean Jacques)表示,植樹造林活動將在2020年1月展開。

Climate, Logging Menace Madagascar’s Unique Ecology JOHANNESBURG,New York,January 2, 2020 (ENS)

Left unchecked, the combined effects of deforestation and human-induced climate change could eliminate Madagascar’s entire eastern rainforest habitat by 2070, impacting thousands of plants, mammals, reptiles, and amphibians endemic to the island nation, finds new research from The Graduate Center at the City University of New York, CUNY.

Published in the current issue of the journal “Nature Climate Change,” the study also shows that protected areas will help to lessen the devastation while environmentalists work toward long-term solutions for ending runaway greenhouse gas emissions and the resulting climate change.

The study identifies areas of intact forest that could be prioritized for protection to enable resilience and survival of threatened species.

Madagascar, the world’s second-largest island country after Australia, lies in the Indian Ocean, 250 miles (400 kilometers) off the coast of East Africa. As a result of the island’s long isolation from neighboring continents, Madagascar is inhabited by animals and plants found nowhere else on Earth

It is a biodiversity hotspot where 80 to 90 percent of its animal and plant species are exclusive to the area, but the land has been devasted by decades of deforestation and overharvesting, destroying much of the land cover that provides habitat for unique animals, including endangered varieties of lemurs.

In particular, two species of ruffed lemurs are now critically endangered, and these animals play a central role in dispersing the seeds of plant species that provide food and shelter for other animals across the rainforest.

“Because of their essential role as seed dispersers and their sensitivity to habitat degradation, ruffed lemurs serve as a critical indicator of the health of Madagascar’s entire eastern rainforest,” said Dr. Andrea Baden, a professor of anthropology at The Graduate Center, CUNY and Hunter College and the study’s primary investigator.

Lemurs have been characterized as “Madagascar’s flagship mammal species” by Conservation International. In the absence of monkeys and other competitors, these primates have adapted to a wide range of habitats and diversified into numerous species.

As of 2012, there were officially 103 species and subspecies of lemur, 39 of which were described by zoologists between 2000 and 2008. They are almost all classified as rare, vulnerable, or endangered. At least 17 species of lemur have become extinct since humans arrived on Madagascar.

Dr. Baden and her team employed a case study of the two critically endangered ruffed lemurs using three decades of research throughout Madagascar to analyze threats to the country’s eastern tropical rainforest.

“When we projected the impact of deforestation and climate change, we found that deforestation alone and climate change alone could reduce ruffed lemur habitat by over 50 percent,” said Baden. “Even more alarming, these two factors together are projected to essentially decimate suitable rainforest habitat by the end of the century.”

The researchers’ data suggest that the speed and intensity of destruction to Madagascar’s eastern rainforest will be determined by whether the country institutes strict protections against deforestation or a relaxed set of policies.

Protecting forested areas that provide shelter to ruffed lemurs and serve as corridor links to their strongholds is particularly important to survival given their role as a keystone species that enables the survival of a large number of other animal and plant species in one of the world’s most biodiverse regions.

A number of other mammals, including the cat-like fossa, are endemic to Madagascar. Over 300 species of birds have been recorded on the island, of which over 60 percent are endemic. The island nation is inhabited by two-thirds of the world’s chameleon species, including the smallest known, and scientists have proposed that Madagascar may be the origin of all chameleons.

More than 80 percent of Madagascar’s 14,883 plant species are found nowhere else in the world, including five plant families. Many plant species native to the island are used as herbal remedies. The drugs vinblastine and vincristine are vinca alkaloids, used to treat Hodgkin’s disease, leukemia, and other cancers, were derived from the Madagascar periwinkle.

“The results from our study will be useful to nonprofit organizations, park management, and the broader conservation community,” Baden said. “Our results indicate potential conservation opportunities for ruffed lemurs and any of the rainforest-dwellers that rely on forest cover and connectivity. Protected areas are vital to species persistence.”

Nonprofit gorups are already at work protecting this unique and threatened area.

Conservation International has had conservation projects in eastern Madagascar since 1996. The nonprofit organization based in the United States is currently supporting the government of Madagascar in the development and implementation of “a conservation-conscious sustainable development strategy for the area.”

Conservation International has developed a pilot project in the Ankeniheny-Zahamena Corridor of eastern Madagascar that aims to generate carbon credits that can be sold to companies or other buyers looking to offset carbon emissions. Validated by an external auditor, the Rainforest Alliance, the project engages communities through conservation agreements that give these communities financial incentives to conserve their forests and monitor threats.

The World Wildlife Fund, WWF, has been active there for more than three decades, working with local communities to protect Madagascar’s unique environment.

For the 60th anniversary of Madagascar’s independence from France in 1960, 60 million young plants will be planted to green Madagascar.

In response to an invitation from the Ministry of the Environment and Sustainable Development, MEDD, some 20 environmental organizations and several university students are involved in this citizen mobilization.

Jaozandry Jean Jacques, director of Reforestation and Management of Landscapes and Forests within the MEDD, says, “We plan to officially open reforestation in Madagascar in January 2020.”

※ 全文及圖片詳見:ENS

※ 本文與 行政院農業委員會 林務局  合作刊登

森林砍伐
氣候變遷
熱帶雨林
狐猴
特有種
種樹
森林
國際新聞
馬達加斯加
全球變遷
生態保育
生物多樣性
氣候變遷

作者

姜唯

如果有一件事是重要的,如果能為孩子實現一個願望,那就是人類與大自然和諧共存。

林大利

於特有生物研究保育中心服務,小鳥和棲地是主要的研究對象。是龜毛的讀者,認為龜毛是探索世界的美德。

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

【其他文章推薦】

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

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

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

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

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

※回頭車貨運收費標準

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

昆州將建澳洲最大鋰電池 可為5.7萬家庭供電

摘錄自2020年1月30日大紀元報導

昆州與能源巨頭AGL達成協議,建造澳洲最大的電池。通過彌補風能和太陽能的間歇性特性,這組鋰電池將增強電網從煤炭供電轉向可再生能源供電的能力。

昆州政府週三表示,獨立電力供應商Vena Energy將在18個月內在萬多恩(Wandoan)建造一座新的巨型電網級電池,耗資1.2億澳元。

該電池與美國科技界億萬富翁馬斯克(Elon Musk)在南澳建造的最大鋰電池規模相近,有100兆瓦的容量,可儲存150兆瓦小時的電力,足夠5萬7000個家庭使用。

去年,上市公司AGL與可再生能源公司茂能集團(Maoneng Group)簽署了一項為期15年的協議,將在新州建造四塊大型電池,為2023年利德爾(Liddell)燃煤發電廠的關閉做準備。

再生能源
能源議題
能源轉型
國際新聞
澳洲
鋰電池
電力

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

【其他文章推薦】

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

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

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

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

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※回頭車貨運收費標準

台中搬家公司費用怎麼算?

Spring事務的傳播屬性

前言

Spring在TransactionDefinition接口中規定了7種類型的事務傳播行為。事務傳播行為是Spring框架獨有的事務增強特性,他不屬於的事務實際提供方數據庫行為。這是Spring為我們提供的強大的工具箱,使用事務傳播行可以為我們的開發工作提供許多便利。但是人們對他的誤解也頗多,你一定也聽過“service方法事務最好不要嵌套”的傳言。要想正確的使用工具首先需要了解工具。

基礎概念

1. 什麼是事務傳播行為?

事務傳播行為用來描述由某一個事務傳播行為修飾的方法被嵌套進另一個方法的時事務如何傳播。

用偽代碼說明:

1 @Transaction(Propagation=XXX)
2  public void methodA(){
3     methodB();
4     //doSomething
5  }
6  
7  public void methodB(){
8     //doSomething
9  }

methodA中存在事務,他又調用了methodB。methodB事物的一些特性由methodA決定,這就是事務的傳播行為。

2. Spring中七種事務傳播行為

事務傳播行為類型 說明
PROPAGATION_REQUIRED 如果當前沒有事務,就新建一個事務,如果已經存在一個事務中,加入到這個事務中。這是最常見的選擇。
PROPAGATION_SUPPORTS 支持當前事務,如果當前沒有事務,就以非事務方式執行。
PROPAGATION_MANDATORY 使用當前的事務,如果當前沒有事務,就拋出異常。
PROPAGATION_REQUIRES_NEW 新建事務,如果當前存在事務,把當前事務掛起。
PROPAGATION_NOT_SUPPORTED 以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
PROPAGATION_NEVER 以非事務方式執行,如果當前存在事務,則拋出異常。
PROPAGATION_NESTED 如果當前存在事務,則在嵌套事務內執行。如果當前沒有事務,則執行與PROPAGATION_REQUIRED類似的操作。

定義非常簡單,也很好理解,下面我們就進入代碼測試部分,驗證我們的理解是否正確。

代碼驗證

第一種情況。內部均為 propagation = Propagation.REQUIRED

 1 @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.REPEATABLE_READ)  2 @Override
 3 public void testTransactional() {
 4     int insert = downloadImgDao.test1();
 5     log.info("insert1 = {}", insert);
 6 
 7     insert = downloadImgDao.test2();
 8     log.info("insert2 = {}", insert);
 9 }
10 
11 @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.REPEATABLE_READ) 12 @Override
13 public int test1() {
14     DownloadImg downloadImg = new DownloadImg();
15     downloadImg.setId(666L);
16     downloadImg.setLink("張三");
17     downloadImg.setLinkname("16");
18     int res = downloadImgMapper.insertSelective(downloadImg);
19     log.info("res1 = {}", res);
20     return res;
21 }
22 
23 
24 @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.REPEATABLE_READ) 25 @Override
26 public int test2() {
27     DownloadImg downloadImg = new DownloadImg();
28     downloadImg.setId(888L);
29     downloadImg.setLink("李四");
30     downloadImg.setLinkname("18");
31     int res = downloadImgMapper.insertSelective(downloadImg);
32     log.info("res2 = {}", res);
33 
34     int i = 5 / 0;
35     return res;
36 }

張三,李四插入均失敗。

 

第二種情況。內部一種為 propagation = Propagation.REQUIRED,一種為Propagation.REQUIRES_NEW

 1 @Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.REPEATABLE_READ)  2 @Override
 3 public int test1() {
 4     DownloadImg downloadImg = new DownloadImg();
 5     downloadImg.setId(666L);
 6     downloadImg.setLink("張三");
 7     downloadImg.setLinkname("16");
 8     int res = downloadImgMapper.insertSelective(downloadImg);
 9     log.info("res1 = {}", res);
10     return res;
11 }
12 
13 
14 @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.REPEATABLE_READ) 15 @Override
16 public int test2() {
17     DownloadImg downloadImg = new DownloadImg();
18     downloadImg.setId(888L);
19     downloadImg.setLink("李四");
20     downloadImg.setLinkname("18");
21     int res = downloadImgMapper.insertSelective(downloadImg);
22     log.info("res2 = {}", res);
23 
24     int i = 5 / 0;
25     return res;
26 }

張三插入成功,李四插入失敗。

 

第三種情況。內部均為Propagation.REQUIRES_NEW

跟我們現象的是一樣的,如果哪個test異常,哪個就失敗,無異常的就成功。

還有一種情況是,外圍拋異常了,內部都不拋異常,兩種內部插入也都會成功。

結論

本程序是實驗了PROPAGATION_REQUIRED以及Propagation.REQUIRES_NEW。

事務默認以PROPAGATION_REQUIRED來隔離。

1: 如果內部是PROPAGATION_REQUIRED隔離級別,內部只要一個方法出錯,那麼整個事務都會回滾。

2: 如果內部有方法以Propagation.REQUIRES_NEW來隔離。那麼他會創建一個新的事務來運行,如果他拋異常了,並不會影響其他事務的以及外部的事務。

 

spring事務官方文檔:https://docs.spring.io/spring/docs/5.2.6.RELEASE/spring-framework-reference/data-access.html#tx-propagation

參考文檔:https://segmentfault.com/a/1190000013341344

 

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

※回頭車貨運收費標準

(數據科學學習手札86)全平台支持的pandas運算加速神器

本文示例代碼已上傳至我的Github倉庫https://github.com/CNFeffery/DataScienceStudyNotes

1 簡介

  隨着其功能的不斷優化與擴充,pandas已然成為數據分析領域最受歡迎的工具之一,但其仍然有着一個不容忽視的短板——難以快速處理大型數據集,這是由於pandas中的工作流往往是建立在單進程的基礎上,使得其只能利用單個處理器核心來實現各種計算操作,這就使得pandas在處理百萬級、千萬級甚至更大數據量時,出現了明顯的性能瓶頸。

  本文要介紹的工具modin就是一個致力於在改變代碼量最少的前提下,調用起多核計算資源,對pandas的計算過程進行并行化改造的Python庫,並且隨着其近期的一系列內容更新,modin基於Dask開始對Windows系統同樣進行了支持,使得我們只需要改變一行代碼,就可以在所有平台上獲得部分pandas功能可觀的計算效率提升。

圖1

2 基於modin的pandas運算加速

  modin支持WindowsLinux以及Mac系統,其中LinuxMac平台版本的modin工作時可基於并行運算框架RayDask,而Windows平台版本目前只支持Dask作為計算後端(因為Ray沒有Win版本),安裝起來十分方便,可以用如下3種命令來安裝具有不同後端的modin

pip install modin[dask] # 安裝dask後端
pip install modin[ray] # 安裝ray後端(windows不支持)
pip install modin[all] # 推薦方式,自動安裝當前系統支持的所有後端

  本文在Win10系統上演示modin的功能,執行命令:

pip install modin[all]

  成功安裝modin+dask之後,在使用modin時,只需要將我們習慣的import pandas as pd變更為import modin.pandas as pd即可,接下來我們來看一下在一些常見功能上,pandasVSmodin性能差異情況,首先我們分別使用pandasmodin讀入一個大小為1.1G的csv文件esea_master_dmg_demos.part1.csv,來自kaggle(https://www.kaggle.com/skihikingkevin/csgo-matchmaking-damage/data),記錄了關於熱門遊戲CS:GO的一些玩家行為數據,因為體積過大,請感興趣的讀者朋友自行去下載:

圖2

  為了區分他們,在導入時暫時將modin.pandas命名為mpd

圖3

  可以看到因為是Win平台,所以使用的計算後端為Dask,首先我們來分別讀入文件查看耗時:

圖4

  藉助jupyter notebook記錄計算時間的插件,可以看到原生的pandas耗時14.8秒,而modin只用了5.32秒,接着我們再來試試concat操作:

圖5

  可以看到在pandas花了8.78秒才完成任務的情況下,modin僅用了0.174秒,取得了驚人的效率提升。接下來我們再來執行常見的檢查每列缺失情況的任務:

圖6

  這時耗時差距雖然不如concat操作時那麼巨大,也是比較可觀的,但是modin畢竟是一個處理快速開發迭代階段的工具,其針對pandas的并行化改造尚未覆蓋全部的功能,譬如分組聚合功能。對於這部分功能,modin會在執行代碼時檢查自己是否支持,對於尚未支持的功能modin會自動切換到pandas單核後端來執行運算,但由於modin中組織數據的形式與pandas不相同,所以中間需要經歷轉換:

圖7

  這種時候modin的運算反而會比pandas慢很多:

圖8

  因此我對modin持有的態度是在處理大型數據集時,部分應用場景可以用其替換pandas,即其已經完成可靠并行化改造的pandas功能,你可以在官網對應界面(https://modin.readthedocs.io/en/latest/supported_apis/index.html )查看其已經支持及尚未良好支持的功能,,因為modin還處於快速開發階段,很多目前無法支持的功能也許未來不久就會被加入modin

圖9

  以上就是本文的全部內容,如有疑問歡迎在評論區與我討論。

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

【其他文章推薦】

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

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

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

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

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

網頁設計最專業,超強功能平台可客製化

※回頭車貨運收費標準

樹莓派使用 OLED 屏显示圖片及文字

樹莓派默認是不帶显示屏的,如果想要查看系統的一些信息,需要使用電腦登錄到樹莓派,或者通過 HDMI 連接外接显示器查看。這樣做總是有點麻煩,我們可以通過外接一個 OLED 屏來显示一些關鍵參數或者圖片。本文將詳細介紹操作方法。

OLED 模組介紹

OLED 屏主要有兩種:128×32 和 128×64 ,主要顏色是白、黃、藍。OLED 屏的特點是功耗低,價格便宜,使用 I2C 接口與主機連接。本文所使用的是 128×64 尺寸的屏幕,外形如下:

它的接口很簡單,只有 4 個 Pin 腳:VCC,GND,SDA,SCL,所以它與樹莓派的連接也很簡單,如下圖所示(本文使用樹莓派 3B):

開啟 I2C 接口

樹莓派默認是不開啟 I2C 接口的,所以我們需要手動打開它。執行以下命令:

$ sudo apt-get install -y python-smbus
$ sudo apt-get install -y i2c-tools
$ sudo raspi-config

然後按以下動圖方式開啟 I2C 功能。

安裝 OLED 屏的 Python 庫

為了在 OLED 屏上显示文字或圖像,我們需要使用到 Adafruit 的 Python 庫,這個庫支持所有的 SSD1306 相關的显示屏,包括 128×32 和 128×64 屏幕。

首先我們需要下載這個庫:

$ git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git

然後進入到目錄,再進行安裝:

$ cd Adafruit_Python_SSD1306
$ sudo python3 setup.py install	# 如果使用 Python2 ,則使用對應命令

找到 OLED 模組地址

安裝好 Python 庫之後,我們可以使用 i2cdetect 命令來找到 OLED 屏的物理地址:

$ i2cdetect -y 1

我們會得到類似這樣的輸出:

不同的模組可能得到不同的輸出。這裏我們的 I2C 地址就是 0x3C。如果你使用的是初代樹莓派(256MB的樹莓派1代B),那麼需要使用下面的命令:

$ i2cdetect -y 0

使用 OLED 屏显示圖像及文字

在剛剛下載的那個庫文件里,有一個 examples 目錄,在那個目錄里,我們可以看到以下內容:

  • animate.py
  • buttons.py
  • image.py
  • shapes.py
  • stats.py

這幾個文件我們可以直接運行,比如:

$ python3 shapes.py

這幾個文件運行的結果如下圖示:

屏幕尺寸適配

以上的幾個示例文件里,它們都默認你的屏幕尺寸是 128×32 ,但它們依然可以跑在 128×64 的屏幕上。如果我們想要看得更舒服一點,我們可以將尺寸進行適配。

在每個 Python 文件里,都有下面這麼一段代碼:

這裏也寫得很清楚了,上下兩行代碼分別代表 128×32 和 128×64 的屏幕,使用何種尺寸的屏幕,只需將對應的代碼前面的 # 去掉即可。

公眾號:良許Linux

有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章

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

【其他文章推薦】

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

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

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

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

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

※回頭車貨運收費標準

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

四、歸併排序 && 快速排序

一、歸併排序 Merge Sort

1.1、實現原理

  • 如果要排序一個數組,我們先把數組從中間分成前後兩部分,然後對前後兩部分分別排序,再將排好序的兩部分合併在一起,這樣整個數組就都有序了。
  • 歸併排序使用的就是分治思想。分治,顧名思義,就是分而治之,將一個大問題分解成小的子問題來解決。小的子問題解決了,大問題也就解決了。
  • 分治思想跟遞歸思想很像。分治算法一般都是用遞歸來實現的。 分治是一種解決問題的處理思想,遞歸是一種編程技巧,這兩者並不衝突。
  • 寫遞歸代碼的技巧就是,分析得出遞推公式,然後找到終止條件,最後將遞推公式翻譯成遞歸代碼。所以,要想寫出歸併排序的代碼,我們先寫出歸併排序的遞推公式。
  • 遞推公式:erge_sort(p…r) = merge(merge_sort(p…q), merge_sort(q+1…r))
  • 終止條件:p >= r 不用再繼續分解
  • merge_sort(p…r)表示,給下標從 p 到 r 之間的數組排序。
  • 我們將這個排序問題轉化為了兩個子問題, merge_sort(p…q) 和 merge_sort(q+1…r),其中下標 q 等於 p 和 r 的中間位置,也就是 (p+r)/2。
  • 當下標從 p 到 q 和從 q+1 到 r 這兩個子數組都排好序之後,我們再將兩個有序的子數組合併在一起,這樣下標從 p 到 r 之間的數據就也排好序了。
  • 實現思路如下:
/**
 * 歸併排序
 * @param arr 排序數據
 * @param n   數組大小
 */
public static void merge_sort(int[] arr, int n) {
    merge_sort_c(arr, 0, n - 1);
}

// 遞歸調用函數
public static void merge_sort_c(int[] arr, int p, int r) {
    // 遞歸終止條件
    if (p >= r) {
        return;
    }
    // 取p到r之間的中間位置q
    int q = (p + r) / 2;

    // 分治遞歸
    merge_sort_c(arr, p, q);
    merge_sort_c(arr, q + 1, r);
    // 將 arr[p...q] 和 arr[q+1...r] 合併為 arr[p...r]
    merge(arr[p...r],arr[p...q],arr[q + 1...r]);
}
  • merge(arr[p…r], arr[p…q], arr[q + 1…r]) 這個函數的作用就是,將已經有序的 arr[p…q] 和 arr[q+1…r] 合併成一個有序的數組,並且放入 arr[p…r]。
  • 如下圖所示,我們申請一個臨時數組 tmp,大小與 arr[p…r] 相同。
  • 我們用兩個游標 i 和 j,分別指向 arr[p…q] 和 arr[q+1…r] 的第一個元素。
  • 比較這兩個元素 arr[i] 和 arr[j],如果 arr[i] <= arr[j],我們就把 arr[i] 放入到臨時數組 tmp,並且 i 后移一位,否則將 arr[j] 放入到數組 tmp,j 后移一位。
  • 繼續上述比較過程,直到其中一個子數組中的所有數據都放入臨時數組中,再把另一個數組中的數據依次加入到臨時數組的末尾,這個時候,臨時數組中存儲的就是兩個子數組合併之後的結果了。
  • 最後再把臨時數組 tmp 中的數據拷貝到原數組 arr[p…r] 中。
/**
 * merge 合併函數
 * @param arr 數組
 * @param p   數組頭
 * @param q   數組中間位置
 * @param r   數組尾
 */
public static void merge(int[] arr, int p, int q, int r) {
    if (r <= p) return;

    // 初始化變量i j k
    int i = p;
    int j = q + 1;
    int k = 0;

    // 申請一個大小跟A[p...r]一樣的臨時數組
    int[] tmp = new int[r - p + 1];

    // 比較排序移動到臨時數組
    while ((i <= q) && (j <= r)) {
        if (arr[i] <= arr[j]) {
            tmp[k++] = arr[i++];
        } else {
            tmp[k++] = arr[j++];
        }
    }

    // 判斷哪個子數組中有剩餘的數據
    int start = i, end = q;
    if (j <= r) {
        start = j;
        end = r;
    }

    // 將剩餘的數據拷貝到臨時數組tmp
    while (start <= end) {
        tmp[k++] = arr[start++];
    }

    // 將tmp中的數組拷貝回 arr[p...r]
    for (int a = 0; a <= r - p; a++) {
        arr[p + a] = tmp[a];
    }
}

1.2、性能分析

  • 歸併排序穩不穩定關鍵要看 merge() 函數,也就是兩個有序子數組合併成一個有序數組的那部分代碼。
  • 在合併的過程中,如果 arr[p…q] 和 arr[q+1…r] 之間有值相同的元素,那我們可以像偽代碼中那樣,先把 arr[p…q] 中的元素放入 tmp 數組。
  • 這樣就保證了值相同的元素,在合併前後的先後順序不變。所以,歸併排序是一個穩定的排序算法
  • 其時間複雜度是非常穩定的,不管是最好情況、最壞情況,還是平均情況,時間複雜度都是 O(nlogn)
  • 歸併排序的合併函數,在合併兩個有序數組為一個有序數組時,需要藉助額外的存儲空間。
  • 儘管每次合併操作都需要申請額外的內存空間,但在合併完成之後,臨時開闢的內存空間就被釋放掉了。在任意時刻,CPU 只會有一個函數在執行,也就只會有一個臨時的內存空間在使用。
  • 臨時內存空間最大也不會超過 n 個數據的大小,所以空間複雜度是 O(n),不是原地排序算法。

二、快速排序 Quicksort

2.1、實現原理

  • 快排的思想是:如果要排序數組中下標從 p 到 r 之間的一組數據,可以選擇 p 到 r 之間的任意一個數據作為 pivot(分區點)。
  • 遍歷 p 到 r 之間的數據,將小於 pivot 的放到左邊,將大於 pivot 的放到右邊,將 pivot 放到中間。
  • 經過這一步驟之後,數組 p 到 r 之間的數據就被分成了三個部分,前面 p 到 q-1 之間都是小於 pivot 的,中間是 pivot,後面的 q+1 到 r 之間是大於 pivot 的。
  • 根據分治、遞歸的處理思想,可以用遞歸排序下標從 p 到 q-1 之間的數據和下標從 q+1 到 r 之間的數據,直到區間縮小為 1,就說明所有的數據都有序了。
  • 用遞推公式來將上面的過程寫出來的話,就是這樣:quick_sort(p…r) = quick_sort(p…q-1) + quick_sort(q+1, r)。
  • 終止條件:p >= r
/**
 * 快速排序
 * @param arr 排序數組
 * @param p 數組頭
 * @param r 數組尾
 */
public static void quickSort(int[] arr, int p, int r) {
    if (p >= r) 
        return;
    // 獲取分區點 並移動數據
    int q = partition(arr, p, r);
    quickSort(arr, p, q - 1);
    quickSort(arr, q + 1, r);
}

partition() 分區函數:

  • 是隨機選擇一個元素作為 pivot(一般情況下,可以選擇 p 到 r 區間的最後一個元素),然後對 arr[p…r] 分區,並將小於 pivot 的放右邊,大於的放左邊,函數返回 pivot 的下標。

partition() 的實現有兩種方式:

  • 一種是不考慮空間消耗,此時非常簡單。

    • 申請兩個臨時數組 X 和 Y,遍歷 arr[p…r],將小於 pivot 的元素都拷貝到臨時數組 X,將大於 pivot 的元素都拷貝到臨時數組 Y,最後再將數組 X 和數組 Y 中數據順序拷貝到arr[p…r]。
    /**
     * 分區函數方式一
     *
     * @param arr 數組
     * @param p   上標
     * @param r   下標
     * @return 函數返回 pivot 的下標
     */
    public static int partition1(int[] arr, int p, int r) {
        int[] xArr = new int[r - p + 1];
        int x = 0;
    
        int[] yArr = new int[r - p + 1];
        int y = 0;
    
        int pivot = arr[r];
    
        // 將小於 pivot 的元素都拷貝到臨時數組 X,將大於 pivot 的元素都拷貝到臨時數組 Y
        for (int i = p; i < r; i++) {
            // 小於 pivot 的存入 xArr 數組
            if (arr[i] < pivot) {
                xArr[x++] = arr[i];
            }
            // 大於 pivot 的存入 yArr 數組
            if (arr[i] > pivot) {
                yArr[y++] = arr[i];
            }
        }
    
        int q = x + p;
        // 再將數組 X 和數組 Y 中數據順序拷貝到 arr[p…r]
        for (int i = 0; i < x; i++) {
            arr[p + i] = xArr[i];
        }
        arr[q] = pivot;
        for (int i = 0; i < y; i++) {
            arr[q + 1 + i] = yArr[i];
        }
    
        return q;
    }
    
  • 另外一種有點類似選擇排序。

    • 我們通過游標 i 把 arr[p…r-1] 分成兩部分。arr[p…i-1] 的元素都是小於 pivot 的,我們暫且叫它“已處理區間”,arr[i…r-1] 是“未處理區間”。
    • 我們每次都從未處理的區間 arr[i…r-1] 中取一個元素 arr[j],與 pivot 對比,如果小於 pivot,則將其加入到已處理區間的尾部,也就是 arr[i]的位置。
    • 在數組某個位置插入元素,需要搬移數據,非常耗時。此時可以採用交換,在 O(1) 的時間複雜度內完成插入操作。需要將 arr[i] 與 arr[j] 交換,就可以在 O(1)時間複雜度內將 arr[j] 放到下標為 i 的位置。
    /**
     * 分區函數方式二
     * @param arr 數組
     * @param p   上標
     * @param r   下標
     * @return 函數返回pivot的下標
     */
    public static int partition2(int[] arr, int p, int r) {
        int pivot = arr[r];
        int i = p;
        for (int j = p; j < r; j++) {
            if (arr[j] < pivot) {
                if (i == j) {
                    ++i;
                } else {
                    int tmp = arr[i];
                    arr[i++] = arr[j];
                    arr[j] = tmp;
                }
            }
        }
        int tmp = arr[i];
        arr[i] = arr[r];
        arr[r] = tmp;
        return i;
    }
    

2.2、性能分析

  • 因為分區的過程涉及交換操作,如果數組中有兩個相同的元素,比如序列 6, 8, 7, 6, 3, 5, 9, 4,在經過第一次分區操作之後,兩個 6 的相對先後順序就會改變。所以,快速排序並不是穩定的排序算法
  • 按照上面的第二種分區方式,快速排序只涉及交換操作,所以空間複雜度為 Q(1),是原地排序算法
  • 時間複雜度為 Q(nlogn),最差為Q(n²)

三、兩者對比

歸併排序 快速排序
排序思想 處理過程由下到上,先處理子問題,然後在合併 由上到下,先分區,在處理子問題
穩定性
空間複雜度 Q(n) Q(1) 原地排序算法
時間複雜度 都為 O(nlogn) 平均為 O(nlogn),最差為 O(n²)
  • 歸併之所以是非原地排序算法,主要原因是合併函數無法在原地執行。快速排序通過設計巧妙的原地分區函數,可以實現原地排序,解決了歸併排序佔用太多內存的問題。
  • 歸併排序算法是一種在任何情況下時間複雜度都比較穩定的排序算法,這也使它存在致命的缺點,即歸併排序不是原地排序算法,空間複雜度比較高,是 O(n)。正因為此,它也沒有快排應用廣泛。

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

【其他文章推薦】

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

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

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

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

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※回頭車貨運收費標準

台中搬家公司費用怎麼算?

FAO:5月全球糧食供應鏈恐中斷 A股農業族群飆

摘錄自2020年3月31日聯合報報導

聯合國糧農組織(FAO)日前稱,受全球疫情影響,全球糧食供應鏈將於4月至5月中斷。而俄國、越南等國家為保證糧食供給,已宣布停止出口。A股農業族群今(31)日走強,金健米業再度飆漲停,京糧控股大漲8%,傲農生物、農發種業、萬向德農紛紛拉升。

金融網報導,其中,柬埔寨首相宣布受新冠肺炎疫情影響,將自4月5日起禁止部分大米出口。埃及自3月28日起未來3個月內停止各種豆類產品的出口;哈薩克斯坦禁止出口小麥麵粉、紅蘿蔔、糖和馬鈴薯;越南暫停簽署新的大米出口合約;俄國將每周評估情況,再決定是否實施出口禁令。

聯合國糧農組織(FAO)日前稱,受全球疫情影響,全球糧食供應鏈將於4月至5月中斷。而俄國、越南等國家為保證糧食供給,已宣布停止出口。

永續發展
土地利用
國際新聞
糧食

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

【其他文章推薦】

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

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

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

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

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

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

專家:新冠是人類忽視氣候變遷的後果

摘錄自2020年4月1日聯合報報導

聯合國開發計劃署的德利沃( Mandeep Dhaliwal),同時也是愛滋病、健康與發展小組主任,在3月31日的一場在線會議中表示,新冠疫情只是預告了將來全球暖化更嚴重的時候,人類即將面臨的公共衛生危機。 而人類如何應對新冠肺炎,將會啟示未來人們如何應對氣候變遷。

她說: 「透過COVID-19,我們可以看到它的影響比其他氣候危機更加急迫。 」她說,「我們再也不能忽視導致這一切後果的人類活動,我們需要做些甚麼。 」

人類摧毀樹木、擴大耕地,已經對生態造成威脅,促長了氣候變遷,讓人類更有機會接觸到來自其他動物的疾病。例如美國疾病與控制中心就表示,新冠病毒的源頭很可能來自蝙蝠,與武漢的一個野味市場有關。德利沃說,像是空氣污染這類環境問題,也讓人類的肺部變得更加脆弱,變得難以對抗新冠肺炎這種呼吸道疾病。

全球變遷
氣候變遷
國際新聞
武漢肺炎
蝙蝠與新興傳染病

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

【其他文章推薦】

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

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

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

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

網頁設計最專業,超強功能平台可客製化

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