最近在看dubbo原始碼,覺得dubbo還是設計很優秀。有個想法模擬dubbo去寫乙個soa框架。編寫soa框架,首先要解決底層傳輸問題,雖然dubbo預設是用netty傳輸,但是也是基於nio。所以我自己寫了nio程式設計例項,開始研究soa之路。
實現功能很簡單,client傳送訊息給server,server接收後又發訊息給client。
server端:
public
class
nioserver
extends
thread
public
nioserver(int port) throws ioexception
public
void
run()
if (key.isreadable())
if (key.iswritable())
} catch (closedselectorexception cek) catch (cancelledkeyexception ck) catch (throwable e)
}try catch (interruptedexception e)
}if(selector != null)
} catch (throwable e)
}private
void
doaccept(selectionkey key) throws ioexception
private
void
doread(selectionkey key) throws ioexception
channel.register(selector, selectionkey.op_write);
} catch (throwable e)
}private
void
dowrite(selectionkey key) throws ioexception
channel.register(selector, selectionkey.op_read);
} catch (throwable e)
}public
void
initserver(int port) throws ioexception
public
void
stopserver() throws ioexception
}public
static
void
main(string args) throws ioexception catch (exception e)
}}
client端:
public
class
nioclient
extends
thread
public
void
run()
channel.register(selector, selectionkey.op_write);
}if (key.isreadable())
if(key.iswritable())}}
} catch (closedchannelexception e) catch (ioexception e)
}private
void
doread(selectionkey key) throws ioexception
channel.register(selector, selectionkey.op_write);
}private
void
dowrite(selectionkey key) throws ioexception
channel.register(selector, selectionkey.op_read);
}public
void
stopserver() throws ioexception
}public
static
void
main(string args) throws ioexception, interruptedexception catch (exception e)
}}
從1開始的python
寫在前面 回到這次記錄的本身,因為之前我在公司寫了不少指令碼,然後分享給同事們參考使用,由於本身屬於額外的嘗試並且過程中沒有及時溝通和留下文件,所以沒有編碼經驗的同事會反饋比較頭大。因此所涉及到的常用功能會結合python語法進行分解,還是那句話,指令碼語言屬於用多了就能熟練的工具。先從需要什麼功能...
為什麼C陣列下標從0開始,而不是從1開始
對於學習過程式語言的人來說,相信絕大多數人都會有這樣的疑問 我們平時計數,通常是從一開始計數的,為什麼在程式語言中,陣列的下標是從0開始計算的呢?這是因為,c語言中,下標的含意是 當前元素到第乙個元素的偏移量。第乙個元素的下標自然就是0,第二個元素的下標為1,第n個元素的下標為n 1。這樣處理能帶來...
SQL Server ID自增列重新從1開始算起
sql server id自增列重新從1開始算起 資料庫原有id欄位,是自增列的,後來把資料全刪除後,想讓id自增列從1開始算起 方法1 1.dbcc checkident test reseed,0 2.insert into test values 55 select from test 顯示結...