Java
文章平均质量分 88
峰回路转
让时间说真话
展开
-
有关Java的HashMap的各种问题都在这里
文章目录1. HashMap是怎么get元素的?2. HashMap是怎么put元素的?3. HashMap的底层实现4. HashMap多线程操作导致的死循环问题5. HashMap 的⻓度为什么是2的幂次⽅?6.HashMap的key可以是任何对象吗?7. 为什么HashMap采用使用数组+链表的形式?8. 我⽤LinkedList代替数组结构可以吗?9. HashMap的扩容机制10. HashMap与HashTable的区别?11. HashMap与HashSet的区别1. HashMap是原创 2020-08-19 16:54:34 · 550 阅读 · 0 评论 -
HashMap的扩容机制
文章目录先讲扩容原理子问题1:HashMap是怎么get元素的?子问题2: HashMap是怎么put元素的?子问题3:hash算法子问题4:HashMap的resize子问题5:HashMap的key可以是任何对象吗子问题6:为什么HashMap采用使用数组+链表的形式?子问题7:我⽤LinkedList代替数组结构可以吗?先讲扩容原理在jdk1.7的时候,扩容需要满足如下两个条件:(1)存放新值的时候当前已有的元素的个数必须大于等于阈值(2)存的放新值的时候当前存放数据发生了hash碰撞而在原创 2020-08-19 16:40:04 · 1352 阅读 · 3 评论 -
Spring知识篇4:Spring MVC、Spring AOP
文章目录1. Spring MVC原理2. Spring 框架中用到了哪些设计模式?3. Spring管理事务的方式有几种?1. Spring MVC原理流程说明:(1)客户端发送请求,直接请求到DispaterServlet(前端控制器)。 音标为 /dɪˈspætʃə®/ /ˈsɜːvlɪt/(2)DispatcherServlet根据请求信息调用HandlerMapping(处理器映射器),解析请求对应的Handler。(3)解析到对应的Handler(也就是平时所说的Contro原创 2020-08-12 00:09:36 · 344 阅读 · 0 评论 -
Spring知识篇3:Spring Boot的基本知识
文章目录本文参考自 传送门1.启动流程主要步骤首先要配置environment,然后准备context上下文,包括执行applicationContext的后置处理、初始化initializer、通知listener处理contextPrepared和contextLoaded事件。最后执行refreshContext,也就是前面介绍过的AbstractApplicationContext类的refresh方法。2.配置文件然后要知道在Spring Boot中有两种上下文,一种是boots原创 2020-08-11 16:47:43 · 106 阅读 · 0 评论 -
Spring知识篇1:对Spring框架的基本认识
对Spring框架的基本认识原创 2020-08-11 16:34:34 · 197 阅读 · 0 评论 -
Spring知识篇2:Spring Frame框架的基本知识
本文主要介绍Spring Frame需要掌握的知识原创 2020-08-10 16:01:29 · 1009 阅读 · 0 评论 -
Thread类常用的方法
文章目录1. run()与start()方法:启动线程2. get方法:获取线程标识3. currentThread()方法:返回对当前正在执行的线程对象的引用1. run()与start()方法:启动线程使用继承 Thread 类的方法创建新线程从运行结果我们可以看出:虽然步骤1在步骤2前面,但是步骤2却比步骤1先执行完。这是因为 start()方法的执行比较耗时,底层有如下过程:1)通过 JVM 告诉操作系统创建线程 Thread2)操作系统开辟内存并调用系统函数创建 Thre原创 2020-08-07 21:24:02 · 1152 阅读 · 2 评论 -
JVM篇3:GC各种垃圾回收机制及垃圾回收的算法及收集器
本文主要介绍对象引用类型、各种垃圾回收机制及垃圾回收的算法及收集器原创 2020-08-05 17:19:09 · 343 阅读 · 0 评论 -
JVM篇2:Java中的对象你整明白了吗
本文主要从源头介绍Java对象的创建过程、对象如何访问及堆中对象的分配原创 2020-08-05 12:21:49 · 141 阅读 · 0 评论 -
JVM篇1:Java的内存区域(运行时数据区)
本文主要介绍Java的内存区域划分及各区域特点原创 2020-08-04 22:32:26 · 206 阅读 · 0 评论 -
Java集合框架2:常见问题
文章目录1.List,Set,Map三者的区别?2.ArrayList与LinkedList的区别?3.List的遍历选择4.双向链表与双向循环链表的不同5.ArrayList和Vector有什么区别呢?为什么用ArrayList取代Vector呢?6.HashMap与HashTable的区别?7.HashMap 的⻓度为什么是2的幂次⽅?8.HashMap与HashSet的区别9. HashSet如何检查重复呢?1.List,Set,Map三者的区别?List:List是对付顺序的好帮手,它的接口存原创 2020-08-04 16:25:56 · 178 阅读 · 0 评论 -
Java集合框架1:概念篇
初始Java集合框架1.集合的定义:可以把多个对象的引用放进一个类似于“容器”里。2.集合的分类:Collection:主要由List(有序可重复)、Set(无序不可重复)、Queue(队列实现)接口组成。Map:代表具有映射关系的键值对集合。java.util.Collection下的关系图: java.util.Map下的关系图:3.将集合框架又可以分为以下几个部分:(1)数据结构:List、Queue、Deque(双端队列)、Set、Map(2)比较器:Comparator(比原创 2020-08-01 20:00:24 · 231 阅读 · 0 评论 -
Java中String与Integer的互换方法及原理
String转Integer调用方法调用Integer.parseInt(String s) 方法调用Integer.valueOf(String s) 方法这两种方法,不管是哪种方法,其内部最终还是会调用parseInt(String s, int radix)这个方法,这里的radix 是想转换成多少进制的一个参数,范围是[2,36]最终调用的parseInt(String s, int radix)的源码如下:public static int parseInt(Strin原创 2020-06-23 16:42:15 · 934 阅读 · 0 评论 -
谈谈Java中String、StringBuffer、StringBuilder
文章目录String类的特点为什么要有StringBuffer和StringBuilderString、StringBuffer、StringBuilder的区别:String类的特点任何的字符串常量都是String对象,⽽且String的常量⼀旦声明不可改变,如果改变对象内容,改变的是其引⽤的指向⽽已。如果不懂什么是不可变,可以去看下这个文章:传送门为什么要有StringBuffer和StringBuilder通常来讲String的操作⽐较简单,但是由于String的不可更改特性,为了⽅便原创 2020-05-15 22:11:21 · 149 阅读 · 0 评论 -
谈谈Java不可变对象及我们能创建一个包含可变对象的不可变对象吗?
文章目录谈谈不可变对象创建一个不可变类不可变类对于开发者来说有如下好处:不可变对象的好处:不变模式弱不变模式强不变模式不变和只读的区别再谈可变与不可变不可变对象一定不可变吗我们能创建一个包含可变对象的不可变对象吗?谈谈不可变对象可变对象:相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分类都属于可变类。不可变对象:是指一个对象的状态在对象被创建之后就不再变化。不可变对象对于缓存是非常好的选择,因为你不需要担心它的值会被更改。那么对象是类实例化而来,怎么创建一个不可变原创 2020-05-15 21:55:59 · 1549 阅读 · 2 评论 -
谈谈Java接口和以及它和抽象类的区别
文章目录抽象类以及应用谈谈接口接口的定义与使用接口的使用限制接口的应用抽象类与接⼝的区别个人感想抽象类以及应用具体的这篇文章里有提及:传送门谈谈接口接口的定义与使用接⼝定义:接⼝就是抽象⽅法和全局常量的集合,在Java中接⼝使⽤interface关键字定义定义一个接口:interface IMessage{public static final String MSG = "I am a boy" ; // 全局常量public abstract void print() ; /原创 2020-05-15 00:23:11 · 353 阅读 · 0 评论 -
浅谈Java的抽象类及其意义
文章目录什么是抽象类对于抽象类的使⽤原则抽象类的相关规定抽象类的意义什么是抽象类抽象类只是在普通类的基础上扩充了⼀些抽象⽅法⽽已,所谓的抽象⽅法指的是只声明⽽未实现的⽅法(即没有⽅法体)。所有抽象⽅法要求使⽤abstract关键字来定义,并且抽象⽅法所在的类也⼀定要使⽤abstract关键字来定义,表示抽象类。定义一个抽象类:抽象类中包含有抽象⽅法,也可以有普通方法,⽽抽象⽅法不包含⽅法体,即没有具体实现。因此抽象类不能直接产⽣实例化对象。对于抽象类的使⽤原则所有的抽象类必须有⼦类。抽原创 2020-05-13 22:04:27 · 2858 阅读 · 0 评论 -
浅谈Java的基本数据类型及及其包装类
文章目录Java基本数据类型Java八种基本数据类型对应的包装类基本数据类型与包装类的区别Java基本数据类型Java有8种基本类型整数类型有三种表示形式,分别是十进制、八进制(以0开头)、十六进制(以0X或者0x开头)。对于long型的数值,如果值大于int型数值最大值或者小于int型数值的最小值时,应该在数值的末尾加上L或者l(小写的L),来表示该数值是long型的。如long num=2147483650L;默认情况下,Java中的小数都是double型的,若要声明一个小数是float型原创 2020-05-13 21:42:10 · 159 阅读 · 0 评论 -
理解Java中的JVM与GC
文章目录JVM概念职责JVM运行时的内存分区JVM概念站在操作系统的角度来说,JVM就是一个普通的进程,它和QQ等其他程序进程一样;站在Java程序角度来说,JVM就是它的全部,因为一个Java程序离开了JVM是无法运行的。职责从持久化存储上(一般指的是硬盘)来看,JVM负责加载、识别、解析、存储类文件。并且可以正确的运行这些类文件。除此之外,JVM还可以有效管理在类代码执行过...原创 2020-04-21 19:44:44 · 292 阅读 · 0 评论 -
Java中的引用到底是个什么玩意?
文章目录前言:先理解变量变量有两类关键变量的存储位置再谈引用基本数据类型与引用类型的区别对引用的比喻前言:先理解变量在我们弄清楚引用之前,我们还得从变量讲起:变量有两类关键(1)变量类型基本类型引用类型(2)变量形态局部变量形参属性静态变量一个变量是由它的类型和形态决定的,也就是上边两类的笛卡尔积。变量的存储位置变量在内存中的哪个区域存储,是由它的形态决定的,不...原创 2020-04-21 17:07:36 · 1212 阅读 · 2 评论 -
编程题:在两个长度相等的排序数组中找到上中位数(递归练习)
文章目录问题描述:解题思路:思路1:暴力解法思路2:思路1的改装版思路3:递归版思路4:思路3的改装,迭代版解题代码:思路1代码思路2代码思路3代码思路4代码链接:传送门来源:牛客网问题描述:解题思路:思路1:暴力解法观察题我们可以得到:就是有两个有序的数组,然后把他们合并起来时求出这一串数据的中位数。既然是求新组合数据的中位数,那么我们可以将这两个数组合并为一个数组,然后重新排序...原创 2020-04-17 15:13:28 · 926 阅读 · 0 评论 -
常见算法之二分查找算法
二分查找算法概念利用每次将数据平分的思想将数据分为两部分,然后不断进行查找。这样的算法时间复杂度很低,当有X个数据的时候,最多的查找次数是n=log2X。但是 这个算法的缺点在于只能用于有序的数组序列,如果数组无序,我们需要先将它排序才行。理解为了更好的理解我找了一道很经典的二分查找算法题,供大家理解: 传送门思路1.如题上所说用二分查找算法说明数组已经是一个有序...原创 2020-04-09 23:27:26 · 206 阅读 · 0 评论 -
编程题:最长回文子串
文章目录问题描述:解题思路:解题代码:链接:传送门来源:牛客网问题描述:解题思路:其实这道题的解决思路和这个题的思路是一样的:传送门要解决这个问题,我们大致将它分为2个步骤:(1)得到所有可能出现的字符串(2)对1得到的字符串进行是否是回文字符串的判断(3)如果是回文字符串的话,记录他们的长度并找出他们中的最大值解题代码:import java.util.*;pub...原创 2020-03-26 17:27:40 · 190 阅读 · 0 评论 -
编程题:统计回文
文章目录问题描述:解题思路:解题代码:链接:传送门来源:牛客网问题描述:解题思路:要解决这个问题,我们大致将它分为2个步骤:(1)得到所有可能出现的字符串(2)对1得到的字符串进行是否是回文字符串的判断解题代码:import java.util.Scanner;public class Statistical_Palindrome2 { public stati...原创 2020-03-26 17:19:29 · 188 阅读 · 0 评论 -
编程题:寻找第K大
文章目录问题描述:解题思路:解题代码:链接:传送门来源:牛客网问题描述:解题思路:这个题主要考察的快速排序(这里我们做的事从小到大的排序),何为快速排序:(1)每次找一个基准值(一般的我们将小数组的第一个数作为基准值)将整个数组分为2部分,前半部分比它大,后半部分比它小(2)不断进行递归1步骤,直到无法小数组无法进行分割(小数组里只有一个元素)(3)最后将整个数组排列好解题...原创 2020-03-26 17:07:01 · 588 阅读 · 0 评论 -
理解Java面向对象
文章目录一、面向对象与面向过程二、Java:面向对象编程Java面向对象的三大特征三、面向对象与面向过程的优缺点前言:在说面向对象的时候,我们肯定听过什么是面向过程,这里我们先讲讲这个。一、面向对象与面向过程面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个...原创 2020-03-22 13:34:12 · 130 阅读 · 0 评论 -
万字长文带你搞懂Java中常用的关键字
文章目录一、用于定义访问权限修饰符的关键字private ,default ,protected,public二、用于定义类,函数,变量修饰符的关键字abstract ,final,static,synchronized三、用于定义类与类之间的关键字extends,implements四、用于定义建立实例及引用实例,判断实例的关键字new,this,super, instanceof一、用于定义...原创 2020-03-17 17:14:24 · 188 阅读 · 0 评论 -
Java中重载和重写的区别
重写( Override)重写也称覆盖,重写表示子类中的方法与父类的某个方法名称、参数列表、返回值完全相同,通过子类创建的实例对象调用这个方法,将调用这个子类的定义方法,以达到重写的目的子类重写父类的一些方法时,因为子类可以解决父类的一些问题,重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。子类的访问权限只能比父类的大,如果父类的方法时private,那么子类相当...原创 2020-03-17 16:55:21 · 618 阅读 · 1 评论 -
equals、==和hashCode有什么区别
文章目录前言正文1.功能不同2.定义不同3.运行速度不同4.扩展资料前言在我们平时写代码的时候总是能见到equals与==,好多人感觉他们的用法一样,其实不然,具体请看下边的文章。正文1.功能不同"=="是判断两个变量或实例是不是指向同一个内存空间。"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。最令大家疑惑的可能是这个,这个例子将完美诠释上边的说法:原因是因...原创 2020-03-14 21:36:11 · 565 阅读 · 0 评论 -
编程题:字母统计
文章目录问题描述:解题思路:解题代码:问题描述:输入一个字符串(只包含大写字母),统计每个字母出现的次数,如果里边不包含某个字母,输出的时候应该提示用户它出现的次数为0。解题思路:我们用一个HashMap将每个字母与他们的出现次数联系起来。每个字母作为key,他们出现的次数作为vaule。初始化map,这里比较麻烦的地方就是这里得输入一遍A-Z的字母,将他们的value先都初始化为0。...原创 2020-03-14 21:12:38 · 551 阅读 · 0 评论 -
编程题:进制转换
文章目录问题描述:解题思路:解题代码:链接:进制转换来源:牛客网问题描述:解题思路:首先我们应该弄清楚题上输入的0xA是什么意思:0x就代表后边的数字是个16进制的数字。其次我们应该知道一些有关16进制的知识:十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或a-f)表示,其中:A-F表示10~15,这些称作十六进制数字。清楚这些...原创 2020-03-14 20:59:27 · 357 阅读 · 0 评论 -
编程题:统计数字出现次数
文章目录问题描述:解题思路:解题代码:问题描述:问题:输入任意数量的数字,统计每个数字出现的次数,并从大到小排序解题思路:首先我们知道数字只有0-9,此题我们应该会想到如何让每个数字能与次数联系起来,这个时候我们就应该想到用HashMap来联系二者。. 我们把0-9的数字分别当做key,他们出现的次数当做value,每输入一个数就将它放进map里,如果存在着这个key,则将它的value...原创 2020-03-14 20:43:36 · 1936 阅读 · 0 评论 -
图床小世界(基于Java Servlet搭建的图片服务器)
基于Java Servlet搭建的图片服务器原创 2020-03-12 17:51:53 · 654 阅读 · 0 评论 -
编程题:数字和为sum的方法数
文章目录问题描述:解题思路:初级解题思路:递归思路进阶解题思路:动态规划思路解题代码:初级解题代码:进阶解题代码:链接:数字和为sum的方法数来源:牛客网问题描述:解题思路:初级解题思路:递归思路同 神奇的口袋 的思路是一样的,把里边的数字换成我们输入的sum就行了但是这种做法行倒是行,但是由于递归的做法做这个题的时候回占用大量的栈空间,而且会超时,所以我们得想其他的算法进阶解...原创 2020-03-07 22:54:19 · 371 阅读 · 0 评论 -
编程题:发邮件(错排算法)
文章目录问题描述:解题思路:解题代码:链接:发邮件来源:牛客网问题描述:解题思路:分析题意:就是让我们找什么情况下所有人都会收到错误的邮件。假设a给b和c发邮件,有两种选择: 第一种:a把给b的邮件给c,然后把给c的邮件给b(就是把他两的邮件互换),剩下N-2个人也都这么处理(就是N-2个子问题),那么就有f(n-2)种情况; 第二种:a没有把给b的邮件给c,反而是给了其他的...原创 2020-03-07 22:08:31 · 298 阅读 · 0 评论 -
编程题:年会抽奖(错排算法)
文章目录问题描述:解题思路:解题代码:链接:来源:牛客网问题描述:解题思路:解题代码:原创 2020-03-07 21:50:01 · 703 阅读 · 6 评论 -
编程题:神奇的口袋
文章目录问题描述:解题思路:解题代码:链接:神奇的口袋来源:牛客网问题描述:解题思路:分析题意:往书包里装东西从最后一个开始装:此为第一种情况: 可能的情况是最后一个就是40,剩余空间为0; 或者是最后一个一直往前直到装到某一个的时候装不下了; 再者就是从第二条开始装着装着发现装完了。然后后续的情况就是从倒数第二个开始装一直循环第一种的装法,直到最后一个分析可...原创 2020-03-06 21:59:35 · 481 阅读 · 0 评论 -
编程题:密码验证合格程序
文章目录问题描述:解题思路:解题代码:扩充知识:1.String.matches()用法:2.有关代码里用到的正则表达式:链接:密码验证合格程序来源:牛客网问题描述:解题思路:观察题意密码要求:1.长度超过8位(最好解决)2.包括大小写字母.数字.其它符号,以上四种至少三种(不好弄)3.不能有相同长度超2的子串重复,说明:长度超过2的子串(不好弄)经过看大佬的博客,发现了St...原创 2020-03-06 12:29:29 · 736 阅读 · 0 评论 -
编程题:守形数
文章目录问题描述:解题思路:解题代码:链接:守形数来源:牛客网问题描述:解题思路: 观察题意:守形数就是加入现在又一个数n1,它的平方是n2,n2的除第一位后边的数字n3恰好等于n1 所以我们解题的思路为: 1.求出n2 2.先将n2转换成字符串,用字符串的截取功能将n3截取出来,再次转换为数字 3.n3与n1进行对比即可 但是这里边有坑: 题上说的...原创 2020-03-06 11:36:14 · 536 阅读 · 0 评论 -
编程题:找X
文章目录问题描述:解题思路:解题代码:链接:找X来源:牛客网问题描述:解题思路:1.输入一个值n2.建立一个HashMap,大小为n; 它的key为输入的值,vaule是从0开始每次递增1的值 为什么这么设置呢(后边在验证是否含有X的时候,输出的value即为它对应的下标)3.if(map.containsKey(x)){ 输出Key }else { ...原创 2020-03-04 16:46:03 · 173 阅读 · 0 评论