- 博客(22)
- 收藏
- 关注
原创 JVM-使用static+final修饰的字符的显示赋值阶段
对于static修饰的变量,如果是未被final进行修饰,变量赋值的阶段: 则在链接阶段的准备阶段进行默认初始化赋值,在初始化阶段进行显式赋值 对于static+final修饰的,有两个地方进行显式赋值: 1.在链接的准备阶段进行赋值; 2.在初始化阶段利用()赋值; ...
2021-03-03 13:12:28
322
原创 JVM-内存泄漏
在java中,内存泄漏指的是: 如果不想用一个对象了,但是通过可达性分析算法,发现,这个对象仍然直接或者间接的和其他的对象进行了连接,导致无法进行GC的操作,这个时候就叫做内存泄偶 ...
2021-03-02 09:23:54
171
原创 JVM-intern()
答案:2个 第一个是由于new String(),在堆区创建了一个对象,这个对象是字符串常量池中的对象的地址 同时在字符串常量池中也创建了一个对象,这个对象就是ab实体 说的更加具体一点: 由于是new String(),首先会在堆区创建一个ab的对象,然后就会看字符串常量池中是否有这个对象,如果有的话,就不在字符串常量池中新创建对象,直接将这个堆区的对象指向字符串常量池中的对象即可;如果没有的话,就创建这个ab的对象,并且将这个新创建出来的对象的地址,返回给堆区这个对象。 拓展答案: 注意: 针..
2021-02-28 21:59:34
250
1
原创 JVM-StringTable
Q:StringTable为什么要调整? 在jdk7以前,StringTable是存在永久区的,而永久区默认空间比较小,容易出现OOM 由于永久区的垃圾回收频率低,永久代中有一些不用的String就不能够及时的进行回收。 ...
2021-02-28 11:09:41
122
原创 JVM-方法区的演进细节
注意: 对于静态变量的理解: 1.这里的静态变量的位置变化,指的是这个静态的数据存放的位置: 比如static int[] 1024 此时1.7以前,是存放在方法区的; 但是1.7以后,是存放在堆空间的。 2. 只要是对象实例(new()),就一定是在java堆空间中。 ...
2021-02-27 21:02:15
165
原创 链表-单链表+双向链表的插入和删除
一 单链表 1.1 插入 实现在ai和ai+1中间插入e(固定套路): e —> ai+1 ai—> e e.next = ai.next; ai.next = e; 1.2 删除节点 实现ai的删除: ai-1.next = ai-1.next.next; 二 双向链表 注意:此时理解双向链表的两个箭头: pre和next都是从本节点指向别的节点的!!! pre: 从该节点指向它的前一个节点; next: 从该节点指向它的后一个节点 举例:a2.pre = a1; a2.next =
2021-02-27 19:28:05
784
原创 JVM-虚拟机栈的面试题
第一题: 栈溢出(StackOverflowError:) 当栈的大小不够的时候,可以通过-Xss设置栈的大小,如果整个空间都不足了,就会出OOM的错误 第二题: 不能,只能够说出现StackOverflowError的时间会晚一些,但是不能保证一定不会溢出 第三题: 不是!只是会出错的时间会晚一些,会占用资源 第四题:不会! 总结: 对于 error GC(垃圾回收) 程序计数器 不涉及 不涉及 本地方法栈 涉及 不涉及 虚拟机栈 .
2021-02-26 22:47:09
176
原创 JVM-双亲委派机制
双亲委派机制是在类加载的时候出现的一种机制 一 如果没有第三方jar包 此时双亲委派机制的原理是:当对类进行加载的时候,会从系统类加载器–> 拓展类加载器—> 引导类加载器,一直向其父类寻找,调用的是父类的类加载器,此时的双亲委派机制是成功的。 二 如果有第三方的jar包 如图所示: 由于引入了第三方的jar包,系统在进行类的加载得时候,如果需要实现的是第三方jar包下的类,此时引导类加载器自身由于没有这个类而导致不能实现类的加载,只能通过反向委托给线程上下文类加载器的方式,加载类。此时的双亲委
2021-02-26 21:42:46
160
原创 JAVA学习-变量分类
变量的分类: 成员变量:写在方法外面的 局部变量:定义在方法里面的 类变量:就是用static修饰的,随着类的加载就有了 实例变量:不用static修饰的,只有实例化之后才有
2021-02-26 15:34:47
97
原创 JAVA笔记
各个类型数的转换 #在刷leedcode的时候,总是涉及到不同类型的数进行转换,所以打算总结出来 Sting[] 转换成String: 创建一个StringBuilder,然后将数组中的子串添加到这个StringBuilder中
2021-02-16 14:02:03
120
1
原创 JAVA笔记
JAVA学习 #关于子父类和抽象类和实现类的向上转型的问题: 在刷题Leetcode的时候,在定义具体实现类的时候,出现了这个问题: 问题: 他提示我对queue进行poll()方法调用的时候不可以调用; 原因: 经过查看源码解析之后 查看源码的方法: 1.control+n:然后输入想要查看的类的名称,这里想要看linkedlist的源码,所以输入linkedlist; 可以看到,linkedlist实现了四个接口,最主要看的是实现了List和Deque接口,然后想要看这个poll()方法究竟是在这两
2021-02-03 22:30:14
331
原创 JAVA学习
在刷题是遇到ArrayList<>[]和int[]之间的转换 问题:在leetcode刷题的时候总是遇到在操作的时候,使用的是动态数组:ArrayList<> 或者LInkedList<>,但是返回的时候又要求返回的是int[],在转换的过程中会遇到各种问题: 1.不能够利用ArrayList.toArray()方法直接进行转换成Int[]: 原因: 对于第一个: object是所有类的父类,但是基本数据类型不是类,所以如果使用下面的方法直接调用 会报错: 2.对
2021-01-20 14:36:14
105
原创 JAVA学习-equals()和==
Java学习 有关equals方法和== ==:是运算符 1.可以使用在基本数据类型和引用数据类型中; 2.如果比较的是基本数据类型变量:比较的是两个变量保存的数据是否相同(不一定类型要相同); 如果比较的是引用数据类型变量:比较的是两个对象的地址值是否相同,即两个对象是否指向同一个对象实体 equals():方法 1.是一个方法,并非运算符; 2.只能适用于引用数据类型; 3.在Object类中的equals()的定义: public boolean equals(Object obj){ return
2021-01-04 19:55:59
126
原创 利用CVX和gurobi这个求解器复现一篇混合整数线性规划问题时遇到的问题
利用CVX和gurobi这个求解器复现一篇混合整数线性规划问题时遇到的问题 1.当出现从cvx 转换为double 时出现错误:  HelloWorld的例子 本文重点: 1.如何创建并且编译成功第一个java程序 2.在过程中遇到了什么问题,如何解决的. 1 1.找到安装在JDK的bin目录,创建一个文本文档,命名为xxx,要改后缀名,改为.java; 2.写内容: 文本文档中的内容为: 注: (1) 注意英文的大小写 (2) 在保存文件的时候注意要选择代码格式为ANSI,而不是默认的格式,不然会报错. 编...
2020-04-17 22:46:52
137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人