码神之路项目总结(三)

news2025/7/13 5:01:21

目录

一、评论列表

二、评论

三、发布文章--所有文章分类

四、发布文章--所有文章标签

五、发布文章

六、AOP记录日志



 

一、评论列表

请求接口:

 数据库表结构解析:

 思路:
1、首先接收前端的文章id,通过文章id和level=1查出第一层评论列表

2、然后将查询出来的第一级评论列表遍历转换为它的vo形式返回给前端页面,遍历出来的评论对象还需再转换vo

3、遍历出来的评论对象转换vo时,需要将现在评论对象的id当做parentid以及level=2来查询有没有匹配的二级评论对象列表

4、如果有二级评论对象列表,好再重复第2步骤,重复过程中标红的改为对应的层级即可

5、如果不进行改进只能查出两层评论

总结:这个地方很绕,需要你把数据库的每个字段弄明白什么意思,再仔细揣摩一下即可明白含义。

改进:我想的是加个计数器进行累加第三步的level,具体能不能行还没取测试,如果小伙伴们有想法可以打在评论区交流

二、评论

请求接口:

思路:

评论分为一级评论和二级评论,一级评论即正常发的评论,二级评论即为评论的评论

1、接收前端传过来的评论相关的参数

2、如果是一级评论,则需要将实体类的level设置为1,parentid设置为0,touid设置为0;如果是二级评论,则前端会传过parentid和touid,我们将level设置为2,parentid和touid设置为前端传递过来的参数即可 

3、将设置好参数的实体类存入数据库

4、最后将评论的请求路径添加到WebMvcConfigurer的addInterCeptors方法中,实现评论的登录拦截

三、发布文章--所有文章分类

请求接口:

思路:

1、前端是get请求,也没带什么参数,直接去分类表里面查出所有的分类返回前端即可

四、发布文章--所有文章标签

请求接口:

思路:

1、直接在标签表里面查出所有的文章标签返回给前端页面即可 

五、发布文章

 请求接口:

 思路:

发布文章涉及到三个表:文章表、文章标签表、文章体表

1、我们接收前端发过来的发布请求,获取请求体中的参数以及当前线程的用户信息

2、将相应信息插入文章表、文章标签表、文章体表

3、最后将插入文章的文章id返回到前端页面

六、AOP记录日志

1、自定义日志注解

/**
 * 日志注解
 */
//Type代表可以放在类上面,Method代表可以放在方法上
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented

public @interface LogAnnotation {
    
    //自定义的参数
    String module() default "";

    String operation() default "";
}

2、定义切面,绑定切入点和通知,切入点就是自定义注解

@Aspect
@Component
@Slf4j
public class LogAspect {


    //1、切入点
    @Pointcut("@annotation(com.mszlu.blog.common.aop.LogAnnotation)")
    public void logPointCut() {
    }

    //2、通知中记录日志
    @Around("logPointCut()")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        long beginTime = System.currentTimeMillis();
        //执行方法
        Object result = point.proceed();
        //执行时长(毫秒)
        long time = System.currentTimeMillis() - beginTime;
        //保存日志
        recordLog(point, time);
        return result;
    }

    private void recordLog(ProceedingJoinPoint joinPoint, long time) throws Exception {
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        LogAnnotation logAnnotation = method.getAnnotation(LogAnnotation.class);
        log.info("=====================log start================================");
        log.info("module:{}",logAnnotation.module());
        log.info("operation:{}",logAnnotation.operation());

        //请求的方法名
        String className = joinPoint.getTarget().getClass().getName();
        String methodName = signature.getName();
        log.info("request method:{}",className + "." + methodName + "()");

//        //请求的参数
//        Object[] args = joinPoint.getArgs();
//        String params = JSON.toJSONString(args[0]);
//        log.info("params:{}",params);

        //获取request 设置IP地址
        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
        log.info("ip:{}", IpUtils.getIpAddr(request));


        log.info("excute time : {} ms",time);
        log.info("=====================log end================================");
    }

}

3、在想记录日志的方法上,添加自定义日志注解即可实现记录日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBootApplication注解

注解的使用 SpringBootApplication 符合注解:由 SpringBootConfiguration EnableAutoConfiguration ComponentScan 1.SpringBootConfiguration Configuration public interface SpringBootConfiguration { AliasFor( annotation Confi…

spring cloud kubernetes 本地开发环境搭建

背景 在上文Spring Cloud Zookeeper 升级为Spring Cloud Kubernetes 之后,我们由于使用了Kubernetes的服务发现,由于本地不在Kubernetes中,导致本地项目启动失败。所以就只能把代码部署到Kubernetes中才能启动,那么就带来一个新问…

java基于springboot+vue的驾校报名预约管理系统 nodejs

网络的广泛应用给生活带来了十分的便利。所以把驾校报名管理与现在网络相结合,利用java技术建设驾校管理系统,实现驾校报名的信息化。则对于进一步提高驾校报名管理发展,丰富驾校报名管理经验能起到不少的促进作用。 驾校管理系统能够通过互联…

java后端返回给前端对象时去除值为空或NULL的属性

前言 测试接口时发现当返回的对象中属性值为 “” 或 [] 或 null 时,该属性依然会返回,这样数据看起来很不美观并且有时候也会导致前端组件出现一些小的bug。 例如这个下拉框,人事科下面是没有部门的,但是由于接口返回了 child…

数据分析er看过来,五款工具有你需要的

“我想转行做数据分析,但是我只会用Excel,不会其他的工具,有其他的数据分析工具推荐么?“ “我不会python,那我可以做数据分析吗” 大部分人对数据分析的的第一印象就是Excel,python,其实选择一…

Cy5.5 N-羟基琥珀酰亚胺酯,Cy5.5 nhs ester,CAS:1469277-96-0

产品名称:CY5.5琥珀酰亚胺脂,Cy5.5 N-羟基琥珀酰亚胺酯 英文名称:Cyanine5.5 NHS ester,Cyanine5.5 SE,CY5.5 NHS CAS:1469277-96-0 外观:蓝色至深蓝色固体 分子式:C45H48IN3O4 分子量&…

【DropBlock】《DropBlock:A regularization method for convolutional networks》

NIPS-2018 文章目录1 Background and Motivation2 Related Work3 Advantages / Contributions4 DropBlock5 Experiments5.1 ImageNet Classification5.1.1 DropBlock in ResNet-505.1.2 DropBlock in AmoebaNet5.2 Experimental Analysis5.3 Object Detection in COCO5.4 Seman…

vue3新特性 Ⅱ

setup()中使用生命周期函数 在生命周期钩子前加上on来访问 并且需要保持小驼峰的命名方式,setup中的生命周期函数不包括beforeCreate和created。 onMounted:比以前的mounted有优势,以前生命周期函数只能存在一个&#…

发布新闻稿必须了解的几个问题

随着移动互联网的到来,有些企业把营销重心转移到了抖音小红书等新媒体,而传统的媒体营销被一些企业抛在脑后,其实小马识途认为媒体营销是信息源,其实是不可以放弃的,至少要有一定量的布局。 简单来说,新闻媒…

需要多久才能看完linux内核源码?

代码中自由颜如玉! 代码中自有黄金屋! 那么Linux内核代码到底有多少行? 我们需要多久能读完呢? 一、内核行数 Linux内核分为CPU调度、内存管理、网络和存储四大子系统,针对硬件的驱动成百上千。代码的数量更是大的…

kafka详解及集群环境搭建

一、kafka详解 安装包下载地址:https://download.csdn.net/download/weixin_45894220/87020758 1.1Kafka是什么? 1、Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目,该项目的目标是为处…

Servlet

1.Servlet是什么 Servlet是java语言编写的运行在服务器端的程序Servlet是javaEE规范之一,规范就是接口Servlet是JavaWeb三大组件之一,三大组件分别是:Servlet,Filter,Listener2.Servlet干什么 Servlet接受客户端发来…

G - Damaged Bicycle 状压+最短路,D-七圣召唤_概率dp

G - Damaged Bicycle 状压最短路 最短路处理出1号节点和带车子的点到n的距离dist[x][n],G可以从节点1直接走到n,也可以从节点1走到带车子的节点再骑到n,如果车子坏了可以走到n,也可以走到下一个车子节点再进行之前的步骤,所以可以…

React源码解读之React Fiber

开始之前,先讲一下该文章能帮你解决哪些问题? facebook为什么要使用重构ReactReact Fiber是什么React Fiber的核心算法 - react是如何中断重启任务的react fiber部分源码简化版 前言 该文章涉及的源码部分基于React v17.0.2 why React Fiber 浏览器…

Go 语言搭建个人博客(qiucode.cn 重构篇 二)

1、MVC模式 MVC模式是一种 WEB 长期累积的总结,但这并不是唯一模式。 对于 MVC 模式,想必有过搭建 WEB 项目的开发者并无陌生。 服务器端负责将客户端发送过来的 HTTP 请求,进行处理(处理器),解析路由(Route),而后把 URL 映射到对应的控制器(Controller)。 MVC …

智慧公路解决方案-最新全套文件

智慧公路解决方案-最新全套文件一、建设背景二、思路架构三、建设方案1、智慧路产管理2、智慧基础设施3、智慧信息服务4、智慧交通管控5、智慧系统平台6、智慧辅助决策四、获取 - 智慧公路全套最新解决方案合集一、建设背景 交通出行主要面临的痛点是安全和拥堵,而…

算法与数据结构 - 散列表

文章目录引言一、散列表概述1.1 哈希函数1.2 散列表二、算法实战2.1 两数之和题目题解1. 暴力破解2. hash表结语点赞再看,养成习惯引言 某日,韩梅梅和李雷来到一家新开的网红图书馆借阅书籍。 韩梅梅: 李雷,快来帮我找下《数据结构从入门到放弃》 李雷看…

测试项目(MSTest)中涉及到读取App.config 操作(.net6)

文章目录环境问题排查过程查看Nuget包是否正确查看配置文件是否正确解决办法(手动)解决办法(自动)为什么是这样的呢?环境 VS2022MSTest项目.Net6版本 问题 在测试过程中发现读取App.config中的连接字符串是null&…

颜色杂项笔记

面向用户的HSV颜色模型的三个属性 面向用户的颜色模型HSV,有如下几个属性 Hue(色度、色调、色相):描述具体颜色,比如红、蓝、黄、绿等,可以理解为color的专业说法。 Saturation(饱和度&#xff…

红帽8使用nfs共享本地镜像

实验环境 FFF-server 192.168.80.100 SSS-client 192.168.80.254 实验前提关闭selinux和防火墙 第一步在开始之前我们可以先看一下nfs-server本地上的一个镜像挂载情况。如图1. 可以看到本地镜像已经被挂载上去。 第二步我们继续看一下server的yum仓库是否已经成功配置。如…