SOA研究 1 從NIO開始

2021-07-12 06:04:57 字數 2152 閱讀 5771

最近在看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 顯示結...