前言在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置,下面就通过一个简单的示例,来实现这个功能。一、新建一个springboot工程,并添加依赖<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>sprin
转载
2024-06-11 22:16:57
49阅读
前言大量的请求,或者同时的操作,容易导致系统在业务上发生并发的问题. 通常讲到并发,解决方案无非就是前端限制重复提交,后台进行悲观锁或者乐观锁限制.悲观锁与并发悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到解锁,可以理解为独占锁。在java中synchronized和Ree
转载
2024-02-21 14:17:55
95阅读
本文介绍SpringBoot基于数据库实现简单的分布式锁。
一.简介分布式锁的方式有很多种,通常方案有:基于mysql数据库基于redis基于ZooKeeper网上的实现方式有很多,本文主要介绍的是如果使用mysql实现简单的分布式锁,加锁流程如下图: 其实大致思想如下:1.根据一个值来获取锁(也就是我这里的tag),如果当前不存在锁,那么在数据库插入一条记录,然后进行处理
转载
2024-03-02 08:07:37
82阅读
TODO添加索引后,原先的主键自增排序变成乱序。
目前未找到解决办法。当然,可以加order by。前言理清springboot&mysql的事务和锁的脉络,具体细节网上或者书上内容太多了。
而那些纷繁的资料最大的问题就是没理清脉络,没有骨架。事务事务就是一堆操作的集成。
事务两个特点--一致性、隔离性。一致性很好理解,一步出错即整个过程终止。
具体实现原理,通过undo log等,不深究
转载
2024-03-19 23:53:52
92阅读
目录简介一、使用 flapdoodle.embed.mongoA. 引入依赖B. 准备测试类C. 完善配置D. 启动测试细节二、使用FongoA. 引入框架B. 准备测试类C.业务测试参考文档小结简介前面的文章中,我们介绍了如何在SpringBoot 中使用MongoDB的一些常用技巧。
那么,与使用其他数据库如 MySQL 一样,我们应该怎么来做MongoDB的单元测试呢?使用内嵌数据库的好处是
转载
2024-02-20 21:38:39
84阅读
案例说明:银行两操作员同时操作同一账户。 比如A、B操作员同时读取一余额为1000元的账户,A操作员为该账户增加100元,B操作员同时为该账户扣除50元,A先提交,B后提交。最后实际账户余额为1000-50=950元,但本该为1000+100-50=1050。这就是典型的并发问题。乐观锁机制在一定程度上解决了这个问题。乐观锁,大多是基于数据版本(Version)记录机制实现。何谓数据版本?即为数据
转载
2024-03-27 09:45:45
238阅读
MyBaits-Plus完成CRUD操作整合MyBatis-Plus----导入依赖自动配置使用plus的步骤1.创建Dao接口继承BaseMapper,里面有默认的增删改查方法2.封装数据库对应字段的实体类3.测试默认查询的表名就是对应实体类的名字Plus简化Service接口层和对应实现层的开发service接口service接口的实现ImpI层优点分页插件使用步骤1.查询数据,封装为lis
转载
2024-05-31 11:50:57
74阅读
1 概述为什么选择Mybatis,一个很重要的原因是它,将封装与开放的完美结合,高效的生成增删改查的同时,又能满足复杂的SQL场景,下面我们详细介绍,SpringBoot如何快速接入Mybatis实现数据库的增删改查。2 添加依赖<dependencies>
<dependency>
<groupId>org.sprin
转载
2024-06-17 15:57:53
40阅读
概念
什么是JPAJPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据。JPA通过JDK5.0注解或者XML描述对象 - 关系表的映射关系,并将运行期的实体对象持久化到数据库中。持久化(Persistence),即把数据保存到可永久保存的存储设备中,如磁盘。持久化的主要
转载
2024-06-27 08:00:17
40阅读
Spring boot 缓存1. spring cachespring cache 是spring 3.1 引入的新技术,核心思想:调用一个缓存方法时会把该方法参数和返回结果,作为一个键值存入缓存中,等到下次使用同样的参数调用该方法时,不在执行该方法,直接从缓存中获取结果进行返回,从而实现缓存功能。Spring 中提供了3个注解来实现缓存。@Cacheable@CachePut@CacheEvic
转载
2024-04-24 13:47:33
95阅读
直切主题现有一张表table : ChenJiID, DanWeiID, Name, ChenJi表中记录ID DanWeiID Name ChenJi --- ----------- --------- --------- 1 1 aa 91 2 1 bb 91 3 1 cc 33 4 2 dd 164 5 2 ee 155 6 2 ff 166在查询分析器里面开两个连接A连接begin tran t1insert into ChenJi (DanWeiID, Name, ChenJi) values (3, ‘张三', 98)rollback tran t1 B连接插入与锁先开始A
原创
2021-07-22 15:00:16
153阅读
前言在实际工作中,重处理是一个非常常见的场景,比如:发送消息失败。 调用远程服务失败。 争抢锁失败。 这些错误可能是因为网络波动造成的,等待过后重处理就能成功。通常来说,会用try/catch,while循环之类的语法来进行重处理,但是这样的做法缺乏统一性,并且不是很方便,要多写很多代码。然而spring-retry却可以通过注解,在不入侵原有业务逻辑代码的方式下,优雅的实现重处理功能。一、@Re
转载
2024-05-08 15:43:45
54阅读
悲观锁总是假设最坏的情况,悲观锁认为被它保护的数据是极其不安全的,每时每刻都有可能变动,一个事务拿到悲观锁后(可以理解为一个用户),其他任何事务都不能对该数据进行修改,只能等待锁被释放才可以执行。当我们要对一个数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发。这种借助数据库锁机制,在修改数据之前先锁定,再修改的方式被称之为悲观并发控制(又名“
转载
2024-04-08 16:09:48
63阅读
Spring Boot 之日志记录Spring Boot 支持集成 Java 世界主流的日志库。如果对于 Java 日志库不熟悉,可以参考:细说 Java 主流日志工具库关键词: log4j, log4j2, logback, slf4j日志格式控制台输出彩色打印文件输出日志级别日志组日志配置文件Spring Boot 中的日志配置源码引申和引用Spring Boot 内部日志全部使用 Commo
转载
2024-02-29 12:59:49
26阅读
一、Spring Data JPA 介绍JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Spring Data JPA是在 Hibernate 基础上封装的一款框架。开发环境Spring Boot 2.0.4Spring Data JPA 2.0.4MySQL 8.0.12JDK 8IDEA 201
**锁** 锁是网络数据库中的一个非常重要的概念,当多个用户同时对数据库并发操作时,会带来数据不一致的问题,所以,锁主要用于多用户环境下保证数据库完整性和一致性。锁分类从数据库系统角度分为三种:排他锁、共享锁、更新锁。 从程序员角度分为两种:一种是悲观锁,一种乐观锁。悲观锁顾名思义,很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人拿这个数据就会block(阻塞)
转载
2024-04-14 10:45:59
64阅读
网上好多处理动态密码或密码加密都是用 【 jasypt 】与 阿里的 【 Druid 】,但这些都无办法满足大部份的公司的安全要求,很多公司要求密码单独方在服务器上的一个地方,并且文件或者密码字符串被加密。在这样的需求下,密码的处理都必须要程序员自己在程序中进行处理,以下两种方式是折腾多天后的可行的两种处理方法。 密码直接放在一个类里面,大家想如何处理就如何处理。pom.xml<p
转载
2023-06-20 23:31:09
239阅读
一、前言最近要求做系统的全局日志记录功能,要求把执行的完整SQL语句保存到数据库中,在实际开发中最终放弃了使用AOP的方法,改由使用mybatis的拦截器实现,这里简单记录一下实现过程。系统数据库主要环境:数据库:MySQL数据源:DruidDataSource二、创建数据库用表这里只是简单演示一下实现过程,只用两张表模拟一下:用户表(user)CREATE TABLE `user` (
`
转载
2024-07-01 12:52:44
184阅读
Oracle数据库有许多的锁,各种锁的效用是不一样的。下面重点介绍Oracle数据库行级锁,Oracle数据库行级锁只对用户正在访问的行进行锁定。可以更好的保证数据的安全性。如果该用户正在修改某行,那么其他用户就可以更新同一表中该行之外的数据。Oracle行级锁是一种排他锁,防止其他事务修改此行,但是不会阻止读取此行的操作。在使用INSERT、UPDATE、DELETE 和SELECT…FOR U
转载
2024-04-13 17:34:03
267阅读
目录1、pom文件依赖2、Druid连接池的Quartz扩展类3 、application.yml文件4 、修改quartz.properties配置5 、 在数据库中创建quartz相关的表6、自定义MyJobFactory,解决spring不能在quartz中注入bean的问题7、创建调度器schedule8、创建自定义任务9、生成model,mapper,mapper.xml等文
转载
2024-07-01 21:47:46
419阅读