学习 JFORUM笔记-----六MostUsersEverOnline

下面这段是存在于net.jforum.view.forum/ForumAction.java中

    public void list()
    {
        this.setTemplateName(TemplateKeys.FORUMS_LIST); //这句没看懂,从字面看应该是设置模板的名称
        this.context.put("allCategories", ForumCommon.getAllCategoriesAndForums(true));//页面显示的所有分类和板块(检查有无未读的贴子)
        this.context.put("topicsPerPage", Integer.valueOf(SystemGlobals.getIntValue(ConfigKeys.TOPICS_PER_PAGE)));
        this.context.put("rssEnabled", SystemGlobals.getBoolValue(ConfigKeys.RSS_ENABLED));
        this.context.put("totalMessages", Integer.valueOf(ForumRepository.getTotalMessages()));//页面显示的总文章数
        this.context.put("totalRegisteredUsers", ForumRepository .totalUsers()); //页面显示的总注册人数
        this.context.put("lastUser", ForumRepository.lastRegisteredUser()); //页面显示的最后注册用户
        SimpleDateFormat df = new SimpleDateFormat(SystemGlobals.getValue(ConfigKeys.DATE_TIME_FORMAT), Locale.getDefault());
        GregorianCalendar gc = new GregorianCalendar();
        this.context.put("now", df.format(gc.getTime())); //页面显示的当前时间
        this.context.put("lastVisit", df.format(SessionFacade.getUserSession().getLastVisit())); //应该是取最后登录时间
        this.context.put("forumRepository", new ForumRepository()); //暂时没看懂,字面是应该页面显示的主体
        // Online Users
        this.context.put("totalOnlineUsers", Integer.valueOf(SessionFacade.size())); //页面显示的当前在线人数 ,后面有再次设置,不知此句是否是多余的。
        int aid = SystemGlobals.getIntValue(ConfigKeys.ANONYMOUS_USER_ID); //取游客ID
        List<UserSession> onlineUsersList = SessionFacade.getLoggedSessions();  //取当前用户列表
        // Check for an optional language parameter
        UserSession currentUser = SessionFacade.getUserSession(); //取当前用户
        if (currentUser.getUserId() == aid) { //当前用户为游客
            String lang = this.request.getParameter("lang"); //语言
            if (lang != null && I18n.languageExists(lang)) {
                currentUser.setLang(lang); //设置语言
            }
        }
        // If there are only guest users, then just register
        // a single one. In any other situation, we do not
        // show the "guest" username
        if (onlineUsersList.isEmpty()) {
            UserSession us = new UserSession();
            us.setUserId(aid);
            us.setUsername(I18n.getMessage("Guest"));
            us.setStartTime(new Date(System.currentTimeMillis()));
            onlineUsersList.add(us);
        }
        int registeredSize = SessionFacade.registeredSize(); //取在线会员
        int anonymousSize = SessionFacade.anonymousSize();   //取在线游客
        int totalOnlineUsers = registeredSize + anonymousSize; //取在线人数
        this.context.put("userSessions", onlineUsersList);  //设置页面显示的在线用户列表
        this.context.put("totalOnlineUsers", Integer.valueOf(totalOnlineUsers));//设置页面显示的在线会员
        this.context.put("totalRegisteredOnlineUsers", Integer.valueOf(registeredSize)); //设置页面显示的在线游客
        this.context.put("totalAnonymousUsers", Integer.valueOf(anonymousSize));  //设置页面显示的在线人数
        // Most users ever online    峰值人数和时间
        MostUsersEverOnline mostUsersEverOnline = ForumRepository.getMostUsersEverOnline();   //取记录的峰值人数和时间
        if (totalOnlineUsers > mostUsersEverOnline.getTotal()) { //当前在线人数大于峰值人数
            mostUsersEverOnline.setTotal(totalOnlineUsers);      //设置峰值人数
            mostUsersEverOnline.setTimeInMillis(System.currentTimeMillis()); //设置峰值时间
            ForumRepository.updateMostUsersEverOnline(mostUsersEverOnline); //将峰值人数和时间记入数据表
        }
        this.context.put("mostUsersEverOnline", mostUsersEverOnline); //设置页面显示的峰值人数和时间
    }

 

小结:

峰值人数的检查和更新,应该是在这里完成的。

 

从笔记一到笔记六,完成了对峰值人数和时间的整个分析。

ForumRepository. getMostUsersEverOnline()//取峰值信息

此处会调用(MostUsersEverOnline)cache.get(FQN, MOST_USERS_ONLINE);  //从缓存中取峰值人数

如果值为空,则通过 instance.loadMostUsersEverOnline(DataAccessDriver.getInstance().newConfigDAO());

调用了ForumRepository. loadMostUsersEverOnline(ConfigDAO cm)//从数据表读取峰值人数信息

如果当前在线总人数超过峰值,则会调用ForumRepository. updateMostUsersEverOnline(MostUsersEverOnline m) //设置峰值人数。

而此过程会通过ConfigDAO.insert(config)向参数数据表中插入新值或通过ConfigDAO.update(config)更新参数数据表中内容,并且cache.add(FQN, MOST_USERS_ONLINE, m); //修改缓存中的值

利用 TensorFlow 训练自己的目标识别器。本文内容来自于我的毕业设计,基于 TensorFlow 1.15.0,其他 TensorFlow 版本运行可能存在问题。.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值