自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux环境下部署SSM聚合项目

第一步:上传jdk压缩安装包到服务器第二步:将压缩安装包解压第三步:配置环境变量编辑/etc/profile文件,在文件末尾添加以下内容:vim /etc/profile# 保存并退出:wq第四步:应用环境变量执行以下命令使配置生效:第五步:验证安装:执行以下命令检查JDK版本:首先检查是否有mysq环境检查是否有自带的mariadb数据库若存在则删除rpm -e --nodeps 安装包1、上传mysql压缩安装包到服务器2、解压3、修改解压后的名称4、创建存放数据的目录5、创建用户用户组,并将创建的用

2025-08-06 14:53:04 664

原创 Java面试题总结

在MyBatis映射文件中,B标签可以定义在A标签的后面。MyBatis在解析XML文件时是顺序解析的,但会先构建完整的DOM树后再处理引用关系,所以include引用的sql片段可以出现在引用它的语句之后。简化了JDBC代码提供SQL与代码分离的机制支持动态SQL提供强大的映射功能支持缓存机制插件扩展机制灵活SqlSessionMapper接口XML映射文件​​编程式事务​。

2025-08-02 16:09:19 878

原创 MyBatis-Plus乐观锁与雪花算法详解

​​乐观锁​​通过版本号机制解决并发更新问题,适合读多写少场景​​雪花算法​​提供分布式唯一ID,适合分库分表场景MyBatis-Plus内置支持这两种机制,简化开发工作实际应用中需要根据业务特点选择合适的方案。

2025-07-27 17:31:58 310

原创 MyBatisPlus(四)代码生成器与多数据源

​​代码生成器​​可以极大提高开发效率,自动生成各层基础代码​​多数据源​​配置简单灵活,适用于多种业务场景结合两者可以快速构建基于MyBatis-Plus的多数据源项目通过合理使用这些功能,可以显著减少重复代码编写,提高开发效率,让开发者更专注于业务逻辑的实现。

2025-07-27 16:29:14 928

原创 MyBatisPlus(三)条件构造器与插件

在真正开发的过程中,组装条件是常见的功能,而这些条件数据来源于用户输入,是可选的,因。此我们在组装这些条件时,必须先判断用户是否选择了这些条件,若选择则需要组装该条件,若。上面的故事,如果是乐观锁,小王保存价格前,会检查下价格是否被人修改过了。如果是悲观锁,小李取出数据后,小王只能等小李操作完之后,才能对价格进行操作,也会保证。小李操作的时候,系统先取。上面的实现方案没有问题,但是代码比较复杂,我们可以使用带。是的,如果没有锁,小李的操作就。了,则重新取出的被修改后的价格,已更新,条件不成立,修改失败。

2025-07-27 14:39:45 748

原创 MyBatisPlus(二)常用注解

经过以上的测试,在使用MyBatisPlus实现基本的CRUD时,我们并没有指定要操作的表,只是在Mapper接口继承BaseMapper时,设置了泛型User,而操作的表为user表由此得出结论,在确定操作的表时,由BaseMapper的泛型决定,即实体类型决定,且默认操作的表名和实体类型的类名一致若实体类类型的类名和要操作的表的表名不一致,会出现什么问题?我们将表user更名为t_user,测试查询功能程序抛出异常, Table。

2025-07-26 17:43:58 762

原创 Java面试题(中等)

所有类名包含Buffer的类的内部实现原理是什么?当对象不使用了要释放资源,目的是什么?UDP协议:无连接,不可靠但高效,适用于实时性要求高的场景,如视频会议、在线游戏、DNS查询等。TCP协议:面向连接、可靠传输,适用于要求数据完整性的场景,如文件传输、网页浏览、电子邮件等。什么是引用传递,什么是值传递,哪些语言支持引用传递?13. equals()方法的作用是什么?引用类型的强制类型转换需要注意什么?59. JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?2. 多线程的使用场景有哪些?

2025-07-25 22:28:12 604

原创 Git的使用

在使用git的过程中,一般我们总会有些文件无需纳入git的管理,也不希望它们总出现在未跟踪文件列表,这些文件通常是日志文件、临时文件、编译产生的中间文件、工具自动生成的文件等等。此时我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式,Git会根据这些模式规则来判断是否将文件添加到版本控制中。git 仓库级别对应的配置文件是当前仓库下的.git/config (一台电脑多人使用)git diff --cached Test1.txt(对比暂存区和Git仓库)

2025-07-25 22:26:30 383

原创 MyBatisPlus(一)简介与基本CRUD

【代码】MyBatisPlus。

2025-07-25 21:30:09 228

原创 SpringBoot的介绍和项目搭建

SpringBoot 2.0.2.RELEASE:统一环境;给maven 的settings.xml配置文件的profiles标签添加。(SpringBoot所有的Java文件都要写在主程序的同包及其子包下)3.编写一个主程序;启动Spring Boot应用。4.编写相关的Controller、Service。(maven项目改变成springboot项目)2.导入spring boot相关的依赖。1.创建一个maven工程(jar)

2025-07-20 22:16:19 435

原创 MyBatis(三)

如果想查询 select u.*,a.money from user u left join account a on u.id = a.uid 语句的内容。需求的SQL语句:select * from user where id = 1 or id = 2 or id = 3。需求:查询的数据中包含account所有的字段,再包含用户的名称和地址。之前做过拼接SQL语句查询条件的查询,需要动态的拼接SQL语句。3.在AccountMapper接口中编写查询的方法。在User类中添加List的属性。

2025-05-24 22:44:41 619

原创 MyBatis(二)

把数据库的信息定义property标签中的方式-- 配置环境们 -->-- 配置具体的环境 -->-- 配置事务管理类型 -->-- 配置是否需要使用连接池,POOLED使用,UNPOOLED不使用 -->-- 加载映射的配置文件 --><mappers></mappers>在项目中定义jdbc.properties属性文件,存储数据库相关的信息,统一管理jdbc.properties属性文件SqlMapConfig.xml的配置文件--

2025-05-24 22:28:51 1056

原创 MyBatis(一)

MyBatis是一个优秀的基于Java的持久层框架,内部对JDBC做了封装,使开发者只需要关注SQL语句,而不用关注JDBC的代码,使开发变得更加的简单。MyBatis通过XML或者注解的方式将要执行的各种Statement对象配置起来,通过Java对象和statement中SQL的动态参数进行映射,并最终执行SQL语句。执行SQL后,最终将结果已Java对象返回。采用了ORM的思想。

2025-05-24 22:19:23 260

原创 JDBC工具类

MySQL是一款数据库,navicat是MySQL数据库的可视化工具要想后端与数据库进行连接,就需要先导入数据库驱动JDBC对市面上的数据库驱动进行了整合,用户只需要使用jdbc便可以管理各种数据库。驱动管理类注册驱动程序,创建连接对象Connection连接类建立数据库的连接Statementsql编辑器向数据库发送要执行的sql语句ResultSet查询结果集执行查找的操作结果。

2025-05-24 22:09:23 416

原创 Java并发编程

volatile并不一定能保证数据的准确性:两个线程同时操作volatile修饰的变量,从高速缓存区写回到内存后,会把该变量在高速缓存区中对应的数据清除,这样线程需要重新访问更新后的数据,从而保证数据的准确。CAS 比较并且交换--必须调用操作系统提供的CAS内核函数(原子性):线程操作资源的同时记录读取资源时刻的状态,如果更新时状态一致则改变,不一致则会重复进行读取并操作。多线程,多进程,多服务器,集群并发操作,只要是写后读,最终计算结果一定是准确的(语言无关)IO密集(等待的时间比运行的时间长很多)

2025-05-24 21:55:58 628

原创 Maven进阶

比如我们在项目开发的过程中,可能多个模块独立开发,但是多个模块可能依赖相同的公共模块,比如说每个模块都需要javaseo-utils,在编译的时候,maven-compiler-plugin插件也要被引入,maven仓库地址以及发布目录都是相同的配置。我们可以使用Maven的继承功能,把公共的配置信息写到父模块中,子模块只要继承了该父模块,也会继承父模块的配置信息。Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶段的执行顺序。

2025-04-26 15:15:16 772

原创 IDEA搭建环境的五种方式

Java Enterprise-- 勾选jdk版本、Java EE version 、Application Server和Web Application。mavenJavaWeb项目的目录结构,控制台显示BUILD SUCESS表示创建成功。Artifacts模块下选择Web Application:Exploded。在Modules模块下添加Module,选择引入Module。maven模块下勾选c模版,选择maven的webapp。选择Java,jdk选择1.8版本,然后点next。

2025-04-25 21:26:21 759

原创 SpringMVC拦截器

拦截器(Interceptor)是 SpringMVC 提供的一种可插拔式组件,用于在请求处理的不同阶段执行特定操作(如权限验证、日志记录等)。与 Servlet 的过滤器(Filter)类似,但拦截器更专注于 Controller 层的请求处理,且与 SpringMVC 深度集成。通过配置文件,开发者可以灵活启用或禁用拦截器,无需修改业务代码。SpringMVC 拦截器通过灵活的钩子方法,为开发者提供了强大的请求处理扩展能力。无论是权限验证、日志记录,还是数据预处理,拦截器都能以低侵入的方式实现需求。

2025-03-27 20:55:20 740

原创 Spring MVC核心技术:从请求映射到异常处理

接口设计原则遵循RESTful风格使用合适的HTTP状态码保持URL语义清晰安全建议文件上传时验证文件类型对下载文件进行权限校验使用HTTPS传输敏感数据性能优化启用Gzip压缩使用CDN分发静态资源合理设置缓存策略。

2025-03-25 20:58:16 558 1

原创 Spring MVC:从历史演变到实战入门

通过本文的学习,我们不仅掌握了Spring MVC的核心原理,还完成了从环境搭建到实战开发的完整流程。建议读者在掌握基础后,继续深入以下方向:深入理解拦截器(Interceptor)机制研究Spring Boot对MVC的自动化配置探索响应式编程WebFlux框架。

2025-03-25 20:46:54 866

原创 Spring AOP 面向切面编程

AOP作为Spring框架的核心技术之一,完美实现了关注点分离。结合设计模式中的代理模式,通过动态字节码增强实现了横切逻辑的统一管理。在实际开发中,可以结合自定义注解实现声明式编程,大幅提升代码的可维护性。扩展方向🔹 结合Spring Boot实现零配置AOP🔹 整合Micrometer实现方法级监控🔹 自定义注解实现审计日志功能。

2025-03-24 18:36:28 984

原创 Spring IOC:控制反转与依赖注入

IOC(Inversion of Control,控制反转)是一种面向对象编程的设计原则,核心思想是将对象的创建权交给框架(如Spring)来管理。传统开发中,类之间直接通过new关键字创建依赖对象,导致代码耦合度高。// 传统方式:类A直接依赖类Bclass A {IOC的优势解耦:通过Spring容器统一管理对象生命周期,避免类之间的直接依赖。灵活性:修改依赖关系时无需改动源码,只需调整配置文件或注解。// ...IOC核心价值:通过解耦提升代码可维护性和扩展性。XML vs 注解XML。

2025-03-24 18:09:09 1126

原创 MySQL事务

事务(Transaction)是数据库操作的最小工作单元,由一组逻辑相关的DML(Data Manipulation Language,如INSERT/UPDATE/DELETE)语句组成。事务的边界由业务逻辑决定,例如一次转账可能涉及两次UPDATE操作。事务是数据库保证数据一致性的核心机制,理解其原理与应用场景至关重要。精准控制事务边界:避免过大或过小的事务范围。合理选择隔离级别:平衡一致性与性能。结合框架能力:如Spring的声明式事务简化开发。

2025-03-19 20:42:36 435

原创 通过手写Tomcat理解Web容器基本原理

定义简单的servlet生命周期Request对象封装请求信息(如请求路径、参数)Response对象处理响应输出@Target()元注解负责定义注解的作用范围为类@Retention()元注解定义了注解的生命周期为运行阶段模块关键点实现说明Servlet接口定义服务入口统一请求处理方法注解配置通过反射读取路径配置路由容器HashMap存储映射关系快速查找对应处理类网络通信Socket监听端口每个请求独立处理请求响应模型Request/Response封装。

2025-03-08 23:47:37 315

原创 Http协议

服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明服务器公钥的权威性。为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。互联网上的每个文件都有一个唯一的url地址,它包含的信息指出文件的位置和以及浏览器应该怎么处理它。于是就出现了https协议,它在http协议的基础上进行了加密,所以更安全。htttps的加密模式是对称加密和非对称加密共同作用的方式。请求包含请求方式、请求头和请求正文。

2025-03-04 20:04:21 717

原创 Java中的IO流

字符输入流(Reader)用于读取文本数据,常用类包括 FileReader 和 BufferedReader。字符输出流(Writer)用于写入文本数据,常用类包括 FileWriter 和 BufferedWriter。字符流适合处理文本文件,支持字符编码,能够高效地读写文本数据。

2025-02-21 11:43:34 560

原创 Java中的异常体系

java异常是java提供的一种识别并响应错误的一致性机制。

2025-02-12 23:29:52 192

原创 hashCode与equals()

hashCode是Object类中的一个方法,它返回一个整型数值,这个值被称为哈希码。它的主要用途是为对象提供一个快速比较的依据,特别是在哈希表(如HashMap)中,用于快速定位对象的存储位置。简而言之,hashCode方法的设计目的是提高数据结构中查找、删除和插入元素的效率。

2025-02-11 23:29:50 535

原创 Java中的反射

反射是获取类信息的一种能力。

2024-12-07 00:33:13 343

原创 数组的八大排序

aaa。

2024-11-01 15:25:38 466

原创 Java 代理

生成代理的方法中你必须指定实现类的接口,它根据这个接口来实现代理类生成的所实现的接口。简单来说代理模式就是将被代理类包装起来然后重新实现相同的方法,并且调用原来的方法的同时可以在方法的前后添加一个新的处理。相比于静态代理,动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而不用修改每个代理类中的方法。代理类需要将该接口作为属性,实例化时需要传入该接口的对象,这样该代理类就可以实现代理所有实现。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象。

2024-09-05 13:10:12 1381

原创 java 接口

官方解释:Java接口是一系列方法的声明,是一些方法特征的集合。一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方中被不同的类实现,而这些实现可以具有不同的行为(功能)。接口可以被理解成一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。或者我们可以直接把接口理解成100%的抽象类,即接口中的方法必须全部是抽象方法。

2024-09-03 16:16:40 403

原创 Java 包装类

Java有8种基本数据类型:整型(byte、short、int、long)、浮点型(float、double)、布尔型boolean、字符型char。相对应地,Java提供了8种包装类Byte、Short、Integer、Long、Float、Double、Boolean、Character。包装类创建对象的方式就跟其他类一样。//创建一个数值为0的Integer对象。

2024-08-28 12:59:25 686

原创 Java 泛型

泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参列表,普通方法的形参列表中,每个形参的数据类型是确定的,而变量是一个参数。在调用普通方法时需要传入对应形参数据类型的变量(实参),若传入的实参与形参定义的数据类型不匹配,则会报错。泛型的本质是为了将类型参数化, 也就是说在泛型使用过程中,数据类型被设置为一个参数,在使用时再从外部传入一个数据类型;而一旦传入了具体的数据类型后,传入变量(实参)的数据类型如果不匹配,编译器就会直接报错。

2024-08-28 00:21:44 1678

原创 Java 抽象类

类中描绘了该类所有对象共同的特性,当一个类中给出的信息足够全面时,我们就可以实例化该类;但是,当一个类中给出的信息不够全面时,(比方说有无法确定的行为),它给出的信息不足以描绘出一个具体的对象,这时我们往往不会实例化该类,这种类就是抽象类。在Java中,我们通过在类前添加关键字abstract(抽象的)来定义抽象类。如下所示 ://Animal类此时就是一个抽象类。//Dog类继承了Animal类,是Animal类的子类。我们将“只有方法声明,没有方法体”的一类方法统称为抽象方法。

2024-08-27 23:44:14 921

原创 Java中的多态

多态是什么?多态是同一个行为具有不同的表现形式的能力同一方法可以根据发送对象的不同而采用不同的行为方式多态就是事物的多种形态,一个对象在不同条件下所表现的不同形式。

2024-08-24 22:23:16 1635

原创 关于Java继承相关(方法的重写)

继承是面向对象语法的三大特征之一。继承可以降低代码编写的冗余度,提高编程的效率。1、在java中使用关键字类Parent为父类,Child为子类2、通过继承。(继承的本质就是代码的复用,子类调用父类的代码,父类不能调用子类的代码。学生Tom193、。就像一个儿子只能有一个父亲,但一个父亲可能会有多个儿子。故,终极父类为java标准类。

2024-08-23 13:04:05 355

原创 Java static关键字

没有static修饰时,方法和变量以信息的形式存储在方法区中,只有创建对象时,这些非静态的方法和变量才会有独立的存储空间,被对象调用。

2024-08-22 18:47:08 200

原创 Java语法基础1

先计算条件b,然后进行判断,如果值是true,那么计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。在程序中使用变量,必须先创建它并为它取一个名字,并且指明它能够存储信息的类型,这称为变量声明,也叫容器的创建。整数类型:字节类型:byte (1字节)短整型:short(2字节)整型:int(3字节)长整型:long(4字节)用来表示类名,变量名,对象名,方法名,数组名,文件名等的有效字符序列。一种特殊符号,用以表示数据的运算,比较,赋值。流程跳转语句:break,continue。

2024-08-21 23:15:53 469

空空如也

空空如也

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

TA关注的人

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