自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM | 内存模型

JVM内存划分:方法区(线程共享):存储常量、静态变量、JIT(即时编译器)编译后代码也在方法区存放堆内存(线程共享):GC垃圾回收的主要场地程序计算器:当前线程执行的字节码的位置指示器Java虚拟机栈(栈内存):保存局部变量,基本数据类型以及堆内存中对象的引用变量本地方法栈(C栈):JVM提供使用native方法的服务详细介绍1. 程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节

2021-04-02 16:21:54 431

原创 数据结构 | 红黑树 RBTree

1. 概念红黑树的插入删除操作需要时刻维护它的五大性质:①每个节点都有颜色,不是黑色就是红色②null表示空节点(叶子节点的left、right地址域)③根节点是黑色④不能出现连续的红色节点⑤从根节点到任意叶子节点路径上的黑色节点数量是相同的根据红黑树性质,节点子树高的不能超过节点低的2倍 AVL 红黑树 是否是平衡树 自平衡树 不是自平衡树 insert插入

2021-03-28 14:55:10 161 1

原创 数据结构 | 平衡二叉树 AVL

1. 概念平衡二叉树是一种特殊的二叉排序树,其左右子树都是平衡二叉树。所谓平衡,即节点的左右子树高度差不超过1。平衡因子=左子树高度-右子树高度对于平衡二叉树,树中所有节点的平衡因子的取值只能是-1、0、1三个值2. 节点失衡原因及平衡调整问题左旋/** * 40 node 50 * \ 左旋 / \ * 50 child -》 40 60 * / \

2021-03-28 14:54:53 360

原创 数据结构 | 二叉搜索树 BST

一、概念定义:树是一种非线性的数据结构,如图所示就是一棵树,它是若干结点的集合,是由唯一的根(结点A)和若干棵互不相交的子树组成,其中每一棵子树又是一棵树。当树的结点数目为0时,称这棵树为空树基本术语树...

2021-03-28 14:54:36 186

原创 基础 | 网络编程

1.计算机网络的相关概念(1)计算机网络通过传输介质、网络协议和通信设施,将分散在不同位置的计算机互连,实现资源共享和数据传输的系统。(2)网络编程又称Socket编程,是指在操作系统,网络管理软件,网络通信协议的管理和协调下,使用计算机编程语言来实现计算机之间的资源共享和信息传递。2.计算机网络的三要素:(1)IP地址IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一...

2020-02-06 13:33:47 318

原创 IO流 | IO流的应用举例

1.将源文件路径下内容拷贝到目的路径文件中/** * 源文件路径拷贝到目的路径文件中 * @param srcFile 源文件 * @param desFile 目的文件(目录/文件) */public static void copyFile(String srcFile,String desFile){ FileInputStream inputStream=null; ...

2019-12-01 19:55:42 346

原创 IO流 | DataInputStream和DataOutputStream

过滤器字节流:FilterInputStream:过滤器字节输入流FilterOutputStream:过滤器字节输出流它们的主要用于封装其他的输入输出流,为它们提供一些额外的功能。具有以下实现类:以下以FilterInputStream做主要分析:一、FilterInputStream1. 源码分析(1)继承关系 该类继承自InputStream父类(表示该类可实现父类...

2019-12-01 19:55:23 1203

原创 集合 | 总结

Java集合框架图相应接口的的具体实现类:一、List接口:ArrayListlinkedListArrayList和LinkedList的异同点:1.不同点(1)ArrayList继承自 AbstractList类,LinkedList继承自 AbstractSequentialList类、实现Deque接口(具有特有的一些方法:addFirst/addLast/getFir...

2019-12-01 19:20:03 310

原创 集合 | 基于小根堆简单自定义实现优先级队列

知识补充小根堆:每个节点的值小于其左右孩子节点的值大根堆:每个节点的值大于其左右孩子节点的值根据源码可知,优先级队列的存储是基于数组实现,而其相关操作是建立在堆(默认小根堆)的基础上。优先级队列中最核心的方法就是插入/删除/获取操作1.add()操作基本思路:①每次都将value插入数组有效末尾位置index,找到它的父节点②若value值小于父节点值,从上往下 进行调整 ...

2019-12-01 19:19:20 347

原创 集合 | Hashtable源码分析

一、继承关系public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.SerializableHashtable继承Dictionary抽象类,实现Map接口,支持克隆,支持序列化二、基本属性//被transie...

2019-12-01 19:02:04 155

原创 集合 | LinkedList源码分析

一、继承关系public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable由继承关系知:LinkedList继承自 AbstractSequenti...

2019-11-30 15:52:45 156

原创 集合 | ArrayList源码分析

一、继承关系public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable由继承关系知:ArrayList继承自AbstractList类,实现List、RandomAcce...

2019-11-30 14:35:33 178

原创 集合 | HashMap源码分析(jdk1.7版本)

一、HashMap相关概念及概述1.哈希函数:通过查找关键字key来获得所需记录的存储位置。记录的存储位置和其关键码key之间建立一个确定的对应关系f,使每一个key对应一个f(key)生成哈希函数常用的两种方法:(1)直接寻址法——f(key)=a*key+b(a,b为常数)(2)除留余数法——f(key)=key mod m(m<哈希表长度p)2.哈希表:通过哈希函数把...

2019-10-31 19:22:02 220

原创 基础 | 7大排序算法java总结(下)

6.归并排序基本思想:利用递归,将一个数组分为两块,两块再分两块……最终只需保证两块内数据有序即可代码如下:public static void mergeSort(int[] arr) { mergeProcess(arr, 0, arr.length - 1);}public static void mergeProcess(int[] arr, int left,...

2019-10-21 19:43:19 176

原创 基础 | 7大排序算法java总结(上)

常见的排序算法:1.冒泡排序基本思想:两两比较相邻数据,若为倒序,则交换,知道没有倒序数据为止代码如下:public static void bubbleSort(int[] arr){ for(int i=0;i<arr.length-1;i++){ //趟数 for(int j=0;j<arr.l...

2019-10-11 18:30:57 190

原创 JVM | 简单总结类加载过程

类的加载过程:一、装载阶段(加载过程)装载过程的产物: class对象JDK提供三种类加载器:BootstrapClassLoader(启动类加载器)ExtClassLoader(扩展类加载器)AppClassLoader(应用类加载器)每一种类加载器都有其指定的类加载路径(1)BootstrapClassLoader(启动类加载器又称根加载器、引导类加载器),其主要加载路径为...

2019-10-08 15:38:34 295

原创 栈与队列 | 常见习题总结(下)

4.模拟计算器 实现四则运算(1)中缀表达式转后缀表达式什么是中缀表达式呢?我们平时做数学题所列的标准四则运算表达式,例如:“9+(3-1)×3+8÷2” 就是一个中缀表达式中缀表达式转后缀表达式的结果又是什么样子的呢?“9 3 1 - 3 × + 8 2 ÷ +”栈的作用: 进出运算符号转换规则:从左到右遍历中缀表达式的每一个数字和符号,若是数字,直接输出...

2019-10-04 18:08:24 494

原创 栈与队列 | 常见习题总结(上)

首先我们需要知道栈和队列的特性,即 栈:先进后出;队列:先进先出,通过引入数组中的数据,实现:1.两个栈实现一个队列思路: 定义两个栈stack1、stack2,将数组中的数据依次置入stack1中,根据栈先进后出的特性,再将其依次出栈在入栈至stack2中,以实现队列。代码如下: //两个栈实现一个队列public static<T> void twoStack...

2019-09-28 14:35:12 401

原创 单链表 | 常见习题总结

1.输出倒数第k个节点思路: 统计链表节点的个数length,让p从头节点遍历走length-k步,即得到倒数第k个节点的位置代码如下:public int getLength(){ int count=0; for(Entry p=headEntry;p!=null;p=p.getNext()){ count++; } return count;}...

2019-09-20 16:55:33 342

原创 数据结构 | 单链表的增删改查(带头节点)

Entry类封装节点属性,包括value域及next域

2019-09-20 16:49:07 555

原创 数据结构 | 单链表的增删改查详解(不带头节点)

单链表: 是一种链式存取的数据结构,用一组任意地址空间(即存储单元)来存放线性表的数据元素。单链表中的每个数据都以节点的形式来表示,每个节点都是由值域及指针next域构成,其中值域保存当前节点的数据值,next域保存下个节点的地址。单链表的结构如下所示:下面简单介绍下链表“增删改查”的原理(附代码):(1)头插: 将新节点newEntry的next域链接到头节点的地址中,同时更新头节点...

2019-09-17 14:07:59 564

原创 基础 | 数组的深浅拷贝

一、数组的定义JVM中包含五部分:Java栈,Java堆,程序计数器,方法区和本地方法栈Java栈: 函数调用,函数定义的基本数据类型的变量和引用变量都在栈内存中Java堆:存放由new创建的对象和数组以分配内存,通过访问arr的地址直接找到堆上的内存。1.一维数组(1)int[] arr={1,2,3,4,5};(2)int[] arr=new int[]{1,2,3,4,5};(...

2019-09-16 20:28:51 694

原创 基础 | 数据类型

Java是强类型语言,即每个变量和对象都必须具有声明类型。由于不同数据存储时所需的空间大小各不相同,故对不同数据采用不同的数据类型来进行区分。数据类型结构图:一、数据类型1.基本数据类型基本数据类型在声明变量后会立刻分配数据的内存空间,在其中存储的是数据值,数据占用的内存空间大小是固定的,与软硬件环境无关,这两点保证了java的跨平台性和安全性。基本数据类型存储需求和表示范围:注...

2019-09-12 13:48:11 233

原创 循环报数游戏,有n个人,每人编号从1开始,依次编号到n。从1到3报数,报3者退出游戏,得出最后获胜人的编号

public static int circle(int n){ int[] arr=new int[n]; for(int i=0;i<arr.length;i++){ arr[i]=i+1; } int count=0;int src=n;int index=0;...

2019-07-20 16:40:08 1011

转载 java中关于反射的部分内容

一、反射的概述java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象。反射就是把java类中的...

2019-07-14 13:13:58 216

原创 转圈和旋转打印二维数组

public class CircleMatrix { public static void main(String[] args) { int[][] matrixDemo={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; printMatrix(matrixDemo); ...

2019-05-31 16:00:56 723

原创 输入一个英文句子,反转句子中各单词顺序,但单词内字符的顺序不变。

例:输入“i am a student”,输出"student a am i"。思路:1.将整个字符串倒置2.以空格为界,倒置字符public class ChangeOrder { //交换字符 public static void swap(char[]arr,int i,int j){ char temp; while(j>i){...

2019-05-31 15:49:00 1241

原创 给一个不多于n位的正整数,要求:1.输出它是几位数 2.分别输出每一位数字 3.逆序输出各位数字

给一个不多于n位的正整数,要求:1.输出它是几位数2.分别输出每一位数字3.逆序输出各位数字,如: 原始数据:123,应输出:321//1.判断位数public static int getBit(int number){ int count = 0; while(number!=0){ number/=10; count++; ...

2019-05-19 15:50:16 809

原创 输入三个数比较大小并输出最大值

public class CompareSize { public static void main(String[] args){ //方法1 //最优方案 System.out.println("请输入三个数:"); Scanner scanner = new Scanner(System.in); int a = sc...

2019-05-13 21:12:36 7715

空空如也

空空如也

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

TA关注的人

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