首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏JavaEdge

    JDK源码解析实战 - AbstractQueuedSynchronizer源码解析

    tryAcquire 方法 AQS 中直接抛出一个异常,表明需要子类去实现,子类可以根据同步器的 state 状态来决定是否能够获得锁,接下来我们详细看下 acquire 的源码解析。 png]AQS 对其只是简单的实现,具体获取锁的实现方法还是由各自的公平锁和非公平锁单独实现,实现思路一般都是 CAS 赋值 state 来决定是否能获得锁(阅读后文的 ReentrantLock 核心源码解析即可 来一起研究本小节源码。 最后抢到锁返回了,那么如果被中断过的话,就需要补充一次中断 总结 AQS 的源码实在是太多了,我们只研究核心源码,其他部分源码都可以参考研究。

    1.2K1513发布于 2020-05-09
  • 来自专栏JavaEdge

    JDK源码解析实战 - AbstractQueuedSynchronizer源码解析

    tryAcquire 方法 AQS 中直接抛出一个异常,表明需要子类去实现,子类可以根据同步器的 state 状态来决定是否能够获得锁,接下来我们详细看下 acquire 的源码解析。 AQS 对其只是简单的实现,具体获取锁的实现方法还是由各自的公平锁和非公平锁单独实现,实现思路一般都是 CAS 赋值 state 来决定是否能获得锁(阅读后文的 ReentrantLock 核心源码解析即可 来一起研究本小节源码。 ? 最后抢到锁返回了,那么如果被中断过的话,就需要补充一次中断 总结 AQS 的源码实在是太多了,我们只研究核心源码,其他部分源码都可以参考研究。

    1.3K21发布于 2020-05-26
  • 源码】spring源码解析

    在案例分析中,我们可以以一个简单的示例来解析 Spring 框架的源码。假设我们有一个简单的 Web 应用程序,需要实现用户管理的功能,包括用户的增删改查。 同时,我们也可以通过调试源码的方式来进一步了解 Spring 框架的内部实现细节。

    20810编辑于 2025-08-29
  • 来自专栏爪哇缪斯

    (六)Spring源码解析:Spring AOP源码解析

    ,后续我们会针对这两个方法进行解析。 = this.aspectBeanNames; // 步骤1:如果aspectNames为空,则试图从IOC中解析出Aspect的beanName列表 if (aspectNames 获得普通增强器 getAdvisor(...)方法的源码如下所示: a> 步骤1:获得切点表达式的相关信息 下面我们来看一下步骤1中的获得切点表达式的相关信息的getPointcut(...)方法源码逻辑 更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」 往期推荐 (五)Spring源码解析:ApplicationContext解析 (四)Spring源码解析 :bean的加载流程 (三)Spring源码解析:自定义标签解析 (二)Spring源码解析:默认标签解析 (一)Spring源码解析:容器的基本实现

    1.3K30编辑于 2023-09-06
  • 来自专栏JavaEdge

    Mybatis#BaseExecutor源码解析BaseExecutor源码解析

    executor = (Executor) interceptorChain.pluginAll(executor); return executor; } BaseExecutor源码解析

    1.4K60发布于 2018-10-10
  • Spring 源码:深度解析AOP源码配置解析

    一、 解析AOP配置的入口1.1 从XML配置到AOP Namespace的解析流程流程解析:加载配置文件:Spring 应用启动时加载 XML 配置文件。 解析切点:当解析到 <aop:pointcut> 元素时,Spring 会创建一个切点,并指定切点的 ID 和表达式。 1.2 分析注解驱动的AOP配置解析流程解析流程:扫描组件:Spring 应用启动时,会扫描指定的包路径下的组件,并解析其中的注解。 负责解析 <aop:config> 标签中的配置信息,并将解析结果应用到 Spring 的 Bean 定义中。 主要责任:解析 AOP 配置信息:解析<aop:config> 标签及其子标签中的配置信息,包括切面定义、通知类型、切点表达式等。

    46200编辑于 2025-01-08
  • 来自专栏深入理解Android

    开源框架源码解析系列(2)——LeakCanary源码解析

    LeakCanary是一个开源的,可以用来检测activtiy或者fragment内存泄漏的框架,本篇我们来学习这个框架的源码。 leakcanary-android:2.0-alpha-2' } 然后在application执行如下代码: LeakCanary.install(this); 然后出现内存泄露时候就会出现通知弹窗 2.源码分析 Throwable e) { return failure(e, since(analysisStartNanoTime)); } } 1.创建HprofParser,这个时另一个库里的,用来解析

    2.2K10编辑于 2022-06-22
  • 来自专栏全栈程序员必看

    spring ioc源码解析_spring事务源码深度解析

    SpringApplication源码解析 运行SpringApplication的方式 在创建SpringBoot应用,我们经常看到 SpringApplication.run(ApplicationConfiguration.class 其实因为SpringApplication在创建的时候,做了 推断Web应用类型 我们来看看SpringApplication构造方法源码 public SpringApplication(ResourceLoader 这里要注意优选级问题,如果你的优先级低于ConfigFileApplicationListener的优先级,那你这里获取name是获取不到的 推断实际启动引导类 最后便是推断实际启用引导类,老规矩,看看源码 and continue } return null; } 这里可以看到,它推断是获取所有线程,然后取出线程的方法名为main的类名,进行实现的 分析SpringApplication.run()方法 源码解析 先上一波源码,再逐一分析 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new

    86830编辑于 2022-09-30
  • 来自专栏友弟技术工作室

    supervisor源码解析

    上篇文章介绍了supervisor的使用, 今天介绍一下supervisor的源码。 supervisor是python写的。如果你不懂python,我也介绍一下golang版的实现。 源码 supervisor的组件 1. supervisord 服务器主进程名为supervisord。 stylesheets │ │ └── supervisor.css │ └── tail.html ├── version.txt ├── web.py └── xmlrpc.py 整体架构 源码学习按上面的分块进行介绍 return func(arg) 可以看出 会返回一个func = getattr(self, 'do_' + cmd),函数调用,是以do_开头的函数 在supervisorctl的源码文件中 这个源码不太容易看,我参考supervisor的设计写公司项目,一开始是看这个源码,发现很不容易理清楚,我是先看了go语言版的,然后在回头看python版的才看明白。

    2.9K00发布于 2019-04-18
  • 来自专栏sealyun

    kubescheduler源码解析

    kubernetes集群三步安装 kube-scheduler源码分析 关于源码编译 我嫌弃官方提供的编译脚本太麻烦,所以用了更简单粗暴的方式编译k8s代码,当然官方脚本在编译所有项目或者夸平台编译以及 源码编译接入CI/CD 作为高端玩家,自动化是必须的,因为服务器性能更好,用CI/CD编译更快,这里分享一下我的一些配置: 我把vendor打到编译的基础镜像里了,因为vendor大而且不经常更新 $

    1.6K10发布于 2019-07-25
  • 来自专栏Kirito的技术分享

    Disruptor源码解析

    juc下的队列DisruptorDisruptor是什么Disruptor为什么快Disruptor核心类Sequence(序列)框架类结构关系图Cursored 获取当前序列值Sequenced 序列的申请及发布SequencerAbstractSequencer 管理事件处理者序列和事件发布者发布序列。SingleProducerSequencer 单线程事件发布者。next()申请序列实战单线程生产者MultiProducerSequencer成员变量构造函数next()申请序列publish()事件发布MultiProducerSequencer和SingleProducerSequencer区别RingBufferEventSequencerDataProviderEventSink 这个类提供了各种发布的姿势。RingBufferPad 用于缓存行填充RingBufferFields 这个类的逻辑比较重要,讲解了event在数组中存储位置SequenceBarrier接口 消费者使用ProcessingSequenceBarrier事件处理 EventProcessorBatchEventProcessor event模式单线程处理WorkProcessor work模式多线程处理WorkerPoolwaitStrategy 等待策略实战多线程消费者DSL

    2.1K41发布于 2019-11-05
  • 来自专栏Java工程师成长之路

    Hystrix源码解析

    Hystrix源码解析 1.1.

    60420发布于 2019-09-10
  • 来自专栏用户6296428的专栏

    Redis源码解析

    而redis的底层实现是十分简单的,核心源码也仅有几万行。本文就带大家来领略,小小的redis是如何实现这些复杂功能的。 *注:本文介绍的源码为redis 5.0.14版本 * 二、字符串 C语言存储字符串的问题: 二进制安全 C语言中表示字符串结尾的符号是'\0',如果字符串本身就具有'\0'字符,就会被截断,即非二进制安全 扩容源码如下: sds sdsMakeRoomFor(sds s, size_t addlen) { struct sdshdr *sh, *newsh; //定义两个 sdshdr 结构体指针 即多浪费了30%的空间,redis的跳表使用了较低的空间成本,实现了时间复杂度的大减少 3.3.3 插入节点 插入节点总的来说一共四步 查找插入位置 调整高度 插入节点 调整backward 源码如下 工作中我们也常常使用redis进行各种逻辑的处理,而了解其源码可以避免踩很多坑。

    2K20编辑于 2022-04-06
  • 来自专栏Android开发经验分享

    WeakHashMap源码解析

    通过下面的代码计算合适的table长度(大于指定容量的最小的2的指数幂)。其他和 HashMap 类似。

    28020编辑于 2022-12-19
  • 来自专栏程序员备忘录

    ReentrantLock源码解析

    我们还是通过构造方法的静态方法等类的初始化顺序进行逐步阅读源码。 ? 这里就不进行详细的解析了。有兴趣的朋友可以自行研究。

    63930发布于 2020-08-25
  • 来自专栏程序员备忘录

    Semaphore源码解析

    下面我们从源码角度看一下他是如何实现的。 ? 从图中可以看出,Seamaphore的结构和其他的并发工具一样,都有公平锁和非公平锁,一版这种情况都是和AQS关系很大,然后看到很多之前我们看到的方法。 那么我们看看源码是如何实现的。 好了关于Semaphore的源码解析就到这里了。 总结: Semaphore使用AQS进行信号量的实现。

    69420发布于 2020-08-25
  • 来自专栏忽如寄的前端周刊

    minipack源码解析

    � babylon babylon是babel的js代码解析器,目前已经babel官方已经将仓库迁移到了@babel域下,改名为babel-parser,可以通过以下命令安装 npm install -

    1.1K20发布于 2019-07-24
  • 来自专栏码猿技术专栏

    Shiro源码解析

    源码中可以看到,在获取拦截器链的逻辑是只要第一个匹配了,那么就直接返回这个拦截器链,下面的就不执行了,因此是先在filterChainDefinitionMap中配置的先被使用,后面的会被忽略,源码如下

    1K10发布于 2019-12-31
  • 来自专栏码猿技术专栏

    mybatis源码解析

    Mybaits执行查询的简化版 Configuration mybatis的全局配置类,其中封装了mybatis的全部配置,在mybaits加载全局配置文件和Mapper文件的时候,会将里面的xml中的各个元素解析出来 主要的解析流程在org.apache.ibatis.builder.xml.XMLConfigBuilder#parseConfiguration有详细描述。 >> knownMappers这个Map中,key是Mapper的全类名,value是MapperProxyFactory对象(用来创建代理对象) 在mybaits加载配置文件解析Mapper的时候,会调用 我们通过SqlSessionFactory创建sqlSession的时候可以传入执行器的类型,如果不传入,默认使用Simple类型的,在源码中的创建的执行的逻辑如下: //org.apache.ibatis.session.Configuration Statement statement):批量处理 <E> List<E> query(Statement statement, ResultHandler resultHandler):执行查询 流程图 分析源码执行流程

    59510发布于 2019-12-31
  • 来自专栏JavaEdge

    LinkedHashMap源码解析

    ` `if` `(accessOrder)` `// 这个方法把当前 key 移动到队尾` `afterNodeAccess(e);` `return` `e.value;` `}` 从上述源码

    46050编辑于 2021-12-07
领券