自己写的博客系统,分享给大家
来源:互联网 发布:传奇霸业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等静态文件,也都是直接从磁盘读取,对于个人博客来说问题也不大。
不过随着博客系统的完善,性能也会越来越强。
写在最后
此文旨在抛砖引玉,方便使用零点博客的朋友修改、自定义博客系统。
- 自己写的博客系统,分享给大家
- 大家好 第一次写博客 css的基础分享给大家
- CSDN博客 写点什么呐给大家分享下
- 自己写了很久的.net论坛源代码分享给大家
- 给大家分享一下自己写的验证码api,有汉字、字母数字两类
- 自己写了一个带placeHolder的textView,分享给大家
- 好久没有写博客了 今天来给大家分享一点小经验吧 关于 VirusTotal的扫毒经验分享
- 给自己的写博客的理由
- 自己实现PostgresQL的nodejs驱动,分享给大家
- java 自己写的五子棋程序 源代码和大家分享
- 冒泡排序法 自己写的 大家分享
- 冒泡排序法 自己写的 大家分享
- 直接选择排序法 自己写的 大家分享
- 第一次写博客,给自己的博客定个位吧!
- 从今天开始,继续写一些技术类博客,分享给大家。
- 写博客,给自己看
- 自己写的多用户博客系统
- 准备写一个自己的博客系统
- 汪国新先生、郑桂兰女士受邀出席美国最大洛杉矶关帝庙开光!
- bzoj 4059: [Cerc2012]Non-boring sequences 线段树+扫描线
- 8086寄存器
- html5 meta标签
- 汪国新、郑桂兰受邀参加“2016年春节联合国总部书画精品展”
- 自己写的博客系统,分享给大家
- Mac 配置可动态切换的JDK
- 行级标签的距离
- Spring mvc 源码学习
- Alpha、Beta、RC、GA版本的区别
- JQuery第二章 JS 上机
- 2016中国作家协会迎春茶话会在京举行,铁凝、钱小芊、何建明、阎晶明、汪国新、郑桂兰、文洁若、高瑛等受邀出席
- java代码接入微信
- hive 添加字段导致数据出错