java技术栈
文章平均质量分 86
明浩3
这个作者很懒,什么都没留下…
展开
-
分库分表ShardingSphere之ShardingJDBC
ShardingJDBCShardingJDBC是用来做客户端分库分表的产品,而ShardingProxy是用来做服务端分库分表的产品。shardingjdbc的核心功能是数据分片和读写分离,通过ShardingJDBC,应用可以透明的使用JDBC访问已经分库分表、读写分离的多个数据源,而不用关心数据源的数量以及数据如何分布。核心概念逻辑表:水平拆分的数据库的相同逻辑和数据结构表的总称 真实表:在分片的数据库中真实存在的物理表。数据节点:数据分片的最小单元。由数据源名称和数据表组成原创 2022-02-16 10:24:46 · 1281 阅读 · 0 评论 -
AQS之ReentrantReadWriteLock
2022年1月22日ReentrantReadWriteLock读写锁介绍ReentrantReadWriteLock适合读多写少的场景现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁(读多写少)。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源(读读可以并发);但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写操作了(读写,写读,写写互斥)。在读多于写的情况下,读写锁能够提供比排它锁更好的并发性和原创 2022-01-24 10:22:50 · 137 阅读 · 0 评论 -
Semaphorer&CountDownLatch详解
2022年1月19日21:17:572022年1月20日22:35:21SemaphoreSemaphore,俗称信号量,它是操作系统中PV操作的原语在java的实现,它也是基于AbstractQueuedSynchronizer实现的。用于做流量控制,比如说高速收费站,总共有3个收费口,每次最多有3辆车缴费通过,其他的车都要在后面等待(阻塞);应用场景可以用于做流量控制,特别是公用资源有限的应用场景,比较著名是sentinelSemaphore 常用方法permits 表示原创 2022-01-22 16:36:09 · 754 阅读 · 0 评论 -
AQS之独占锁ReentrantLock
2022年1月17日什么是AQS?AQS(AbstractQueuedSynchronizer)是一个抽象同步框架,可以用来实现一个依赖状态的同步器。AQS具备的特性:阻塞等待队列 共享/独占公平/非公平 可重入允许中断AQS内部维护属性volatile int statestate表示资源的可用状态State三种访问方式:getState() setState()compareAndSetState()AQS定义两种资源共享方式Exclusive-独占,只原创 2022-01-21 10:52:46 · 235 阅读 · 0 评论 -
并发锁机制之synchronized
2022年1月17日15:50:38synchronized 同步块是 Java 提供的一种原子性内置锁,Java 中的每个对象都可以把它当作一个同步锁来使用,这些 Java 内置的使用者看不到的锁被称为内置锁,也叫作监视器锁。加锁方式有:锁类、示例锁i++的问题两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,结果是 0 吗?结果可能为正数、负数、零。因为Java对自增、自减的操作并不是原子性,多个资源对共享资源读写操作时,发生指令交错,就会出问题。这种多个原创 2022-01-20 09:20:46 · 244 阅读 · 0 评论 -
谈谈对线程安全的理解
谈谈对线程安全的理解、JMM内存模型与Volatile的友谊、并发可见性与有序性保障原创 2021-12-15 16:15:51 · 1487 阅读 · 0 评论 -
深入CAS原理&Atomic工具类原理
2022年1月12日越是轻量级的实现越是复杂CAS的最简单理解,比较并交换,伪代码示例v实际值,e旧值,判断v==e,未true则说明该值未被修改过,可以执行v赋值,期间赋值和e=v是原子操作,x86下是lock指令保证原子性int v = 1;int e = v;int k = 5;if(e == v){ e = k; v = k;}CAS的缺点自选CAS长时间空转,会消耗大量CPU资源,导致系统特别慢 只保证一个共享变量的原子操作,比如说i++ABA原创 2022-01-18 14:02:07 · 292 阅读 · 0 评论