
java 源码
齐梦星空
专注
展开
-
通过手撸RPC让你真正明白动态代理的强大之处
普通代理定义一个接口public interface HelloInterface { void sayHello();}定义一个被代理类public class Hello implements HelloInterface{ @Override public void sayHello() { System.out.println("...原创 2020-02-29 00:57:12 · 685 阅读 · 0 评论 -
java NIO 之Buffer类
1.基础缓冲区是包在一个对象内的基本数据元素数组。1.1 关键词容量(Capacity)缓冲区能够容纳的数据元素的最大数量。这一容量在缓冲区创建时被设定,并且永远不能 被改变。上界(Limit)缓冲区的第一个不能被读或写的元素。或者说,缓冲区中现存元素的计数。位置(Position)下一个要被读或写的元素的索引。位置会自动由相应的 get( )和 put( )函数更新。标记(M...原创 2020-02-19 16:57:53 · 175 阅读 · 0 评论 -
Java 8系列之重新认识HashMap
转载自美团技术团队摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口java...转载 2019-06-28 10:16:03 · 158 阅读 · 0 评论 -
java NIO 之 Selector
服务启动时,在 Selector只有一个ServerSocketChannel而没有其他通道 的情况下,调用 select()方法会被阻塞.是因为ServerSocketChannel 只有在有链接的情况下才会变为就绪状态.与此同时又没有其他的通道.所以调用select()才会被阻塞.Selector维持一个 selectkeys集合.如果集合里的ServerSocketChannel ke...原创 2019-09-05 14:39:59 · 140 阅读 · 0 评论 -
java的类加载顺序和实例化顺序
总的来说,java类加载顺序和实例化顺序遵循以下几个原则:类总是先加载后实例化的类只在第一次实例化的时候加载,后续实例化不再加载类加载具有父子关系的两个类,先加载父类后加载子类。类中代码执行的顺序是:父类的静态代码块(静态属性)-> 子类的静态代码块(静态属性)静态代码块和静态属性的优先级是相同的,谁在前先执行谁。先执行的语句不能调后执行的属性。tips:这里有个小...原创 2019-09-07 12:19:53 · 417 阅读 · 0 评论 -
java的逆变与协变
网上随随便便就能搜到逆变和协变定义,所以本文也不再针对这方面做阐述。本文主要讲述逆变和协变在设计层面的考虑。前提网上有很多人都容易把逆变和协变与泛型相混淆。实际上逆变和协变并不属于泛型的范畴,虽然他们之间有很多关联的地方。不然的话你可以用泛型来解释协变,但是你怎么用泛型来解释逆变?逆变和协变主要源自与通配符(?)。而通配符的设计主要是为了代码复用。比如写个接受List(任意类型的list)作为...原创 2019-09-13 12:08:24 · 265 阅读 · 0 评论