2014年8月31日 星期日

[LTE]手機IDLE到註冊網路過程



1UE根據優先順序順序自主選擇PLMN
UE ASAccess Stratum)初始社區查尋(測量社區的信號強度,將可用的PLMN標識上報給NAS,從SIB1中讀取了所有PLMN,並且它向UE NASNon Access Stratum)報告,UE NAS將根據這種被預定義的優先順序來選擇其中的一個。
2、頻率選擇
如果UE能保存上次關機時的頻點資訊,則開機後可能會先在上次駐留的社區上嘗試駐留;如果沒有先驗資訊,則很可能要全頻段搜索,發現信號較強的頻點,再去嘗試駐留。
3、Cell Search(獲得PCI和下行同步)
在上一步確定的中心頻點周圍收PSSprimary synchronization signal)和SSSsecondary synchronization signal),這兩個信號和系統頻寬沒有限制,可以直接檢測並接收到,據此可以得到社區ID
4、獲取系統消息
完成社區搜索需要接收SIB,即UE接收承載在PDSCH上的BCCH資訊。
5Cell selection
Cell selection主要是為了選擇一個合適的cell並將該手機駐紮到該社區中。
6、Location Registration(PLMN註冊)
手機完成PLMNCell選擇後,會發起位置註冊流程(location registration),將手機的位置報告給移動網路。
Reference: http://blog.sina.com.cn/s/blog_6617106b0101e93i.html

[Android] Dalvik和JVM的區別是什麼?

相同點:
    都使用Java語法
不同點:
    位元組碼格式定義不同(dex格式 vs class格式)
    運行庫不同
    多虛擬機器併發運行優化:共用dex,大量使用mmap…
    啟動機制不同:預載入、預初始化
    編譯過程不同

Dalvik不能運行.class.jar
Dalvik不具備JavaMEAPI
Dalvik的大部分函式程式庫來自Apache Harmony項目
    http://harmony.apache.org

[Android]SIM卡的EF 文件有何作用

Android面試題:sim卡的EF 有何作用 最詳細的講解。 
sim卡的檔案系統有自己規範,主要是為了和手機通訊,sim 身可以有自己的作業系統,EF就是作存儲並和手機通訊用的 

SIM (Subscriber Identity Module) 卡是一種智慧卡, ISO7816中對智慧卡作了基本的定義. SIM卡提供給用戶的是它的移動性和便攜性. 

SIM卡的硬體組成 
CPU: SIM卡中的CPU和電腦中CPU一樣負責整個SIM卡的控制, 運算和操作. 
ROM: SIM卡中存放整個片內作業系統的地方. 
EPPROM: 相當於SIM卡中的硬碟存放著整個檔案系統和任何需要應用程式讀寫的資訊. 
RAM: 和電腦RAM的一樣,也是用來存放計算過程中的臨時資料 

SIM卡的片內作業系統 
Chip Operating System (COS) 就是片內作業系統, 它是SIM卡內的中央控制中心, 負責卡內所有的操作. 它是一個單任務單執行緒的監控程序. 片內作業系統的功能模組按順序主要有以下幾個: 

傳送管理器——主要負責SIM卡和手機之資料的非同步傳輸. 因為SIM卡上只有一個觸點是用來進行資料傳送的, 所以只能應用ISO 7816 T=0 協定(該協定是面向比特的). 
安全管理器——負責加密, 解密和鑒別. 
應用管理器——根據來自手機的指令對相應的發出讀或寫的指令並把回應返回給手機. 
檔案管理員——根據應用管理器的指令對某個進行讀寫.  

SIM卡上的檔案系統 
SIM卡裡面所有的資料都存放在裡面, 每一個都有特定的標誌符, 檔案管理員通過該標誌符來存取和讀寫. 這些不能被任意的創建, SIM卡出廠的時候, 它裡面的檔案系統已經創建好了. 每一個都必須有一個, 有的會有. 

SIM卡裡的所有按樹來組織: 
文件MF(Master File)——每一塊SIM卡只有一個唯一的主文件, 其他所有都是它的子孫, 文件只有,裡面存放著整個SIM卡的控制和管理資訊 
專用DF(Dedicated File)——也是只有一個, 裡面存放著整個目錄的管理控制資訊, 專用相當於一個目錄的根. 
基本文件EF(Elementary File)——既有文件,也有文件, 頭存放該的位置和控制資訊, 體存放真正的資料, 整個SIM卡中只有基本, 也只有基本才用來存放資料. 

原文地址:http://dev.10086.cn/blog/?uid-17943-action-viewspace-itemid-11622

[JAVA]Array and ArrayList 差異

1)精闢闡述:
可以將 ArrayList想像成一種會自動擴增容量的Array

2Array[]):最高效;但是其容量固定且無法動態改變;
     ArrayList  容量可動態增長;但犧牲效率;

3)建議:
基於效率和類型檢驗,應盡可能使用Array無法確定陣列大小時才使用ArrayList
不過當你試著解決更一般化的問題時,Array的功能就可能過於受限。

4Java中一切皆物件,Array也是物件。不論你所使用得Array型別為何,
Array名稱本身實際上是個reference,指向heap之內得某個實際物件。
這個物件可經由Array初始化語法被自動產生,也可以以new運算式手動產生。

5Array可做為函數返回值,因為它本身是物件的reference

6)物件陣列與基本類型陣列在運用上幾乎一模一樣,唯一差別在於,前者持有得是reference,後者直接持有基本型別之值;
例如:
string [] staff=new string[100];
int [] num=new int[10];

7)容器所持有的其實是一個個reference指向Object,進而才能存儲任意型別。當然這不包括基本型別,因為基本型別並不繼承自任何classes

8)面對Array,我們可以直接持有基本型別數值的Array(例如:int [] num;),也可以持有reference(指向物件)的Array;但是容器類僅能持有reference(指向物件),若要將基本型別置於容器內,需要使用wrapper類。但是wrapper類使用起來可能不很容易上手,此外,primitives Array的效率比起容納基本型別之外覆類(的reference的容器好太多了。

當然,如果你的操作物件是基本型別,而且需要在空間不足時自動擴增容量,Array便不適合,此時就得使用外覆類的容器了。

9)某些情況下,容器類即使沒有轉型至原來的型別,仍然可以運作無誤。有一種情況尤其特別:編譯器對String class提供了一些額外的支援,使它可以平滑運作。

10)對陣列的一些基本操作,像排序、搜索與比較等是很常見的。因此在Java中提供了Arrays類協助這幾個操作:sort(),binarySearch(),equals(),fill(),asList().

不過Arrays類沒有提供刪除方法,而ArrayList中有remove()方法,不知道是否是不需要在Array中做刪除等操作的原因(因為此時應該使用鏈表)。

11ArrayList的使用也很簡單:產生ArrayList,利用add()將物件置入,利用get(i)配合索引值將它們取出。這一切就和Array的使用方式完全相同,只不過少了[]而已。

2.參考資料:
1)效率:
陣列擴容是對ArrayList效率影響比較大的一個因素。
每當執行AddAddRangeInsertInsertRange等添加元素的方法,都會檢查內部陣列的容量是否不夠了,如果是,它就會以當前容量的兩倍來重新構建一個陣列,將舊元素Copy到新陣列中,然後丟棄舊陣列,在這個臨界點的擴容操作,應該來說是比較影響效率的。

ArrayListArray的複雜版本
ArrayList內部封裝了一個Object類型的陣列,從一般的意義來說,它和陣列沒有本質的差別,甚至於ArrayList的許多方法,如IndexIndexOfContainsSort等都是在內部陣列的基礎上直接調用Array的對應方法。

2)類型識別:
ArrayList存入物件時,拋棄類型資訊,所有物件遮罩為Object,編譯時不檢查類型,但是運行時會報錯。
ArrayList與陣列的區別主要就是由於動態增容的效率問題了

3ArrayList可以存任何Object,如String等。