自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 计算机网络面试

就是有一个密钥,它可以对一段内容加密,加密后只能用它才能解密看到原本的内容,和我们日常生活中用的钥匙作用差不多。

2025-05-10 14:57:36 474

原创 慢sql处理流程和常见案例

思维导图: 在 MySQL 数据库管理中,慢查询是影响系统性能的常见痛点。随着 MySQL 8 版本的普及,其新增特性(如 CTE、隐藏索引、JSON 格式执行计划等)为慢查询优化提供了更强大的工具。本文结合 MySQL 8 的特性,通过代码示例详解慢查询的定位、分析与优化全流程,从而提高数据库的性能。修改 MySQL 8 的配置文件my.cnf(Linux)或my.ini(Windows),添加以下核心配置:修改后需重启 MySQL 服务使配置生效。配置完毕之后,通过以下指令重新启动MySQL服

2025-05-05 17:03:25 1196

原创 在CentOS环境中安装MySQL数据库保姆级教程

如图所示: TIPS:1.发布包命名规则:{mysql80}-community-releas{platform}-{version-number}.noarch.rpm{mysql80}:MySQL版本号{platform}:平台(系统)号,⽤来描述系统的版本{version-number}:MySQL仓库配置RPM包的版本号2.如下所⽰:mysql80-community-release-el7-10.noarch.rpmmysql80: MySQL版本号,默认是MySQL8

2025-05-04 19:33:57 527

原创 Mybatis执行流程知多少

MyBatis 的执行流程可以大致分为以下几个关键步骤:配置加载、会话创建、SQL 执行和结果处理。下面我们将逐步详细介绍每个步骤。

2025-05-04 18:24:51 998

原创 SpringBoot的启动流程

在 Java 开发领域,Spring Boot 以其 “约定优于配置” 的理念,极大简化了企业级应用的开发与部署。然而,看似简单的java -jar命令背后,隐藏着一套精妙复杂的启动流程。深入理解这个流程,能让我们更好地运用 Spring Boot,提升对框架的认知。SpringBoot启动流程图:在src/main/resources下创建banner.txt,Spring Boot 启动时会通过BannerService读取并打印。

2025-05-04 18:19:15 773

原创 Mybatis中的一级二级缓存扫盲

MyBatis 的一级缓存和二级缓存各有优缺点,在实际应用中需要根据具体的业务场景合理使用。一级缓存适用于在同一个 SqlSession 中多次执行相同查询的场景,而二级缓存适用于多个 SqlSession 之间共享缓存的场景。同时,需要注意缓存的使用可能会导致数据一致性问题,需要在业务逻辑中进行相应的处理。

2025-05-02 16:26:59 1683 2

原创 浅谈SpringBoot框架中的单例bean

创建一个 CounterService 类,它有一个实例变量 count,还有两个方法分别用于增加计数和获取计数。

2025-05-02 15:44:02 635

原创 学会优雅的处理异常

当 Java 内置的异常类无法准确描述业务场景中的错误时,自定义异常可以让代码更具可读性和维护性。继承自 Exception(受检异常):编译时必须处理,调用者需显式捕获或声明抛出,适用于强制调用者处理的场景(如用户输入验证)。继承自 RuntimeException(非受检异常):运行时异常,无需强制处理,通常用于程序逻辑错误(如数据库连接错误)。// 无参构造super();// 带错误信息的构造// 带错误信息和原因的构造// 带原因的构造super();try {

2025-04-19 19:48:14 564

原创 你还在傻傻的背八股文吗?

特性==运算符equals()方法所属类型运算符Object类的方法基本类型比较比较值是否相等不可用(仅用于对象)引用类型比较比较内存地址是否相同未重写时比地址,重写后按逻辑比内容能否重写不能(运算符无法重载)可以(根据业务需求自定义比较逻辑)

2025-04-19 16:16:03 1436

原创 static关键字

思维导图:在 Java 中,static是一个非常重要的关键字,它可以用来修饰类的成员,包括变量、方法、代码块以及内部类。下面为你详细介绍static关键字的各种用法和特点。

2025-04-18 23:07:26 729

原创 final关键字

思维导图:final是Java当中一个重要的关键字,可以修饰类,方法,变量(成员变量,局部变量,引用变量)final关键字的核心含义是 ''最终的'' ''不可改变的''。通过使用final关键字,我们能够有效地防止代码被意外修改,增强程序的健壮性和可维护性。

2025-04-18 14:31:09 641

原创 带你实现一个简单的拦截器

在 Java Web 开发中,拦截器(Interceptor)是一种强大的组件,它能在请求处理的特定阶段介入,实现诸如日志记录、权限验证、请求预处理等功能。

2025-04-17 20:31:50 430

原创 HashMap中put方法的执行流程

在 Java 编程中,HashMap 是一种常用的集合类,它以键值对(Key-Value)的形式存储数据,它具有高效查找、插入和删除的优势。

2025-04-17 20:09:22 580

原创 深入理解MySQL索引:原理、类型与优化

InnoDB存储引擎索引的数据结构为什么不使用哈希表,二叉树、B树等数据结构?哈希结构不支持范围查询:哈希索引通过哈希函数计算索引值,将数据存储在哈希表中。它在等值查询时效率极高,但对于范围查询,如查询价格在某个区间内的商品,哈希索引无法直接支持,需要全表扫描,这在处理大量数据时性能较差。索引维护代价高:当数据发生变化时,如插入或删除记录,可能会导致哈希冲突,需要重新调整哈希表的结构,维护成本较高。二叉搜索树如图所示:当二叉搜索树相对平衡的时候,时间复杂度为O(logn)

2025-04-17 10:49:36 1007

原创 深入解析数据库三大范式:原理、SQL实战与设计权衡

数据库三大范式为我们提供了从基础到高级的数据库设计规范,它们逐步消除数据冗余和不合理的数据依赖,提高数据的一致性和维护性。然而,在实际的数据库设计中,并非总是严格遵循范式就一定是最优选择。例如,在某些查询频繁的场景下,适当引入冗余数据(反范式化)可以减少表连接操作,提高查询性能。这就需要开发者在范式的严格遵守和实际业务需求之间进行权衡,根据具体的应用场景、数据量、查询模式等因素,灵活运用范式理论,设计出既满足数据管理要求,又能提供高效性能的数据库系统。增加冗余字段。

2025-04-15 12:17:25 1042

原创 深入理解哈希冲突:原理、解决方案及 Java 实践

哈希函数是哈希表的核心,它将任意长度的输入转换为固定长度的输出,这个输出通常被称为哈希值。理想情况下,不同的输入应该产生不同的哈希值,但由于哈希值的范围是有限的,而输入的可能性是无限的,因此必然会出现两个或多个不同的输入产生相同哈希值的情况,这就是哈希冲突。负载因子是哈希表中已存储元素数量(size)与哈希表当前容量(capacity)的比值,计算公式为:负载因子= 元素数量 / 哈希表容量例如,当哈希表容量为16,存储了12个元素时,负载因子为 12/16=0.75。

2025-04-14 21:06:56 595

原创 请求转发和请求重定项

发生在服务端程序内部,当服务器端收到一个客户端的请求之后,会先将请求,转发给目标地址,再将目标地址返回的结果转发给客户端。而客户端对于这一切毫无感知的,这就好比,张三(客户端)找李四(服务器端)借钱,而李四没钱,于是李四又去王五那借钱,并把钱借给了张三,整个过程中张三只借了一次款,剩下的事情都是李四完成的,这就是请求转发。解释说明://第一个步骤:浏览器发送一个请求给服务器//第二个步骤:服务器找到相应的资源//第三个步骤:服务器将找到的资源发送给浏览器//总结;

2025-04-07 12:42:35 388

原创 Spring事务传播机制

Spring 事务传播机制定义了在多个事务方法相互调用时,事务如何在这些方法间传播。它决定了一个事务方法调用另一个事务方法时,新的事务是如何开启、是否要加入已有的事务等情况。Spring 提供了 7 种事务传播行为,下面是详细介绍。

2025-04-07 12:39:25 598

原创 Cookie与Session详解

Cookie 是浏览器提供的持久化存储数据的一种机制。是指某些网站为了辨别用户身份进行会话跟踪而储存在用户本地终端上的数据(通常经过加密)。session(会话)是一种用于跟踪用户与服务器之间交互状态的机制。

2025-03-13 19:24:36 826 1

原创 二叉搜索树详解

二叉搜索树是一种重要的数据结构,具有高效的插入、删除和搜索操作。它的性质使得它在许多应用场景中都非常有用。需要注意的是,二叉搜索树的性能取决于树的形状,如果树不平衡,性能可能会下降。在实际应用中,可以考虑使用平衡二叉搜索树(如 AVL 树、红黑树等)来保证树的平衡性,从而提高性能。

2025-03-13 19:19:05 509

原创 Spring(一)

想要将对象成功的存储到 Spring 中,我们需要配置⼀下存储对象的扫描包路径,只有被配置的包下的所有类,添加了注解才能被正确的识别并保存到 Spring 容器中。有时候,某个类放在扫描路径下觉得不合适,但又想将这个对象存放到Spring容器当中,为了满足这种场景,就需要扫描路径和传统的类名+classPath结合使用。虽然它们都能实现相同的功能,但它们也有不同的之处,注解很重要的一个功能就是让开发者一看到注解,就知道这个注解的用途。类注解是把注解加在类上,方法注解是将注解加在方法上。

2025-03-13 19:16:49 879

原创 【面试官】谈谈你对顺序栈和链式栈的认识

因为在链式栈中进行插入和删除操作只需要改变指针的指向,时间复杂度为 O(1),而顺序栈在插入和删除元素时可能需要移动大量元素,尤其是在栈接近满或空的情况下。1. 没有额外指针开销:顺序栈不需要像链式栈那样为每个节点存储指向下一个节点的指针,因此在存储相同数量的元素时,顺序栈可能占用更少的内存空间,尤其是在存储小对象时,这种优势可能更加明显。2. 快速随机访问:如果需要随机访问栈中的元素,顺序栈可以通过索引快速定位到特定位置的元素,而链式栈需要遍历链表才能找到特定位置的元素,效率较低。

2024-10-08 15:46:28 787

原创 【单例模式】

单例模式是指在内存中只会创建且仅创建一次对象的设计模式。

2024-10-07 18:07:23 1389

原创 【计算机网络】面试必问TCP十大机制

1. TCP协议的报文格式说明:TCP 报文格式主要分为两部分:TCP 报文头部和数据部分。以下是对各字段的详细解释:TCP 报文头部2. 数据部分:可变长度,包含上层应用程序的数据。TCP 头部后面的数据部分是上层应用程序传递给 TCP 的数据,例如网页内容、文件数据等。1. 可靠传输机制注意:可靠并不意味着消息能够百分之百发给接收方,而是尽可能的把消息传输过去,即使没有成功发送,最气码发送方要能够知道。

2024-10-07 18:06:52 1268

原创 【面试官:说一下volatile】

例如,在对一个volatile变量进行写操作时,Java 会在写操作之后插入一个写屏障,以确保前面的写操作对其他处理器可见,然后再插入一个读屏障,以防止后面的读操作重排序到写操作之前。例如:在一个线程中修改了一个 volatile 变量的值,这个修改会立即刷新到内存中,并且其他线程在读取这个变量时,会从主内存中获取最新的值,而不是使用自己工作内存中的缓存值。在一个线程中,对变量 A 的写操作必须在对变量 B 的写操作之前完成,插入一个内存屏障可以确保这种顺序在多线程环境下也能得到保证。

2024-10-07 18:06:22 876

原创 【面试官】 多态连环问

• 答案:封装是面向对象编程的三大特性之一,它是将数据和操作数据的方法绑定在一起,并且通过访问修饰符限制对数据的直接访问,只提供特定的方法来访问和修改数据。这样可以保护数据的安全性和完整性,提高代码的可维护性和可扩展性。• 答案:继承是面向对象编程中的一种重要特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。子类可以扩展父类的功能,同时还可以添加自己特有的属性和方法。通过继承,可以实现代码的复用,提高开发效率。• 答案:多态是指同一操作作用在不同的对象上,所表现出的形式不同。

2024-10-07 18:01:34 572

原创 【数据结构】LinkedList ------ java实现

知识框架图:LinkedList是一种常用的数据结构。底层是一个双向链表。每个节点包含数据以及指向前一个节点和后一个节点的引用。

2024-09-05 09:53:45 1422

原创 包装类 ---- java

在这个过程中,Java 会自动创建一个Integer对象,并将基本数据类型int的值10包装到这个对象中。• 对于集合操作,如果确定集合中存储的是基本数据类型的值,可以考虑使用基本数据类型的数组或者专门为基本数据类型设计的集合类,如java.util.IntSummaryStatistics等,避免自动装箱后放入普通集合中带来的性能开销。例如,在一个复杂的表达式中,自动装箱和拆箱可能会导致意外的结果,但开发人员可能不容易察觉问题的根源。在一些非常复杂的代码中,自动装箱和拆箱可能会使代码的可读性降低。

2024-09-04 00:07:40 965

原创 Java----抽象类与接口

修饰的类称为抽象类,在抽象类中被。

2024-07-20 05:52:58 1936 1

原创 【数据结构】 你真的懂ArrayList吗??? ------ java实现

ArrayList是一个类,它实现了List接口,要想学好ArrayList必须先了解List接口。从数据结构的角度看,List就是一个线性表,可以保存n个具有相同类型元素的有限序列,在该序列中,可以进行增删查改以及变量等操作。List接口里面提供了许多方法,可以查看List的官方文档。List的使用:List是个接口不能实例化对象,所以必须有类来实现它,而ArrayList就实现了List接口。通过上图可以知道ArrayList继承的类和实现的接口,也可以结合源码。说明。

2024-07-20 01:26:24 677

原创 java中内部类的用法

内部类是定义在另一个类中的类,内部类也是封装的一种的体现。格式://OutClass是外部类 InnerClass是内部类1. 定义在class类名花括号外的,即使是在一个文件里,都不能称为内部类,例如:class InnerClass { //不是内部类,它在花括号外2. 内部类和外部类共用一个java源文件,但是经过编译之后,内部类会单独形成字节码文件public class InnerClass1{ //未被static修饰,实例内部类。

2024-07-18 15:58:18 956

原创 java中多态的用法

将一个子类对象向上转型之后当成父类方法使用,再无法调用子类的方法,但有时候可能需要调用子类特有的方法,此时:将父类引用再还原为子类对象即可,即向下转型。animal是父类类型,但可以引用一个子类对象,即:可以将一个子类对象当成父类对象来引用。因此:向上转型是安全的,因为是从小范围向大范围的转换。即:方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。多态体现:在代码运行时,当传递不同对象时,会调用对应类中的方法。向上转型:一个父类对象的引用指向一个子类对象的实例。

2024-07-18 04:10:26 1265

原创 java中this的用法

原因:因为static修饰的方法是静态方法,它不依赖于对象,属于类,直接通过类名访问,在类加载阶段完成;static方法执行的过程中是不需要当前对象参与的,所以在static修饰的方法中不能使用this。这种是指在构造方法当中使用this调用本类当中其他的构造方法。这种写法是指在实例方法当中使用this调用另一个实例方法。3:this(参数);1:this是一个关键字,表示当前对象的引用。1:this(参数)必要放在构造方法的第一行。1. this.data //访问实例变量。

2024-06-28 04:36:56 606

原创 java中的继承机制

上述图示中,Dog和Cat都继承了Animal类,其中:Animal类称为父类/基类或超类,Dog和Cat可以称为Animal的子类/派生类,继承之后,子类可以复用父类中的成员,子类在实现时只需关心自己新增加的成员即可。继承机制是面向对象程序设计提高代码复用的重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加新功能,这样产生新的类,称为派生类构。2:如果访问的成员变量(成员方法)子类中无,则访问父类继承下来的,如果父类也没有定义,则编译报错。继承主要解决的问题是:共性的抽取,实现代码复用。

2024-06-25 16:03:17 611

原创 java对象的创建和使用

构造方法虽然不写任何的返回值,但它在执行结束之后实际上会返回该对象在堆内存当中的内存地址,这个时候定义变量接收对象的内存地址,这个变量叫做引用变量(引用)。Java语法规定:当一个类没有显示的定义任何构造方法的时候,系统会默认提供一个无参构造方法,当显示的定义构造方法之后,系统就不会在提供构造方法。通过测试可以知道:构造方法支持重载机制,具体调用哪个构造方法,需要看调用时传递的实际参数列表符合哪个构造方法。类定义好之后,就可以创造出对象(对象也叫实例),一个类可以创建多个对象。这样就完成了对象的创建。

2024-06-25 02:12:30 965

原创 java中main方法里的args参数

main方法当中的String[] args

2024-06-09 13:39:31 1392

原创 java数组详解

数组(Array)是有序的元素序列。在程序设计当中,为了处理数据方便,把具有相同类型的若干元素按有序的形式组织起来的一种形式。这些 有序排列的同类型数据元素的集合称为数组。作用:数组是一种数据结构,用来存储相同类型值的集合。在java语言当中数组有以下几个特点:1:java中的数组存储的每个元素类型相同。2:java当中的数组长度一旦确定不可改变。3:java当中的数组都有length属性,可以获取数组中元素的个数。4:java中的数组对象存储在堆内存当中。

2024-06-02 21:27:35 786

原创 java中的方法

通过代码改进之后可以看到,方法其实就是一块普通的代码片段,并且这段代码可以完成某个特定的功能,并且可以重复的去使用,只要是可以独立出来的功能,都可以定义为一个单独的方法去完成具体的功能,如果后续需要使用此功能,直接去调用就好了,还有一点就是不要把所有的代码都放到主方法(main)当中,这样的代码的复用型很差。方法重载:方法重载是指在同一个类中定义多个同名的方法,但要求参数列表不同(参数类型不同,参数个数不同,参数的顺序不同)。3:方法名,必须是合法的标识符,遵循小驼峰的命名方式,做到见名知意。

2024-06-02 21:27:00 1501

原创 java基本数据类型

数据类型的作用就是决定程序在运行阶段给变量分配多大的内存空间。在java中基本数据类型分为四类八种:第一类:整数型:byte,short,int,long第二类:浮点型:float,double第三类:字符型:char第四类:布尔型:boolean既然数据类型是为了程序在运行阶段给变量分配内存空间的,那么上述每一种数据类型所占内存空间的大小又是多大呢?

2024-05-20 20:48:34 1122 1

原创 java运算符

例如:1 + 2,其中1和2都是操作数, + 是操作符,操作符和操作数组成在一起就构成了表达式。运算符按照功能来分,分为算数运算符,赋值运算符,关系运算符,逻辑运算符,位运算符,条件运算符,字符串连接运算符等。如果"+''两边的操作数都是数字的话,一定是求和运算,但只要其中一个操作数是字符串,那就一定是字符串拼接运算,字符串拼接之后的结果还是字符串类型。后置++,先进行赋值运算,变量在加1,前置--和后置--道理和前置++,后置++一样。x = x + 1;"x和y相等" : "x和y不相等");

2024-05-20 20:45:37 904 1

mobilephone.html

mobilephone.html

2024-12-17

1727065032370053_download.jsp

1727065032370053_download.jsp

2024-09-23

空空如也

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

TA关注的人

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