Java
jiguansheng
正在学习
展开
-
ApplicationContext启动过程
applicationContext 容器启动流程原创 2023-02-17 16:54:37 · 337 阅读 · 0 评论 -
为什么kafka移除zookeeper
为什么kafka移除zookeeper原创 2023-02-16 09:46:07 · 367 阅读 · 0 评论 -
java 多线程串行改并行执行
completableFuture //将大的数组切割成若干份 List<List<Long>> goodsIdList = Lists.partition(new ArrayList<>(goodIds), MAX_GOODS_ID_QUERY_NUM); List<CompletableFuture<List<DiscountGoodsRelationshipEntity>&g原创 2021-09-16 16:30:52 · 871 阅读 · 0 评论 -
Dubbo线程池耗尽问题
场景:dubbo 线程池耗尽,报错。Caused by: java.util.concurrent.RejectedExecutionException: Thread pool is EXHAUSTED! Thread Name: DubboServerHandler-XX.XX.XX.XX:XXXX, Pool Size: 200 (active: 200, core: 200, max...原创 2020-04-26 23:18:16 · 3192 阅读 · 0 评论 -
微服务认知学习
微服务是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文...转载 2020-04-23 11:27:52 · 253 阅读 · 0 评论 -
学习分布式一致性算法Paxos
Paxos 算法选举过程原创 2020-04-21 16:52:46 · 177 阅读 · 0 评论 -
什么情况下jvm内存会回收对象!JVM年轻代垃圾回收算法
什么情况下jvm内存会回收对象?对象何时回收: 一般系统运行对象优先在Eden区创建。新生代的对象越来越多,就会触发垃圾回收。把没有引用的对象回收掉。 2. 回收哪些对象: 没有引用的对象。判断对象是否有被引用。就是判断对象是否有GCRoot。按JVM规范,局部变量与类静态变量可做GCRoot。 软引用:一般垃圾回收不会回收软引用对象,但经过一轮垃圾回...原创 2020-04-10 14:00:16 · 800 阅读 · 0 评论 -
rocketmq 学习 - 面试
高可用保证:NameServer 集群化部署Rocketmq 解决思路:Broker主从架构与多副本策略。简单说:Broker 有master与slave 两种角色。master收到消息后同步给slave。这样slave broker 就有一模一样的副本数据!这样master出现故障。slave 还有一模一样的数据,同样对外提供服务。保证MQ的可靠性与可用性。Rocketmq 如何支持高并...原创 2020-02-18 12:59:00 · 205 阅读 · 0 评论 -
JVM类加载机制-面试
类加载机制一个类从加载到使用一般经历7个过程。加载验证准备解析初始化使用卸载加载加载.class文件到内存中验证验证.class文件是否符合jvm规范准备如果.class文件符合jvm规范,为类对象分配内存空间。给类变量(static修复的变量),来一个默认值(比如整型默认0)解析将符号引用替换为直接引用,具体不太懂。初始化正式执行我们类初始化代码。为类变...原创 2020-02-16 18:48:23 · 403 阅读 · 0 评论 -
zookeeper 分布式锁 实战。
zookeeper 实现分布式锁,创建zk临时节点。如果一个节点未被创建,则分布式锁申请成功。 如果节点已经被创建,则分布式锁申请失败。等待200ms再次尝试申请,直到申请成功。 业务逻辑走完,释放分布锁(删除zk临时节点),其它java进程可以再次申请。 使用单例模式,保证工具类仅创建一次。原理是创建zk的临时节点。如果一个节点已经被创建了,上代码。@Slf4jpubli...原创 2020-01-22 17:27:30 · 139 阅读 · 0 评论 -
java 内存模型 - 可见性 有序性
可见性: 一个线程的操作,对另外一个线程来说是可见的。上一段代码,没有可见性。public class TestJMM { private static boolean flag = true; private static int i = 0; public static void main(String[] args) throws Interrupte...转载 2020-01-17 11:46:19 · 159 阅读 · 0 评论 -
java 内存模型-线程间通信
内存模型定义了java 线程如何通过内存进行交互。 主线程与线程通信方式:读取 加载 使用 赋值 存储 写入read、load、use、assign、store、write 一个例子,对变量data 执行++ 自增操作。read 读取主内存变量data load加载变量data到工作内存 use 使用这个变量data,并加1操作。 assign 赋值回data变量本...原创 2020-01-16 20:52:04 · 244 阅读 · 0 评论 -
java 内部类与静态内部类的区别。
面试没答出来,写博文以记录。先上一段代码,感受下,静态内部类与内部类的不同。public class SingletonHolder { SingletonHolder(){ System.out.println("singletonHolder"); } static { System.out.println("this ...原创 2020-01-10 14:17:43 · 166 阅读 · 0 评论 -
java8 Stream API中Collectors中toMap
第一种:取出Map<Long,T> 这样结构 Map<String,DepartmentUserBO> departmentUserBOMap = departmentUserBOList.stream().collect(Collectors.toMap(DepartmentUserBO::getDepartmentId,Functi...原创 2019-12-07 10:42:29 · 1471 阅读 · 0 评论 -
注册中心ZooKeeper、Eureka 学习
https://mp.weixin.qq.com/s/r51-HvhZHta7uJc-Ktg_NQ原创 2019-11-24 09:13:16 · 152 阅读 · 0 评论 -
中华石杉视频笔记
《21天java进阶面试训练营》的笔记存放地址:训练营笔记放在公众号【狸猫技术窝】的官方GitHub仓库:https://github.com/shishan100/Java-Interview-Advanced原创 2019-11-20 15:14:46 · 1787 阅读 · 0 评论 -
深入理解单例模式:静态内部类单例原理
首先我们要先了解下单例的四大原则:构造私有。 以静态方法或者枚举返回实例。 确保实例只有一个,尤其是多线程环境。 确保反序列换时不会重新构建对象。我们常用的单例模式有:饿汉模式、懒汉模式、双重锁懒汉模式、静态内部类模式、枚举模式.我们说下饿汉模式,重点说下静态内部类模式饿汉模式 public class SingleTon{ private static Sing...转载 2019-11-18 15:41:43 · 130 阅读 · 0 评论 -
synchronized 轻量级锁原理学习
理解java 对象头在JVM中,对象存活在堆中。对象包含2块数据。对象对象头实例变量padding(小8个字节,仅做补齐用)而这个对象头包含3块数据。对象头mark wordclass meta address 指向方法区 表示这具体什么类array length 如果对象是数组,表示数组的长度mark word 状态 ...原创 2019-11-07 14:47:29 · 176 阅读 · 0 评论 -
jdk 1.6 synchronized 偏向锁
Hotspot的作者经过研究发现,大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,为了让线程获得锁的代价更低而引入了偏向锁。偏向锁的意思是如果一个线程获得了一个偏向锁,如果在接下来的一段时间中没有其他线程来竞争锁,那么持有偏向锁的线程再次进入或者退出同一个同步代码块,不需要再次进行抢占锁和释放锁的操作。偏向锁可以通过 -XX:+UseBiasedLocking开启或者关闭...原创 2019-11-07 16:09:47 · 229 阅读 · 0 评论 -
jdk1.6对 sychronized 关键字优化
锁消除一个线程内部不断的申请加锁解锁,却没有竞争。达到一定次数,经过JIT编译,编译器发现没有sychronized 关键字并没有真正抢锁。就会进行锁消除。 Lock 接口是没有的。锁粗化减少不必要的lock unLock() 将多个连续的锁扩展成一个范围更大的锁。并不要求单个线程,可以是多线程。...原创 2019-11-06 11:54:52 · 179 阅读 · 0 评论 -
Springboot 自动装配@EnableAutoConfiguration 学习
Springboot能自动配置。零配置功能由@EnableAutoConfiguration实现的。 学习EnableAutoConfiguration 注解。整个链路是@EnableAutoConfiguration >> @AutoConfigurationImportSelector >> SpringFactoriesLoader >...原创 2019-10-16 15:39:08 · 179 阅读 · 0 评论 -
Synchronized 关键字学习
对初学者来讲,在多线程环境下编程,为了保证线程安全我们想到最直接办法是给代码加锁。使用synchronized关键字修饰一段代码。我们给出最常见的demo,创建100个线程对全局变量count进行自增操作。 int count = 0; public void addOperator(){ for(int i= 0;i<100;i++ ){ ...原创 2019-10-13 23:25:50 · 117 阅读 · 0 评论