首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
Java
订阅
joyuce
更多收藏集
微信扫码分享
微信
新浪微博
QQ
25篇文章 · 0订阅
ReentrantLock 实现原理
使用 synchronize 来做同步处理时,锁的获取和释放都是隐式的,实现的原理是通过编译后加上不同的机器指令来实现。 而 ReentrantLock 就是一个普通的类,它是基于 AQS(AbstractQueuedSynchronizer)来实现的。 是一个重入锁:一个线程…
LinkedHashMap 底层分析
众所周知 HashMap 是一个无序的 Map,因为每次根据 key 的 hashcode 映射到 Entry 数组上,所以遍历出来的顺序并不是写入的顺序。 因此 JDK 推出一个基于 HashMap 但具有顺序的 LinkedHashMap 来解决有排序需求的场景。 它的底层…
你应该知道的 volatile 关键字
不管是在面试还是实际开发中 volatile 都是一个应该掌握的技能。 首先来看看为什么会出现这个关键字。 由于 Java 内存模型(JMM)规定,所有的变量都存放在主内存中,而每个线程都有着自己的工作内存(高速缓存)。 线程在工作时,需要将主内存中的数据拷贝到工作内存中。这样…
秒杀架构实践
之前在 Java-Interview 中提到过秒杀架构的设计,这次基于其中的理论简单实现了一下。 先简单根据这个图谈下请求的流转,因为后面不管怎么改进这个都是没有变的。 前端请求进入 web 层,对应的代码就是 controller。 之后将真正的库存校验、下单等请求发往 Se…
Netty(一) SpringBoot 整合长连接心跳机制
Netty 是一个高性能的 NIO 网络框架,本文基于 SpringBoot 以常见的心跳机制来认识 Netty。 客户端每隔 N 秒检测是否需要发送心跳。 服务端也每隔 N 秒检测是否需要发送心跳。 服务端可以主动 push 消息到客户端。 基于 SpringBoot 监控,…
理解JVM(一):内存结构
虚拟机内存管理中最大的一块内存空间。 存放关键字new创建的对象实例和数组。 堆内存被所有线程共享。 这块内存区由JVM(Java虚拟机)自己管理。当使用new创建对象时,不必指定分配空间的大小,JVM会动态自动分配一块区域;在程序执行过程中,没有指向此对象的引用时,此对象就被…
Java 集合 ArrayList 源代码分析(带着问题看源码)
今天学习下ArrayList的源代码,不同于其他人写的博客,很多都是翻译源代码中的注释,然后直接贴到文章中去。小编打算换一种书写风格,带着问题看源码可能收获会更大,本文将围绕着下面几个问题展开讨论。 其实无论你采用transient E[] elementData;的方式声明,…
注册中心 Eureka 源码解析 —— 应用实例注册发现(六)之全量获取
1. 概述 2. Eureka-Client 发起全量获取 3. Eureka-Server 接收全量获取 666. 彩蛋 1. 概述 本文主要分享 Eureka-Client 向 Eureka-Server 获取全量注册信息的过程。 Eureka-Client 获取注册信息,…
你真的明白RPC 吗?一起来探究 RPC 的实质
不论你是科班出身还是半路转行,这么优秀的你一定上过小学语文,那么对扩句和缩句你一定不陌生。缩句就是去除各种修饰提炼出一句话的核心,而不失基本的语义。下面来实现一个简易的 rpc 程序探究其实质,进而去理解复杂的 rpc 框架。所谓复杂的框架就是在简单的过程中加入了一些设计装…
深入理解线程通信
开发中不免会遇到需要所有子线程执行完毕通知主线程处理某些逻辑的场景。 或者是线程 A 在执行到某个条件通知线程 B 执行某个操作。 两个线程通过对同一对象调用等待 wait() 和通知 notify() 方法来进行通讯。 这里的线程 A 和线程 B 都对同一个对象 TwoThr…