自定义博客皮肤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 1430

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

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 180

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

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

2020-10-10 09:41:56 173

原创 JVM内存模型

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

2020-08-14 17:21:01 134

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

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

2020-08-03 16:37:20 1336

原创 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 112

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

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

2020-07-27 15:49:35 450

原创 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 1258

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

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

2020-07-19 17:14:49 212

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

1、PriorityQueue1.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 297

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

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

2020-06-04 18:32:34 282

原创 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 293

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

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

2020-05-06 14:17:27 205

原创 MySql事务以及四大特性

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

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

原创 MySql存储引擎和索引

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

2020-04-21 11:01:24 176

原创 mysql基础知识

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

2020-02-29 16:45:54 155

原创 内部类

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

2019-11-24 21:40:16 111

原创 多态实现

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

2019-11-24 20:59:16 175

原创 浅谈类加载机制

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

2019-11-24 20:48:29 118

原创 Java中异常和异常处理

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

2019-11-24 18:28:37 170

空空如也

空空如也

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

TA关注的人

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