❶ android中有幾種布局技術,各自優缺點
在4.0以前版本中一共有五種布局,都是ViewGroup的子類。分別是AbsoluteLayout、RelativeLayout、LinearLayout、FrameLayout、TableLayout。而TableLayout是LinearLayout的子類。(中文分別是:絕對布局、相對布局、線性布局念弊敏、幀布局、表格布局)。
在2.2作業系統中將AbsoluteLayout過期。而目前FrameLayout、TableLayout也逐漸少用。
在4.0之後又新增GridLayout。(GridLayout最經典的案例是計算器介面)
總之,Android中一共有六種布局。目前推薦使用RelativeLayout、LinearLayout、GridLayout三種布局。
一般簡單的布局就用LinearLayout,復雜點的用RelativeLayout(可以防止多層巢狀),像FrameLayout,裡面的控制元件是重疊的,AbsoluteLayout裡面控制元件位置是絕對的,在螢幕適配方面就不行了。
xml布局簡單,推薦使用;程式碼布局可以實現更豐富的功能。
具體使用根據你自己專案的需求來選擇。
RAID是「Rendant Array of Independent Disk」的縮寫,中文意思是獨立冗餘磁碟陣列。
主要包含RAID 0~RAID 7等數個規范,它們的側重點各不相同,常見的規范有如下幾種:
RAID 0:無差錯控制的帶區組
要實現RAID0必須要有兩個以上硬碟驅動器,RAID0實現了帶區組,資料並不是儲存在一個硬碟上,而是分成資料塊儲存在不同驅動器上。因為將資料分布在不同驅動器上,所以資料吞吐率大大提高,驅動器的負載也比較平衡。如果剛好所需要的資料在不同的驅動器上效率最好。它不需要計算校驗碼,實現容易。它的缺點是它沒有資料差錯控制,如果一個驅動器中的資料發生錯誤,即使其它盤上的資料正確也無濟於事了。不應該將它用於對資料穩定性要求高的場合。如果使用者進卜派行圖象(包括動畫)編輯和其它要求傳輸比較大的場合使用RAID0比較合適。同時,RAID可以提高資料傳輸速率,比如所需讀取的檔案分布在兩個硬碟上,這兩個硬碟可以同時讀取。那麼原來讀取同樣檔案的時間被縮短為1/2。在所有的級別中,RAID 0的速度是最快的。但是RAID 0沒有冗餘功能的,如果一個磁碟(物理)損壞,則所有的資料都無法使用。
RAID 1:鏡象結構
raid1對於使用這種RAID1結構的裝置來說,RAID控制器必須能夠同時對兩個盤進行讀操作和對兩個鏡象盤進行寫操作。通過下面的結構圖您也可以看到必須有兩個驅動器。因為是鏡象結構在一組盤出現問題時,可以使用鏡象,提高系統的容錯能力。它比較容易設計和實現。每讀一次盤只能讀出一塊資料,也就是說資料塊傳送速率與單獨的盤的讀取速率相同。因為RAID1的校驗十分完備,因此對系統的處理能力有很大的影響,通常的RAID功能由軟體實現,而這樣的實現方法在伺服器負載比較重的時候會大大影響伺服器效率。當您的系統需要極高的可靠性時,如進行資料統計,那麼使用RAID1比較合適。而且RAID1技術支援「熱替換」,即不斷電的情況下對故障磁碟進行更換,更換完畢只要從映象盤上恢復資料即可。當主仔枝硬碟損壞時,映象硬碟就可以代替主硬碟工作。映象硬碟相當於一個備份盤,可想而知,這種硬碟模式的安全性是非常高的,RAID 1的資料安全性在所有的RAID級別上來說是最好的。但是其磁碟的利用率卻只有50%,是所有RAID級別中最低的。
RAID2:帶海明碼校驗
從概念上講,RAID 2 同RAID 3類似,兩者都是將資料條塊化分布於不同的硬碟上, 條塊單位為位或字 節。然而RAID 2 使用一定的編碼技術來提供錯誤檢查及恢復。這種編碼技術需要多個磁碟存放檢查及恢復資訊,使得RAID 2技術實施更復雜。因此,在商業環境中很少使用。下圖右邊的各個磁碟上是資料的各個位,由一個數據不同的位運算得到的海明校驗碼可以儲存另一組磁碟上,具體情況請見下圖。由於海明碼的特點,它可以在資料發生錯誤的情況下將錯誤校正,以保證輸出的正確。它的資料傳送速率相當高,如果希望達到比較理想的速度,那最好提高儲存校驗碼ECC碼的硬碟,對於控制器的設計來說,它又比RAID3,4或5要簡單。沒有免費的午餐,這里也一樣,要利用海明碼,必須要付出資料冗餘的代價。輸出資料的速率與驅動器組中速度最慢的相等。
RAID3:帶奇偶校驗碼的並行傳送
raid3這種校驗碼與RAID2不同,只能查錯不能糾錯。它訪問資料時一次處理一個帶區,這樣可以提高讀取和寫入速度,它像RAID 0一樣以並行的方式來存放資料,但速度沒有RAID 0快。校驗碼在寫入資料時產生並儲存在另一個磁碟上。需要實現時使用者必須要有三個以上的驅動器,寫入速率與讀出速率都很高,因為校驗位比較少,因此計算時間相對而言比較少。用軟體實現RAID控制將是十分困難的,控制器的實現也不是很容易。它主要用於圖形(包括動畫)等要求吞吐率比較高的場合。不同於RAID 2,RAID 3使用單塊磁碟存放奇偶校驗資訊。如果一塊磁碟失效,奇偶盤及其他資料盤可以重新產生資料。如果奇偶盤失效,則不影響資料使用。RAID 3對於大量的連續資料可提供很好的傳輸率,但對於隨機資料,奇偶盤會成為寫操作的瓶頸。利用單獨的校驗盤來保護資料雖然沒有映象的安全性高,但是硬碟利用率得到了很大的提高,為(n-1)/n。
RAID4:帶奇偶校驗碼的獨立磁碟結構
raid4RAID4和RAID3很像,不同的是,它對資料的訪問是按資料塊進行的,也就是按磁碟進行的,每次是一個盤。在圖上可以這么看,RAID3是一次一橫條,而RAID4一次一豎條。它的特點和RAID3也挺像,不過在失敗恢復時,它的難度可要比RAID3大得多了,控制器的設計難度也要大許多,而且訪問資料的效率不怎麼好。
RAID5:分散式奇偶校驗的獨立磁碟結構
RAID5清晰圖片從它的示意圖上可以看到,它的奇偶校驗碼存在於所有磁碟上,其中的p0代表第0帶區的奇偶校驗值,其它的意思也相同。RAID5的讀出效率很高,寫入效率一般,塊式的集體訪問效率不錯。因為奇偶校驗碼在不同的磁碟上,所以提高了可靠性,允許單個磁碟出錯。RAID 5也是以資料的校驗位來保證資料的安全,但它不是以單獨硬碟來存放資料的校驗位,而是將資料段的校驗位互動存放於各個硬碟上。這樣,任何一個硬碟損壞,都可以根據其它硬碟上的校驗位來重建損壞的資料。硬碟的利用率為n-1。但是它對資料傳輸的並行性解決不好,而且控制器的設計也相當困難。RAID 3 與RAID 5相比,重要的區別在於RAID 3每進行一次資料傳輸,需涉及到所有的陣列盤。而對於RAID 5來說,大部分資料傳輸只對一塊磁碟操作,可進行並行操作。在RAID 5中有「寫損失」,即每一次寫操作,將產生四個實際的讀/寫操作,其中兩次讀舊的資料及奇偶資訊,兩次寫新的資料及奇偶資訊。RAID-5的話,優點是提供了冗餘性(支援一塊盤掉線後仍然正常執行),磁碟空間利用率較高(N-1/N),讀寫速度較快(N-1倍)。RAID5最大的好處是在一塊盤掉線的情況下,RAID照常工作,相對於RAID0必須每一塊盤都正常才可以正常工作的狀況容錯效能好多了。因此RAID5是RAID級別中最常見的一個型別。RAID5校驗位即P位是通過其它條帶資料做異或(xor)求得的。計算公式為P=D0xorD1xorD2…xorDn,其中p代表校驗塊,Dn代表相應的資料塊,xor是數學運運算元號異或。
RAID5校驗位演演算法詳解
P=D1 xor D2 xor D3 … xor Dn (D1,D2,D3 …Dn為資料塊,P為校驗,xor為異或運算)
XOR(Exclusive OR)的校驗原理如下表:
A值 B值 Xor結果
0 0 0
1 0 1
0 1 1
1 1 0
這里的A與B值就代表了兩個位,從中可以發現,A與B一樣時,XOR(非或又稱"非異或")結果為0,A與B不一樣時,XOR結果就是1,如果知道XOR結果,A和B中的任何兩個數值,就可以反推出剩下的一個數值。比如A為1,XOR結果為1,那麼B肯定為0,如果XOR結果為0,那麼B肯定為1。這就是XOR編碼與校驗的基本原理。
RAID6:兩種儲存的奇偶校驗碼的磁碟結構
raid6名字很長,但是如果看到圖,大家立刻會明白是為什麼,請注意p0代表第0帶區的奇偶校驗值,而pA代表資料塊A的奇偶校驗值。它是對RAID5的擴充套件,主要是用於要求資料絕對不能出錯的場合。當然了,由於引入了第二種奇偶校驗值,所以需要N+2個磁碟,同時對控制器的設計變得十分復雜,寫入速度也不好,用於計算奇偶校驗值和驗證資料正確性所花費的時間比較多,造成了不必須的負載。我想除了軍隊沒有人用得起這種東西。
常見的RAID6組建型別RAID 6(6D + 2P)
1 RAID 6(6D + 2P)原理
和RAID 5相似,RAID 6(6D + 2P)根據條帶化的資料生成校驗資訊,條帶化資料和校驗資料一起分散儲存到RAID組的各個磁碟上。在圖1中,D0,D1,D2,D3,D4和D5是條帶化的資料,P代表校驗資料,Q是第二份校驗資料。
RAID 6(6D + 2P)根據條帶化的資料生成校驗資訊,條帶化資料和校驗資料一起分散儲存到RAID組的各個磁碟上
RAID 6校驗資料生成公式(P和Q):
P的生成用了異或
P = D0 XOR D1 XOR D2 XOR D3 XOR D4 XOR D5
Q的生成用了系數和異或
Q = A0*D0 XOR A1*D1 XOR A2*D2 XOR A3*D3 XOR A4*D4 XOR A5*D5
D0~D5:條帶化資料
A0~A5:系數
XOR:異或
*:乘
在RAID 6中,當有1塊磁碟出故障的時候,利用公式1恢復資料,這個過程是和RAID 5一樣的。而當有2塊磁碟同時出故障的時候,就需要同時用公式1和公式2來恢復資料了。
各系數A0~A5是線性無關的系數,在D0,D1,D2,D3,D4,D5,P,Q中有兩個未知數的情況下,也可以聯列求解兩個方程得出兩個未知數的值。這樣在一個RAID組中有兩塊磁碟同時壞的情況下,也可以恢復資料。
上面描述的是校驗資料生成的演演算法。其實RAID 6的核心就是有兩份檢驗資料,以保證兩塊磁碟同時出故障的時候,也能保障資料的安全。
RAID7:優化的高速資料傳送磁碟結構
RAID7所有的I/O傳送均是同步進行的,可以分別控制,這樣提高了系統的並行性,提高系統訪問資料的速度;每個磁碟都帶有高速緩沖儲存器,實時作業系統可以使用任何實時操作晶片,達到不同實時系統的需要。允許使用SNMP協議進行管理和監視,可以對校驗區指定獨立的傳送通道以提高效率。可以連線多台主機,因為加入高速緩沖儲存器,當多使用者訪問系統時,訪問時間幾乎接近於0。由於採用並行結構,因此資料訪問效率大大提高。需要注意的是它引入了一個高速緩沖儲存器,這有利有弊,因為一旦系統斷電,在高速緩沖儲存器內的資料就會全部丟失,因此需要和UPS一起工作。當然了,這么快的東西,價格也非常昂貴。
RAID10/01:高可靠性與高效磁碟結構
這種結構無非是一個帶區結構加一個鏡象結構,因為兩種結構各有優缺點,因此可以相互補充,達到既高效又高速還可以互為映象的目的。大家可以結合兩種結構的優點和缺點來理解這種新結構。這種新結構的價格高,可擴充性不好。主要用於容量不大,但要求速度和差錯控制的資料庫中。
其中可分為兩種組合:RAID10和RAID01
RAID 10是先鏡射再分割槽資料。是將所有硬碟分為兩組,視為是RAID 0的最低組合,然後將這兩組各自視為RAID 1運作。RAID 10有著不錯的讀取速度,而且擁有比RAID 0更高的資料保護性。
RAID 01則是跟RAID 10的程式相反,是先分割槽再將資料鏡射到兩組硬碟。它將所有的硬碟分為兩組,變成RAID 1的最低組合,而將兩組硬碟各自視為RAID 0運作。RAID 01比起RAID 10有著更快的讀寫速度,不過也多了一些會讓整個硬碟組停止運轉的機率;因為只要同一組的硬碟全部損毀,RAID 01就會停止運作,而RAID 10則可以在犧牲RAID 0的優勢下正常運作。
RAID 10巧妙的利用了RAID 0的速度以及RAID 1的保護兩種特性,不過它的缺點是需要的硬碟數較多,因為至少必須擁有四個以上的偶數硬碟才能使用。
RAID 50:被稱為分布奇偶位陣列條帶
同RAID 10相仿的,它具有RAID 5和RAID 0的共同特性。它由兩組RAID 5磁碟組成(每組最少3個),每一組都使用了分散式奇偶位,而兩組硬碟再組建成RAID 0,實驗跨磁碟抽取資料。RAID 50提供可靠的資料儲存和優秀的整體效能,並支援更大的捲尺寸。即使兩個物理磁碟發生故障(每個陣列中一個),資料也可以順利恢復過來。
RAID 50最少需要6個驅動器,它最適合需要高可靠性儲存、高讀取速度、高資料傳輸效能的應用。這些應用包括事務處理和有許多使用者存取小檔案的辦公應用程式。
RAID 53:稱為高效資料傳送磁碟結構
結構的實施同Level 0資料條陣列,其中,每一段都是一個RAID 3陣列。它的冗餘與容錯能力同RAID 3。這對需要具有高資料傳輸率的RAID 3配置的系統有益,但是它價格昂貴、效率偏低。
RAID 1.5:一個新生的磁碟陣列方式
它具有RAID 0+1的特性,而不同的是,它的實現只需要2個硬碟。
從表面上來看,組建RAID 1.5後的磁碟,兩個都具有相同的資料。當然,RAID 1.5也是一種不能完全利用磁碟空間的磁碟陣列模式,因此,兩個80GB的硬碟在組建RAID 1.5後,和RAID 1是一樣的,即只有80GB的實際使用空間,另外80GB是它的備份資料。如果把兩個硬碟分開,分別把他們執行在原系統,也是暢通無阻的。但通過實際應用,我們發現如果兩個硬碟在分開執行後,其資料的輕微改變都會引起再次重組後的磁碟陣列,沒法實現完全的資料恢復,而是以資料較少的磁碟為准。
:ke../view/7102.htm
一是基於埠的靜態vlan,一是基於mac地址的動態vlan,
布局最好是根據電路的原理先把元器件布局好,布線的話,數位電路用自動布線加手工調整,也可以先把關鍵的部分手工布好,再自動走其他的線,最後手工調整,類比電路、高頻電路都是需要手工布線的 自動的快,手動的是合理
一般是先自動後再用手動更改自動布線效率高,手工布線更合理
air sole:元祖級氣墊,厚1/2英寸,具有一定減震力現在常常用於入門級球鞋中。分為內建和外接。
zoom air:在一個較薄的氣墊中加入立體織物,以增強其彈性,多用於前掌內建,以增加啟動速度。
zoom cage:zoom air的加大版本,在強調彈性的同時加強了緩震性,但是由於設計因素,因此外部基本上加上龍骨作為支撐。多用於跑鞋。
air max:氣體容量大,緩震效果一流,內部分隔為不同氣室,氣壓不同,以增強穩定性。多用於中鋒鞋或者後掌。腳感較硬,沉重。
total max:理解為巨型max就可以了。
tuned air:一種非常好的氣墊,內部半圓形球體可以調節氣壓,緩震效果一流,但是成本太高,已經幾乎絕跡,但是有的跑鞋上貌似還有使用的說。
shox:工程橡膠一體鑄成的圓柱體結構,機械緩震體系,依賴形變來緩沖並反彈,目前唯一經過證實可以提高彈跳的科技。
impax:另外一種機械緩震系統,依靠拱形結構在運動中的形變來吸收沖擊力。實際應用效果遠不如理論效果,緩震較差,硬。
i.p.s:jordan系列自主研發的最新科技,根據運動中足底受力點來安置不同密度的phylon柱來提供緩震,用於jordan鞋。
phylon:就是你看見的nike的鞋子的白色鞋底
單提馬:中路防守薄弱 可以起橫車在六路和四路加強中路防與攻 注意對手一般會從中路進攻 比如盤頭馬。 窩心炮:炮窩心不宜太久,如果出不去了會造成麻煩 一般是為了強行吃對方中路的兵或進五路兵。 巡河車:對掉兵卒,活馬路,並且保馬,要注意如果你是車 馬 兵這樣的位置,對方進炮拴住你車和馬 那就相當麻煩了,所以進巡河車一定注意對方的炮。 夾炮屏風:炮在士角的位置 然後上兩個正馬,一般走成士角炮 和 過宮炮 局,靈活運用炮,攻守兼備。但要注意對方會出車騷擾你的陣型 特別是沒有跟的馬。 仙人指路:第一步走三路或七路兵,應付對仙人指路有同樣進兵卒,有頑強兇狠的直接運炮打兵。所以要看對方怎麼走,這種開局比較考棋力。初學者一般不建議走。 飛相局:首著飛相,比較注重防守,可以走成很多布局。。
一般的分旱秧和水秧,這個前期秧苗耐旱點且工作簡單一些,但是浪費種子多一點秧苗沒有水秧苗好。至於很詳細的東西就不好說了。
動態布局,也就是可以根據業務的需求改變介面。實際上就是用程式碼寫出介面,程式碼量比較大。而且維護起來十分的繁瑣。特別是一些介面空間比較多的時候。靜態的布局,是通過xml來實現的,適用於頁面比較固定的情況。但是維護起來比較方便。
噴墨印表機優點:整機價格相對彩色鐳射機便宜,較低的一次性購買成本獲得彩色照片級輸出的效果,缺點:使用耗材為墨盒,成本較高,長時間不用容易堵頭;
鐳射印表機優點:耗材單張列印成本低,耗材為墨粉,長時間不用也不用擔心堵頭的問題,列印速度快,高階產品可以滿足高負荷企業級輸出以及圖文輸出,缺點:中低端彩激的彩色列印效果不如噴墨機,可使用的列印介質較少;
針式印表機優點:可以復寫列印(發票及多聯單據),可以超厚列印(存摺證書列印),耗材為色帶,耗材成本低,缺點:工作噪音大,體積不可能縮小,列印精度不如噴墨及鐳射機。
❷ Android音視頻系列(七):PCM音頻單聲道與雙聲道的相互轉換
上一篇我們已經學習了PCM音頻的保存格式,這一篇我們通過掌握的知識,完成PCM音頻的單聲道和雙聲道的互相轉換。
首先我們把上一篇的最核心部分貼出來:
我們首先完成單聲道轉雙聲道的操作。
單聲道轉雙聲道的基本原理:
首先我錄制了一個音頻保存到ArrayList中:
錄制的是16位的數據,所以我們每一個采樣的數據會占據兩位,所以在拷貝的過程橋慶中,我們也要每兩位拷貝一次敏慶握:
單聲道轉聲道的操作就完成了。
雙聲道轉單聲道的原理:
我們可以按照單聲道雙聲道的做法,每四位取前兩位或後兩位的數據即可。但是這里我們換一種做法。
這里我們使用了ByteBuffer幫助我們把Byte轉成Short。其中有一個很重要的坑,就是設置Byte轉Short的規則:
所以我們一定要確保高低位的順序,否則得到的Short一定是錯的,經過測試,錄制的音頻是低位在前,所以我們修改ByteBuffer默認的高位在前的配置:
相同的原理,我們需要Byte轉Int都可以藉助對應的Buffer進行讀取,非常的方便。
基本流程和第一種方法一樣,如果是你用的java,你還可以通過位運算進行Short和Byte的轉換,但是kotlin的對應的運算符卻無法正確轉換,具體原因還不清楚,這也是為什差梁么我使用了Buffer進行轉換的原因。
只要我們掌握了PCM的保存格式,單聲道和雙聲道的互相轉換還是非常輕松的,下一篇我們來了解一下新的音頻格式:WAV。
❸ Android開發問題怎麼解決
R.java消失或解析異常
自定義title欄
SQLite isFirst和isBeforeFirst方法的區別
eclipse刪除空行
getX()和getRawX()的區別
imagView居中顯示問題
synchronized引發了 java.util.
獲取隨機顏色
去掉Activity的標題欄,全屏顯示
如何修改應用名稱及應用圖標
關於調試方法
Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
android.content.res.Resources.loadXmlResourceParser
android.content.res.Resources$NotFoundException
交互性的button定義的方法
在超級終端中執行程序報錯-Permission deny
從svn導入工程項目有驚嘆號
從svn導入工程項目有驚嘆號
首次進入帶有EditText的Activity不自動彈出軟鍵盤,再次點擊才彈
Gallery中OnItemClickListener與OnItemSelectedListener的區別
Eclipse中簽名導出apk崩潰,手動簽名
android.view.InflateException: Binary XML file line #異常的解決
判斷是否有root許可權
最簡單的Root 模擬器的方法
新版ADT開啟eclipse提示 "Running Android Lint" has encountered a problem
新版ADT開啟eclipse提示cannot open libstdc++.so.6..
無法升級ADT
❹ android中=和|=有什麼區別在線等,多謝各位大神了
1、=符號,就是賦值
baseNF.defaults = Notification.DEFAULT_SOUND;
意思:只有在這種情況下,才會彈出通知。
2、|=符號,a|=b的意思就是把a和b按位或然後賦值給a 按位或的意思就是先把a和b都換成2進制,然後用或操作,相當於a=a|b
意思:這邊系統自己通過定義,baseNF.defaults =Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE;得出來的值,就是2種情況下,都會通知的意思。
❺ 定位服務在哪裡打開 蘋果安卓操作各不一樣
1、蘋果iOS系統手機定位:在手機點擊【設置】,或者在主界面下拉打開搜索欄點擊輸入【設置】,點擊進入;進入設置頁面以後,往下拉,找到【隱私】,點擊進入隱私頁面;第一項就是【定位服務】,點擊進入之後將【定位服務】的開關打開即可;如果是某個軟體沒有打開定位,可以在【設置】下面拉到底部找到對應的軟體,點擊進入之後就可以看到【位置】選項,一般會有【永不】、【使用應用期間】兩種選擇,選擇後者即可打開;
2、安卓手機定位:打開設置,在安全和隱私裡面有定位服務點進去以後就可以看見GPS選項了,打開就可以了;或者有的手機下滑屏幕打開快捷開關界面,按一下GPS的按鈕,即可打開GPS。