博客项目知识点的总结和拓展

本文详述了一个基于Java的项目,涵盖整体架构、数据表分析、核心功能及技术亮点。项目采用三层架构,包括控制层、服务层和DAO层,使用MyBatis-Plus进行数据库操作。技术亮点包括JWT+Redis实现安全登录,利用ThreadLocal保存用户信息。面试部分,重点讨论了项目背景、功能、技术选型、优化和挑战。
摘要由CSDN通过智能技术生成

 

 

整体架构

 

后台目录:

 

1656838566475-07772050-2a7d-44d1-bf39-3144ece3d637.png

 

本项目后台是由SpringBoot框架为基础进行开发的一款Java项目。

 

通过上述目录图,大致能分为三层:

 

  • 控制层:获取前端来的请求。
  • 服务层:对控制层的一些请求进行相对应的逻辑处理。
  • DAO层:对数据库数据的增删改查。

 

当然除了大致三层还有一些工具类、配置、缓存和aop等技术的加持。

 

数据表的分析

 

article表:

 

DROP TABLE IF EXISTS `article`;
CREATE TABLE `article`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT,
  `comment_counts` int(0) NULL DEFAULT NULL COMMENT '评论数量',
  `create_date` bigint(0) NULL DEFAULT NULL COMMENT '创建时间',
  `summary` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '简介',
  `title` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标题',
  `view_counts` int(0) NULL DEFAULT NULL COMMENT '浏览数量',
  `weight` int(0) NOT NULL COMMENT '是否置顶',
  `author_id` bigint(0) NULL DEFAULT NULL COMMENT '作者id',
  `body_id` bigint(0) NULL DEFAULT NULL COMMENT '内容id',
  `category_id` int(0) NULL DEFAULT NULL COMMENT '类别id',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1405916999732707331 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

 

从表结构中我们能知道id字段是自增不为空,且使用了BTREE索引

 

补充:

 

B-TREE索引

 

B-TREE索引的特点

 

  • B-TREEB-TREE以B+树结构存储数据,大大加快了数据的查询速度
  • B-TREE索引在范围查找的SQL语句中更加适合(顺序存储)

 

B-TREE索引使用场景

 

  • 全值匹配的查询SQL,如 where act_id= '1111_act'
  • 联合索引汇中匹配到最左前缀查询,如联合索引 KEY idx_actid_name(act_id,act_name) USING BTREE,只要条件中使用到了联合索引的第一列,就会用到该索引,但如果查询使用到的是联合索引的第二列act_name,该SQL则便无法使用到该联合索引(注:覆盖索引除外)
  • 匹配模糊查询的前匹配,如where act_name like '11_act%
  • 匹配范围值的SQL查询,如where act_date > '9865123547215'(not in和<>无法使用索引)
  • 覆盖索引的SQL查询,就是说select出来的字段都建立了索引

 

article_body表:

 

DROP TABLE IF EXISTS `article_body`;
CREATE TABLE `article_body`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT,
  `content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
  `content_html` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
  `article_id` bigint(0) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `article_id`(`article_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1405916999854342147 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

 

本表共有:

 

  • 自身ID
  • 评论
  • 文章ID

 

主键为ID,然后给article_id增加BTREE索引。

 

article_tag表:

 

DROP TABLE IF EXISTS `article_tag`;
CREATE TABLE `article_tag`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT,
  `article_id` bigint(0) NOT NULL,
  `tag_id` bigint(0) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `article_id`(`article_id`) USING BTREE,
  INDEX `tag_id`(`tag_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1405916999787233282 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

 

本表有:

 

  • 自增的主键ID
  • 文章ID
  • 和tag_id

 

设置articletag_idBTREE索引。

 

category表:

 

DROP TABLE IF EXISTS `category`;
CREATE TABLE `category`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT,
  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
  `category_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

 

本表有:

 

  • 非空自增ID
  • 用户头像地址
  • 分类名字
  • 分类介绍

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值