自己實現 message queue 的思路

2021-08-29 17:13:11 字數 817 閱讀 8054

[size=large]先寫乙個思路 有空來寫著玩

基於ice和mysql的message queue

基本流程:

== 伺服器端 ==

class task:

table_id

id----------------------

1.寫資料到資料庫

2.mq.add(task)

寫入任務表

檢查是否有idle client

有開乙個執行緒

try:

update 任務表的任務 為對應的client

try:

idle_client.process(task)

except:

取消任務表的任務認領狀態

else:

任務表.delete(i)

if not buffer:

從資料庫中取沒有人認領資料填入

if buffer:

idle_client.process(task)

else:

idle_client_list.add(idle_client)

結束執行緒

無 加入buffer

== 客戶端 ==

接受到伺服器端發來的任務:

do(i)

== 表結構 ==

任務表結構 id table_id id client

以下3個表需要做程序內快取:

task類別的表 id table_name

client表結構 id client位址

表 <-> 處理函式的表 id 函式名

[/size]

自己實現printf

原理不是很難網上有很多,自己搜一下就明白了。void printlog const char fmt,看到上面 太簡單了,也許有人會說,這有什麼用?在我看來最大的用處在於寫日誌,如果我們把 稍稍改下就可以把螢幕上的輸出一起輸出到檔案乙份 在初始化處把全域性變數日誌檔案開啟就像這樣 plogfile ...

自己實現Promise

class mypromise 0 resolve obj reject obj then func,errfunc function fff resolve,reject test var m new mypromise fff var num 1 m.then obj obj console.l...

自己實現ArrayList

我們已經學過了陣列了,但我們知道乙個事,陣列是定長的,定長的陣列顯然是滿足不了我們的需求的,因為我們不知道自己需要多長的陣列,所以只能定義的盡可能大,這樣就會造成極大的空間浪費。那麼我們可不可以想個辦法去實現乙個不固定長度的容器呢?這節課我就來帶大家實現乙個不固定長度的容器。code 我的陣列表 用...