- 博客(16)
- 收藏
- 关注
原创 【无标题】jvm内存结构
我们知道,CPU 核数是比较少的,而任务(线程)是比较多的,所以真实的情况是,CPU 会不停的切换线程以执行所有的程序,当然因为(CPU)切换的速度比较快,所以我们是感知不到的,我们感觉好像所有的程序都是一直在执行,其实从微观的层面来看,所有的程序都是切换执行的。Java 虚拟机栈是线程私有的区域,它随着线程的创建而创建。我们通常所说的 Java 虚拟机(JVM)的内存布局,一般是指 Java 虚拟机的运行时数据区(Runtime Data Area),也就是当字节码被类加载器加载之后的执行区域划分。
2023-06-12 16:20:04
128
原创 【无标题】如何确定jvm垃圾
垃圾对象的判定有两种常用的算法:引用计数器算法和可达性分析算法。其中引用计数器算法实现简单、运行高效,但是存在循环引用的问题,所以主流的虚拟机使用的都是可达性分析算法,可达性分析算法是从对象的根节点 GC Roots 向下搜索,如果根节点相连就是正常的对象,否则为垃圾对象可以被垃圾回收器回收。软引用:是一种相对强引用弱化一些的引用,可以让对象豁免一些垃圾收集,只有当 JVM 认为内存不足时,才会去试图回收软引用指向的对象,JVM 会确保在抛出 OutOfMemoryError 之前,清理软引用指向的对象;
2023-06-12 16:10:08
194
原创 类加载机制
解析阶段就是将常量池中的符号引用更换成直接引用了,所谓的符号引用是指以一组符号来描述所引用的目标,符号可以是任何形式的字面量,只要使用时能无歧义地定位到目标即可;类加载机制是指一个类在 Java 虚拟机(JVM)中的执行流程,它也是 Java 程序能够正常执行的关键所在,那它的具体执行流程是啥?到这一步骤之后,类的加载过程就算正式完成了,此时会给静态变量设置初始值,并执行静态代码块的内容。准备阶段就开始给类中的静态变量设置默认值了,注意这里不是给静态变量设置初始值,而是设置默认值,二者还是有很大区别的。
2023-05-23 20:30:16
160
原创 什么是双亲委派模型?
双亲委派模型是和 Java 中多个类加载器(启动类加载器、扩展加载器、应用程序类加载器)的运行规则,通过这个(双亲委派模型)规则可以避免类的非安全问题和类被重复加载的问题,但它也遇到了一些问题,比如 JNDI 和 JDBC 不能通过这个规则进行加载,它需要通过打破双亲委派的模型的方式来加载。双亲委派模型的执行流程是这样的: 1、当加载一个类时,会先从应用程序类加载器的缓存里查找相应的类,如果能找到就返回对象,如果找不到就执行下面流程;如下图所示: image.png 这 3 个类加载器的作用如下。
2023-03-22 13:06:54
561
原创 什么是事务?
什么是事务?事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。在取钱这个过程中,用户账号的余额减少了,但是钱却没有到手。这时候就要用到事务回滚了事务的四大特性(简称ACID)原子性(atomicity)一个事务必须被视为一个不可分割的最小的工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是职务的原子性。一致性(consistency)数据库总是从一个一致性的状态转换到另
2023-02-16 21:59:45
81
原创 Java 的事务
1 java事务有两种事务。第一种是JDBC事务。第二种是JTA事务。2 第一种事务:JDBC事务。是通过setAutoCommit()来设置是否自动提交。如:Context context=new InitialContext();DataSource dataSource=(DataSource)context.lookup("test");Connection connection=dataSource.getConnection();Statement statement=con
2023-02-14 17:39:15
990
原创 Lombok 作用
Lombok的简介是一个在Java开发过程中用注解的方式,简化了 JavaBean 的编写,避免了冗余和样板式代码而出现的插件,让编写的类更加简洁。以@Data为例在写实体类时,经常需要先定义变量而通过使用Lombok则可以大大减少人工操作的方面,只使用@Data 注解即可import lombok.Data;@Datapublic class Role { private int rid; private String rname; private Str
2023-02-12 13:06:41
116
原创 什么是热部署?springboot项目热部署
在开发过程中,通常会对一段业务代码不断地修改测试,在修改之后往往需要重启服务,有些服务需要加载很久才能启动成功,这种不必要的重复操作极大降低了程序开发效率。为此,Spring Boot框架专门提供了进行热部署的依赖启动器,用于进行项目热部署,而无须开发人员手动重启项目。下面,讲解如何进行热部署,具体步骤如下。1. 添加spring-boot-devtools 热部署依赖启动器,在Spring Boot项目进行热部署测试之前,需要先在项目的pom.xml文件中添加spring-boot-devto
2023-02-09 16:20:53
144
原创 请求转发(Forward)和重定向(Redirect)的区别
forward(转发):是服务器请求资源,服务器直接访问目标地址的URL,把URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,因为这个跳转过程实在服务器实现的,并不是在客户端实现的所以客户端并不知道这个跳转动作,所以它的地址栏还是原来的地址.redirect(重定向):是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.转发是服务器行为,重定向是客户端行为。区别:1. 从地址栏显示来说forward是服务器
2023-02-06 17:08:40
659
原创 单一设计原则
六大原则中一个原则————单一原则单一原则比较好理解的,从字面意思就清楚他要表达的就是,一个,的意思。不管是方法、类、类库、解决方案或者是这一个项目都需要符合单一原则。一个方法,我只处理一个功能逻辑。一个类,我只实现一个业务或者场景。一个类库,我的职责就是数据库啊或者工厂或者前端或者帮助类一个解决方案,就是后台系统就是后台系统,前台就是前台,或者定时服务,或者接口。单一性解决的问题就是代码的高耦合性,防止出现多层的逻辑判断,几个业务的重叠,不出现牵一发而动全身的问题,使代
2023-01-04 17:00:02
225
原创 关于各种锁的总结-java
按场景分:1.乐观锁:对冲突保持乐观态度,认为不会产生太多冲突,其他时候不管,只在数据提交的时候检测是否冲突,冲突就返回错误信息.2:悲观锁:对冲突保持悲观态度,假设是最坏的情况,每次读数据都要加锁防止其他线程进行篡改,频繁加锁解锁会导致操作系统开销过大.按量级分:1.轻量级锁:在用户态加锁解锁,开销小2.重量级锁:涉及用户态和操作系统内核的切换,开销大一个锁可能是乐观锁,也可能是轻量级锁读写锁:什么是线程不安全?两个线程同时修改内存的值时,本来两个线程都该从内存中读得cou
2022-06-20 15:52:46
148
原创 关于mysql索引
1.什么是索引?数据库里存有各种数据表,数据表里有各种数据,如何从一个表中找到数据呢,难道要遍历很多数据吗,那岂不是很耗时,那么如何从一本书中找到某一页呢,就是通过目录,表的目录就是索引。2索引要解决的问题:避免在磁盘顺序查找,索引的效果当然是加快查找速度,提升查找效率,但会减慢插入,删除,修改操作的效率,当插入修改删除数据的时候会调整索引结果。一个东西不可能既省时又省空间,索引本质是用空间换时间,但也不会太大,它在内存中,而数据在磁盘上。3.索引要解决的问题4.索引的数据结构:索引
2022-04-16 15:25:37
373
原创 数组指针和指针数组的区别
指针数组:是个数组,里面放的是指针,每个指针可以指向一个数组。这个指针数组arr类型是int*,里面放着三个指针a,b,c 数组名可以代表数组首元素地址哦,所以a可以指向1。数组指针:是个指针,里面放着数组的地址*跟着p代表指针,*跟着int代表后面的变量里放的内容是int*类型那么int(*parr[10])[5]代表什么呢这可能比较难理解,*和parr先结合代表指针,指针后面跟[10]代表parr有十个元素,这个整体看做a,就成了int a[5]...
2022-01-28 15:56:06
1157
原创 一维数组传参vs二维数组传参
数组传参,你传和你定义的数组一样的,一定对????二维数组,行可省,列不可省传参传的一定是首地址,一维是首元素地址,二维是首行地址
2022-01-28 15:06:46
292
原创 C语言指针传参
一级指针传参:一级指针传参,可以使用数组名,代表的是数组元素首地址,如test(arr); 可以使用指针int*p=arr;test(p);也可以使用test(&arr) test为调用的函数或自定义的函数,本质传出的是“数组元素首地址!是地址!地址!”。指针就是地址!这是数组,变量也是一样,int*a=3;test(a) 或a=10; test(&a)如何接收?定义一个函数void test( int*arr){}void test(int*...
2022-01-28 14:42:03
1972
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人