企业网站域名在哪申请/成都新闻今日最新消息

企业网站域名在哪申请,成都新闻今日最新消息,东莞广告公司东莞网站建设,WordPress怎么编制手机页面乐观锁:总是假设最好的情况,每次读取数据时认为数据不会被修改(即不加锁),当进行更新操作时,会判断这条数据是否被修改,未被修改,则进行更新操作。若被修改,则数据更新失…

 乐观锁:总是假设最好的情况,每次读取数据时认为数据不会被修改(即不加锁),当进行更新操作时,会判断这条数据是否被修改,未被修改,则进行更新操作。若被修改,则数据更新失败,可以对数据进行重试(重新尝试修改数据)。
    悲观锁:总是假设最坏的情况,每次读取数据时认为数据会被修改(即加锁),当进行更新操作时,直接更新数据,结束操作后释放锁(此处才可以被其他线程读取)。

乐观锁、悲观锁使用场景?
  乐观锁一般用于读比较多的场合,尽量减少加锁的开销。
  悲观锁一般用于写比较多的场合,尽量减少 类似 乐观锁重试更新引起的性能开销。

乐观锁两种实现方式
方式一:通过版本号机制实现。
  在数据表中增加一个 version 字段。
  取数据时,获取该字段,更新时以该字段为条件进行处理(即set version = newVersion where version = oldVersion),若 version 相同,则更新成功(给新 version 赋一个值,一般加 1)。若 version 不同,则更新失败,可以重新尝试更新操作。

mybatis-plus 实现乐观锁(通过 version 机制)
实现思路:
  Step1:取出记录时,获取当前version
  Step2:更新时,带上这个version
  Step3:执行更新时, set version = newVersion where version = oldVersion
  Step4:如果version不对,就更新失败

mybatis-plus 代码实现乐观锁
Step1:
  配置乐观锁插件。
  编写一个配置类(可以与上例的分页插件共用一个配置类),将 OptimisticLockerInterceptor 通过 @Bean 交给 Spring 管理。

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;@Configuration
// 配置扫描mapper的路径
@MapperScan("com.mapper")
public class MyBatisPlusConfig {// 乐观锁插件//    @Bean//    public OptimisticLockerInterceptor optimisticLockerInterceptor() {//        return new OptimisticLockerInterceptor();//    }
}

Step2:
  定义一个数据库字段 version。

CREATE TABLE test_mybatis_plus_user
(id BIGINT NOT NULL COMMENT '主键ID',name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',age INT(11) NULL DEFAULT NULL COMMENT '年龄',email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',create_time timestamp NULL DEFAULT NULL COMMENT '创建时间',update_time timestamp NULL DEFAULT NULL COMMENT '最后修改时间', delete_flag tinyint(1) NULL DEFAULT NULL COMMENT '逻辑删除(0 未删除、1 删除)',version int NULL DEFAULT NULL COMMENT '版本号(用于乐观锁, 默认为 1)',PRIMARY KEY (id)
);

 Step3:
  使用 @Version 注解标注对应的实体类。
  可以通过 @TableField 进行数据自动填充。

/*** 版本号(用于乐观锁, 默认为 1)*/
@Version
@TableField(fill = FieldFill.INSERT)
private Integer version;@Override
public void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, "version", Integer.class, 1);
}

package com.config;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;import java.util.Date;@Component
public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {// 方法1:在3.3.0+版本可以使用strictInsertFill()、strictUpdateFill()方法// 方法2:通用的自动填充方法this.setFieldValByName("gmtCreate", new Date(), metaObject);this.setFieldValByName("gmtModified", new Date(), metaObject);this.setFieldValByName("version", 0, metaObject); //新增就设置版本值为0}@Overridepublic void updateFill(MetaObject metaObject) {// 这里只有为空才会填充数据 所以修改一下// 方法1:在3.3.0+版本可以使用strictUpdateFill()方法try {if (metaObject.hasSetter("gmtModified")) {metaObject.setValue("gmtModified", null);}} catch (Exception e) {e.printStackTrace();}// 方法2:通用的自动填充方法this.setFieldValByName("gmtModified", new Date(), metaObject);}
}

Step4:
  简单测试一下,可以看一下 控制台 打印的 sql 语句。 

@Test
public void testVersion() {User user = new User();user.setName("tom").setAge(20).setEmail("tom@163.com");userService.save(user);userService.list().forEach(System.out::println);user.setName("jarry");userService.update(user, null);userService.list().forEach(System.out::println);
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72763.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AT指令集-NBIOT

是什么? 窄带物联网(Narrow Band Internet of Things, NB-IoT)成为万物互联网络的一个重要分支支持低功耗设备在广域网的蜂窝数据连接,也被叫作低功耗广域网(LPWAN)NB-IoT支持待机时间长、对网络连接要求较高设备的高效连接NB-Io…

CBNet:一种用于目标检测的复合骨干网架构之论文阅读

摘要 现代顶级性能的目标检测器在很大程度上依赖于骨干网络,而骨干网络的进步通过探索更高效的网络结构带来了持续的性能提升。本文提出了一种新颖且灵活的骨干框架——CBNet,该框架利用现有的开源预训练骨干网络,在预训练-微调范式下构建高…

《保险科技》

自己在保险行业工作很多年,只是接触了一些数据的内容,对于保险业务的知识了解的很少,想通过这本书补充一下,但是发现这本书就是一些知识的拼接。 先将保险的历史,后讲保险的定义,然后就是吹嘘保险行业和互联…

蓝桥杯第13届真题2

由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码&a…

双曲空间学习记录

文章目录 前期学习内容双曲空间中的图卷积神经网络 前期学习内容 双曲空间中的图卷积神经网络 250318:这个博客的产生原因是我去看了B站上的一个视频,up说ppt上传到github上了,但是我去找了一圈也没有找到,然后想给他留言&#x…

【大模型基础_毛玉仁】2.4 基于 Encoder-Decoder 架构的大语言模型

更多内容:XiaoJ的知识星球 目录 2.4 基于 Encoder-Decoder 架构的大语言模型2.4.1 Encoder-Decoder 架构2.4.2 T5 语言模型1)T5 模型结构2)T5 预训练方式3)T5 下游任务 2.4.3 BART 语言模型1)BART 模型结构2&#xff0…

browser-use WebUI + DeepSeek 基于AI的UI自动化解决方案

browser-use WebUI 一、browser-use是什么Browser-use采用的技术栈为: 二、browser-use webui 主要功能使用场景 三、使用教程1.python 安装2、把项目clone下来3、安装依赖4、配置环境5、启动6、配置1.配置 Agent2.配置要用的大模型3.关于浏览器的一些设置 四、Deep…

Windows安装Apache Maven 3.9.9

第一步下载资源 官网:下载 Apache Maven – Maven 环境变量配置 M2_HOME 指向bin目录 MAVEN_HOME 指向根目录 M2_HOME 不确定是否必须要 Path配置 ,需要注意MAVEN顺序应当在java之前 验证是否安装成功,在cmd中以管理员方式打开&#xff0c…

【spring-boot-starter-data-neo4j】创建结点和查找结点操作

配置连接neo4j # application.properties spring.neo4j.uribolt://localhost:7687 spring.neo4j.authentication.usernameneo4j spring.neo4j.authentication.password你的密码定义实体类 package com.anmory.platform.GraphService.Dao;import org.springframework.data.neo…

Excel导出工具类--复杂的excel功能导出(使用自定义注解导出)

Excel导出工具类 前言: 简单的excel导出,可以用easy-excel, fast-excel, auto-poi,在导出实体类上加上对应的注解,用封装好的工具类直接导出,但对于复杂的场景, 封装的工具类解决不了,要用原生的excel导出(easy-excel, fast-excel, auto-poi都支持原生的) 业务场景: 根据…

Excel处理控件Aspose.Cells教程:如何自动将 HTML 转换为 Excel

在处理 HTML 表中呈现的结构化数据时,将 HTML 转换为 Excel 是一种常见需求。无论您是从网站、报告还是任何其他来源提取数据,将其转换为 Excel 都可以更好地进行分析、操作和共享。 开发人员通常更喜欢使用编程方法将 HTML 转换为 Excel,因…

基于springbo校园安全管理系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 随着信息时代的来临,过去信息校园安全管理方式的缺点逐渐暴露,本次对过去的校园安全管理方式的缺点进行分析,采取计算机方式构建校园安全管理系统。本文通过阅读相关文献,研究国内外相关技术,提出了一种集进出校…

Git 实战指南:本地客户端连接 Gitee 全流程

本文将以 Gitee(码云)、系统Windows 11 为例,详细介绍从本地仓库初始化到远程协作的全流程操作 目录 1. 前期准备1.1 注册与配置 Gitee1.2 下载、安装、配置客户端1.3 配置公钥到 Gitee2. 本地仓库操作(PowerShell/Git Bash)2.1 初始化本地仓库2.2 关联 Gitee 远程仓库3. …

Pytest项目_day01(HTTP接口)

HTTP HTTP是一个协议(服务器传输超文本到浏览器的传送协议),是基于TCP/IP通信协议来传输数据(HTML文件,图片文件,查询结果等)。 访问域名 例如www.baidu.com就是百度的域名,我们想…

MySQL超详细介绍(近2万字)

1. 简单概述 MySQL安装后默认有4个库不可以删除,存储的是服务运行时加载的不同功能的程序和数据 information_schema:是MySQL数据库提供的一个虚拟的数据库,存储了MySQL数据库中的相关信息,比如数据库、表、列、索引、权限、角色等…

SQLMesh宏操作符深度解析:掌握@star与@GENERATE_SURROGATE_KEY实战技巧

引言:解锁SQLMesh的动态查询能力 在复杂的数据处理场景中,手动编写重复性SQL代码不仅效率低下,还难以维护。SQLMesh作为新一代数据库中间件,通过其强大的宏系统赋予开发者编程式构建查询的能力。本文将重点解析两个核心操作符——…

超详细kubernetes部署k8s----一台master和两台node

一、部署说明 1、主机操作系统说明 2、主机硬件配置说明 二、主机准备(没有特别说明都是三台都要配置) 1、配置主机名和IP 2、配置hosts解析 3、防火墙和SELinux 4、时间同步配置 5、配置内核转发及网桥过滤 6、关闭swap 7、启用ipvs 8、句柄…

高光谱相机在水果分类与品质检测中的应用

一、核心应用领域 ‌外部品质检测‌ ‌表面缺陷识别:通过400-1000nm波段的高光谱成像,可检测苹果表皮损伤、碰伤等细微缺陷,结合图像分割技术实现快速分类‌。 ‌损伤程度评估:例如青香蕉的碰撞损伤会导致光谱反射率变化&#…

【蓝桥杯每日一题】3.17

🏝️专栏: 【蓝桥杯备篇】 🌅主页: f狐o狸x 他们说内存泄漏是bug,我说这是系统在逼我进化成SSR级程序员 OK来吧,不多废话,今天来点有难度的:二进制枚举 二进制枚举,就是…

Windows11 新机开荒(二)电脑优化设置

目录 前言: 一、注册微软账号绑定权益 二、此电脑 桌面图标 三、系统分盘及默认存储位置更改 3.1 系统分盘 3.2 默认存储位置更改 四、精简任务栏 总结: 前言: 本文承接上一篇 新机开荒(一) 上一篇文章地址&…