当前位置: 首页 > 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);// 查询数…...

实体没客流,电商竞争大,服装行业该如何破局?

声明:本文基于笔者在浙江绍兴柯桥区经营小微服装门店的真实业务场景,对一套名为“店有鱼”的零售 SaaS 系统进行技术性复盘。目的在于探讨如何通过数字化工具构建线上线下融合(O2O)的闭环能力,不构成产品推广。背景&am…...

使用 C# 删除 PDF 中的数字签名汹

一、 什么是 AI Skills:从工具级到框架级的演化 AI Skills(AI 技能) 的概念最早在 Claude Code 等前沿 Agent 实践中被强化。最初,Skills 被视为“工具级”的增强,如简单的文件读写或终端操作,方便用户快速…...

应用组策略管理域环境实验指导文档

一、文档概述 本实验指导基于Windows Server 2019域环境,系统讲解组策略的配置、应用规则及场景化落地方法,帮助学员掌握域环境下批量管理用户和计算机的核心技能。所有实验均适配实际企业运维场景,可直接复用到生产环境。 二、实验前置准备 2.1 环境检查清单 域环境部署…...

AI写论文软件哪个最好?精选7款AI论文生成神器,轻松掌握毕业论文!

你是否曾在深夜面对空白文档,为论文框架和文献综述绞尽脑汁?从本科生到博士生,从职场评职称到科研发表,论文写作始终是绕不开的挑战。别担心!如今AI论文写作工具已成为提升效率的利器,尤其是一些专业工具能…...

android java多线程传递数据方式-----使用volatile

public static volatile String is_on"yes"...

OpenClaw排错大全:Qwen3-4B接口超时与网关崩溃解决方案

OpenClaw排错大全:Qwen3-4B接口超时与网关崩溃解决方案 1. 问题背景与诊断准备 上周我在本地部署OpenClaw对接Qwen3-4B模型时,遭遇了典型的"三连击"问题:模型响应超时、网关频繁崩溃、飞书消息推送失败。经过72小时的折腾&#x…...

Pretext:值得关注的文本排版引擎依

一、语言特性:Java 26 与模式匹配进化 1.1 Java 26 语言级别支持 IDEA 2026.1 EAP 最引人注目的变化之一,就是新增 Java 26 语言级别支持。这意味着开发者可以提前体验和测试即将在 JDK 26 中正式发布的语言特性。 其中最重要的变化是对 JEP 530 的全面支…...

如何构建可扩展的AI Agent架构

如何构建可扩展的AI Agent架构 一、引言 1.1 钩子:从GPT-4o到OpenAI Sora,Agent的“隐形翅膀”已振翅 你是否曾在刷到OpenAI Sora震撼的一分钟视频生成时,好奇它“凭空想象”出连贯人物、场景逻辑和光影效果的底层,真的只是一个巨…...

OpenClaw学习助手:百川2-13B量化模型自动整理课程笔记

OpenClaw学习助手:百川2-13B量化模型自动整理课程笔记 1. 为什么需要自动化笔记整理 作为一名经常需要消化大量课程资料的技术从业者,我长期被两个问题困扰:一是阅读PDF/PPT时手动摘录效率低下,二是分散的笔记难以形成知识体系。…...

大数据开发学习Day8

一、Linux / Shell 任务:批量删除当前目录下所有 .tmp 结尾的临时文件 find . -name "*.tmp" | xargs rm -f # find . -name "*.tmp" 生成当前目录下所有.tmp文件的列表批量删除文件 # 查找并删除所有.log文件 find . -name "*.log&quo…...

[Linux][虚拟串口]x一个特殊的字节露

简介 langchain专门用于构建LLM大语言模型,其中提供了大量的prompt模板,和组件,通过chain(链)的方式将流程连接起来,操作简单,开发便捷。 环境配置 安装langchain框架 pip install langchain langchain-community 其中…...

C/C++头文件防护:#pragma once原理与实践

1. #pragma once 的基本概念与作用在C/C项目开发中,头文件包含管理是个看似简单却暗藏玄机的问题。我第一次意识到它的重要性是在参与一个跨平台嵌入式项目时,某个模块因为头文件重复包含导致的结构体重定义错误,让整个团队排查了整整两天。而…...

阿联酋科技创新研究院:单模型实现多视觉任务统一解决突破

这项由阿联酋科技创新研究院(Technology Innovation Institute,TII)Falcon Vision团队主导的研究发表于2026年3月,论文编号为arXiv:2603.27365v1。有兴趣深入了解的读者可以通过该编号在相关学术平台查询完整论文内容。传统的计算…...

Apache APISIX 3.16.0 版本发布,亮点多多

Apache APISIX 3.16.0 版本正式发布,带来新功能、修复及体验优化。重大变更提升安全性,新功能涵盖速率限制、可观测性等多方面,还有多项缺陷修复。重大变更提升安全此次版本有两项重大变更。openid - connect 插件的 ssl_verify 默认值变为 t…...

LAYONTHEGROUND沦

一、什么是requests? requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你: 轻松发送GET、POST、PUT、DELETE等请求 处理Cookie、会话等复杂性 自动解压缩内容 处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景: …...

四座小水库的“智能体检”:广州创科大亚湾安全监测项目纪实

在惠州鱿鱼湾、龙尾山、格木洞、畲禾坑四座水库,如同镶嵌在群山之间的明珠,守护着下游的城镇与工业区。它们大多建于上世纪六七十年代,服役已超半个世纪。2023年冬,一场以“除险加固智慧监测”为核心的维修加固工程正式拉开帷幕。…...

OpenClaw语音控制方案:千问3.5-35B-A3B-FP8对接Whisper实现声控自动化

OpenClaw语音控制方案:千问3.5-35B-A3B-FP8对接Whisper实现声控自动化 1. 为什么需要语音控制自动化? 上周整理实验室数据时,我双手正忙着操作显微镜,突然需要查一份文献——那种"腾不出手却必须立刻操作电脑"的窘境&…...

面向太空应用的钙钛矿光伏:稳定性测试指南

随着全球商业航天产业的快速发展,低地球轨道(LEO)卫星星座(如 Starlink、千帆)正推动航天从“高可靠、小规模”向“低成本、大规模”转型。这一变化对能源系统提出了新的要求:更高比功率、更低成本以及更轻…...

Blynk物联网开发终极指南:如何5分钟内构建云端控制应用

Blynk物联网开发终极指南:如何5分钟内构建云端控制应用 【免费下载链接】blynk-library Blynk library for IoT boards. Works with Arduino, ESP32, ESP8266, Raspberry Pi, Particle, ARM Mbed, etc. 项目地址: https://gitcode.com/gh_mirrors/bl/blynk-librar…...

2026年程序员必备:高质量源码分享平台大盘点

在程序员的日常开发工作中,源码是极为重要的学习与开发资源。优质的源码不仅能助力我们快速掌握新技术,还能为项目开发提供宝贵的参考。2026年,众多源码分享平台不断涌现与更新,下面就为大家详细盘点一些高质量的源码分享平台&…...

告别试用期焦虑:JetBrains IDE重置工具全面指南

告别试用期焦虑:JetBrains IDE重置工具全面指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains IDE试用期结束而烦恼吗?当你正沉浸在代码创作的高峰期,突然弹出…...

Qt表格入门(优化篇)成

1. 前言 本文详细介绍如何使用 kylin v10 iso 文件构建出 docker image,docker 版本为 20.10.7。 2. 构建 yum 离线源 2.1. 挂载 ISO 文件 mount Kylin-Server-V10-GFB-Release-030-ARM64.iso /media 2.2. 添加离线 repo 文件 在/etc/yum.repos.d/下创建kylin-local…...

大模型工程师的黄金赛道:揭秘高薪岗位的核心技能与必备经验!

本文深入剖析了大模型领域内的五大核心岗位方向,包括基座模型训练、大模型微调、大模型开发、大模型推理部署以及多模态大模型。文章详细阐述了每个方向的工作内容、核心竞争力、所需经验及市场现状,并推荐了相关的开源教程。此外,还强调了在…...

实验二四叉树图像模糊项目教程

四叉树图像模糊项目教程 📖 项目简介 这是一个使用四叉树算法实现图像模糊处理的C++项目。程序实现了两种图像模糊方法: 高斯模糊:传统的图像平滑方法 四叉树平均模糊:基于四叉树分割的自适应模糊方法 两种方法可以对比使用,让你直观感受不同算法的效果差异。 🎯 核心…...

广州团建策划公司引进健球团建,以三方竞技激发团队协同创新!

广州市搏翱企业管理咨询股份有限公司近日成功举办健球主题团队建设活动,将这一独特的三方竞技运动引入企业培训领域。作为深耕团队发展多年的专业机构,搏翱广州团建策划公司持续探索创新体验形式,帮助企业构建更灵活高效的协同机制&#xff0…...

AI 时代:祛魅、适应与重新定义畔

指令替换 项目需求:将加法指令替换为减法 项目目录如下 /MyProject ├── CMakeLists.txt # CMake 配置文件 ├── build/ #构建目录 │ └── test.c #测试编译代码 └── mypass2.cpp # pass 项目代码 一,测试代码示例 test.c // test.c #includ…...

深度解码:华为IPD流程管理体系L1-L5最佳实践与数字化转型架构全景(PPT)

在当今高度竞争的商业环境中,企业的核心竞争力不再仅仅取决于单一的技术突破或资本优势,而是取决于其业务流程的成熟度与组织运作的系统性。华为作为全球领先的科技企业,其背后支撑庞大业务帝国高效运转的正是其历经多年打磨的IPD&#xff08…...

一文讲清,精益六西格玛咨询是什么意思?做精益六西格玛咨询对企业有什么用?

精益六西格玛咨询到底是什么?简单来说,精益六西格玛咨询是一种将精益生产的效率与六西格玛的质量管理相结合的系统化服务,旨在帮助企业消除浪费并减少变异。通过引入精益六西格玛咨询,企业能够利用数据驱动的方法解决复杂的管理难…...

LeetCode 3655. 区间乘法查询后的异或2 解题报告(Python)

LeetCode 3655. 区间乘法查询后的异或2 解题报告(Python) 前言 本题是 LeetCode 第 3655 号问题,属于一道结合了根号分治、差分思想与模运算的综合应用题。题目要求在一个数组上执行大量区间“跳跃式”乘法操作,并最终返回所有元素…...