活动召集服务端设计
類似11平臺的組隊召集,但不要求在線,希望對大家有用的
思路:
1、隊列保存活動10000大小,成員里面有當前人數,總人數
2、所有活動入庫,隊列中沒有的數據,嘗試從數據庫中獲取,獲取到了則加入隊列
3、隊列滿,先入先出原則,將第一個從隊列中刪除入庫
4、隊列中參加的人數變化不入庫
5、活動id由服務器自動生成,生成規則:用戶id+系統當前時間,避免重復
活動類:
隊列:
??? private List list = new ArrayList();
???
??? Map<String,Activity> map = new HashMap<String,Activity>();
??? private Object lock = new Object();
??? public int count = 0;
??? public void putReceiverItem(Activity item)
??? {
??????? synchronized (lock)
??????? {
??????????? //最大保存10w的消息
??????????? if (count > 100000)
??????????? {
??????????????? count--;
??????????????? list.remove(0);
??????????? }
??????????? count++;
??????????? list.add(item.getId());
???????????
??????????? map.put(item.getId(), item);
??????????? lock.notify();
??????? }
??? }
??? public Activity getReceiverItem(String activityId)
??? {
??????? synchronized (lock)
??????? {
??????????? return map.get(activityId);
??????? }
??? }
處理類:
數據庫操作類:
總結
- 上一篇: xp系统怎么启动任务计划服务器,xp怎么
- 下一篇: 在IBMT43电脑上安装centos5.