自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树的之字形层次遍历

1、两个栈实现二叉树的层次遍历

2020-10-20 14:21:43 1491

原创 非递归方法实现二叉树的遍历

1、中序遍历 中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。 public void NiceInOrder(){ if(root == null) return;; BtNode1 ptr = root; Stack<BtNode1> st = new Stack<>(); //循环终止条件 ptr为空 栈为空 while(!st.empty() || ptr !=null){ while(ptr != null){

2020-10-12 20:01:20 210

原创 二叉树的递归遍历和创建

二叉树的创建先序中序后序遍历 1、二叉树节点类型 在这里插入代码片

2020-10-10 09:41:56 201

原创 JVM内存模型

1.程序计数器 它的作用可以看作当前线程所执行的字节码的行号指示器,占很小的内存空间,线程私有。 主要作用有两个: 字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制。 在多线程的情况下,程序计数器用于处理当前线程执行的位置,从而当前线程被切换回来的时候能够知道线程上次运行的位置。 程序计数器是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域,它的生命周期随着线程的创建而创建,随着线程的结束而死亡。 2.Java虚拟机栈 Java虚拟机栈是线程私有的

2020-08-14 17:21:01 153

原创 AIO模型介绍及代码实现

1.AIO AIO模型是Java中提供的异步非阻塞网络IO模型,如下图所示,用户进程进行系统调用后,可以处理其他逻辑,无论内核数据是否准备好,都会直接返回给用户进程,进程不会阻塞。数据准备好,内核直接复制数据到用户空间,内核向进程发送通知。 内核向用户空间拷贝数据的工作是由内核完成的而不是应用进程。 AIO需要一个连接注册读写事件和回调方法,当进行读写操作时,直接调用API的read和write方法。对应操作系统来说, 当有流数据可读时, 操作系统会将流传入到read方法的缓冲区, 然后回调相关的 Com

2020-08-03 16:37:20 1387

原创 synchronized关键字总结

1.相关知识准备 1.1Java对象内存布局 markword:用于存储对象滋生的运行数据,存储哈希码、GC分代年龄、锁类型标记、偏向锁线程ID、CAS锁指向线程LockRecord的指针等等,synchronized锁机制和这部分密切相关。 在运行期间,markword里存储的数据会随着锁标志位的变化而变化,以32位的JDK为例: 1.2CAS操作 CAS:Compare And Swap ,改变mark word中的线程id。 三个参数:目标地址1 参数值2 参数值3 比较参数2是否和目标地址1的

2020-07-30 20:31:20 132

原创 TCP传输控制协议知识总结

1.TCP协议:传输控制协议 1.1TCP协议的特点 ①面向连接。TCP提供客户端与服务器端的连接。 ②TCP的连接是点对点的。 ③可靠性。当TCP向另一端发送数据时,要求对方放回一个确认。如果没有收到对方的确认,TCP自动重传数据。 ④有序性。TCP通过给所发送的数据的每一个字节关联序列号进行排序,通过TCP连接传输的数据,无差错,不丢失,不重复。 ⑤面向字节流,并且提供流量控制。TCP总是告诉对方它能接收多少字节的数据(窗口)。 ⑥全双工。既可以发送数据也可以接收数据。 1.2TCP首部格式 源端口和

2020-07-27 15:49:35 469

原创 BIO代码实现及原理

1.相关概念1.1阻塞IO和非阻塞IO1.2同步IO和异步IO2.BIO2.1BIO介绍2.2代码实现2.3BIO通信模型以及缺点 1.相关概念 在操作系统中,程序运行的空间分为内核空间和用户空间。应用程序都是运行在用户空间的,所以它们能操作的数据也都在用户空间。 IO分两阶段(一旦拿到数据后就变成了数据操作,不再是IO): 阶段1.数据准备阶段,等待数据准备好,到达内核缓冲区(内核空间) 阶段2.内核空间复制数据到用户进程缓冲区(用户空间)阶段 1.1阻塞IO和非阻塞IO 阻塞/非阻塞关注的是程序在等待.

2020-07-25 21:25:54 1293

原创 多线程基础知识(线程创建、生命周期、相关方法、优先级)

1.线程的定义与创建 1.1线程的定义 每一个任务称作一个线程, 它是程序执行的最小单位;线程又叫做轻量级进程,可以把一个进程的资源分配和执行调度分开;线程是CPU调度的最小基本单位,各个线程既可以共享进程资源,又可以独立调度;各个线程拥有自己的栈空间 1.2线程与进程的区别 1)线程是CPU调度的最小基本单位;进程是资源分配的最小单位 2)进程有独立的地址空间,一个进程崩溃后在保护模式下不会对其他进程产生影响;线程没有独立的地址空间,只是一个进程中的不同执行路径,有自己的堆栈和局部变量,一个线程死掉就等于

2020-07-19 17:14:49 232

原创 优先级队列的相关方法实现

1、PriorityQueue 1.1PriorityQueue介绍 public class PriorityQueue extends AbstractQueue implements java.io.Serializable //内部类继承关系 private final class Itr implements Iterator { //父类继承关系 public abstract class AbstractQueue extends AbstractCollect

2020-06-21 18:43:16 324

原创 Map接口下的集合(HashMap、TreeMap、HashTable、WeakHashMap)分析比较

1.Map接口下的集合 Map接口下集合的特点: (1)Map接口没有继承Collection public interface Map //List接口 public interface List extends Collection (2)存储一组键值对象,提供key(键)到value(值)的映射,键不能重复,元素的存储位置由键决定,值可以重复 2、HashMap public class HashMap extends AbstractMap implements Map, Cloneab

2020-06-04 18:32:34 307

原创 MyHashMap实现(基于JDK1.7HashMap源码的分析)

添加元素: ①哈希表是否初始化。没有初始化,则进行初始化操作,否则进入下一步 ②判断key值是否为空。如果为空,则将key-value的存储位置规定为数组table的第一个位置table[0];否则根据key值计算出对应的hashCode,再计算出对应的数组下标。 ③遍历对应数组下标位置的链表,判断key值是否存在(重复)。如果存在key值,则用新的value值替换旧的value值,结束。 ④key值不存在,判断是否需要扩容。如果不需要扩容,则将key-value添加到table中(单链表头插法);否则进行

2020-05-23 11:16:48 317

原创 List接口下的集合(ArrayList、LinkedList、Vector)分析比较

list接口:是connection接口的子接口,也是最常用的接口。此接口对connection接口进行了大量的扩充。里面的内容是允许重复允许为空并且有序(插入顺序有序)。 1、ArrayList public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.i...

2020-05-06 14:17:27 235

原创 MySql事务以及四大特性

事务 一个事务是由一条或多条对数据库操作的sql语句所组成的一个不可分割的单元,只有当事务中的所有操作都正常执行完了,整个事务才会被提交给数据库;如果有部分事务处理失败,那么事务就回退到最初的状态。 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。 事务处理可以用来维护数据库的完整性,保证成批的 SQL语句要么全部执行,要么全部不执行。 事务用来管理 insert,...

2020-04-21 16:32:30 1270 1

原创 MySql存储引擎和索引

Mysql存储引擎 Mysql的存储引擎表示的是Mysql中数据库表的存储类型,不同存储类型,表的存储方式都不相同。 查看当前MySQL版本支持哪些引擎,可以输入以下命令: mysql> show engines\G 可以发现有很多存储引擎,这里只讨论InnoDB、MyISAM、MEMORY这三种。 一、存储引擎类型 InnoDB InnoDB的表存储成3个文件。文件的名字与表名相同。拓展...

2020-04-21 11:01:24 204

原创 mysql基础知识

1.基本概念 数据库:存储数据的仓库 数据库管理系统:管理数据库的工具,通过创建二维表(确定关系),把数据放在对应的表中; MySQL,sql server :关系型数据库 redis:非关系型数据库 通过常识+范式 --》创建二维表,确定关系 数据库系统(MySQL,sql server):是一个定义数据,管理和维护数据的软件,由数据库、数据库管理系统、应用开发工具等构成;数据库管理系统通过S...

2020-02-29 16:45:54 177

原创 内部类

1、定义 内部类是一种嵌套的结构关系,在一个类的内部除了属性和方法外还可以继续定义一个类结构,这样就使得程序的结构定义更加灵活 public class OutClass{ //OutClass.class class InterClass{ //OutClss$InterClass.class 外部类名$内部类名.class } } 2、类型四种(...

2019-11-24 21:40:16 137

原创 多态实现

(一)多态 1、定义 一个函数名根据对象的不同对应有不同的实现 2、作用 消除类型之间的耦合关系 3、类型 对于面向对象,多态分为编译时多态和运行时多态,其中编辑时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的函数,通过编辑之后会变成两个不同的函数,在运行时谈不上多态。而运行时多态是动态的,它是通过动态绑定来实现的,也就是我们所说的多态性 (二)多态的实现 1、实现条件 ①静...

2019-11-24 20:59:16 199

原创 浅谈类加载机制

(一)类加载 1、JDK提供三种类加载器 ①Bootstrap ClassLoader (启动类加载器,又称为终极类加载器) : 加载范围为jre / lib / *.jar ,该目录下所有的jar包都是运行JVM时所必须的jar包; ②Ext ClassLoader(拓展类加载器 ): 加载范围:jre / lib / ext/ *.jar ③App ClassLoader 应用类加载器 ...

2019-11-24 20:48:29 148

原创 Java中异常和异常处理

(一)异常 1、异常结构 异常是程序运行过程中所发生的意外事件,它中断指令的正常执行 2、异常的类型 父类:Throwable 两个子类:Exception、Error Error是程序无法处理的,如OutOfMemoryError,如果出现Error,java虚拟机会终止线程。 Exception又包括运行期异常和编译期异常 ①运行期异常 常见的运行期异常有ArrayIndexOutOfBou...

2019-11-24 18:28:37 189

空空如也

空空如也

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

TA关注的人

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