自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Java】垃圾回收

1、垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。外文:An object is considered garbage when it can no longer be reached from any pointer in the running program.2、如果不及时对内存中的垃圾进行清理,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。......

2022-08-10 21:32:33 4128 1

原创 【Java】对象的实例化

1、new:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法2、Constructor的newInstance(Xxxx):反射的方式,可以调用空参的,或者带参的构造器3、使用clone():不调用任何的构造器,要求当前的类需要实现Cloneable接口中的clone方法4、使用序列化:序列化一般用于Socket的网络传输5、第三方库。......

2022-08-10 20:15:07 1301

原创 【Java】方法区学习

常量池可以看做是一张表,虚拟机指令根据这张常量表找到要执行的类名、方法名、参数类型、字面量(0,"hello")等类型。

2022-08-10 20:02:34 3856

原创 【Java】堆学习

一个进程对应一个JVM的实例,一个JVM实例中只有一个运行时数据区,里面只有一个方法区和堆,一个进程的多个线程共享方法区和堆,那就要考虑线程的安全问题。每个线程各有一套程序计数器、本地方法栈、虚拟机栈。1、一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。2、Java堆区在JVM启动的时候即被创建,其空间大小也就确定了,堆是JVM管理的最大一块内存空间,并且堆内存的大小是可以调节的。3、《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在。......

2022-08-09 20:59:34 242

原创 【Java】虚拟机栈学习

何为线程安全?(1)如果只有一个线程才可以操作此数据,则必是线程安全的。(2)如果有多个线程操作此数据,则此数据是共享数据。如果不考虑同步机制的话,会存在线程安全问题。具体问题具体分析:如果对象是在内部产生,并在内部消亡,没有返回到外部,那么它就是线程安全的,反之则是线程不安全的。...

2022-08-09 20:23:04 141

原创 【Java】线程&程序计数器

1. 线程是一个程序里的运行单元。JVM允许一个应用有多个线程并行的执行2. 在Hotspot JVM里,每个线程都与操作系统的本地线程直接映射3. 当一个Java线程准备好执行以后,此时一个操作系统的本地线程也同时创建。Java线程执行终止后,本地线程也会回收。4. 操作系统负责将线程安排调度到任何一个可用的CPU上。一旦本地线程初始化成功,它就会调用Java线程中的run()方法。......

2022-08-09 19:31:26 717

原创 【Java】JVM学习

Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。4. 某线程调用Runtime类或System类的exit()方法,或Runtime类的halt()方法,并且Java安全管理器也允许这次exit()或halt()操作。3、Java技术的核心就是Java虚拟机(JVM,Java Virtual Machine),因为所有的Java程序都运行在Java虚拟机内部。............

2022-08-08 23:11:56 413

原创 【Java】类加载器

1. 类加载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识。2. ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine(执行引擎)决定。3. 加载的类信息存放于一块称为方法区的内存空间。Car.class.getClassLoader()可以获得加载该class文件的加载器信息。完整的类加载流程图如下所示: 加载 --> 链接(验证 --> 准备 --> 解析) --> 初始化。......

2022-08-08 23:10:55 212

原创 【Java】ArrayList扩容机制学习

addAll()方法的扩容情况与add()稍有不同,它每次扩容传的参数是当前数组长度+传入的数据的长度,如果扩容到当前容量1.5倍后容量仍然不足则选择当前数组长度+传入的数据的长度作为新的容量,比如当前10,传入6,扩容后变为15,15...

2022-08-08 20:47:01 367

原创 【Java】泛型&注解学习

-----------占位。

2022-08-08 20:23:13 89

原创 【Java】Callable&锁&CAS

总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;非公平锁:可以插队,比如有些线程执行时间很短,但是也需要等待拿到锁的线程执行完(3h,3s),synchronized和lock默认都是非公平锁。...

2022-08-05 13:47:39 193

原创 【Java】线程池学习(重要)

Executor框架在Java 5中被引入,Executor 框架是一个根据一组执行策略调用、调度、执行和控制的异步任务的框架。无限制的创建线程会引起应用程序内存溢出,所以创建一个线程池是个更好的的解决方案,因为可以限制线程的数量并且可以回收再利用这些线程。利用 Executor 框架可以非常方便的创建一个线程池。...

2022-08-04 22:25:25 284

原创 【Java】关于线程类的一些常见问题

在一个线程中直接调用另一个线程的run()方法只是进行普通的方法调用,并不会启动线程。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。1、java中有几种方法可以实现一个线程?...

2022-08-04 20:59:23 132

原创 【Java】进程&线程学习

进程:进程可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)进程是具有一定独立功能的程序、它是系统进行资源(内存)分配和调度的最小单位,重点在系统调度和单独的单位,也就是说进程是可以独立运行的一段程序。(进程是动态的,程序是静态的)线程:线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源。(拥有自己的栈).........

2022-08-03 23:28:26 188

原创 【Java】Get和Post对比&&Session

此方法会获得专属于当前会话的Session对象,如果服务器端没有该会话的Session对象会创建一个新的Session返回,如果已经有了属于该会话的Session直接将已有的Session返回(实质就是根据JSESSIONID判断该客户端是否在服务器上已经存在session了)原来有Session就直接返回,没有Session自动创建新的session对象。requst的范围只在转发中有效。Cookie数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端可以清除cookie。...

2022-07-25 22:27:33 325

原创 【Java】Servlet&&Jsp

destory销毁servlet对象的时候调用。Servlet是运行在服务端的Java小程序,是sun公司提供的一套规范(接口),用来处理客户端的请求、响应动态资源给浏览器。构造方法创建servlet对象的时候被调用。Servlet只创建一次,是单例模式(这个类的对象只会有一个)。所有用户访问后,得到的结果都是一样的,称为静态资源.静态资源可以直接被浏览器解析。JSP的作用用java语言(+html语言)开发动态资源的技术!Servlet的作用用java语言开发动态资源的技术!...

2022-07-25 21:46:15 199

原创 【Java】数据库三范式学习

但如果某个数据D,它只依赖于数据A,或者说,A一确定,则D也可以确定,此时我们就称为“数据D部分依赖于数据A——可见部分依赖是指某个非主键字段,依赖于联合主键字段的其中部分字段。如果确定一个表中的某个数据组合(A,B),则就可以确定该表中的其他另一个数据(C),则我们说C依赖于(A,B)(此时A,B通常就是做出主键)。在一个具有主键的表中,假设主键为A,其必然其他非主键都依赖于该主键,比如B依赖于A,C依赖于A,D依赖于A。实际上,一个表只要有主键,则其他非主键一定是依赖于主键的。...

2022-07-18 20:52:35 246

原创 【Java】JDBC初步学习

在JDBC里面Java这个公司只是提供了一套接口Connection、Statement、ResultSet,每个数据库厂商实现了这套接口,例如MySql公司实现了MySql驱动程序里面实现了这套接口,Java程序员只要调用实现了这些方法就可以实现对MySql数据库的增删改查。|-ResultSetexecuteQuery(Stringsql)执行的静态的查询sql语句。|-intexecuteUpdate(Stringsql)执行静态的更新sql语句。...

2022-07-18 20:46:38 100

原创 【Java】异常类型学习

/可以通过自定义一些异常来达到一些特殊的目的继承Exception都是编译时异常。继承自RuntimeException运行时异常。

2022-07-18 20:27:13 84

原创 【Java】数据库学习

参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。实现无限分类的方法,添加一个parent_id,使用parent_id来实现,后续添加的属性只要是符合之前的属性类,就把parent_id赋值之前的属性类id。2.3这里的字符都是指现实中可见的一个“符号”,而不是字节。cd%’//这里要找的是包含ab%cd字符的字符。cd%’//这里要找的是包含ab'cd字符的字符。ab%’//这里要找的是_ab开头的字符。...

2022-07-18 19:58:08 174

原创 【Java】集合框架学习(List、Set、Map)

我们知道HashSet保证元素唯一,可是元素存放进去是没有顺序的,那么我们要保证有序?在HashSet下面有一个子类LinkedHashSet,它是链表和哈希表组合的一个数据存储结构。

2022-07-17 21:47:54 170

原创 【Java】习题练习及总结(持续更新)

Astaticmethodcancallonlyotherstaticmethodsandcannotcallanon-staticmethodfromit.//静态方法属于类,不属于对象(实例化)//静态方法只能访问静态数据,不能访问非静态数据(实例化的变量)//静态方法只能访问静态方法,不能访问非静态的方法。//类加载的时候,先加载静态成员和静态代码块,非静态的成员不能放进静态代码块中,类加载1.静态成员和静态初始化块2.实例成员和实例初始化块3.构造方法。...

2022-07-15 20:10:03 815

原创 【Java】Collection和Collections的区别

进行排序、搜索以及线程安全等各种操作。Collections是一个集合类的。Collections提供一系列的。Collection是一个集合的。Collection提供了对。进行基本操作的通用接口方法。

2022-07-14 21:02:49 402

原创 【Java】包装数据类型学习

Java是纯面向对象的语言,除了基本数据类型以外都是引用数据类型,用一个类来描述。所有引用数据类型的默认值都是null基本数据类型和包装数据类型的互相转换有装箱和拆箱的过程,但是在使用时可以把包装数据类型当成基本数据类型来使用。byte Byteshort Shortint Integerlong Longfloat Floatdouble Do

2022-07-14 15:29:51 172

原创 【Java】学习之this和super

this()this.super.super()有以上四种类型 this()在这里表示调用了类中重载的方法,this在这里就等于是这个类实例化的对象。super()在这里表示调用了父类中的方法,super在这里就等于是父类实例化的对象。(因为实例化子类的时候父类会被先实例化)this.className在这里就等于是这个类实例化的对象的属性当然super.className在这里就等于是父类实例化的对象的属性所以可以知道,this和super都是可以用来表示一个实例化对象的,一个是本类,一个是父类而this

2022-07-13 21:56:08 323

原创 Java学习之面向对象:抽象、封装、继承、多态

抽象:1、抽象方法是没有方法体,如果这个类里面有抽象方法,这个类必须变成抽象类。2、如果这个类是抽象类,并不要求这个类一定要有抽象方法3、抽象类里面可以有普通方法,也可以有抽象方法。4、如果一个类是抽象类,那么这个类就不能被new实例化,只能被其他类继承。5、抽象方法可以理解为父类(抽象类)定义的一个模板或者规范(自己本身不实现),子类必须实现这个抽象方法,如果子类不想实现这个方法,那么这个子类也必须要变成抽象类。 封装:学习大佬文章Java面向对象之封装_Guarding and trust的博客-CSD

2022-07-13 21:28:45 148

原创 Java学习之值传递&&引用传递

今天学习java的过程中发现了一个问题,就是基本数据类型和引用数据类型对于'='是如何进行的。查阅了一些资料,有了一些心得。首先是基本数据类型,以int为例:int num = 10;很明显就是把数值100传递给了变量test。String str = "hello";通过学习了解到字符串类型的数据是引用数据类型,那么这里的赋值是如何进行的?学习了解到在Java虚拟机中存在stack和heap,stack主要用来存放一些变量,而我们实例化的对象主要放在heap。如果想要把这两个无关的变量和对象建立起联系,就

2022-07-13 19:41:19 163

原创 LeetCode学习之反转输出链表

学习

2022-07-13 09:19:35 112

原创 LeetCode刷题之用两个栈实现队列

学习

2022-07-12 21:31:50 166

原创 Java学习之接口学习

接口学习主要根据大佬文章,本文主要是对大佬文章的一些摘要原文链接:https://blog.csdn.net/qq_19782019/article/details/80259836个人理解:接口是一种特殊的类,里面全部是public static final的常量和public abstract类型的方法。接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准。或者我们可以直接把接口理解为100%的抽象类,即接口中的方法必须全部是抽象方法。接口其实是一个特殊的类,它拥有方法

2022-07-12 21:11:48 98

原创 Intellij IDEA使用过程中认为比较重要的快捷键(持续更新)

快捷键:

2022-07-12 20:23:06 46

原创 Java学习内容之需要辨识的英文单词(持续更新)

学习Java编程过程中遇到的一些个人认为比较重要的单词

2022-07-12 20:21:25 129

原创 Java学习之随机数&&声明方法原则

个人学习

2022-07-12 20:12:47 211

原创 Java学习之强制类型转换&&注解

强制类型转换:char ch = 'a';System.out.println(ch);System.out.println(ch+1);//97+1 从小到大自动类型转换System.out.println(ch+2);//97+2 从小到大自动类型转换System.out.println((char) (ch+1));//b 从大到小强制类型转换System.out.println((char) (ch+2));//c 从大到小强制类型转换从大到小需要强制类型转换,可能会丢失精度(装水的杯子

2022-07-12 20:02:38 508

原创 Java学习之Path路径

PATH是路径的意思,PATH环境变量中存放的值,就是一连串的路径。不同的路径之间,用英文的分号(;)分隔开。系统执行用户命令时,若用户未给出绝对路径,则首先在当前目录下寻找相应的可执行文件、批处理文件(另外一种可以执行的文件)等。若找不到,再依次在PATH保存的这些路径中寻找相应的可执行的程序文件。系统就以第一次找到的为准;若搜寻完PATH保存的所有路径都未找到,则会显示错误信息。......

2022-07-12 19:54:30 1501

原创 Java学习笔记之JDK,JRE,JVM

args是argument的复数,因为前面是字符数组所以是复数,argument是参数。javac 文件名.java 编译生成文件名.classjava 文件名.class 运行.class文件,即运行程序JDK=JRE+Java编译工具 JRE=JVM+Java核心类库JDK:JAVA开发工具包(JAVA Development KIT) 开发的最小单位JRE:JAVA运行时环境(JAVA runtime environment) 运行的最小单位JVM:JAVA虚拟机(JAVA virtual mac

2022-07-12 19:52:38 115

原创 LeetCode刷题之从尾到头打印链表

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

2022-07-10 21:22:07 90

原创 LeetCode刷题之替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

2022-07-10 19:32:15 165

原创 【JAVA】归并排序初学

归并排序主要用于两个或两个以上的有序表合并成一个新的有序表归并排序有多路归并排序、两路归并排序 , 可用于内排序,也可以用于外排序。目前只学了内排序的两路归并方法--其余后续学习了再补上时间复杂度o(nlog2n)由于归并排序每次划分时两个子序列的长度基本一样,所以归并排序最好、最差和平均时间复杂度都是nlog2n。两路归并排序算法思路:主要是分治法分解: 把待排序的 n 个元素的序列分解成两个子序列, 每个子序列包括 n/2 个元素.治理: 对每个子序列分别调用归并排

2021-12-14 23:28:15 469

原创 【JAVA】二维数组学习

//二维数组学习//一维数组中的每个元素都是一个数组,这样数组就是二维数组定义:int [][] arr0= {{1,3},{2,4}};//--直接定义--声明和赋值要在一个表达式中完成int [][] arr1=new int [2][3];//--开辟空数组--int [][] arr2=new int [3][];//--只定义一维数组,第二维是空--//--JAVA中多维数组不必都是规则矩阵形式--练习://遍历输出二维数组中所有数的加和int[][] arr_t

2021-12-14 09:44:16 339

空空如也

空空如也

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

TA关注的人

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