自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP三次握手和四次挥手

TCP三次握手和四次挥手TCP报文的头部结构三次握手为什么不是两次握手?为什么不是四次握手或者更多?第三次握手失败了怎么办?(服务端没有收到客户端的第三次握手报文?)Server 端收到 Client 端的 SYN 后,为什么还要传回 SYN?为什么要回传 SYN? 为什么还要传 ACK?四次挥手为什么TCP连接的时候是3次,关闭的时候却是4次,能不能合并?为什么客户端发出第四次挥手的确认报文后要等2MSL的时间才能释放TCP连接?如果已经建立了连接,但是客户端突然出现故障了怎么办?一个TCP连接由一个4

2021-09-10 16:28:02 219

原创 Array.sort()排序核心思路

Array.sort()排序核心思路根据不同的情况,选择不同的排序算法。当需要排列的元素较少的时候,采用普通的插入排序当被排序的数组长度小于47但排序不是从数组起始位置开始的时候,那么就会选择哨兵插入排序的方式进行排序。这种情况主要是当sort被双基准快排递归调用的时候才会使用如果元素较多,大于插入排序的阈值,但是小于归并排序的阈值,这时采用快速排序在进行快排之前,首先会将这个不长不断的数组按照1/7的长度划分,然后根据这5个划分点进行排序:2.1. 如果这五个划分点的数据俩俩各

2021-09-06 19:28:37 206

原创 十大排序算法小结

十大排序算法小结1.堆排序2.快速排序3.归并排序4.冒泡排序5.选择排序6.插入排序7.希尔排序(插入排序的升级版)8.桶排序9.基数排序10.计数排序11.排序性能总结和使用场合一些基本的术语堆排序应用场景归并排序应用场景计数排序应用场景基数排序 vs 计数排序 vs 桶排序场景选择:1.堆排序解释:int[ ] nums数组的长度为length,则nums[ i ]的左子节点是nums[2 * i + 1],右子节点是nums[2 * i + 2]第一个非叶子结点是nums[ length

2021-09-06 17:06:17 173

原创 Integer和int使用时装箱拆箱的各种场合总结

相互转换int aInt;Integer aInteger = Integer.valueOf( int aInt);aInt = aInteger.intValue();也可以直接用自动装箱和自动拆箱:int aInt = 3;Integer aInteger;aInteger = aInt;记忆方法:Integer由于是对象,所以才可以调用方法,可以采用.intValue的方法:valueOf适用于基本类型转引用类型的场合,如 String 变量名 = String.value.

2021-08-29 22:42:21 401

原创 小技巧-求无符号int类型的数据二进制1的数量

方法1.每次消去最右边的1,直到消完为止public int hammingWeight(int n) { int count = 0; while (n != 0) { n &= n - 1;//最右边的1会退为0,可能会影响该位后一位0变为1,但是&运算没有影响 count++; } return count;}方法2:把n往右移32次,每次都和1进行与运算public int hammingWeight(int

2021-08-29 22:30:11 84

原创 小技巧-判断int类型越界的常用方法

我们在刷算法题的过程中,经常会出现int类型结果越界的情况,其原因一般是由于int数据类型运算后可能导致的越界,接下来举几个常见的越界方式和处理方法。情况1:如以下的res经过增大可能存在越界的情况:public int test1(int para){ int res = para * 10 + 2; return res;}解决方式:可以采用“反函数”的方式进行判断是否越界public int test1(int para){ int res = para * 10 +

2021-08-29 22:23:30 2806

原创 HashMap底层原理及常见问题解答

这里写目录标题一.HashMap几个重要参数二.HashMap数据结构三.相关问题:1.HashMap的工作原理(put和get操作过程)2.什么是Hash碰撞?3.当两个对象的 hashCode 相同会发生什么?4.JDK1.7和1.8中HashMap的区别在哪里?5.为什么链表长度大于8才用红黑树?6.为什么不用二叉查找树?7.hash 的实现?为什么要这样实现?8.为什么要用异或运算符?9.为什么HashMap是线程不安全的?10.Hashtable,ConcurrentHashMap和HashMap

2021-08-19 17:39:41 147

原创 树、二叉树、平衡二叉树、B树、B+树、红黑树各种常见树总结

树、二叉树、平衡二叉树、B树、B+树、红黑树各种常见树总结基本概念与定义一. 二叉搜索树/查找树(BST:Binary Search Tree)二. 平衡二叉树(AVL树)三. 多路查找树3.2 B树3.3 B+树四. 红黑树基本概念与定义树: 树是n个结点的有限集合,有且仅有一个根结点,其余结点可分为m个根结点的子树;结点的度: 一个结点拥有子树的个数称为度;树的深度: 树中结点的最大层次成为树的深度或高度;权(Weight):树中结点的一个有某种意义的实数;路径长度(Length):树的路径

2021-08-18 09:26:35 478

原创 <数据结构与算法刷题心得笔记>Java-数组加一

题目要求:给定一个由 整数组成的非空 数组所表示的非负整数,在该数的基础上加一。提供一个非空的整数数组,返回一个数组示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:[1]最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。,这个整数不会以零开头。解法:

2021-04-13 13:56:47 185

转载 <数据结构与算法刷题心得笔记>Java-找出只出现过一次的元素

题目要求:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。1.HashSetclass Solution { public int singleNumber(int[] nums) { Set<Integer> set = new HashSet<>(); for (int data : nums){ if(!set.add(data)){

2021-04-12 15:15:17 135

原创 <数据结构与算法刷题心得笔记>Java-找出只出现了一次的元素

题目要求:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。1.HashSetclass Solution { public int singleNumber(int[] nums) { Set<Integer> set = new HashSet<>(); for (int data : nums){ if(!set.add(data)){

2021-04-12 15:12:51 172

原创 <数据结构与算法刷题心得笔记>Java-翻转数组-给定一个整数数组,判断是否存在重复元素。

题目:给定一个整数数组,判断是否存在重复元素。要求:如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true1.暴力解法(效率低下的):(时间复杂度O(n2))class Solution { public boolean contai

2021-04-12 14:15:51 202

原创 <数据结构与算法刷题心得笔记>Java代码常用方法-翻转数组

<数据结构与算法刷题心得笔记>Java刷题常用方法-翻转数组代码实现:应用情形:输入一个数组以及需要反转的开始位置和结束位置,返回反转数组/** * * @param nums 输入需要进行反转的数组 * @param start 需要反转的开始位置 * @param end 需要反转的结束位置 * 输入一个数组以及需要反转的开始位置和结束位置,返回反转数组 */ public int[] rotateArr(int[] num

2021-04-11 22:36:08 92

原创 <数据结构与算法>Java代码实现单向链表-代码实现

数据结构-Java代码实现单向链表-代码实现:应用情形:一个PersonNode为元素的单链表实现实现功能:单链表,增删改查插实现代码如下:public class SingleLinkedList { public PersonNode head = new PersonNode();//头结点 public int SIZE = 0;//记录链表中目前的长度 public boolean isEmpty() {//判断链表是否为空 return S

2021-04-09 23:40:38 224 4

原创 <数据结构与算法>Java代码实现循环队列(基于数组,留一空位)

数据结构-Java代码实现循环队列(基于数组,留一空位)-代码实现:应用情形:先进先出,可以通过数组和链表实现,这里用数组和链表分别实现队列数组实现队列思路:我们将这个数组留一个空位,让rearIndex索引指向的这个位置一直空出来,方便循环队列的运行判断队列是否为空:头索引frontIndex == rearIndex判断队列是否为满:尾指针rearIndex下一个是头索引frontIndex时为满:即(rearIndex + 1) % (MaxSize+1) == front满队列中数

2021-04-09 14:45:56 171

原创 <数据结构与算法>Java代码实现队列(基于数组,非循环队列)

数据结构-队列(基于数组,非循环队列)-代码实现:应用情形:先进先出,可以通过数组和链表实现,这里用数组和链表分别实现队列数组实现队列思路:1.队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 MaxSize是该队列的最大容量。2.因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front 及 rear 分别记录队列前后 端的下标,front会随着数据输出而改变,而rear则是随着数据输入而改变实现功能:1.入列2.出列实现效果几

2021-04-08 15:13:09 146 2

原创 <数据结构与算法>Java代码实现稀疏数组与其展开数组的相互转换

数据结构-稀疏数组-代码实现:应用情形:当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。处理方法:记录数组一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模实现功能:实现数组和稀疏数组可以互相转换;(以数组类型为int为例子)实现效果实现代码如下:public class SparseArray { /** * * @param arr:原始数组

2021-04-07 22:38:31 242

原创 Java基础学习总结笔记<5>进制(原码,反码,补码)

进制(原码,反码,补码)一. 进制简介二. 二进制一. 进制简介对于整数数据类型,有四种进制表示方式:二进制(binary):0,1 ,满2进1.以0b或0B开头。十进制(decimal):0-9 ,满10进1。八进制(octal):0-7 ,满8进1. 以数字0开头表示。十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。如:0x21AF +1= 0X21B0二. 二进制Java整数常量默认是int类型,当用二进制定义整数时,其第32位是

2021-04-07 11:13:21 1295 3

原创 Java基础学习总结笔记<4>ASCII码,Unicode码,UTF-8码

ASCII码,Unicode码,UTF-8码一. 编码简介二. ASCII码三. Unicode码四. UTF-8码一. 编码简介在计算机内部 所有数据都使用 二进制表示 。每一个二进制位 bit 有 0 和 1 两种状态,因此8个二进制位就可以组合出 256 种状态 这被称为一个字节 byte 。一个字节一共可以用来表示 256 种不同的状态 每一个状态对应一个符号 就是 256 个符号 从0000000 到 11111111字符:是各种文字和符号的总称,包括各个国家的文字,标点符号,图形符号,数

2021-04-06 22:29:27 124

原创 Java基础学习总结笔记<3>Java变量数据类型(特点,占用空间,强制转换)

Java变量数据类型(特点,占用空间,强制转换)一.Java变量的概念二.Java变量的分类(按数据类型)2.1 整型1. 数值范围2.注意事项2.2 浮点型1.注意事项2.3 字符型1.注意事项2.4 布尔型1.注意事项三.数据类型间转换类型1.自动类型转换2.强制类型转换3.String类型一.Java变量的概念内存中的一个存储区域该区域的数据可以在同一类型范围内不断变化变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值二.Java变量的分类(按数据类型)基本数据类型:byte

2021-04-06 22:07:49 118

原创 Java基础学习总结笔记<2>Java关键字、保留字、标识符的区别与使用

Java关键字、保留字、标识符的区别与使用一.Java关键字二.Java保留字三.Java标识符一.Java关键字定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)特点:关键字中所字母都为小写Java关键字包括:二.Java保留字定义:现Java版本尚未使用,但以后版本可能会作为关键字使用。保留字:goto 、const注意:自己命名标识符时要避免使用这些保留字三.Java标识符定义:凡是自己可以起名字的地方都叫标识符。涉及到的结构:包名、类名、接口名、变量

2021-04-06 15:43:13 193

原创 <疑难解决>JDK8的安装与配置以及Java API文档的下载

一、安装环节打开网页 http://www.oracle.com点击下载对应平台的合适 的 JDK 版本双击下载下来的 exe, 如 jdk-8u131-windows-x64.exe进入安装向导。点击下一步,可以更改安装路径,选择安装所有组件我们这边更改安装路径为D: \developer_tools Java jdk1.8.0_131\,用户可以自定义。点击确定点击下一步,开始安装安装 jre ,可以更改 jre 安装路径。 过程同上述安装目录的选择注意:如果提示需要将

2021-04-06 15:23:05 480

原创 Java基础学习总结笔记<1>Java语言简介

一.Java起源1.1 Java提出和简介:1.诞生:Java之父James Gosling团队在开发”Green”项目时,发现C缺少垃圾回收系统,还有可移植的安 全性、分布程序设计和多线程功能。最后,他们想要一种易于移植到各种设备上的平台。Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物。比如Java语言的变量声明,操作符形式,参数传递,流程控制等方面和C语言、C++语言完全相同。但同时,Java是一个纯粹的面向对象的程序设计语言,它继承了C+

2021-04-06 14:41:32 134

空空如也

空空如也

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

TA关注的人

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