自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Comparator排序的坑

Comparator接口排序的坑

2022-07-17 21:05:31 302 1

原创 坦克大战项目演示

坦克大战项目演示

2022-07-13 10:56:36 820

原创 JVM内存管理及垃圾回收机制

JVM内存管理及垃圾回收机制【超详细】

2022-06-28 20:24:32 1651 8

原创 MySQL事务

mysql事务详解

2022-06-16 17:33:49 1101

原创 IP协议详细图解

目录认识IP协议报头地址管理路由选择IP协议是位于网络层的重要协议,其主要有两大功能地址管理路由选择认识IP协议报头8位服务类型(TOS)只有四位有效(同一时刻只能选一个状态,为规划最优路径的标准提供参考),分别为最小延时最大吞吐量最高可靠性最小成本IP协议的分包组包过程:16位标识:区分是否为同一个包13位片偏移:来自同一个数据不同包的先后顺序3位标志位:是否为最后一个数据包了8位生存时间当一个IP数据报被发出时,会有一个初始的TTL,每经过一个

2022-06-16 11:16:05 1375

原创 TCP协议详细图解(含三次握手、滑动窗口等十大机制)

目录UDP协议TCP协议TCP协议 与 UDP协议的区别UDP协议UDP协议的构成如下:因为报文长度为2个字节(64k),所以UDP数据报单次最多只能传输64k的数据,这也是UDP使用过程中一个致命缺陷。当需要传输比较大的数据时,需要在应用层进行分包(将数据拆成多个部分),分别发送。校验和基于个数校验基于数据内容校验UDP传输的特点无连接(发送方与接收方不需要建立连接)不可靠(发送方不知道接收方是否收到数据)TCP协议TCP协议 与 UDP协议的区别

2022-05-22 18:37:33 3875 39

原创 初识网络原理

目录一、网络通信基础1. 局域网 VS 广域网2. ip地址 VS 端口号3. 协议一、网络通信基础1. 局域网 VS 广域网局域网,即 Local Area Network,简称LAN。局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。局域网组建网络的常见方式如下:基于网线直连基于交换机组建基于交换机和路由器组建广域网 通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。局域网和局域网之间没有明确的

2022-05-13 15:55:47 1115 2

原创 【面试八股文】- 多线程进阶

目录一、常见锁策略1.读写锁 VS 普通的互斥锁2.悲观锁 VS 乐观锁3.轻量级锁 VS 重量级锁4.挂起等待锁 VS 自旋锁5.公平锁 VS 非公平锁一、常见锁策略1.读写锁 VS 普通的互斥锁普通的互斥锁: 只要两个线程针对同一个对象加锁,就会产生互斥读写锁:加读锁: 如果代码只进行读操作,就加读锁加写锁: 如果代码进行了写操作,就加写锁将读写锁分开,那么 读锁和读锁之间是不互斥的 ,只有读锁和写锁,写锁和写锁之间才互斥。2.悲观锁 VS 乐观锁悲观锁:预期锁冲突的概

2022-05-07 14:41:12 1395 16

原创 【多线程经典案例】- 单例/阻塞队列/定时器/线程池

单例模式阻塞队列阻塞队列是一种特殊的队列,除了具有队列的性质外,还具有阻塞的功能。例如下面的典型案例 – 生产者消费者模型当队列满时,继续入队列就会阻塞,直到有其他线程从队列中取走元素当队列空时,继续出队列也会阻塞,直到有其他线程往队列中插入元素阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力比如在 "秒杀" 场景下, 服务器同一时刻可能会收到大量的支付请求. 如果直接处理这些支付请求,服务器可能扛不住(每个支付请求的处理都需要比较复杂的流程). 这个时候就可以把这些请求都放

2022-05-02 12:10:18 1709 26

原创 面试高频考点 -- 常见的排序算法(7种)

目录1、直接插入排序2、希尔排序3、选择排序4、5、6、7、常见排序:稳定性两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化。例如:1、直接插入排序从第二个元素开始往后,每次选择一个元素,当前元素前面的区间就是一个有序区间,后面就是无序区间。每次选择无序区间的第一个元素,在有序区间内选择合适的位置插入。排序12 5 23 6 2直至整个数组变为有序区间。/** * 时间复杂度: O(N^2) * 空间复杂度: O(1) * 稳定性: 稳定 *

2022-04-27 13:11:37 4209 22

原创 多线程基础 -- java(巨详细)

文章目录一、认识线程二、Thread类1、线程的创建2、线程的终止3、线程等待 join()三、synchronized 关键字四、volatile 关键字五、wait 和 notify一、认识线程1、什么是线程?  一个线程就是一个 “ 执行流 ”,每个线程之间都可以按照顺序执行自己的代码=,多个线程之间 “同时” 执行着多份代码,从而能更加高效的处理业务。2、线程 VS 进程进程是包含线程的,每个进程至少有一个线程存在,即主线程main。进程和进程之间不共享内存空间,CUP将资源分配给每个

2022-04-22 20:57:31 1565 6

原创 堆的应用 -- Top-K问题(巨详细)

目录1、什么是堆?堆结构大根堆 VS 小根堆优先级队列(PriorityQueue)2、top-k问题解决思路要解决 top-k 问题,我们应该先熟悉一种数据结构 - 堆(优先级队列),已经知道堆结构的小伙伴可以跳过哦。1、什么是堆?堆结构堆其实就是一种二叉树,但是普通的二叉树是以链式结构进行储存数据的,而堆是以数组进行顺序存储数据的。那么什么样的二叉树才适合用顺序存储的方式呢?我们假设一颗普通的二叉树可以用数组存储,那么就可以得到如下结构:我们可以看到,当二叉树中间有空值时,数组的存储空间会

2022-04-13 17:32:35 4202 24

原创 二叉树的最近公共祖先 (两种思路) - 面试经典考题

思路一:先假设这棵树是二叉搜索树首先我们补充说明一下什么是二叉搜索树:在二叉搜索树中,对于每一个节点来说,他的左子树中的值都比他小,右子树的中的值都比他大。所以二叉搜索树的中序遍历是一组有序的数据。对于上述这棵树,假设要求 p q 的最近公共祖先。那么它有以下情况:对于普通的二叉树来说,也无非就这几种情况:pq都在左,pq都在右,pq一左一右,pq有一个是根节点。所以分别递归的去左子树和右子树中找 p q 节点的公共祖先,找到了则返回该节点,没有找到则返回空。根据上述思路,我们很容易

2022-04-03 17:40:33 3141 32

原创 不使用算术运算符(+/-)怎么求两数之和?

今天遇到了这样的一个题题目说了不能用算数运算符,那么我们就只能从 逻辑运算符 和 移位运算符 入手了。我们知道 ^ 操作是对两个数进行无进位求和,那么如果两个数相加本来就不产生进位,那么该和就是两数之和。 这就是解题的关键所在。而要得到正确的和,应该是在 “无进位之和” 的基础上加上进位,那我们首先应该得到进位。我们知道,当两个数对应位置都为1的情况下,才会有进位的产生,即对应位置 A&B==1的条件下,就可以得到每一位的进位,但是进位是将这个1加到产生进位的更高一位,所以我们将得到的进位

2022-03-30 19:29:38 3065 60

原创 栈与队列(超详细)

目录一、栈(Stack)什么是栈?栈的常见方法一级目录一级目录一、栈(Stack)什么是栈?栈其实就是一种数据结构 - 先进后出(先入栈的数据后出来,最先入栈的数据会被压入栈底)什么是java虚拟机栈?java虚拟机栈只是JVM当中的一块内存,该内存一般用来存放 例如:局部变量当调用函数时,我们会为函数开辟一块内存,叫做 栈帧,在 java虚拟机栈中开辟,具体如下。常见考点:不可能的出栈顺序这道题该怎么分析呢?首先我们知道,出栈时拿到的第一个元素为4,那么4必须入栈,因为入栈的顺序是

2022-03-29 19:14:41 14558 26

原创 ArrayList与顺序表

目录一、ArrayList简介二、ArrayList的使用1、ArrayList的构造2、ArrayList的遍历3、ArrayList的常见操作(方法)4、ArrayList的扩容机制三、模拟实现一个顺序表(Object[])一、ArrayList简介在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。二、ArrayList的使用1、ArrayList的构造方法使用

2022-03-28 20:03:59 3230 31

原创 什么是泛型?- 泛型入门篇

目录1、什么是泛型?2、泛型是怎么编译的泛型的编译机制:擦除机制1、什么是泛型?泛型其实就是将类型作为参数传递,泛型允许程序员在编写代码时使用一些以后才指定的类型 ,在实例化该类时将想要的类型作为参数传递,来指明这些类型。为什么要引入泛型?例如:自己实现一个顺序表public class MyArrayList { public int[] elem; public int usedSize; public MyArrayList() { this.ele

2022-03-25 11:37:43 3034 25

原创 一篇文章带你解决数组的常见基础考点

目录1、数组理论基础(1)、2、数组是存放在连续内存空间上的相同类型数据的集合。(1)、3、数组是存放在连续内存空间上的相同类型数据的集合。(1)、4、数组是存放在连续内存空间上的相同类型数据的集合。(1)、1、数组理论基础数组是存放在连续内存空间上的相同类型数据的集合。(1)、2、数组是存放在连续内存空间上的相同类型数据的集合。(1)、3、数组是存放在连续内存空间上的相同类型数据的集合。(1)、4、数组是存放在连续内存空间上的相同类型数据的集合。(1)、...

2022-03-23 18:01:59 2186 19

原创 集合框架背后的数据结构

标题Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 和其 实现类 。其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD 。例如,一副扑克牌(一组牌的集合)、一个邮箱(一组邮件的集合)、一个通讯录(一组姓名和电话的映射关系)等等。因为map接口没

2022-03-22 19:13:07 2635 29

空空如也

空空如也

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

TA关注的人

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