1.轮询策略
轮询策略:RoundRobinRule,按照一定的顺序依次调用服务实例。比如一共有 3 个服务,第一次调用服务 1,第二次调用服务 2,第三次调用服务3,依次类推。 此策略的配置设置如下:
springcloud-nacos-provider: # nacos中的服务id
ribbon:
NFLoadBalancerRuleClas……继续阅读 »
odliken
7个月前 (05-16) 56浏览 0评论
0个赞
swagger中使用V3时,获取到docs得到的接口为v3/api-docs接口,但是此接口并没有将请求的前置加上,所有直接使用swagger的时候是无法访问的
原因分析
主要原因为在v3/api-docs返回的JSON对象中,servers返回的url中只存在ip(域名)+端口的连接,但是请求前缀并没有加上,**请求会缺失basePath(如果使用服务……继续阅读 »
odliken
7个月前 (05-07) 84浏览 0评论
0个赞
什么是控制并发流程?
控制并发流程的工具类,作用就是帮助我们程序员更容易得让线程之间合作
让线程之间相互配合,来满足业务逻辑
比如让线程A等待线程B执行完毕后再执行等合作策略
有哪些控制并发流程的工具类?
CountDownLatch
迸发流程控制的工具
倒数门闩
流程: 倒数结束之前,一直处于等待状态,直到倒计时结束,此线程才继续工作
类的……继续阅读 »
odliken
7个月前 (04-26) 70浏览 0评论
0个赞
并发容器概览
ConcurrentHashMap:线程安全的HashMap
CopyOnWriteArrayList:线程安全的List
BlockingQueue:这是一个接口,表示阻塞队列,非常适合用于作为数据共享的通道
ConcurrentLinkedQueue:高效的非阻塞并发队列,使用链表实现。可以看做一个线程安全的LinkedList
Conc……继续阅读 »
odliken
7个月前 (04-26) 159浏览 0评论
1个赞
什么是CAS
CPU的特殊指令,由CPU保证操作的原子性
我认为V的值应该是A,如果是的话那那我就把它改成B,如果不是A (说明被别人修改过了),那我就不修改了,避免多人同时修改导致出错
CAS有三个操作数:内存值V、预期值A、要修改的值B,当目仅当预期值A和内存值V相同时,才将内存值修改为B,否则什么都不做。最后返回现在的V值
i
CAS等价代码
……继续阅读 »
odliken
7个月前 (04-25) 70浏览 0评论
0个赞
原子类简介
不可分割
一个操作是不可中断的, 即便是多线程的情况下也可以保证
java.util.concurrent.atomic
原子类的作用和锁类似, 是为了保证并发情况下线程安全。不过原子类相比锁,有一定的优势
颗粒度更细:原子变量可以把竞争范围缩小到变量级别,这是我们可以获得最细颗粒度的情况了,通常锁的颗粒度要大于原子变量的粒度
效率更高:通常,……继续阅读 »
odliken
7个月前 (04-25) 64浏览 0评论
0个赞
Lock接口
Lock简介 地位 作用
锁是一种工具,用于控制对共享资源的访问
Lock和synchronized,这两个是最常见的锁,它们都可以达到线程安全的目的,但是在使用上和功能上又有较大的不同。
Lock并不是用来代替synchronized的,而是当使用synchronized不合适或不足以满足要求的时候,来提供高级功能的。
Lock接口最常见的……继续阅读 »
odliken
7个月前 (04-24) 84浏览 0评论
0个赞
使用场景
场景1:每个线程需要一个独享的对象(通常是工具类,典型需要使用的类有SimpleDateFormat和Random
场景2:每个线程内需要保存全局变量(例如在拦截器中获取用户信息),可以让不同方法直接使用,避免参数传递的麻烦
Spring Security获取到Authentication用户信息时也采用到ThreadLocal实现
在Secu……继续阅读 »
odliken
7个月前 (04-23) 83浏览 0评论
0个赞
1.线程池简介
线程池的重要性:不言而喻
如果不使用线程池
每个任务都需要开一个线程处理
一个线程
for循环创建线程
当任务数量上升到1000
缺点: 这样开销太大,我们希望有固定数量的线程,来执行这1000个线程,这样就避免了反复创建并销毁线程所带来的开销问题。创建个销毁会有很大的代价,需要jvm辅助很多工作
为什么要使用线程池
问题一:……继续阅读 »
odliken
7个月前 (04-23) 66浏览 0评论
1个赞
docker run -p 9000:9000 -p 9001:9001 \
--name minio \
-d --restart=always \
-e MINIO_ACCESS_KEY=minioadmin \
-e MINIO_SECRET_KEY=minioadmin \
-v /home/minio/data:/data \
-v /home/……继续阅读 »
odliken
10个月前 (02-16) 143浏览 0评论
0个赞