活动召集服务端设计
類似11平臺的組隊召集,但不要求在線,希望對大家有用的
思路:
1、隊列保存活動10000大小,成員里面有當前人數(shù),總?cè)藬?shù)
2、所有活動入庫,隊列中沒有的數(shù)據(jù),嘗試從數(shù)據(jù)庫中獲取,獲取到了則加入隊列
3、隊列滿,先入先出原則,將第一個從隊列中刪除入庫
4、隊列中參加的人數(shù)變化不入庫
5、活動id由服務(wù)器自動生成,生成規(guī)則:用戶id+系統(tǒng)當前時間,避免重復(fù)
活動類:
隊列:
??? 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);
??????? }
??? }
處理類:
數(shù)據(jù)庫操作類:
總結(jié)
- 上一篇: xp系统怎么启动任务计划服务器,xp怎么
- 下一篇: PostgreSQL下载和安装教程