Halo 是一款使用 Java 开发的动态博客系统,可以给更多有写博客习惯的同学多一个选择。 直到目前的 0.4 版本,Halo 已经新增了更多特性,比如: 支持 i18n 由 editor.md 更换为 simplemde,更简洁好用的 Markdown 编辑器 支持 Docker Compose 部署,只需十分钟, ..

Halo 博客系统 -0.4.0 发布

本贴最后更新于 262 天前,其中的信息可能已经时移俗易

Halo 是一款使用 Java 开发的动态博客系统,可以给更多有写博客习惯的同学多一个选择。

直到目前的 0.4 版本,Halo 已经新增了更多特性,比如:

  1. 支持 i18n
  2. 由 editor.md 更换为 simplemde,更简洁好用的 Markdown 编辑器
  3. 支持 Docker Compose 部署,只需十分钟,自动完成 Halo 的运行,Nginx 的转发,以及 SSL 的配置(全自动)
  4. 支持自定义模板,形如:page_xxx.ftl
  5. 支持又拍云 /七牛云存储,以及展示
  6. 支持 Hexo/Jekyll,以及导出 Hexo/Jekyll 格式文档(方便使用 Halo 和弃用 Halo )
  7. 新增 Casper 和 Pinghsu 主题,非常感谢原作者
  8. 支持文章搜索
  9. 大量 bug 修复

主要特性:

  1. 使用 Spring Boot 框架,方便部署和更新,只需要一行命令便可完成安装。
  2. 完备的 Markdown 编辑器以及文章 /页面系统,包含分类 /标签 /预览图等。
  3. 内置图库,需要主题支持。
  4. 完备的附件管理,后续会做云存储(七牛云,又拍云等)
  5. 比较完备的评论系统(邮件提醒,盖楼,表情)。
  6. 完备的模板(主题)系统(目前已有 8 款主题),可以随意切换主题而不需要重启应用,针对主题可以进行单独的设置,后台支持上传新主题,另外,主题开发文档也已经基本完善( https://halo-doc.ryanc.cc/theme )。
  7. 完善的系统设置,包括 seo,文章设置,评论设置,邮箱设置等。

预览图:

Snipaste_2019-01-28_13-25-44.png
Snipaste_2019-01-28_13-27-44.png
Snipaste_2019-01-28_13-26-38.png
Snipaste_2019-01-28_13-27-04.png

开源地址:

Github: https://github.com/ruibaby/halo

Gitee: https://gitee.com/babyrui/halo

欢迎大家 Star,Pr 呀。

  • Halo
    1 引用 • 28 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    613 引用 • 1214 回帖 • 793 关注
  • 博客

    记录并分享人生的经历。

    192 引用 • 2034 回帖
27 回帖
请输入回帖内容...
  • kafuly

    很流畅,很舒服,可以输出一个小时😳

    1 回复
  • yvejohn 1

    UI 很舒服,已 Star 😄

    1 回复
  • someone11732

    哈哈,输出?

  • someone11732

    感谢你的 Star

  • lizhongyue248 1

    第一次见用 Spring boot 写的博客,自己也常用 Spring boot,多多学习,已 star

    内置主题 Material 特别喜欢,页面很友好,特别是 文章的渲染,感觉比起 Solo 要好看点,非常喜欢这点,建议文章加个目录,对于长文章阅读会方便很多。

    想问问有没有考虑过和 Solo 一样同步社区啥的?

    感觉因为社区的存在,自己写的东西才会被更好的收录和看见而不需要花费太多的时间去做 seo 或者宣传,这点简直大爱 Solo。

    1 回复
  • someone11732

    文章目录你是说的 TOC 吧,这个某些主题是有的,Material 在我移植的时候可能弄掉了,有空我再加上去。关于社区你回答到点上了,最近是有计划把所有 Halo 搭建的博客汇集起来做个平台的。感谢你的回复。

    1 回复
  • lizhongyue248

    请教楼主一个问题,我现在有两张表 user 和 role 多对多查询,查看你的源代码中 manyToMany 实体类多对多映射的时候使用了 fetch = FetchType.LAZY 懒加载,但是我自己在实际中尝试的时候发现报错org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role,修改fetch = FetchType.EAGER后又报错org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags,然后修改 ListSet后多对多又无限死循环查询,即 user 表里面有roles字段,role 表里面有users字段,然后两个互相死循环查询直到堆栈溢出。求解为啥楼主的多对多写法就没问题? 现在迫不得已多对多只能写一边,另外一边不能多对多查询,要自己写 sql 查询难受死。。。

    2 回复
  • 88250

    加油,我们打算抄一下你们那边的皮肤 😋

    2 回复
  • someone11732

    你这种我还是建议用 MyBatis 吧😂,感觉 hibernate 关联查询好复杂

  • someone11732

    可以可以

  • wuhongxu

    你这个皮肤就是 hexo-material 啊,一毛一样 2333

    1 回复
  • someone11732 1

    哎,都写清楚了是移植的,也有多处标明了原作者地址和原主题地址,虽然是人家是开源的,但是我还是发了邮件得到 Viosey 的同意,而且功能也是全移植的,没有做任何修改,这次某些人把别人的东西拿来改改签上自己的名字,完全不写原作者信息好点吧? 所以讨论这个没有意义,谢谢。

    1 回复
  • wuhongxu

    我并没有指责的意思啦,只是说因为我以前用了很长一段时间这个主题,对这个主题映像很深刻,情不自禁的说了一下,我的错我的错。😂

    1 回复
  • someone11732

    嗯,被这个时代误导了,应该尊重一下别人的劳动成果。

  • wuhongxu

    多对多双向,需要一个是 ManyToMany 注解 + 一个 mappedBy。具体看一下 jpa 的说明。应该是你配置的问题,而不是 fetch.LAZY 的问题。而且如果我没记错的话,LAZY 应该是默认的吧

    1 回复
  • vraydandelion

    可以可以

  • Wangle

    安装时这个报错是怎么回事?
    [INFO] Reading assembly descriptor: assembly.xml
    [WARNING] The assembly descriptor contains a filesystem-root relative reference, which is not cross platform compatible /resources
    [WARNING] The assembly descriptor contains a filesystem-root relative reference, which is not cross platform compatible /
    halo-cli.sh: 行 99: 28558 已杀死 mvn clean package -Pprod

    打包失败

    1 回复
  • someone11732

    感觉是内存不足被杀掉了

  • hanzanr123

    哈哈哈哈,可以

  • ypykkk

    感谢你.非常棒

  • lizhongyue248

    user 里面

        @ManyToMany
        @JoinTable(name = "sys_user_role",
                joinColumns = {@JoinColumn(name = "user_id", nullable = false)},
                inverseJoinColumns = {@JoinColumn(name = "role_id", nullable = false)})
        private List<SysRole> roles = new ArrayList<>();
    

    role 里面

        @ManyToMany(mappedBy = "roles")
        @JsonIgnore
        private List<SysUser> users = new ArrayList<>();
    

    然后报错就是像上面说的那样的,没办法解决,后面就退而求次改配置文件

    `jpa:`
        properties:
          hibernate:
            enable_lazy_load_no_trans: true
    

    但是这样又会多个 n+1 性能问题,不过只有先暂时用着。。。

    1 回复
  • linker

    建议考虑下用 mapdb 作为缓存层,非常快,很方便。

    1 回复
  • 1748835996

    已 star,我算是个新手吧,这个项目我觉得可以,我想模仿着写一遍....有些问题弄不明白 我该如何去做呢?换而言之,对于初级程序员该如何成长呢?

    1 回复
  • imba1991

    真的不错哦😋 🎉

    1 回复
  • someone11732

    感谢你的建议,回头我看看。

  • someone11732

    弄不明白就网上查吧,再不行问我也行。

  • someone11732

    感谢支持哦

请输入回帖内容 ...