圖解MySQL索引(二)—為什麼使用B+Tree_網頁設計

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

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

失蹤人口回歸,近期換工作一波三折,耽誤了不少時間,從今開始每周更新~

索引是一種支持快速查詢的數據結構,同時索引優化也是後端工程師的必會知識點。各個公司都有所謂的MySQL”軍規“,其實這些所謂的優化和規定,並不是什麼高深的技術,只是要求大家正確建立和使用索引而已。工欲善其事必先利其器,想要正確運用索引,需要了解其底層實現原理,本文將探索關於索引的“是什麼”以及”為什麼“。

MySQL中關於索引的概念有很多,為了避免混淆,在上一篇文章中關於索引在不同維度分類設計到的一些名詞進行了解釋,如輔助索引,唯一索引,覆蓋索引,B+Tree索引…., 牆裂建議不明白的小夥伴可以先去看看圖解MySQL索引(上)—聊聊索引的分類,本文中關於索引類型的各種定義不再複述。

一,磁盤IO問題

1.1 磁盤IO

所謂磁盤IO,簡單來講就是就是將磁盤中的數據讀取到內存或者是從內存寫入磁盤。在系統開發與設計過程中,磁盤IO的瓶頸往往不可忽略,因為這是一個相對比較耗時的操作。

上圖是一個机械硬盤,雖然速度不如SSD,但是由於價格低廉,目前仍是主流的存儲介質。它的IO操作通常需要尋道,旋轉和傳輸三個步驟。

尋道,是指將讀寫磁頭移動到正確的磁道,尋道時間越短,IO操作越快,目前磁盤的平均尋道時間一般在3-15ms左右。

旋轉,是指將盤片旋轉到請求數據所在的扇區,這部分所需要的時間由硬盤的配置所決定。旋轉延遲由磁盤轉速所決定,也就是常說的7200轉和5400轉等。

例如,7200轉是指每分鐘可以旋轉7200圈,那麼旋轉一圈所需要的時間就是60*1000/7200 ≈ 8.33ms,而旋轉延遲通常取旋轉一周時間的1/2,也就是大約4.17ms。

傳輸,磁盤傳輸的速度通常在幾十到上百M每秒,假設速度為20M/s,要傳輸的數據為64kb,則傳輸時間則是 64 / 1024 / 20 * 1000 = 3.125ms。不過目前流行的SSD傳輸速度大幅度提升,SATA Ⅱ可以達到300M/s,傳輸速度往往遠小於前兩步操作所以傳輸時間往往可以忽略不記。

机械硬盤的連續讀寫性能很好,但隨機讀寫性能很差,這主要是因為磁頭移動到正確的磁道上需要時間,隨機讀寫時,磁頭需要不停的移動,時間都浪費在了磁頭尋址上,所以性能不高。

上述過程是對傳統机械磁盤IO延遲的粗略介紹,目的是告訴大家磁盤IO過程是個耗時的過程,內存操作往往與之速度不在同一個數量級。即使是目前比較流行的SSD,想必內存中數據讀取性能也差之千里。

1.2 局部性原理

由於磁盤IO是一個比較耗時的操作,而操作系統在設計時則定義一個空間局部性原則,局部性原理是指CPU訪問存儲器時,無論是存取指令還是存取數據,所訪問的存儲單元都趨於聚集在一個較小的連續區域中

在操作系統的文件系統中,數據也是按照page劃分的,一般為4k或8k。當計算機訪問一個地址數據時,不僅會加載當前數據所在的數據頁,還會將當前數據頁相鄰的數據頁一同加載到內存。而這個過程實際上只發生了1次磁盤IO,這個理論對於索引的數據結構設計非常有幫助。

二,索引數據結構演進

索引是一種支持快速查找的數據結構,在運用中往往還要求能夠支持順序查詢,而常見的數據結構有很多,比如數組,鏈表,二叉樹,散列表,二叉搜索樹,平衡搜索二叉樹,紅黑樹,跳錶等。僅僅從數據結構那麼為什麼選擇B+Tree呢?

首先對於數組,鏈表這種線性表來說,適合存儲數據,而不是查找數據,同樣,對於普通二叉樹來說,數據存儲沒有特定規律,所以也不適合。

2.1 哈希索引不能滿足業務需求

哈希(Hash)是一種非常快的查找方法,在一般情況下這種查找的時間複雜度為O(1),即一般僅需要一次查找就能定位到數據。在各種編程語言和數據庫中應用廣泛,如Java,Python,Redis中都有使用。

哈希結構在單條數據的等值查詢是性能非常優秀,但是只能用來搜索等值的查詢, 對於範圍查詢,模糊查詢(最左前綴原則)都不支持,所以不能很好的支持業務需求;所以MySQL並沒有顯式支持Hash索引,而是根據數據的訪問頻次和模式自動的為熱點數據頁建立哈希索引,稱之為自適應哈希索引。

並且由於哈希函數的隨機性,Hash索引通常都是隨機的內存訪問,對於緩存不友好,會造成頻繁的磁盤IO。

2.2 二叉搜索樹退化成鏈表

二叉搜索樹,如果左子樹不為空,則左子樹上所有節點均小於根節點,右子樹節點均大於根節點;由其屬性不難看出,這種樹非常適合數據查找。不過有個致命的缺點是二叉搜索樹的樹型取決於數據的輸入順序,極端情況下會退化成鏈表。

2.3 平衡二叉搜索樹過於嚴格

為了解決上述問題,平衡二叉搜索樹就誕生了。在保證數據順序的基礎上,又能維持樹型,保證每個節點的左右子樹高度相差不超過1。

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

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

不過由於要維持樹的平衡,在插入數據時可能要進行大量的數據移動。平衡搜索二叉樹過於嚴格的平衡要求,導致幾乎每次插入和刪除節點都會破壞樹的平衡性,使得樹的性能大打折扣。

2.4 紅黑樹高度過高,磁盤IO次數頻繁

有沒有一種數據結構,即能夠快速查找數據,又不需要頻繁的調整以維持平衡呢?這時紅黑樹就閃亮登場了。

紅黑樹和其他二叉搜索樹類似, 都是在進行插入和刪除操作時通過特定操作保持二叉查找樹的性質,從而獲得較高的查找性能。與之不同的是,紅黑樹的平衡性並不像平衡搜索二叉樹一樣嚴格的同時,又能保證在, O(log n) 時間複雜度內做查找和刪除。

紅黑樹通過改變節點的顏色,可以有效減少節點的移動次數,由於紅黑樹的實現比較複雜,本文不再展開,感興趣的小夥伴可以去深入學習。

看似紅黑樹是一種完美的數據結構,能夠勝任索引的工作。但MySQL並未使用其作為索引的實現,主要原因在於紅黑樹的深度過大,數據檢索時造成磁盤IO頻繁,假設一個每個節點存儲在一個page中,樹的高度為10,則每次檢索可能就需要進行10次磁盤IO。

2.5 B-Tree不支持順序查詢

B-Tree是一種自平衡的多叉搜索樹,一個節點可以擁有兩個以上的子節點。適合讀寫相對大的數據塊的存儲系統,例如磁盤。

由於MySQL索引一般都存儲在內存中,如果使用B-Tree作為索引的話,索引和數據存儲在一塊,分佈在各個節點中;而內存資源往往比較寶貴,一定內存的情況下可以存儲的索引數量相對有限,畢竟每條數據的大小一般遠大於索引列的大小,導致內存使用率不高。

數據查詢過程中往往會有順序查詢,而B-Tree和紅黑樹對於順序查詢並不友好

2.6 為什麼選B+Tree

B+Tree是在B-Tree基礎上演進而來的。與之不同的是B+Tree的數據頁只存儲在恭弘=叶 恭弘子節點中,並且恭弘=叶 恭弘子節點之間通過指針相連,為雙向鏈表結構。

B+Tree的優點可以分為以四個:

  1. 充分利用空間局部性原理,適合磁盤存儲。

  2. 樹的高度很低,能夠在存儲大量數據情況下,進行較少的磁盤IO【見下文介紹】。

  3. 能夠很好支持單值,範圍查詢,有序性查詢。

  4. 索引和數據分開存儲,讓更多的索引存儲在內存中。

三,MySQL中索引實現

3.1 巧妙利用B+Tree

MySQL中的數據存儲通常以Page為單位,俗稱數據頁,每個Page對應B+Tree的一個節點。頁是InnoDB磁盤管理的最小單位,默認每個數據頁的大小為16kb,也可以通過參數innodb_page_size將頁的大小設置成其他值。

數據庫的頁大小和操作系統類似,是指存放數據時,每一塊連續區域數據的大小。比如一個1M的數據存放在數據庫中時, 需要大概64個頁來存放(1024=64*16)。如果是在操作系統上安裝的數據庫,最好將數據庫頁大小設置為操作系統頁大小的倍數,才是最佳設置。

3.2 樹的高度-有效減少磁盤IO次數

通常情況下,一張MySQL表中有成千上萬條數據,而磁盤IO次數往往與數的高度成正比。默認情況下一個Page的大小為16kb,由於每個Page中數據通過指針相連,且每個指針大小為6字節。

在工作中,我們通常使用長度為8個字節的bigint類型作為主鍵id的類型。已知,每一條數據都會包含一個6字節的指針(數據頁中每條記錄都有指向下一條記錄的指針,但是沒有指向上一條記錄的指針);所以一條索引數據大約佔用8+6=14個字節,一個Page中能存儲16 * 1024 / 14 ≈ 1170條索引數據。高度為2的B+Tree大約能存儲1170*16 = 18720條這樣的記錄。同理,高度為3的B+Tree的B+Tree大約能存儲1170 * 1170 * 16 = 21902400,大約兩千萬條數據。 (每個節點大約能存儲1170條記錄,可以理解為此時B+Tree為1170叉樹)

例如,要檢索id=008的數據,則需要進行三次磁盤IO找到對應的數據頁(最多三次,因為Page可能在緩存中),然後在數據頁中進行二分查找,定位到對應的記錄。

四,總結

大家耳熟能詳的B+Tree索引是一種非常優秀的數據結構,也是面試熱點問題。本文從數據結構和磁盤IO兩個方面分析了為什麼使用B+Tree,以及MySQL的InnoDB存儲引擎的索引實現。在筆者面試過程中,被問到MySQL索引時通常也是從底層數據結構特點以及結合磁盤IO兩個角度去分析,屢試不爽。

學習一門技術時,我們不僅要知道其優點更要了解其缺點和瓶頸。在分析MySQL索引的實現時,不妨試試從其他數據結構的缺點入手!在Redis中使用跳錶實現了有序集合Zset,同樣支持高效的順序查詢,對比MySQL索引實現,跳錶能否替換B+Tree?如果不行,是因為什麼呢?

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

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

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

【JVM】垃圾回收的四大算法_貨運

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

網動結合了許多網際網路業界的菁英共同研發簡單易操作的架站工具,及時性的更新,為客戶創造出更多的網路商機。

GC垃圾回收

JVM大部分時候回收的都是新生代(伊甸區+倖存0區+倖存1區)。按照回收的區域可以分成兩種類型:Minor GC和Full GC(MajorGC)。

  • Minor GC:只針對新生代區域的GC,大多數Java對象的存活率都不高,Minor GC非常頻繁,回收速度快。
  • Full GC:發生在老年代的GC,經常會伴隨至少一次的Minor GC(但不一定會),Full GC掃描的範圍更廣泛,Full GC的速度比Minor GC慢10倍以上。

 

 

GC四大算法

引用計數法

對於單個對象來說,當有引用發生,引用計數器就+1;當丟失引用,引用計數器就-1。當引用數減到0的時候,說明對象不再有用,被垃圾回收。引用計數法缺點是每次對對象賦值都要維護引用計數器,且計數器本身也有一定的消耗,難以處理引用循環(例如:對象雙方互相引用,但實際上二者為空,此時雙方引用都不為空)。JVM的實現一般不採用這種方式。

複製算法

年輕代中使用的是Minor GC,這種Minor GC採用的是複製算法。複製的思想是將內存分為2快,每次只用其中一塊,當這一塊內存用完,就將或者的對象複製到另一塊上面,複製算法不會產生內存碎片

HotSpot JVM中年輕代可以分成三個部分:Eden區、Survivor0區,Survivor1區,默認比例為8:1:1。Survivor的兩個區在邏輯上可以視為from區和to區,每次GC後會交換from區和to區,在Eden區和from區滿之前,to區始終是為空的區。如果to區也被填滿了,所有對象移動到老年代。

新創建的對象一般會被分配到伊甸區,經過一次Minor GC后,如果對象還存活,就會被移到Survivor區。from區的對象如果繼續存活,且能夠被另一塊倖存區to區容納,則使用複製算法將這些仍然存活的的對象複製到另一塊倖存區to區中,然後清理使用過的Eden和from區(下一次分配就從to區開始,to區成為下一次GC的from區),且這些對象的年齡設置為1,以後對象在倖存區每經歷一次Minor GC,對象的年齡就會+1,當對象的年齡到達某個閾值的時候,這些對象就會進入老年代。(閾值默認是15,可以通過-XX:MaxTenuringThreshhold來設定對象在新生代在存活的次數)。

這種算法的優點了不會產生內存碎片,缺點是浪費內存空間,在HotSpot虛擬機中8:1:1的比例下,可用內存為80%+10%,有10%的內存會被浪費掉。如果對象存活率很高,就需要將所有對象都複製一邊,並重置引用地址。

標記清除(Mark-Sweep)

老年代一般是由標記清除 或者 標記清除和標記整理的混合實現的。

標記清除算法分為兩個步驟,先標記出要回收的對象,然後統一回收這些對象。

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

搬家價格與搬家費用透明合理,不亂收費。本公司提供下列三種搬家計費方案,由資深專業組長到府估價,替客戶量身規劃選擇最經濟節省的計費方式

優點是節約內存空間,不需要額外空間。缺點是兩次掃描,標記和清除的效率都不高,耗時嚴重。標記清除後會產生大量不連續的內存碎片。內存碎片會導致以後程序需要分配大對象的時候,找不到足夠的連續內存,導致提前觸發GC。

 標記整理(Mark-Compact)

和標記清除一樣,先標記出要回收的對象,然後讓存活對象都向一端移動,直接清理掉端邊界 以外的內存。

優點是沒有內存碎片,缺點是效率不高,需要標記存活對象還要整理存活對象的引用地址,從效率上來說是不如複製算法的。

還有一種折衷的方案,將標記清除和標記整理算法相結合,一般直接標記清除,當GC達到一定次數的時候,進行一次標記整理,從而減少了移動對象的成本,又有處理內存碎片的步驟。

總結

效率排名:複製算法>標記清除>標記整理

內存整齊度:複製算法=標記整理>標記清理

內存利用率:標記整理=標記清理>複製算法

四種算法各有優劣,一般的JVM實現會採用分代收集算法,根據不同代所具有的不同特點使用不同的算法。

年輕代的特點是區域較小,對象存活率低,適合使用複製算法。複製算法的效率只和當前存活對象的大小有關,適用於年輕代的回收,內存利用率不高的問題HotSopt通過兩個survivor的設計進行和緩解,新生代可用容量為80%+10%,只有10%的內存被浪費掉。

老年代的特點是區域較大,對象存活率高,適合使用標記清除/標記整理算法。

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

※回頭車貨運收費標準

宇安交通關係企業,自成立迄今,即秉持著「以誠待人」、「以實處事」的企業信念

vivo南紡體驗店登場!推五大開幕限定優惠,再抽萬元五星級飯店雙人假期_網頁設計

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

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

vivo 繼在高雄、台北和台中開設體驗店後,今(12/25)宣布進駐台南佔地最大購物商場–南紡購物中心A2館,為歡慶全台第四間體驗店正式開幕,加上適逢聖誕佳節,vivo特地祭出歷來最殺開幕限定好禮,首三日購買全系列機種可享五大購機優惠,再抽五星級飯店吃住玩雙人假期行程。

vivo南台灣最大體驗店今登場 五大開幕限定優惠

台南南紡購物中心A2館包含地上九層、地下兩層,整體面積約2.1萬坪,商業面積約8千多坪,看準購物中心發展潛力,vivo選擇在此打造南台灣最大體驗店,店內空間寬敞明亮,展現簡潔舒適時尚科技氛圍,近30坪室內空間包含展示體驗區、產品交機區、週邊配件區,帶給消費者全系列完整服務。

今天早上的開幕我們也做了直播介紹,眾多好康購機資訊也在裡面:

 

寬廣的體驗區:

完整配件區:

為歡慶vivo正式落腳台南,vivo於開幕首三日推出超殺開幕好康回饋消費者,凡於12/25-12/27購機可享五大獨家優惠,優惠一,購買vivo X50 Pro旗艦機,送價值6,389元vivo Y12和vivo運動藍牙耳機:

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

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

優惠二,買vivo X50送市價3990元DJI OM4磁吸式手持雲台,優惠三,購買X全系列可享延長保固至24個月、螢幕意外保障12個月、2021限定桌曆和vivo原廠33W閃充組,上網登錄再送全聯禮券900元:

優惠四,買vivo V與Y系列手機送延長保固至18個月、代言人張鈞甯悠遊卡、vivo輕量雙肩電腦包、V Friends藍牙耳機:

優惠五,購買vivo運動藍牙耳機送KKBOX 30日體驗卡。

除了一系列購機禮外,12/31前只要入手全系列vivo手機並至官網登入序號,還有機會抽中市價14,220元麗寶樂園×福容大飯店五星級飯店吃住玩全包雙人麗寶假期行程,內含精緻雙人房住宿一泊一食、渡假區禮券800元和饗樂券4張。此外,vivo也將於12/26(六)邀請氣球姊姊、12/27(日)請來造型棉花糖達人舉辦快閃活動,凡於周末指定時間到店體驗產品並拍照上傳即可獲得體驗禮,當日不限金額消費還可客製特殊造型款氣球或棉花糖。

4體驗店+3客戶服務中心 六大最強售後搶攻市場

vivo表示,目前已在台北三創、高雄夢時代、台中一中和台南南紡設有四間體驗店,客戶服務中心則在新北、台中、高雄皆有據點,2021年目標將在全台六大都會區完成體驗店布局,此外,vivo也推出業界最強六大保固,凡購買任一機種可享「業界最長15日新品換貨」、「終身維修免費到府收送」、「終身免檢修費」、「保固內原廠殼和原廠保護貼免費更換各兩次」、「終身免費手機健檢」、「長期服務始終如一」等6大業界最強售後保固,希望透過更全面的銷售通路和貼心服務搶攻市場,讓消費者能深入感受 vivo 手機的魅力!

另外在 vivo 館旁也有野獸國快閃店,裡面有展出X戰機 1:1 模型,可上去搭乘拍照,旁邊也有漫威免費著色活動,相當適合帶親子來這邊逛逛,建議大家晚上來更漂亮喔:

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

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

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

艾溪湖濕地的美_網頁設計

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

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

  攝影:傅建斌(影像中國)

  “四面碧樹三面水,一城香樟半城湖”,說的是南昌的景緻。南昌東面有溪流穿稻田而過,經年累月,數頃之地漸現湖光,世人稱之為艾溪湖,是南昌的城市天然濕地。

  秋天時節,艾溪湖濕地依然青草蔥蘢,綠意盎然。深吸幾口清甜空氣,能明顯感覺到一顆心正在走向遼遠空曠。落單的天鵝低着頭,用長長的喙專心揀覓食物;一隻鶴,孤傲地眺望蒼穹;只有那一群接一群的大雁們,無所顧忌地沖湖邊的行人鳴叫,似乎在表達喜悅的心情。

  “啊——啊——”天空傳來一陣聲響,一群飛鳥在濕地上空盤旋、流連、久久不散。“是灰鶴、千歲鶴!”人群傳來一聲驚嘆。正在湖邊給錦鯉餵食的孩子們,約好似的齊刷刷將頭抬起,打着節拍使勁鼓掌,齊聲喊道:“千歲鶴!千歲鶴!”

  “小廖,候鳥通道發現千歲鶴,應該是想在咱們雁島‘打尖’,你迅速隱蔽,別打擾它們。”

  “老高,船往東靠邊,暫停巡邏。”

  “小美,架好設備,做好記錄。”

  ……

  鄒進蓮手持對講機,一邊忙着聯絡,一邊在人群中穿梭。黑衣、黑褲、黑鞋、黑髮、黑框眼鏡,顯得簡約而幹練。

  都說,窮人的孩子早當家。鄒進蓮出生於湖北荊州一個貧困家庭,從小獨立且倔強。大學四年,她沒向家裡要過一分錢,從擺地攤賣襪子算起,先後嘗試過二十多種行當:鐵通卡代銷員、書店店長、校內公司設計員……畢業前夕,當許多同學還在為找工作奔波時,鄒進蓮早早便接到武漢一家國有企業的錄用通知,成了一名都市白領。

  然而,在鄒進蓮看來,年紀輕輕就過上安逸的生活容易讓人喪失鬥志。“不闖蕩,你要青春干什麼?”鄒進蓮不停問自己。凌晨三點,鄒進蓮依然沒有睡意,她漫無目的在網上閑逛,突然,一段人鶴相伴相依的視頻闖入她的眼帘,像一束光照亮了她的心靈。

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

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

  “這才是我想要的!”鄒進蓮突然間找到了奮鬥的方向。她很快辭掉工作,踏上南下的火車,開始拜師學養鳥。

  深山老林,簡易工棚,荒無人煙,缺水少電,鄒進蓮彷彿從世界的一極直接蹦到另一極,生活極端的反差讓她措手不及。與此同時,身邊質疑、批評的聲音一陣接一陣:“心血來潮、不務正業……”鄒進蓮的倔脾氣反而上來了:“我就要干出個樣子給你們看看。撞南牆也不回頭,走出一條別人未走過的路!”

  在學藝的那段日子里,風雨雷電、鳥獸蟲魚、花草樹木是鄒進蓮最忠實的夥伴,也是鄒進蓮最特別的老師。它們的存在賦予荒野奇妙的動感和蓬勃的哲思,也讓鄒進蓮的內心世界越來越豐盈,越來越強大。

  定下心神的鄒進蓮,陸續掌握了候鳥飼養、馴化、繁育、疫病防治等許多技能,2010年12月,鄱陽湖國家濕地公園告急:園內白天鵝大面積染病,鄒進蓮臨危受命趕往江西。一個月後,病危的四十多隻白天鵝全部康復,鄒進蓮被留在鄱陽湖白沙洲島工作,一干就是四年。

  地球上的候鳥依然定時守信地遵從着體內基因的召喚,感受着地球的每一次脈動和季節里最微妙的變化,振翅而飛,迎風而起,南來北往,飛越過雄奇壯闊的高山大海,飛越過水泥鋼筋的城市森林,周而復始地完成一次次遷徙……全世界主要的候鳥遷徙路線一共有八條,其中有三條經過中國。地處華中、與鄱陽湖相近的南昌,成為許多候鳥在西伯利亞與澳大利亞之間往返時的必經之地。

  城市發展,寸土寸金。南昌放棄艾溪湖周邊多個地產及工業投資項目,圍繞湖泊投資數十億元,保護自然生態,堅持原土護坡,緩處草坡入水,陡處生態綠格網保護,建了一座兩千六百多畝的純公益性的艾溪湖濕地公園,並精心打造了一條跨越市區的空中“鳥道”。2014年,鄒進蓮被這條雄奇、詩意的空中“鳥道”打動,接受高新區的邀請,出任艾溪湖濕地公園候鳥保護中心主任。

  上任后的鄒進蓮繞着艾溪湖濕地走了一圈,發現植物多,動物少,太過靜謐了。依她的知識和經驗,哪裡生態好,鳥就往哪裡去,艾溪湖濕地生態那麼好,只要築好“巢”,就一定可以引來無數“鳳凰”。經過一個月的深思熟慮,鄒進蓮提出創建艾溪湖濕地候鳥樂園的設想,先引進一批,待這一批扎了根,便能在鳥的世界里“口耳傳播、呼朋引伴”。

  從選址、規劃、設計到施工、馴養、招聘,鄒進蓮團隊只用了短短几個月時間。2015年6月1日,候鳥樂園揭開面紗,蓑羽鶴、疣鼻天鵝、小天鵝、黑天鵝、鴻雁、灰雁、白鷺……成百上千隻美麗候鳥,或游弋湖面,或淺立沙洲,或棲息樹林,或飛行天空。“落霞與孤鶩齊飛,秋水共長天一色”,南昌享譽千載的瑰麗景色,那一刻,重新鮮活在孩子們純凈的眼眸里。

  越來越多中小學校、幼兒園帶着孩子們來濕地開展科普活動,每次來,他們都想讓鄒進蓮做一個鳥類知識講座,可鄒進蓮都婉拒了。在她看來,應留更多的時間讓孩子們近距離接觸候鳥,與候鳥一起玩、一起互動、一起成長,這才是最有效的科普教育。一個顛撲不破的道理是:親近才會喜歡,喜歡才會主動學習和保護。

  不喜歡做講座的鄒進蓮卻特別喜歡講故事,一有空,她就和來濕地的遊人們分享候鳥的故事。“一隻叫‘灰灰’的灰雁很通人性,很講感情。有一次,它的飼養員老何請假三天回家辦事,老何前腳剛走,‘灰灰’就‘失蹤’了,到處找也找不到。第四天,老何剛回來上班,‘灰灰’立即出現,飛到老何跟前,不停叫喚,其意綿綿……”這些年,來艾溪湖的候鳥越來越多,獨立湖畔的鄒進蓮覺得自己擁有了一個充滿生機的王國。

  “小吃貨,別吃了,趕緊練飛去!”去看天鵝繁育的路上,鄒進蓮像幼兒園園長一樣對一群剛出生一個多月的小天鵝喊話。她說,她最享受的事情,就是蹲下來觀察候鳥寶貝們最細微的神情。這真是一種智慧——只有走進候鳥的世界,精通它們的“道”,才能真正懂得它們,讓它們心甘情願留下來。

  “保護候鳥不該是少數人的行為,我要做的就是通過自己的努力,讓更多人喜歡候鳥,把保護變成一種習慣。”鄒進蓮說,“我想把艾溪湖濕地候鳥樂園打造成集科普教育、生態旅遊、攝影寫生、休閑養生等為一體的候鳥生態旅遊文化景區,成為‘人的樂園+鳥的家園’。當生態效益轉為經濟效益,不僅能維持濕地正常運轉,還能反哺候鳥的馴養、繁育、保護和科研。在都市裡給予鳥兒們一片最安全、最適宜的棲息地,在城市的天空能時時看到鳥類,這樣鳥與人和諧共存的畫面,就是我最大的夢想。”

本站聲明:網站內容來http://www.societynews.cn/html/wh/fq/,如有侵權,請聯繫我們,我們將及時處理

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

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

千年彝綉出深山_網頁設計

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

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

本報北京1月19日電  (記者鄭海鷗)日前,“絲路雲裳·七彩雲南民族賽裝文化節”在京舉行新聞發布會,“‘築夢深山——千年彝綉’深山集市雲南省楚雄彝族自治州專場”舉行。源遠流長的楚雄傳統彝綉手工藝商品,帶來傳統與現代交融、民族與時尚牽手的文化之旅。

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

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

彝綉是彝族文化寶庫中的明珠,其工藝獨特、構圖精美,具有很強的實用、觀賞和收藏價值。在楚雄州永仁縣崇山峻岭深處的彝族小山村直苴,每年農曆正月十五,當地村民都會自發組織盛大的“彝族賽裝節”,這一習俗傳承了1300多年。七彩雲南民族賽裝文化節就是對千年賽裝節的傳承和發展。據了解,“深山集市雲南省楚雄彝族自治州專場”活動將持續至2月16日,通過展示,助推以彝族刺繡、服裝服飾為代表的彝州名特優產品更好地走向市場、走向全國。

本站聲明:網站內容來http://www.societynews.cn/html/wh/fq/,如有侵權,請聯繫我們,我們將及時處理

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

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

【Java8新特性】接口中的默認方法和靜態方法,你都掌握了嗎?_網頁設計

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

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

寫在前面

在Java8之前的版本中,接口中只能聲明常量和抽象方法,接口的實現類中必須實現接口中所有的抽象方法。而在Java8中,接口中可以聲明默認方法和靜態方法,本文,我們就一起探討下接口中的默認方法和靜態方法。

接口中的默認方法

Java 8中允許接口中包含具有具體實現的方法,該方法稱為“默認方法”,默認方法使用 default 關鍵字修飾 。

例如,我們可以定義一個接口MyFunction,其中,包含有一個默認方法getName,如下所示。

public interface MyFunction<T>{
    T get(Long id);
    default String getName(){
        return "binghe";
    }
}

默認方法的原則

在Java8中,默認方法具有“類優先”的原則。

若一個接口中定義了一個默認方法,而另外一個父類或接口中又定義了一個同名的方法時,遵循如下的原則。

1.選擇父類中的方法。如果一個父類提供了具體的實現,那麼接口中具有相同名稱和參數的默認方法會被忽略。

例如,現在有一個接口為MyFunction,和一個類MyClass,如下所示。

  • MyFunction接口
public interface MyFunction{
    default String getName(){
        return "MyFunction";
    }
}
  • MyClass類
public class MyClass{
    public String getName(){
        return "MyClass";
    }
}

此時,創建SubClass類繼承MyClass類,並實現MyFunction接口,如下所示。

public class SubClass extends MyClass implements MyFunction{
    
}

接下來,我們創建一個SubClassTest類,對SubClass類進行測試,如下所示。

public class SubClassTest{
    @Test
    public void testDefaultFunction(){
        SubClass subClass = new SubClass();
        System.out.println(subClass.getName());
    }
}

運行上述程序,會輸出字符串:MyClass。

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

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

2.接口衝突。如果一個父接口提供一個默認方法,而另一個接口也提供了一個具有相同名稱和參數列表的方法(不管方法是否是默認方法), 那麼必須覆蓋該方法來解決衝突。

例如,現在有兩個接口,分別為MyFunction和MyInterface,各自都有一個默認方法getName(),如下所示。

  • MyFunction接口
public interface MyFunction{
    default String getName(){
        return "function";
    }
}
  • MyInterface接口
public interface MyInterface{
    default String getName(){
        return "interface";
    }
}

實現類MyClass同時實現了MyFunction接口和MyInterface接口,由於MyFunction接口和MyInterface接口中都存在getName()默認方法,所以,MyClass必須覆蓋getName()方法來解決衝突,如下所示。

public class MyClass{
    @Override
    public String getName(){
        return MyInterface.super.getName();
    }
}

此時,MyClass類中的getName方法返回的是:interface。

如果MyClass中的getName()方法覆蓋的是MyFunction接口的getName()方法,如下所示。

public class MyClass{
    @Override
    public String getName(){
        return MyFunction.super.getName();
    }
}

此時,MyClass類中的getName方法返回的是:function。

接口中的靜態方法

在Java8中,接口中允許添加靜態方法,使用方式接口名.方法名。例如MyFunction接口中定義了靜態方法send()。

public interface MyFunction{
    default String getName(){
        return "binghe";
    }
    static void send(){
        System.out.println("Send Message...");
    }
}

我們可以直接使用如下方式調用MyFunction接口的send靜態方法。

MyFunction.send();

寫在最後

如果覺得文章對你有點幫助,請微信搜索並關注「 冰河技術 」微信公眾號,跟冰河學習Java8新特性。

最後,附上Java8新特性核心知識圖,祝大家在學習Java8新特性時少走彎路。

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

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

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

“銅鼓之鄉”看銅鼓_網頁設計

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

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

  梁志敏

  銅鼓,中國南方及東南亞地區特有的青銅器。銅鼓體如圓墩,平面曲腰,中空無底,兩側附耳,遍體紋飾,鼓面立體裝飾以青蛙最為常見。

  2015年,第一次全國可移動文物普查銅鼓專項調查显示,目前我國館藏銅鼓1676面。民間藏鼓在2014年約1500面。廣西銅鼓以數量最多、種類最齊、體形碩大著稱,被譽為“銅鼓之鄉”“銅鼓大本營”。廣西民族博物館館藏近350面銅鼓,是目前世界上收藏古代銅鼓數量最多的博物館。

  銅鼓起源於2700年前春秋早期的雲南中西部,是由炊具銅釜演變而來。1975年,雲南楚雄萬家壩遺址23號墓出土4面銅鼓,鼓面上有煙熏的痕迹,說明它們曾作為炊具使用。

  戰國初期至東漢初期,早期銅鼓東傳到滇池,當地滇人在造型和紋飾上對銅鼓進一步美化,鑄造了精美絕倫的石寨山型銅鼓。銅鼓也由炊具發展為祭祀禮器和權力重器。

  東漢至唐代是銅鼓發展的鼎盛時期,各類新型銅鼓異軍突起。生活在廣西潯江流域的僚人鑄造了鼓面有豐富立體裝飾且紋飾高度圖案化的冷水沖型銅鼓。

  生活在廣東、廣西交界雲開大山地區及其周圍的俚人,已經鑄造和使用了體形碩大、幾何花紋豐富多彩的北流型、靈山型銅鼓。這個時期,各類型銅鼓爭奇鬥豔,崇尚體形魁偉和紋飾的神秘色彩,反映了銅鼓象徵統治權力的功能得到進一步加強。

  廣西民族博物館館藏101號雲雷紋大銅鼓(圖①)是國家一級文物,也是鎮館之寶。它出土於廣西北流,鑄造年代大約在西漢晚期,鼓面直徑達165厘米,殘重299公斤,被譽為“銅鼓王”。

  唐宋以後,銅鼓儘管體形變小,紋飾簡單,卻成為民間常用的祭祀禮器和打擊樂器。

  直到今天,我國南方的壯、瑤、苗、彝、水、布依等少數民族以及東南亞的克倫、克木、芒、泰等民族都還在使用銅鼓,但使用的場合、方式和文化意義各不相同。

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

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

  不同年代、不同地區的銅鼓,其鼓形、紋飾各具特色。1980年在南寧召開的第一次中國古代銅鼓學術討論會上,經反覆討論,學者們最終以標準器分式,並以出土標準器的地名命名的辦法來劃分銅鼓類型,即“八分法”,分別是:萬家壩型、石寨山型、冷水沖型、遵義型、麻江型、北流型、靈山型和西盟型。

  萬家壩型銅鼓特點是鼓面窄小,鼓胸特別膨脹,鼓足短,足徑大,體型小而略扁;器壁渾厚,器表粗糙,有的通體無紋,有的裝飾稚拙簡樸的花紋,包含着後繼銅鼓裝飾藝術的萌芽(圖③:萬家壩型銅鼓——素紋銅鼓)。

  石寨山型銅鼓由萬家壩型銅鼓發展而來,這類銅鼓鼓形對稱和諧,裝飾華麗,多為幾何紋飾和寫實圖案,其中的羽人舞蹈、划船、捕魚、祭祀等寫實畫像,再現了當時南方民族的社會生活習俗。

  冷水沖型銅鼓由石寨山型銅鼓發展而來,其最大的特點就是花紋密集且高度圖案化,立體裝飾豐富,有青蛙、牛、馬、魚、穀倉、人物等等,如青蛙立體裝飾反映了古人求雨祈豐的信仰(圖②:冷水沖型銅鼓——牛拉橇飾變形羽人紋銅鼓)。

  遵義型銅鼓是冷水沖型銅鼓向麻江型銅鼓發展的一種過渡形態,最大的特點就是鼓面青蛙立體裝飾消失,但在鼓面有“蛙爪”紋。

  麻江型銅鼓鼓形矮扁,胸、腰、足三段無明顯分界,主要花紋有游旗、符錄、十二生肖、人物、花草、吉祥語和紀年銘文等,受漢文化影響比較明顯,也是現今我國南方少數民族普遍使用的銅鼓。

  北流型銅鼓以廣西北流市出土銅鼓為代表而得名,流行年代約為西漢至唐代,其特點是鼓形高大,鼓面大於鼓胸並有“垂檐”,附環耳,遍體多飾精細的雲雷紋等紋飾,鼓面的立蛙一般瘦小無紋,鼓面背部通常有調音鏟痕。

  靈山型銅鼓的造型與北流型銅鼓大體相似。不同的是,靈山型銅鼓鼓身一律附以扁耳,青蛙後足合併成為三足蛙,蛙背有紋飾,多見累蹲蛙。鼓面和鼓身多見錢紋、變形羽人紋、蟲紋、鳥紋、獸紋、四瓣花紋、蟬紋、席紋等,部分鼓的鼓身或鼓腔內有動物立體裝飾。

  西盟型銅鼓以中國雲南省西盟佤族地區使用銅鼓為代表,這類銅鼓鼓身接近直筒,無腰足之分,多三弦分暈,暈圈窄而密,鼓面紋飾多見鳥、魚、花、眼、米粒紋,鼓面青蛙立飾常見三累蹲蛙,甚至四蛙疊踞。現今東南亞克倫、泰等民族仍在使用此類型銅鼓。

  自唐代以來,關於銅鼓的詩歌就不絕於耳。唐代溫庭筠作《河瀆神祠》記錄了南方水邊民族將銅鼓作為祭祀禮器用於競渡賽神的場面。事實上,在石寨山型銅鼓鼓胸上,常常能見到划船紋,有的很明顯能看到兩排頭戴羽冠的人在奮力划船競渡。競渡賽神是百越民族重要的祭祀活動,滿庭的幡蓋與震天的鼓聲交相輝映,一展賽神風採的同時,也說明了銅鼓作為祭祀禮器的重要地位。(圖④:廣西貴縣羅泊灣漢墓M110號鼓鼓身展開圖,鼓胸划船紋展示了百越民族競渡賽神場面。)

  在漫長的歷史發展過程中,銅鼓與當地各民族的社會、經濟、文化生活緊密地聯繫在一起,形成獨特的銅鼓文化。銅鼓曾作為統治權力的象徵,作為祭祀用具和娛樂用具,廣泛用於陳列、集眾、盟會、戰陣、祭祀、娛樂、喪葬等場合。銅鼓又是一種綜合藝術品,集冶鍊、鑄造、繪畫、雕塑、音樂、舞蹈於一身,其獨特的造型和豐富的紋飾,反映了鑄造銅鼓的民族當時的經濟狀況、文化面貌,堪稱一部民族歷史的百科全書。而且,銅鼓並沒有消失在歷史的長河中,它穿越千年,傳承着民族厚重的歷史和燦爛的文化,並在新時代繼續奏響民族和諧之歌。

  (作者分別為廣西民族博物館館長和廣西民族博物館研究三部主任。本報記者李縱整理。圖片由廣西民族博物館提供)

本站聲明:網站內容來http://www.societynews.cn/html/wh/fq/,如有侵權,請聯繫我們,我們將及時處理

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

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

GitHub 熱點速覽 Vol.22:如何打造超級技術棧_網頁設計

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

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

作者:HelloGitHub-小魚乾

摘要:build-your-own-x,無論是新手還是老手,這都是一個指向標。方向有了,剩下就是時間和實踐的事情,收集了大量可用於軟件和 Web 開發的 Public APIs 無疑是你實踐之路的好搭檔,而拼寫檢查:vscode-spell-checker 也能讓你實踐更加順利,提升你的開發效益,節省研發時間。除了 VSCode 的插件幫你更好地實踐技術,responsively-app 這種為調試響應式頁面的瀏覽器也是一個好幫手。

以下內容摘錄自微博@HelloGitHub 的 GitHub Trending,選項標準:新發布 | 實用 | 有趣,根據項目 release 時間分類,發布時間不超過 7 day 的項目會標註 New,無該標誌則說明項目 release 超過一周。由於本文篇幅有限,還有部分項目未能在本文展示,望周知

  • 本文目錄
    1. 本周特推
      1.1 macOS 免費體驗:macos-virtualbox
    2. GitHub Trending 周榜
      2.1 Web 開發提速:responsively-app
      2.2 SQL 分析:DuckDB
      2.3 UI 組件管理器:Storybook
      2.4 Demo 之母:RealWorld
      2.5 API 集大成者:Public APIs
      2.6 公式推導解析:pumpkin-book
      2.7 超級技術棧:build-your-own-x
      2.8 架構師技術圖譜:awesome-architecture
    3. 本周 GitHub Trending #VSCode 插件# 主題的主力軍
      3.1 頁面自動加載:vscode-live-server
      3.2 拼寫檢查:vscode-spell-checker
      3.3 Vim 仿真器:VSCodeVim
    4. 推薦閱讀

1. 本周特推

1.1 macOS 免費體驗:macos-virtualbox

本周 star 增長數:2800+

想免費體驗 macOS 系統嗎?macos-virtualbox 是一個 macOS 虛擬機,支持 Windows、Linux。默認安裝僅要求用戶耐心地坐下,並且在腳本提示按不到十次的 Enter 鍵,無需與虛擬機進行交互。當前支持 macOS Catalina(10.15),Mojave(10.14)和High Sierra(10.13)。

GitHub 地址→https://github.com/myspaghetti/macos-virtualbox

2. GitHub Trending 周榜

2.1 Web 開發提速:responsively-app

本周 star 增長數:1700+

responsively-app 是來自印度的開發者 Manoj Vivek 為調試響應式頁面的開發的瀏覽器,主要有以下特性:

  • 跨設備鏡像用戶交互
  • 可定製的預覽布局,以滿足開發需求
  • 一個方便的元素檢查支持所有設備預覽
  • 30+ 內置設備配置文件,可選擇添加自定義設備。
  • 一鍵截圖所有設備。
  • 支持開發者熱重載

GitHub 地址→https://github.com/manojVivek/responsively-app

2.2 SQL 分析:DuckDB

本周 star 增長數:650+

DuckDB 是一款嵌入式關係型分析數據庫,主要用於嵌入其他程序執行快速的 SQL 分析查詢,官方稱其為“分析型數據庫中的 SQLite”,使用 C 或 C++ 可將數據庫服務器直接嵌入到應用程序中。特性:

  • 語法解析:使用 PostgreSQL 解析器,該解析器被重新打包為獨立庫
  • shell:對 SQLite shell 進行了調整,以使用 DuckDB
  • 測試:使用 SQLite 中的 SQL 邏輯測試來測試 DuckDB
  • 模糊查詢:使用 SQLsmith 生成隨機查詢以進行額外的測試
  • Date Math:使用 MonetDB 中的 Date Math 組件
  • SQL 窗口函數:DuckDB 的窗口函數實現使用分段樹聚合,如 Viktor Leis、KanKundhikanjana、Alfons Kemper 和 Thomas Neumann
  • 執行引擎:矢量化執行引擎的靈感來源於 PeterBoncz、Marcin Zukowski 和 Niels nes 的論文 “MonetDB/X 100:超級流水線查詢執行”
  • 優化器:DuckDB 的優化器從 Guido Moerkotte 和 Thomas Neumman 的論文 “動態規劃回擊” 以及 Thomas Neumann 和 Alfons Kemper 的“取消任意查詢嵌套”中獲得靈感
  • 併發控制:我們的 MVCC 實現靈感來自於 Thomas Neumann,Tobias Mühlbauer 和 Alfons Kemper 的論文“用於主存數據庫系統的快速序列化多版本併發控制”
  • 存儲:DuckDB 使用 DataBlock 作為持久存儲,如 Harald lang、Tobias Mühlbauer、Florian Funke、Peter Boncz、Thomas Neumann 和 Alfons Kemper 在“數據塊:利用矢量化和編譯的壓縮存儲上的混合 OLTP和OLAP” 中描述的那樣
  • 正則表達式:DuckDB 使用 Google 的 RE2 正則表達式引擎

GitHub 地址→https://github.com/cwida/duckdb

2.3 UI 組件管理器:Storybook

本周 star 增長數:550+

Storybook 是一個 UI 組件的開發環境,允許你瀏覽組件庫、查看每個組件的不同狀態以及交互式開發和測試組件。

GitHub 地址→https://github.com/storybookjs/storybook

2.4 Demo 之母:RealWorld

本周 star 增長數:450+

RealWorld 向大家展示了如何使用 React/Angular 等框架在 Node/Django 等平台上構建類 Medium 博客平台。開發者可以把它們混合起來,因為它們都遵循相同的 API 規範。

GitHub 地址→https://github.com/gothinkster/realworld

2.5 API 集大成者:Public APIs

本周 star 增長數:1850+

Public APIs 收集了可用於軟件和 Web 開發的大量 API,包括金融、防詐騙、文字分析、動漫、健身等等 50 + 個分類 API,如果你要找資源不妨試試這個公共 API 項目 ​​​​

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

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

GitHub 地址→https://github.com/public-apis/public-apis

2.6 公式推導解析:pumpkin-book

本周 star 增長數:600+

pumpkin-book 是《機器學習》(西瓜書)公式推導解析,包括:模型評估與選擇、線性模型、決策樹、神經網絡、支持向量機、貝恭弘=叶 恭弘斯分類器、集成學習、降維與度量學習、特徵選擇與稀疏學習等等內容。

GitHub 地址→https://github.com/datawhalechina/pumpkin-book

2.7 超級技術棧:build-your-own-x

本周 star 增長數:2550+

build-your-own-x 是一個收錄了大量資源的項目,它旨在教你構建一些專屬於自己的技能,內容包括:3D 渲染器、增強現實、區塊鏈、遊戲、搜索引擎、命令行工具、神經網絡、視覺識別、bot 等等 27 個大類。

GitHub 地址→https://github.com/danistefanovic/build-your-own-x

2.8 架構師技術圖譜:awesome-architecture

本周 star 增長數:100+

awesome-architecture 架構師技術圖譜包括:分佈式、前端、大數據、存儲、微服務、推薦系統、框架 、消息隊列、編程語言、設計模式、重構、集群等內容。

GitHub 地址→https://github.com/toutiaoio/awesome-architecture

3. 本周 GitHub Trending #VSCode 插件#主題的主力軍

一款好用的插件能提高我們的開發效率,VSCode 作為 Top IDE,它豐富的生態系統也是大多數開發者選擇使用它開發軟件的原因,在本期的主題項目中,小魚乾選擇了 3 個超好用的插件希望能提高你的開發效率。

3.1 頁面自動加載:vscode-live-server

vscode-live-server 是一個允許我們在更改 IDE 代碼時自動重新加載 Web 頁面的插件。

GitHub 地址→https://github.com/ritwickdey/vscode-live-server

3.2 拼寫檢查:vscode-spell-checker

vscode-spell-checker是一款拼寫檢查小工具,可幫你報告一些常見的拼寫錯誤,尤其適合駝峰式代碼。

GitHub 地址→https://github.com/streetsidesoftware/vscode-spell-checker

3.3 Vim 仿真器:VSCodeVim

VSCodeVim 是一個用於 Visual Studio Code 的 Vim 仿真器,為你的文本編輯器帶來 Vim 的強大功能。

GitHub 地址→https://github.com/VSCodeVim/Vim

推薦閱讀

  • GitHub 熱點速覽 Vol.21:Go 新手起手式,學就完事兒了
  • GitHub 熱點速覽 Vol.20:VSCode 插件全家桶新增畫圖小能手
  • GitHub 熱點速覽 Vol.19:如何叩響大廠的門?

以上為 2020 年第 22 個工作周的 GitHub Trending 如果你 Pick 其他好玩、實用的 GitHub 項目,記得來 HelloGitHub issue 區和我們分享下喲

HelloGitHub 交流群現已全面開放,添加微信號:HelloGitHub 為好友入群,可同前端、Java、Go 等各界大佬談笑風生、切磋技術~

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

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

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

WWDC2022登場?下代Mac Pro規格曝光 最高內建64核ARM處理器_網頁設計

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

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

就在蘋果分手Intel,推出首款專為Mac設計的M1晶片,取得巨大的成功之時。蘋果爆料大神LeaksApplePro就在推特上表示,蘋果目前正在著手研發下一代的Mac Pro,新一代的Mac Pro預計在WWDC 2022正式問世,將會內建16、32、64核處理器。

根據蘋果官網資料顯示,目前Mac Pro最高可以搭載Intel Xeon W 2.5GHz 28核心處理器,記憶體最高可安裝1.5TB(12條128GB DIMM)、儲存裝置為8TB SSD,而顯示部分最高可採用兩張Radeon Pro Vega II Duo 32GB顯示卡。

而下一代的Mac Pro規格,根據爆料大神LeaksApplePro的內容,除了會在 WWDC 2022公布之外,處理器部分會有16、32、64核三種處理器,記憶體則是維持原有的最高可安裝至 1.5TB,但最高儲存空間則翻倍成為16TB SSD。

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

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

雖然顯示卡部分並沒有透漏,但根據先前《彭博社》的報導指出,蘋果正在開發128核心GPU所組成的SoC,希望能藉此擺脫對Intel處理器與AMD顯示卡的依賴。除此之外,蘋果另外還會推出由8、12、16核心 CPU,配合16、32、64核心GPU,來組成各種SoC產品進行販售,而《彭博社》相信128核心GPU所組成的SoC將會優先使用在蘋果的頂級電腦機種Mac Pro上面,但其餘產品會先在2021年的MacBook Pro上登場。

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

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

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

手把手教你學numpy,從此數據處理不再慌【三】_網頁設計

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

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

本文始發於個人公眾號:TechFlow,原創不易,求個關注

今天是numpy專題的第三篇,我們來聊聊numpy當中的索引。

上篇的末尾其實我們簡單地提到了索引,但是沒有過多深入。沒有過多深入的原因也很簡單,因為numpy當中關於索引的用法實在是很多,並不是我們想的那樣用一個下標去獲取數據就完事了。

所以我整理了一下相關的用法,把關於索引的使用簡單分成了幾類,我們一個一個來看。

切片索引

切片我們都熟悉,用冒號將兩個數隔開,表示一個區間的上界和下界。通過這種方式訪問這個區間內的所有元素。

這一點我們之前介紹過,我們簡單回顧一下。

這是一維數組的切片,既然一維數組可以切片,那麼同樣高維數組也可以切片。我們來看一個二維的數組的切片:

我們生成了一個3 x 4的二維數組,然後通過切片獲取了它的1-2數據。由於我們是對行切片,默認保留這一行的所有數據。

如果我們並不需要所有數據,而是只需要某一列的固定數據,可以寫成這樣:

這一行代碼的意思是對於行我們獲取1-3行固定第二列的數據,我們用表格表示的話大概是下面這個樣子:

我們也可以對兩個維度同時切片,這樣可以得到更加複雜的數據:

這樣切片獲得的數據大概是這樣的:

也就是說在numpy的數組當中各個維度是分開的,每一個維度都支持切片。我們可以根據我們的需要切片或者是固定下標來獲取我們想要的切片。

bool型索引

numpy當中還有一個非常好用的索引方式叫做bool型索引。前文介紹廣播的時候曾經介紹過,當我們將兩個大小不一致的數組進行計算的時候,numpy會自動幫我們將它們廣播成大小一致的情況再進行運算。

而邏輯判斷其實也是一種運算,所以如果我們將邏輯運算應用在numpy數組上的話同樣會得到一個numpy數組,只不過是bool類型的numpy數組。

我們來看一個例子:

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

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

我們創建了一個numpy的數組,然後將它和整數4進行比較,numpy會將這個運算廣播到其中每一個元素當中,然後返回得到一個bool類型的numpy數組。

這個bool類型的數組可以作為索引,傳入另外一個數組當中,只有bool值為true的行才會被保留。

我們發現只有第4行和第6行的數據被保留了,也就是bool值為true的行號被保留了。這是非常有用的數據獲取方式,我們可以直接將判斷條件放入索引當中進行數據的過濾,如果應用熟練了會非常方便。

再舉個例子,假如我們要根據二維數據的第一列的數據進行過濾,僅僅保留第一列數據大於0.5的。如果按照傳統的方法我們需要用一個循環去過濾,但是使用bool類型索引,我們可以只需要一行搞定:

arr[arr[:, 0] > 0.5]

如果有多個條件,我們可以用位運算的與或非進行連接。在Python當中位運算的與或非分別用符號&, |, ~表示。

舉個例子,比如我們想要篩選出arr數組當中第1列大於0.5,並且第二列小於0.5的數據,我們可以寫成這樣:

arr[(arr[:, 0] > 0.5) & (arr[:, 1] < 0.5)]

如果我們想求這個條件的相反條件,我們當然可以將判斷條件反過來寫,但是也可以通過~符號直接取反:

arr[~((arr[:, 0] > 0.5) & (arr[:, 1] < 0.5))]

花式索引

除了bool索引之外,numpy當中還支持一種花式索引。

所謂的花式索引,意思是說支持將另外一個數組當做是索引來訪問數據

舉個很簡單的例子:

從上面的例子我們可以看出來,我們把idx這個數組當中的值當做了索引進行了數據的訪問。並且有重複值也沒有關係,numpy不會進行去重。

通過數組訪問數據有什麼用呢?其實非常有用,在我們做機器學習的過程當中,我們經常涉及到一個採樣的問題。我們每次訓練並不是全量的數據,否則非常慢,有時候甚至是不可能完成的,因為數據量太大了。我們往往是抽取出一批數據作為一個batch來訓練的,這個在之前批量梯度下降的文章當中曾經提到過。

那麼一個batch的數據是怎麼抽取的呢?就是這樣抽取的,我們會調用np中的一個函數叫做choice,我們用它來從所有樣本的下標當中抽取我們指定數量的下標。

有了下標數組之後,我們用一下花式索引就可以拿到對應的全部數據了,如果你看過大牛寫的深度學習的代碼,裏面幾乎都是這樣實現的。

總結

今天關於numpy當中索引的使用和介紹就到這裏,僅僅看介紹可能感受並不明顯。但如果上手用numpy做過一次數據處理和實現過機器學習的模型,相信一定可以感受到它的易用性和強大的功能。索引這個功能非常常用,也非常重要,在後序的pandas庫當中同樣沿用了numpy中對於索引的設定和功能。因此這既是重要的基本功,也是為後面的學習打基礎。

如果喜歡本文,可以的話,請點個關注,給我一點鼓勵,也方便獲取更多文章。

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

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

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品