自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【无标题】

Java配置:在@Configuration类中,可以使用@Bean注解来定义Bean,并在方法上使用@PostConstruct和@PreDestroy注解来指定初始化方法和销毁方法。注解配置:可以通过在Bean类的初始化方法上使用@PostConstruct注解和在销毁方法上使用@PreDestroy注解,来定义初始化和销毁的方法。:将Bean之间的依赖关系通过构造函数注入、Setter方法注入或字段注入的方式实现,提高了代码的松耦合性和可测试性。

2025-02-07 10:08:20 687

原创 mysql的原理及经验

大事务会影响数据库的性能,应当尽量把大事务拆成若干个小事务,禁止写过于复杂的sql语句,除了造成大事务不说,还会让别人头大,无法维护。存储引擎是MySQL的核心组件之一,它负责数据的存储和检索。它非常适合需要高并发和事务支持的应用场景。角色管理:MySQL 8.0引入了角色(Role)的概念,可以将一组权限分配给角色,再将角色分配给用户,简化权限管理。:虽然它不支持事务,但提供了全文索引和较高的读取速度,适合读多写少的应用场景。2.避免大事务,大事务就是运行的时间比较长,操作的数据比较多的事务。

2025-02-07 09:34:38 572

原创 ssm框架实现连接数据库mysql

写Service.java,为控制层提供服务,接受控制层的参数,完成相应的功能,并返回给控制层。写Controller.java,连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。

2025-02-07 09:15:34 296

原创 ssm的心得

spring是一个轻量级的ioc(控制反转)和aop(面向切面编程)容器框架,它可以管理和配置应用中的各种bean(对象),实现bean之间的依赖注入,以及提供事务管理、缓存、测试等功能。4. 接着学习spring框架的核心概念和功能,如ioc容器、bean生命周期、依赖注入、aop编程、事务管理等。5. 再学习mybatis框架的核心概念和功能,如配置文件、映射文件、sql语句、动态sql、分页插件等。6. 最后学习spring mvc框架的核心概念和功能,如控制器、模型、视图、拦截器、异常处理等。

2025-02-07 09:07:11 112

原创 SSM(一)

在SSM(Spring + SpringMVC + MyBatis)框架中,配置文件是项目的核心组成部分,用于定义框架的行为和组件之间的关系。以下是SSM框架中常见的配置文件及其作用和配置要点。

2025-02-07 08:51:53 519

原创 MyBatis

通过MyBatis的resultMap和嵌套查询,我们可以方便地实现中间表的关联查询。resultMap用于定义结果映射规则,标签用于处理多对多关系,通过select属性指定子查询来加载关联对象。怎么处理MySQL的慢查询?1、开启慢查询日志,准确定位到哪个sql语句出现了问题2、分析sql语句,看看是否load了额外的数据,可能是查询了多余的行并且抛弃掉了,可能是加载了许多结果中并不需要的列,对语句进行分析以及重写。

2025-02-07 08:42:32 900

原创 Spring Cloud概述

SpringCloud是一个基于SpringBoot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一套完整的解决方案。

2025-01-17 20:38:29 837 1

原创 前后端分离开发心得

• 前端:负责展示数据和用户交互,使用 HTML、CSS、JavaScript 等技术实现用户界面和交互逻辑,通过 AJAX 或 WebSocket 等技术与后端进行通信,获取数据并将数据展示给用户。前后端分离开发是一种软件开发模式,将前端和后端的开发分离开来,使得前端和后端可以独立开发、测试和部署。• 后端:负责处理业务逻辑和数据存储,编写业务逻辑和数据存储的代码,提供 API 接口供前端调用。• 提高开发效率:前后端可以并行开发,减少了开发时间。• 轻量级:体积小,加载速度快,提升用户体验。

2025-01-16 19:40:05 391

原创 Spring Boot+Vue

• Controller 层:定义 RESTful 风格的接口,通过`@RestController`注解标记控制器类,使用`@RequestMapping`、`@GetMapping`、`@PostMapping`等注解定义接口路径和请求方法。• Dao 层:与数据库进行交互。• 项目目录结构清晰,`src`目录下包含`components`(组件)、`views`(页面视图)、`router`(路由配置)、`store`(状态管理)、`assets`(静态资源)等子目录,方便进行模块化开发。

2025-01-15 20:32:41 897

原创 Maven

它包括多个阶段,如 validate(验证项目是否正确)、compile(编译项目的源代码)、test(运行测试)、package(把编译后的代码打包成可分发的格式,如 JAR、WAR 等)、install(将包安装到本地仓库,供其他项目使用)、deploy(将包部署到远程仓库,如公司的内部仓库或者 Maven 中央仓库)等。例如,A 项目依赖 B 库,B 库又依赖 C 库,Maven 会自动下载 B 和 C 库,并且会根据版本规则(如遵循语义化版本号规则)选择合适的版本,避免版本冲突。

2025-01-14 22:54:27 613

原创 Java注解

定义注解:可以使用@interface关键字来定义自己的注解。自定义注解可以包含一些元素(也称为成员),这些元素可以有默认值。例如,定义一个用于标记重要方法的注解:java这个注解有一个名为的元素,其默认值为。使用注解:定义好注解后,就可以在代码中使用它了。例如:java// 重要的方法实现在这个例子中,方法被标记为重要方法,并且通过注解的元素提供了对该方法重要性的具体描述。注解的元注解:元注解是用来修饰注解的注解,Java提供了一些元注解,如@Retention。

2025-01-11 19:29:23 757

原创 MVCC多版本并发控制

通俗的讲,数据库中同时存在多个版本的数据,并不是整个数据库的多个版本,而是某一条记录的多个版本同时存在,在某个事务对其进行操作的时候,需要查看这一条记录的隐藏列事务版本id,比对事务id并根据事物隔离级别去判断读取哪个版本的数据。如果数据事务ID trx_id < min_limit_id,表明生成该版本的事务在生成Read View前,已经提交(因为事务ID是递增的),所以该版本可以被当前事务访问。事务每次开启前,都会从数据库获得一个自增长的事务ID,可以从事务ID判断事务的执行先后顺序。

2025-01-09 22:37:23 397

原创 Spring Boot

举个例子,比如我们要创建一个 web 项目,使用 Spring 的朋友都知道,在使用 Spring 的时候,需要在 pom 文件中添加多个依赖,而 Spring Boot 则会帮助开发着快速启动一个 web 容器,在 Spring Boot 中,我们只需要在 pom 文件中添加如下一个 starter-web 依赖即可。Spring Boot 是伴随着 Spring 4.0 诞生的,从字面理解,Boot是引导的意思,因此 Spring Boot 旨在帮助开发者快速搭建 Spring 框架。

2025-01-07 21:35:32 536

原创 MyBatis框架

这些步骤涵盖了MyBatis的基本配置,可以根据具体需求进行调整和扩展。文件中添加MyBatis和数据库驱动的依赖。文件,配置数据库连接和事务管理器等信息。节点,注册Mapper接口或XML文件。:创建与数据库表对应的Java对象。:定义与数据库操作相关的接口。:定义SQL语句和映射规则。:创建一个工具类,用于获取。以上步骤完成后,就可以通过。

2025-01-03 21:07:12 727

原创 MySQL中的隔离机制实现

MySQL 的事务隔离机制通过 MVCC 和锁机制,为我们提供了灵活的并发控制手段。在设计数据库时,应根据业务场景选择合适的隔离级别,同时通过优化事务执行来兼顾性能与一致性。掌握事务隔离机制的原理和实现,不仅能提升系统可靠性,还能有效应对高并发场景下的数据一致性问题。对于查询操作,InnoDB 会为事务生成快照,确保读取到的始终是事务启动时的数据状态。使用 READ COMMITTED,可以减少锁的争用,提高并发性能。排他锁(X 锁):一个事务独占资源,禁止其他事务读取或修改。仅在可重复读隔离级别下启用。

2024-12-27 15:24:04 351

原创 MyBatis 动态SQL使用及原理

MyBatis的动态SQL解析原理是将OGNL表达式解析为可执行的SQL片段,然后根据条件判断是否将该SQL片段加入到最终的SQL语句中。通过上述不同类型的 Builder 对象,我们可以将 XML 中的 SQL 片段转换成 Java 对象,并且根据各种条件生成相应的 SQL 语句。MyBatis的动态SQL是通过OGNL表达式来实现的。根据MyBatis的配置将Mapper.xml文件中的SQL语句解析为一个MappedStatement对象,并将其中的OGNL表达式解析成一个一个可执行的SQL片段。

2024-12-25 15:09:54 676

原创 MySQL的架构设计和设计模式

比如在进货模块中,供货商与超市之 间的关系就是多对多的关系,一个供货商可以给多个超市供货,一个超市也可以从多个供货商那里采购 商品。再比如一个选课表,有许多科目,每个科目有很多学生选,而每个学生又可以选择多个科目,这 就是多对多的关系。:通过实体和实体之间的关系来描述数据的结构。例如,在图书管理系统中,图书(Book)和作者(Author)是两个实体,它们之间的关系可以是:一个作者可以写多本书,而一本书只能有一个作者。一对一 :指实体之间的关系是一一对应的,比如个人与身份证信息之间的关系就是一对一的关系。

2024-12-24 20:49:25 1023

原创 MySQL

使用 `JOIN` 可以在查询中结合两个或多个表,如 `INNER JOIN`、`LEFT JOIN`、`RIGHT JOIN` 等。- `INSERT` 语句用于向数据库表中添加新的数据行。- `SELECT` 语句用于从数据库表中检索数据。- `UPDATE` 语句用于修改表中的数据。数据库原理是数据库技术领域的基石,它涉及到数据库的创建、使用、维护和优化等多个方面。- `DELETE` 语句用于从表中删除数据。- 包括基本的CRUD操作(创建、读取、更新、删除),是数据库操作的基础。

2024-12-20 19:27:18 1119

原创 Mysql索引

索引列,通常是主键,其中的值是任意分配的。例如,即使纳税人 ID 对于一个人来说是唯一的,数据库也可能不得不处理违反该规则的记录,例如身份盗用的情况。这些值是估计的,而不是精确计算的,因为在任何时候,不同的 事务都可以从同一个表中插入和删除行。尽管出于历史原因哈希索引是表的默认索引 MEMORY,但该存储引擎还支持 B 树索引,这通常是通用查询的更好选择。索引条件下推 (ICP) 是一种优化,WHERE如果条件的一部分可以使用索引中的字段进行评估,则将条件的一部分下推到存储引擎。最初,仅适用于表格。

2024-12-16 22:19:53 860

原创 MySQL的优化

正确使用索引可以显著减少数据库的I/O操作,提高查询速度。:对于复杂查询,可以先查询并存储到临时表中,再进行进一步查询操作,减少重复计算。:在进行大量数据插入或更新时,批处理可以减少数据库的I/O操作次数,提高性能。:不同的存储引擎具有不同的性能特点,选择合适的存储引擎可以提高查询性能。子句限制返回结果集的大小,尤其在分页查询时,可以显著提高性能。:包括更新统计信息、重建索引等,以确保查询性能保持最佳状态。:对于大型表,使用分区可以提高查询性能和数据管理效率。:了解查询的具体执行步骤,找出性能瓶颈。

2024-12-12 20:52:49 929

原创 Mysql基础

1. 什么是内连接、外连接、交叉连接、笛卡尔积呢?Mysql中的连接是通过两个或多个表之间的列进行关联,从而获取相关联的数据。内连接(inner join):返回两个表中连接字段匹配的行。如果一个表中的行在另一个表中没有匹配的行,则这些行不会出现在查询结果中。假设有两个表,Employees 和 Departments。2.外连接(outer join):不仅返回两个表中匹配的行,还返回左表、右表或两者中未匹配的行。

2024-12-11 23:03:06 1148

原创 MyBatisPlus实现多表查询

通过以上步骤,你可以在你的项目中使用MyBatis-Plus Join扩展来实现多表关联查询。MPJ提供了一种简洁的方式来构建和执行多表查询,无需编写复杂的XML配置文件。你可以通过配置Join条件来实现多表查询,这种方式更加灵活,适用于复杂的多表查询场景。: 在你的Mapper接口中,你可以使用MPJ提供的API来构建多表查询。: 首先,你需要在你的项目中引入MyBatis-Plus-Join的依赖。: 使用MyBatis-Plus的动态SQL功能,可以在运行时构建多表查询。

2024-12-10 21:58:34 1721

原创 【无标题】

MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作,使得开发者可以更专注于 SQL 本身。- 插入数据到数据库中:xml对应的 Mapper 接口方法:java- 从数据库中删除数据:xml对应的 Mapper 接口方法:javaxmjavaxmljava- 更新数据库中的数据:xml对应的 Mapper 接口方法:java。

2024-12-09 22:53:34 852

原创 动态sql

主要使用在update语句当中,用来生成set关键字,同时去掉最后多余的“,” 比如我们只更新提交的不为空的字段,如果提交的数据是空或者"",那么这个字段的原来数据我们将不更新。该属性是必须指定的,在不同的情况下,该属性的值是不一样的,if标签可通过test属性的表达式进行判断,若表达式的结果为true,则标签中的内容会执行;①如果传入的是单参数且参数类型是一个List集合的时候,collection的属性值为list。(1)prefix:在trim标签中的内容的前面添加某些内容。

2024-12-07 23:17:24 882

原创 MyBatis特殊的SQL执行

1={password=123, sex=男, id=1, age=23, username=admin},且最终要以一个map的方式返回数据,此时需要通过@MapKey注解设置map集合的键,值是每条数据所对。将表中的数据以map集合的方式查询,一条数据对应一个map;将表中的数据以map集合的方式查询,一条数据对应一个map;(2)当字段符合Mysql的要求使用下划线“_”,而实体类的属性符合Java的要求使用驼峰;此时可以在mybatis的核心配置文件中设置一个全局配置,可以自动将下划线映射为驼峰。

2024-12-06 21:25:58 782

原创 常见的数据结构:

数据结构是计算机科学中的一个核心概念,它涉及到组织、管理和存储数据的方式,以便可以有效地访问和修改数据。数据结构的形式有很多,每种结构都有其特定的用途、优势和局限性。以下是一些常见的数据结构:1. **数组(Array)**:- 一种线性数据结构,可以存储固定大小的同一类型元素。- 支持通过索引快速访问数据。2. **链表(Linked List)**:- 由节点组成的线性数据结构,每个节点包含数据部分和指向下一个节点的指针。- 不支持随机访问,但插入和删除操作更灵活。

2024-12-05 23:46:10 1491

原创 树型结构的介绍

堆是一种特殊的树形结构,通常是指一个可以放在数组中的二叉树,其中每个节点的值都小于或大于其子节点的值(对于最小堆和最大堆)。树型结构(Tree Structure)是一种常见的数据组织方式,它由节点(Node)构成,每个节点可以包含零个或多个子节点,并且有一个父节点(除了根节点外,根节点没有父节点)。:图是一种更为复杂的非线性结构,其中的节点可以有多于一个的前驱节点和后继节点,即节点之间可以有多对多的关系。孩子结点或子结点:一个结点含有子树的根结点称为该结点的子结点即只有根节点的结点才是子节点;

2024-12-04 20:26:00 564

原创 MySQL算法篇(一)

在数据库中,数据的自增是一个很常见的形式,比如一个表的主键是 id,而主键一般默认都是自增的,如果采取二叉树这种数据结构作为索引,那上面介绍到的不平衡状态导致的线性查找的问题必然出现。因此,简单的二叉查找树存在不平衡导致的检索性能降低的问题,是不能直接用于实现 Mysql 底层索引的。Hash算法,也称为哈希算法或散列算法,是一种将任意长度的输入(如文本、图片等)通过某种规则转换成固定长度的输出的算法。:对于树中的任意节点,其左子树上所有节点的值都小于该节点的值,其右子树上所有节点的值都大于该节点的值。

2024-12-02 17:07:50 1418

原创 线程的生命周期及状态转换

**行为**:处于等待状态的线程不会去尝试获取任何锁,它们被挂起,直到被其他线程通过调用`notify()`、`notifyAll()`、`interrupt()`或`LockSupport.unpark()`等方法唤醒。- **原因**:线程进入等待状态通常是因为它调用了某些特定的方法,如`wait()`、`join()`或`LockSupport.park()`,这些方法会使线程主动放弃对象的锁并进入等待状态,直到被显式地唤醒。在等待状态中,线程不会去竞争CPU资源,也不能被中断。

2024-11-30 21:58:59 432

原创 Maven 插件

检查 `${user.home}/.m2/settings.xml` 文件,确认是否有正确的 `<pluginRepositories>` 和 `<repositories>` 配置。- 确保 `pom.xml` 中的 `<plugin>` 标签包含了正确的 `groupId`、`artifactId` 和 `version`。- **PATH**:包含 `%JAVA_HOME%\bin`,使得 `java` 和 `javac` 命令可以在命令行中直接使用。

2024-11-29 20:18:09 1278

原创 Servlet的介绍

容器将调用Servlet的`service()`方法,并传入请求和响应对象。`service()`方法将根据请求的类型(如GET、POST)调用相应的`doGet()`、`doPost()`等方法来处理请求。- 对于每个请求,容器将调用`service()`方法,该方法根据请求的类型(如GET或POST)分派到`doGet()`或`doPost()`等具体的方法。- `service()`方法负责调用适当的doXxx()方法,如`doGet()`、`doPost()`、`doPut()`等。

2024-11-28 21:50:45 1230

原创 数据库mysql

技术选择是软件开发过程中的一个关键步骤,它涉及到决定使用哪些技术、框架、库、工具和编程语言来构建项目。如果你有关于Web开发的任何具体问题,比如技术选择、开发流程、最佳实践等,随时可以问我。此外,技术选择也不是一成不变的,随着项目进展和市场变化,可能需要重新评估和调整技术栈。Web开发,也称为网站开发,是指使用不同的编程语言、工具和软件系统来创建和维护网站的过程。如果你有具体的项目需求,需要帮助进行技术选择,可以提供更多的项目细节,我可以帮助你分析和建议合适的技术方案。不同的项目可能需要不同的技术栈。

2024-11-27 21:47:18 405

原创 Java Map

常见的实现类包括`HashMap`、`TreeMap`、`LinkedHashMap`、`Hashtable`和`ConcurrentHashMap`。- `Map`的实现类在迭代时对并发修改的响应不同,例如`HashMap`在迭代时允许结构性修改,而`ConcurrentHashMap`则不允许。- `Map<K,V>`:定义了映射的基本操作,如`put`、`get`、`remove`等。- 可以通过`entrySet()`、`keySet()`或`values()`来遍历Map。

2024-11-26 22:04:53 629

原创 MySQL数据库的算法

MySQL数据库根据不同的使用场合,支持两种Nested-Loop Join算法,一种是Simple Nested-Loops Join(NLJ)算法,另一种是Block Nested-Loops Join(BNL)算法。需要注意的是,随着计算能力的提升,一些旧的哈希算法(如MD5和SHA-1)已经不被认为是安全的,因为它们更容易遭受碰撞攻击。• Block Nested-Loop Join(BNL):BNL算法使用一个类似于缓存的机制,将表数据分成多个块,然后逐个处理这些块,以减少内存和CPU的消耗。

2024-11-25 22:07:35 614

原创 Java Web后端项目的特点和组成部分

2. **统一异常处理**:项目中实现了统一的异常处理机制,通过`try-catch`语句捕获异常,并返回统一的错误格式`AjaxResult`,这有助于防止异常信息泄露给用户,增强了系统的安全性。5. **Java 8安全特性**:项目利用Java 8的Stream API和Lambda表达式简化代码,减少出错的可能,同时Optional类帮助避免`null`指针异常,提高了代码的安全性。8. **安全测试**:项目进行了安全测试,包括黑盒测试和白盒测试,全面测试和评估系统的安全性。

2024-11-23 11:30:49 762

原创 javaEE

Spring Security 是一个功能强大且高度可定制的框架,用于保护基于 Java 的应用程序。如果你正在维护或开发这样的项目,你可能需要关注上述方面,并考虑是否需要引入一些现代化的工具和框架来提高开发效率和系统性能。GrantedAuthority:表示授予用户的权限(例如角色)的接口,通常通过 SimpleGrantedAuthority 实现。UserDetails:存储用户信息的核心接口,通常包含用户名、密码、是否启用、账户是否过期、凭证是否过期、账户是否锁定等信息。

2024-11-21 09:39:45 1579

原创 mysql事务

事务隔离级别定义了在并发环境中,一个事务对其他并发事务的可见性。它决定了事务在执行过程中,如何处理并发访问同一数据的其他事务。读未提交(READ UNCOMMITTED)读已提交(READ COMMITTED)可重复读(REPEATABLE READ)串行化(SERIALIZABLE)

2024-11-20 21:21:12 587

原创 mysql中的sql语句及优化

在优化之前,对原始查询进行基准测试,记录下查询的执行时间、资源使用情况(如CPU、内存、I/O)和返回结果的速度。- 监控数据库服务器的资源使用情况,如CPU使用率、内存使用量、磁盘I/O等,优化后的查询应该能够减少资源的消耗。- 使用`EXPLAIN`或`EXPLAIN ANALYZE`命令来查看查询的执行计划,并根据提示进行优化。- 减少SELECT子句中的列数,只选择需要的列,而不是使用`SELECT *`。- 优化后,持续监控查询性能,确保随着数据量的增长和查询模式的变化,性能不会退化。

2024-11-19 13:53:06 664

原创 mysql数据库的货币计算

在MySQL中,记录货币值时,推荐使用以下几种字段类型:1. **DECIMAL**:这是最常用的类型,用于存储精确的小数值。你可以指定精度(数字的总位数)和小数位数。例如,`DECIMAL(10,2)` 可以存储8位整数和2位小数,适合货币值的存储。例如,`100.00` 可以被存储在 `DECIMAL(5,2)` 类型的字段中。2. **NUMERIC**:与DECIMAL类似,也是用于存储精确的小数值。在MySQL中,DECIMAL和NUMERIC实际上是相同的,所以选择哪一个都可以。

2024-11-19 13:47:15 1114

原创 了解jsp

4. **请求处理阶段**:当有客户端请求该JSP页面时,JSP容器会创建一个该JSP对应的Servlet实例(如果还没有创建),并调用它的`_jspService()`方法来处理请求。JSP容器会缓存编译后的JSP字节码,只要JSP页面没有修改,就不需要重新翻译和编译,直接使用缓存的字节码来处理请求。- **Session**:通常与特定的会话和服务器关联,不涉及跨域问题,但如果需要在不同的服务器或域之间共享Session信息,可能需要使用额外的技术,如Session复制或集中式Session管理。

2024-11-15 15:18:08 412

空空如也

空空如也

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

TA关注的人

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