![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高并发
文章平均质量分 67
紫罗兰盛开
左手编程,右手理财
展开
-
Kafka系统介绍及高性能原理
一、Kafka介绍二、消息队列的分类至多一次,常见的rabbitmq,rocketmq都是这种方式,通过ACK机制确认消息已被消费者消费,此时会将消息删除;没有限制则主要是通过消费者上传的offset(偏移量)来确认消费消息的初始位置,同一消息可以被反复多次消费,一直到达到指定条件,比如kafka是默认保留7天,7天后则会被删除。三、kafka基础架构Kafka集群以Topic形式负责分类集群中的Record,每一个Record属于一个Topic,每个Topic底层都会对应一组分区的日志用于持原创 2021-11-16 13:47:35 · 11564 阅读 · 1 评论 -
Spring自定义注解实现redis缓存
一、前言redis是分布式微服务中必用的基础组件之一,现在国内的大部分项目基本上用到,缓存是其主要作用之一,而在项目中频繁使用set()方法添加注解,会造成代码的重复和臃肿,对于开发经验不足的小白,甚至会因为缓存的添加不当直接影响到正常的业务流程,从而酿成事故,因此成熟的公司都会通过封装基础组件,实现通过注解自动添加redis缓存,本文会从原理出发,带领大家亲自实现自定义注解,完成redis缓存的开发,学会了,你可以在同事面前秀一把了。二、自定义注解的参数说明@Target:注解的作用目标,即注解可原创 2021-10-13 10:26:46 · 21732 阅读 · 0 评论 -
java对象的内存模型详解:内存模型及对象头的奥秘
在面试官的因势利导下,很多人对jvm的内存模型已经耳熟能详,但是对我们经常new 出来的对象,比如new Object(),你了解它的内存模型吗?本篇文章将带你走进对象内部,真正去了解这个你最熟悉,也最不熟悉的的对象。一、对象的内存模型先上图,简单易懂:再看jvm源码:class oopDesc { friend class VMStructs; friend class JVMCIVMStructs; private: // 对象头 volatile markOop _ma原创 2021-08-26 16:39:18 · 37119 阅读 · 1 评论 -
Java原子操作类总结-AtomicReference、AtomicReferenceFieldUpdater
一、AtomicReferenceFieldUpdaterAtomicReferenceFieldUpdater是基于反射的工具类,用来将指定类型的指定的volatile引用字段进行原子更新,对应的原子引用字段不能是private的。通常一个类volatile成员属性获取值、设定为某个值两个操作时非原子的,若想将其变为原子的,则可通过AtomicReferenceFieldUpdater来实现。通过调用AtomicReferenceFieldUpdater.newUpdater静态方法生成指定类型、指定原创 2021-08-23 14:11:11 · 393 阅读 · 0 评论 -
ReentrantLock源码详解:AQS原理分析
说明:本篇文章以公平锁(FairSync)说明,非公平锁的原理和公平锁大部分雷同,实现更简单,搞懂了公平锁的源码及原理,即可理解非公平锁加锁过程 /** * 主要做三件事 1.tryAcquire:尝试通过CAS获取一次锁,详情可见下面源码分析 * 2.addWaiter:将当前线程加入到储存等待获取锁的线程的双向链表中 * 3.acquireQueued:通过自旋的方式,判断当前队列节点是否可以获取锁 */ public原创 2021-07-22 12:02:06 · 13923 阅读 · 3 评论 -
透过表面看本质---锁
锁的五大特性1.互斥性锁的基本特性,当一个线程获得了锁,其他线程只能等待2.死锁问题使用锁就会遇到的问题,必须避免从设计和程序上避免3.一致性加锁和释放锁尽量是同一个线程,否则容易引发锁失效4.可重入性获得锁的线程,可以重复多次获得该锁5.锁续命问题分布式锁为避免死锁经常设置有效时间,当有效时间过期,业务还在执行时,需要通过watchdog给锁续命...原创 2021-07-22 11:28:51 · 348 阅读 · 0 评论