- 浏览: 47484 次
- 性别:
- 来自: 无锡
最新评论
-
RainWu:
...
chx 学习jForum笔记十四 数据表四 jforum_groups及jforum_user_groups -
c_huabo:
这都被你发现了!!!
chx 学习jForum笔记十七 实现中文搜索 -
beermonkey:
感谢啊。。。。
chx 学习jForum笔记十七 实现中文搜索
2010.12.8 接昨天。
下面这句是存在于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))); //总主题数
…………
在net.jforum.view.forum.common/ForumCommon.java中
public static List<Category> getAllCategoriesAndForums(boolean checkUnreadPosts) //取所有分类和板块(检查有无未读的贴子)
{
return getAllCategoriesAndForums
(SessionFacade.getUserSession(), //取当前用户SESSION
SystemGlobals.getIntValue(ConfigKeys.ANONYMOUS_USER_ID), //取游客ID
SessionFacade.getTopicsReadTime(), //取最后阅读时间
checkUnreadPosts); //检查有无未读的贴子
}
在net.jforum.view.forum.common/ForumCommon.java中
public static List<Category> getAllCategoriesAndForums(final UserSession userSession, final int anonymousUserId,
final Map<Integer, Long> tracking, boolean origCheckUnreadPosts)
{
boolean checkUnreadPosts = origCheckUnreadPosts; //是否检查未读的贴子
long lastVisit = 0; //初始值0
int userId = anonymousUserId; //初始值游客ID
if (userSession != null) { //非游客
lastVisit = userSession.getLastVisit().getTime(); //最后登录时间
userId = userSession.getUserId(); //用户ID
}
// Do not check for unread posts if the user is not logged in
checkUnreadPosts = checkUnreadPosts && (userId != anonymousUserId);
//是否检查未读的贴子
final List<Category> categories = ForumRepository.getAllCategories
(userId); //取所有分类
if (!checkUnreadPosts) { //不需返回未读帖子
return categories;
}
final List<Category> returnCategories = new ArrayList<Category>();
for (Iterator<Category> iter = categories.iterator(); iter.hasNext(); ) {
Category category = new Category(iter.next()); //递归分类
for (Iterator<Forum> tmpIterator = category.getForums().iterator(); tmpIterator.hasNext(); ) {
Forum forum = tmpIterator.next(); //递归分类下的板块
ForumCommon.checkUnreadPosts
(forum, tracking, lastVisit); //检查未读帖子
}
returnCategories.add(category);//需返回的分类
}
return returnCategories;
}
在net.jforum.view.forum.common/ForumCommon.java中
public static List<Category> getAllCategories(int userId)
{
final PermissionControl permissionControl = SecurityRepository.get(userId); //取权限
final List<Category> list = new ArrayList<Category>(); //所有分类
Set<Category> categoriesSet = (Set<Category>)cache.get(FQN, CATEGORIES_SET); //缓存中取分类集
if (categoriesSet == null) { //缓存未取到
synchronized (ForumRepository.instance) {
if (categoriesSet == null) {
LOGGER.warn("Categories set returned null from the cache. Trying to reload");
try {
ForumRepository.instance.loadCategories
(DataAccessDriver.getInstance().newCategoryDAO());//取分类到缓存
ForumRepository.instance.loadForums
(DataAccessDriver.getInstance().newForumDAO());//取板块到缓存
}
catch (Exception e) {
throw new CategoryNotFoundException("Failed to get the category", e);
}
categoriesSet = (Set<Category>)cache.get(FQN, CATEGORIES_SET); //缓存中取分类集
if (categoriesSet == null) { //仍然为空则报错
throw new CategoryNotFoundException("Could not find all categories. There must be a problem with the cache");
}
}
}
}
for (final Iterator<Category> iter = ((Set<Category>)cache.get(FQN, CATEGORIES_SET)).iterator(); iter.hasNext(); ) {
final Category category = getCategory
(permissionControl, iter.next().getId());
if (category != null) {
list.add(category); //留下用户有权处理的分类
}
}
return list;
}
其中ForumRepository. loadCategories及ForumRepository.instance.loadForums在前面(笔记一末及笔记二)有过分析。是将数据表中的分类读出至缓存中,loadForums将板块分类关系表读出至缓存中。
public static Category getCategory(final PermissionControl permissonControl, final int categoryId)
{
if (!
isCategoryAccessible
(permissonControl, categoryId)) {
//无权处理
return null;
}
//有权处理
return (Category)cache.get(FQN, Integer.toString(categoryId));
//从缓存中读出分类
}
public static boolean isCategoryAccessible(final PermissionControl permissionControl, final int categoryId)
{
//是否有权处理分类
return permissionControl.canAccess(SecurityConstants.PERM_CATEGORY, Integer.toString(categoryId));
}
明天再看checkUnreadPosts(final Forum forum, final Map<Integer, Long> tracking, final long lastVisit)
发表评论
-
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 14:27 19972010.12.9接上午。继续看net.jforum.view ... -
chx 学习jForum笔记八-ForumAction三,发现用户认证模块。
2010-12-09 11:15 17202010.12.9。接昨天 在net.jforum.view ... -
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 10432010.12.6 接上周日,继续。PermissionCon ... -
chx 学习jForum笔记二
2010-12-05 10:26 1248我的源程序是安道森练 ... -
chx 学习jForum笔记一
2010-12-05 09:37 1680目标:jForum二次开发,读懂源程序。 修改权限管理模块, ...
相关推荐
《jForum与MS SQLServer整合学习笔记》 jForum是一款基于Java的开源论坛系统,它以其高度可定制性、灵活性和强大的功能深受开发者喜爱。在本文中,我们将深入探讨如何将jForum与Microsoft SQL Server(简称MS SQL...
【北京大学计算机科学高级计算机系统结构课件chx14-arch08-mm1】主要探讨了计算机系统中的主存,特别是动态随机存取内存(DRAM)的延迟问题以及解决策略。这一讲义由北京大学计算机科学技术系和微处理器研究开发中心...
2. **名字相关(Name Dependences)**:当两个指令使用相同的寄存器或内存位置,但它们之间没有直接的数据流动时,就会发生名字相关。名字相关分为两种类型:反相关(Anti-dependence)和输出相关(Output-...
【北京大学高级计算机系统结构课件】主要探讨了多线程技术在提高计算机系统性能上的应用。随着单一顺序控制线程中指令级并行度的挖掘日益困难,多线程处理技术(Multithreading)应运而生,它利用线程级并行(TLP)...
使用基于密度泛函理论(DFT)的Cast叩量子力学计算程序模块,对CHX(X=0-4)在Y-AI2O3(ll0D)表面吸附的位置,空间结构和能量进行了理论计算。计算结果表明.CHx=(x=0-3)与表面形成强的相互作用。CH3,CH2物种处于表面八面体...
【计算机系统结构与高速缓存】 在现代计算机体系结构中,高速缓存(Cache)扮演着至关重要的角色,它的存在主要是为了缓解处理器(CPU)与主内存(DRAM)之间速度不匹配的问题。随着技术的发展,处理器的速度不断...
这篇内容主要介绍了现代指令级并行技术在计算机系统结构中的应用,特别是关于指令流水线的设计和优化。在第五讲中,讲师程旭探讨了如何通过更复杂的流水线和动态调度来挖掘指令级并行性,以提高处理器性能。...
点数较多,以下将详细解析相关知识点: **高级计算机系统结构** 这门课程涉及的是计算机系统的核心设计原理,包括微处理器、流水线技术、指令级并行性(ILP)以及超长指令字(VLIW)架构。课程的重点在于理解和优化...
"高级计算机系统结构-多处理器系统" 本资源是北京大学计算机科学技术系计算机系统结构教研室高等计算机系统结构(第九讲)的课件,讲解多处理器系统的相关知识内容。 多处理器系统的发展 多处理器系统的发展可以...
CHX-I防火墙官方教程-附带翻译终稿.pdf
北京大学计算机系的高级计算机系统结构课程中,第四讲主要讨论了Tomasulo算法,这是一种用于实现处理器指令级并行的技术。在讲解中,提到了几个关键概念,包括指令状态、功能单元状态以及寄存器结果状态。...
HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网
CHX-I防火墙官方教程-附带翻译借鉴.pdf
标题与描述中的关键词“CHX TNF JNK”揭示了在细胞凋亡机制中的相互作用,尤其是关于人类肝癌细胞对肿瘤坏死因子α(TNFα)诱导的凋亡反应。这一研究聚焦于理解CHX(环己亚胺)、TNFα以及JNK(c-Jun N端激酶)三者...
源码通常包含了网站设计、布局、功能实现等核心部分,对于开发者而言是了解网站工作原理、学习前端技术或者进行二次开发的重要资源。 【描述】"chx99个人主页源码_chx99" 暗示这个源码可能是由用户 chx99 创建或...
根据给定的文件信息,我们可以提炼出以下关于CHX2095的详细IT知识: ### CHX2095概述 **CHX2095**是一款由United Monolithic Semiconductors S.A.S.制造的频率倍增器集成电路(IC),其工作频率范围在7.5至30GHz...
2. **指令和标签**:类似于JSP的标签,CHX可能会有一套预定义的指令和标签,比如用于输出变量、条件语句、循环结构等。 3. **模板系统**:CHX可能包含一套模板引擎,使得开发者可以创建可复用的页面布局和组件。 4. ...
CHX-3大手臂大法兰.SLDDRW
搜索论坛最新主题系统结构:子程序1,chx,系统关于对话框, ======窗口程序集1 || ||------__启动窗口_创建完毕 || ||------_按钮1_被单击 || ||------子程序1 || ||------chx || ||------_按钮2_被单击 || ||