当前位置: 首页 > article >正文

Redis:延迟双删的适用边界与落地细节使

pagehelper整合引入依赖com.github.pagehelperpagehelper-spring-boot-starter2.1.0compile编写代码GetMapping(/list/{pageNo})public PageInfo findAll(PathVariable int pageNo) {// 设置当前页码和每页显示的条数PageHelper.startPage(pageNo, 10);// 查询数据List allVip vipService.findAllVip();// 将数据封装到pageinfo对象中PageInfo pageInfo new PageInfo(allVip);return pageInfo;}web层响应结果的封装对于前后端分离的系统来说后端会返回json数据一般会封装一个R对象来解决统一响应格式问题。package com.ali.springboot3ssm.result;import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;DataNoArgsConstructorAllArgsConstructorBuilder // 建造模式public class R {// 响应状态码private int code;// 消息描述成功或失败private String msg;// 响应对象任意类型对象private T data;public static R OK(T data) {return R.builder().code(200).msg(成功).data(data).build();}// 成功的方法public static R OK() {return R.builder().code(200).msg(成功).build();}// 失败的方法public static R FAIL(int code,String msg) {return R.builder().code(code).msg(msg).build();}public static R FAIL() {return R.builder().code(400).msg(失败).build();}}controller中使用GetMapping(/list/{pageNo})public R PageInfo findAll(PathVariable int pageNo) {// 设置当前页码和每页显示的条数,设置后会自动为查询语句加limitPageHelper.startPage(pageNo, 10);// 查询数据List allVip vipService.findAllVip();// 将数据封装到pageinfo对象中PageInfo pageInfo new PageInfo(allVip);return R.OK(pageInfo);}改进R对象添加一个枚举类型package com.ali.springboot3ssm.enums;import lombok.AllArgsConstructor;import lombok.Getter;import lombok.NoArgsConstructor;import lombok.Setter;NoArgsConstructorAllArgsConstructorpublic enum CodeEnum {// 枚举的大括号一开始的位置必须有枚举值// 枚举值下面如果没有代码枚举值列表最后的“”可以省略// 枚举值下面如果有代码枚举值列表最后的“” 不可以省略OK(200, OK),FAIL(400, 失败),BAD_REQUEST(400, 失败),NOT_FOUND(400, 失败),INTERNAL_ERROR(400, 失败),MODIFICATION_ERROR(400, 失败),DELETION_ERROR(400, 失败),CREATE_ERROR(400, 失败);GetterSetterprivate int code;GetterSetterprivate String msg;}重写R类DataNoArgsConstructorAllArgsConstructorBuilder // 建造模式public class R {// 响应状态码private int code;// 消息描述成功或失败private String msg;// 响应对象任意类型对象private T data;public static R OK(T data) {return R.builder().code(CodeEnum.OK.getCode()).msg(CodeEnum.OK.getMsg()).data(data).build();}// 成功的方法public static R OK() {return R.builder().code(CodeEnum.OK.getCode()).msg(CodeEnum.OK.getMsg()).build();}// 失败的方法public static R FAIL(CodeEnum codeEnum) {return R.builder().code(codeEnum.getCode()).msg(codeEnum.getMsg()).build();}public static R FAIL() {return R.builder().code(CodeEnum.FAIL.getCode()).msg(CodeEnum.FAIL.getMsg()).build();}}事务管理spring boot自动配置了事务管理器。只需要使用Transactional注解标注需要事务控制的方法即可。就这么简单。怎么打war包修改pom文件warorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-tomcatorg.springframework.bootspring-boot-starter-tomcatprovided启动类继承SpringBootServletInitializer类并重写configure方法MapperScan(basePackages com.ali.springboot3ssm.repository)SpringBootApplicationpublic class Springboot3SsmApplication extends SpringBootServletInitializer {Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(Springboot3SsmApplication.class);}public static void main(String[] args) {SpringApplication.run(Springboot3SsmApplication.class, args);}}日志处理抽象的日志框架什么时抽象的日志框架编译阶段可以使用抽象的日志框架能正常编译。但运行阶段必须提供具体的日志框架目的是具体的日志框架可灵活切换。抽象框架有SLF4J 、 Commons Logging。这2个都可以绑定具体的日志框架如Log4j、Log4j2、Logback、JUL具体的日志框架Log4j已过时、Log4j2推荐、Logback推荐、JULJava util Logging功能有限适合小型应用spring boot默认集成log back日志级别日志级别由低到高trace级别最低。记录最详细信息通常在调试时使用debug记录程序运行时的详细信息比如变量的值进入或退出某个方法等主要用于开发时调试info记录一般信息如系统启动、服务初始化完成等表示程序运行正常。warn警告信息error错误信息生成环境中 通常把日志级别设为info或更高级别开发或测试环境中设为debug或tracespring boot默认日志级别是infoSlf4j // 这是lombok的一个注解作用是为我们维护一个日志对象logSpringBootApplicationpublic class Springboot3SsmApplication {public static void main(String[] args) {SpringApplication.run(Springboot3SsmApplication.class, args);// 直接使用loglog.info(日志信息);}}调整日志级别# 调整日志级别logging.level.rootdebug日志的粗细粒度# 调整根日志级别全局的整个项目都是这个级别logging.level.rootdebug# 为特定包设置日志级别logging.level.com.ali.springboot3ssm.controllerdebug# 为特定类设置日志级别logging.level.com.ali.springboot3ssm.service.UserServicetrace# 在控制台中打印sql (这个包是Mapper类所在的包)logging.level.com.ali.springboot3ssm.repositorydebug日志输出到文件有2种方式这2种方式不能共存如果同时存在只有logging.file.name生效# 将日志文件输出到当前项目根目录下的log目录中。文件名默认spring.log 并且文件名不可修改# 路径可随便改。可以是硬盘上的任意有权限路径logging.file.path./log/# 日志文件输出到当前项目根目录下my.log文件。路径不可修改logging.file.namemy.log滚动日志防止日志无线增长将日志文件分割成多个文件避免单个文件过大难以处理# 此策略仅适合logback# 日志文件达到多大时进行归档,打成一个压缩包logging.logback.rollingpolicy.max-file-size10MB# 归档日志文件总共达到多大时删除logging.logback.rollingpolicy.total-size-cap50GB# 归档日志文件最多保留几天logging.logback.rollingpolicy.max-history60#启动项目时是否清理归档日志文件logging.logback.rollingpolicy.clean-history-on-startfalse# 归档日志文件名格式logging.logback.rollingpolicy.file-name-pattern${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz日志框架切换先排除log back 再引入新依赖org.springframework.bootspring-boot-starter-loggingorg.springframework.bootspring-boot-starter-log4j2酵莆蹦谟

相关文章:

Redis:延迟双删的适用边界与落地细节使

pagehelper整合 引入依赖com.github.pagehelperpagehelper-spring-boot-starter2.1.0compile编写代码 GetMapping("/list/{pageNo}") public PageInfo findAll(PathVariable int pageNo) {// 设置当前页码和每页显示的条数PageHelper.startPage(pageNo, 10);// 查询数…...

龙虾白嫖指南,请查收~胃

1. 什么是 Apache SeaTunnel? Apache SeaTunnel 是一个非常易于使用、高性能、支持实时流式和离线批处理的海量数据集成平台。它的目标是解决常见的数据集成问题,如数据源多样性、同步场景复杂性以及资源消耗高的问题。 核心特性 丰富的数据源支持&#…...

银行数据中心基础设施建设与运维管理【1.4】

2. 3. 2 数据中心国家标准分析 我国现行的 《电子信息系统机房设计规范》 (GB 50174—2008) 将数据中心分为A、 B、 C 共 3 个级别, 该规范参考和借鉴了国际标准的内容, 但仍然存在一些差别,例如, 该规范没有提及在线维护的功能, 对容错和在线维护的功能也未做明确区分…...

别再只会调PID了!电机速度环PI参数整定,手把手教你用电流环带宽搞定高动态伺服

电机速度环PI参数整定的高阶实践:基于电流环带宽的动态优化 在工业伺服系统与高精度运动控制领域,电机速度环的响应特性直接决定了设备动态性能的上限。传统PID调参方法往往停留在试凑法层面,难以满足现代高速高精应用场景的需求。本文将揭示…...

第7篇 | RTE与OS调度:当“智能调度中心”遇上“任务漂移”

RTE负责将SWC的Runnable映射到OS任务,支持定时事件、数据接收事件、操作调用事件。调度设计的好坏,直接决定系统实时性。 “任务漂移”案例分析 某ADAS项目中,一个周期10ms的传感器数据融合任务,实测运行周期波动达19ms。使用Trac…...

Redis 热点 Key 的治理方案

Redis作为高性能内存数据库,在应对高并发场景时,热点Key问题常成为性能瓶颈。当某些Key被频繁访问时,会导致单节点负载激增,引发延迟飙升甚至服务雪崩。本文将深入探讨热点Key的治理方案,帮助开发者构建更稳定的Redis架…...

技术适配器中的接口转换与兼容处理

技术适配器中的接口转换与兼容处理 在现代软件开发中,系统间的集成与协作越来越普遍,但由于不同系统可能采用不同的技术栈、协议或数据格式,接口兼容性问题成为开发中的常见挑战。技术适配器作为一种中间层解决方案,通过接口转换…...

LeetCode:矩阵置零

方法一&#xff1a;O(MN)class Solution {public void setZeroes(int[][] matrix) {int m matrix.length;int n matrix[0].length;//申请一个和原矩阵完全等大的新矩阵int[][] copy new int[m][n];//把旧矩阵的数据原封不动地搬过来for (int i 0; i < m; i) {for (int j…...

手把手教你用Python的ObsPy库计算地震P波到时(附完整代码与避坑指南)

零基础实战&#xff1a;用Python的ObsPy库精准计算地震P波到时 地震数据分析中&#xff0c;P波到时的准确计算是定位震源和研究地下结构的基础。对于地球物理专业的学生和工程师来说&#xff0c;掌握这项技能能大幅提升工作效率。本文将带你从零开始&#xff0c;用Python的ObsP…...

告别手动注册:nb_conda_kernels插件如何智能管理你的Jupyter多环境内核

1. 为什么你需要nb_conda_kernels插件 每次新建一个Conda环境都要手动注册Jupyter内核&#xff1f;这就像每次搬家都要重新办身份证一样麻烦。作为经常在数据分析、机器学习和Web开发多个领域切换的老手&#xff0c;我深刻理解手动管理内核的痛苦。直到发现nb_conda_kernels这个…...

别让行业限制你!2026手握这10个高含金量证书,金融/互联网/制造随便挑!

高含金量证书推荐在职业发展中&#xff0c;证书是提升竞争力的重要工具。无论金融、互联网还是制造业&#xff0c;以下10个证书能帮助突破行业限制&#xff0c;其中CDA数据分析师证书是跨领域通用的核心资质之一。金融行业必备证书证书名称适用岗位含金量备注CFA&#xff08;特…...

避坑指南:PaviaU数据集预处理中,你的标准化和样本切片方法可能都错了

高光谱数据处理进阶&#xff1a;PaviaU数据集预处理的三大优化策略 1. 标准化方法的深度选择&#xff1a;全局与逐波段的博弈 高光谱数据的标准化处理远非简单调用StandardScaler()就能解决。PaviaU数据集包含103个波段&#xff0c;每个波段的光谱响应特性差异显著。全局标准化…...

Nunchaku FLUX.1 CustomV3效果展示:长宽比灵活适配(4:3/16:9/1:1)输出稳定性

Nunchaku FLUX.1 CustomV3效果展示&#xff1a;长宽比灵活适配&#xff08;4:3/16:9/1:1&#xff09;输出稳定性 1. 开篇&#xff1a;惊艳的图片生成新体验 你是否曾经遇到过这样的困扰&#xff1a;想要生成一张特定比例的图片&#xff0c;却发现AI模型总是输出不稳定的结果&…...

FigmaCN中文插件:3分钟快速安装,彻底告别英文界面困扰

FigmaCN中文插件&#xff1a;3分钟快速安装&#xff0c;彻底告别英文界面困扰 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma复杂的英文界面而烦恼吗&#xff1f;每次设计都…...

算力云实战:用阿里云盘+JupyterLab搞定大模型数据集上传,附完整VSCode远程Python环境配置

算力云实战&#xff1a;阿里云盘与JupyterLab高效传输大模型数据集全指南 当你在本地工作站完成了一个15GB的BERT预训练数据集整理&#xff0c;正准备上传到云端GPU实例进行微调时&#xff0c;传统SFTP传输进度条却卡在23%整整两小时不动——这种场景对AI开发者来说再熟悉不过。…...

Java基础入门:方法详解

Java基础入门&#xff1a;方法详解 前言&#xff1a;掌握了Java变量、运算符、流程控制和数组后&#xff0c;你可能会遇到一个问题——重复编写相同的代码&#xff0c;比如多次计算两个数的和、多次打印数组元素&#xff0c;既繁琐又冗余。而「方法」就是Java中用来实现“代码复…...

Keil5项目模块化实战:将STM32标准外设驱动打包成GCC编译的.a静态库

Keil5项目模块化实战&#xff1a;将STM32标准外设驱动打包成GCC编译的.a静态库 在嵌入式开发中&#xff0c;随着项目规模扩大和复杂度提升&#xff0c;代码复用和模块化管理变得尤为重要。将常用的外设驱动&#xff08;如GPIO、USART等&#xff09;编译成静态库&#xff08;.a文…...

软件发布管理化的版本规划与交付验证

软件发布管理中的版本规划与交付验证&#xff1a;高效落地的关键 在快速迭代的软件开发领域&#xff0c;版本规划与交付验证是确保产品高质量交付的核心环节。通过系统化的管理&#xff0c;团队能够明确目标、控制风险&#xff0c;并实现从开发到部署的无缝衔接。本文将围绕版…...

技术拆分中的模块分离与接口定义

技术拆分中的模块分离与接口定义 在现代软件开发中&#xff0c;系统复杂度日益增加&#xff0c;如何高效地管理和维护代码成为开发者面临的重要挑战。技术拆分通过模块分离与接口定义&#xff0c;将庞大系统分解为多个独立且可复用的组件&#xff0c;不仅提升了开发效率&#…...

PowerPaint-V1 Gradio快速部署:Docker镜像免配置开箱即用

PowerPaint-V1 Gradio快速部署&#xff1a;Docker镜像免配置开箱即用 想不想体验一下&#xff0c;用画笔在图片上随便一涂&#xff0c;就能让不想要的物体瞬间消失&#xff0c;或者让缺失的背景完美补全&#xff1f;今天要介绍的这个工具&#xff0c;就能让你轻松做到。 Powe…...

FaceFusion使用技巧:教你如何实现跨设备访问换脸工具

FaceFusion使用技巧&#xff1a;教你如何实现跨设备访问换脸工具 1. FaceFusion简介 FaceFusion是新一代AI换脸工具&#xff0c;无需复杂安装即可一键运行。它支持Nvidia和AMD全系列显卡&#xff0c;能够实现高清换脸、去遮挡、卡通脸替换等功能。最新版本增加了三种遮罩功能…...

Foxmail添加Gmail账号保姆级教程:如何绕过两步验证直接配置(2024最新版)

Foxmail高效配置Gmail全攻略&#xff1a;2024专属密码解决方案 每次登录Gmail都要反复输入验证码&#xff1f;Foxmail里添加Gmail账户总提示密码错误&#xff1f;这可能是2024年最让你抓狂的办公效率杀手之一。作为深度邮件使用者&#xff0c;我完全理解那种每天要处理十几个邮…...

解锁Steam创意工坊:WorkshopDL跨平台下载技术深度解析

解锁Steam创意工坊&#xff1a;WorkshopDL跨平台下载技术深度解析 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为不同游戏平台的模组兼容性问题烦恼吗&#xff1f;Works…...

Spring Boot Starter 自动加载机制

Spring Boot Starter 自动加载机制解析 Spring Boot以其"约定优于配置"的理念简化了Java开发&#xff0c;而Starter自动加载机制正是这一理念的核心体现。通过预定义的依赖组合与自动化配置&#xff0c;开发者无需手动编写繁琐的XML或注解配置即可快速集成功能模块。…...

FineReport实战:条件属性与参数控件的动态交互设计

1. 条件属性的核心玩法与实战案例 条件属性是FineReport中最实用的功能之一&#xff0c;它能让静态报表"活"起来。简单来说&#xff0c;就是根据数据值或业务规则&#xff0c;动态改变单元格的显示样式或内容。我在给某零售企业做数据分析系统时&#xff0c;就用这个…...

SIP协议(四) - 注册流程中的挑战与响应机制详解

1. SIP注册流程中的挑战与响应机制 第一次接触SIP协议时&#xff0c;很多人都会被它的注册流程搞得一头雾水。明明发送了REGISTER请求&#xff0c;服务器却返回401错误&#xff0c;这到底是怎么回事&#xff1f;其实这正是SIP协议中经典的"挑战-响应"鉴权机制在发挥作…...

香橙派AIPro散热实战:不花一分钱,用桌面小风扇把芯片温度从80℃压到40℃

香橙派AIPro零成本散热方案&#xff1a;从80℃到40℃的实战手记 香橙派AIPro作为一款高性能开发板&#xff0c;在运行AI推理或高负载任务时&#xff0c;芯片温度飙升是许多开发者头疼的问题。当温度超过80℃时&#xff0c;不仅会出现性能降频&#xff0c;甚至可能触发自动休眠保…...

ESP32-C3 FN4P5N模块实战:如何用PlatformIO一键搞定烧录与调试(附配置模板)

ESP32-C3 FN4P5N模块实战&#xff1a;PlatformIO高效开发全攻略 第一次拿到ESP32-C3 FN4P5N模块时&#xff0c;我被它仅有指甲盖大小的体积震惊了——这个集成了4MB闪存和512KB PSRAM的物联网芯片&#xff0c;竟然能通过USB直接完成烧录和调试。作为常年奔波在各种嵌入式项目间…...

TimescaleDB 2.26.2 发布,修复多项错误

开源数据库 TimescaleDB 发布 2.26.2 版本&#xff0c;该版本修复了自 2.26.1 版本以来存在的多个错误&#xff0c;官方建议用户尽快升级。 TimescaleDB 简介 TimescaleDB 是基于 PostgreSQL 构建的开源数据库&#xff0c;旨在让 SQL 可扩展到时间序列数据。它被打包为 Postgre…...

大模型落地总卡在“最后一公里”?SITS2026揭示5级成熟度断层,92%企业尚处L2以下(附自测清单)

第一章&#xff1a;SITS2026发布&#xff1a;大模型工程化成熟度模型 2026奇点智能技术大会(https://ml-summit.org) SITS2026&#xff08;Software Intelligence & Trustworthiness Standard 2026&#xff09;正式发布首个面向大模型全生命周期的工程化成熟度模型&#…...