DUZHI 博客系统

授权协议 LGPL
开发语言 Java
所属分类 建站系统、 开源博客系统
软件类型 开源软件
地区 国产
投 递 者 卫振
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

DUZHI_BLOG基于 Jpress 进行更新而来的。在上面做了一系列升级,修复bug,等等。

在基础上增加了如下功能;

1、升级 Jfinal 3.0 、Jfinal-weixin 1.8

2、增加 lucene search 全文搜索引擎

3、增加用户中心

4、增加 用户中心 等功能

5、优化微信渠道内容,避免无法搜索的场景,解决应用型问题

6、自带一套与官网一致的主题

组件

Jfinal

这个就不说了,一个MVC框架。

Ehcache

缓存框架,因为这个里面考虑的是本地的缓存所以,单机模式,所以在缓存的方案基本是懒加载以及缓存加载模式

    public User getUser() {
        if (user != null)
            return user;

        if (getUserId() == null)
            return null;

        user = UserQuery.me().findById(getUserId());
        return user;
    }

上面是个Content 模型中获取用户的模式。
再举个缓存的例子;

    if (ActionCacheManager.isCloseActionCache()) {
            next.handle(target, request, response, isHandled);
            return;
        }

        Action action = JFinal.me().getAction(target, urlPara);
        if (action == null) {
            next.handle(target, request, response, isHandled);
            return;
        }

        ActionCache actionCache = action.getMethod().getAnnotation(ActionCache.class);
        if (actionCache == null) {
            actionCache = action.getControllerClass().getAnnotation(ActionCache.class);
            if (actionCache == null) {
                next.handle(target, request, response, isHandled);
                return;
            }
        }

        String originalTarget = (String) request.getAttribute("_original_target");
        String cacheKey = StringUtils.isNotBlank(originalTarget) ? originalTarget : target;

        String queryString = request.getQueryString();
        if (queryString != null) {
            queryString = "?" + queryString;
            cacheKey += queryString;
        }

        ActionCacheManager.enableCache(request);
        ActionCacheManager.setCacheKey(request, cacheKey);
        ActionCacheManager.setCacheContentType(request, actionCache.contentType());

        String renderContent = ActionCacheManager.getCache(request, cacheKey);
        if (renderContent != null) {
            response.setContentType(actionCache.contentType());

            PrintWriter writer = null;
            try {
                writer = response.getWriter();
                writer.write(renderContent);
                isHandled[0] = true;
            } catch (Exception e) {
                RenderFactory.me().getErrorRender(500).setContext(request, response, action.getViewPath()).render();
            } finally {
                if (writer != null) {
                    writer.close();
                }
            }
        } else {
            next.handle(target, request, response, isHandled);
        }

上面是ActionCacheHandler.java的代码。

db.properties

由于Jpress 使用初始化模式,判断的就是db.properties 有没有,所以如果没有数据库,已经表结构的情况下,建议使用懒汉模式一步一步安装即可。

    rm db.properties
 相关资料
  • 在Django框架中,内置了很多应用在它的“contrib”包中,这些包括: 一个可扩展的认证系统 动态站点管理页面 一组产生RSS和Atom的工具 一个灵活的评论系统 产生Google站点地图(Google Sitemaps)的工具 防止跨站请求伪造(cross-site request forgery)的工具 一套支持轻量级标记语言(Textile和Markdown)的模板库 一套协助创建地理

  • BlogEngine.NET(博易) 是一款免费、开源的博客系统。2008年至今,本博基于 BlogEngine.NET 进行中文本地化,并将其努力在中国进行推广和应用。 博易遵循 W3C 标准,具有极强的可扩展性、高性能、良好的 SEO 性能和非凡的用户体验。不仅如此,博易还拥有一批高质量的用户群,他们的支持使博易得以不断地发展。 博易不仅开源,而且免费。所有的技术支持全部都是无偿提供的!博易的

  • 有人能告诉我在哪里可以找到关于EJB 3的默认JNDI命名的信息吗? Weblogic是否使用像Glassfish这样的可移植JNDI名称? 我能找到(比如Glassfish)使用JNDI名称的EJB部署跟踪吗? 例如: 只有@Remote的接口(服务) 只有@Stateless实现接口的bean(ServiceImpl) 所有东西都打包在文件(service-application-1.0) 在

  • 概况 背景: 编辑-发布-开发分离 在这种情形中,编辑能否完成工作就不依赖于网站——脱稿又少了 个借口。这时候网站出错的概率太小了——你不需要一个缓存服务器、HTTP服务器,由于没有动态生成的内容,你也不需要守护进程。这些内容都是静态文件, 你可以将他们放在任何可以提供静态文件托管的地方——CloudFront、S3等等。或者你再相信自己的服务器,Nginx可是全球第二好(第一还没出 现)的静态文

  • 嗨-博客,是一个ASP.NET MVC版本的开源博客。  我们每个猿都有一个搭建自己独立博客的梦,因此这个博客就是诞生了。  我们可以随心所欲定制自己的样式效果,并提供给了javascript脚本权限。  在这个多终端的时代,我们将会提供各终端浏览器的兼容显示和各种客户端的阅读与离线下载 嗨 博客 演示地址:http://haojima.net/ 嗨 博客 介绍讲解:http://www.cnbl

  • LBS是一款很受欢迎的开源的国产博客程序,采用ASP开发。