随笔分类 -  Java

摘要:我们知道在JDK1.8中取消了永久代,区而代之使用了元空间来实现方法区。话虽如此,但是关于字符串常量池和运行时常量池的模棱两可的说法一直都是争论不休的。 1)方法区包含哪些内容? 方法区包含哪些内容,摘录自《java虚拟机规范 第8版》: 方法区包含: 运行时常量池 自动和方法数据 构造函数和普通方 阅读全文
posted @ 2020-05-20 18:29 cosmoswong 阅读(34093) 评论(8) 推荐(8) 编辑
摘要:1. 对象的创建和分配 创建对象(如克隆、反序列化)通常仅仅一个new关键字,但在虚拟机中,对象的创建的过程需要如下步骤: 1. 类加载检查 先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被加载、解析、初始化过,若没有,则必须先执行相应的类加载过程。 阅读全文
posted @ 2020-03-03 16:58 cosmoswong 阅读(720) 评论(0) 推荐(0) 编辑
摘要:下面是一段司空见惯的代码,创建两个线程A和线程B,使得线程A优先于线程B执行,使得线程B优先于主线程执行 输出结果: 它是如何做到的线程A优先于线程B,线程B优先于主线程的呢? 为了说明这点,就要查看Thread.join的源码了: c++ void JavaThread::exit(bool de 阅读全文
posted @ 2020-02-22 14:27 cosmoswong 阅读(248) 评论(0) 推荐(0) 编辑
摘要:今天在浏览知乎的时候,看到了这个问题,感觉很多人说的不清楚。问题链接: "Java 类名.class与类名.this 的区别?" 话说它有什么区别呢?从API层面上来说,"类.class"返回该类所对应的class对象,而"类.this"得到的是该类的对象,这两者的区别大着呢!前者是描述该类的Cla 阅读全文
posted @ 2020-02-17 19:00 cosmoswong 阅读(758) 评论(0) 推荐(0) 编辑
摘要:如果使用for循环方式遍历链表,由于链表中元素是通过指针连接彼此的,不存在索引的概念,如果使用for循环方式遍历LinkedList,依次传入索引值,则就相当于每次都要将链表撸一遍。 如:在下面的这个遍历操作中,我们采用for的方式 ​ 可以发现,如果使用for循环方式遍历LinkedList,问题 阅读全文
posted @ 2019-11-25 22:29 cosmoswong 阅读(1412) 评论(0) 推荐(0) 编辑
摘要:深入理解枚举 1. 枚举类的继承结构: 2. 枚举类和普通类的区别: (1)枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类,因此枚举不能够显示继承其他父类(单继承局限性,但是可以实现接口)。其中“java.lang.Enum” 阅读全文
posted @ 2019-11-23 19:47 cosmoswong 阅读(1269) 评论(0) 推荐(0) 编辑
摘要:1. 关于单例设计模式 Singleton:在Java中即指单例设计模式,它是软件开发中最常用的设计模式之一。 单:唯一 例:实例 单例设计模式,即某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式。 例如:代表JVM运行环境的Runtime类 要点: (1)某个类只能有一个实例:构造器私 阅读全文
posted @ 2019-11-22 23:43 cosmoswong 阅读(441) 评论(0) 推荐(0) 编辑
摘要:一、锁与共享变量 加锁是一种悲观的策略,它总是认为每次访问共享资源的时候,总会发生冲突,所以宁愿牺牲性能(时间)来保证数据安全。 无锁是一种乐观的策略,它假设线程访问共享资源不会发生冲突,所以不需要加锁,因此线程将不断执行,不需要停止。一旦碰到冲突,就重试当前操作直到没有冲突为止。 无锁的策略使用一 阅读全文
posted @ 2019-11-21 00:09 cosmoswong 阅读(322) 评论(0) 推荐(0) 编辑
摘要:常量入栈指令 指令码 操作码(助记符) 操作数 描述(栈指操作数栈) 0x01 aconst_null null值入栈。 0x02 iconst_m1 1(int)值入栈。 0x03 iconst_0 0(int)值入栈。 0x04 iconst_1 1(int)值入栈。 0x05 iconst_2 阅读全文
posted @ 2019-11-20 19:14 cosmoswong 阅读(203) 评论(0) 推荐(0) 编辑
摘要:最近在看java源码的时候发现,int型在序列化操作的时候,做了如下操作: 平时见多了 ,倒是很少见 ,这个是什么操作呢? 1.Java 运算符 和 运算符 \ 在java 表示有符号右移。什么意思呢?就是最高位符号位也会移动。 我们知道, 表示有符号右移。 1 1 = 1 1 2 = 1 还等于 阅读全文
posted @ 2019-11-14 21:52 cosmoswong 阅读(384) 评论(0) 推荐(0) 编辑
摘要:1.1 顺序表 线性表:线性表是具有 相同特征 数据元素的 有限序列 。 相同特征:把同一类事物归类,方便批量处理。 有限:表中元素个数为n,n有限大,n可以为零。 序列:表中元素排成一列,体现了一对一的逻辑特征(除第一个元素外,每个元素有且只有一个直接前驱,除最后一个元素外,每个元素有且只有一个直 阅读全文
posted @ 2019-11-14 16:09 cosmoswong 阅读(830) 评论(0) 推荐(0) 编辑
摘要:给定一个数值98,取个位:98%10=8,取十位上的数值:98/10%10=9,通用方法: ———————————————— 原文链接:https://blog.csdn.net/qq_43314793/article/details/90106954 阅读全文
posted @ 2019-11-11 20:44 cosmoswong 阅读(1496) 评论(0) 推荐(0) 编辑
摘要:1.JVM概述 JVM(Java virtual Machine)指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。 JVM是一种规范,实现产品常见有:Sun HotSpot VM、BEA JRockit VM、IBM J9 VM、Azul VM 阅读全文
posted @ 2019-09-01 19:29 cosmoswong 阅读(256) 评论(0) 推荐(0) 编辑
摘要:当Java虚拟机初始化一个类时,要求它的所有父类都已经初始化,但是这条规则不适于接口 1) 当初始化一个类时,并不会先初始化它所实现的类的接口。 2) 在初始化一个接口时,并不会先初始化它的父接口 因此,一个父接口并不会因为它的子接口或者实现类的初始化而初始化。只有当程序首次使用特定接口的常量时,才 阅读全文
posted @ 2019-09-01 11:17 cosmoswong 阅读(647) 评论(2) 推荐(0) 编辑
摘要:关于方法的重载的定义,同一个类中方法名相同,参数列表不同。 援引自“疯狂JAVA” 现在所讨论的就是,参数列表不同的具体含义。参数列表不同包含,参数的类型不同,参数的个数不同,参数的顺序不同 阅读全文
posted @ 2019-08-19 23:04 cosmoswong 阅读(202) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示