首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JavaString部分源码解析

    String源码解析和面试题 String 不变性 一旦被初始化,就不能再被改变;即使修改,也是新的对象 String s = "Hello"; s = "你好"; 为了满足不可变对象,Java语言要求遵守以下...也就是private修饰 类不能够被集合和拓展 类不能对外提供那些能够修改内部状态的方法,setter方法也不行 类内部的字段如果是引用,也就是说可以指向可变对象,但我们不能获取这个对象 我们来看一下源码...value[]; /** Cache the hash code for the string */ private int hash; // Default to 0 } 从源码可以看出...,String满足不可变对象的5条原则,源码解析: String类被final修饰,说明String类绝不可能被继承了,——也就是任何对String的操作方法,都不会被继承覆写。...好像都是对String对象改变了,解释起来也很简单,我们每次的replace这些操作,其实就是在堆内存创建了一个新的对象。然后我们的value指向不同的对象罢了。

    33731

    React源码解析之FunctionComponent(

    前言 接上篇— —React源码解析之FunctionComponent(上) 一、reconcileSingleElement 作用: 当子节点不为 null,则复用子节点并删除其兄弟节点; 当子节点为...(2) 针对child.key === ReactElement.key的情况,在开发过程,大多数的 React 组件都是复用的,因为它们都是“列表”的第一项,所以fiber.key(nulll)=...pendingProps, expirationTime); clone.index = 0; clone.sibling = null; return clone; } 解析...: content 就是要更新的文本 createFiber()里面逻辑不复杂,就不解析了,放下源码: //pendingProps就是 props.children const createFiber...reconcileSingleElement()、reconcileSingleTextNode()和deleteRemainingChildren()的方法,下篇文章会继续讲FunctionComponent的数组节点的更新

    58110

    Spring bean 注册的源码解析

    本文首发于个人公众号 Java 技术大杂烩,欢迎关注 前言 所谓 bean 的注册,就是把在配置文件配置的 节点加载配内存,供后续使用。...bean的注册主要分为两个阶段,一个是准备阶段,就是对配置文件进行解析,把配置文件加载到内存,以 Document 的形式存放;第二个阶段是对 Document 进行操作,获取其中的节点,进行解析,注册...类图 按照惯例,在看源码之前,先来看看和 bean 注册相关的类图,所涉及到的类比较多,也是挺复杂的,类图如下所示: ? 先看看每个类的主要实现,最后再根据一个栗子来看 bean 注册的主要流程。...的属性,它们是一一对应的,即一个 标签对应于一个 BeanDefinition实例。...当解析完bean的所有属性和子节点后,得到 BeanDefinitionHolder 对象,该对象包含了 bean 定义的的全部信息,之后会对该对象进行包装,为什么需要进行包装的?

    1K10

    AndroidCheckBox与CompoundButton源码解析

    经历过了前面一系列的讲解,下面我们直接来看看系统里面的CheckBox与CompoundButton类的源码文件。你肯定会发现很多熟悉的地方。...结合下面源码,我们对它们进行解析解析,它里面使用的就是自定义drawable state。...下面我们来看看系统实现源码: 上面在布局文件中直接写了一个CheckBox,布局文件被解析后就会实例化这个CheckBox对象,就会执行CheckBox的构造函数: public CheckBox(...refreshDrawableState执行的还是View里面的这个方法,直接看源码。...最后把完整的CompoundButton源码贴出来,可以对照上面将的,然后再根据前面讲的详解refreshDrawableList()的执行流程这个过程理解理解。

    75040

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

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

    9551513

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

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

    98321

    Laravel 5.3之 Query Builder 源码解析()

    ('id', '=', 1)的源码可看出,重点就是把where()的变量值按照$column, $operator, $value拆解并装入$wheres[ ]属性,并且$wheres[ ]是一个...()的真正的值取出来与SQL语句进行值绑定,select()大概就是执行准备好的SQL语句。...OK, toSql和select()源码在下篇再聊吧。 总结:本文主要学习了Query Builder的数据库连接器和编译API为SQL相关源码。编译SQL细节和执行SQL的过程下篇再聊,到时见。...('id', '=', 1)的源码可看出,重点就是把where()的变量值按照$column, $operator, $value拆解并装入$wheres[ ]属性,并且$wheres[ ]是一个...OK, toSql和select()源码在下篇再聊吧。 总结:本文主要学习了Query Builder的数据库连接器和编译API为SQL相关源码。编译SQL细节和执行SQL的过程下篇再聊,到时

    3.4K31

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

    否则,将beanName和factory维护到aspectFactoryCache缓存; 在buildAspectJAdvisors()方法源码及注释如下所示: public List<Advisor...获得普通增强器 getAdvisor(...)方法的源码如下所示: a> 步骤1:获得切点表达式的相关信息 下面我们来看一下步骤1的获得切点表达式的相关信息的getPointcut(...)方法源码逻辑...,通过enhancer.setCallback(new MyMethodInterceptor())这段代码,可以将我们自定义的拦截器注入到增强,那么,在上面源码,我们在步骤1将advised保存到...更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」 往期推荐 (五)Spring源码解析:ApplicationContext解析 (四)Spring源码解析...:bean的加载流程 (三)Spring源码解析:自定义标签解析 (二)Spring源码解析:默认标签解析 (一)Spring源码解析:容器的基本实现

    55430
    领券