- 博客(118)
- 收藏
- 关注
原创 Java异常
感谢原博文章目录Java异常架构与异常关键字Java 异常架构1. Throwable2. Error(错误)3. Exception(异常)运行时异常编译时异常4. 受检异常和非受检异常受检异常非受检异常Java 异常关键字Java异常处理常见的异常处理方式抛出异常捕获异常声明异常自定义异常异常处理的流程面试题Error 和 Exception 的区别是什么?运行时异常和一般异常(受检异常)的区别是什么?JVM 是如何处理异常的?(对比异常处理的流程)throw 和 throws 的区别是什么?fina
2020-07-29 12:36:59
820
原创 JVM、GC(垃圾回收机制)、类加载器 学习并总结
原博文章目录JVMJVM 的作用JVM 的主要组成及其作用JVM 的运行时内存关于深拷贝和浅拷贝内存泄漏异常Java会存在内存泄漏吗?请简单描述垃圾回收机制简述下Java的垃圾回收机制 GC强引用、软引用、弱引用、虚引用怎么判断对象是否可以被回收?常见的垃圾回收算法标记-清除算法复制算法标记-整理法分代收集算法JVM 的垃圾回收器对象优先分配在伊甸区大对象和长期存活的对象直接进入老年代虚拟机的类加载器什么是类加载器?类加载器有哪些?双亲委派原则JVMJVM 的作用在早期的 Java 编程中,同一个项
2020-07-25 20:43:41
430
1
原创 Http篇 + Servlet 篇
文章目录HttpHttp 原理认识URLurlencode 和 urldecodeHttp 协议格式Http 的方法Http 状态码Http 创建Headercookie 和 session背景cookieCookie 对象sessionSession 对象cookie和session的区别一旦本地禁止 cookie 怎么做?Servlet理解 ServletServlet 的生命周期问答题Http 的报文段是什么样的?Http 的请求报文段Http 响应Http 1.0 和 Http1.1 的区别 / 长
2020-07-24 13:59:03
892
1
原创 TCP/IP篇(又是一次整理TCP/IP)
文章目录计算机网络体系结构分层OSI 七层模型OSI 七层模型特性OSI 七层模型各层的功能特点IOS 七层网络模型与TCP/IP 五层网络模型之间的对比TCP/IP 五层模型数据包的封装和分用传输层中的TCP 和 UDPUDP无连接不可靠面向数据报UDP 的缓冲区基于UDP 的应用层协议TCP确认应答机制超时重传机制连接管理关于连接管理的细节问题滑动窗口快重传(滑动窗口管理)流量控制拥塞控制延迟应答捎带应答面向字节流TCP 粘包问题TCP 异常情况SYN攻击是什么?TCP 管理的4个不同的定时器为什么 T
2020-07-23 22:10:22
1098
1
原创 多线程总结
感谢原博,我只是整理自己容易遗忘的文章目录基础知识并发编程的优缺点为什么要使用并发编程(并发编程的优点)并发编程的缺点并发编程的三要素是什么?并行和并发有什么区别?线程和进程的区别什么是线程?什么是进程?进程和线程的区别什么是多线程,多线程的优劣?什么是上下文切换守护线程和用户线程的区别什么是线程死锁形成死锁的四个必要条件是什么?创建线程创建线程的几种方法线程的 run() 和 start() 方法有什么区别?为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run(
2020-07-22 17:59:17
1366
原创 数据库总结
感谢原博,我只是整理自己容易遗忘的文章目录数据库基础知识数据为什么要保存在数据库中数据库的三大范式索引什么是索引?索引的优缺点索引的使用场景索引有哪几种类型索引的数据结构索引的基本原理索引设计的原则创建索引的原则创建索引的三种方式,删除索引数据库基础知识数据为什么要保存在数据库中数据保存在内存中优点:存取速度快缺点:数据不能永久保存数据保存在文件中优点:数据永久保存缺点:1)速度比内存操作慢,频繁的IO 操作;2)查询数据不方便数据保存在数据库中1)数据永久保存2)使用 SQL 语句
2020-07-21 11:06:23
317
1
原创 又是集合总结
感谢原博,我只是总结自己掌握不清楚的点文章目录集合容器概述集合的特点集合和数组的区别使用集合框架的好处常见的集合类有哪些?List,Set,Map三者的区别?List、Map、Set三个接口存取元素时,各有什么特点?集合框架底层数据结构哪些集合类是线程安全的?二. Collection 接口1. List 接口迭代器 Iterator 是什么?有什么特点?使用 Iterator 边遍历边移除 Collection 中的元素ArrayList 和 LinkedList 的区别是什么?ArrayList 的优
2020-07-16 12:53:01
170
1
原创 JavaSE总结
感谢原博,我只是整理自己欠缺的地方文章目录一. Java概述1. JVM、JRE 和 JDK2. 什么是Java的跨平台性?原理是什么?3. 什么是字节码?采用字节码的最大好处Java程序的主类?应用程序和小程序的主类有何不同?二. 基础语法1. 数据类型Java的数据类型switch 语句的判断条件左移、右移取两个数的平均数求一个数的四舍五入数2. 访问修饰符3. 运算符& 和 && 的区别4. 几个关键字final 关键字作用final finally finalize的区别t
2020-07-13 21:12:54
305
1
原创 数组根据左右下标求解中间下标——二分查找区间中间下标
在做二分查找这两类问题的时候需要利用数组的中间下标mid将数组分为两部分我老是记不住数组的中间下标的求解方法,导致我的区间总是出现问题分享几个总结如果数组的长度是偶数的,求左中间值例如:[1, 10] —— 取得中间值是5(left + right) / 2,问题:取出来的中间下标值可能会越界(left + right) >>>> 2,无符号右移一位可以解决这个问题left + (right - left) / 2如果数组的长度是偶数的,求右中间值例如:[1,
2020-05-26 11:15:20
1020
2
原创 Java线程池创建、使用、优点、参数
文章目录一. 理解什么是线程池二. 为什么要使用线程池 —— 线程池的好处三. 线程池的主要参数四. 线程池执行流程五. 线程池为什么需要使用(阻塞)队列?六. 如何配置线程池6.1 CPU 密集型任务:6.2 IO 密集型任务:6.3 混合型任务:七. 使用无界阻塞队列的线程池会导致内存飙升吗?八. Java中提供的线程池九. 运行一个线程池十. 几种典型的工作队列一. 理解什么是线程池线程池就是事先将多个线程对象放到一个容器中,当使用的时候不用 new 线程,而是直到从线程池中拿线程即可。在一个商
2020-05-13 17:33:27
293
原创 Java集合类总结
文章目录一. Java集合类简介二. List 接口2.1 ArrayList 子类2.2 LinkedList 子类2.3 Vector 子类三. Set 接口3.1 TreeSet子类3.2 HashSet 子类3.3 List 和 Set 的区别一. Java集合类简介问题1:为什么要使用Java集合类?答:集合类实际上属于动态对象数组,在实际开发中,因为数组的长度是固定的,所以在...
2020-04-27 16:59:30
604
原创 回溯法解决问题 ——矩阵中的路径、机器人的运动范围
文章目录案例1:矩阵中的路径1. 问题描述2. 思路分析3. 步骤案例1:矩阵中的路径1. 问题描述设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。例如,矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含...
2020-04-21 10:14:00
234
原创 十大算法 —— 分治 动态规划 KMP 贪心 普利姆
文章目录1. 分治算法 —— 汉诺塔问题1. 分治算法的基本步骤2. 经典案例 —— 汉诺塔汉诺塔问题代码:1. 分治算法 —— 汉诺塔问题1. 分治算法的基本步骤分治算法在每一层递归上都有三个步骤:分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;解决:若子问题规模较小而任意被解决,则直接解决,否则递归的解决各个子问题;合并:将各个子问题的解合并为原问题的解...
2020-04-20 09:03:30
1736
原创 二叉排序树概念、构造、插入、查找、删除
文章目录1. 二叉排序树介绍:2. 二叉排序树的创建及遍历3. 二叉排序树的查找结点 包括 查找某个结点代码实现删除1. 二叉排序树介绍:二叉排序树(Binary Search Tree,BST):在一棵二叉树中,对于任何一个非叶子节点而言,左子节点的值比其根节点的值小,右子结点比其根节点的值大。对于二叉排序树而言,它的查找速度很快,类似二分查找效率。对于集合中而言:1)若是未排序的数...
2020-04-15 10:56:32
670
原创 利用斐波那契数列可以解决的一些问题——矩形覆盖、跳台阶以及变态跳台阶
斐波那契数列输入一个 n ,求出斐波那契数列中的第 n 个数。(0 <= n <= 39)至于斐波那契数列就不多说了。直接看代码吧思路1:利用递归求出第 n 个斐波那契数,并返回即可。public class Solution{ public int Fibonacci(int n){ if(n == 0 || n ==1){ return n; } r...
2020-04-14 21:09:08
455
原创 赫夫曼树的应用 —— 压缩文件
文章目录1. 背景介绍:2. 压缩步骤:3. 代码1. 背景介绍:文件在传输过程中,太大可能会造成传输较慢之类的问题,反正就是你可能会用到文件压缩的情况通信领域中信息的处理方式1 —— 定长编码:压缩过后的长度为 359通信领域中信息的处理方式2 —— 变长编码:(1)i like like like java do you like a java // 共40个...
2020-04-14 16:48:09
179
原创 赫夫曼树 —— HaffmanTree
文章目录1. 基本介绍2. 概念简介3. 赫夫曼树构建步骤4. 步骤演练5. 代码6. 代码运行结果1. 基本介绍给定 n 个权值作为 n 个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也成为 哈/赫/霍夫曼树。赫夫曼树是带权路径长度最短的树,权值较大的结点离根较劲。2. 概念简介路径和路径长度:在一棵树中,从一个结点往下可以达到的...
2020-04-14 10:56:00
290
原创 堆排序
文章目录1. 堆排序基本介绍2. 存储方式3. 下标关系1. 堆排序基本介绍堆排序是利用堆这种数据结构而设计的算法,堆排序是一种选择排序。堆是一个完全二叉树。每个结点的值都大于等于其左右子孩子结点的值,被称为大顶堆。每个结点的值都小于等于其左右子孩子结点的值,被称为小顶堆。一般升序采用大顶堆,降序采用小顶堆。堆的基本作用是:快速找到集合中的最值2. 存储方式上图以小顶堆为例...
2020-04-13 12:31:38
121
原创 线索二叉树 —— 设置线索二叉树、线索二叉树的遍历
文章目录1. 示例说明2. 线索二叉树的基本介绍3. 一个应用案例:4. 代码(构造 + 遍历):1. 示例说明对上面的二叉树进行中序遍历时,数列为{8,3,10,1,6,14}但是 6,8,10,14这几个结点的左右指针并没有完全利用上(即就是没有任何指向)让各个结点可以指向自己的前后节点,实现途径 —— 线索二叉树2. 线索二叉树的基本介绍n 个结点的二叉链表中含有 n +...
2020-04-12 18:26:16
189
原创 顺序存储二叉树及顺序存储二叉树的遍历
文章目录1. 基本说明:2. 顺序存储二叉树的特点:3. 顺序存储二叉树的遍历:1. 基本说明:从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转化为树,树也可以转换成数组。而将二叉树转换成数组存储的过程叫做顺序存储二叉树。示意图如下:2. 顺序存储二叉树的特点:顺序存储二叉树通常只考虑完全二叉树n :表示二叉树的第几个元素(从 0 号下标开始),即为该节点对应...
2020-04-12 15:34:41
862
原创 关于二叉树的一些面试程序题 ——前序遍历二叉树
文章目录1. 二叉树的前序遍历1)方法1:递归2)非递归2. 检查两棵树是否相等3. 检查一个树是否是另一个树的子树4. 二叉树的最大深度5. 判断一个树是否是二叉平衡树1. 二叉树的前序遍历1)方法1:递归 private void preOrder(TreeNode root){ if(root != null){ System.out.print(root.val + " "...
2020-04-11 21:58:45
319
原创 哈希表 + 底层代码实现
文章目录一. 基本介绍二. 哈希表底层三. 代码一. 基本介绍哈希表是根据关键码值而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查询的速度。这个映射函数叫做散列函数,存放记录用的数组叫做散列表。二. 哈希表底层三. 代码package HashTab;import java.util.Scanner;public class HashT...
2020-04-09 18:12:48
357
原创 查找算法—— 顺序查找、二分查找、插值插值、斐波那契查找
文章目录一. 顺序查找二. 二分查找一. 顺序查找顺序查找也叫线性查找问题:有一个数列:{1,8,10,89,1000,1234},判断数列中是否包含某个数据,要求:如果找到了就提示找到了,并返回下标。代码:public class OrderSearch { public static void main(String[] args){ int[] arr ...
2020-04-09 09:09:53
151
原创 排序算法代码整理 —— 冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、基数排序、堆排序
文章目录冒泡排序选择排序冒泡排序冒泡排序是把大的数往后冒思路:通过对待排序序列,从前往后(从下标值小的往下标值大的),依次比较相邻元素的值,若发现逆序(下标小的数据值 > 小标大的数据的值)则交换,使较大的值从前往后移。优化的部分:如果一趟排序下来,发现没有数据进行交换,即序列的排列已经按序。可以在排序前设置一个标识位,用来描述这趟排序有没有交换数据,若没有交换数据,则直接退出循环...
2020-04-07 17:35:26
297
原创 LeetCode力扣 —— 最小栈
最小栈 - 就是在栈中添加一个求栈中最小元素的方法文章目录问题描述示例代码演示代码1方法2问题描述设计一个栈,其中包括push():给栈中添加元素pop():获取栈顶元素(顺便将栈顶元素删除)top():读取栈顶元素(不删除元素)getMin():读取当前栈中的最小元素示例代码结果MinStack minStack = new MinStack()无...
2020-04-06 20:10:01
234
原创 八皇后问题(回溯算法)
文章目录问题描述思路分析代码实现运行结果:图解代码:问题描述八皇后问题在 8 * 8 格的国际象棋上拜访八个皇后,使其不能互相攻击。即:任意两个皇后都不能处于同一行、同一列或者同一斜线上,问一共有多少种摆法。(每行放一个皇后)思路分析第一步:第一个皇后先放第一行的第一列。第二步:第二个皇后放在第二行的第二列,然后判断是否符合标准(不相互攻击),如果不符合,则把第二个皇后放到第二行...
2020-04-03 18:24:40
230
原创 迷宫问题 —— 回溯法
文章目录问题描述:问题说明:代码实现:问题描述:小球从起点开始向终点移动,其中红色的方块表示墙不能移动,而且小球只能向下、向上、向左、向右移动,不能斜方向移动。问题说明:小球得到的路径和程序员设置的找路策略有关,即:找路的上下左右的顺序相关再得到小球路径时,可以使用(下右上左),或者其他的,看看路径是否有变测试回溯现象代码实现:在这里插入代码片...
2020-04-03 15:09:43
334
原创 约瑟夫环问题(丢手绢)
文章目录问题描述:思路分析:代码实现:代码运行结果:问题描述:Josephu 问题:设编号为 1,2,…… n 的n个人未作一圈,约定编号为 k (1<=k<=n)的人从1 1开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,疏导 m 的那个人出列。依次类推,直到所有人出列为止,由此产生一个出队编号的序列。思路分析:可以使用单向环形链表来解决该类题目:例...
2020-04-02 18:31:00
649
原创 利用栈实现综合计算器(中缀表达式 + 数组实现栈)
问题:使用栈完成计算一个表达式的结果,如思路:使用栈(中缀)完成表达式的计算:建立两个栈 —— 数栈:存放数据,符号栈:存放运算符。通过一个 index(索引)来遍历我们的表达式;如果我们发现是一个数字,就直接入栈如果扫描到是一个 运算符,需要分情况讨论3.1 如果发现当前符号栈为空,则直接入栈;3.2 如果符号栈中有符号,则比较两个符号的优先级,如果当前运算符的优先级小于或者等...
2020-04-01 18:38:56
227
原创 数据结构
稀疏数组:将二维数组 转 稀疏数组的思路:遍历 原始的二维数组,得到有效数据的个数 sum;根据 sum 就可以创建 稀疏数组 sparseArr int[sum + 1][3];将二维数组的有效数据存入到稀疏数组中。稀疏数组转原始的二维数组的思路:先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如 chessArr2 = int[11][11]。在读取稀疏数组...
2020-03-29 17:41:06
64
原创 高阶数据结构之哈希表
文章目录一. 搜索二. 哈希原理一. 搜索分情况:如果数据集不变(或者变化很少)这种情况少之又少最常见的算法 —— 二分查找(条件:数据中的值是有序的)查找的时间复杂度:0(log(n));插入的时间复杂度:0(n);删除的时间复杂度:0(n)不但要追求查找效率,也要追求 插入/删除。比较常见哈希表:平衡搜索树:AVL树、红黑树(以上两个用户内存的平衡搜索树),B- 树家...
2020-03-27 16:08:09
133
原创 Java关键字
文章目录一. 用于定义访问权限修饰的关键字(3个)二. 用于定义类、函数、变量修饰的关键字(4个)1. abstract2. final3. static4. synchronized三. 用于定义类与类之间关系的关键字(2个)前置知识:1. extends2. implement四. 用于定义建立实例及引用实例,判断实例的关键字(4个)1. new一. 用于定义访问权限修饰的关键字(3个)...
2020-03-23 21:52:25
139
原创 Java基础IO和文件
思考:如何从 Input 中把数据读到进程中来?如何把数据读取到输出 Output 中去?1、输入源可能有很多例如:输入流、网络流、文件流等。2、整个数据流上会有各种的加工厂(一个一个的对象)例如:图片对象、音频、视频、文本等。一. 文件文件是操作系统组织数据的一直方式。来源:1. 80%是硬盘上的文件;2. 硬盘、网络、屏幕都有可能被组织成文件(操作系统实现相关)1....
2020-03-02 18:08:57
132
原创 操作系统与线程
一. 冯诺依曼体系结构1. 冯诺依曼体系结构图2. 特点:冯诺依曼体系结构也是现代计算机的硬件体系结构,它包括五大硬件单元输入单元:包括键盘、鼠标、扫描仪、写板等输出单元:显示器、打印机等存储器:内存运算器:用于完成 算术运算 和 逻辑运算控制器:其中 运算器 和 控制器 组成中央处理机 ,即 CPU3. 注意:这里的存储器指的是内存,不能是磁盘类的设备不考虑缓...
2020-02-27 16:01:55
166
原创 多线程之间的通信-生产者消费者-中断一个线程
上一节 - 多线程安全一. 多线程之间如何实现通讯1.1 什么是多线程之间的通讯多线程之间通信,其实就是多个线程在操作同一个资源,但是操作的动作不同。1.2 多线程之间通讯需求需求:第一个线程写入(input)用户,另一个线程读取(out)用户,实现读一个,写一个操作。生产者消费者**涉及到 wait 、 notify **共享资源源实体类:class Person{ p...
2020-02-22 19:51:06
157
原创 多线程之间实现同步
多线程的前提知识,了解本节之前可先看基础知识一. 本节目标线程安全synchronized 用法死锁二. 什么是线程安全问题?面试遇到这个问题的答法当多个线程同时共享同一个全局变量或者静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是若大家都做读操作是不会发生数据冲突问题的。举例:在火车票的购票窗口,若是只剩下一张票了,两个售票员点进售票系统同时准备售...
2020-02-21 18:14:40
275
原创 测试第一部分复习
一. 第一部分涉及几个面试问题什么是软件测试?研发于测试的区别?为社么要做软件测试?作为一个测试人员应该具有哪有素质什么是软件测试(目的):找 bug验证程序的正确性结合学习经验、使用软件的体会、生活经验看设计出的程序是否满足用户的期望研发与测试的区别:目的:研发:完成任务的开发(负责把项目做完)测试:验证研发的功能的正确性(负责把任务做好)...
2020-02-20 12:29:51
338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人