- 博客(29)
- 收藏
- 关注
原创 JVM 基本组成
前4个字节非常特殊,红色框的cafe babe是詹姆斯定义的魔法数,它的作用是标志当前文件是一个字节码文件。由类加载器完成字节码文件的加载验证和解析,存储至运行时数据区,并由执行引擎中的解释器,完成字节码到机器码的解释执行。剩余部分中的每个字节均代表一个字节码指令,由于每个指令的长度按照1个字节存储,所以每个指令被称为字节码(Bytecode),Java所有的字节码指令有200多个。字节码必须通过类加载器,通过加载、验证、解析等校验步骤,将字节码文件中的类,加载至JVM的中运行时数据区,才可以执行字节码。
2024-09-24 19:30:12
779
1
原创 JVM 类加载机制
在类加载过程的加载阶段,通过类的完全限定名,获取描述类的二进制流的实现类,被称为“类加载器”。隔离加载类。在某些框架内进行中间件与应用的模块之间进行隔离,把类加载到不同的环境。修改类加载方式。扩展加载源。比如:从数据库、网络、电视机顶盒进行类加载。防止源码泄漏。比如:编译时字节码进行加密,需要通过自定义类加载器对字节码进行解密还原。
2024-09-24 19:29:59
769
原创 悲观锁、乐观锁、死锁
多个线程在运行的过程中,都需要获取对方线程所持有的锁(资源),导致处于长期无限等待的状态。synchronized (lockA) { // 获得lockA的锁// 线程休眠synchronized (lockB) { // 获得lockB的锁System.out.println("执行add()");} // 释放lockB的锁} // 释放lockA的锁synchronized (lockB) { // 获得lockB的锁。
2024-09-23 18:48:51
848
原创 关键字Synchronized同步锁
每个Java对象都可以充当一个实现同步的锁,这些锁被称为内置锁(Intrinsic Lock)或者监视器锁(Monitor Lock)。//临界区其中, 括号里面的就是锁的引用, 任何一个Java对象都可以成为。你可以实例化一个Object对象,将它作为锁。如果直接使用this,代表使用当前对象作为锁。
2024-09-23 18:48:24
659
原创 MySQL经典题型-学生成绩表
- 13. 查询各科成绩最高分、最低分和平均分,以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率(及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90)。-- 4. 查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )-- 1. 查询” 01 “课程比” 02 “课程成绩高的学生的信息及课程分数。-- 9. 查询和” 01 “号的同学学习的课程完全相同的其他同学的。老师表信息teacher。
2024-09-20 17:45:21
394
原创 线程池的执行流程、状态、类型总结
线程池内部维护了若干个线程,没有任务的时候,这些线程都处于等待空闲状态。如果有新的线程任务,就分配一个空闲线程执行。如果所有线程都处于忙碌状态,线程池会创建一个新线程进行处理或者放入队列(工作队列)中等待。
2024-09-19 12:06:11
1618
原创 多线程基础
程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,可以理解为程序是包含静态代码的文件。例如:浏览器软件、音乐播放器软件等软件的安装目录和文件。
2024-09-19 12:05:46
1139
原创 消息中间件之RocketMQ
消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)例如:寄快递。
2024-09-18 18:53:06
776
原创 Bean的生命周期
Spring容器在进行初始化时,会将xml配置的的信息封装成一个BeanDefinition对象,所有的 BeanDefinition存储到一个名为beanDefinitionMap的Map集合中去,Spring框架在对该Map进行遍 历,使用反射创建Bean实例对象,创建好的Bean对象存储在一个名为singletonObjects的Map集合中,当调用 getBean方法时则最终从该Map集合中取出Bean实例对象返回Bean信息定义对象-BeanDefinition BeanDefinition存储到一个名为b
2024-09-18 18:52:49
1233
原创 Java基础-动态代理
给某一个对象提供一个代理,并由代理对象来控制对真实对象的访问。代理模式是一种结构型设计模式。代理模式的结构比较简单,其核心是代理类,为了让客户端能够真实对象和代理对象,在代理模式中引入了抽象层。如果来分类,可以分为和。
2024-09-11 19:12:38
1134
原创 MySQL索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。高效性:利用索引可以提高数据库的查询效率完整性:用户可以加速表和表之间的连接,实现表与表之间的参照完整性唯一性:索引可以确保所查的数据的唯一性特殊能力:通过使用索引,可以在查询过程中,使用优化隐藏器,提高系统性能#####索引按照物理实现⽅式,索引可以分为 2 种:聚簇(聚集)和⾮聚簇(⾮聚集)索引。我们也把⾮聚集索引称为⼆级索引或者辅助索引。
2024-09-09 19:13:41
723
原创 对于Spring框架的简单认识
Spring框架是一个广泛使用的Java平台应用框架,主要用于简化企业级应用的开发。Spring框架的设计目标是为了减轻应用程序开发中的复杂性,并提供了许多高级特性,使得开发者能够更专注于业务逻辑而不是基础设施细节。以下是Spring框架的一些基本概念和特点:
2024-09-02 19:03:56
1125
原创 MySQL的事务认识
事务,就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内 的所有SQL都将被取消执行。事务的ACID原则。
2024-09-02 19:03:51
432
原创 Redis-缓冲雪崩、缓冲击穿、缓冲穿透
缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。
2024-08-21 19:24:20
600
原创 认识Mongodb及其Java的连接
MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
2024-08-21 19:23:10
709
原创 springboot自动配置原理
如果需要为某个第三方库提供自动配置支持,可以创建自己的自动配置类,并遵循上述的模式。通常需要在文件中注册新的自动配置类。@EnableAutoConfiguration 注解内部使用 @Import(AutoConfigurationImportSelector.class) 来加载配置类。配置文件位置:META-INF/spring.factories,该配置文件中定义了大量的配置类,当 SpringBoot 应用启动时,会自动加载这些配置类,初始化Bean。
2024-08-19 12:11:10
1636
原创 数据库-Mybaits
MyBatis是一款模型,支持定制化 SQL、存储过程以及高级映射。可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的映射成数据库中的记录。
2024-08-08 17:42:54
789
原创 Java集合-Map
是一种映射表,可以通过快速查找;Map接口用于表示键值对的集合, Map集合中的key键是唯一的,而value值可以重复。:基于哈希表实现,提供快速的查找和插入性能;: HashMap 类的子类,内部多维护了一条双向链表,保存维护了元素的插入顺序;:基于红黑树实现,根据 key 键自动排序或按照自定义规则排序;:基于哈希表实现,key 和 value 不允许为 null。早期的线程安全实现类,使用 synchronize:基于哈希表实现,使用 synchronized +CAS 实现线程安全;
2024-08-07 21:27:20
598
原创 Linux基本命令(基础)
是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行 资源分配和调度的一个独立单位,是应用程序运行的载体。读取大量的文本内容,命令一次显示一屏文本,满屏后停下来,并且在屏 幕的底部出现一个提示信息,给出至今己显示的该 文件的百分比。改变某个文件或目录的所有者和所属的 组,该命令可以向某个用户授权,使该用户变成指 定文件的所有者或者改变文件所属的组。date +"%Y-%m-%d %H-%M-%S" 格式化显示时间。用户程序包含二进制,库文件,文档,二级程序的源代码。
2024-07-25 19:31:52
673
原创 Java集合-List、Set
集合就是“由若干个确定的元素所构成的整体”。在Java中,集合是一种容器,用于保存和操作其他Java对象。数组也可以被视为一种集合。
2024-07-25 19:18:09
746
原创 String字符串的常见方法总结
在Java中,String 类是表示字符串的不可变对象。这意味着一旦创建了一个 String 对象,就不能修改它的内容。String 类提供了许多方法,这些方法可以用于操作、转换和搜索字符串。以下是一些常用的 String 方法
2024-03-18 07:00:00
974
2
原创 String为什么是不可变的?
String是中的一个基本数据类型,用于表示不可变的 Unicode 字符串。String类是 Java 的核心类之一,位于 java.lang包中。由于 String是不可变的,这意味着一旦创建了String对象,就不能修改其值。每次对 String的修改(例如连接、子串、替换等)都会创建一个新的 String对象。下面是StringString类内部实际上使用了一个char数组来存储字符数据。
2024-03-17 00:00:38
556
2
原创 Arrays工具类的常见方法总结
Arrays工具类的常见方法总结,Arrays 是 Java 标准库中的一个实用工具类,它包含了许多静态方法,用于操作数组。以下是一些 Arrays 工具类中常见方法的总结:
2024-03-06 07:00:00
1878
1
原创 数值类型的运算方式总结
常见的位运算使用场景,整数类型运算时的类型溢出问题,产生原因以及解决办法,浮点类型运算时的精度丢失问题,产生原因以及解决办法
2024-03-03 16:26:42
2031
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅