客戶訪問限制管理器

2021-04-22 01:21:50 字數 3407 閱讀 2885

前段時間開發簡訊收發系統,遇到乙個問題,就是有

n個物件都可以通過

mobile

物件發簡訊,但同一時刻只允許乙個物件進行操作。所以設計了乙個客戶限制管理器的物件來解決,但由於種種原因沒有用到實際系統中。後來經過仔細考慮,發現它不僅可以用於埠的管理,還可用於其他需要針對客戶訪問數量進行限制的各種服務中去。----

這裡的「客戶」是指要操作該管理器的物件

/*** 客戶限制管理器的抽象類

* 此抽象類實現了對客戶訪問的限制,當乙個客戶訪問該服務時,可以通過halt(long guestid)方法阻止其他客戶進行

* 訪問,防止多個客戶同時訪問產生的衝突。例如:對通訊埠的訪問等。

* * @author none

* */

public

abstract

class guestmanager 

return guestid;

}/**

* 檢查客戶是否已經註冊

* * @param guestid

*            客戶標識

* @return 如果客戶已經註冊返回true,否則返回false

*/public

boolean islogin(long guestid) // end if (guestid > 0)

return flag;

}/**

* 登出客戶

* 如果仍有其他客戶在使用此物件,則僅僅登出guestid客戶,否則呼叫disconnect()方法關閉連線。

* * @param guestid

*            客戶標識

* @return 返回是否成功登出

*/public

void logout(long guestid) // end if (guestid > 0 && getguests().containskey("" +

// guestid))

}// end if (guests != null)

}/**

* 限制

* 如果某一客戶呼叫了該方法,那麼其他客戶將無法訪問,直至該客戶呼叫resume()釋放。

* * @param guestid

*            中斷標識

* @return 返回是否成功中斷

*/public

boolean limit(long guestid) // end if (islogin(guestid))

return flag;

}/**

* 釋放

* * @param guestid

*            客戶標識

* @return 返回是否釋放成功

*/public

boolean resume(long guestid) // end if(haltguest == guestid)

flag = !islimit();

}return flag;

}/**

* 是否限制其他客戶呼叫

* * @return 返回是否限制其他客戶呼叫

*/protected

boolean islimit() 

}// end if(this.id <= 0)

return flag;

}/**

* 該客戶是否被限制訪問

* * @param haltid

*            客戶標識

* @return 返回true表示禁止訪問,false表示可以訪問

*/public

boolean islimit(long guestid) // end if(flag)

}return flag;

}/**

* 取得當前限制客戶的標識(該標識是該管理器為客戶分配的乙個唯一標識)

* * @return 返回當前限制客戶的標識

*/protected

long getlimitguest() 

/*** 更新客戶最近使用時間

* * @param guestid

*            客戶標識

*/protected

void update(long guestid) 

/*** 執行監聽執行緒

*/protected

void runthread() // end if (autocleanthread == null)

}/**

* 設定自動清理客戶記錄的間隔時間

* * @param time

*            間隔時間(毫秒)

*/public

void setcleaninterval(long time) 

/*** 取得自動清理客戶記錄的間隔時間

* * @return 返回自動清理客戶記錄的間隔時間(毫秒)

*/public

long getcleaninterval() 

/*** 取得客戶記錄

* * @return 返回客戶記錄。格式為《客戶標識,最近訪問時間》

*/protected hashtablegetguests() 

/*** 輸出錯誤資訊

* * @param err

*/public

abstract

void trace(string err);

/*** 自動清除超時的客戶端的執行緒

* */

private

class autocleanthread extends thread // end if (key != null)

}// end while (keys.hasmoreelements())

try  catch (interruptedexception e) 

}// end while (mobiles != null && mobiles.size() > 0)

trace("autocleanthread thread end...");}}

} /*** 通訊埠的客戶端限制管理器的抽象類

* 該類繼承自guestmanager類,增加了connect()、disconnect()等方法

* * @author none**/

public

abstract

class portguestmanager extends guestmanager 

public

boolean limit(long guestid) 

public

void logout(long guestid) 

public

boolean islimit(long guestid) 

}

oracle rac限制客戶端訪問

rac限制客戶端訪問編輯sqlnet.ora 在grid使用者 oracle home network admin 下,新增以下文字 tcp.validnode checking yes tcp.invited nodes 192.168.80.33,192.168.80.63,192.168.16...

布局管理器 網格袋布局管理器

網格袋布局管理器中的約束條件constrains中有如下字段需要設定 1 constrains.gridx和constrains.gridy 這兩個欄位僅用於指定元件的起始網格座標。2 constrains.gridwidth和constrains.gridheight 這兩個字段用於指定元件所佔網...

儲存管理器

cpu配置儲存管理器 cpu讀操作發命令給儲存管理器,儲存管理器根據配置讀取資料 nand flash啟動方式,開機片內sram拷貝nand flash前4k執行,在這4k的程式裡需要完成sram sdram跳轉 s3c2440有8個bank,即8個片選訊號,直連可以接8個記憶體類外設 sdram,...