随笔分类 -  【Java核心技术】

摘要:3个线程依次打印1、2、3…这个问题,常常被作为面试题,题目如下: 三个线程,一个线程负责打印1,4,7,……;第二个负责打印2,5,8,……,第三个负责打印3,6,9,……,要求在控制台中按顺序输出1,2,3,4,5,6……。 这个题目肯定是要启动3个线程的,那怎么让这3个线程“协作”按顺序打印1 阅读全文
posted @ 2020-02-29 20:40 luoxn28 阅读(1635) 评论(1) 推荐(0) 编辑
摘要:为什么需要集群流控呢?假设需要将某个API的总qps限制在100,机器数可能为50,这时很自然的想到使用一个专门的server来统计总的调用量,其他实例与该server通信来判断是否可以调用,这就是基本的集群流控方式,sentinel的实现就是这样的。 如果服务调用使用轮训或者随机路由方式,理论上可 阅读全文
posted @ 2019-07-01 17:05 luoxn28 阅读(9024) 评论(2) 推荐(0) 编辑
摘要:从此Redis是路人 序言:Redis(Remote DIctionary Server)作为一个开源/C实现/高性能/基于内存的key-value存储系统,相信做Java的小伙伴都不会陌生。Redis常用于缓存、分布式锁、队列(或有序集合)等场景,追求技术的小伙伴们肯定不只满足于Redis的使用上 阅读全文
posted @ 2019-06-27 12:51 luoxn28 阅读(570) 评论(0) 推荐(0) 编辑
摘要:之前同事反馈说线上遇到Redis反序列化异常问题,异常如下: 已知信息如下: 该异常不是必现的,偶尔才会出现; 出现该异常后重启应用或者过一会就好了; 序列化协议使用了hessian。 因为偶尔出现,首先看了报异常那块业务逻辑是不是有问题,看了一遍也发现什么问题。看了下对应日志,发现是在Redis读 阅读全文
posted @ 2019-06-24 11:05 luoxn28 阅读(1706) 评论(0) 推荐(0) 编辑
摘要:前几天和朋友闲聊,说遇到了一个ConcurrentHashMap死循环问题,当时心里想这不科学呀?ConcurrentHashMap怎么还有死循环呢,毕竟它已经解决HashMap中rehash中死循环问题了,但是随着深入的分析,发现事情并没有之前想的那么简单~ (以下分析基于jdk版本:jdk1.8 阅读全文
posted @ 2019-06-22 21:27 luoxn28 阅读(1364) 评论(0) 推荐(0) 编辑
摘要:以下ConcurrentHashMap以jdk8中为例进行分析,ConcurrentHashMap是一个线程安全、基于数组+链表(或者红黑树)的kv容器,主要特性如下: 线程安全,数组中单个slot元素个数超过8个时会将链表结构转换成红黑树,注意树节点之间还是有next指针的; 当元素个数超过N(N 阅读全文
posted @ 2019-06-22 10:26 luoxn28 阅读(1223) 评论(1) 推荐(0) 编辑
摘要:想必很多小伙伴们对ThreadLocal并不陌生,ThreadLocal叫做线程本地变量,也就是ThreadLocal为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量。那么,我们使用ThreadLocal一定线程安全么?话不多说,先上结论: 如果threadlocal.get之 阅读全文
posted @ 2019-05-24 09:50 luoxn28 阅读(9363) 评论(1) 推荐(0) 编辑
摘要:1 Class对象 理解RTTI在Java中的工作原理,首先需要知道类型信息在运行时是如何表示的,这是由Class对象来完成的,它包含了与类有关的信息。Class对象就是用来创建所有“常规”对象的,Java使用Class对象来执行RTTI,即使你正在执行的是类似类型转换这样的操作。 每个类都会产生一 阅读全文
posted @ 2017-06-30 21:23 luoxn28 阅读(3614) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示