首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
源码系列
订阅
hetaoo
更多收藏集
微信扫码分享
微信
新浪微博
QQ
10篇文章 · 0订阅
AOP如何实现及实现原理
最近在开发中遇到了一个刚好可以用AOP实现的例子,就顺便研究了AOP的实现原理,把学习到的东西进行一个总结。文章中用到的编程语言为kotlin,需要的可以在IDEA中直接转为java。 1. AOP简介 相信大家或多或少的了解过AOP,都知道它是面向切面编程,在网上搜索可以找到…
为什么ConcurrentHashMap的读操作不需要加锁?
我们知道,ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——为什么它不需要加锁呢? 我想有基础的同学知道在jdk1.7中是采用Segment + HashEnt…
SpringBoot 应用程序启动过程探秘
关于 @SpringBootApplication 注解的剖析已经在上文:《SpringBoot 中 @SpringBootApplication注解背后的三体结构探秘》 中完成了,其实它背后就是一个三体结构,只是 SpringBoot给了其一个包装而已。那么本文我们就来看看这…
HashMap之元素插入
和HashTable类似,采用数组+单链表形式存储元素,从jdk1.8开始,增加了红黑树的结构,当单链表中元素个数超过指定阈值,会转化为红黑树结构存储,目的就是为了解决单链表元素过多时查询慢的问题。 和HashTable不同的是,HashMap是线程不安全的,方法都未使用syn…
(201)Atomic*实现原理
成神之路,需要耐得住寂寞,开启总结源码之旅。 我阅读总结源码的目的不是为了炫技,我希望通过阅读源码可以解决一些问题,也可以通过阅读源码理解别人思想,以帮助我们更好的写我们的代码。 在多线程的场景中,我们需要如何同步数据,通常会使用synchronized或者lock来处理,使用…
从源码入手,一文带你读懂Spring AOP面向切面编程
之前《零基础带你看Spring源码——IOC控制反转》详细讲了Spring容器的初始化和加载的原理,后面《你真的完全了解Java动态代理吗?看这篇就够了》介绍了下JDK的动态代理。 基于这两者的实现上,这次来探索下Spring的AOP原理。虽然AOP是基于Spring容器和动态…
数据库中间件 Sharding-JDBC 源码分析 —— JDBC实现与读写分离
- [1. 概述] - [2. unspported 包] - [3. adapter 包] - [3.1 WrapperAdapter] - [3.2 AbstractDataSourceAdapter]
HashMap为何从头插入改为尾插入
前面对于HashMap在jdk1.8中元素插入的实现原理,进行了详细分析,具体请看:HashMap之元素插入。文章发布之后,有一位朋友问了这么一个问题:"jdk1.7中采用头插入,为什么jdk1.8中改成了尾插入?"。有人说这就是java大神随性而为,没什么特殊的用处。当时因为…
限流降级神器-哨兵(sentinel)原理分析
Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。 大家可能会问:Sentinel 和之前常用的熔断降级库 Netflix Hystrix 有什么异…
jdk1.8 线程池部分源码分析
有兴趣交流springboot进行快速开发的同学可以加一下下面的企鹅群。 我们知道计算机的每次运行都是需要大量的资源消耗,5个线程的操作可能没有影响,5w个呢? 五万次创建和销毁才有仅仅五万次的执行吗?执行任务可能花费了大量的时间来处理这些创建和销毁。 为什么这里我要拿一个线程…