# Ky-Blog **Repository Path**: liucq2019/Ky-Blog ## Basic Information - **Project Name**: Ky-Blog - **Description**: SpringBoot+jwt+redis 搭建前后端分离的博客项目 Ky-Blog - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2025-05-04 - **Last Updated**: 2025-05-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Ky-Blog #### 前言 看到好多开发者都有自己的博客,我也好想拥有,相信每个人都想拥有!但是别人的东西再好也只是别人的,而我想要自己创造,小到常用的工具类,大到主流框架,虽是身外之物,但是好在大多数都开源呀,我们可以研究他们 ,了解他们的思想,总结设计思路,应用到自己的开发当中,积跬步至千里!于是在浏览了众多博客后下定决心开发属于自己的博客“Ky-Blog”,主要面向个人 ------ #### 介绍 Ky-Blog 一个基于**SpringBoot**+**jwt**+**redis**+**jcache**搭建前后端分离的博客项目, Web端使用了Vue+https://www.fengziy.cn 的博客进行了二次开发开发,管理系统使用Vue+Element UI Admin 。后端使用**SpringBoot**+**Mybatis**进行开发,使用Jwt做管理系统的登录权限验证,使用自己开发的**Config(Jcache)**当作Java内缓存,存储Web站点信息,配合Redis实现文章阅读量的合并计算, 日志使用基于SpringAspect开发的**Log组件**记录日志(未来扩展导入异步队列),文件(图片)支持本地上传和**七牛云**。 - 由于个人能力有限 Ky-Blog前端大部分都是边学边做的,像是一个拼凑的前端,很多地方都不是特别完善,考虑有不周到的地方,而这个项目也算是我熟悉各种技术的一次经历 后端部分技术使用了自己开发的框架,也算是对之前开发框架的检验和未来升级优化的方向做考量,如果有设计不合理的地方,**敬请斧正** - 对于上面提到的[Config(Jcache)](https://gitee.com/kingyin_1/config) 框架是我还没有接触到SpringBoot时候开发的一款项目外置配置文件的框架,另外它还是线程安全的,监听到数据变化会自动加载数据到内存,外部文件丢失会从内存中恢复(思想来源于ConcurrentHashMap), 如今发现SpringBoot的配置加载功能更加强大而**Jcache更适合做系统内数据存储**,所以用Jcache来存储一些小量且比较固定的数据,避免了存储到数据库,读写性能不好,管理不方便,如果使用了缓存技术还需要考虑数据一致性问题等痛点,对于Config框架会在v3版本从外部配置转型到以java内置缓存为主。 - 对于本项目中的**Log日志框架融合了Spring的一些设计思想**,将会在未来独立出项目,方便扩展更多业务,配合更多框架,该组件在本项目主要配合了Redis,Config(Jcache)以达到使用注解完成快速开发。 - Ky-Blog 将会用来记录我的学习笔记,日常笔记,等等。 #### 部署 本来打算打包成两个jar包分别运行的,但是实际应用却发现在阿里云服务器(1核1G)很难运行项目所需的全部服务,所以最终把web中的功能合并到了admin中然后才成功部署。跳转到我的博客——[Ky-Blog](http://www.kingyin.club) #### 运行配置 - JDK 1.8 - Nginx 1.19.9 - Redis 6.0.8 - Mysql 8.0 #### 项目特点 - 实现前后端分离,通过 Json 进行数据交互 - 引入**Config**(Jcache)快捷更新站点信息,精确监听配置的变化 - 部分站点信息可**注入HTML**语句,并且支持预览功能 - 文章支持**富文本**编辑 - 引入七牛云对象存储,同时支持本地文件存储 - 采用自定义**Token注解**登录验证,防止恶意入侵 - 采用自研日志组件扩展了多种注解开发工具 - 在日志组件的基础上扩展了**缓存注解**,轻松实现缓存响应 - 采用缓存组件和Jcache实现文章阅读量的统计 #### 项目目录 Ky-Blog是一款基于主流技术开发的面向个人的具有个性化的博客系统 - ky-blog-admin:提供admin端API接口服务; - ky-blog-core:提供博客的核心功能,自研框架支持,数据访问 - ky-blog-web:提供wed端API接口服务; #### 系统架构 Ky-Blog系统架构图 ![image text](http://cloud.kingyin.club/img/other/57636CD7FC79312032D3625E08E06145.png) #### 技术选用 | 技术 | 说明 | 官网 | | :--------: | :---------------------: | :----------------------------------------------------------: | | SpringBoot | MVC框架 | [ https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot) | | MyBatis | Sql快速整合框架 | https://mybatis.org/mybatis-3/zh/index.html/ | | Redis | 分布式缓存 | https://redis.io/ | | 七牛云 | 七牛云 - 对象储存 | https://developer.qiniu.com/sdk#official-sdk | | JWT | JWT登录支持 | https://github.com/jwtk/jjwt | | SLF4J | 日志框架 | http://www.slf4j.org/ | | Lombok | 简化对象封装工具 | [ https://github.com/rzwitserloot/lombok](https://github.com/rzwitserloot/lombok) | | Nginx | HTTP和反向代理web服务器 | http://nginx.org/ | | Config | 内嵌可监听缓存 | https://gitee.com/kingyin_1/config | 前端技术就不列举了 #### 安装教程 [一键部署](http://www.kingyin.club/#/blog/45) #### 参与贡献 如果您有好的想法 欢迎参与开源贡献 1. Fork 本仓库 2. 新建分支 3. 提交代码 4. 新建 Pull Request #### 站点截图 | Admin端 | | | :----------------------------------------------------------: | :----------------------------------------------------------: | | ![image text](http://cloud.kingyin.club/img/other/doc/F19B4EAC-38F4-4676-B2CA-62547598685E.png) | ![image text](http://cloud.kingyin.club/img/other/doc/F12483AC-931D-4370-8A64-6147546B33ED.png) | | ![image text](http://cloud.kingyin.club/img/other/doc/D770186E-7354-477B-9D2A-417F158DCDAB.png) | ![image text](http://cloud.kingyin.club/img/other/doc/B5A57AA4-A4D5-4DDE-B7A5-84A1CE43F465.png) | | ![image text](http://cloud.kingyin.club/img/other/doc/7B4DEC8D-9010-40FE-8188-79352F048570.png) | ![image text](http://cloud.kingyin.club/img/other/doc/7C25C90B-9B16-4C73-B692-597E93F50DF2.png) | | ![image text](http://cloud.kingyin.club/img/other/doc/124B3C82-59B7-454E-BA7D-FBBC92B809D1.png) | ![image text](http://cloud.kingyin.club/img/other/doc/E21F09B8-4997-43A1-A81C-6A179AC52B28.png) | **Web端** ![image text](http://cloud.kingyin.club/img/doc/doc1.png) ![image text](http://cloud.kingyin.club/img/other/doc/1C393854-7F60-4C22-AFD7-49563187CB26.png) ![image text](http://cloud.kingyin.club/img/other/doc/45AC8878-E30D-4B96-A890-0F256010C4D7.png) ![image text](http://cloud.kingyin.club/img/other/doc/9BA2A44A-FA08-4BA6-85F6-700007AD0134.png) ![image text](http://cloud.kingyin.club/img/other/doc/7CC02A11-2703-421F-889F-91F76125E2F4.jpeg) ![image text](http://cloud.kingyin.club/img/doc/doc.png)