随笔分类 - Java
摘要:输入输出 Scanner sc = new Scanner(System.in); String s = sc.next();//字符串 double t = sc.nextDouble(); //浮点数 String s = sc.nextLine();//一行 判断是否有下一个输入,用sc.ha
阅读全文
摘要:概念 Java反射机制是指程序可以在运行时,(动态)加载和使用编译期间未指定的类。 具体过程是,通过类名获取类的完整构造(如属性、方法,可用于反编译),并声称类的对象,并调用其方法。 优点:代码更简洁、提高了灵活性和扩展性 缺点:性能差、破坏封装性 使用场景:反编译、简单工厂模式、IOC、AOP(动
阅读全文
摘要:概念 IO流:数据从外部介质(磁盘、键盘)输入到内存为输入流,反之为输出流。 文件的存储方式:所有的文件在硬盘或在传输时都是以字节的方式进行的,字符是只有在内存中才会形成。读取字节流后,不直接操作,而是查询指定编码表,就可以转化为字节流(如文字)。 Java的字节流和字符流 字节流:按字节处理,直接
阅读全文
摘要:AQS是Java并发包的基础类,本文以ReentrantLock为例,着重分析如何利用AQS实现同步结构。
阅读全文
摘要:Java中的四种引用、引用队列、特殊情况下的强可达声明(Reachability Fence)。
阅读全文
摘要:线程池,除了池的功能外,还提供了更全面的线程管理、任务提交等方法。
阅读全文
摘要:解决一致性问题,除了排队(加锁)、投票(拜占庭将军)、CAS+voilate外,ThreadLocal不失为一个更轻量级的优选方案。
阅读全文
摘要:以下分析基于HotSpot虚拟机 注意 jdk1.7以上 的两个变化: 1. 虚拟机内存中,常量池由方法区转移到堆。 2. String.intern() ,如果常量池存在等于此String对象的字符串,则返回该常量池中对象的引用;否则,在常量池中生成一个对原字符串的引用,并返回该引用,而不会再将字
阅读全文
摘要:[toc] 存储结构 JDK1.8前是数组+链表,JDK1.8之后是数组+链表+红黑树。本文分析基于JDK1.8源代码。 HashMap的基础结构是Node ,它存着hash、键值对,Node类型的指针next。 主干是桶数组,链表bin用于解决hash冲突,当链表的Node超过阈值(8),执行树化
阅读全文
摘要:[toc] 重要属性和类 sizeCtl 容量控制标识符,在不同的地方有不同用途,而且它的取值不同,也代表不同的含义。 负数代表正在进行初始化或扩容操作, 1代表正在初始化 N 表示有N 1个线程正在进行扩容操作 正数或0代表hash冲突链表还没有被初始化,这个数值表示初始化或下一次进行扩容的大小,
阅读全文
摘要:1.String特性 1.1 不可变 它是Immutable类,被声明为final class,所有属性也是final的, 其拼接、裁剪等操作都会产生新的String对象。不可变的主要作用在于当一个对象需要被多线程共享,并且访问频繁时,可以省略同步和锁等待的时间,从而大幅度提高系统性能。不可变模式是
阅读全文
摘要:设计层面: 抽象类是多个子类公共特征的抽象,可以想象成基因图谱。比如猴子的子类有金丝猴、长尾猴等。抽象类是子类的模板。这样做有助于代码复用。所以抽象类只支持单继承。 接口类是行为的抽象,这种行为可以跨物种。比如麻雀、蝴蝶、风筝都能实现“飞:这个行为。所以可以理解接口是支持多重继承的,也是实现多态的基
阅读全文

浙公网安备 33010602011771号