- 浏览: 47488 次
- 性别:
- 来自: 无锡
最新评论
-
RainWu:
...
chx 学习jForum笔记十四 数据表四 jforum_groups及jforum_user_groups -
c_huabo:
这都被你发现了!!!
chx 学习jForum笔记十七 实现中文搜索 -
beermonkey:
感谢啊。。。。
chx 学习jForum笔记十七 实现中文搜索
2010.12.9接上午。继续看net.jforum.view.forum/ForumAction.java中public void list() 中的
this.context.put("totalMessages", Integer.valueOf(ForumRepository.getTotalMessages ()));//页面显示的总文章数
this.context.put("totalRegisteredUsers", ForumRepository .totalUsers ()); //页面显示的总注册人数
his.context.put("lastUser", ForumRepository.lastRegisteredUser ()); //页面显示的最后注册用户
(完整内容在笔记六中)
net.jforum.repository/ForumRepository.java中
public static int getTotalMessages()
{
return getTotalMessages
(false);
}
public static int getTotalMessages(boolean fromDb)
{
Integer i = (Integer)cache.get(FQN, TOTAL_MESSAGES); //取缓存中的内容
int total = i != null ? i.intValue() : 0; //初始值,缓存中的值或0
if (fromDb || total == 0) { //需要从数据表中取或缓存中无值
total = DataAccessDriver.getInstance().newForumDAO().getTotalMessages
(); //从数据表中取
cache.add(FQN, TOTAL_MESSAGES, Integer.valueOf(total)); //写入缓存中
}
return total; //返回值
}
net.jforum.dao.generic/GenericForumDAO.java
public int getTotalMessages()
{
int totalMessages = 0;
PreparedStatement pstmt = null;
ResultSet resultSet = null;
try {
pstmt = JForumExecutionContext.getConnection().prepareStatement(
SystemGlobals.getSql("ForumModel.totalMessages"));
//SELECT COUNT(1) as total_messages FROM jforum_posts WHERE need_moderate = 0
//所有不需审查的帖子总数
resultSet = pstmt.executeQuery();
if (resultSet.next()) {
totalMessages = resultSet.getInt("total_messages");
}
return totalMessages;
}
catch (SQLException e) {
throw new DatabaseException(e);
}
finally {
DbUtils.close(resultSet, pstmt);
}
}
下面看总注册人数
net.jforum.repository/ForumRepository.java中
public static Integer totalUsers()
{
return (Integer)cache.get(FQN, TOTAL_USERS);
//从缓存中取
}
那么哪里是写入缓存的呢?有以下两个地方:
public static void incrementTotalUsers() //增加注册人数
{
Integer i = (Integer)cache.get(FQN, TOTAL_USERS); //从缓存中取当前注册人数
if (i == null) {
i = Integer.valueOf(0);
}
cache.add(FQN, TOTAL_USERS, Integer.valueOf(i.intValue() + 1)); //总人数加一并写入缓存
}
private void loadUsersInfo() //取最后注册用户信息及注册用户总人数
{ //直接从数据表读取并写入缓存
UserDAO udao = DataAccessDriver.getInstance().newUserDAO();
cache.add(FQN, LAST_USER, udao.getLastUserInfo());
cache.add(FQN, TOTAL_USERS, Integer.valueOf(udao.getTotalUsers
()));
//从数据表读出总注册人数并写入缓存
}
net.jforum.dao.generic/GenericUserDAO.java
public int getTotalUsers()
{ //从数据表读出总注册人数
PreparedStatement preparedStatement = null;
try {
preparedStatement = JForumExecutionContext.getConnection().prepareStatement(
SystemGlobals.getSql("UserModel.totalUsers")); //取SQL语句
//SELECT COUNT(1) as total_users FROM jforum_users
return this.getTotalUsersCommon(preparedStatement);
}
catch (SQLException e) {
throw new DatabaseException(e);
}
finally {
DbUtils.close(preparedStatement);
}
}
总注册人数至此结束。下面看最后注册用户。
跟总人数一样,在net.jforum.repository/ForumRepository.java中,也是从缓存中读取的。
public static User lastRegisteredUser()
{
return (User)cache.get(FQN, LAST_USER);
}
在哪里写入的呢?两处,一处是set,另一处是load。
public static void setLastRegisteredUser(User user)
{
cache.add(FQN, LAST_USER, user);
}
private void loadUsersInfo() //取最后注册用户信息及注册用户总人数
{ //直接从数据表读取并写入缓存
UserDAO udao = DataAccessDriver.getInstance().newUserDAO();
cache.add(FQN, LAST_USER, udao.getLastUserInfo
());
cache.add(FQN, TOTAL_USERS, Integer.valueOf(udao.getTotalUsers())); //从数据表读出总注册人数并写入缓存
}
先看LOAD
net.jforum.dao.generic/GenericUserDAO.java
public User getLastUserInfo()
{ //从数据表中取最后注册的用户姓名与ID
PreparedStatement p = null;
ResultSet rs = null;
try {
User user = new User();
p = JForumExecutionContext.getConnection().prepareStatement(
SystemGlobals.getSql("UserModel.lastUserRegistered")); //取SQL语句
//SELECT TOP 1 user_id, username FROM jforum_users ORDER BY user_regdate DESC
rs = p.executeQuery();
rs.next();
user.setUsername(rs.getString("username")); //用户名
user.setId(rs.getInt("user_id")); //用户ID
return user;
}
catch (SQLException e) {
throw new DatabaseException(e);
}
finally {
DbUtils.close(rs, p);
}
}
再看SET。
setLastRegisteredUser
有两处调用
net.jforum.sso/SSOUtils.java中的public void register(final String password, final String email)
及net.jforum.view.forum/UserAction.java中的registrationComplete()
看来这两处是用户注册模块。
小结:本段分析最终注册用户的信息与总注册人数的获取、修改。并发现两个用户注册模块,前一段发现的是认证模块。
发表评论
-
chx 学习jForum笔记十九 jForum定时作业
2011-02-25 15:43 1014参照jforum原有的两个定时作业SummarySchedul ... -
chx 学习jForum笔记十八 jForum与ms sqlserver
2011-02-23 16:39 7844jForum的原生数据库是mysql,但对sqlserver也 ... -
chx 学习jForum笔记十七 实现中文搜索
2011-02-23 16:04 1924最初测试的时候中文搜索一直都不成功。所以以为要对源程序进行大幅 ... -
chx 学习jForum笔记十六 实现附件移植,添加附件时按钮无效的问题解决
2011-02-23 15:59 3160==背景== 原论坛附件存放于d:\res\cibfo ... -
chx 学习jForum笔记十五 实现用户及用户组同步
2011-02-23 15:25 1745==背景== 原先有一个随时维护的用户表rswk、权限表ci ... -
chx 学习jForum笔记十四 数据表四 jforum_groups及jforum_user_groups
2011-02-14 14:07 1486jforum_groups group_id ... -
chx 学习jForum笔记十三 数据表三 jforum_roles及jforum_role_values
2011-02-12 16:19 1312jforum_roles 权限表。是一张组与基本权限的对应表。 ... -
chx 学习jForum笔记十二 数据表二 jforum_categories及jforum_forums
2011-02-12 15:05 1432jforum_categories是子论坛的分类以下称为栏目。 ... -
chx 学习jForum笔记十一 实现单点登录SSO
2011-02-09 11:55 2006分为三部分: 1.导入原用户数据库. 2.修改SSO模块, ... -
chx 学习jForum笔记十 数据表一 jforum_users
2011-02-09 10:35 1278user_id bigint ... -
chx 学习jForum笔记八-ForumAction三,发现用户认证模块。
2010-12-09 11:15 17212010.12.9。接昨天 在net.jforum.view ... -
chx 学习jForum笔记七-ForumAction二
2010-12-08 17:24 11692010.12.8 接昨天。 下面这句是存在于net.jfo ... -
chx 学习jForum笔记六-MostUsersEverOnline的结束及ForumAction-list的开始
2010-12-07 15:54 22952010.12.7 继续查找关键字MostUsersEverO ... -
chx 学习jForum笔记五-参数表的操作
2010-12-07 15:05 9982010.12.7 继续查找关键字MostUsersEverO ... -
chx 学习jForum笔记四
2010-12-06 15:21 10122010.12.6 接上午。在net.jforum.repos ... -
chx 学习jForum笔记三
2010-12-06 14:05 10442010.12.6 接上周日,继续。PermissionCon ... -
chx 学习jForum笔记二
2010-12-05 10:26 1248我的源程序是安道森练 ... -
chx 学习jForum笔记一
2010-12-05 09:37 1681目标:jForum二次开发,读懂源程序。 修改权限管理模块, ...
相关推荐
《jForum与MS SQLServer整合学习笔记》 jForum是一款基于Java的开源论坛系统,它以其高度可定制性、灵活性和强大的功能深受开发者喜爱。在本文中,我们将深入探讨如何将jForum与Microsoft SQL Server(简称MS SQL...
【北京大学计算机科学高级计算机系统结构课件chx14-arch08-mm1】主要探讨了计算机系统中的主存,特别是动态随机存取内存(DRAM)的延迟问题以及解决策略。这一讲义由北京大学计算机科学技术系和微处理器研究开发中心...
CHX-I防火墙官方教程-附带翻译终稿.pdf
北京大学的高级计算机系统结构课程深入探讨了指令级并行处理,特别是数据相关的概念,这是优化处理器性能的关键。在本课件中,主要讨论了三种数据相关类型:真数据相关(Data dependences)、名字相关(Name ...
北京大学计算机系的高级计算机系统结构课程中,第四讲主要讨论了Tomasulo算法,这是一种用于实现处理器指令级并行的技术。在讲解中,提到了几个关键概念,包括指令状态、功能单元状态以及寄存器结果状态。 首先,...
HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网
本资源是北京大学计算机科学技术系计算机系统结构教研室高等计算机系统结构(第九讲)的课件,讲解多处理器系统的相关知识内容。 多处理器系统的发展 多处理器系统的发展可以追溯到20世纪70年代,随着集成电路和...
每个线程都需要维护自己的用户状态,包括程序计数器(PC)和通用寄存器(GPRs)。同时,每个线程也需要自己的系统状态,如虚拟内存页表基址寄存器和异常处理相关的状态。此外,上下文切换(context switch)成本、...
这篇内容主要介绍了现代指令级并行技术在计算机系统结构中的应用,特别是关于指令流水线的设计和优化。在第五讲中,讲师程旭探讨了如何通过更复杂的流水线和动态调度来挖掘指令级并行性,以提高处理器性能。...
点数较多,以下将详细解析相关知识点: **高级计算机系统结构** 这门课程涉及的是计算机系统的核心设计原理,包括微处理器、流水线技术、指令级并行性(ILP)以及超长指令字(VLIW)架构。课程的重点在于理解和优化...
【计算机系统结构与高速缓存】 在现代计算机体系结构中,高速缓存(Cache)扮演着至关重要的角色,它的存在主要是为了缓解处理器(CPU)与主内存(DRAM)之间速度不匹配的问题。随着技术的发展,处理器的速度不断...
使用基于密度泛函理论(DFT)的Cast叩量子力学计算程序模块,对CHX(X=0-4)在Y-AI2O3(ll0D)表面吸附的位置,空间结构和能量进行了理论计算。计算结果表明.CHx=(x=0-3)与表面形成强的相互作用。CH3,CH2物种处于表面八面体...
CHX-I防火墙官方教程-附带翻译借鉴.pdf
标题与描述中的关键词“CHX TNF JNK”揭示了在细胞凋亡机制中的相互作用,尤其是关于人类肝癌细胞对肿瘤坏死因子α(TNFα)诱导的凋亡反应。这一研究聚焦于理解CHX(环己亚胺)、TNFα以及JNK(c-Jun N端激酶)三者...
【标题】"chx99个人主页源码_chx99.zip" 提供的是一个名为 chx99 的个人主页的源代码。源码通常包含了网站设计、布局、功能实现等核心部分,对于开发者而言是了解网站工作原理、学习前端技术或者进行二次开发的重要...
关于模块的I/O寻址,FBs-4DA/2DA模块提供四点或两点输出,这些点的编号是顺序排列的,从CH0开始,每个模块的点数都会累加。实际的I/O地址可以通过WinProladder这个软件来自动检测和配置。用户可以根据软件提供的模块...
根据给定的文件信息,我们可以提炼出以下关于CHX2095的详细IT知识: ### CHX2095概述 **CHX2095**是一款由United Monolithic Semiconductors S.A.S.制造的频率倍增器集成电路(IC),其工作频率范围在7.5至30GHz...
通过深入研究`chx-0.0.2`中的文件,开发者可以全面了解CHX的工作方式,并将其应用于自己的Web开发项目中。同时,参与开源社区,与全球的开发者交流,共同推动CHX Hyper eXpressor 的发展,也是提升自身技能和影响力...
CHX-3大手臂大法兰.SLDDRW