![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java学习
我叫程序猿
致力于让解题速度超过LeetCode更新速度
展开
-
Apache Directory Studio安装和使用教程
1.简介网上的Apache Directory Studio教程基本都是千篇一律,没有一个详细的教程介绍。自己在不断的摸索过程中,试了许多方法,终于解决了Apache Directory Studio连接LDAP服务的方法。下面进行总结。2.步骤第一步,安装完软件之后,点击LDAP,开始进行连接第二部,点击connection,Connection Name自己随便起一个,Hostname为你开启docker的服务器ip,选好之后,可以点击Check Network parameter,如果显示成原创 2021-05-17 15:10:24 · 5118 阅读 · 4 评论 -
详解Java中外部类和内部类的区别和联系
什么是内部类?内部类是定义在一个中的类,有一种嵌套的意思。包含内部类的类被称为外部类。外部类通常使用public修饰,极少情况下使用default修饰;内部类通常使用private修饰,表示私有;外部类可以访问内部类的所有方法和属性;...原创 2021-05-14 11:28:19 · 405 阅读 · 0 评论 -
【图文详解】深入理解JVM垃圾回收机制以及垃圾收集器与内存分配策略
1.前言Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的围墙,墙外面的的人想进去,墙里面的人想出来。—《深入理解Java虚拟机》2.概述首先我们需要理解我们为什么需要理解垃圾回收和内存分配策略,Java经过这么多年的发展,相关的技术已经相当成熟,那我们为何还要去了解垃圾回收呢?原因很简单,当我们需要排查各种内存泄漏和内存溢出问题时,或者当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些技术实施必要的管理和调节,如果你不熟悉和了解,那么它就会阻碍你程序性能的提升。3.哪些内存需要原创 2021-05-10 18:32:50 · 159 阅读 · 0 评论 -
详解Java中的equals和hashCode()覆写 --->覆写equals必须要覆写hashcode吗?
1.元素的比较hashCode和equals用来标识对象,两个方法可以协同工作来判断两个对象是否相等。对象通过调用Object.hashCode()生成哈希值,根据生成的哈希将数据散列开。由于任意两个对象对存在哈希值相等导致哈希冲突,因此需要调用equals方法进行值的比较。如果hashCode不相等,那么,两个对象肯定不同,可以加快处理冲突的效率,如果hashCode相等,再进一步使用equals判断;Object类定义中对hashCode和equals有如下要求:如果两个对象的equals的结原创 2021-05-08 13:55:48 · 357 阅读 · 0 评论 -
【图文详解】Java虚拟机内存管理
1. 概述对于C、C++程序员来说,在内存管理领域,他们有着绝对的话语权,但是他们也是底层的劳动人民。即他们有着对象的所有权,但是也要负责每一个对象的开始到结束。对Java程序员来说,在虚拟机自动内存管理机制下,他们不需要再手动的为每一个new操作去写对应的清空操作,也不容易出现内存泄漏和内存溢出问题,但是一旦出现这类问题,如果不了解虚拟机的工作方式,那么将会是灾难性的。2.运行时数据区域Java虚拟机在执行Java程序的时候,会将它所管理的内存划分为若干个不同的数据区域。每个区域的作用各不相同。有原创 2021-05-07 20:19:18 · 164 阅读 · 1 评论 -
KMP算法图文超详细剖析,附例题实战演练以及代码
当你看到这个问题的时候,说明你已经领先了部分人!!!话不多说,先来一道题目!LeetCode #21给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。解析:此题可以使用暴力直接解,在haystack上面以此遍历,时间复杂度最差为O((m-n)*n);另外一种解法就是使用KMP算法,在介绍KMP算法之前,我们稍微分析一下上面的暴力解,如果你深入思考上面这一道题目,你会发原创 2021-04-29 21:01:42 · 639 阅读 · 0 评论 -
一句话理解Java继承,你不懂算我输!
1.继承的定义继承就是使用已经存在的类作为基础,在此基础上建立新类的技术,新类可以增加自己的独有的数据以及方法功能,同时也可以使用父类的方法功能。(父类的private除外)2.继承的注意点你可以有多个子类,但是你不能有多个父类,简单来说,你可以有多个孩子,但是你不能有多个爸爸。子类抛出的异常必须是父类异常的子类异常,例如:父类抛出IOException异常,子类不能抛出Exception异常,因为IOException是Exception的子类。3.Java学习任重道远,继承的简单...原创 2021-04-27 17:05:39 · 113 阅读 · 0 评论 -
【图文详解】HashMap底层数据结构总结归纳,附常见HashMap面试题。
这篇文章全自己手码,写的过程中也参考了不少教程,文后也会给出。HashMap在Java中属于集合一类,集合是Java基础核心内容,而在集合中,集合又分为Collections和Map,本文的HashMap就是Map中的一个重点和难点。如果你认为HashMap比较简单,那么你可能对HashMap的认识还不够深入,打个比方,问:为什么HashMap中数组的长度一定是2的次幂?看完本篇内容,希望你能够对HashMap有一个全新的认识;本文的脉络是从底层数据结构进行分析,遇到问题,我们再深入探讨,采取深度优先原创 2021-04-27 15:15:14 · 843 阅读 · 0 评论 -
MySQL5.7通过压缩包直接安装(没有点击下一步)详细教程,亲测有效
第四步中,编辑ini文件时,如果发现目录中不存在data文件夹,不要手动自己建立。目录中最后的""不要弄丢了。第六步初始化数据完成之后,会出现data文件夹,那么恭喜,初始化成功!原创 2021-04-02 09:36:50 · 124 阅读 · 0 评论 -
WIN10安装最新版MySQL-8.0.23详细教程 附发生系统错误 5 拒绝访问解决方法
打开这个网页https://dev.mysql.com/downloads/mysql/选择图中红色的框,第二个是离线安装,第一个是在线,我们选择第二个3.下载完成后是这样的图标双击打开安装,这里选择最下面的Custom。点开图中的加号,因为我安装过了,拿的是别人的图片,但是不影响,这里选择8.0.23版本,再点击绿色的右箭头这里的3306是端口号,记住就行,不用管,后面是输入密码,建议是123456这里设置不开机启动,以及为自己的MySQL命名。自己选一个就行,后面一直选择下一步,.原创 2021-03-30 21:12:33 · 956 阅读 · 0 评论 -
小白也能看的懂的SpringBoot自动装配详解
1.SpringBoot的特点1.1依赖管理父项目做依赖管理依赖管理 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version></par原创 2021-03-29 20:19:41 · 114 阅读 · 0 评论 -
Java中的Bean原理详解
什么是Java中的Bean?JavaBean实际上是指一种特殊的Java类,它通常用来实现一些比较常用的简单功能,并可以很容易的被重用或者是插入其他应用程序中去。所有遵循“一定编程原则”的Java类都可以被称作JavaBean,Bean的中文含义是“豆子”JavaBean是一个遵循特定写法的Java类,是一种Java语言编写的可重用组件,它的方法命名,构造及行为必须符合特定的约定:1、这个类必须具有一个公共的(public)无参构造函数;2、所有属性私有化(private);3、私有化的属性必须通原创 2021-03-29 19:51:24 · 1231 阅读 · 0 评论 -
超简单易懂的缓存穿透,缓存击穿,缓存雪崩。
1.缓存穿透1.1什么是缓存穿透?简单的理解就是查询一个数据库一定不存在的数据。因为缓存中没有该数据,所以所有的查询全部指向数据库,数据库承受不住,容易崩溃。(注:正常使用缓存的方式是,查询数据先进行缓存查询,缓存中数据不存在,或者数据过期,再对数据库进行查询,并把查询到的对象放入缓存。如果不存在,则不放。)解决办法:(1)使用布隆过滤器如果不懂可以直接把布隆过滤器理解为一个可以快速查询数据库中是否存在该数据的工具(2)缓存空对象当查询到数据不存在时,返回一个空值给缓存Redis。(做一个标原创 2021-03-29 14:00:29 · 157 阅读 · 0 评论 -
Java中程序的生命周期
程序的生命周期程序的生命周期是指应用程序启动到应用程序结束整个阶段的全过程。一段Java Code,大体分为:编译、类加载、运行、GC。编译Java语言的编译期其实是一段“不确定 ”的过程,因为可能是一个前端编译器把*.java文件转变为.class文件的过程;也可能是指JVM的后端运行期编译器(JIT编译器)把字节码转变为机器码的过程;还可能是指使用静态提前编译器(AOT编译器)直接把*.java文件编译成本地机器码的过程。但是在这里我们说的是第一类。也是符合我们大众对编译认知的。编译在这个时间原创 2021-03-24 09:53:38 · 871 阅读 · 0 评论 -
Java中的main()方法
main方法是一个特殊的方法,是程序执行的入口,一个Java程序从main方法开始执行。Java虚拟机在执行Java程序之前会事先分配一个主线程,然后在主线程里面执行我们这个main方法,所以我们经常说main方法叫主线程!main方法结构如下: public static void main(String[] args){ /*代码块*/ }...原创 2021-03-24 09:35:12 · 93 阅读 · 0 评论 -
Java中pringln和print的区别
println()方法在输出括号里指定的字符串后添加回车,光标停在下一行,而print()方法在输出括号里指定的字符串后就结束操作,而不再添加回车,光标停留在字符串最后一个字符的右边。例如:通过println()方法输出循环数字。代码如下: public class Demo { public static void main(String[] args) { for(int i=1;i<6;i++) System.out.printl原创 2021-03-24 09:22:26 · 235 阅读 · 0 评论 -
java中关键字缺省(default)
缺省(quē shěng),又译“默认”。即系统默认状态,意思与“默认”相同。缺省值也叫默认值,就是如果你不想或不需要作任何特殊的选择,电脑里就按照它已经配置好的参数进行设置。缺省(default)作为计算机术语,是指在无决策者干预情况下,对于决策或应用软件、计算机程序的系统参数的自动选择。默认选项的设计可以在用户不须决策的状况下就可以基础地使用上述的软件与程序。...原创 2021-03-24 08:57:52 · 5700 阅读 · 0 评论 -
【图文详解】Java中权限修饰符public、protected、defalut、篇riveted、void、class
1.class关键字class 是java的关键字, 在声明java类时使用,用class关键字创建新的类,例如:定义一个点(Point)类, 具有以下属性和方法:■ 属性: x坐标, y坐标■ 方法: 1.设置x,y的坐标值; 2.输出坐标的信息实现代码如下: class Point { public: void setPoint(int x, int y);原创 2021-03-24 08:56:21 · 595 阅读 · 0 评论 -
Java 的IO技术--输入输出流
1. IOIO是指Input/Output,即输入和输出。在Java中,InputStream代表输入字节流,OuputStream代表输出字节流,这是最基本的两种IO流。Reader和Writer表示字符流,字符流传输的最小数据单位是char。总结:如果数据源不是文本,就只能使用InputStream,如果数据源是文本,使用Reader更方便一些。Writer和OutputStream是类似的。2.File对象在计算机系统中,文件是非常重要的存储方式。Java的标准库java.io提供了File原创 2021-03-21 19:23:58 · 133 阅读 · 0 评论 -
详解StringBuffer,StringBuilder,String之间的相互转换
1.StringBuffer以及String之间的相互转换(StringBuilder一样)有时候,string在解题的时候不能更改string的大小,所以我们往往会采用StringBuffer,动态的更改字符串,但是当题目要求返回String时,我们必须要将StringBuffer转换回来。主要的方法如下1.String—> StringBuffer构造法: String s="Hello"; StringBuffer str=new StringBuffer(s);ap原创 2021-03-17 09:44:12 · 691 阅读 · 0 评论 -
Java中的链表及ListNode超详解,附案例。
链表是一种数据结构:由数据和指针构成,链表的指针指向下一个节点。 链表 是用Java自定义实现的链表结构。废话不多说,上代码编程题当中,当需要用到ListNode的时候需要这样初始化,同时,下面的代码默认ListNode中装的是int,这里的int也可以改为其他,如char,string,class ListNode { //类名 :Java类就是一种自定义的数据结构 int val; //数据 :节点数据 ListNode next;原创 2021-03-13 16:16:05 · 5894 阅读 · 0 评论 -
ArrayList和LinkedList的关系
ArrayList容器类首先,ArrayList和LinkedList都是List接口的实现类。ArrayList是List接口的实现类。是List存储特征的具体实现;ArrayList底层是用数组实现的存储。特点:查询效率高,增删效率低,线程不安全。Vector是线程安全的。实例化ArrayList容器List<String> list=new ArrayList<>();方法 add();get(int index)得到该位置索引的元素;size()返回列表中原创 2021-03-13 08:44:44 · 150 阅读 · 1 评论 -
JAVA中Arrays.toString()的用法
由于在Java编程若是直接输出数组,会发现得到的是一些地址;如@67b64c45 int[ ] a={1,2,3}; System.out.println(a) //会打印出数组引用的值,不打印出数组; System.out.println(Array.toString(a)); //打印数组元素的值,实际上是返回一个由字符串组成的数组,是一种类方法,静态的因此使用Array.toString得到数组的内容JDK提供的java.util.Arrays类,包含了常用的数组操作,方便日常开发。Ar原创 2021-03-12 20:08:35 · 2523 阅读 · 0 评论 -
Java虚拟机超详解
1.定义虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java技术的核原创 2021-03-11 09:33:01 · 125 阅读 · 1 评论 -
Java中局部变量的超详解
如果在成员方法内定义一个变量,那么这个变量被称为局部变量。(如下面代码中的成员方法getName())局部变量在方法执行时被创建,在方法执行结束时被销毁。局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误。例如,在项目中创建一个类文件BookTest,在该类中定义 getName() 方法,在 getName() 方法中声明 int 型的局部变量 id,并赋值为 0,代码如下: public class BookTest { public static void main(St原创 2021-03-11 09:26:58 · 1616 阅读 · 0 评论 -
Java中成员变量的超详解
什么是成员变量?成员变量是在类体中定义的变量,即全局变量,成员变量用于定义对象的状态。例如Student类有name、age、sex等成员变量分别表示姓名、年龄、性别等状态。(一定要注意是类体中的变量,不是其他方法中的,其他方法中的变量是局部变量,互相之间不能使用。) public class Student{ public String name; // 姓名 public int age; // 年龄 pub原创 2021-03-11 09:23:43 · 3961 阅读 · 0 评论 -
数字如何转换成字符串
String str=String.valueOf(i); //数字转换为字符串i 为一个数字,具体见String.valueOf()的解释说明当i成为一个字符串时,就可以对其每个位置进行判断,如: for(int j=0;j<str.length();j++){ if (str.charAt(j)=='1'){ count++; }}判断str中每个位置的数组是否为1。...原创 2021-03-09 20:29:23 · 1625 阅读 · 0 评论 -
Java中HashMap的理解-----简单易懂
什么是HashMap?HashMap是一个散列表,存储的内容是键值对映射(key–value)。HashMap是无序的,不会记录插入的顺序HashMap的Key和Value类型可以相同也可以不相同;如HashMap<String,Integer> map=new HashMap<>();常用方法总结和解释1.添加元素map.put(‘abc’,1);2.访问元素使用get(key)来得到键值是key的valuemap.get(‘abc’) —printl原创 2021-03-09 11:25:57 · 231 阅读 · 0 评论 -
字符串中toCharArray()的作用
作用:该方法的作用是返回一个字符数组,该字符数组中存放了当前字符串中的所有字符。举例:String S1=new String(“我爱中国”)Char[ ] C=S1.toCharArray( ); —C=[‘我’,‘爱’ ,‘中’, ‘国’]System.println(C.length) ----输出4System.println© ----输出 我爱中国System.println(C[0]) ----输出 我...原创 2021-03-09 08:50:11 · 2176 阅读 · 0 评论 -
理解Java中的Collections.sort排序
1.Collections,sort简介Collections类中的sort方法可以对实现了List接口的集合进行排序。这个方法假定列表元素实现了Comparable接口。什么是Comparator接口,以及什么是Comparator接口。简单介绍一下便于理解!Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。Comparator强行对某个对象collection进行整体排序的比较函数。可以将 Com原创 2021-03-08 21:03:04 · 458 阅读 · 0 评论 -
对象的拷贝--深拷贝,浅拷贝,延迟拷贝详细理解
1.对象拷贝的分类对象拷贝(Object Copy)就是将对象的属性拷贝到另一个有着相同类 类型的对象中,目的是为了在新的上下文中复用对象的部分或者全部数据。Java中有三种类型的对象拷贝:浅拷贝(Shallow Copy),深拷贝(Deep Copy),延迟拷贝(Lazy Copy)2.浅拷贝浅拷贝是按位浅拷贝对象,会创建一个新的对象,这个对象有着原始对象属性值的一份精确拷贝如果属性是基本类型,如Int,Double,String,那么拷贝的就是基本类型的值,被拷贝的对象的基本类型改变,拷原创 2021-03-08 09:38:59 · 753 阅读 · 1 评论 -
数组知识点
1.Java中数组可以为null或者[ ],因此判定数组时,需要用以下代码C或者C++中空即是null;if(suquence==null || sequence.length==0) return false;List item原创 2021-03-06 17:31:10 · 77 阅读 · 0 评论 -
链表知识点
1.声明一个新的链表// An highlighted blockListNode list=new ListNode(-1);以上list常用来返回一个新的链表2.声明一个节点变量// An highlighted blockListNode cur=list;此时cur为节点变量,可以用来指代节点,如cur=cur.next;cur可以用来移动。...原创 2021-03-06 10:33:42 · 41 阅读 · 0 评论 -
队列知识点
Java中关于Queue的使用定义:队列是一种集合,实行先进先出,只用两种问题描述:原因分析:解决方案:欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入定义:队列是一种集合,实行先进先出,只用原创 2021-03-05 13:27:47 · 337 阅读 · 0 评论