加入笨神(公众号:你假笨)带头创建的JVMPocket群已经有一段时间了,有幸得到笨神指导一二,学到了不少东西,也纠正了自己对JVM一些误解,还能给群里一些朋友提出的问题给出...
什么时候倾向于选择redis?业务需求决定技术选型,当业务有这样一些特点的时候,选择redis会更加适合。 复杂数据结构value是哈希,列表,集合,有序集合这类复杂的数据结...
Cache Aside Pattern(旁路缓存模式)对于读请求先读cache,再读db如果,cache hit,则直接返回数据如果,cache miss,则访问db,并将数...
问:KV缓存都缓存了一些什么数据?答:(1)朴素类型的数据,例如:int(2)序列化后的对象,例如:User实体,本质是binary(3)文本数据,例如:json或者html...
容错设计又叫弹力设计,其中着眼于分布式系统的各种“容忍”能力,包括容错能力(服务 隔离、异步调用、请求幂等性)、可伸缩性(有 / 无状态的服务)、一致性(补偿事务、重 试)、...
1.栈的特点:栈也是一种线性结构;相比数组,栈所对应的操作是数组的子集;栈只能从一端添加元素,也只能从这一端取出元素,这一端通常称之为"栈顶";向栈中添加元素的过程,称之为"...
1 优先队列(Priority Queue)优先队列与普通队列的区别:普通队列遵循先进先出的原则;优先队列的出队顺序与入队顺序无关,与优先级相关。优先队列可以使用队列的接口,...
1.整型哈希函数的设计小范围正整数直接使用小范围负整数整体进行偏移大整数,通常做法是"模一个素数" 2.浮点型哈希函数的设计转成整型进行处理 3.字符串哈希函数的设计转成整型...
二叉树跟链表一样,二叉树也是一种动态数据结构,即,不需要在创建时指定大小。跟链表不同的是,二叉树中的每个节点,除了要存放元素e,它还有两个指向其它节点的引用,分别用Node ...
Java并发工具类的三板斧 状态,队列,CAS 状态: 队列:在FutureTask中,队列的实现是一个单向链表,它表示所有等待任务执行完毕的线程的集合,如果获取结果时,任务...
LinkedBlockingQueue基于链表实现,未指定容量时默认容量为Integer.MAX_VALUE,即无界阻塞队列,节点动态创建,节点出队后可被GC,伸缩性较好;如...
基于AbstractQueuedSynchronizer(简称AQS)这个抽象类实现,AQS实现了主体逻辑,使用的模板方法模式。不同的实现类具体实现不同。AQS结构 等待队列...
占小狼老生常谈,HashMap死循环详细分析了HashMap多线程环境下的问题。一点感悟:hashmap多线程扩容,发生死循环。需要满足以下几点。1.新建立的链表跟原链表顺序...
网上有人说为什么要用两个condition来实现生产者消费者模式 如果只有一个condition,通过代码演示,程序卡着不动了。 设置队列容量为1,假设现在队列为空,条件队列...
参考 面试必问的CAS,要多了解n++的问题不能保证原子操作。 因为被编译后拆分成了3个指令,先获取值,然后加一,然后写回内存。把变量声明为volatile,volatile...
参考 一行一行源码分析清楚AQSAQS 独占锁:只能有一个线程持有锁,获取锁失败的线程进入阻塞队列,持有锁的线程释放锁之后会唤醒等待队列中的第一个线程,让其来占有锁AQS 共...