• 2024-08-25Redission源码浅析一:RedissonLock.lock与RedissonLock.tryLock
    RedissonLock.lock入口流程图源码分析redisssionLock.lock(longleaseTime,TimeUnitunit,booleaninterruptibly)privatevoidlock(longleaseTime,TimeUnitunit,booleaninterruptibly)throwsInterruptedException{//获取当前线程的IDlongthr
  • 2024-08-13c++ 线程函数传递数据 namespace
     CMakeLists.txt cmake_minimum_required(VERSION3.10)#Settheprojectnameproject(GlobalMatrixExample)#FindEigenpackagefind_package(Eigen33.3REQUIRED)#Findpthreadpackagefind_package(ThreadsREQUIRED)#Addexecutableadd_executable(g
  • 2024-07-31flask 框架日志
       除了自定义配置的log日志外,flask框架的有自己的日志处理机制,使用它的好处就是出现异常,即使没有捕获也能打印到日志里,方便定位问题。importsysfromlogging.handlersimportTimedRotatingFileHandlerfromloggingimportStreamHandlerfromloggingimportFormatter
  • 2024-05-06Redisson的看门狗机制底层实现
    1.看门狗机制概述看门狗机制是Redission提供的一种自动延期机制,这个机制使得Redission提供的分布式锁是可以自动续期的。privatelonglockWatchdogTimeout=30*1000;1看门狗机制提供的默认超时时间是30*1000毫秒,也就是30秒如果一个线程获取锁后,运行程序到释放锁所花费的时
  • 2024-04-06Redis—分布式锁
    单实例的正确实现方式获取锁的正确操作为:SETresource_namemy_random_valueNXPX30000,它限定了只有当锁空闲且持有锁的时间为30000ms,并且锁资源对应的value为一个随机值。设置随机值是为了在释放锁时,确保当前线程能够释放该锁,避免出现操作超时的线程释放了其它线程的锁。
  • 2024-04-04CMU15418-Assignment2-解析
    CMU15418-Assignment2-解析这个作业有三个部分,都是CUDA编程.前两个比较简单,最后一个比较难.本文的运行环境:RTX3090CUDA12.2作业描述,原版代码链接,我完成的代码链接.Part1:SAXPY用CUDA实现一个在GPU上运行的SAXPY程序.输入两个数组X,Y以及一个常
  • 2023-12-25Java多线程:深入理解Java中的死锁
    一、引言死锁是计算机科学中的一个重要概念,特别是在并发编程中。在Java中,死锁是指两个或更多的线程永久地等待对方释放资源的情况。当两个或更多的线程无限期地等待对方释放锁定的资源时,就会发生死锁。本文将通过示例和深入分析,探讨Java中的死锁问题。二、示例:银行家问题为了更好地
  • 2023-10-12面试官:Redis 分布式锁如何自动续期
    1、Redis实现分布式锁指定一个key作为锁标记,存入Redis中,指定一个唯一的用户标识作为value。当key不存在时才能设置值,确保同一时间只有一个客户端进程获得锁,满足互斥性特性。设置一个过期时间,防止因系统异常导致没能删除这个key,满足防死锁特性。当处理完业务之后需要清除
  • 2023-09-03Redis—分布式锁
    单实例的正确实现方式获取锁的正确操作为:SETresource_namemy_random_valueNXPX30000,它限定了只有当锁空闲且持有锁的时间为30000ms,并且锁资源对应的value为一个随机值。设置随机值是为了在释放锁时,确保当前线程能够释放该锁,避免出现操作超时的线程释放了其它线程的锁。
  • 2023-07-06Redis实战(黑马点评--分布式锁)
    基本原理和不同的实现方式分布式锁的核心思想就是让大家共用同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路 可见性:多个线程都能看到相同的结果。注意:这里说的可见性并不是并发编程中指的内存可见性,只是说多个进程之间都能感知到变化的
  • 2023-07-03C# SemaphoreSlim
    在C#中,SemaphoreSlim是一种用于同步和互斥访问资源的同步原语。它是System.Threading命名空间中的一个类,用于实现信号量机制。信号量是一种用于控制对共享资源的访问的机制。它可以限制同时访问共享资源的线程数量。SemaphoreSlim提供了一种轻量级的信号量实现,比Semaphore类更高
  • 2023-06-11Redis之Redisson原理详解
    目录1Redisson1.1简介1.2与其他客户端比较1.3操作使用1.3.1pom.xml1.3.2配置1.3.3启用分布式锁1.4大致操作原理1.5RLock1.5.1RLock如何加锁1.5.2解锁消息1.5.3锁续约1.5.4流程概括1.6公平锁1.6.1java中公平锁1.6.2RedissonFairLock1.6.3公平锁加锁步骤1Redisso
  • 2023-04-16Redis分布式锁这样用,有坑?
    背景在微服务项目中,大家都会去使用到分布式锁,一般也是使用Redis去实现,使用RedisTemplate、Redisson、RedisLockRegistry都行,公司的项目中,使用的是Redisson,一般你会怎么用?看看下面的代码,是不是就是你的写法StringlockKey="forlan_lock_"+serviceId;RLocklock=redis
  • 2023-03-04Redis分布式锁(Redisson)
    Redis分布式锁(Redisson)什么是Redission呢Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-MemoryDataGrid)。它不仅提供了一系列的分布式的Java常用对象,还
  • 2023-03-04【Redis场景5】集群秒杀优化-分布式锁
    集群环境下的秒杀问题前序【Redis场景1】用户登录注册【Redis场景2】缓存更新策略(双写一致)【Redis场景3】缓存穿透、击穿问题【Redis场景拓展】秒杀问题-全局唯一ID
  • 2023-02-15Redisson的锁重试和看门狗机制
    先看一下自己利用setnx写的简易分布式锁,有四个问题,1,不可重入2,不可重试3,超时自动释放(如果业务阻塞了,就算代码没执行完也会释放锁)4,集群模式下怎么办?@Override
  • 2023-02-01redisson分布式锁源码和原理浅析
    在redisson之前,很多人可能已经自己实现过基于redis的分布式锁,本身原理也比较简单,redis自身就是一个单线程处理器,具备互斥的特性,通过setNx,exist等命令就可以完成简单的分布式
  • 2023-01-15Redisson的看门狗机制
    背景据Redisson官网的介绍,Redisson是一个JavaRedis客户端,与Spring提供给我们的RedisTemplate工具没有本质的区别,可以把它看做是一个功能更强大的客户端(虽然官网上声称Re
  • 2022-12-01分布式锁-redission锁重试和WatchDog机制
    抢锁过程中,获得当前线程,通过tryAcquire进行抢锁,该抢锁逻辑和之前逻辑相同1、先判断当前这把锁是否存在,如果不存在,插入一把锁,返回null2、判断当前这把锁是否是属于当前线
  • 2022-11-22redisson分布式锁原理剖析
    redisson分布式锁原理剖析​ 相信使用过redis的,或者正在做分布式开发的童鞋都知道redisson组件,它的功能很多,但我们使用最频繁的应该还是它的分布式锁功能,少量的代码,却实
  • 2022-11-09ZooKeeper系列:实现分布式锁
    锁是为了在多线程的场景中保证数据安全而增加的一种手段,Java中常用的有CountdownLatch,ReentrantLock等单应用中的锁,在现在处处都是分布式的场景需求下就不能满足了,所以就出
  • 2022-10-11SpringBoot异步调用
    在程序执行时候还有一个瓶颈,串行执行,可以通过使用不同线程类快速提升应用的速度。要启用Spring的异步功能,必须要使用@EnableAsync注解。这样将会透明地使用java.util.conc
  • 2022-09-04Rust常用并发示例代码
    记录几个常用的并发用法:1、如何让线程只创建1次先看一段熟悉的java代码:voidmethod1(){newThread(()->{while(true){System.out.pri
  • 2022-08-15.NET异步编程模式(二)
    在C#1的时候就包含了APM,在APM模型中,异步操作通过IAsyncResult接口实现,包括两个方法BeginOperationName和EndOperationName,分别表示开始和结束异步操作。Demo我
  • 2022-08-15.NET异步编程模式(三)
    EAP(Event-basedAsynchronousPattern)是基于事件的异步模式,在.NETFramework2.0中引入。EAP需要一个有Async后缀方法和一个或多个事件。EAP不再推荐用于新开发。