1 什么是Spring AOP 要想知道Spring AOP那必然是是要先知道什么是AOP了: AOP,全称为 Aspect-Oriented Programming(面向切面编程),是一种编程范式,用于提高代码的模块化,特别是横切关注点(cross-cutting concerns)的模块化。横切关注点是指那些影响多个模块的功能,比如日志记录、安全性、事务管理等。AOP 通过将这些关注点与业务逻辑分离,简化代码维护,提高代码的可读性和可重用性。 ⽐如用户登录权限的效验,没学 AOP
2024-11-221.由于业务需求需要记录用户操作日志,无疑需要使用到SpringAOP。 2.先引入SpringBoot的AOP maven 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 3.实现这个日志操作可以有很多种方法,比如写拦截器,或者基于注解形式,在或者在原来写好的代码中添加
2024-11-22启动类: package com.ruoyi.system; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; /** * 启动类 * * @author gyq
2024-11-22Netty优化方案之 FastThreadLocal 前言 Netty的FastThreadLocal和JDK的ThreadLocal都是一个"工具类"。 为什么说是工具类呢? 二者都是把目标数据存储到Thread线程对象中的一个属性threadLocals中的,该属性是一个Map类型。该Map的key就是当前ThreadLocal对象,Value就是目标数据。 这样就做到了把目标数据和线程对象绑定,从而也就做到了目标数据的线程独享! 但是Netty的FastThreadLocal做的要比Thr
2024-11-22Mybatis的两级缓存 Mybatis的缓存有两种,分为一级缓存和二级缓存,它们的作用域不同。 一级缓存 一级缓存我个人也叫session缓存,它默认是开启的,不可配置的。为啥叫session缓存,是因为它的作用域是session范围内的,也就是说同一个session的情况才能使用到一级缓存,目前我遇到的情况就是在一个事务内查询两次数据就会使用到一级缓存。所以说这个一级缓存其实很坑的,基本使用不到,在分布式环境下还可能有副作用。 特点总结如下: 源码在BaseExecutor类下,如下: @
2024-11-22就是两种编码体系 一种是以字符作为编码 就是以字符作为编码计算机从内存中读数据,在翻译成字符,0xab,0x11,这些字符都代表着某个意义,例如键盘上的可操作性按键 一种直接以01这些作为编码 直接从内存中读出,数据,直接对应某个意义,例如键盘上的可操作性按键 区别 字符编码占空间更多、多一层翻译,主观上能看出效率低一些
2024-11-22一、工程结构介绍 1、工程结构 2 、模块说明 yygh_parent :预约挂号根目录(父工程),管理多个子模块: common :公共模块父节点 common_util :工具类模块,所有模块都可以依赖于它 service_utils : service 服务的 base 包,包含 service 服务的公共配置类,所有 service 模块依赖于它 rabbit_utils :rabbitmq封装工具类 hospital-manage :
2024-11-22一、Go中的函数 Go中的函数与其他函数中功能大差不差,只是格式不同,当然也更加简便,从中可以看到其他语言的影子,但是开发效率会高上不少。 一个简单的Go函数定义如下: package main import "fmt" // 定义一个名为 add 的函数,接受两个 int 参数,返回一个 int 结果 func add(a int, b int) int { return a + b } func main() { // 调用 add 函数 re
2024-11-22一、前言 Java运行时数据区域划分,Java虚拟机在执行Java程序时,将其所管理的内存划分为不同的数据区域,每个区域都有特定的用途和创建销毁的时间。 其中,有些区域在虚拟机进程启动时就存在,而有些区域则是随着用户线程的启动和结束而建立和销毁。这些数据区域包括程序计数器、虚拟机栈、本地方法栈、堆、方法区等,每个区域都有其自身的特点和作用。 了解这些数据区域的使用方式和特点,可以更好地理解Java虚拟机的内存管理机制和运行原理。 JVM的内存模型划分在java1.8与java1.
2024-11-22问题介绍 约瑟夫问题是一个古老的数学问题,据说起源于公元1世纪。这个问题的故事情境是:在一个围成圆圈的人群中,依次数到某个数就将该人杀死,直到只剩下最后一个人。问题的关键是找出最后幸存的人的位置。 具体来说,假设有n个人围成一圈,从第k个人开始依次报数,报到m的人出局。然后从下一个人重新开始报数,报到m的人再次出局。重复这个过程,直到只剩下一个人。 约瑟夫问题解决 定义结构体 约瑟夫问题主要是使用环形链表进行实现。环形链表的基本讲解: 定义People结构体,包括id ,以及下一个节点信息的ne
2024-11-22