前段時間開發簡訊收發系統,遇到乙個問題,就是有
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,...