自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 JVM学习笔记(三)

垃圾回收机制

2022-06-17 20:01:44 130 1

原创 JVM学习笔记(二)

堆 一个JVM实例只存在一个堆内存,堆也是java内存管理的核心区域 java堆区在jvm启动的时候即被创建,大小也就确定下来了。是JVM管理的最大一块内存空间(空间可以调节) 所有的线程共享java堆,在这里还可以划分线程私有的缓冲区 数组和对象可能永远不会存储在栈上,因为栈帧中保存引用,这个引用指向对象或者数组在堆中的位置 在方法结束后,堆中的对象不会马上被移除,仅仅在垃圾收集的时候才会被移除内存细分现代垃圾收集器大部分都基于分代收集理论设计,堆空间细分为jav...

2022-05-28 18:15:50 438

原创 JVM学习笔记(一)

虚拟机所谓虚拟机就是一台虚拟的计算机。他是一款软件,用来执行一系列虚拟计算机指令。虚拟机可以分为系统虚拟机(WMWare)和程序虚拟机(java虚拟机)java虚拟机就是二进制字节码的运行环境JVM的位置【用户User【字节码文件【JVM【操作系统(windows/Linux)【硬件】】】】】JVM的整体结构java编译器输入的指令流基本上是一种给予栈的指令集架构,另一种指令集架构则基于寄存器的指令集架构两者区别:基于栈式架构的特点:设计和实现更简单,适用..

2022-05-17 23:05:28 116

原创 Leetcode刷题——扫描线

56. 合并区间以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].class Solution { ..

2022-04-10 23:55:13 356

原创 自平衡二叉搜索树 (AVL) java实现

AVL树本质是一颗二叉搜索树,带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1。如下可能存在不同的不平衡四种情况:不平衡结点的左侧的左侧的解决方法:不平衡结点的右侧的右侧的解决办法:接口实现public interface Map<K,V> { //将键值对key-value加入映射 如果已存在则为修改 public void put(K key, V value); //删除指定key的键值对 并返回对应...

2022-03-04 19:45:14 405

原创 二叉搜索树代码 java实现

若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势。二分搜索树 - 不能存储重复的元素 容易产生极端情况(斜树)定义二分搜索树的结点信息 private class Node { public E e; //数据域 public Node left;

2022-03-04 17:51:46 148

原创 数独问题(java)

数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。public class Sudoku { private static int[][] board = new int[9][9]; public static void main(String[] args) throws IOException{ rea

2022-02-15 21:28:42 497

原创 N皇后问题(java)

n皇后问题是一个以国际象棋为背景的问题:在n×n的国际象棋棋盘上放置n个皇后,使得任何一个皇后都无法直接吃掉其他的皇后,即任意两个皇后都不能处于同一条横行、纵行或斜线上。我们通过回溯的方法将所有可能的情况遍历一遍假设现在有一个4*4的棋盘我们从第一行开始遍历放入棋盘判断上、右上、左上是否有棋子(向下无需遍历,我们从上向下遍历)若在遍历过程中一整行都没有可放入的格子则返回上一列继续向后遍历直至每一行都有正确格子循环上述过程代码实现public cla...

2022-02-15 21:16:44 9838

原创 分支回溯——迷宫问题

现有一个9*9的迷宫格子,我们需要从Enter找到Exit,将其存入一个9*9的二维数组内,0代表可以通过的路,1代表墙(不可通行)同时我们在创建一个9*9的二位布尔数组,进行后续返回用进入迷宫(1,0)开始循环方向看是否有墙(循环顺序为上、右、下、左),若能通过则在布尔数组内返回为true循环遍历可行后入栈,如果走到 (1,3)上、下‘、左都遍历完后且无法通行,返回至(1,4),且(1,4)之前通过(布尔数组内为true),则弹栈且返回false表示此路已经走过。不断xun...

2022-02-12 17:34:21 290

原创 利用分支回溯的思想 实现棋盘覆盖问题

在一个2^k * 2^k(k > 0)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。先让特殊方格在棋盘中可能出现的位置有4^k种,因而有4^k种不同的棋盘。棋盘覆盖问题要求用4种不同形状的L型骨牌覆盖给定棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重新覆盖代码实现:public class ChessBoardCoverage { private static int BOARD_SIZE = 8; private ...

2022-02-10 18:04:53 85

原创 双向循环链表代码

双向链表也叫双链表,是链表的一种,它的每个数据结中都有两个指针,分别指向直接后驱和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便的访问它的前驱结点和后驱结点。易班我们都称为双向循环链表public class LinkedList<E> implements List<E> , Dequeue<E> , Stack<E> { @Override public void addFirst(E element) { .

2022-02-09 15:18:53 231

原创 循环链表以及其引用逢七过游戏

循环链表:尾指针指向头public class LinkedSinglyCircularList<E> implements List<E> { //定义结点对象 private class Node{ E data; //数据域 Node next; //指针域 public Node(){ this(null,null); } public Node(

2022-02-08 16:57:36 2562

原创 动态(单)链表代码实现

为了表示每个数据元素ai与其直接后继续元素ai+1之间的逻辑关系,对数据元素ai来说,处理存储本身的信息之外,还需要存储一个指示其直接后继的信息。我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。n个结点链结成一个链表,即为线性表的链式存储结构,因为次链表的每个结点中只包含一个指针域,所以叫做单链表。头结点与头指针头结点是指链表中的第一个结点,有真实头结点和虚拟头结点之分真实头结点:其第一个结点用于存储数据虚拟头结点:其第一个结点不许存储数据头指针:仅仅是一个引

2022-02-08 16:27:49 234

原创 利用线性表和栈实现 中缀表达式转后缀表达式 并进行计算

中缀表达式转后缀表达式

2022-01-22 14:38:54 292

原创 利用栈实现中缀表达式进行计算

public class InfixCalculator { public static void main(String[] args) { String expression = "(10+20/2*3)/2+8"; try { int result = evaluateExpression(expression); System.out.println(result); }catch (Exce.

2022-01-22 14:15:33 290

原创 利用栈实现十六进制与十进制之间的转化

//十进制 转化为 十六进制public class DexToHex { public static void main(String[] args) { int num = 654321; ArrayStack<String> stack = new ArrayStack<>(); while(num != 0){ int a = num % 16; if (a < 10){.

2022-01-22 14:09:59 858

原创 双端栈的实现

public class ArrayDoubleEndStack<E> { private E[] data; //存元素的容器 private int ltop; //左端栈的栈顶 ltop == -1 左端栈为空 ltop + 1 左端栈中的元素个数 private int rtop; //右端栈的栈顶 rtop == len 右端栈为空 len - rtop 右端栈中的元素个数 private static int DEFAULT_SIZE = 10; /.

2021-11-05 17:15:02 105

原创 数据结构与算法--栈的实现

栈是一个特殊的线性表(先进后出 后进先出)线性表的实现:https://blog.csdn.net/m0_49201977/article/details/120607659?spm=1001.2014.3001.5502实现栈的接口public interface Stack<E> extends Iterable<E>{ public int size(); public boolean isEmpty(); public void push

2021-11-05 17:12:49 91

原创 java:File与IO流

在java中,计算机中所有的文件和目录都用File这个类描述,IO input与output对文件进行数据的写入与读取。File类会自动甄别文件系统路径Linux/Windows,因为Linux/Unix/Windows/MAC这些操作系统中 路径分割符是不统一的,当我们不确定程序所运行的系统环境 如果需要用到文件路径 路径分割符采用File自带的separator方法File:方法 说明 exist() 判断文件是否存在 getAbsolutePath() 打印文件的

2021-10-11 20:45:51 73

原创 java:集合知识点整理

Collection接口:collection是最基本的集合接口,一个Collection代表一组object,集Collection的元素,java不提供直接继承自Collection的类,指提供继承与的子接口(如list和set)collection接口存贮一组不唯一,无序的对象。List接口:(有序、可重复)(1)ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素。(2)Vector:底层数据结构是数组,查询快,增删慢,线程安全...

2021-10-11 17:58:36 186

原创 java:异常知识点整理

一、什么是异常?在一个程序执行期间出现错误,它中断正在执行程序的正常指令流,程序的控制权转移到异常处理器。程序错误分为三种:1.编译错误;2.运行时错误;3.逻辑错误。(1)编译错误是因为程序没有遵循语法规则,编译程序能够自己发现并且提示我们错误的原因和位置。调式起来比较容易。(2)运行时错误是程序通过语法错误检测,但是运行的时候出现错误,导致程序被迫终止,此类错误有特定的发生条件,因此能够准确的定位错误代码段,因而调试也比较方便。(3)逻辑错误是因为程序没有按照预期的逻辑顺序执行。异常也

2021-10-10 14:38:19 126

原创 java常用类(3)

Object类object类是所有类的父类,也就是说任何一个类在定义时,如果没有明确地继承一个父类,那它就是Object类的子类。object类提供无参构造方法,之所以提供这样的无参构造,是因为在子类对象实例化时都会默认调用父类的无参构造方法,这样在定义类时即使没有明确要求父类为object,读者也不会感觉代码的强制性要求。方法 解释 equals() 比较两个对象是否相等,true参数相等,默认比较的时地址值 hashCode() 返回该对象的散列码值 toStrin

2021-10-10 13:33:58 37

原创 java常用类(2)

String类java.lang.Object java.lang.String String类表示的字符串。java程序中的所有字符串,如 "abc",实现这个类的实例。 字符串是常量,它们的值不能被创建后改变。支持可变字符串字符串缓冲区。因为字符串对象是不可改变的,所以它们可以被共享。例如: String str = "abc"; 相当于: char data[] = {'a', 'b', 'c'}; String st.

2021-10-06 22:19:27 44

原创 java常用类(1)——正则表达式

正则表达式import java.util.regex.Matcher;import java.util.regex.Pattern;public class Regexp { public static void main(String[] args) { String string ="Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++" + "里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简

2021-10-05 20:48:31 190

原创 数据结构与算法--线性表的实现(代码)

实现线性表接口//线性表的接口定义 继承了迭代接口Iterablepublic interface MyList<E> extends Iterable<E>{ public void add(E element); public void add(int index, E element); public void remove(E element); public E remove (int index); public E get

2021-10-04 20:28:12 189

原创 牛客刷题知识点整理(1)

1.关于容器下面说法正确的是?()A.列表(List)和集合(Set)存放的元素都是可重复的。B.列表(List)和集合(Set)存放的元素都是不可重复的。C.映射(Map)<key,value>中key是可以重复的。D.映射(Map)<key,value>中value是可以重复的。正确答案:D解析:List底层是数组存储数据,有序、可重复的 set底层是HashMap,无序、不可重复的set在添加元素的过程就是调用ma...

2021-10-03 14:54:25 405

原创 面向对象知识点整理

在学习C语言的时候,老师和我们说它是一门面向过程的语言那么面向对象与面向过程之间有什么区别呢?面向过程就是自己干面向对象就是别人干举例:我们去吃饭重点 饭是怎么来的自己做饭:买菜-洗菜-切菜-炒菜——面向过程 这种事情至始至终都是我们自己解决问题1.我们处于执行者2.相对耗费时间、精力,做出来的结果也不一定是最优的点外卖/去食堂:面向对象——这件事是由别人去做的,我们只需要等待结果1.我们处于指挥者2.相对节省时间、精力,做出来的结果一般是可观的三大特征1

2021-10-02 14:05:44 88

原创 Leetcode练习1

1662. 检查两个字符串数组是否相等class Solution { public boolean arrayStringsAreEqual(String[] word1, String[] word2) { StringBuffer str1 = new StringBuffer(); StringBuffer str2 = new StringBuffer(); for(int i = 0; i < word1.length; i

2021-09-19 20:57:14 55

原创 JAVA入门笔记

1.1 关键字、标识符和注释关键字: key word 被高级编程语言赋予特殊含义的一些英文单词,特点 都是小写字母 不能随便使用、不是关键字,但也是具有特殊含义的一些单词,像String,system都是java内置类,像这种java自带类我们也不能随便使用标识符: 指的是再程序中我们程序员为一些数据起的名称,自定义名称类名,变量名,函数名(主函数的名称main虽然不是关键字 本身标识符 但是比较关键 对于jvm主函数只认main)起名规则:1.由数字、字母和下滑线_和美元符$组成

2021-07-20 22:47:23 105

原创 JDK安装

登录甲骨文官网Oracle | Integrated Cloud Applications and Platform Services选择首页中product选择Java进入界面后选择download先版本推荐java se 8和java se 11因为楼主下载的是java se 8后续演示均为该版本 11的下载也是基本一样的点击进入界面 向下拖动 可以看到windows x64(x86 不稳定 看个人需求)点击后需要注册 按照要求注册就可以了!!...

2021-07-20 18:51:38 57

TCPServer02.java

TCPServer02.java

2021-10-17

空空如也

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

TA关注的人

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