码神之路项目总结(三)

目录

一、评论列表

二、评论

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

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

五、发布文章

六、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、在想记录日志的方法上,添加自定义日志注解即可实现记录日志

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 《码神之路独家Java面试宝典》是一本很好的Java面试书籍,该书主要涵盖了Java的基础知识、面向对象编程、多线程、集合框架、IO等方面,以及常见的Java面试问题和解答技巧。 它的特点在于,首先作者从面试官和面试者的角度出发,结合多年的面试经验,总结出了一些面试技巧和经验,这对于想要在面试过程中获得优势的Java程序员非常有帮助。其次,该书不仅仅介绍了Java的基础知识,还深入探讨了一些Java技术的细节和底层原理,对于进一步提升Java程序员的技术能力也非常有帮助。 总的来说,《码神之路独家Java面试宝典》是一本集Java面试技巧、Java技术知识、Java底层原理于一体的优秀作品,值得广大Java程序员阅读和学习。无论是面试前的准备还是面试后的总结,都可以从该书中获得很多帮助和启示。 ### 回答2: 《码神之路独家Java面试宝典》是一本Java面试备考必备的书籍。这本书首先从面试的整体流程、面试中需要注意的事项及常见问题等方面进行介绍,为读者提供了全面的面试指南。然后,书籍重点讲解了Java的核心知识点,例如Java基础、Java并发、Java虚拟机等方面。在每章的最后,都有丰富的面试题和答案以及解析,帮助读者更好地掌握知识点和增加应对面试的能力。 这本书籍自身也有很高的可读性和实用性,例如书中还提供了很多面试必备的代码和技巧等,这些都有助于读者更好地应对面试。此外,书中还根据不同难度和公司类型的面试提供了不同的面试备考方案,让读者可以有针对性地备考。 总之,《码神之路独家Java面试宝典》是一本非常好的Java面试备考书籍,无论是应届生还是有一定工作经验的Java开发者都可以从中受益匪浅。它涵盖了Java开发中的核心知识点和实用技巧,还提供了丰富的面试题目和答案解析,是一本值得购买和阅读的好书。 ### 回答3: “码神之路独家java面试宝典”是为Java程序员提供的一本面试参考书籍。该书籍涵盖了Java开发过程中的基础知识、经典面试题及其解答、常用算法及数据结构、并发编程等方面内容。通过该书籍的学习能够帮助Java程序员深入了解Java编程语言,提高自己的面试竞争力,从而更好地开展工作。 该书籍主要包含了大部分内容: 第一部分是Java编程基础,包括Java语言基础、面向对象编程、Java核心类库等内容。这一部分的知识是Java程序员必须掌握的,也是面试中经常被提到的内容。 第二部分是Java面试题,包括常见的面试题及其解答。这一部分的内容是很受Java程序员欢迎的,因为它们是面试中最需要准备的内容。 第部分是Java高级知识,包括Java并发编程、JVM、常用算法及数据结构等内容。掌握这些知识有助于Java程序员在面试中脱颖而出,也有助于在工作中高效地完成任务。 总的来说,“码神之路独家java面试宝典”是一本很好的Java面试参考书籍,它详细地涵盖了Java开发中的各个方面,为Java程序员提供了全面的知识体系,使他们能够更好地应对面试以及在工作中获取更加卓越的成就。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java登云楼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值