java
yiqzq
人生如此复杂,机会多得像稠密图,我们没理由认输。尽管我们走不了最短路,但图仍是连通图,TLE之前,没有一个节点叫失败。
展开
-
在可达性分析中存在的问题
我们知道在可达性分析中需要从GC ROOTS出发,遍历整个对象图找出垃圾并进行回收。但是比如说进行Minor GC的时候,你要从哪些地方寻找GC ROOTS?这个的范围并不是单单只扫描整个新生代就行了。因为跨代引用的存在,你还需要扫描老年代中指向新生代的GC ROOTS 。这就又会带来一个问题,老年代中的东西是十分多的,如果我们每一次Minor GC都要扫描整个老年代,那么时间开销会是很大的。所以为了减少这部分的时间,JVM采用了空间换取时间的办法。因为我们只需要知道某一非收集区域是否有指向收集区域的指针.原创 2020-08-12 14:16:43 · 669 阅读 · 0 评论 -
JVM中方法如何获得对应的地址
深入理解JVM的方法调用文章目录深入理解JVM的方法调用方法如何获得调用对应的地址参考内容要想调用一个方法,就需要知道调用方法的地址。在java中,获取方法的地址的方式不是统一的。在java中,字节码执行调用方法的指令总共有5种。invokestatic。用于调用静态方法。invokespecial。用于调用实例构造器<init>()方法、私有方法和父类中的方法。invoke...原创 2020-04-21 20:25:03 · 516 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(四)
深入理解Java虚拟机读书笔记(四)文章目录深入理解Java虚拟机读书笔记(四)加载验证准备解析初始化类加载器方法调用类加载流程一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化 (Initialization)、使用(Using)和卸载(...原创 2020-04-11 00:31:33 · 204 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(三)
深入理解Java虚拟机读书笔记(三)文章目录深入理解Java虚拟机读书笔记(三)对象分配的策略故障检测工具可视化故障处理工具JVM调优实例class文件字节码指令对象分配的策略对象优先在Eden分配大对象直接进入老年代-XX:PretenureSizeThreshold : 指定大于该设置值的对象直接在老年代分配长期存活的对象将进入老年代-XX: MaxTenuringT...原创 2020-04-09 22:54:24 · 193 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(二)
深入理解Java虚拟机读书笔记(二)文章目录深入理解Java虚拟机读书笔记(二)方法区的回收方法区的垃圾收集主要回收两部分内容:废弃的常量和不再使用的类型。满足卸载类的条件该类所有的实例都已经被回收,也就是Java堆中不存在该类及其任何派生子类的实例。加载该类的类加载器已经被回收,这个条件除非是经过精心设计的可替换类加载器的场景,如OSGi、JSP的重加载等,否则通常是很难达成的...原创 2020-04-09 10:34:29 · 229 阅读 · 0 评论 -
深入理解Java虚拟机读书笔记(一)
深入理解Java虚拟机读书笔记(一)文章目录深入理解Java虚拟机读书笔记(一)Java技术体系Java内存管理垃圾收集注:本文多数内容摘抄自《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)周志明》Java技术体系Java程序设计语言、Java虚拟机、Java类库这三部分统称为JDK(Java Development Kit)把Java类库API中的Java SE API子集...原创 2020-04-07 22:26:51 · 194 阅读 · 0 评论 -
JAVA网络编程代码实例
JAVA网络编程代码实例文章目录JAVA网络编程代码实例BIO模型特点瓶颈NIO模型AIO模型BIO模型特点同步非阻塞,对于每一个客户端连接,由Acceptor线程负责监听客户端的连接,对于每一个客户端请求都会启用一个新的线程处理这个请求。传统的BIO模型的特点是在高并发情况下会创建许多线程来处理请求,但是创建过多的线程会影响服务器的性能。对于BIO的一个优化操作就是使用线程池来管理线...原创 2020-04-06 22:07:08 · 1040 阅读 · 0 评论 -
NIO三大核心组件入门学习笔记
NIO三大核心组件学习笔记文章目录NIO三大核心组件学习笔记BufferBuffer的基本使用填充的put方法获取的get方法切换读写模式的flip方法重新读取的rewind方法重置缓冲区的clear方法重置缓冲区的compact方法ChannelFileChannelFileChannel的读操作FileChannel的写操作SocketChannelServerSocketChannelDa...原创 2020-04-06 14:56:32 · 249 阅读 · 0 评论 -
Java 如何去检测一个死锁
Java 如何去检测一个死锁文章目录Java 如何去检测一个死锁先要去构造一个死锁/** * Created by lirong5 on 2016/5/24. */public class SyncDeadLock{ private static Object locka = new Object(); private static Object lockb = n...原创 2020-04-03 13:54:13 · 488 阅读 · 0 评论 -
垃圾收集器学习
垃圾收集器学习文章目录垃圾收集器学习垃圾收集器介绍SerialParNewParallel ScavengeSerial OldParallel OldCMSG1低延迟垃圾处理器参考内容垃圾收集器介绍新生代收集器:SerialParNewParallel ScavengeParNewParallel Scavenge老年代收集器:Serial OldCMSParall...原创 2020-04-01 14:45:37 · 183 阅读 · 0 评论 -
面试中的洗牌算法和蓄水池抽样算法的证明
面试中的洗牌算法和蓄水池抽样算法的证明文章目录面试中的洗牌算法和蓄水池抽样算法的证明洗牌算法蓄水池抽样算法参考内容洗牌算法题目:有一副斗地主的扑克牌,设计一个洗牌算法。问题很简单,但问题的关键在于要设计一个公平的算法,使得每一个位置都能等概率地放置每个元素。由于之前没有研究过这个问题,面试被问到就很尴尬,所以这里记录一下优秀的洗牌算法。一个最简单的方法有n张牌,每次从中任意的取出一...原创 2020-03-31 18:59:09 · 431 阅读 · 0 评论 -
关于内存泄漏的问题
关于内存泄漏的问题文章目录关于内存泄漏的问题什么是内存泄漏关于OOM内存泄漏的原因静态集合类引起内存泄漏监听器各种连接内部类和外部模块的引用单例模式防止内存泄漏的发生检查内存泄漏的工具参考内容什么是内存泄漏内存泄漏:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在...原创 2020-03-31 14:41:41 · 483 阅读 · 0 评论 -
Fork/Join的入门学习笔记
Fork/Join的学习笔记文章目录Fork/Join的学习笔记Fork/Join的出现Fork/Join的介绍使用Fork/Join使用例子参考资料Fork/Join的出现在JDK5中出现了concurrent 包,这里面有Executors框架,增强普通的线程。但是并没有很好的利用现代计算机多核的优势。在JDK7中,为了利用计算机多核的优势,于是出现了Fork/Join框架。这是一个并行...原创 2020-03-30 15:52:45 · 186 阅读 · 0 评论 -
设计模式学习笔记
设计模式学习笔记文章目录设计模式学习笔记设计模式原则设计模式分类创建型模式简单工厂模式介绍代码实例工厂方法模式介绍代码实例抽象工厂模式介绍代码实例缺点单例模式介绍饿汉模式懒汉模式(非线程安全)使用synchronized保证线程安全的懒汉模式双重校验锁的懒汉模式内部类模式建造者模式介绍代码实例使用场景原型模式介绍代码实例结构型模式代理模式JDK和CGLIB动态代理区别适配器模式介绍代码实例使用场...原创 2020-03-29 17:57:15 · 186 阅读 · 0 评论 -
线程池学习笔记
文章目录线程池的好处线程池的创建线程池执行流程线程池的工作队列关于BlockingQueueBlockingQueue的方法ArrayBlockingQueue阻塞插入putenqueue方法阻塞取出takedequeue方法非阻塞插入offer非阻塞取出pollLinkedBlockingQueue阻塞取出take阻塞插入putDelayQueueoffer方法非阻塞取出poll阻塞取出take...原创 2020-03-27 16:52:47 · 186 阅读 · 0 评论 -
ReentrantLock学习(待更
ReentrantLock学习文章目录ReentrantLock学习公平锁和非公平锁的区别公平锁和非公平锁的区别前面在AQS学习一文中已经提到过了公平锁的整个流程,所以现在来看一下非公平锁首先是关于ReentrantLock的默认表现形式。总共有2个构造器,由下面的代码可知,默认实现的是非公平锁,但是也可以传入参数控制是公平锁还是非公平锁。public ReentrantLock() ...原创 2020-03-25 16:46:30 · 101 阅读 · 0 评论 -
AQS学习笔记
AQS 学习文章目录AQS 学习lock加锁过程acquire方法tryAcquire方法hasQueuedPredecessors方法enq方法compareAndSetTail方法addWaiter方法acquireQueued方法shouldParkAfterFailedAcquire方法parkAndCheckInterrupt方法关于加锁的流程图unlock解锁过程release方法t...原创 2020-03-22 14:49:57 · 545 阅读 · 0 评论 -
JVM相关知识学习
JVM虚拟机相关文章目录JVM虚拟机相关JVM运行时数据区域常量池编译和加载的区别类加载流程类加载机制内存模型关于元空间和永久代之间的区别和联系为什么要将永久代替换为元空间如何保证内存分配的时候是线程安全的什么是TLAB注意事项TLAB带来的问题MinorGC和Full GC内存分配垃圾回收哪些地方会执行垃圾回收哪些对象需要被回收?什么是GCRoots垃圾回收算法标记-清除算法**复制算法**标...原创 2020-03-14 21:15:17 · 272 阅读 · 0 评论 -
关于SpringMVC下,无法使用静态资源的问题及解决
文章目录原因顺带一提,关于为什么没有拦截掉jsp页面请求的原因解决方案原因在我们配置SpringMVC的时候,在web.xml中配置过一个DispatcherServlet,代码如下 <!--配置springmvc DispatcherServlet,前端控制器--> <servlet> <servlet-name>springmv...原创 2020-03-03 19:25:28 · 373 阅读 · 0 评论 -
Java框架学习过程中碰到过的坑
Java框架学习过程中碰到过的坑文章目录Java框架学习过程中碰到过的坑关于springmvc的form标签关于springmvc的form标签使用前需要添加配置<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>form标签每一个都有一个path属性,这个的好处在于对于...原创 2020-03-02 21:27:15 · 237 阅读 · 0 评论 -
SpringMVC使用自定义视图以及视图解析器
SpringMVC使用自定义视图以及视图解析器文章目录SpringMVC使用自定义视图以及视图解析器 我们知道在获得了ModelAndView(简称mv)对象之后,前端控制器会根据这个对象通过ViewResolver解析出一个view对象,最后通过view对象渲染整个页面,传递给用户。其中系统默认的是InternalResourceViewResolver,当然我们也可以通过实现接口来自定...原创 2020-03-02 18:55:33 · 296 阅读 · 0 评论 -
SpringMVC 的运行流程
SpringMVC 的运行流程用户发送请求至前端控制器 DispatcherServlet。DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。处理器映射器根据请求 url 找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。DispatcherServlet 通过 Hand...原创 2020-03-02 14:14:45 · 76 阅读 · 0 评论 -
对象锁和方法锁
对象锁和方法锁文章目录对象锁和方法锁主要内容可以归纳为以下的表格修饰形式修饰分类锁住的对象代码实例同步方法非静态方法类的实例对象public synchronized void method(){}同步方法静态方法类对象public static synchronized void method(){}同步代码块实例对象类的实例对象syn...原创 2020-02-20 15:46:08 · 441 阅读 · 0 评论 -
关于Java的Interrupt中断的一些问题
关于Java的Interrupt中断文章目录关于Java的Interrupt中断概念例子概念首先需要知道的是每一个线程都有一个中断状态位,默认值是false。然后当调用一个线程的interrupt()方法之后,会有两种情况:第一种,线程处于正常的运行状态下,线程的中断状态位会被改变,会由false变为true,但是线程并不会停止运行。如果线程正处于阻塞的状态(sleep, wait,...原创 2020-02-19 22:06:39 · 155 阅读 · 0 评论 -
JDK 1.8的特性发现
1.在使用匿名内部类调用局部参数的时候,发现参数不再需要添加final修饰符,其原因是编译器会隐式的帮你添加final关键字。因此,看似不再是final,其本质上还是final,所以一旦对局部参数进行修改的话,编译器就会报错。顺带一提,基本类型的final是值不能修改,而对象的final是引用不能修改,但是能对引用的对象的内容进行修改。...原创 2020-02-17 20:04:14 · 59 阅读 · 0 评论 -
关于java 通配符的问题和解释
关于通配符的一些小问题首先我们知道java有两种通配符 <? extend class>上界通配符:表示存储的都是class的子类(包括本身) <? super class>下界通配符:表示存储的是class的父类(及其本身) 这两个通配符都各自有一个特点 上界通配符只能取,不能存 下界通配符只能存,不能取 下面举一个super的例子//这是类...原创 2020-02-15 11:18:48 · 423 阅读 · 0 评论 -
JAVA关于对象创建过程中初始化和声明顺序问题
代码作者问题1:关于静态变量声明和初始化/** * Java 测试代码 * Power by http://www.litefeel.com * @author lite3 */public class Test{ public static Test1 t = new Test1(); public static int a = 0; public st...原创 2020-02-02 15:23:29 · 434 阅读 · 0 评论 -
关于使用mysql8.0以上的jdbc代码
首先要先下载8.0以上的jar包推荐地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java下面是代码:package linkmysql;import java.sql.Connection;//Connection接口是JDBC为数据库的连接所提供的一个接口,具有操作数据库和控制数据源的作用import ja...原创 2019-06-22 19:44:49 · 4657 阅读 · 5 评论 -
java字符串和字符数组相互转化的方法
转载自 https://blog.csdn.net/dizi1802/article/details/81709521/*java可以使用两种方法直接将字符数组转为字符串方法1:直接在构造String时转换。char[] data = {‘a’, ‘b’, ‘c’};String str = new String(data);方法2:调用String类的方法转换。String.va...转载 2019-03-07 12:57:13 · 15369 阅读 · 1 评论 -
关于java编译通过,为什么运行却提示找不到或无法加载主类的解决方法
主要是注意以下几点:1.很大可能是CLASSPATH搞错了!!!(就是因为这个找个好久的问题)CLASSPATH值的最后没;(分号)会出现以下错误错误:找不到或无法加载主类HelloWorld。解决方法:(1)打开环境变量,检查CLASSPATH的最后是否有分号( ; ),没有的话加上即可(2)可以直接删除掉CLASSPATH,因为Java 1.5版本之后不需要设置CLASSPATH ...原创 2019-03-03 01:35:14 · 1299 阅读 · 0 评论 -
java重定向标准输入输出
Java的标准输入/输出分别通过System.in和System.out来代表,在默认的情况下分别代表键盘和显示器,当程序通过System.in来获得输入时,实际上是通过键盘获得输入。当程序通过System.out执行输出时,程序总是输出到屏幕。在System类中提供了三个重定向标准输入/输出的方法static void setErr(PrintStream err) 重定向“标准”错误输出流...原创 2019-03-02 16:31:31 · 233 阅读 · 0 评论