自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (1)
  • 收藏
  • 关注

原创 代码练习-字符串经典题目

字符串经典题型

2022-08-19 02:53:28 792

原创 IDEA调试技巧总结

Debug技巧

2022-08-09 06:57:05 710

原创 IDEA频繁闪退解决

窗外下着小雨,很舒服的天气。打开IDEA想敲一会代码,可是它频繁闪退,最终我使用了以下方法解决了问题。顺手记录一下!一般IDEA闪退,可能是以下几种情况导致的:我们出现问题时可以依次尝试内存问题找到idea安装目录下的idea64.exe.vmoptions文件(图片中最后一个)我们可以将参数Xmx设置为750或者更大比如1024.保存后重启idea,(我的问题就是这样解决的)。查看可能出现的原因我们打开cmd,在bin目录下找到idea.bat,然后回车。这里提示初始化vm出错,无法为

2022-05-19 23:29:09 17354 1

原创 Tomcat启动出错:Error Running:Can‘t find catalina.jar

今天在idea上部署项目启动时,tomcat服务器报了这样的错误。原因就是我们tomcat的配置路径出了错误,经过检查,我原来的路径中tomcat已经消失了,可能是被我误删掉了。解决(重新配置):重新配置点击ok重启即可。...

2022-01-08 21:02:57 3596

原创 详讲Thread类及其常见方法

文章目录1.1Thread类的常见方法1.2Thread的常见属性1.3启动一个线程-start()start()和run()方法的区别1.4中断一个线程1.5等待一个线程-join()1.6获取当前线程引用1.7休眠当前线程Thread类是jvm用来管理线程的一个类,换句话说,也就是每个线程都有唯一的Thread对象与之关联。1.1Thread类的常见方法//简单示例Thread t1=new Thread(); Thread t2=new Thread(new Runnable()

2021-12-25 23:39:18 1030

原创 网络原理之http协议详解

文章目录为何要有应用层认识urlHTTP协议格式请求头和响应头(重要)HTTP的方法GET和 POST方法的区别(重要)HTTP的状态码HTTP常见Header为何要有应用层首先在正式开始展开之前我希望我们要 理解为何要有应用层?我相信大家应该了解过 TCP/IP ,知道目前数据能从客户端进程经过路径选择跨网络传送到服务器端进程[ IP+Port ],可是,仅仅把数据从A点传送到B点就完了吗?这就好比,在淘宝上买了一部手机,卖家[ 客户端 ]把手机通过顺丰[ 传送+路径选择 ] 送到买家 [ 服务器

2021-12-05 22:28:18 1896

原创 Maven的使用

步骤1.新建一个project。2.选择maven,3.一定记得重写,否则我们的设置不会生效

2021-11-29 22:35:06 1133 2

原创 HashMap如何与冲突作斗争

1.哈希表1.1概念顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O( log2N),搜索的效率取决于搜索过程中元素的比较次数。理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。当向该结构中:插入元素根据待

2021-11-14 22:49:52 1587 4

原创 Map与Set的使用及区别详解

1.Map的使用1.1关于Map的说明Map是一个接口类,该类没有继承自Collection,该类中存储的是<K,V>结构的键值对,并且Key一定是唯一的,不能重复。1.2关于Map.Entry<K,V>的说明Map.Entry<K, V> 是Map内部实现的用来存放<key, value>键值对映射关系的内部类,该内部类中主要提供了<key, value>的获取,value的设置以及Key的比较方式注意:Map.Entry<K,V

2021-11-08 20:49:09 1071 1

原创 多个维度解析常见的排序算法及其稳定性

1.基本概念1.1排序的稳定性(重要)两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排序算法。(经验)如果当前这个排序,在排序的过程中没有发生跳跃式的交换,那么我们认为这个排序是稳定的排序,比如堆排,就是不稳定的。稳定的排序也可被实现为不稳定的排序,但不稳定的则不可以变成稳定的排序。现实生活中的应用2.常用排序总览3.插入排序3.1直接插入排序-原理整个区间被分为有序区间无序区间每次选择无序区间的第一个元素,在有序区间内选择合适的

2021-11-01 22:33:07 1637

原创 Java对象的比较

文章目录1.问题2.元素的比较2.1基本类型的比较2.2对象的比较3.对象的比较3.1重写基类的equal3.2基于Comparable接口的比较3.3基于比较器比较(Comparator接口)3.4 三种方式对比4.面试一问在面试与实际开发过程中,对象的比较一直是一个重点且比较容易混淆的点,于是今天在此总结一下。1.问题在上一篇文章中我写到了优先级队列,如果没有看点此链接,优先级队列在插入元素时有个要求:插入元素不为null或者元素之间必须能够进行比较,为了简单起见,上次我们只是插入了Integer

2021-10-25 21:37:21 152

原创 堆(优先级队列)及TOPK问题详解

@[TOC]二叉树的顺序存储#存储方式老铁们首先声明一下,此堆非彼堆,jvm中有堆、栈等,属于存储结构,我们这里讨论的堆为数据结构。1.二叉树的顺序存储1.1存储方式使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪费。这种方式的主要用法就是堆的表示。1.2下标关系已知双亲(parent)的下标,则:左孩子(left)下标 = 2 * parent + 1;右孩子(right)下标 = 2 * parent + 2;

2021-10-22 22:58:42 523

原创 Java集合框架及常见问题

目标了解什么是集合框架了解学习集合框架的意义掌握集合框架相关接口和常见的实现类介绍Java 集合框架又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes。接口Collection :用来存储管理一组对象 objects ,这些对象一般被成为元素 elementsSet : 元素不能重复,背后隐含着查找/搜索的语义SortedSet : 一组有序的不能重复的元素List : 线性结构Queue :

2021-10-13 22:39:22 215

原创 关于二叉树,我们必须知道的

树的应用完全二叉树平衡二叉树搜索二叉树二叉树的存储方式二叉树的遍历方式

2021-09-27 22:17:12 217

原创 栈与队列:设计循环队列、括号匹配、栈与队列相互实现等问题的解决

栈和队列的原理大家应该很熟悉了,队列是先进先出,栈是先进后出。此处不多写。如图:有效的括号思路注:括号匹配是使用栈解决的经典问题。举个例子,linux系统中,cd这个进入目录的命令我们应该再熟悉不过了cd a/b/c/../../这个命令最后进入a目录,系统是如何知道进入了a目录呢 ,这就是栈的应用所以栈在计算机领域中应用是非常广泛的。有的朋友经常会想学的这些数据结构有什么用,也开发不了什么软件,大多数同学说的软件应该都是可视化的软件例如APP、网站之类的,那都是非常上层的应用了

2021-09-25 20:42:48 403

原创 兄弟们我先肝为敬,MySQL数据库的查询大总结

查询全列查询 select*from student. *:当前表中的所有字段我们来准备一个数据表:DROP TABLE IF EXISTS exam_result; CREATE TABLE exam_result ( id INT, name VARCHAR(20), chinese DECIMAL(3,1), math DECIMAL(3,1), english DECIMAL(3,1) ); INSERT INTO exam_result (

2021-09-17 21:35:02 288

原创 mysql数据库的操作都在这里,给不会的小朋友看

关于库的操作显示数据库:show databases;查看当前选中的数据库下的表:show tables;删除数据库 drop +database+" 数据库名"创建数据库 create database if not exists + db_name ;常用的数据类型关于表的操作创建表:create table +“表名”向表中插入数据:显示表:show tables;删除表:drop table if exists +“表名”将数据类型放到表上练习:

2021-09-17 18:39:53 208

原创 个人博客帮助文档

注册功能注册:点此进行注册该页面为个人账户注册页面,进行注册之后,您便拥有了自己的账号。在注册过程中会对密码进行非空校验,以及对两次输入的密码是否一致等不合法行为进行判断,对用户的基本操作会给出相应提示。登录功能登录:点此进行登录在注册成功之后或者您已经拥有了自己的账号,进行登录进入个人页面,在此您可进行自己的文章的添加,还可对自己的文章进行修改和删除操作。文章列表查看所有文章:所有文章列表在此您可以查看所有已发布的文章。...

2021-09-14 16:17:48 122

原创 Linux中如何查看进程,如何杀死进程及参数详解

查看进程ps -ef 和ps aux命令即可,ps aux一般会按照PID的顺序排序显示,ps -ef 是用标准的格式显示进程的。使用ps aux所显示的项目如下:USER //进程所属用户账号PID //进程IDPPID//父进程ID(图中未显示)%CPU //进程占用CPU的百分比%MEM//该进程所占用的物理内存百分比VSZ:该进程使用掉的虚拟内存量(KB)RSS:该内存占用的固定的内存量(KB)STAT:进程目前的状态START:该进程被触发的时间TIME //该进程.

2021-09-10 16:19:46 1037

原创 打家劫舍、斐波那契数、整数拆分(动态规划)

看视频总结的·动态规划的基本步骤:1.dp数组的定义和下标。2.递推公式。3.dp数组如何初始化,初始化也需要注意。4.确定遍历顺序,比较考究.。5.举例推导dp数组。用简单的题目来加深对以上方法的理解。斐波那契数斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n .

2021-09-01 20:30:09 412 1

原创 关于双指针方法的一些运用

有序数组的平方给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]class Solution { public int[] sortedSquares(int[] nums) {//1.暴力解法,这个时间复杂度是 O(n + nl.

2021-08-20 16:52:06 214 1

原创 算法学习:二分查找

二分查找是非常基础的算法,但其并不简单,有很多细节需要掌握,因此自己结合资料进行了一些整理,在看完这些后,建议做几道给出的习题这样效果会更好。二分查找细节。二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4..

2021-08-19 00:58:34 152

原创 链表简单习题

链表反转给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点链表为空,返回头节点定义两个结点 pre 为 null ,cur指向头节点遍历链表时,定义临时结点存放 cur 的下一结点,同时让 cur 指向 pre因为要向后遍历,pre 向后移到 cur 的位置,cur 移到刚刚定义的临时结点位置 (达到链表反转效果) …(以此循环)最后因 cur == null 跳出循环, pre 在cur 的前一位,所以返回 pre 即可class Sol.

2021-08-18 15:09:49 260 1

原创 JSON介绍及简单使用

什么是JSON?JSON是JavaScript Object Notation的简称,是一种轻量的数据表示方法。与XML相比更加简洁直观,说白了就是元素会使用特定符号标注的一串字符串。var obj={a:‘hello’,b:‘world’};//这是一个对象,注意键名也可以使用引号包裹var json=’{“a”:“hello”,“b”:“world”}’;//这是一个JSON字符串,本质是一个字符串基本特征:使用{}包裹,{}表示这是一个对象,[]表示数组,里面会有多个属性,多个属性是以.

2021-08-15 20:10:57 163

原创 多线程小回顾

多线程的价值(1)发挥多核CPU的优势多线程可以真正发挥多核Cpu的优势,采用多线程的方式同时去完成·几件事而互不干扰,达到充分利用Cpu的目的。(2)防止阻塞从程序运行效率来看,单核CPU会由于运行多线程导致上下文的切换,而降低程序整体效率。但是单核CPU还是要用多线程,目的就是为了防止阻塞。比如现在是单核CPU单线程,进行数据读取,对端迟迟不返回且未设置超时时间,那么整个程序在数据返回之前就停止运行了。多线程可以防止这个问题,一条线程的代码执行读取数据阻塞,也不会影响其他任务执行。(3)效..

2021-08-14 23:01:01 146 1

原创 栈必刷习题及解析

有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例 4:输入:s = "([)]"输出:falseclass Solution { ...

2021-07-24 23:26:41 344 1

原创 简单说说路由器和交换机的区别

交换机工作于数据链路层,用来隔离冲突域,连接的设备属于同一个(广播域)子网,负责子网内部通信。路由器工作与网络层,用来隔离广播域,连接的设备分属不同子网,工作范围是多个子网之间,负责网络与网络之间的通信。下面详细说明:工作层次以osi七层模型来说,从下往上依次是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层交换机主要工作在数据链路层(第二层)路由器主要工作在网络层(第三层)转发依据交换机转发依据:MAC地址(物理地址)路由器转发依据:ip地址(网络地址)主要功

2021-07-21 00:14:03 494 1

原创 栈的基本方法及相关问题

栈(Stack):一种特殊的 线性表,其只允许在固定的一端(栈顶)进行插入和删除元素操作(另一端为栈底)。栈中的数据元素遵循先进后出(LIFO)的原则。栈的基本方法1.public stack();创建栈2. public E push(); 入栈3. public E pop(); 出栈(删除栈顶元素)4. public E peek()查看栈顶元素(不删除)5. public boolean empty(); 判断栈是否为空实现栈问题:中缀表达式转换成后缀表达式自己总结..

2021-07-10 18:57:23 486

原创 左右最值最大差

给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0…K],右部分A[K+1…N-1],K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少?给定整数数组A和数组的大小n,请返回题目所求的答案。测试样例:[2,7,3,1,1],5返回:6思路:基于贪心算法的思想 这两个数中有一个肯定是数组的最大值。要使得差值最大,那么另一边的最大值应尽可能的小。 假设最大值在左边,那么对于最大值右边的数组有很多种分法,每一

2021-06-14 16:51:21 170

原创 发邮件:错排问题的分析

提出问题:有一天,有五个人各自收到了一封信,每个人的家门前都有一个自己的信箱,可是送信员在送信的时候恰好把每个人的信都送到了别人家的信箱里,问:满足这样送信方案数共有多少种?分析问题当n个编号元素放在n个编号位置,错排的方法数记着D(n)~⒈把第n个元素放在一个位置,比如位置k,一共有(n-1)种方法;⒉放编号为k的元素,这时有两种情况:1°把它放到位置n,那么,对于剩下的(n-1)个元素,由于第k个元素放到了位置n,剩下(n-2)个元素就有D(n-2)种方法;2°第k个元素不把它放到位置.

2021-06-03 16:33:29 225

原创 Java内部类与Java程序的初始化

内部类 在Java语言中,可以把一个类定义到另外一个类的内部,在类里面的这个类就叫做内部类,外面的类叫做外部类。在这种情况下,这个内部类可以被看成外部类的一个成员(与类的属性和方法类似)。还有一种类被称为顶层(Top-level)类,指的是类定义代码不嵌套在其他类定义中的类。内部类主要有以下四种:静态内部类,成员内部类,局部内部类,匿名内部类。其定义方法如下:class outerClass{ static class innerClass{}//静态内部类 }...

2021-05-31 16:40:36 646 1

原创 ThreadLocal基础及高级使用

解决线程安全问题:ThreadLocal ThreadLocal简介:ThreadLocal从字面上来理解是线程本地变量的意思,也就是说它是线程中的私有变量,每个线程只能使用自己的变量。以之前线程池格式化时间为例,当线程池中有 10 个线程时,SimpleDateFormat 会存入 ThreadLocal 中,它也只会创建 10 个对象,即使要执行 1000 次时间格式化任务,依然只会新建 10 个 SimpleDateFormat 对象,每个线程调用自己的 ThreadLocal 变量。..

2021-05-30 00:58:59 646 2

原创 ThreadLocal还不会?来看看!

ThreadLocal设计是为了解决并发时,线程共享变量的问题,由于过度设计,如弱引用和哈希碰撞,导致其令人难以理解和使用成本高等问题。除此之外,使用稍有不慎还会造成脏数据和内存泄漏,共享变量更新等问题。但即便如此,ThreadLocal依然有自己的适用场景,以及无可取代的价值,比如接下来要介绍的这两种使用场景,除了 ThreadLocal 之外,还真没有合适的替代方案。使用场景1:本地变量我们以多线程格式化时间为例,来演示 ThreadLocal 的价值和作用,当我们在多个线程中格式化时间...

2021-05-29 18:24:45 119

原创 线程池创建方式详解

线程的弊端线程的创建需要开辟内存资源:本地方法栈,虚拟机栈,程序计数器等线程私有变量的内存,频繁的创建和销毁会带来一定的性能开销 使用线程不能很好的管理任务和友好的拒绝任务 线程池:使用池化的技术来管理和使用线程,即为线程池线程池的优点:1.可以避免频繁的创建和消耗线程2.可以更好的管理线程的个数和资源的个数3.拥有更多的功能,比如线程池可以进行定时任务的执行4.线程池可以更优化的拒绝不能处理的任务线程池的创建总共包含7种·.(jdk1.8)线程池的第一种创建方式:创建固

2021-05-22 16:56:49 266

原创 字节序,object类

Java整形的字节序是?答:Big-Endian(大端)字节序是指多字节数据在计算机内存中存储或网络传输时的各字节存储顺序。通常有Little-Endian(小端)和Big-Endian(大端)两种方式。以下将分别对这两种方式进行介绍。(1)Little-EndianLittle-Endian(小端)是指低位字节存放在内存的低地址端,高位字节存放在内存的高地址端。例如,当按照小端模式存储时,十六进制数字表示 0x12 34 56 78在内存中的存储方式为:低地址-----------

2021-04-26 14:24:34 139 1

原创 QUIC必看

简介:2012年,Google设计的一种实验性的网络传输协议,基于UDP协议,将其命名为QUIC。18年,互联网工程任务组HTTP及QUIC工作小组正式将基于QUIC协议的HTTP重命名为HTTP/3,以为确立下一代规范做准备(说明QUIC是HTTP/3的重要组成部分)问题:QUIC属于传输层?应用层?答:QUIC的优点‘通过减少往返次数(RTT),以缩短建立连接时间 独立的数据流避免阻塞问题 使用FEC(前向纠错)恢复丢失的包,以减少超时重传https://blog.csd.

2021-04-25 21:51:49 105

原创 进程,时间片,并发与并行

3.1 进程的初步认识对于操作系统来说,一个任务就是一个进程(Process)。 课本概念:程序的一个执行实例,正在执行的程序等。 内核观点:担当分配系统资源(CPU时间,内存)的实体。 如何理解进程?如:张三去银行转账,就要使用银行的资源(接待,转账人员,银行电脑,必要时保安也可以跟着:) )为张三完成转账,而在银行内部,这一整套过程的执行,我们统称为办理业务。类比,一个程序刚开始就是一个在硬盘上的程序,加载运行时,是为了完成某些任务(如迅雷完成下载任务),而要完成任务,就需要操作

2021-04-24 22:35:05 1702 1

原创 TCP(滑动窗口,流量控制)

之前我们讨论了确认应答策略,对每一个发送的数据段,都要给一个ACK确认应答,收到ACK后再发送下一个数据段。这样做有一个比较大的缺点,就是性能较差,尤其是数据往返时间较长的时候。滑动窗口既然这样一发一收的方式性能较低, 那么我们一次发送多条数据, 就可以大大的提高性能(其实是将多个段的等待时间重叠在一起了)窗口大小指的是无需等待确认应答而可以继续发送数据的最大值. 上图的窗口大小就是4000个字节(四个段). 发送前四个段的时候, 不需要等待任何ACK, 直接发送; 收到...

2021-04-23 17:12:17 629

原创 TCP/IP协议机制详解

确认应答(ACK)机制(保障TCP稳定的核心机制)TCP对每个字节的数据都进行了编号,即为序列号每一个ACK都带有对应的确认序列号, 意思是告诉发送者, 我已经收到了哪些数据; 下一次你从哪里开始发确认应答可能带来的问题:1.发送的数据根本就没有传送到达主机2,因此主机2就不会回传一个确认应答的报文。2.ACK丢失了当我们的主机1给主机2发送了数据之后,经过一端时间主机1并没有收到主机2的应答的情况也是有的,所以这个时候为了确保数据的准确到达,TCP就有了超时重传机制超时重

2021-04-21 21:38:30 1044 1

原创 TCP/IP协议(1)

回顾:1.应用层我们之前编写完了基本的 java socket ,要知道,我们之前所写的所有代码都在应用层,都是为了完成某项业务,如翻译等。2.传输层负责数据能够从发送端传输接收端再谈端口号:在TCP/IP协议中,用“源ip”,“源端口号”,“目的ip”,“目的端口号”,“协议”,这样一个五元组来标识一个通信(可通过netstat-n查看);1.端口号:相当于身份标识 0~65535(2^16)端口号范围划分:1.知名端口号(0-1023):FTP:21 SSH:...

2021-04-21 17:02:28 149

HashBuck.txt

手写简单的HashMap

2021-11-16

空空如也

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

TA关注的人

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