`

chx 学习jForum笔记六-MostUsersEverOnline的结束及ForumAction-list的开始

阅读更多

2010.12.7 继续查找关键字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); //修改缓存中的值

分享到:
评论

相关推荐

    chx 学习jForum笔记十八 jForum与ms sqlserver

    《jForum与MS SQLServer整合学习笔记》 jForum是一款基于Java的开源论坛系统,它以其高度可定制性、灵活性和强大的功能深受开发者喜爱。在本文中,我们将深入探讨如何将jForum与Microsoft SQL Server(简称MS SQL...

    北大计算机系高级计算机系统结构课件chx14-arch08-mm1

    【北京大学计算机科学高级计算机系统结构课件chx14-arch08-mm1】主要探讨了计算机系统中的主存,特别是动态随机存取内存(DRAM)的延迟问题以及解决策略。这一讲义由北京大学计算机科学技术系和微处理器研究开发中心...

    北大计算机系高级计算机系统结构课件chx14-arch03-ilp1

    北京大学的高级计算机系统结构课程深入探讨了指令级并行处理,特别是数据相关的概念,这是优化处理器性能的关键。在本课件中,主要讨论了三种数据相关类型:真数据相关(Data dependences)、名字相关(Name ...

    CHX-I防火墙官方教程-附带翻译终稿.pdf

    CHX-I防火墙官方教程-附带翻译终稿.pdf

    北大计算机系高级计算机系统结构课件chx14-arch05-ilp1

    在深度指令流水线中,如UltraSPARC-III,分支地址计算和开始解码阶段与完全解码、指令导向功能单元、寄存器读取、整数执行等阶段之间的延迟可能导致显著的性能下降。 总的来说,这篇内容深入讨论了如何通过指令级...

    北大计算机系高级计算机系统结构课件chx14-arch07-MT1

    【北京大学高级计算机系统结构课件】主要探讨了多线程技术在提高计算机系统性能上的应用。随着单一顺序控制线程中指令级并行度的挖掘日益困难,多线程处理技术(Multithreading)应运而生,它利用线程级并行(TLP)...

    北大计算机系高级计算机系统结构课件chx14-arch06-vliw1

    点数较多,以下将详细解析相关知识点: **高级计算机系统结构** 这门课程涉及的是计算机系统的核心设计原理,包括微处理器、流水线技术、指令级并行性(ILP)以及超长指令字(VLIW)架构。课程的重点在于理解和优化...

    北大计算机系高级计算机系统结构课件chx14-arch09-multiproc1

    "高级计算机系统结构-多处理器系统" 本资源是北京大学计算机科学技术系计算机系统结构教研室高等计算机系统结构(第九讲)的课件,讲解多处理器系统的相关知识内容。 多处理器系统的发展 多处理器系统的发展可以...

    北大计算机系高级计算机系统结构课件chx14-arch04-Tomasulo1

    在执行阶段,功能部件开始操作并通知记分板执行已完成;在写结果阶段,确保没有WAR冒险。 通过这样的机制,记分板可以有效地管理指令执行的顺序,提高处理器效率,减少由于数据和控制相关带来的性能损失。这种技术...

    HA-SoftEther-CHX虚拟专网

    HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网

    北大计算机系高级计算机系统结构课件chx14-arch02-cache1

    【计算机系统结构与高速缓存】 在现代计算机体系结构中,高速缓存(Cache)扮演着至关重要的角色,它的存在主要是为了缓解处理器(CPU)与主内存(DRAM)之间速度不匹配的问题。随着技术的发展,处理器的速度不断...

    CHX(x=0-4在Y-Al2O3(ll0D)表面吸附的密度泛函研究 (2007年)

    使用基于密度泛函理论(DFT)的Cast叩量子力学计算程序模块,对CHX(X=0-4)在Y-AI2O3(ll0D)表面吸附的位置,空间结构和能量进行了理论计算。计算结果表明.CHx=(x=0-3)与表面形成强的相互作用。CH3,CH2物种处于表面八面体...

    CHX-I防火墙官方教程-附带翻译借鉴.pdf

    CHX-I防火墙官方教程-附带翻译借鉴.pdf

    CHX TNF JNK之间的关系

    标题与描述中的关键词“CHX TNF JNK”揭示了在细胞凋亡机制中的相互作用,尤其是关于人类肝癌细胞对肿瘤坏死因子α(TNFα)诱导的凋亡反应。这一研究聚焦于理解CHX(环己亚胺)、TNFα以及JNK(c-Jun N端激酶)三者...

    \HA-SoftEther-CHX虚拟网卡及教程

    本软件是一个模似网卡和集线器的工具,可以模似集线器功能,实现VPN的功能。使得系统把此软件识别成一块网卡,有了这个东西,只要可以访问外网,都可以连接到虚拟HUB上与其他电脑组成局域网,在此虚拟的局域...

    chx99个人主页源码_chx99.zip

    【标题】"chx99个人主页源码_chx99.zip" 提供的是一个名为 chx99 的个人主页的源代码。源码通常包含了网站设计、布局、功能实现等核心部分,对于开发者而言是了解网站工作原理、学习前端技术或者进行二次开发的重要...

    chx2095中文 英文资料

    根据给定的文件信息,我们可以提炼出以下关于CHX2095的详细IT知识: ### CHX2095概述 **CHX2095**是一款由United Monolithic Semiconductors S.A.S.制造的频率倍增器集成电路(IC),其工作频率范围在7.5至30GHz...

    CHX Hyper eXpressor-开源

    通过深入研究`chx-0.0.2`中的文件,开发者可以全面了解CHX的工作方式,并将其应用于自己的Web开发项目中。同时,参与开源社区,与全球的开发者交流,共同推动CHX Hyper eXpressor 的发展,也是提升自身技能和影响力...

    CHX-3大手臂大法兰.SLDDRW

    CHX-3大手臂大法兰.SLDDRW

Global site tag (gtag.js) - Google Analytics