- 博客(59)
- 收藏
- 关注
原创 实现 Spring Boot 3的组合注解,java
摘要:SpringBoot的@SpringBootApplication是一个组合注解,包含@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan。文章演示了如何创建自定义组合注解@EnableComConfiguration,通过ImportSelector动态加载配置文件中的Bean定义。实现步骤包括:1)创建配置文件com.imports;2)编写ComImportSelector读取配置文件;3)定义组合注解;4)在启动类应用
2025-06-11 11:26:01
450
原创 图标统计页面的设计与控件 Apache echarts
这是一个使用Apache ECharts创建基础柱状图的HTML示例。代码包含: 引入ECharts库 创建600×400px的DOM容器 初始化图表实例 配置图表选项(标题、提示框、图例、坐标轴和数据系列) 显示包含6种商品销售数据的柱状图 可通过CDN链接https://cdn.jsdelivr.net/npm/[email protected]/dist/echarts.min.js快速获取最新版ECharts库。
2025-06-10 21:03:17
234
原创 定时任务 Spring task 与 Cron Expressions(表达式)
摘要:CRON表达式是用于定时任务调度的字符串格式,由6-7个时间域组成,分别表示秒、分、时、日、月、周(年可选)。各域支持数值范围和特殊字符(如*/-?LW#),用于灵活配置执行时间。常见示例包括:/5***?表示每5秒执行,0021*?表示每月1日2点执行,01510?*MON-FRI表示工作日10:15执行等。表达式支持复杂的时间组合,如特定时间段内间隔执行、月末执行等。阿里云、Spring等平台都采用这种标准格式来配置定时任务。
2025-06-07 08:47:41
475
原创 MySQL 迁移至 Docker ,删除本地 mysql
完全卸载MySQL需要先停止服务并清理残留文件。如果是通过brew安装,先执行brew services stop mysql停止服务,再用brew uninstall mysql卸载。需要删除的文件包括:启动项、偏好设置面板、用户/组数据、bin和local目录下的MySQL文件、各类配置文件、缓存和接收清单等。建议执行sudo rm -rf命令彻底清理相关路径。最后重启设备确保卸载彻底。不同安装方式(brew或原生安装)的停止服务命令有所区别。
2025-06-06 06:52:04
668
原创 macOS 升级 bash 到最新版本
摘要:macOS系统默认仍在使用2007年的bash 3.2版本,而官方最新版本已升级至5.2。本文介绍了通过Homebrew升级bash的步骤:1)使用brew安装最新bash;2)确认安装路径为/usr/local/bin/bash;3)通过chsh命令切换默认shell。升级后版本显示为5.2.37,支持GPLv3+许可协议。若需为root用户升级,可使用sudo chsh命令。升级过程简单,能显著提升终端使用体验。
2025-06-06 04:21:30
602
原创 Docker 本地安装 mysql 数据库
摘要:本文介绍了在macOS上使用Docker安装MySQL的完整步骤。首先通过docker search mysql搜索官方镜像,选择stars最多的mysql镜像;然后使用docker pull mysql:latest下载镜像;通过docker run命令创建并启动容器,设置端口映射和root密码;最后用docker exec进入容器。整个过程包含镜像搜索、下载、容器创建及登录操作,为开发者提供了快速部署MySQL的Docker方案。(150字)
2025-06-06 04:03:00
591
原创 微信小程序 Login 代码,完整版本 Java 和 Spring Boot3
微信小程序登录流程主要分为:1)调用wx.login获取临时code;2)通过code2Session接口换取用户OpenID/UnionID及会话密钥;3)服务器生成自定义登录态。开发示例展示了获取用户信息后,结合code发起登录请求的过程,成功后将返回token用于身份验证。该流程确保安全获取用户标识并建立前后端认证机制。
2025-06-03 10:43:40
216
原创 Spring boot 的 redis 出现乱码的情况
【摘要】针对Redis值乱码问题,提供Java配置解决方案。通过@Configuration注解类创建RedisTemplate,配置键值序列化:使用StringRedisSerializer处理键,引入GenericJackson2JsonRedisSerializer进行JSON序列化处理值和Hash数据。关键代码包括设置连接工厂、定义JSON序列化器,并分别配置value/hashValue序列化方式,有效解决存储时的乱码问题。该方案简洁高效,适用于SpringBoot项目集成Redis时的数据格式化
2025-05-30 15:18:56
224
原创 Spring Boot 3 项目启用 redis 的步骤,java
摘要:本文介绍了Spring Boot集成Redis的配置步骤。首先导入spring-boot-starter-data-redis依赖,然后在application.yml中配置Redis连接信息。接着创建RedisConfiguration类,配置RedisTemplate并设置key序列化器。测试阶段验证了RedisTemplate的创建成功,并演示了String类型的基本操作,包括设置/获取值、带过期时间的设置以及setIfAbsent方法的使用。该配置实现了Redis与Spring Boot的集成
2025-05-30 14:52:17
320
原创 redis cloud 服务,通过 github login
在Redis中使用JSON数据类型操作示例:1)通过JSON.SET存储自行车产品信息,包含模型、价格等详细属性;2)使用JSON.MSET批量设置多个自行车数据;3)通过JSON.GET和JSON.NUMINCRBY查询并修改价格字段;4)JSON.CLEAR清除文档内容;5)JSON.SET重新设置数组数据。这些操作展示了Redis JSON模块对复杂数据结构的基本CRUD功能。
2025-05-30 10:12:51
297
原创 redis 数据类型和操做
Redis基础数据类型及操作摘要: Redis支持五种核心数据类型:1) String字符串 - SET/GET设置获取值,SETEX设置过期时间;2) Hash哈希表 - HSET存储对象字段,HGET获取字段值;3) List列表 - LPUSH/RPUSH从头部/尾部插入元素;4) Set集合 - SADD添加唯一值,支持集合运算;5) Sorted Set有序集合 - 带分值排序。每种类型都有对应操作命令,如SETNX仅当key不存在时设置,Hash适合存储对象,List按插入顺序排列,Set保证元
2025-05-30 09:49:29
866
原创 安装了 idea 无法在 macOS 命令行执行 maven
在macOS上配置IntelliJ IDEA中的Maven路径,首先需要找到Maven的安装目录,通常位于/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3。接着,编辑用户环境变量配置文件.bash_profile,可以通过访达的快捷键Command+Shift+.显示隐藏文件,或使用vim ~/.bash_profile命令进行编辑。在配置文件中添加Maven的环境变量,并使用source ~/.bash_profile命令载
2025-05-23 11:45:57
494
原创 国内 Maven 镜像仓库地址 —— Aliyun 云效仓库
阿里云Maven中央仓库是阿里云云效提供的公共代理仓库,旨在提升研发效率,提供更快更稳定的下载源。云效作为一站式DevOps平台,支持从需求到运营的研发全生命周期,并提供免费的Maven私有仓库Packages和代码管理仓库Codeup。Packages帮助开发者统一管理依赖和构建成果,而Codeup则提供代码托管、评审、扫描等功能,保障代码资产安全。用户可通过配置settings.xml文件,将Maven仓库地址指向阿里云,从而享受更高效的仓库服务。
2025-05-23 11:24:08
591
原创 Spring 配置文件和 Java 系统属性与命令行参数的优先级
Spring配置文件的优先级从高到低依次为:application.properties、application.yml、application.yaml。Java命令行执行方式包括执行类、JAR文件、模块中的主类或单个源文件,参数传递方式为在主类、JAR文件、模块或源文件后添加参数。Java命令行的优先级从高到低为:命令行参数(--xxx=xxx)、Java系统属性(-Dxxx=xxx)、application.properties、application.yml、application.yaml。验证优
2025-05-19 16:52:23
154
原创 AOP 记录 Log 的完整源代码 ,Java Spring
该代码实现了一个基于AOP的操作日志记录功能。通过@Around注解,拦截带有@OpLog注解的方法,记录操作人ID、操作时间、类名、方法名、方法参数、返回值及操作耗时等信息,并将这些信息存入数据库。具体步骤包括:从请求头中解析JWT获取操作人ID,获取当前时间作为操作时间,通过ProceedingJoinPoint获取类名、方法名和参数,执行目标方法并记录返回值和耗时,最后将日志信息插入数据库并输出日志。该功能适用于需要记录系统操作行为的场景。
2025-05-19 16:19:17
385
原创 连接点对象 JoinPoint and ProceedingJoinPoint ,AOP 编程
该代码展示了一个基于Spring AOP的切面类TryJoinPoint,用于在DeptServiceImpl类的方法执行前后进行日志记录。通过@Pointcut注解定义了切点,指定了DeptServiceImpl类中的所有方法。@Before注解在目标方法执行前记录日志,而@Around注解则在方法执行前后分别记录日志,并获取类名、方法名、参数及返回值等信息。执行结果显示,切面成功捕获了list方法的调用,并记录了相关日志信息,包括类名、方法名、参数及返回值。该切面类可用于监控和调试DeptService
2025-05-17 12:35:16
178
原创 @annotation AOP编程的 pointcut 定义
文章介绍了在Spring AOP中通过@Pointcut注解定义切入点的方法,特别是使用@annotation来简化复杂切入点的定义。通过@Pointcut("@annotation(biz.baijing.aop.TryLogging)"),可以在方法上直接使用@TryLogging注解来匹配切入点,避免了繁琐的||或&&逻辑。示例代码展示了如何在TryLoggingAspect类中使用@Before和@After注解来在方法执行前后记录日志。这种方法使得切入点的定义更
2025-05-17 12:09:35
255
原创 PointCut 切面表达式,以及引用关系
该文章介绍了如何在Spring AOP中使用切面表达式。首先,通过@Pointcut注解定义了一个切入点表达式poct(),用于匹配DeptServiceImpl类中的所有方法。随后,使用@Before注解在目标方法执行前调用before()方法,并记录日志。poct()方法被定义为私有,仅限当前类使用。若需在其他类中引用,可将poct()方法改为public,并通过全类名引用,如@Around("biz.baijing.aop.TryAspect.poct()"),实现跨类切面逻辑。
2025-05-17 10:54:21
202
原创 AOP 编程的基本概念 与 idea 编辑器的配合体验
本文介绍了一个基础的AOP(面向切面编程)程序示例,展示了如何使用Spring AOP进行方法拦截和增强。程序通过@Aspect注解定义了一个切面类TryAspect,并使用@Before和@Around等注解实现了前置通知和环绕通知。@Before注解用于在目标方法执行前记录日志,而@Around注解则允许在目标方法执行前后插入逻辑,并通过ProceedingJoinPoint调用目标方法。切入点表达式execution(* biz.baijing.service.impl.DeptServiceImpl
2025-05-17 10:36:25
407
原创 AOP 编程
本文介绍了如何在Spring Boot项目中使用AOP(面向切面编程)来记录方法的执行时间。首先,需要在pom.xml中添加spring-boot-starter-aop依赖。接着,定义了一个切面类TimeAspect,使用@Aspect注解标记,并通过@Around注解指定切入点表达式,拦截biz.baijing.service包下的所有方法。在recordTime方法中,记录方法执行的开始和结束时间,并计算耗时,最后通过日志输出方法执行时间。示例中,EmpServiceImpl.page方法的执行耗时为
2025-05-16 23:25:11
146
原创 事物传播行为,Spring Boot 3 的处理
默认值,会和 delete 操作共用一个事物;如果遇到 delete 错误的异常,log 不会被记录 ——这里的 finally 的代码含义: 删除部门的操作,写入日志。⚠️ : 通过 debug 需要调试的可以私信联系提供全部代码。没有用默认值,而是定义了 propagation。写入日志操作也是 事物传播行为最常见的操作之一。生成一个新的「事物」,才能确保日志记录的独立性。会和 delete 操作一起回滚。
2025-05-16 22:16:23
527
原创 SpringBoot 3以后的 Filter 包已经从 javax.servlet 变成了 jakarta.servlet
在Spring Boot中使用Servlet Filter时,需注意以下几点:首先,javax.servlet-api依赖在pom.xml中添加后可能无效,建议使用jakarta.servlet包。其次,init和destroy方法不再使用default关键字,需显式实现。示例代码展示了如何定义并注册一个Filter,使用@Component和@WebFilter注解,并实现init、doFilter和destroy方法。通过这些步骤,可以确保Filter在Spring Boot应用中正确初始化和销毁。
2025-05-16 10:33:38
571
原创 read jwt 的源代码,Spring Java
getBody() 也可以放到 Jwts 的链式编程结构中。直接输出一个 JSON String。生成 Jwt String 的代码。
2025-05-15 20:08:42
396
原创 yml 键值的大小写约束与自定义内容提示 porm.xml 配置
在配置阿里云OSS时,由于配置文件中的属性名Aliyun.OSS包含大写字母,导致应用程序启动失败。根据错误提示,配置属性名应遵循kebab-case格式,即使用小写字母和连字符分隔。因此,需要将Aliyun.OSS修改为aliyun.oss,以确保符合规范。具体修改包括将Aliyun:OSS:改为aliyun:oss:,并在@ConfigurationProperties注解中将prefix="Aliyun.OSS"改为prefix="aliyun.oss"。这样修
2025-05-15 10:49:09
168
原创 阿里云 oss 配置信息的实际开发环境配置,java and SpringBoot
文章介绍了在使用Java和Spring框架进行阿里云OSS文件上传时,如何配置和管理OSS的相关信息。初始代码中,OSS的配置信息(如endpoint、bucketName和region)直接硬编码在类中,这种方式在实际开发中不推荐使用。更佳的做法是将这些配置信息放置在application.properties配置文件中,并通过Spring的@Value注解动态注入到类中。这种方式不仅提高了代码的可维护性,还增强了配置的灵活性和安全性。文章中提供了具体的代码示例,展示了如何在配置文件中定义OSS属性,并在
2025-05-14 23:53:09
175
原创 阿里云 OSS 文件上传的完整代码,Java and Spring
本文介绍了如何使用阿里云OSS Java SDK实现文件上传功能。代码通过AliyunOSSFiles类封装了上传逻辑,主要包括以下步骤:首先,从环境变量中获取访问凭证,并创建OSSClient实例;其次,通过MultipartFile获取文件输入流,并生成唯一的文件名;最后,使用PutObjectRequest上传文件,并在上传完成后拼接文件的访问URL。代码还处理了OSSException和ClientException等异常情况,并确保在操作完成后关闭OSSClient。此外,文章还提供了配置环境变量
2025-05-14 17:52:04
407
原创 阿里云OSS配置Access Key ID、Access Key Secret后的错误
阿里云OSS报错:无 Access Key ID、Access Key Secret
2025-05-14 16:40:44
308
原创 上传文件的限制,Spring 默认为 1MB 的修改
在Spring框架中,上传文件时生成唯一文件名通常结合UUID和当前时间戳来实现,以确保文件名的唯一性。然而,默认情况下,Spring对上传文件的大小有限制,单个文件最大为1MB,整个请求最大为10MB。为了调整这些限制,可以在application.properties文件中进行配置。通过设置spring.servlet.multipart.max-file-size和spring.servlet.multipart.max-request-size,可以分别控制单个文件的最大大小和整个请求的最大大小。例
2025-05-14 12:12:52
257
原创 用 uuid + 当前时间戳构建唯一文件名的上传代码
该代码展示了一个使用Spring Boot框架的文件上传控制器。通过@PostMapping("/upload")注解,处理上传请求。方法接收用户名、年龄和文件作为参数,并生成唯一的文件名。文件名由UUID(去除连字符)和当前时间戳(格式为yyyyMMddHHmmss)组成,保留原文件扩展名。文件最终存储在指定路径。UUID用于确保文件名唯一性,时间戳则提供时间信息。例如,原文件hua.png可能被重命名为1915986e899245a4a507af7afb6b842a-20250513
2025-05-14 12:03:14
412
原创 mybatis 条件查询容易忽略的 ‘‘ 查询,Java and Spring
在MyBatis的SQL映射文件中,查询条件未选择时,生成的SQL语句可能会包含不必要的WHERE子句。例如,当name参数为空字符串时,原代码会生成WHERE name like concat('%',?,'%'),这不符合预期。通过修改代码,增加name!=''的条件判断,可以避免在name为空时生成WHERE子句,从而得到正确的SQL语句:select * from emp order by update_time desc。这种修改确保了在没有选择任何查询条件时,SQL语句不会包含多余的WHERE子
2025-05-13 23:15:02
592
原创 Get / Post / Delete …… 请求方式实现和约定,java
在SpringBoot中,可以通过@RequestMapping注解来指定处理请求的HTTP方法。默认情况下,@RequestMapping可以处理任何类型的HTTP请求。为了限定请求方式,可以在@RequestMapping中添加method属性,例如method=RequestMethod.GET。RequestMethod是一个枚举类型,包含了常见的HTTP方法如GET、POST等。为了简化代码,SpringBoot提供了更简洁的注解如@GetMapping,它等同于@RequestMapping(m
2025-05-13 00:22:50
310
原创 日志 Slf4j , Java 中使用
本文介绍了在Java Spring Boot项目中使用SLF4J进行日志记录的方法。首先,通过LoggerFactory.getLogger手动创建Logger对象,随后展示了如何使用Lombok的@Slf4j注解简化日志记录。@Slf4j注解会自动生成一个名为log的Logger对象,避免了手动定义Logger的繁琐步骤。在示例代码中,DeptController类通过@RequestMapping注解处理请求,并使用log.info记录日志信息。最终,代码通过Result.success()返回成功结果
2025-05-13 00:05:38
339
原创 SQL 语句 条件判断在 MyBatis 中的标签
在MyBatis中,使用<where>标签可以避免SQL语句拼接时出现多余的AND或OR,从而防止SQL语法错误。正确代码中,<where>标签会自动处理条件语句,确保在name为空时不会生成多余的AND。而错误代码中,直接使用where关键字,当name为空时,SQL语句会生成where AND gender=?,导致语法错误。因此,使用<where>标签是更安全且推荐的做法,能够有效避免此类问题。
2025-05-09 19:09:35
240
原创 Maven结构中,非「包」结构的目录中创建包
在创建包时,若没有直接选择包的选项,可以通过选择目录(Directory)来创建包。使用「.」作为包名的分割符,而目录结构则使用「/」进行分割。这样可以在编辑器中正确呈现包的结构,确保代码的组织和命名符合规范。这种方法适用于需要手动创建包的情况,帮助开发者更好地管理项目中的模块和文件。
2025-05-09 17:55:44
122
原创 lombok 的使用,与 bean 类简化
所以,要定义有参构造和无参构造的情况如示例需要完整的结构。在 porn.xml 中引入。对于 Bean 类,简化为。无参构造和有参构造。
2025-05-08 17:14:12
296
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人