• 2024-11-2030. 并发编程
    一、什么是多任务  如果一个操作系统上同时运行了多个程序,那么称这个操作系统就是多任务的操作系统,例如:Windows、Mac、Android、IOS、Harmony等。如果是一个程序,它可以同时执行多个事情,那么就称为多任务的程序。  一个CPU默认可以执行一个程序,如果想要多个程序一
  • 2024-11-20Java中的乐观锁和悲观锁
    在多线程编程中,锁机制是确保数据一致性和线程安全的关键技术。悲观锁和乐观锁是两种常见的锁机制,它们在不同的场景下有着各自的优势和适用范围。悲观锁和乐观锁的概念悲观锁(PessimisticLocking)假设在并发环境中会发生冲突,因此在访问共享资源时总是先加锁,确保在事务期间没有其他
  • 2024-11-19JUC-阻塞队列
    JUC-阻塞队列1、阻塞队列概述2、ArrayBlockingQueue阻塞队列2.1ArrayBlockingQueue架构图2.2ArrayBlockingQueue源码如有侵权,请联系~如有错误,也欢迎批评指正~1、阻塞队列概述阻塞队列在业务代码中可能较少使用,但是只要喜欢看源码的同学就会发现,阻塞队列使用的很
  • 2024-11-19wait()方法与await()方法的区别
    wait()方法与await()方法的区别这两种方法都与线程或异步任务的协调有关,但它们用于不同的场景,并且行为和语法都不相同。1.wait()方法定义与场景所属:java.lang.Object类。用途:用于线程间的通信,通常与notify()或notifyAll()方法一起使用。场景:在多线程程序中
  • 2024-11-19.gitignore模板
    当然,这里提供一个更详细的.gitignore模板,这个模板涵盖了多种编程语言和开发工具,你可以根据需要进行调整:#忽略编译生成的文件*.o*.obj*.exe*.dll*.class*.jar*.pyc__pycache__/*.pyo*.pyd*.node*.coffee*.rbc*.o*.gch*.gem*.lock*.log*.db*.db3*.sqlit
  • 2024-11-18Python.gitignore
    #Byte-compiled/optimized/DLLfiles__pycache__/"""Python文件编译后的缓存目录。git上传时会忽略该目录下的文件"""*.py[cod]"""Python文件编译后的字节码文件(如.pyc、.pyo、.pyd)。"""*$py.class """Pyth
  • 2024-11-18Python..gitignore文件
    .gitignore文件#Byte-compiled/optimized/DLLfiles__pycache__/"""Python文件编译后的缓存目录。git上传时会忽略该目录下的文件"""*.py[cod]"""Python文件编译后的字节码文件(如.pyc、.pyo、.pyd)。"""*$py.class "&q
  • 2024-11-18C++多线程编程
    一、概念多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。传统的C++(C++11标准之前)中并没有引入线程这个概念,在C++11出来之前,如果我们想要在C++中实现多线程,需要借助操作系统平台提供的API,比如Linux的<pthread.h>,或者windows下的<windows.h>。1.1其
  • 2024-11-18C++ 中的线程、锁和条件变量
    C++中的线程、锁和条件变量Created:2024-06-19T17:17+08:00Published:2024-11-18T10:39+08:00Categories:C-CPP目录线程创建与执行锁lockguardexamplemutex底层实现解释byGPT条件变量(conditionvariable)线程从cv.wait(lock)被唤醒后会自动抢锁虚假唤醒生产者消费
  • 2024-11-17解读 DelayQueue 源码:探究其精妙的设计架构与实现细节
    一、简介DelayQueue是JUC包(java.util.concurrent)为我们提供的延迟队列,用于实现延时任务比如订单下单15分钟未支付直接取消。它是BlockingQueue的一种,底层是一个基于PriorityQueue实现的一个无界队列,是线程安全的BlockingQueue的实现类DelayQueue 中存放的元素
  • 2024-11-13JUC学习笔记
    文章目录锁生产者消费者问题8锁现象集合类不安全Callable创建线程的三种方式常用辅助类CountDownLatchCyclibarrierSamphore本篇博客是之前学习JUC时记录的内容,对于并发编程知识只是浅浅谈及,并不深入。也算是给自己开新坑。建一个JUC的专栏,后续学习有地方记录。
  • 2024-11-13Lock Free 无锁队列的实现
    无锁队列的实现 无锁队列的实现原理一般是利用Retry-loop和CAS等原子操作。现在几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是 CMPXCHG 汇编指令。例如CAS(CompareAndSwap)的实现原理:boolcompare_and_swap(int*addr,intoldval,intnewval){if(*ad
  • 2024-11-13第三百二十二节 Java线程教程 - Java原子变量、Java显式锁
    Java线程教程-Java原子变量新线程并发包java.util.concurrent和java.util.concurrent.atomic和java.util.concurrent.locks包括非常有用的并发构造。线程并发包以四种方式支持并发。原子变量锁同步器并发集合原子变量原子变量类的命名类似于AtomicXxx,例如,AtomicInteg
  • 2024-11-12py-filelock python 平台无关的文件锁
    py-filelock是一个平台无关的文件锁实现,可以用来实现一些基于文件锁的业务控制参考使用lock.pyimportosfromfilelockimportTimeout,FileLockfile_path="high_ground.txt"lock_path="high_ground.txt.lock"lock=FileLock(lock_path,timeout=1)withlock:
  • 2024-11-11【多线程】---1115. 交替打印 FooBar
     解法1:condition_variable + mutex classFooBar{private:intn;mutexmtx;condition_variablecv;boolfoo_done=false;public:FooBar(intn){this->n=n;}voidfoo(function<void()>printFoo)
  • 2024-11-10C++中的RAII与内存管理
    C++中的RAII与内存管理引言资源获取即初始化(ResourceAcquisitionIsInitialization,简称RAII)是C++编程中一种重要的编程范式,它通过对象生命周期来管理资源,确保资源在不再需要时能够被正确释放。本文将从C++的内存布局入手,逐步深入到栈区、堆区的概念,new和delete的操作原理,最终
  • 2024-11-10生产消费者模型
               线程同步互斥锁(互斥量)条件变量生产/消费者模型一、互斥锁C++11提供了四种互斥锁:mutex:互斥锁。timed_mutex:带超时机制的互斥锁。recursive_mutex:递归互斥锁。recursive_timed_mutex:带超时机制的递归互斥锁。包含头文件:#include<mutex>1、mutex类
  • 2024-11-09条件变量如何避免丢失通知
    在使用条件变量进行多线程编程时,确实存在丢失通知的风险,以下是一些可以避免丢失通知的方法:正确的等待条件设置原理:条件变量是基于特定条件来让线程等待或继续执行的。如果等待条件设置得不准确,可能会导致线程在不应该醒来的时候醒来,或者错过真正需要醒来的时机,从而出现通知丢
  • 2024-11-09在C++中,条件变量的等待操作是如何实现的?
    在C++中,条件变量的等待操作主要通过std::condition_variable类来实现,其等待操作涉及到与互斥锁的配合使用,以下是详细的实现过程:包含必要的头文件首先需要包含<condition_variable>和头文件,因为条件变量std::condition_variable的使用需要与互斥锁(如std::mutex)协同工作,同时还
  • 2024-11-09valgrind 分析死锁
    1,安装 sudoapt installvalgrind 2,代码pthread.c#include<stdio.h>#include<pthread.h>#include<unistd.h>pthread_mutex_tlock1=PTHREAD_MUTEX_INITIALIZER;pthread_mutex_tlock2=PTHREAD_MUTEX_INITIALIZER;void*thread_func1(void
  • 2024-11-08[20241108]跟踪library cache lock library cache pin使用gdb(11g)4.txt
    [20241108]跟踪librarycachelocklibrarycachepin使用gdb(11g)4.txt--//验证前面建立的gdb脚本确定librarycachepinaddress是否正确.1.环境:SCOTT@book>@ver1PORT_STRING                   VERSION       BANNER---------------------------
  • 2024-11-08[20241108]跟踪library cache lock library cache pin使用gdb(11g)3.txt
    [20241108]跟踪librarycachelocklibrarycachepin使用gdb(11g)3.txt--//前一段时间写的使用gdb跟踪librarycachelock/librarycachepin的脚本。--//我看过以前的笔记,当时测试过链接https://nenadnoveljic.com/blog/library-cache-lock-debugger/,我的测试在11g是失败.--//
  • 2024-11-08MySQL RC隔离级别下罕见的gap lock
    复现方法:CREATETABLE`test1`(`id`int(11)NOTNULL,`name`varchar(10)DEFAULTNULL,`id1`int(11)DEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`id1`(`id1`);insertintotest.test1values(1,'a',1),(3,'a',3),(5,'a'
  • 2024-11-05分布式锁实现
    分布式锁实现分布式锁主流的实现方案:基于数据库实现分布式锁基于缓存(Redis等)基于Zookeeper每一种分布式锁解决方案都有各自的优缺点:高性能:Redis最高可靠性:zookeeper最高分布式锁的关键是多进程共享的内存标记(锁),因此只要我们在Redis中放置一个这样的标记(数据)就可
  • 2024-11-02wait-notify代码(生产者-消费者问题)
    生产者-消费者问题是经典的多线程同步问题,可以使用Java中的wait()和notify()方法来解决。以下是一个简单的示例代码,展示了如何使用这些方法来处理生产者-消费者问题。在这个示例中,我们有一个共享的缓冲区(队列),生产者生产数据并将其放入缓冲区,消费者从缓冲区中取出数据进行处理