【程序员节特别推送】搭建一个与技术无关的博客网站(Java后台)
文章目录
- 沉晓's Blog
- 一、博客概述
- 二、需求与功能
- 三、开发介绍
- 四、关于部署
- 五、关于项目本身
- 六、我与CSDN
沉晓’s Blog
一、博客概述
? 项目背景
我一直追求着一种纯粹,写技术博客,就好好地写,心无旁骛。
我目前唯一写作的平台就是CSDN,身边也有一部分人写了一篇文章在各个平台都有发表,我不喜欢这样,我觉得有复制粘贴的功夫,不如多花点时间打磨文章。
同样。我也不喜欢技术博文中掺杂过多的杂质,我讨厌营销号的文章,也讨厌发表大量与技术无关的文章。
于是因为这种状况,很长的一段日子里,我一直都缺失存放原始的感情、梦想、挣扎、无奈、和希望、和爱的空间。所以有了这个博客网站,它能陪我终老吗,不能吧。可能有一天,我写不动了,或许它就自然消散了。但我还是会希望,永远有一个属于自己的角落。在那个世界里,不逃荒不颠沛。
我希望在那里记录一些不经意间收获的“温暖”、可以写日记记录每一段故事、每一折心情、每一个句读,生活中的小事,这就是为什么要建立一个博客网站的意义。
? 博客地址:传送门
? 博客演示
(1)首先是web端
博客首页:
首页含有博文展示、公告(计划)展示、博文推荐、黑板报(展示博文类别和标签)等
有一个天气的小图标,鼠标放上去后,会展示今天,明天和后天的天气信息,IP自动定位。
除此之外还有留言板和音乐盒,这两部分有很大的塑造空间
博文页面
映入眼前的首先是首图和大标题
代码高亮,且字体含美化
右下角有三个小功能
分别是目录层级、翻译、扫码阅读(移动端阅读)
移动端扫码呈现的结果
评论与赞赏
分类页面
点击不同的分类 会呈现相关的博文
标签页面
点击不同的标签 会呈现相关的博文
归档页面
以时间轨迹的形式记录自己写博文的过程
关于我 与 关于本站页面 都是以博文的形式呈现出来的
友链页面
可以添加喜欢的网站,崇拜的大佬以及志同道合的好友的网站
后台登录页面
登录成功页面
博文界面
可以通过关键字、分类、是否为推荐博文条件定位查找博文。
博文写作为Markdown形式
分类,标签,公告以及友链都是增删改查的形式,界面一样,功能相似。
个人界面
个人界面需要权限的验证,这里为邮件的发送
邮箱大师接收的邮件
之后进入个人页面。
这就演示完了,功能比较简单。
(2)下面看看移动端
这里不做过多的区分
? 技术选型
前端UI框架 : semantic UI
前端JS框架 :JQuery
前端图标库:Font Awesome
Markdown 编辑器:Editor. md
相关插件:
- 和风天气插件
- 内容排版 typo
- 代码高亮 prism
- 动画 animate
- 目录生成 Tobot
- 二维码生成qrcode.js
- 滚动侦测 waypoints
- 平滑滚动 jquery.scrollTo
后端数据库框架:SpringDataJpa
后端服务框架:Springboot
后端模板引擎:thymeleaf
包管理工具:Maven
关系型数据库:Mysql
数据库连接池:Druid
非关系型数据库:Redis
邮件发送工具:Java Mail
后端日志:slf4j + logback
除此之外还有Markdown转HTML工具,IP处理工具,Jsoup,Httpclient,加密解密工具类等
IDEA插件有lombok等
JDK版本使用的是8 ,开发工具为Intellij IDEA
虽然列举了一大推,其实都是一些工具,会用即可, 除此之外,整体的业务逻辑也是非常简单,增删改查占据主要部分, 为了方便大家,更快更好入手这个项目,提供了请求与响应的交互文档,后面会说。
前端部分主要使用了SemanticUI 官网为: 传送门
Semantic UI中文网站:传送门
插件集成相关
介绍 | 名称 | 获取地址 |
---|---|---|
内容排版 | typo.css | https://github.com/sofish/typo.css |
动画 | animate.css | https://daneden.github.io/animate.css/ |
代码高亮 | prism | https://github.com/PrismJS/prism |
目录生成 | Tocbot | https://tscanlin.github.io/tocbot/ |
滚动侦测 | waypoints | http://imakewebthings.com/waypoints |
平滑滚动 | jquert.scrollTo | https://github.com/flesler/jquery.scrollTo |
二维码生成 | qrcode.js | https://davidshimjs.github.io/qrcodejs/ |
编辑器 | MarkDown | https://pandao.github.io/editor.md |
下面说明关于博客的详细信息,如果整体符合你的预期,最后部分会有部署启动的演示。
二、需求与功能
需求就没必要说了叭,功能方面,大家有了大致的印象,这里再进行展示一下:
整个博客网站,就只有两种角色。一个是普通游客,一个是管理员,每种角色的权限非常容易区分。
三、开发介绍
后端逻辑是非常简单的,就是单纯的增删改查,因为注重美观的元素,整个重心都偏重在了前端的框架上。
整个后端的架构思想采用了传统的MVC
数据源 --> 持久层(Dao) --> 业务逻辑层(Service) --> 请求处理层(Controller层)
? 实体类
Dao层的实体类:
- 用户User
- 博文Blog
- 博文分类Type
- 博文标签Tag
- 博文评论Comment
- 公告栏Bulletin
- 朋友Friend
- 留言Message
具体:
用户User
博文Blog
博文分类Type
博文标签Tag
博文评论Comment
公告栏Bulletin
朋友Friend
留言Message
由于使用了Spring Data JPA框架,数据库中的表是自动生成的。
? 持久层(Dao)和 业务逻辑层(Service)
这部分我不愿多说,它们负责的功能主要就是将数据从数据库中取出,再进行加工处理。
这部分如果详细说的话,加上后面Controller层的介绍,等于给你讲解整个项目的后端的数据是如何走起来的,你可能觉得这不是很好嘛?但这里,我就要说说我的看法了,这部分其实有着很大的发挥空间以及改进空间,比如说集合的处理,可以使用Stream,有些地方还能用到设计模式等,我不想先入为主,在观念上限制你。
如果你仅仅想拥有一个网站的话,那么也不用担心,这些瑕疵并不会导致网站不会正常运行,只能说它还不够好而已。
? 请求处理层(Controller层)
这部分是与前端直接打交道的地方,这一块清楚了,能够快速理解整个项目,这里我提供了请求与响应相关的文档
获取方式: 项目页面会有一个doc文件夹,点击里面的index.html即可
四、关于部署
这里你需要做一些事情(大部分的都可以不用动,必要修改的和可能会修改的都展示如下)
spring:thymeleaf:mode: HTMLcache: false # 开发环境 保证cache关闭,打开缓存不利于开发datasource:driver-class-name: com.mysql.jdbc.Driver # 如果是Mysql8.0需要修改url: yours # 你的数据库地址和建立的数据库username: yourUsername #你的数据库的账号password: yourPassword #你的数据库的密码#Redisredis:host: 127.0.0.1 # 你的redis的地址port: 6379 # 你的redis的端口号# 邮件mail:host: smtp.163.comusername: XXX # 发件人的用户名,这个自己把握,设置邮箱地址也不妨password: XXX # 授权码protocol: smtpproperties.mail.smtp.auth: trueproperties.mail.smtp.port: 994properties.mail.smtp.starttls.enable: trueproperties.mail.smtp.starttls.required: trueproperties.mail.smtp.ssl.enable: truedefault-encoding: utf-8from: XXX # 发件人的邮箱地址 server:# 端口号port: 9000 # 自己设置端口号
在项目上线之前,记得开启thymeleaf:的缓存,本身thymeleaf:比较慢,开启缓存会好一些。
Mysql的配置应该会吧 ,这里不多说了。需要重点注意的是在启动项目之前,要先建立好数据库!在使用后台管理之前,要先向数据库中插入user信息。 这里插入的邮箱简称为“邮箱1号”吧,后面邮箱配置部分会说。
如果redis在本地的话,默认访问地址和端口是127.0.0.1 :6379 ,一定要注意,在启动项目之前,先把redis服务端打开。
邮箱的话,建议使用163邮箱(没那么多烦心事),作为发送邮件的代理人,这里的邮箱区别于数据库中管理员的“邮箱1号”,就把充当代理人的邮箱称为“邮箱2号”吧。在获取修改个人信息的权限的时候,邮箱2号会给邮箱1号发送邮件。
这里说一下授权码的获取:
- 首先自行注册163邮箱,登陆之后,点击设置,选择“POP3/SMTP/IMAP”
选择 客户端授权密码 然后开启就行了 会让你验证信息,然后会有授权码的展示。
- 设置Tomcat启动的端口号吧,记得不要冲突了。
- 由于使用了lombok依赖,要注意IDEA应安装的有lombok插件
五、关于项目本身
项目参考了一些资料,当时觉得只是练练手,没想到最后会开源出来,无法报出那些帮助过我的人,在这里表示非常感谢。
项目成品较为仓促,有很大的改进空间,比如说Springboot加缓存、一些设计模式的应用、还有一些集合的处理较为繁琐,可以改为Stream、由于thymleaf模板引擎性能不佳,你还可以换模板引擎等等等。
项目本身已经满足基本需求,你其实可以把它变得更酷。
如果你不喜欢前后端耦合在一起,其实在我github主页,有Vue版本的这个项目,前端技术栈采用Vue + SemanticUI-vue以及基于vue的Markdown插件,后端数据库相关的框架是Mybatis,后来因为SemanticUI-vue还在发展过程中,官方的文档不齐全,我在stack overflow等国外的开发者社区都没有找到相关的演示demo(基本上都是基于JQuery的SemanticUI),前端做起来很费劲,我毕竟不是搞前端的,也无心看源码,来贡献一些例子来。 如果哪天、semanticUI-vue文档齐全了,相关的资料多起来了,我大可能把现在的项目,改成前后端分离的。
如果你是Java初学者,通过这个项目,你至少具备了“搬砖”的本事了。
如果你比较厉害了,那可以轻松收获一个博客网站。我提供的辅助资料还是挺丰富的,代码中有着比较详细的注释,你还可以在此基础上,让它更加完善~
? Github地址:传送门
我会继续完善这个blog,如果fork的话,你可以更加容易找到我这个项目,如果你觉得这对你有帮助,最好的鼓励或打赏就是给我一个star。
六、我与CSDN
我这个话题好像写晚了呀~
我从今年三月份才开始坚持写博客,与我开始接触Java的日子重合,最初的时候呢,就仅仅在这里记录一下自己学习时的笔记啊,自己踩过的坑有哪些啊,诸如此类的东西,刚开始时,我与这个平台最初是没有太多的感情的。
后来呢,我坚持以写博文作为知识输出的方式被身边的好朋友注意到了,他们觉得不错也纷纷加入了这个平台。商业互吹一时兴起,点赞风波每天都有,我这里的圈子一下子热闹起来了,有的时候我和朋友们一起吃饭,也会讨论这里发生的有意思的事情,从那个时候,我有了第一批关注的人,也有了第一批的粉丝。
我写博客从来没有断过,可能是因为我的活跃叭,有越来越多的志同道合的朋友们注意到我的文章,有的人点赞给予鼓励,有的留言表示感谢,有的人指出我的错误,也有的人对我做的不好的地方进行了批评。总之,这里的故事没有停过,我的日子很丰富。
大概四月中旬的时候,CSDN 的APP新增了blink功能,在这个时间段我第一次下载了CSDN的app,首页推荐的博文大多质量都挺好的,很适合学习于拓宽视野。Blink方面有很多人在开车,有的时候我也会上车,但是发现大多情况下都不是去幼儿园的路。后来App添加私聊功能以后,因为经常有朋友私聊我,与我探讨问题,我几乎每天都要打开看一看,当然,逛blink,阅读博文仍是我的最爱。
随着关注量越来越多,CSDN的方方面面越来越熟悉,我接触了很多与自己发展方向相关的人,交了很多的朋友,~wandwellun对我来说就是一位特别的朋友,我们会在双方空闲的时候,一起扯皮,交流技术问题,虽然未曾见过一面,但是每次交流都觉得十分亲切。
再后来的后来,发觉自己已经彻底融入这个社区了。
刚才看了看自己私密的博文与发表的博文,发觉自己的成长竟然如此巨大,今年的二月份,我还迷惘着呢。
回顾这段日子,那样的悬崖年少,毕竟也一步一步攀越了,这些都是生命的恩泽。许多个将夜未夜的晚上,键盘上的码字,都能令自己的心中升起淡淡的暖意,蓦然回首。心里是感恩的,感谢那些志同道合的朋友们,感谢给予我鼓励的陌生人、感谢让这一切事情发生的平台。
最后祝 1024程序员节快乐呀~
【程序员节特别推送】搭建一个与技术无关的博客网站(Java后台)相关推荐
- 基于halo快速搭建一个属于你自己的博客网站
基于halo快速搭建一个属于你自己的博客网站 公众号 前置条件 JDK安装 下载halo配置文件 下载halo的启动jar 验证启动 公众号 前置条件 首先你需要有一台自己的服务器,比如你去各类云上面 ...
- 搭建github服务器_搭建一个属于自己的公网博客
相信每一位程序员都喜欢拥有一个属于自己的博客. 当然,在我认为,内容以及模块都要自己进行可扩展定义才是真正属于自己的. 那么想要一个博客就必须要有一个服务器和一个域名,这样的话才能让自己的博文内容发扬 ...
- 我的Serverless实战—基于Serverless搭建一个简单的WordPress个人博客图文详解-JJZ
文正在参与 "100%有奖 | 我的Serverless 实战"征稿活动 活动链接:https://marketing.csdn.net/p/15940c87f66c68188cf ...
- 手把手教你搭建一个属于自己的Ghost博客
介绍 Ghost 是基于 Node.js 的开源博客平台,由前 WordPress UI 部门主管 John O'Nolan 和 WordPress 高级工程师(女) Hannah Wolfe 创立, ...
- 用开源博客系统OneBlog来搭建自己的个人技术博客网站(java版博客系统)
java版博客系统 一直想搭建一个个人的博客,方便记录和分享一些技术点,在网上也找了一圈,最终在开源中国中发现了一款很不错的java版的博客系统 https://gitee.com/yadong.zh ...
- 使用pelican搭建一个Jupyter Notebook数据科学博客
前言:这里是我最终搭建的博客,可以先预览看一下效果,这里是 github 地址, 欢迎 fork and star ! 写博客是一个证明你的技能,进一步加深学习和积累受众的一个非常好的方式.已经有非常 ...
- 搭建顶级域名下的个人博客网站
一.前期准备 顶级域名:godaddy买的,大概70元每年,经常有打折.(之前还在国内网站买过一个,后台体验不好) 国外主机:BlueHost,3.95$/m 备 注:由于BlueHost是通 ...
- 【nodeJS】从nodejs原生的博客网站搭建到 koa框架实现个人博客网站搭建
nodejs实现搭建博客网站 前言:原java后端渣渣一枚,因项目需要转学了nodejs进行开发,正式进行项目开发之前,师傅安排了一些项目训练,先熟悉js语法,然后熟悉nodejs,再慢慢重构向框架的 ...
- 一个和CSDN类似的博客网站
记录一个仿CSDN的博客网站 毕设 技术栈 : python+django+mysql+bootstrap+js+jquery+ajax+layui+oss+aliAPI+nginx+uwsgi gi ...
- 在Github上面搭建一个自己域名的Hexo博客
前言 在一次看到别人的博客主页,觉得设计很漂亮.但是由于自己对于前台这块没什么办法,煞是羡慕.偶然中发现这种样式是在Github上面搭建的,使用的是Next主题.于是便想自己也搭建一个,于是便去就去查 ...
最新文章
- swift Swauth install
- cmake的使用-为什么要使用CMake
- php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证及缺点
- 关于导入c3p0-0.9.5.5.jar包引发NoClassDefFoundError、ClassNotFoundException
- 犯病的chorme(谷歌浏览器)之css加载失败
- java jdk1.8 jvm_JDK1.8 JVM调优之初识JVM(一)
- TCL多媒体2010年净盈余9.83亿港币
- 硅谷Spring项目组专家教你利用Spring Cloud构建微服务
- 金蝶K3 数据表知识整理(不断完善)
- python相关性系数显著性检验_【Python计算检验值】一元线性回归拟合,t值与p值,显著性检验...
- java计算机毕业设计教务排课系统(附源码、数据库)
- 数电模电基础(1)分压电路
- 记忆减退之---钽电容
- Win10:修改电脑桌面路径
- pr开放式字幕(同步台词)
- 使用MySql Workbench创建存储过程,在表中插入100条数据
- w3c标准的深入理解
- 调用函数,求加减乘除(基础)。
- 未来计算机的畅享300,新学期畅享作文300字(通用5篇)
- 百度想成为伟大的金融科技公司?太迟了
热门文章
- 个人使用winRAR时提示我们注册激活怎么解决?
- 利用Python+xarray实现遥感数据——海表温度的经验正交函数(EOF)分解——xarray学习文档02
- li指令 汇编_汇编指令简介
- c语言51单片机rrc,MCS-51单片机汇编指令详解
- 5.16 BScroll页面切换滑动失效,点击事件冒泡(未绑定click也会监听click),transition-group动画特例,BScroll未激活不允许任何事件调用,类的实例和对象
- 高中计算机会考操作试题,高中信息技术会考(上机操作题要点)
- php获取海康的视频流,全平台RTMP组件EasyRTMP如何通过海康SDK获取视频流推送到RTMP流媒体服务器...
- visio UML图 视频学习
- 相关性分析和假设检验
- 处于停机等非正常状态_汽轮机运行最重要的启动与停机阶段,你得了解这些实际经验...