首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
zhong0316
掘友等级
后端
|
腾讯
喜欢打篮球和看NBA
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
11
文章 11
沸点 0
赞
11
返回
|
搜索文章
最新
热门
Guava RateLimiter限流
缓存,降级和限流是大型分布式系统中的三把利剑。目前限流主要有漏桶和令牌桶两种算法。 缓存:缓存的目的是减少外部调用,提高系统响速度。俗话说:"缓存是网站优化第一定律"。缓存又分为本机缓存和分布式缓存,本机缓存是针对当前JVM实例的缓存,可以直接使用JDK Collection框…
CMS垃圾收集器
CMS是老年代垃圾收集器,在收集过程中可以与用户线程并发操作。它可以与Serial收集器和Parallel New收集器搭配使用。CMS牺牲了系统的吞吐量来追求收集速度,适合追求垃圾收集速度的服务器上。可以通过JVM启动参数:-XX:+UseConcMarkSweepGC来开启…
linux五种IO模型
Linux下主要的IO主要分为:阻塞IO(Blocking IO),非阻塞IO(Non-blocking IO),同步IO(Sync IO)和异步IO(Async IO)。 同步:调用端会一直等待服务端响应,直到返回结果。 异步:调用端发起调用之后不会立刻返回,不会等待服务端响…
单例模式和DCL
上面的方法实现简单,在单线程环境下没有问题,但是在多线程环境下就会有并发安全问题。如果两个线程同时进入if (singleton == null)这里,就会同时去实例化,这样就达不到单例的目的。 加锁能够保证并发环境下的数据安全性。下面是并发版本的单例模式: 加锁虽然保证了线程…
优惠劵系统库存设计浅谈
优惠劵系统活动库存一般分为:总库存和日库存。在一个用户来领取优惠劵时,需要判断当前剩余总库存和日库存是否充足,如果充足则进行库存扣减,否则提示用户领取失败。总库存和日库存的扣减是一个原子操作,要么都成功,要么都失败。我们知道数据库事务满足"ACID"特性,因此可以将这两个操作放…
CAS原子操作以及其在Java中的应用
CAS(Compare And Swap)意为比较并且交换,CAS它是一个原子操作。CAS操作涉及到三个值:当前内存中的值V,逾期内存中的值E和待更新的值U。如果当前内存中的值V等于预期值E,则将内存中的值更新为U,CAS操作成功。否则不更新CAS操作失败。 CAS在JUC中有…
如何让两个线程交替打印数字
用AtomicInteger保证多线程数据可见性。 不要觉得synchronized加锁是多余的,如果没有加锁,线程1和线程2就可能出现不是交替打印的情况。如果没有加锁,设想线程1打印完了一个奇数后,线程2去打印下一个偶数,当执行完status.getAndIncrement(…
ExecutorService shutdown()和shutdownNow()方法区别
ExecutorService是我们经常使用的线程池,当我们使用完线程池后,需要关闭线程池。ExecutorService的shutdown()和shutdownNow()方法都可以用来关闭线程池,那么他们有什么区别呢? 当我们调用shutdown()方法后,线程池会等待我们已…
Java final关键字及其内存语义
final是Java中的一个关键字,final可用于修饰类、方法、参数和变量(包括实例变量和类变量)。 final修饰的类具有不可继承性,也就是如果一个类是final类型的,则这个类不允许有子类。首先我们顶一个final类: 编译器提示我们:cannot extend fina…
浅谈Disruptor
Disruptor是一个低延迟(low-latency),高吞吐量(high-throughput)的事件发布订阅框架。通过Disruptor,可以在一个JVM中发布事件,和订阅事件。相对于Java中的阻塞队列(ArrayBlockingQueue,LinkedBlocking…
下一页
个人成就
文章被点赞
296
文章被阅读
94,486
掘力值
2,172
关注了
80
关注者
140
收藏集
1
关注标签
32
加入于
2019-02-24