自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (3)
  • 收藏
  • 关注

原创 第六课 java的流IO

1 InputStreamInputStream这个抽象类是所有基于字节的输入流的超类,抽象了Java的字节输入模型。1.1 FileInputStream(1)特点【1】输入流【2】字节流【3】节点流【4】操作文件(2)常用方法底层实现基本都是调用native方法。三个核心方法,也就是Override(重写)了抽象类InputStream的read方法;1)read():直接从文件输入流中读取一个字节2)read(byte b[]):从文件输入流中读取,从0句柄开始的b.length

2020-10-28 22:23:40 228

原创 第五课 java异常

第五课 java异常1 概述2 异常的体系结构2.1 Error 错误2.1.1 AWTError2.1.2 VirtualMachineError2.2 Exception2.2.1 运行时异常(编译非检查)2.2.2 非运行时异常(编译检查)2.3 自定义异常3 异常的处理1 概述程序在运行过程中发生由于外部问题导致的程序异常事件,发生的异常会中断程序的运行。(在Java等面向对象的编程语言中)异常本身是一个对象,产生异常就是产生了一个异常对象。异常机制是指当程序出现错误后,程序如何处理。具体来说

2020-10-11 22:06:49 155

原创 第四课 集合

第四课 集合1 List1.1 ArrayList1.2 Vector1.3 LinkedList1.4 Stack2 Set2.1 HashSet1 List1.1 ArrayList(1)数据结构底层采用数组(2)特点【1】ArrayList允许空【2】ArrayList允许重复数据 【3】ArrayList有序,存入和取出的顺序一致,不是大小上的有序 【4】ArrayList非线程安全【5】适合get、set元素,不需考虑线程安全的场景(3)线程安全的解决方案【1】方法一:重写

2020-09-21 17:40:22 219

原创 第三课 面向对象基础

1类和对象的定义(1)对象是结构化数据,比如:cell(格子)(rows = 3 , col =4,color = 0x567128) ,业务上代表一件具体的事物,一切皆对象(2)类(类型,分类)类对象的分类,是对象结构模板,是对象的数据结构定义,对象有什么数据由类定义(3)new 运算符,用于分配内存创建对象,返回对象的首地址2 面向对象的特性(1)抽象性抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面,比如对于学生,我们关注学号成绩等,不关注它的身高。

2020-09-20 20:49:50 119

原创 第二课 常用的API

第三课 常用的API1 java.util包1.1 Arrays1.2 Date1.3 java.util.regex包1.3.1 Pattern1.3.2 Matcher;1.4 Calendar1.5 java集合类1.5.1 ArrayList1.5.2 Vector1.5.3 LinkedList1.5.4 Stack1.5.5 HashSet1.5.6 LinkHashSet1.5.7 TreeSet1.5.8 HashMap1.5.9 WeakHashMap1.5.10 HashTable1.5

2020-09-18 17:43:00 137

原创 第二课 递归算法

第二课 递归算法1 定义2 优缺点2.1 优点2.2 缺点2.3 注意的点3 算法实现1 定义指一种通过重复将问题分解为同类的子问题而解决问题的方法2 优缺点2.1 优点(1)使得我们思考的方式得以简化,代码也更加精炼,容易阅读(2)只要知道第一层,就可以解决全部问题2.2 缺点(1)函数的自身调用,浪费空间与时间函数的调用开销是很大的,系统要为每次函数调用分配存储空间,并将调用点压栈予以记录。而在函数调用结束后,还要释放空间,弹栈恢复断点(2)如果写发散递归还会有很多冗余的计算过程,算

2020-09-15 14:53:53 72

原创 第一课 java数据类型与运算

第一课 java数据类型1 java的数据类型1.1 八大基本类型1.1.1 整型1.1.2 浮点型1.1.3 布尔型boolean1.1.4 字符型char1.2 数据类型转换1 java的数据类型1.1 八大基本类型1.1.1 整型(1) byte【1】范围:-2^7 ~ 2^7-1,即-128 ~ 127【2】存储:8位,1字节【3】表示:数字+B(2)short【1】范围: -2^15 ~ 2^15-1,即-32768 ~ 32767【2】存储: 16位,2字节【3】表示:数字

2020-09-08 22:58:24 258

原创 第十三课 常见的非二叉树:B树、B+树、B*树

第十三课 常见的非二叉树:B树、B+树、B*树1 B树1.1 背景1.2 定义1.2.1 用阶定义:1.2.2 用度定义1.3 常用操作1.3.1 插入1.3.2 删除1.4 代码实现2 B+树2.1 定义2.2 B+树出现的原因2.3 常用操作2.3.1 插入2.3.2 删除2.4 代码实现3 B*树3.1 定义3.2 常用操作3.3 代码实现4 对比B树、B+树、B*树1 B树1.1 背景磁盘由一个单片或者一组多个盘片组成盘组,每个盘片有两个面,然后盘面上有许多称为磁道的圆圈,数据就是存储在这些

2020-09-06 23:54:11 390

原创 第十一课 常见的二叉树:基于二叉搜索树的平衡二叉树之树堆Treap

第十一课 常见的二叉树:基于二叉搜索树的平衡二叉树之树堆Treap1 定义2 特点3 旋转4 常用操作4.1 插入4.2 删除5 代码实现1 定义Treap是用来排序(Sort)的一种数据结构(Data Structure)。reap是随机查找二叉平衡树。 Treap发音为tree+ Heap。顾名思义,Treap把 BST和 Heap结合了起来。它和 BST一样满足许多优美的性质,而引入堆目的就是为了维护平衡。 Treap在 BST的基础上,添加了一个优先级。在满足 BST性质的上,Treap节点

2020-08-28 15:43:42 188

原创 第十二课 常见的二叉树:基于二叉搜索树的伸展树

第十一课 常见的二叉树:基于二叉搜索树的伸展树1 定义2 特性3 旋转3.1 旋转的条件3.2 旋转的6种情况4 代码实现1 定义伸展树(Splay Tree)是特殊的非平衡二叉查询树,对比二叉搜索树,具备一个特点:当某个结点被访问时,伸展树会通过旋转使该结点成为树根。这样做的好处是,下次要访问该结点时,能够迅速的访问到该结点。这也是基于统计学里面的一个现象,当某个结点被访问后,其有较大的概率在短时间内会再次被访问到。虽然伸展树是非平衡的二叉查询树,但任何情况下其平均操作复杂度是\large o(

2020-08-27 17:54:10 123

原创 第十课 常见的二叉树:基于二叉搜索树的平衡二叉树之替罪羊树

第十课 常见的二叉树:平衡二叉树之替罪羊树1 定义2 代码实现1 定义替罪羊树的定义:是一种二叉排序树,根节点存储了树的节点总数n和上次重建后的节点个数n上次;总能保持宽松的α高度平衡,即h<= hα + 1对于排序二叉树的根节点:(1)α的高度平衡 :h <= hα (其中 hα = log(1/α)n = -(logn/logα)),也就是(AVL,红黑树)(2)宽松α的高度平衡 :h <= hα + 1(其中hα = log(1/α)n = -(logn/logα))(3

2020-08-25 17:59:33 127

原创 第九课 常见的二叉树:基于二叉搜索树的平衡二叉树之红黑树

第九章 常见的二叉树:平衡二叉树之红黑树1 背景2 定义3 红黑树与AVL树对比4 树结构调整5 代码实现5.1 红黑树的插入5.2 红黑树的删除5.3 具体代码实现1 背景对于二叉排序树,时间复杂度最差时候会是 O(n),比如插入的元素是有序的,生成的二叉排序树就是一个链表,这种情况下,需要遍历全部元素才行。为了改变排序二叉树存在的不足,Rudolf Bayer 在 1972 年发明了另一种改进后的排序二叉树:红黑树,他将这种排序二叉树称为“对称二叉 B 树”,而红黑树这个名字则由 Leo J. Gu

2020-08-20 14:40:28 122

原创 第八课 常见的二叉树:基于二叉搜索树的平衡二叉树之AVL树

第八章 常见的二叉树:平衡二叉树之AVL树1 平衡二叉树的定义2 平衡和不平衡3 常见的平衡二叉树3.1 AVL3.1.1 定义3.1.2 维护平衡3.1.3代码实现1 平衡二叉树的定义平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用算法有红黑树、AVL树等。在平衡二叉搜索树中,我们可以看到,其高度一般都良好地维持在O(log2n),大

2020-06-30 16:14:13 177

原创 第七课 常见的二叉树:二叉搜索树

第七章 常见的二叉树:二叉搜索树1 定义2 性质3 代码实现1 定义又称二叉排序树或者二叉查找树。它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值2 性质(1)若它的左子树不为空,则左子树上的所有节点的值都小于它的根节点的值;(2)若它的右子树不为空,则右子树上所有节点的值都大于它的根节点的值;(3)其他的左右子树也分别为二叉查找树;(4)二叉查找树是动态查找表,在查找的

2020-06-29 15:59:57 505

原创 第六课 常见的二叉树:哈夫曼树

第六章 常见的二叉树:哈夫曼树1 定义2 特点(思想)3 相关概念4 典型应用5 构建哈夫曼树6 代码实现1 定义最优二叉树, 又叫赫夫曼树、哈夫曼树、霍夫曼树,给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。2 特点(思想)哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近3 相关概念(1)路径长度:从树中一个节点到另一个节点之间的分支构成两个节点之间的路径,路径上分支数目称为路径长度,比

2020-06-29 14:40:39 459

原创 第五课 常见的二叉树:线索二叉树

第五章 常见的二叉树:线索二叉树1 定义2 特点3 线索化二叉树3.1 前序线索化二叉树3.2 中序线索化二叉树3.3 后序线索化二叉树4 代码实现1 定义线索二叉树相比普通二叉树而言,就是利用了普通二叉树的空闲内存,记录了某些结点的前趋和后继元素信息,存在n个结点的二叉链表必定存在n + 1个空指针域,线索二叉树就是利用这n+1个空间来存储2 特点(1)利用了这些浪费的空指针域(2)利用好前趋结点和后继结点的信息,可以更快的进行前,中,后序等遍历(3)特殊的双向链表:假如A指向B,A存的B孩子

2020-06-29 14:32:45 370

原创 第四课 树和二叉树

第四章 树和二叉树1 树的定义和相关概念1.1 定义1.2 树的相关概念2 二叉树2.1 定义2.2 二叉树的性质2.3 二叉树的存储结构(重点)2.3.1 顺序存储结构2.3.2 链式存储结构3 遍历二叉树和线索二叉树3.1 遍历二叉树3.2 线索二叉树4 树和森林4.1 树的存储结构4.1.1 树节点的存储结构4.1.2 数的存储结构4.2 将树转换成二叉树4.3.森林转换成二叉树4.4 树的遍历4.4.1 遍历4.4.2 常用方法4.4.3 结论4.5 二叉树的代码实现4.5.1 二叉树的顺序存储结构

2020-06-23 10:25:52 391

原创 第三课 线性表中的常用结构:栈和队列

第三章 栈和队列1 栈1.1 栈的定义1.2 顺序存储栈(顺序栈)1.3 链栈2 队列2.1 队列的定义2.2 顺序队列2.3 循环队列2.4 链队列1 栈1.1 栈的定义栈(Stack)是限制在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶(Top),另一端为栈底(Bottom)。当表中没有元素时称为空栈。假设栈S=(a1,a2,a3,…an),则a1称为栈底元素,an为栈顶元素。栈中元素按a1,a2,a3,…an的次序进栈,退栈的第一个元素应为栈顶元素。因此,栈的修改是按

2020-06-22 11:54:25 322

原创 第二课 线性表

第二章 线性表1 线性表的类型定义1.1 线性表的逻辑结构1.2 线性表的物理结构2 线性表的顺序表示和实现2.1 顺序表2.1.1 定义2.1.2 基本操作3 线性表的链式表示和实现3.1 动态(单)链表3.1.1 定义3.1.2 基本操作3.2 静态(单)链表3.2.1 定义3.2.2 基本操作3.3 循环(单)链表3.3.1 定义3.3.2 基本操作4 双向链表4.1 定义4.2 基本操作1 线性表的类型定义1.1 线性表的逻辑结构线性表是一种典型的线性结构。 数据的运算是定义在逻辑结构上的,

2020-06-19 16:46:29 206

原创 第一课 数据结构导论

第一章 数据结构导论1 什么是数据结构2 有关概念和术语3 数据结构的运算:算法和算法分析3.1 算法3.2 算法设计的要求3.3 算法效率的度量3.4 算法的存储空间的需求1 什么是数据结构就是研究数据的逻辑结构和物理结构以及他们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。比如集合这种结构,定义了集合中数据的表示和存储和数据间的关系,并定义了集合的运算,比如排序,运算之后仍然是集合。2 有关概念和术语(1)数据所有能被输入到计

2020-06-19 11:39:42 325

原创 第一课 排序算法总结

文章目录1 排序算法的分类1.1 内排序1.2 外排序2 排序算法的稳定性3 时间复杂度4 空间复杂度5 排序算法的分析5.1 插入排序5.1.1 直接插入排序5.1.2 二分插入排序5.1.3 希尔排序5.2 选择排序5.2.1 简单选择排序5.2.2 堆排序5.3 交换排序5.3.1 冒泡排序5.3.2 快速排序5.4 归并排序5.5 基数排序(radix sort)或者叫桶排序6 总结1 排序算法的分类(1)在排序过程中,全部记录存放在内存,则称为内排序,(2)如果排序过程中需要使用外存,则称为

2020-06-19 00:51:05 165

javaSE.rar

java基础相关学习笔记和代码,包括java se、java web、java集合、java多线程、运算符、servlet、jsp、

2020-09-07

设计模式(java).rar

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、 代码设计经验的总结。 设计模式使代码编制真正工程化,设计模式是软件工程的 基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很 多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在 我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应 用的原因

2020-06-15

数据结构(java实现).rar

研究数据的逻辑结构和物理结构以及他们之间相互关系,并对这种结构定义相应的 运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。比如集合这种 结构,定义了集合中数据的表示和存储和数据间的关系,并定义了集合的运算

2020-06-15

空空如也

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

TA关注的人

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