2013/12/16

[Java] Web Server撰寫

網路的連線可以分成TCP以及UDP連線,TCP是連線導向且為可靠式,傳送上以每個byte為單位,有重傳機制確保資料可以正確地送到目的IP位址,適合用在傳輸文字、各種檔案、HTTP網路連線等這種不能損失封包的資料上,缺點是較無效率;而UDP則是非連線導向且為不可靠式,傳送上以每個packet為單位,因為不保證資料都能夠送達目的地,沒有重傳機制,速度較快,適合用在傳輸影音串流上,缺點是封包會有損失。

網路的連線可以從Physical layer -> Data Link layer -> Network layer -> Transport layer -> Application layer來探討,舉HTTP這個在user上的application為例子,是透過網路連線,經過電腦的MAC和IP位址,還有IP port number 80,最後透過HTTP的protocol來連線溝通。

2013/12/10

[Android] Bundle Error: java.lang.NullPointerException

使用Eclipse編寫Android程式,撰寫兩個Activity以上之間的切換,常常Activity之間會需要有資料的傳遞,就必須要透過Intent()及Bundle()來完成。

Android的資料傳遞架構如下

2013/12/09

[網際網路] 乙太網路封包格式(MAC Frame Format)

Ethernet (802.3 MAC frame format)

在網路傳輸資料是透過所謂的封包來傳送,封包內包含了目的及來源的MAC位址、IP和Port,才能夠讓資料正確的傳送到目的地。不過整個電腦的網路是利用各種網路拓樸連結在一起,有時候封包間會發生碰撞的問題,可以想像成在單行道上,兩台車都要通過,就會造成堵塞的現象。因此透過CSMA/CD(Carrier Sense Multiple Access with Collision, IEEE 802.3)的設計,訂定出了網路的封包大小最小為64bytes;最大為1518bytes,來避免封包碰撞的現象。

TCP/IP封包為例子,扣掉MAC位址及一些辨識碼[6(DA)+6(SA)+2(Ether type)+4(FCS)=18bytes],因此IP封包的大小為46~1500bytes,所以也常常會看到人家說網路的MTU1500bytes,就是這麼來的。

2013/12/05

[Linux] 常用指令:chmod

在執行Linux的執行檔時,有時候會發現並不能執行,這是因為目前的使用者沒有這個權限。
權限的概念在Linux中很常使用,有分為 user / group / other三種,根據不同的使用者狀態,就會有不同的檔案使用權限( read / write / execute ) 。

要改變使用權限就要使用chmod指令
chmod [options] mode file

-R recursive, i.e. include objects in subdirectories

-rwx 421

[Linux] 常用指令:grep

除了find之外,還有一個類似的指令是grep,這指令主要用來搜尋檔案裡相關的程式碼結果,在trace code的時候都非常的好用。

用法:
grep [-acinv] [--color=auto] 'find things' filename

-d, --directories=ACTION  how to handle directories;
-R, -r, --recursive       equivalent to --directories=recurse
-n, --line-number         print line number with output lines

[Linux] 常用指令:find

在Linux中常常會需要尋找檔案,這時候就要利用find這個指令來達成。

用法:
find [PATH] [option] [action]

-type [bcdpflsD] 搜尋檔案的類型為 TYPE 的,類型主要有:一般正規檔案 (f), 裝置檔案 (b, c), 目錄 (d), 連結檔 (l), socket (s), 及 FIFO (p) 等屬性。

-iname filename 不限大小寫

-exec command 將搜尋結果執行command動作