自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 JVM的STW(stop the world)机制及调优案例

STW(stop the world)是什么1、stop the world指的是GC事件发生过程中,会产生应用程序的停顿。停顿产生时整个应用程序线程都会被暂停,没有任何响应, 有点像卡死的感觉,这个停顿称为STW。Java中一种全局暂停现象,全局停顿,所有Java代码停止,native代码可以执行,但不能与JVM交互;这些现象多半是由于gc引起。(1)可达性分析算法中枚举根节点(GC Roots)会导致所有Java执行线程停顿。① 分析工作必须在一个能确保一 致性的快照中进行② 一致性指整个分析期

2020-08-25 15:26:37 10539 8

原创 Java算法——15翻转栈的所有元素

题目描述翻转(颠倒)栈的所有元素,如输入栈{1,2,3,4,5}。其中,1在栈顶,翻转之后的栈为{5,4,3,2,1},5处在栈顶解题思路申请额外的队列递归import java.util.Stack;public class Test15 { /**把栈底元素移动到栈顶*/ private static void move_bottom_to_top(Stack<Integer>s){ if(s.empty()){ re

2020-08-24 16:01:19 362

原创 Java算法——14实现队列

题目描述实现一个队列的数据结构,使其具有入队列、出队列、查看队列首尾元素、查看队列大小等功能方法一:数组实现import java.util.ArrayList;class MyQueue<T>{ private ArrayList<T>arr=new ArrayList<>(); /**队列头*/ private int front; /**队列尾*/ private int rear; public MyQ

2020-08-24 16:00:34 152

原创 Java算法——13实现栈

题目描述实现一个栈的数据结构,使其具有以下方法:压栈、弹栈、取栈顶元素、判断栈是否为空以及获取栈中元素个数。方法一:数组实现数组实现栈,栈空间是一段连续的空间。import java.util.ArrayList;class MyStack<T> { private ArrayList<T>arr; /**数组中存储元素的个数*/ private int stackSize; public MyStack(){ //初始

2020-08-24 15:58:45 180

原创 【面试】Java基础知识11-20

文章目录11 String \StringBuffer\StringBuilder的区别是什么?String为什么是不可变的12 自动装箱和拆箱13 在一个静态方法内调用一个非静态成员为什么是非法的14 在Java中定义一个不做事且没有参数的构造方法的作用15 import java和javac有什么区别16 接口和抽象类的区别是什么17 成员变量和局部变量的区别有哪些18 创建一个对象用什么运算符?对象实体与对象引用有何不同?19 什么是方法的返回值?返回值在类的方法里的作用是什么20 一个类的构造方法的

2020-08-24 15:56:25 317

原创 Java算法——12展开链接列表

文章目录题目描述解题思路题目描述给定一个有序链表,其中每个结点也表示一个有序链表,结点包含两个类型的指针:(1)指向主链表中下一个结点的指针(下面代码中称为“正确”指针)(2)指向此结点头的链表(下面代码中称为“down”指针)所以链表都被排序。如:3 → 11 → 15 → 30↓ ↓ ↓ ↓6 21 22 39 ↓ ↓ ↓ 8 50 40↓ ↓ 31 55实现一个函数flatten(

2020-08-23 16:15:15 197

原创 Java算法——11判断两个单链表(无环)是否交叉

文章目录题目描述解题思路算法性能分析题目描述单链表相交指的是两个链表存在完全重合的部分,如下:在上图中,这两个链表相交于结点5,要求判断两个链表是否相交,如果相交,找出相交处的结点。解题思路方法一:Hash法如果两个链表相交,那么它们一定会有公共结点,由于结点的地址或引用可以作为结点的唯一标识,因此,通过判断两个链表中的结点是否有相同的地址或引用来判断链表是否相交。首先遍历链表h1,把遍历到的所有结点的地址存放到HashSet中;接着遍历链表h2,每遍历一个结点,就判断这个结点的地址是否

2020-08-23 16:13:44 533

原创 Java算法——10在给定单链表中某个结点的指针的情况下删除该结点

文章目录题目描述解题思路算法性能分析题目描述假设给定链表1→2→3→4→5→6→7中指向第5个元素的指针,要求把结点5删掉,删除后链表变为1→2→3→4→6→7。解题思路要删除单链表中的一个结点p,首先需要找到结点p的前驱结点pre,然后通过pre.next=p.next来实现对结点p的删除。此题由于无法获取结点p的前驱结点,所以不能采用这种传统的方法。(1)如果该结点为链表最后一个结点,则无法删除这个结点(2)如果不是最后一个结点,则可以通过把其后继结点的数据复制到当前结点中,然后用删除后继结

2020-08-23 16:12:03 419

原创 实现多线程的四种实现方法

(1)继承Thread类,重写run方法(2)实现Runnable接口,重写run方法,将Runnable接口的实现类的实例对象作为Thread构造函数参数(3)通过Callable和FutureTask创建线程(4)通过线程池创建线程。线程池提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度(1)继承Thread类,重写run方法public class TestThread extends Thread{ public TestThrea

2020-08-22 09:23:31 1556

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除