自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 对称加密以及非对称加密

对称加密和非对称加密是两种不同的加密方式,它们在加密原理、密钥管理、安全性和性能等方面存在区别,以下是具体分析:

2025-05-09 21:24:27 405

原创 Spring,SpringMVC,SpringBoot,SpringCloud的区别

特性SpringSpringMVCSpringBoot核心功能IoC、AOPWeb MVC 框架简化开发微服务工具集配置方式自动配置、注解基于 SpringBoot部署方式需外部服务器需外部服务器内置服务器分布式系统适用场景基础框架Web 应用开发独立应用、微服务微服务架构。

2025-05-09 21:09:19 855

原创 Redis 中简单动态字符串(SDS)的深入解析

SDS 是 Redis 默认的字符表示,用于保存数据库中的字符串值。它不仅可以存储文本数据,还能存储任意格式的二进制数据,如图片、视频等。同时,SDS 还被用作缓冲区,例如 AOF 模块的 AOF 缓冲区以及客户端状态中的输入缓冲区。

2025-05-05 23:55:16 1051

原创 Java 类加载机制深度解析

如果接口的实现类发生初始化,则接口会在其之前被初始化。

2025-04-29 00:38:51 1382

原创 Java垃圾收集器与内存分配策略深度解析

在发生 Minor GC 之前,虚拟机会检查老年代的最大可用连续空间是否大于新生代所有对象的总大小。参数,开启后虚拟机会根据当前系统的运行情况动态调整新生代的大小、Eden 与 Survivor 区的比例等参数,以提供最合适的停顿时间或最大的吞吐量。:对于分配给虚拟机管理的内存较小(如几十兆到一两百兆)的应用场景,Serial 收集器的停顿时间可以控制在较短范围内,对用户体验的影响较小。:在 JDK 7 之前的遗留系统中,ParNew 收集器是首选的新生代收集器,尤其是在需要与 CMS 收集器配合使用时。

2025-04-29 00:18:52 845

原创 Java垃圾收集器与内存分配策略深度解析

垃圾收集(Garbage Collection,简称 GC)并非 Java 的专属产物。早在 1960 年,Lisp 语言就率先引入了内存动态分配与垃圾收集技术。当时,Lisp 的设计者 John McCarthy 就明确了垃圾收集需要解决的三大问题:哪些内存需要回收?何时回收?如何回收?经过半个多世纪的发展,内存动态分配与回收技术已相当成熟。然而,当系统面临内存溢出、内存泄漏问题,或者垃圾收集成为性能瓶颈时,开发者仍需深入了解这些“自动化”技术的细节,以便进行有效的监控与优化。

2025-04-28 23:54:52 895

原创 JVM 自动内存管理

Java 虚拟机在运行 Java 程序时,会将所管理的内存划分为多个不同的数据区域,各区域有着独特的用途、创建和销毁时间。以最常用的 HotSpot 虚拟机和 Java 堆为例,深入了解对象在其中的创建、布局和访问过程。

2025-04-28 23:28:07 1113

原创 Java 的创新与变革之路:从 JDK 7 到 JDK 23

Java 作为一种广泛应用的编程语言,其发展历程与 JDK(Java Development Kit)的演进紧密相连。自 JDK 7 起,Java 语言不断引入重大特性,持续重塑开发格局,推动性能、功能和开发体验的提升。本文将深入剖析 JDK 7 至 JDK 24 的主要变化,带您领略 Java 的创新与变革之路。

2025-04-28 23:04:13 768

原创 Class 类文件的结构解析

Class 文件是一组以 8 个字节为基础单位的二进制流,数据紧凑排列,无分隔符。其采用类似 C 语言结构体的伪结构存储数据,包含 “无符号数” 和 “表” 两种数据类型。无符号数用于描述数字、索引引用等,表则由多个无符号数或其他表构成,用于描述复合结构数据,整个 Class 文件本质上也可看作一张表。表 CONSTANT_Class_info型常量的结构。表 CONSTANT_Utf8_info型常量的结构。

2025-04-28 16:12:26 408

原创 用两个栈实现队列与用两个队列实现栈

用两个栈实现队列入队操作简单,时间复杂度为O(1)。出队操作复杂度较高,平均为O(1),最坏为O(n)。适合场景:当入队操作频繁,而出队操作较少时。用两个队列实现栈入栈操作简单,时间复杂度为O(1)。出栈和查看栈顶元素操作复杂度较高,均为O(n)。适合场景:当入栈操作频繁,而出栈和查看栈顶操作较少时。

2025-04-28 01:47:48 263

原创 二叉树的层序遍历

层序遍历(Level-order Traversal)是一种按照层次顺序访问二叉树节点的方法。具体来说,它按照以下步骤进行:从根节点开始,逐层访问每一层的节点。在每一层中,从左到右依次访问节点。访问完一层的所有节点后,再访问下一层的节点。

2025-04-28 00:59:08 361

原创 二叉树的前序、中序和后序遍历:详解与实现

先访问根节点,然后递归地遍历左子树,最后递归地遍历右子树。先递归地遍历左子树,然后访问根节点,最后递归地遍历右子树。先递归地遍历左子树,然后递归地遍历右子树,最后访问根节点。遍历方式访问顺序应用场景前序遍历根 -> 左 -> 右构建表达式树、复制二叉树、序列化二叉树中序遍历左 -> 根 -> 右生成有序序列、表达式树的中缀表达式后序遍历左 -> 右 -> 根删除二叉树、表达式树的后缀表达式。

2025-04-27 23:57:35 652

原创 HashMap的源码解析

基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。的实现不是同步的,这意味着它不是线程安全的。它的keyvalue都可以为null。此外,中的映射不是有序的。JDK1.8 之前由数组+链表组成的,数组是的主体,链表则是主要为了解决哈希冲突(两个对象调用的hashCode方法计算的哈希码值一致导致计算的数组索引值相同)而存在的(“拉链法”解决冲突)。

2025-04-25 23:19:20 856

原创 《Spring AOP 实战:从入门到注解》

是 Spring 框架中对面向切面编程(AOP)思想的实现。它通过预编译方式或者运行期动态代理实现程序功能的统一维护。Spring AOP 允许我们在不修改源代码的前提下,对程序进行增强,从而提高程序的可重用性和开发效率。AOP 的核心思想是将(如日志记录、事务管理、安全检查等)与业务逻辑分离,从而降低代码的耦合度。Spring AOP 提供了强大的支持,使得开发者可以轻松地实现 AOP 的各种功能。

2025-04-25 21:33:14 390

原创 《深入理解 AOP》

在 Spring 框架中,AOP 的实现依赖于动态代理技术。动态代理技术允许在运行时动态地创建代理对象,并在代理对象上调用方法时插入额外的逻辑(即通知)。Spring AOP 主要使用两种动态代理技术:JDK 动态代理和 CGLIB 代理。

2025-04-25 21:21:29 902

原创 自动拆装箱以及Integer类型128陷阱

我会认为这个问题的输出结果是true、true、true、true。但是在运行的时候发现,结果并不是想象中的那样子。正确答案如下。

2025-04-23 17:05:17 311

原创 MyBatis-Plus 多数据源配置与读写分离实战

在实际的项目开发中,我们常常会遇到需要操作多个数据库的情况,比如纯粹多库、读写分离、一主多从、混合模式等。本文将详细介绍如何使用 MyBatis-Plus 实现纯粹多库的场景,并探讨读写分离的实现思路。

2025-03-30 14:48:53 333

原创 Mybatis以及Mybatis-Plus中的代码生成器(逆向工程)

创建一个mavenjava项目,导入相应的依赖。成springboot管理的项目。把相应的框架搭建好,controller,entity,service,mapper,启动类.导入依赖在rescource下面导入这个文件这里面需要注意的是 因为是xml文件,所以connectionURL="jdbc:mysql://localhost:3306/mybatis_plus?password="root">要加上&转义字符。

2025-03-30 12:04:32 1295

原创 MybatisPlus中的通用枚举使用

表中的有些字段值是固定的,例如性别(男或女。注解所标识的属性值存储到数据库。设置性别信息为枚举项,会将。最后性别栏成功插入1。

2025-03-30 11:41:06 386

原创 Mybatis_Plus中的条件构造器和常用接口,插件

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

2025-03-30 11:20:15 349

原创 Mybatis_Plus中的常用注解

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

2025-03-30 09:34:04 1025

原创 MyBatis-Plus简介以及入门案例

(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上,为。提供了通用的Mapper和Service(向上提取),可以在不编写任何SQL语句的前提下,快速的实现单表的增删改查(CURD),批量,逻辑删除,分页等操作。只要把的特性到优秀插件,以及多数据源的配置进行详细讲解。特点无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作强大的CRUD操作:内置通用。

2025-03-30 09:22:45 738

原创 Mybatis_Plus中常用的IService方法

方法实现实现的sql。

2025-03-29 23:08:51 289

原创 thymelef

引入thymeleaf从spring父文件中能看到Springboot2.7.1所使用的thymeleaf版本是3.0.15springBoot启动的时候会自动配置从ThymeleafAutoConfiguration的源代码中我们可以得知ThymeleafProperties中配置了Thymeleaf的规则我们使用html作为模板,而且默认的前缀是放在classpath:/templates/下,后缀是.html当然这些属性我们都可以通过application.properties来修改。

2025-03-22 14:05:49 549

原创 springboot配置文件解析

pringBoot使用一个全局的配置文件,配置文件名是固定的;配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;YAML标记语言:以前的配置文件;大多都使用的是xxxx.xml文件;YAML:以数据为中心,比jsonxml等更适合做配置文件;YAML语法基本语法k:(空格)v:表示一对键值对(空格必须有);以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的属性和值也是大小写敏感;

2025-03-22 13:46:03 693

原创 java开发框架与微服务(第一个springboot项目)

springboot就是简化Spring应用开发的一个框架;把整个Spring技术栈的一个大整合。J2EE开发的一站式解决方案优点:快速创建独立运行的spring项目以及与主流框架集成使用嵌入式的Servlet容器,应用无需打成war包,内嵌TomcatStarters自动依赖和版本控制(starters就相当于一个大的工具箱,里面包含了任何需要的工具,用啥拿啥)大量的自动装配,简化开发,也可以修改默认值无需配置XML无代码生成开箱即用准生产环境的运行时应用监控与云计算的天然集成。

2025-03-22 13:19:07 980

原创 maven私服搭建

配置项目 pom.xml,配置私服仓库的地址,本公司的自己的 jar 包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为 release 则上传到私服的 release 仓库,如果版本为snapshot 则上传到私服的 snapshot 仓库。-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->-- 表示拦截所有的请求,都重定向到私服,从私服下载jar包,私服没有再去中央仓库下载 -->--仓库地址,即nexus仓库组的地址 --></releases> <!

2025-03-10 22:38:09 736

原创 反射与代理

我们知道类是具有相同属性或者行为的一类事物,那么类本身也可以再被抽象,因为类们也有共同的属性和行为(比如类都有属性,都有构造器,都有方法,都能调用方法),所以把类们又抽象成了一个类。这种动态获取的信息以及动态调用对象的方法的功能称为。并不影响代码的语义,但是它能够工作的方式被看做类似程序工具或者类库,它反过来对正在运行的程序语义有所影响,方法中实现了在调用被代理对象方法前后添加额外逻辑的功能,从而实现了动态代理的增强效果。如果底层方法是实例方法,第一个参数就是该对象实例,第二个参数是方法的参数列表,

2025-03-08 11:06:54 336

原创 若依前后端分离 生成代码板块使用

sql在你那个数据库中运行。然后main中是后端代码,vue中的是前端代码。首先通过 sql语句或者可视化创建你要导入的数据库以及表单。把view里的文件夹复制到对应的文件夹中 (注意是文件夹)点击编辑,可以根据你的项目需求制定一些规则。resource里面的mapper.xml。这样后端就全部复制成功了,接下来复制前端。然后重新启动你的前后端,进行运行即可。点击生成,是一个压缩包,把他解压缩。把这段代码复制到system下面。这是生成的一些代码预览。把api里的文件复制到。这三个文件夹里的内容。

2025-03-08 08:58:30 236

原创 Ruoyi-Vue前后端分离搭建

在application-druid 里配置你的数据库 包括地址 端口 名称 用户名以及密码。Mysql在云服务上的下载与安装,本机上可以去搜索本机下载Mysql过程。前端是ruoyi-ui 把这个文件夹用vscode打开然后进行配置。JDK下载到本机或者云服务器上,以下是我在云服务上下载。password如果没设置 就默认不写 如果设置了就写上。redis如果下载到本机 地址那就是localhost。把下载好的目录用vscode打开。Redis 在云服务上的下载与安装。我这里下载的是Vue3的前端版本。

2025-03-07 19:18:17 456

原创 关于SSM项目的整合

启动 Web 服务器:启动如 Tomcat 这样的 Web 服务器。Tomcat 启动后会开始加载部署在其中的 Web 应用。加载web.xml文件:Tomcat 会读取 Web 应用WEB - INF目录下的web.xml文件,该文件是 Web 应用的核心配置文件,包含了 Servlet、Filter、Listener 等组件的配置信息。初始化 Spring 根应用上下文当 Tomcat 解析到web.xml中配置的时,它会触发该监听器的初始化操作。会根据中配置的参数(通常指向。

2025-03-02 18:10:20 598

原创 AJAX 入门:从基础到实践

AJAX 是一种用于创建快速动态网页的技术,它结合了 JavaScript 和 XML(虽然现在也常用 JSON 数据格式)。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着在不重新加载整个网页的情况下,对网页的某部分进行更新。与传统网页技术相比,传统网页如果需要更新内容,必须重载整个网页面,而使用 AJAX 技术则可以避免这种情况。目前,几乎所有的网站都离不开 AJAX 这门技术。AJAX 的最大特点是页面无刷新的请求,默认是异步的,速度快,用户体验比较好。

2025-03-01 11:10:38 1263

原创 深入理解 Java Servlet:从基础到实战

Servlet 是 JavaWeb 三大组件之一,另外两个组件是 Filter(过滤器)和 Listener(观察者模式)。Servlet 是我们学习 JavaWeb 的基石,必须熟练掌握。由于现在的请求大多基于 HTTP 协议,因此我们可以专门为 HTTP 请求编写一个通用的父类。是的子类,而又是Servlet接口的子类。是一个全局的储存信息的空间,服务器启动时创建,关闭时释放。所有用户共用一个对象,因此可以在其中存放所有用户需要共享的、线程安全的重要信息。

2025-02-21 18:23:30 1010

原创 深入学习 XML:语法、约束、解析及相关技术

XML 全称为可扩展的标记语言,是 SGML(标准通用标记语言)的一个子集。与 HTML 不同,HTML 的元素是固定的,而 XML 的标签可以由用户自定义。W3C 在 1998 年 2 月发布了 XML 1.0 版本,虽然 2004 年 2 月发布了 1.1 版本,但由于其不能向下兼容 1.0 版本,所以目前广泛使用的仍是 1.0 版本。

2025-02-21 09:15:36 873

原创 JSP 深入浅出:全面解析 JavaServer Pages

早期:JavaWeb 起步阶段采用 applet + servlet 的模式。applet 用于在客户端浏览器中展示动态内容,但由于安全和性能等问题,逐渐被其他技术取代。而 servlet 则负责处理服务器端的业务逻辑,但在输出 HTML 页面时,需要编写大量的语句,代码繁琐且不易维护。中期:主要以 servlet 为主,但这种方式在处理页面展示时效率低下。开发人员需要在 servlet 中逐行输出 HTML 代码,使得代码的可读性和可维护性大打折扣。后期:JSP 的出现改变了这一局面。

2025-02-21 08:43:02 1098

原创 深入理解数据库事务:原理、应用与隔离级别

事务是数据库提供的一个特性,它是组成各个数据操作的执行单元,这些操作要么全部成功执行,要么全部不执行。以转账功能为例,当冠希给美美转 1000 元钱时,这个过程包含两个关键操作:先从冠希的账户扣除 1000 元,再给美美的账户加上 1000 元。这两个操作必须作为一个整体来执行,否则就可能出现数据不一致的情况,比如冠希的钱扣了,但美美没收到,或者反之。

2025-02-21 08:05:04 941

原创 深入理解 SQL 注入漏洞及解决方案

在已知用户名的情况下,攻击者可以通过输入特殊构造的密码,利用 SQL 注入漏洞绕过系统的身份验证机制,成功登录系统。例如,原本需要正确的用户名和密码才能访问的系统,攻击者只需输入特定的字符组合,如 “aaa'or'1=1” 作为密码(用户名已知),就可以在不知道正确密码的情况下登录进去,这显然严重破坏了系统的安全性和访问控制机制。在这种情况下,如果用户输入恶意的字符,就会改变 SQL 语句的逻辑。“‐‐” 在 SQL 中是注释符,这使得后面的密码验证部分被注释掉,查询只验证用户名,同样也实现了非法登录。

2025-02-20 09:28:43 925

原创 数据库连接池与池化思想

数据库连接池是一种用于管理数据库连接的技术。它通过在应用程序启动时预先创建一定数量的数据库连接,并将这些连接保存在一个“池”中。当应用程序需要与数据库交互时,直接从连接池中获取一个可用的连接,使用完毕后将连接归还到池中,而不是每次都创建和销毁连接。数据库连接池通过池化思想,有效地管理和复用数据库连接,提升了应用程序的性能和资源利用率。常见的开源连接池如DBCP、C3P0和Druid都提供了丰富的功能和配置选项,开发者可以根据项目需求选择合适的连接池。

2025-02-18 21:05:50 1129

原创 JDBC 入门:从基础到实战

JDBC,即 Java DataBase Connectivity,是 Java 用于连接数据库的技术,旨在通过 Java 代码操作数据库。它是一套接口规范,其实现类由各数据库生产商提供。掌握 JDBC 接口和方法,就能操作不同数据库。而驱动则是数据传输的桥梁,使用 MySQL 数据库需导入等相应驱动 jar 包。

2025-02-18 20:13:21 736

原创 PowerDesigner的介绍与使用

是 Sybase 公司开发的一款企业建模和设计解决方案。它是一个模型驱动的工具,可以帮助用户进行有效的企业体系架构部署,并为研发生命周期管理提供强大的分析与设计技术。PowerDesigner 集成了多种标准数据建模技术,如 UML、业务流程建模以及市场领先的数据建模,并与 .NET、WorkSpace、PowerBuilder、Java™、Eclipse 等主流开发平台集成,提供业务分析和规范的数据库设计解决方案。

2025-02-18 19:01:11 418

空空如也

空空如也

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

TA关注的人

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