前言最近做 API 接口压测时,TPS(要求至少 7000/s)始终上不去,究其原因发现很多接口是直接连库查询。所以想到用 SpringCache +Codis 集群(底层 Redis)做缓存。效果还是很不错的,平均每个接口 tps 能达到 1W/s,但是有些接口时不时的会报类型转换或读取超时异常。
转载 2024-10-23 10:56:16
25阅读
前言参考文章: 1. Java 多线程:synchronized 关键字用法(修饰类,方法,静态方法,代码块) 2. Java 多线程:Lock 接口(接口方法分析,ReentrantLock,ReadWriteLock) 3. synchronized 与 Lock 的那点事 4. Java并发编程:Lock 5. ReentrantLock(重入锁)以及公平性 参考书籍:《疯狂Ja
转载 2023-10-02 10:50:34
90阅读
## MongoDB 并发加锁 ### 引言 随着数据量的不断增长和用户量的不断扩大,数据库的并发访问成为了一个重要的问题。在多个用户同时访问数据库的情况下,如果不加以限制和管理,可能会导致数据的不一致性和性能的下降。为了解决这个问题,数据库引入了并发控制机制和锁机制。 本文将介绍 MongoDB 数据库的并发控制和加锁机制,并通过代码示例和流程图来帮助读者更好地理解并发和锁的概念。 #
原创 2023-08-15 19:26:13
215阅读
CleverCode在工作项目中,会遇到一些php并发访问去修改一个数据问题,如果这个数据不加锁,就会造成数据的错误。下面CleverCode将分析
转载 2022-12-06 09:15:55
51阅读
Spring Boot事务配置管理场景:我们在开发企业应用时,由于数据操作在顺序执行的过程中,线上可能有各种无法预知的问题,任何一步操作都有可能发生异常,异常则会导致后续的操作无法完成。此时由于业务逻辑并未正确的完成,所以在之前操作过数据库的动作并不可靠,需要在这种情况下进行数据的回滚。1导入依赖springboot的事务管理需要导入spring-boot-starter-jdbc;而我们导入的m
        学习SpringAOP呢,我们需要先知道我们学SpringAOP是为了什么?他能做什么?下面我就慢慢讲解一些我知道的东西。         在开始之前,我们要知道,SpringAOP其实是一种编程思想,我爬了一张网
转载 2024-04-16 22:21:52
98阅读
分布式redis锁,spring-boot-starter-data-redis,RedisTemplate,redis 分布式redis锁,spring-boot-starter-data-redis,RedisTemplate公司聊天的聊天系统,近期出现多个客服并发接待同一个客户的记录,经排查,是由于代码加的同步锁在集群环境下不适用,我们的客服系统是
转载 2024-06-28 22:23:05
165阅读
前言之前总结的多线程的调度、并发调度、线程加锁安全等等并发包底层大都使用了线程锁机制。咱们通过锁的源码来看看JDK如何将这些资源进行加锁限制的,怎么就能做到线程集中等待后就唤醒主线程的。一段并发包源码 以下是java.util.concurrent.CyclicBarrier的底层代码片段。 Java代码   1. privat
转载 2024-02-28 13:46:49
77阅读
MongoDB的并发线上环境遇到MongoDB的性能瓶颈,为了解决性能瓶颈学习了一下MongoDB中的并发机制,记录如下。下文中主要是对比了MongoDB 2.2和3.0.7这两个版本的并发机制。1. MongoDB锁的类型 在2.2版本中MongoDB用的是读写锁,允许并行的读但是只能互斥的写,当一个读锁存在的时候可以有多个读操作共享这个锁,但是当一个写锁存在的时候只能有一个写操作获得这个锁,其
转载 2023-07-25 16:26:28
460阅读
叙述Spring Security默认情况下是关闭了对方法级的安全控制。可以通过xml或者是在添加了@Configuration注解的bean上添加@EnableGlobalMethodSecurity来开启对方法级别的安全控制。Spring Security 支持三种方法级注解, 分别是 JSR-205/Secured 注解/prePostEnabled,可以在开启对方法级的安全控制时设置。方法
转载 2024-04-13 12:08:27
47阅读
作者:双子孤狼链接:前言 Spring 正如其名字,给开发者带来了春天,Spring 是为解决企业级应用开发的复杂性而设计的一款框架,其设计理念就是:简化开发。Spring 框架中最核心思想就是:IOC(控制反转): 即转移创建对象的控制权,将创建对象的控制权从开发者转移到了 Spring 框架。AOP(切面编程): 将公共行为(如记录日志,权限校验等)封装到可重用的模块中,而使原本的模块内只需
使用Spring的表达式解析器+Redis实现分布式锁怎么配置使用Redis就不在这里说明了!!!AOP依赖<!--引用AOP依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop&
转载 2024-04-09 10:41:00
39阅读
客户端加锁: 对于使用某个对象x的客户端代码,使用“x本身用于保护其状态的锁”来保护这段客户端代码。 要使用客户端加锁,必须知道x对象使用的是哪一个锁。 通过客户端加锁机制,实现常见的“若没有则添加”的操作:
转载 2023-06-15 09:31:24
152阅读
# JAVA 加锁防止并发 在多线程编程中,避免资源竞争是确保数据一致性的关键问题。当多个线程同时访问共享资源并试图同时修改时,可能会出现数据不一致或者程序错误的情况。为了解决这个问题,Java 提供了多种加锁机制来防止并发访问。本文将探讨 Java 中的加锁机制及其应用,帮助你更好地理解并发控制。 ## 一、加锁机制概述 Java 中的加锁机制主要有以下几种: 1. **synchron
原创 9月前
53阅读
# Java 并发加锁处理 在现代多线程编程中,如何有效地管理共享数据的并发访问是一个重要且复杂的话题。为了避免多个线程同时修改共享数据引发的问题,Java 提供了一系列机制来实现锁的管理。本文将探讨 Java 的并发加锁处理,介绍其基本概念、使用方法,并提供示例代码。 ## 什么是并发加锁? 在多线程环境中,多个线程可能会同时访问和修改同一份资源。例如,一个简单的场景是多个线程同时更新账户
原创 9月前
90阅读
## Java并发如何加锁 在Java中,线程安全是一个重要的概念。当多个线程同时访问共享资源时,可能会出现数据竞争和不一致的情况。为了解决这个问题,我们可以使用锁来保护共享资源的访问。 ### 问题描述 假设有一个账户类(Account),它有一个余额(balance)属性。现在有两个线程同时进行存款操作(deposit),如果不加锁的话,可能会导致余额计算错误或数据不一致的问题。 ##
原创 2023-12-20 12:05:51
48阅读
springBoot使用事物比较简单,在Application启动类s上添加@EnableTransactionManagement注解,然后在service层的方法上添加@Transactional注解@Transactional属性 属性类型描述valueString可选的限定描述符,指定使用的事务管理器propagationenum: Propagation可选的事务传播行为设置i
前言上一篇博客中,重点说明了Redisson中,lock的用法,以及Redisson源码中对lock的创建、续命、释放锁等源码操作流程。但是,在实际开发中,有较低的可能性会出现以下问题(主从架构锁失效):1、Redis中设置主从模式,保证数据的及时备份处理。 2、当主Redis获取到请求1的key,保存key后,但宕机了,此时的key未同步至从Redis。 3、导致新的请求2根据redisson.
文章目录一、显式锁1.1 轮询锁1.2 定时锁1.3 中断锁1.4 公平锁1.5 读写锁二、死锁2.1 锁顺序死锁2.2 协作对象死锁 一、显式锁简介Lock 提供了一种无条件的、可轮询的、定时的以及可中断的锁获取操作,所有加锁和解锁的方法都是显式的。public interface Lock { void lock(); void lockInterruptibly() thr
java并发编程的各种锁1.乐观锁 乐观锁并不是一种真正的锁,基于cas的思想,认为,并发操作不会修改数据的值。 适用于读比较多的场景(不阻塞线程,大大提效率)2.悲观锁 悲观锁认为并发操作会对数据进行修改,认为并发操作不加实际的锁会出现错误, 适用于写比较多的操作3.公平锁 在程序在并发操作时,一个加锁的线程工作,其他的线程会进入阻塞队列,当加锁的线程运行结束阻塞队列的下一个线程获得cpu。(优
转载 2023-08-29 10:10:41
70阅读
  • 1
  • 2
  • 3
  • 4
  • 5