`

关于领号活动总结

 
阅读更多
关于某彩票活动的总结
具体需求,每个用户进活动页面,领取一个号码,1000中的一个;
活动要求
1,随机性,一定要有随机性;
2,最少中奖概率,如果注数为3200注,则最多中4注
3,效率问题,(不能每个人来都产生一个随机数,这样效率不高);
4,支持断电(仍然从下一个开始),重启服务;(存数据库有点大材小用,因此不能存放在数据库)

解决方案
1,事先产生随机数1000个,并打乱数据(initHaoPool)
2,算法采用,计数,从1开始,领到1000个,又重新从1开始
3,不能存放数据库,
第一想法,那就存放在action里;action在struts2中不是安全的,有多个实例,否定
第二想法,放在service里,由于service是单例,可以保证线程安全;
(因此我以service的领号顺序为主,memcahe中的当备份使用,当主站重启时,memcahe还可以获取)

后来第二个方法也出问题了,3G站的领号不按顺序,为什么呢
原来我们的服务器采用双IP,2套代码服务,通过切换IP达到临时换包的效果;
假设线上服务器为A,由于3G站的HOST指到了B上,因此2套代码中的service都是独立的;

第三想法,放在memcache中,以memcache为主,service的为备份,这样就保证了代码的正确性;

但是后来又出问题了,早上10点13分,领号的数据又重复了,原因是当时同事切换了服务器,2台服务器代码都是不一致的,又导致了错误。

总结一下;在分布式环境下,要保持数据的一致性,放代码实在不可靠,
第一选择 是数据库
第二选择 是cache
最后才是 action,但这个保存不住,实在有问题;

下面是代码






/**
     * 初始化号码池
     *
     * @return
     */
    public  void  initHaoPool() {
    //如果action中的结果集和缓存中的结果集都为空,则初始化;
    if(hl==null&&CacheDataService.getCacheObject("<webactivityList>hl")==null){

    hl = new ArrayList<String>();
    //生成1000个号码
    for (int i = 0; i < 1000; i++)
        {
        String randomNo="";
        if (i < 10) {
        randomNo= "00" + i;
        }
        else if (i < 100 && i >= 10) {
        randomNo= "0" + i;
        }else{
        randomNo=Integer.valueOf(i).toString();
        }
        hl.add(randomNo);
        }
//打乱顺序
Collections.shuffle(hl);

//初始lhkey为0; 
lhkey=0;

CacheDataService.setCacheObject("<webactivityList>hl", hl,  60*60*24);
CacheDataService.setCacheObject("<webactivityInteger>lhkey", lhkey,  60*60*24);


    }

    }
   
    /**
     * 清除号码池和缓存
     *
     * @return
     */
    public   void  clearPoolCache() {
    hl=null;
    lhkey=0;
   
    //清除缓存;
CacheDataService.deleteCacheObject("<webactivityList>hl");
    CacheDataService.deleteCacheObject("<webactivityInteger>lhkey");
   
    }
   
   
   
   
   
    /**
     * 随机领取号码
     *
     * @return
     */
   
    public synchronized String getMyNumber(){
   String myno="";
  
//   如果丢失,从cache中取;
//   if(hl==null){
//   hl= (List)CacheDataService.getCacheObject("<webactivityList>hl");
//   lhkey= (Integer)CacheDataService.getCacheObject("<webactivityInteger>lhkey");
//   }
  
//如果丢失,从memcache中取;
if((List)CacheDataService.getCacheObject("<webactivityList>hl")!=null){
hl= (List)CacheDataService.getCacheObject("<webactivityList>hl");
lhkey= (Integer)CacheDataService.getCacheObject("<webactivityInteger>lhkey");
}
  
  
   if(lhkey<1000){
   myno=(String)hl.get(lhkey);
   lhkey=lhkey+1;
}else{
     //System.out.println("从0开始循环--------------");
     myno=(String)hl.get(0);
     lhkey=1;
     }
       
   //更新缓存信息
    CacheDataService.setCacheObject("<webactivityList>hl", hl,  60*60*24);
    CacheDataService.setCacheObject("<webactivityInteger>lhkey", lhkey,  60*60*24);
   
    return myno;
   }
分享到:
评论

相关推荐

    大班参观小学活动总结.docx

    大班参观小学活动总结 大班参观小学活动总结是指幼儿园大班幼儿参观小学的活动计划和实施方案。该活动的主要目的是让幼儿了解即将面临的入学变化,初步体验学校的作息时间及课程模式,削减幼儿对学校的生疏感、神奇...

    html5端午节领卷输入手机号验证代码

    在这个“html5端午节领卷输入手机号验证代码”中,我们可以推测这是一段用于端午节活动的HTML5代码,它涉及到用户通过输入手机号进行验证以领取优惠券的场景。 首先,HTML5提供了表单控制元素来收集用户输入,如`...

    乡镇工会“两节”送温暖活动总结 送温暖活动总结.doc

    在元月的十号到十三号期间,黄鹿镇党委书记和镇长亲自挂帅,带领慰问组深入企业与农民工家庭,走访了多达二十户的特困职工家庭。在慰问过程中,为他们送去了节日的年货、慰问金等物资,并代表党和政府传达了新春的...

    防诈骗安全讨论活动总结 (2).docx

    【防诈骗安全讨论活动总结】 在当今信息化社会,诈骗手段日益多样,给人们的生活带来了严重的威胁。为了提高学生们的安全意识,高一(3)班在班主任的指导下开展了一次“防诈骗教育”主题班会。这次活动旨在让学生...

    “消防安全月”活动总结.doc

    总结来说,“消防安全月”活动取得了显著成效。我们将以此为基础,持续巩固和深化消防安全工作。未来,我们将继续努力,不断改进,以实现“0伤亡”的安全生产目标,为工程项目的顺利推进保驾护航。

    fh.rar_发号_网页游戏

    例如,通过举办限时领号活动,配合论坛话题讨论,可以激发玩家的参与热情,同时也增加了论坛的浏览量和用户粘性。 总结,DZPHP网页游戏发号系统是DZ论坛的一个强大扩展,它将游戏推广与社区互动紧密结合,为游戏...

    依据工单号查询领料单、入库单.pdf

    总结来说,依据工单号查询领料单和入库单是制造业信息系统中的核心功能,它实现了生产流程的透明化和自动化,有效提升了企业的生产管理能力。通过熟练掌握这一功能的使用,企业能够更好地掌控生产进度,优化资源分配...

    京东金币淘宝喵币苏宁易购领人气(在hyue418项目基础上增加苏宁易购双十一活动自动化功能.zip

    该压缩包文件“京东金币淘宝喵币苏宁易购领人气(在hyue418项目基础上增加苏宁易购双十一活动自动化功能.zip”显然是一个针对电商购物活动自动化工具的更新版本,特别聚焦于京东、淘宝以及苏宁易购这三个平台的特定...

    2013万能淘宝双十二做任务领红包辅助3.0

    总结来说,这款2013年的“万能淘宝双十二做任务领红包辅助3.0”是一个针对淘宝双十二活动的第三方工具,它的主要目的是帮助用户高效完成任务以获得红包。虽然它被宣传为安全无毒,但用户在使用时仍需谨慎,因为依赖...

    裁 工 领 料 记 录.doc

    总结来说,“裁工领料记录”是制造业中不可或缺的管理工具,它涉及到物料控制、生产计划、成本核算、员工激励等多个方面,对于企业的运营效率和盈利水平有着直接影响。通过精确记录和分析这些数据,企业可以更好地...

    收料领料单、物资分类清单.docx

    ### 收料领料单与物资分类清单知识点详解 #### 一、收料领料单...以上内容为企业内部管理物资时常用的收料领料单及物资分类清单的知识点总结,通过这些细致的分类和管理方式,可以有效提升企业的运营效率和安全性。

    闪送APP登录领劵-易语言.zip

    总结来说,闪送APP的登录领券功能通过易语言实现了用户认证、数据交互、优惠券管理和安全防护等多个环节。易语言以其简洁直观的语法,为开发者提供了高效开发移动应用的可能性。同时,这也体现了在IT行业中,技术的...

    大学生团支书工作总结团支书工作总结与计划.doc

    4. **文明创建**:团支部重视文明创建活动,如“青年文明号”创建,将白源道班、十里道班及路政大队作为重点窗口,提高服务质量和社会形象。 5. **未来计划**:团支书计划在新的一年中,继续深入学习党的重要会议...

    路政支队长工作总结_.docx

    他倡导节约,与同事和睦相处,积极参与“青年文明号”示范岗活动,践行文明服务理念,为司乘人员提供优质的行车环境。 在团队合作中,路政大队紧密协作,共同应对各种挑战。通过加强内部训练,提高队员的执法水平,...

    坊员线下集中研修活动日志3月30号.doc

    3. **总结与反思** - 放手让学生参与和探究:教师的角色转变为引导者,而非传统的知识传授者,这样有助于培养学生的独立思考和解决问题的能力。 - 教师引导的重要性:在学生自主探索的过程中,适时的教师引导能...

    员工管理心理学与卓越团队领.pptx

    3. **九型人格的总结与实际运用**:通过案例分析和实践指导,让学员掌握如何在实际工作中运用九型人格理论。 学习过程中,讲师会采用多种方式如性格简介、自我确认与区分、自我修炼、工作应用等,帮助学员加深理解...

    优秀资料(2021-2022年收藏)小学《我们爱科学》主题队会活动程序.doc

    这篇文档是关于一场小学主题队会活动的详细流程,名为"我们爱科学",旨在教育孩子们了解科学的重要性,激发他们的科学兴趣和创新精神。活动分为五个篇章,每个篇章都包含了不同的学习内容和互动环节。 首先,活动的...

    校内消防平安主题活动策划方案范文(精选7篇).docx

    - 对活动进行总结,评估效果,以便进一步完善安全教育。 - 分配课外作业,让学生在实践中巩固所学知识。 通过这样的活动策划,不仅能够提高学生的防火意识,还能培养他们在面对火灾时的应急处理能力,从而构建更...

    2022重阳节活动方案最新版.docx

    根据给定文件的信息,我们可以总结出三个不同的重阳节活动方案,每个方案都有其特定的目标、活动内容和流程。接下来,我们将对这三个方案进行详细的知识点解析。 ### 重阳节活动方案【篇1】 #### 活动主题 - **...

Global site tag (gtag.js) - Google Analytics