自己写的博客系统,分享给大家

来源:互联网 发布:传奇霸业120到150数据 编辑:程序博客网 时间:2024/05/21 09:05

代码链接

项目GitHub地址

定位

零点博客着眼于轻便,针对于个人,力求做到易于使用。所以,只要写过网页的人,应该都能使用。

技术点

  • HTTP服务器

    嵌入了一个jetty服务器:轻量、便捷,代码量很低,去掉了对tomcat等容器的需求,只需要像运行普通java程序一样,就能启动服务器。再加上我们提供的后台运行脚本run.sh,使得对linux命令行不熟悉的新手,也能通过ssh顺利启动服务器。

  • 存储

    一般来说,博客的存储都会使用数据库,部署时也就会要求安装数据库。但是数据库的安装对于不熟悉linux的人来说,可能也需要经过长时间的爬文,费尽心机的折腾,最终也不一定能装好。

    就算是能顺利装好,服务器运行一段时间之后,想要备份数据的话,对于很多小白来说,也是一件比较高难度的事情。

    综合以上考虑,零点博客采用文件的方式来存储博文、评论。所以,无需数据库,备份时只需要拷贝就行了。

  • URL

    对于路径,零点博客采用和web开发中的路径相一致的概念,支持绝对路径和相对路径。根目录就是web文件夹,html文件是作为模板使用,而不是真正要访问的文件。为了兼容markdown编辑器,在博文编写时尽量都使用相对路径。在博文中可以用相对路径来引用图片,这样的图片在markdown编辑器中可以显示,在博客中也可以正常显示。

  • 主页渲染

    页面的渲染,是用模板技术实现的,这里选择了freemarker。

  • 博文渲染

    • 博文概要信息:

    作者姓名,文章标题等,在服务器端是用json格式存储在磁盘上的,在服务器接收到请求后使用freemarker把这些信息写入页面,然后发送给客户端。

    • 文章内容:

    文章内容是markdown文件,文件编辑可以用任意编辑器,然后拷贝到服务器的web/blogs文件夹。所以,就涉及到从markdown格式向html格式转化的问题,因为我们是个人博客,服务器配置普遍不高,所以,这个转换过程就放到了客户端,由浏览器来完成。完成这个功能的组件就是showdown,这是个开源的javascript库,在github上可以找到。所以渲染过程,就变成:通过javascript异步从服务器获取markdown文件,通过showdown转成html字符串,然后设置到一个div的innerHtml属性中,就完成了文章的显示。

    • 文章评论:

    文章评论也是支持markdown的,所以,主体思路和显示文章内容相似。不过,评论会有多条,所以,在服务器端存储时,是以类json数组的方式存在的。为什么不直接使用json数组的格式呢?因为json数组的格式在两段会有闭合的“[]”,这样在新增评论时,需要抹掉最后的”]”,然后才能附加新评论,这样比较麻烦。所以,零点博客只存储了两个括号中间的部分,在最终解析json之前再加上两个括号,使得JSON库得以顺利解析。

安全

零点博客考虑了基本的安全防御:
* 限制了评论发表频率(默认10秒),
* 每篇博文最大评论字节数(默认3K),
* 单条评论的最大字数。

性能

暂时对于性能考虑的并不是很多,个人博客的访问量一般都不大,可能每天就几千PV,对系统要求不高。
* 博客的列表是全部加载进内存中的,所以一般不会有多大问题。
* 博客详情,每次请求都是从磁盘读取,对于一般的个人博客来说不成问题。
* 图片、css、js等静态文件,也都是直接从磁盘读取,对于个人博客来说问题也不大。

不过随着博客系统的完善,性能也会越来越强。

写在最后

此文旨在抛砖引玉,方便使用零点博客的朋友修改、自定义博客系统。

0 0
原创粉丝点击