自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM虚拟机栈

文章目录1.虚拟机栈1.1虚拟机栈出现的背景1.2 内存中的栈与堆1.3 虚拟机栈的基本内容1.3.1 虚拟机栈的特点1.3.2 虚拟机栈的异常1.3.3 设置栈内存大小2.栈的存储单位2.1 栈的运行原理1.虚拟机栈1.1虚拟机栈出现的背景由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。1.2 内存中的栈与堆首先栈是运行时的单位,而堆是存储的单位

2022-01-14 22:10:00 150 1

原创 JVM内存管理

文章目录分代策略新生代,老年代,永久代方法区方法区的演进过程方法区结构常量池直接内存JVM常用调优参数堆收集器设置垃圾回收统计信息并行收集器设置堆大小设置吞吐量优先的并行收集器响应时间优先的并发收集器分代策略Java Heap java虚拟机中管理内存的最大一块 堆是被所有线程共享的内存区域。在虚拟机启动的时候创建。所有的对象实例以及数组都要在堆上分配。栈帧只能存储指向堆中的对象和数组的引用。 对象只能由垃圾回收器移除。Java堆是收集器管理的主要区域, GC堆 采用的分代收集的算法。新生代

2022-01-14 22:07:28 466

原创 如何实现并发的原子性、可见性、有序性

文章目录原子性可见性有序性如何去实现原子性是指一个操作是不可中断,即使多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰;简单看几个例子:1)int x=10; 2)int y=x; 3)x++; 4.x=x+1;这上面四个语句,区分哪些是原子操作,哪些非原子操作?1)第一句,直接把10赋值给x的工作内存,这个操作是不可再分的,并且很直接,这就是原子操作;2)第二句,先读取x的值,然后将x的值写入到y的工作内存,这个可分割,并且不直接,这就不是原子操作 ;3)第三句,其实和第四句

2022-01-11 21:44:59 284

原创 JAVA内存屏障

文章目录指令重排序什么是内存屏障synchronized和volatilevolatile保证原子性吗?指令重排序程序在运行时内存实际的访问顺序和程序代码编写的访问顺序不一定一致,这就是内存乱序访问。内存乱序访问行为出现的理由是为了提升程序运行时的性能。这种内存乱序问题主要是由两种原因引起的:1.写内存屏障(Store Memory Barrier): 在指令后插入Store Barrier, 能让写入缓存中的最新数据更新写入主内存, 让其他线程可见强制写入主内存, 这种显示调用, CPU就不会因

2022-01-11 21:23:41 484

原创 JVM--基础入门

1.JVM执行引擎包含三部分:解释器,即时编译器,垃圾回收器高级语言翻译为机器指令,主要是由执行引擎完成的。解释器(解释运行,把字节码翻译为机器指令,主要负责翻编译器性能)。jit及时编译器(编译器后端,主要是把热点代码缓存起来,主要负责编译器性能)组成执行引擎。JVM 是 java虚拟机,是用来执行java字节码(二进制的形式)的虚拟计算机。jvm是运行在操作系统之上的,与硬件没有任何关系。通过java指令 将字节码文件.class 进行解析,首先class文件先通过classlo.

2022-01-09 11:19:16 229

原创 Spring04

Spring事务操作先附上代码框架jdbc.propertiesprop.driverClass=com.mysql.jdbc.Driverprop.url=jdbc:mysql://localhost:3306/tb2prop.userName=rootprop.password=12345678bean1.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframewor

2021-09-20 22:51:07 62

原创 Spring03

1.AOP(1)面向切面编程(方面),利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。(2)通俗描述:不通过修改源代码方式,在主干功能里面添加新功能(3)使用登录例子说明 AOP2.AOP底层使用动态代理2.1使用 JDK 动态代理先附上代码框架(1)创建接口,定义方法public interface UserDao { public int add(int a,int b); public Str

2021-09-20 21:11:19 69

原创 Spring02

1.IOC之引入外部属性文件以连接数据库为例jdbc.properties文件prop.driverClass=com.mysql.jdbc.Driverprop.url=jdbc:mysql://localhost:3306/tb2prop.userName=rootprop.password=12345678bean.xml 引入 context 名称空间xmlns:context="http://www.springframework.org/schema/context"&l

2021-09-20 18:31:40 49

原创 Spring01

1.spring是什么Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,它以IOC控制反转和AOP面向切面编程为核心,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术;还有个强大之处就是可以整合众多的第三方开源框架和类库,所以逐渐成为使用最多的 Java EE 企业级应用的开源框架。特点(1)方便解耦,简化开发(2)Aop 编程支持(3)方便程序测试(4)方便和其他框架进行整合(5)方便进行事务

2021-09-19 21:23:41 72

原创 JavaSE -- hash冲突和内存溢出

hash冲突源码:1.8final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int n, i; if ((tab = table) == null || (n = tab.length) == 0) //首次进入直接进行扩

2021-08-17 22:10:49 144

原创 JavaSE --软引用和弱引用

我们都知道垃圾回收器会回收符合回收条件的对象的内存,但并不是所有的程序员都知道回收条件取决于指向该对象的引用类型。这正是Java中弱引用和软引用的主要区别。如果一个对象只有弱引用指向它,垃圾回收器会立即回收该对象,这是一种急切回收方式。相对的,如果有软引用指向这些对象,则只有在JVM需要内存时才回收这些对象。弱引用和软引用的特殊行为使得它们在某些情况下非常有用。例如:软引用可以很好的用来实现缓存,当JVM需要内存时,垃圾回收器就会回收这些只有被软引用指向的对象。而弱引用非常适合存储元数据,例如:存储Clas

2021-08-17 21:41:29 178

原创 JavaSE -- 线程池原理

线程池(ThreadPool)是一种基于池化思想管理和使用线程的机制。它是将多个线程预先存储在一个“池子”内,当有任务出现时可以避免重新创建和销毁线程所带来性能开销,只需要从“池子”内取出相应的线程执行对应的任务即可。池化思想在计算机的应用也比较广泛,比如以下这些:内存池(Memory Pooling):预先申请内存,提升申请内存速度,减少内存碎片。连接池(Connection Pooling):预先申请数据库连接,提升申请连接的速度,降低系统的开销。实例池(Object Pooling):循环

2021-08-17 21:08:52 953

原创 java入门 -- 深浅拷贝及克隆

1深拷贝2浅拷贝克隆

2021-08-17 19:29:20 90

转载 JavaSE --网络编程

文章目录InetAddress类IP地址端口号SocketTCP网络编程三次握手,四次挥手UDP网络编程URL编程InetAddress类Internet上的主机有两种方式表示地址:域名(hostName):www.atguigu.comIP 地址(hostAddress):202.108.35.210netAddress类主要表示IP地址,两个子类:Inet4Address、Inet6Address。 InetAddress 类 对 象 含 有 一 个 Internet 主 机 地 址 的 域

2021-08-10 22:33:54 291

转载 JavaSE -- IO流

file类绝对路径:是一个固定的路径,从盘符开始相对路径:是相对于某个位置开始路径分隔符:windows:\unix:/ import jdk.nashorn.api.scripting.ScriptObjectMirror;import org.junit.Test;import java.io.File;import java.io.IOException;import java.util.Date;/** * 1. File类的一个对象,代表一个文件或一个文件目录(

2021-08-09 16:23:03 247

转载 JavaSE --集合

1

2021-08-07 17:24:42 1296

转载 java入门 -- 面向对象关键字及内部类

1static

2021-07-28 13:02:18 112

转载 java入门 -- 面向对象之多态

1 多态▪ 多态是同一个行为具有多个不同表现形式或形态的能力。▪ 父类的引用指向子类的对象(可以应用在抽象类和接口上)。

2021-07-27 19:27:50 49

转载 java入门 -- 异常处理

异常1 异常的分类▪ 在Java语言中,将程序执行中发生的不正常情况称为“异常”,Java在编译或运行或者运行过程中出现的错误 (例如要求用户输入数字,但是用户输入了一串字符串,此时就会发生异常)异常的根接口Throwable,其下有2个子接口,Error和Exception。▪ Error:指的是JVM错误,这时的程序并没有执行,无法处理;▪ Exception:指的是程序运行中产生的异常,用户可以使用处理格式处理。运行时异常▪ 是指编译器不要求强制处置的异常。一般是指

2021-07-24 10:50:17 184

转载 java入门 -- 面向对象之继承

1 继承1.1 何为继承▪ 继承是利用现有的类创建新类的过程,现有的类称作基类(父类)(超类),创建的新类称为派生类(子类),派生类可以拥有所有基类的非私有的属性和方法。1.2 继承的规则▪ 子类不能直接访问父类中私有的成员方法和变量,但是可以通过get和set获得。▪ java支持单继承,不支持多继承。▪ 一个子类只能有一个父类,但是一个父类可以有多个子类。▪ 子类继承了父类,就继承了父类的方法和属性。▪ 在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法。▪ 继承

2021-07-23 22:54:32 121

转载 java入门 -- 面向对象之封装

1 封装1.1 何为封装▪ 定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。▪ 目的:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。▪ 我们程序设计追求“高内聚,低耦合”。▪ 高内聚 :类的内部数据操作细节自己完成,不允许外部干涉;▪ 低耦合 :仅对外暴露少量的方法用于使用。▪ 方法:Java中通过将数据声明为私有的(private),再提供公共的(public)方法:ge

2021-07-23 19:30:59 46

转载 java入门 -- 类与对象及内存解析

1 如何理解面向对象1. 面向过程(POP)与面向对象(OOP)▪ 面向过程(Procedure Oriented)和面向对象(Object Oriented,OO)都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。早期先有面向过程思想,随着软件规模的扩大,问题复杂性的提高,面向过程的弊端越来越明显的显示出来,出现了面向对象思想并成为目前主流的方式。两者都贯穿于软件分析、设计和开发各个阶段,对应面向对象就分别称为面向对象分析(OOA)、面向对象设计(OOD)和面向对

2021-07-19 23:01:46 184

原创 java入门 -- 常见排序算法

1 基本概念▪ 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 ▪ 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。2 冒泡排序...

2021-07-17 09:29:31 58

原创 java入门 -- 数组

1数组1.1什么是数组

2021-07-17 09:29:13 92

原创 java入门 -- 函数(方法)

1.函数1. 1什么是函数(method、方法):▪ 函数是定义在类中的一段独立的代码块,用来实现某个功能。Java中,函数又被称为方法。▪ 将功能封装为函数,可以使其重复使用,简化代码。▪ java里函数必须定义在类里面。1.2函数的格式:▪ 修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, ….){方法体程序代码return 返回值; }例如:public class Person{private int age;public int getAge() {

2021-07-13 18:08:28 96

原创 java入门 --程序控制流程

1. 概念及分类▪ 控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。▪ 分为:顺序结构 ;循环结构 ;分支结构。2. 顺序结构▪ Java中定义成员变量时采用合法的前向引用。3. 循环结构▪ for 循环▪ 循环▪ do-while 循环3.1 for循环▪ for (①初始化部分; ②循环条件部分; ④迭代部分){ ③循环体部分;}执行过程:①-②-③-④-②-③-④-…代码演示:水仙花数for (int i =

2021-07-10 18:59:53 160

原创 java入门 -- 常见运算符

文章目录1. 标识符1.1 什么是标识符?1.2 标识符的定义:1.3 java的命名规范:2. 运算符2.1 什么是运算符:2.2 算术运算符:2.3 比较运算符:2.4 赋值运算符:2.5 逻辑运算符:2.6 位运算符:2.7 三元运算符:2.8 运算符的优先级:1. 标识符1.1 什么是标识符?▪ java对各种变量,方法,类等命名时使用的字符都叫标识符。1.2 标识符的定义:▪ 数字不可以开头,▪ 由0-9,_,$,26个英文字母组成,▪ 不可以使用关键字和保留字,但能包含关键字

2021-07-10 18:13:16 85

原创 Java入门 -- 变量和数据类型

1.变量1.1 什么是变量???▪ 内存中的一个存储区域。▪ 可在该区域中的同一类型范围内不断变化。1.2 变量的作用▪ 在内存中保存数据。1.3 变量的使用▪ 在java中每个变量必须先声名,后使用。1.4变量的声名:语法 :<数据类型> <变量名称>int x;1.5变量的赋值:语法:<变量名称>=<值>x = 5;1.6变量的分类按数据类型分2.数据类型2.1整数类型类型占用存储空间表

2021-07-07 12:48:20 204

原创 JDK的安装与配置

JDK的安装与配置一.JDK的下载1.下载地址:这里这里;1.1目前已经更新到16了,然而我们并不需要下载最新版的,当然喜欢尝新的童鞋,可以尝试一下。1.2我们普通用户或者学生下载jdk1.8即可。...

2021-07-06 13:40:07 161

空空如也

空空如也

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

TA关注的人

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