当前位置: 首页 > news >正文

Spring Boot 快速入手

前言:为什么选择 Spring Boot? 🚀

在现代 Java 开发中,Spring Boot 已成为最流行的后端框架之一。无论是小型 Web 应用、企业级系统,还是微服务架构,Spring Boot 都能提供快速开发、自动配置、轻量级部署的特性,让开发者无需关心繁琐的环境搭建和依赖管理。

🤔 为什么要学习 Spring Boot?

在 Spring 生态系统中,Spring Framework 提供了强大的开发能力,但其复杂的 XML 配置、依赖管理和 Bean 组件注册,让新手开发者望而却步。Spring Boot 诞生的目标,就是让 Spring 开发更简单、更高效

Spring Boot 具备以下核心优势:
零配置 —— 基于自动配置(Spring Boot Starter),无需手动配置繁琐的 XML 文件。
内置服务器 —— 自带 Tomcat、Jetty、Undertow,无需额外部署容器。
快速开发 —— 使用 Spring Initializr 快速生成项目,开箱即用。
微服务支持 —— 与 Spring Cloud 无缝集成,轻松构建分布式系统。
简化依赖管理 —— 通过 Maven / Gradle 直接引入 Spring Boot Starter 依赖,避免版本冲突。
强大的生态 —— 丰富的官方 Starter 组件(如 Spring Data JPA、Spring Security、Spring Mail),适配多种业务场景。

🎯 你将学到什么?

  • Spring Boot 基础(自动配置、RESTful API 开发)

  • 数据库整合(MySQL + JPA/MyBatis)

  • Spring Boot 进阶(AOP、定时任务、异步任务)

  • 安全与认证(Spring Security + JWT)

  • 项目实战(完整的用户管理系统)

Spring Boot 让 Java 开发更高效,现在就开启你的 Spring Boot 之旅吧! 🚀

 1. SpringBoot介绍

在学习SpringBoot之前,我们先来认识⼀下Spring

我们看下Spring官⽅

Spring | HomeLevel up your Java code and explore what Spring can do for you. https://spring.io/

可以看到,Spring让Java程序更加快速,简单和安全.Spring对于速度、简单性和⽣产⼒的关注使其成为 世界上最流⾏的Java框架。 

Spring官⽅提供了很多开源的项⽬,覆盖范围从Web开发到⼤数据,Spring发展到了今天,已经形成了⾃ ⼰的⽣态圈.我们在开发时,也倾向于使⽤Spring官⽅提供的技术,来解决对应的问题. 

这些项⽬都是基于SpringFramework来进⾏开发的,但是SpringFramework存在配置多,⼊⻔难的问 题,Spring也意识到了这个问题,为了简化开发者的使⽤,从⽽创造性的推出了SpringBoot.

📌 1. 什么是 Spring Boot?

Spring Boot 是基于 Spring 框架的快速开发框架,它提供了一种开箱即用(out-of-the-box)的方式,让开发者能够无需复杂配置,快速构建和部署 Java 应用。

Spring Boot 通过自动配置内置服务器简化依赖管理等特性,大大降低了 Spring 开发的复杂度,使开发者可以专注于业务逻辑,而不需要花费大量时间在环境搭建和配置上。


📌 2. Spring Boot vs Spring Framework vs Spring MVC(区别与联系)

对比项Spring FrameworkSpring MVCSpring Boot
核心作用提供完整的企业级 Java 解决方案基于 Spring 的 Web 框架让 Spring 开发更简单
配置方式需要大量 XML 配置需要手动配置 Controller 和 DispatcherServlet自动配置,开箱即用
依赖管理需要手动管理依赖依赖 Spring Framework通过 Starter 统一管理依赖
服务器需要手动配置 Tomcat 等依赖外部 Web 容器内置 Tomcat、Jetty,直接运行
适用场景复杂的企业级系统传统 Web 应用REST API、微服务、云原生

总结: Spring Boot 基于 Spring Framework 和 Spring MVC,它整合了 Spring 生态系统,并通过自动配置和内置依赖,极大地简化了 Spring 开发。


📌 3. Spring Boot 的核心优势

自动配置 —— 无需手动配置 Bean、数据源等,Spring Boot 会智能推断并配置默认值。

内置服务器 —— 自带 Tomcat、Jetty、Undertow,无需额外安装,直接运行 Spring Boot 应用。

简化依赖管理 —— 通过 Spring Boot Starter,统一管理 JPA、Security、Redis、Kafka 等常见依赖,避免版本冲突。

微服务友好 —— 与 Spring Cloud 无缝集成,轻松构建分布式架构。

强大生态支持 —— 兼容 Spring 全家桶,如 Spring Data JPA、Spring Security、Spring Cloud、Spring Batch 等。

开箱即用 & 快速开发 —— 通过 Spring Initializr 快速生成项目,极大提升开发效率。


💡 Spring Boot 让 Java 开发更高效、更简单,开启你的 Spring Boot 之旅吧!🚀

2 SpringBoot项⽬创建

2.1使⽤Idea创建 

因为我们⽤的Idea社区版(其他版本也同样适⽤),所以先要安装SpringBootHelper插件才能创建 SpringBoot项⽬. 

安装SpringBootHelp插件 使⽤专业版Idea的同学不需要安装插件,Idea已经集成了 

2.1.1. 查找插件并下载

 

点击Plugin homepage ,进⼊⽹⻚下载插件

 

此处不要直接点击 Install 直接点击Install,安装的是收费版(⼟豪请随意)

插件地址:Spring Boot Helper - IntelliJ IDEs Plugin | Marketplace

插件对Idea版本有要求, Idea版本需要在2021.1-2022.1.4范围内,不在这个范围内需要重新卸载安装 卸载要删除注册表的内容  

 2.1.2 安装插件 

按下图序号操作,逐步安装插件

选择刚才下载的插件,安装,重启Idea即可 

此时查看已安装插件 

安装好之后,它的名字就变成了SpringInitializrandAssistant,如下图所⽰∶  

2.1.3 创建SpringBoot项⽬:

File->New->Project

上图说明

① SpringBoot版本,选择任意3.X的,这个版本会随着SpringBoot的升级⽽发⽣变化,不固定 3.X版本使⽤的是jdk17,3.X以下使⽤的是JDK8 

②打勾表⽰创建项⽬之初,就引⼊的第三⽅依赖(框架,插件,组件等)

点击Create就完成SpringBoot的项⽬创建了。

注意事项 

第⼀次打开SpringBoot项⽬需要加载很久,因为当前SpringBoot框架并没有在⾃⼰的本地仓库. 为了加速SpringBoot项⽬的下载,在打开项⽬之前,请先确认⾃⼰的Maven已经配置为国内源

2.2 ⽹⻚版创建(了解)

不使⽤Idea也可以创建SpringBoot项⽬,我们可以使⽤Spring官⽅提供的⽹⻚版来创建Spring Boot项⽬。 ⽹⻚版创建项⽬先访问:https://start.spring.io/

Idea创建项⽬时,显⽰的界⾯,就是来⾃于这个⽹站,所以⽹络不好的情况下,这个界⾯也会打不开

点击⽣成按钮会下载⼀个SpringBoot的zip包,解压zip之后⽬录如下:

然后再使⽤Idea打开之后,SpringBoot项⽬就算创建成功了.

3.Spring创建完后java目录介绍

SpringBoot项⽬有两个主要的⽬录:

 

• src/main/java: Java源代码 

 

• src/main/resources:为静态资源或配置⽂件: 

 

       •/static:静态资源⽂件夹,⽐如前期学的js,css,html等静态⽂件,不需要服务器数据进⾏绑定的 ⻚⾯ 

 

      • /templates:模版资源⽂件夹,主要存放动态模板⽂件,⽐如JSP,Freemarker,Thymeleaf等需 要服务器动态渲染数据的⽂件

 

• src/test/java:测试代码源代码

 

• target:编译后的⽂件路径

 

• pom.xml:maven配置⽂件

4 运⾏项⽬

💡 说明: SpringApplication.run(...) 负责启动 Spring Boot 应用,并加载所有自动配置的组件。

Spring Boot 的核心特点之一是 自动配置,它可以根据项目中的依赖,智能推断并自动配置所需的 Spring 组件,避免手动配置繁琐的 XML 或 Java 代码。

📌 核心注解解析

  1. @SpringBootApplication(核心入口注解):相当于 @Configuration + @EnableAutoConfiguration + @ComponentScan 的组合。

  2. @EnableAutoConfiguration(开启自动配置):Spring Boot 根据项目依赖自动配置合适的 Bean。

  3. @ComponentScan(组件扫描):默认扫描 main 方法所在包及其子包的 @Component@Service@Controller 等组件。

5 开发第一个 Spring Boot Web 应用 🌐

在这一部分,我们将学习如何使用 Spring Boot 创建一个简单的 RESTful API,并实现 HTTP 请求处理、参数校验和异常处理。⽤Spring Boot来实现和浏览器及⽤⼾的交互。

在 Spring Boot 中,创建 RESTful API 非常简单,主要依赖两个注解:

  • @RestController:标记为 REST 控制器,返回 JSON 或 XML 数据(无需 @ResponseBody 注解)。

  • @GetMapping、@PostMapping、@PutMapping、@DeleteMapping`:用于处理 HTTP 请求,分别对应 GET、POST、PUT、DELETE 请求。

示例代码:

重新启动项⽬,访问127.0.0.1:8080/user最终效果如下:

 

6 Web服务器

浏览器和服务器两端进⾏数据交互,使⽤的就是HTTP协议

前⾯我们已经学习了HTTP协议,知道了HTTP协议就是HTTP客⼾端和HTTP服务器之间的交互数据 的格式. 

 

Web服务器就是对HTTP协议进⾏封装,程序员不需要直接对协议进⾏操作(⾃⼰写代码去解析http协议 规则),让Web开发更加便捷,所以Web服务器也被称为WWW服务器, HTTP服务器,

 

主要功能是提供⽹ 上信息浏览服务. 常⻅的Web服务器有:Apache,Nginx,IIS,Tomcat,Jboss等 SpringBoot内置了Tomcat服务器,⽆需配置即可直接运⾏

 Tocmat默认端⼝号是8080,所以我们程序访问时的端⼝号也是8080

7 请求响应流程分析

浏览器输⼊URL之后,发起请求,就和服务器之间建⽴了连接

 浏览器:

• 输⼊⽹址:127.0.0.1:8080/user

    ◦ 通过IP地址127.0.0.1定位到⽹络上的⼀台计算机,127.0.0.1就是本机 

    ◦ 通过端⼝号8080找到计算机上对应的进程,也就是在本地计算机中找到正在运⾏的8080端⼝的 程序 

    ◦ /user/sayhi是请求资源位置

▪ 资源:对计算机⽽⾔资源就是数据

        • web资源:通过⽹络可以访问到的资源(通常是指存放在服务器上的数据) 127.0.0.1:8080/user,就是向本地计算机中的8080端⼝程序,获取资源位置 是/user 的数据 8080端⼝程序,在服务器找/hello位置的资源数据,发给浏览器

服务器:

• 接收到浏览器发送的信息(如:/user/sayhi) 

• 在服务器上找到/user/sayhi的资源 

• 把资源发送给浏览器

 

🌐 HTTP 错误状态码大全及解释 🚀

在 Web 开发中,服务器返回的 HTTP 状态码用于表示请求的处理结果。4xx(客户端错误)和 5xx(服务器错误) 是访问出错的主要状态码类别。


🔹 1. 客户端错误(4xx)

客户端请求错误,通常是由于请求格式错误、权限问题或资源不存在导致的。

状态码名称解释
400Bad Request请求参数错误,服务器无法解析请求
401Unauthorized未授权,缺少认证信息(例如未登录)
402Payment Required需要付费(通常未使用)
403Forbidden服务器拒绝请求(权限不足)
404Not Found请求的资源不存在(URL错误或资源被删除)
405Method Not Allowed请求的方法(GET、POST等)不被服务器允许
406Not Acceptable服务器无法返回符合 Accept 头部的内容
407Proxy Authentication Required需要通过代理服务器认证
408Request Timeout请求超时,服务器等待请求时长超出限制
409Conflict请求冲突,例如多个用户同时修改同一资源
410Gone资源被永久删除,不再可用
411Length Required服务器要求请求必须指定 Content-Length
412Precondition Failed服务器未满足请求头中的条件
413Payload Too Large请求体(POST 数据)过大,服务器拒绝处理
414URI Too Long请求的 URL 过长,无法解析
415Unsupported Media Type服务器不支持请求的媒体格式
416Range Not Satisfiable请求的范围超出了资源的可用范围
417Expectation Failed服务器无法满足 Expect 头部的要求
418I'm a teapot🫖 彩蛋:源自 HTTP 协议的愚人节玩笑
421Misdirected Request请求被发送到错误的服务器
422Unprocessable Entity服务器理解请求,但语义有问题,无法处理
423Locked资源被锁定,无法访问
424Failed Dependency由于前一个请求失败,当前请求无法处理
425Too Early服务器拒绝处理过早的请求
426Upgrade Required服务器要求客户端升级协议
428Precondition Required服务器要求请求必须满足特定条件
429Too Many Requests请求过多(触发速率限制,防止 DDoS)
431Request Header Fields Too Large请求头字段过大,服务器拒绝处理
451Unavailable For Legal Reasons资源因法律原因不可用(例如审查内容)

🔹 2. 服务器错误(5xx)

服务器端错误,通常是服务器无法处理请求或发生内部错误。

状态码名称解释
500Internal Server Error服务器内部错误,无法处理请求
501Not Implemented服务器不支持请求的方法
502Bad Gateway服务器作为网关或代理,收到无效响应
503Service Unavailable服务器暂时不可用(过载或维护)
504Gateway Timeout服务器作为网关,未及时收到响应
505HTTP Version Not Supported服务器不支持 HTTP 请求版本
506Variant Also Negotiates服务器内部错误,导致内容协商失败
507Insufficient Storage服务器存储空间不足,无法处理请求
508Loop Detected服务器检测到死循环,无法继续处理
510Not Extended服务器需要更多信息才能处理请求
511Network Authentication Required需要进行网络认证(如 Wi-Fi 认证页面)

🔹 3. 处理 HTTP 错误状态码

Spring Boot 中,可以通过 @ControllerAdvice 统一处理异常,并返回对应的 HTTP 状态码。

✅ 示例:全局异常处理

@ControllerAdvice
public class GlobalExceptionHandler {

    // 处理 404 - 资源未找到
    @ExceptionHandler(ResourceNotFoundException.class)
    public ResponseEntity<ErrorResponse> handleNotFound(ResourceNotFoundException ex) {
        ErrorResponse error = new ErrorResponse(404, "Resource Not Found", ex.getMessage());
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(error);
    }

    // 处理 403 - 权限不足
    @ExceptionHandler(AccessDeniedException.class)
    public ResponseEntity<ErrorResponse> handleAccessDenied(AccessDeniedException ex) {
        ErrorResponse error = new ErrorResponse(403, "Forbidden", "You do not have permission to access this resource.");
        return ResponseEntity.status(HttpStatus.FORBIDDEN).body(error);
    }

    // 处理 500 - 服务器内部错误
    @ExceptionHandler(Exception.class)
    public ResponseEntity<ErrorResponse> handleInternalServerError(Exception ex) {
        ErrorResponse error = new ErrorResponse(500, "Internal Server Error", "An unexpected error occurred.");
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(error);
    }
}

 

✅ 错误响应 JSON

当访问不存在的资源时(返回 404):

{
    "code": 404,
    "message": "Resource Not Found",
    "details": "User with ID 100 not found"
}

 


🔹 4. 常见 HTTP 错误及解决方案

错误状态码常见原因解决方案
400(请求错误)参数格式错误确保请求参数符合 API 规范
401(未授权)需要登录或 Token 无效添加身份验证信息
403(禁止访问)权限不足检查权限配置(Spring Security)
404(未找到)资源不存在确保 URL 正确或返回默认值
405(方法不允许)发送了不支持的请求方法确保正确使用 GET/POST/PUT/DELETE
500(服务器错误)代码异常检查服务器日志,修复 bug
502(网关错误)代理服务器未正确响应检查上游服务状态
503(服务不可用)服务器过载或维护中等待恢复或增加服务器资源
504(网关超时)请求超时优化服务器性能,增加超时时间

 


✅ 总结

  • 4xx(客户端错误):请求有误(400、401、403、404等)。

  • 5xx(服务器错误):服务器处理失败(500、502、503等)。

  • Spring Boot 可用 @ExceptionHandler 统一处理错误,返回友好的 JSON 响应。

  • 了解常见错误原因和解决方案,有助于优化 Web 应用!🚀

🔚 结语:开启高效开发之旅 🚀

Spring Boot 让 Java 开发变得更加简单、高效,从自动配置内置服务器,极大降低了项目搭建和维护的成本。不论是Web 开发、微服务架构,还是企业级应用,Spring Boot 都能提供强大支持。

掌握 Spring Boot,意味着你能够更快速地构建、部署、优化你的应用。现在,就开启你的 Spring Boot 之旅,让开发变得更加轻松吧!

 

 

相关文章:

Spring Boot 快速入手

前言&#xff1a;为什么选择 Spring Boot&#xff1f; &#x1f680; 在现代 Java 开发中&#xff0c;Spring Boot 已成为最流行的后端框架之一。无论是小型 Web 应用、企业级系统&#xff0c;还是微服务架构&#xff0c;Spring Boot 都能提供快速开发、自动配置、轻量级部署的…...

Ubuntu Live USB 如何使用

以下是使用 Ubuntu Live USB 的详细指南&#xff0c;涵盖启动、试用系统、安装系统及常用工具操作&#xff1a; 1. 制作 Ubuntu Live USB • 所需工具&#xff1a; • Ubuntu ISO 镜像&#xff08;从 官网 下载&#xff09;。 • U盘&#xff08;至少 4GB&#xff0c;数据将被…...

基于单片机的音乐播放器系统设计

基于单片机的音乐播放器系统设计是一个综合性较强的电子系统开发项目 系统概述 基于单片机的音乐播放器旨在利用单片机的控制功能,结合音频处理电路、存储单元等,实现音乐的播放、暂停、切换、音量调节等功能,可应用于小型便携式音频设备、电子玩具、智能家居背景音乐系统等…...

HttpClient-01.介绍

一.介绍 通过HttpClient&#xff0c;我们可以在Java程序中构造并发送Http请求。要使用HttpClient&#xff0c;就要导入依赖坐标。 核心API&#xff1a; HttpClient&#xff1a;Http客户端&#xff0c;使用它可以发送http请求。 HttpClients&#xff1a;构建器&#xff0c;使…...

2025年win10使用dockerdesktop安装k8s

一、写作背景 百度了一圈&#xff0c; 要么教程老&#xff0c;很多操作步骤冗余&#xff0c; 要么跑不通&#xff0c;或者提供的链接失效等情况。 二、看前须知 1、安装过程使用的AI辅助&#xff0c; 因为参考的部分博客卡柱了。 2、如果操作过程中遇到卡顿&#xff0c; …...

技术回顾day2

1.获取文件列表 流程&#xff1a;前端根据查询条件封装查询信息&#xff0c;后端接收后进行封装&#xff0c;封装为FileInfoQuery,根据fileInfoQuery使用mybatis的动态sql来进行查询。 2.文件分片上传 每次上传需要上传包括(文件名字&#xff0c;文件&#xff0c;md5值&#…...

软件工程-UML

例图&#xff0c;类图&#xff0c;状态图&#xff0c;顺序图&#xff0c;活动图 目录 例图 类图 状态图 顺序图 活动图 例图 例图由四个元素组成&#xff0c;参与者、用例、系统边界、参与者和用例之间的关系 参与者用一个小人表示&#xff0c;用例用椭圆表示&#xff…...

赛逸展2025“创新引擎”启动:限量席位,点亮科技绿色新征程

当今时代&#xff0c;科技革新与绿色发展已然成为推动社会进步的双引擎。2025第七届亚洲消费电子技术贸易展&#xff08;赛逸展&#xff09;敏锐捕捉这一趋势&#xff0c;重磅打造“科技创新专区”&#xff0c;并面向科技、绿色企业吹响限量招募号角。 这个独具特色的专区紧扣…...

前后台系统

前后台系统&#xff08;Foreground/Background System&#xff09;是一种常见的嵌入式系统编程模型&#xff0c;尤其是在那些不需要复杂操作系统的简单系统中。这种系统架构通常用于实时性要求不是极端苛刻的环境&#xff0c;但在响应外部事件时仍需要一定的及时性。下面我将详…...

VHT AMPDU

A - MPDU 由一个或多个 A - MPDU 子帧以及可变数量的 EOF填充子帧组成。 在 VHT中,存在如下填充: 一个 A - MPDU 子帧的填充子字段中有 0 - 3 个字节。 EOF 填充字段中有零个或多个 EOF 填充子帧。 EOF 填充子帧中EOF填充字节中有 0 - 3 个字节。 A - MPDU 帧结束前填充(A -…...

Spring框架如何做EhCache缓存?

在Spring框架中&#xff0c;缓存是一种常见的优化手段&#xff0c;用于减少对数据库或其他资源的访问次数&#xff0c;从而提高应用性能。Spring提供了强大的缓存抽象&#xff0c;支持多种缓存实现&#xff08;如EhCache、Redis、Caffeine等&#xff09;&#xff0c;并可以通过…...

助力 Windows 文件管理:重命名与清理重复文件软件精选

软件介绍 在日常的电脑使用中&#xff0c;高效管理文件至关重要。接下来为大家介绍几款实用软件&#xff0c;能助您轻松搞定文件管理难题。 AdvancedRenamer&#xff1a;全能批量重命名利器 专为 Windows 系统打造的 AdvancedRenamer&#xff0c;功能堪称强大。无论是文本替…...

重建二叉树(C++)

目录 1 问题描述 1.1 示例1 1.2 示例2 1.3 示例3 2 解题思路 3 代码实现 4 代码解析 4.1 初始化 4.2 递归部分 4.3 主逻辑 5 总结 1 问题描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果&#xff0c;请重建出该二叉树并返回它的头结点。 例如输入前序遍历序…...

Go+Gin实现安全多文件上传:带MD5校验的完整解决方案

后端 package mainimport ("encoding/json""fmt""log""net/http""os""path/filepath""github.com/gin-contrib/cors""github.com/gin-gonic/gin" )// 前端传来的文件元数据 type FileMetaRe…...

SwanLab Slack通知插件:让AI训练状态同步更及时

在AI模型训练的过程中&#xff0c;开发者常常面临一个难题&#xff1a;如何及时跟踪训练状态&#xff1f;无论是实验超参数的调整、关键指标的变化&#xff0c;还是意外中断的告警&#xff0c;传统的监控方式往往依赖手动刷新日志或反复检查终端&#xff0c;这不仅效率低下&…...

JavaScript元素尺寸与位置

目录 client 家族与 offset 家族 一、client 家族&#xff1a;内容区域 内边距 示例代码 应用场景 二、offset 家族&#xff1a;内容区域 内边距 边框 滚动条 示例代码 应用场景 三、综合应用场景 1. 动态调整元素高度 2. 拖拽元素 3. 判断元素是否在视口内 四…...

IS-IS:单区域集成配置与多区域集成配置

一、IS-IS概述 IS-IS&#xff08;Intermediate System to Intermediate System&#xff09; 是一种链路状态内部网关协议&#xff08;IGP&#xff09;&#xff0c;设计用于自治系统&#xff08;AS&#xff09;内部的路由选择。最初由ISO为OSI模型的无连接网络服务&#xff08;…...

Cesium学习(未完继续)

添加底图 viewer.imageryLayers.addImageryProvider(imageryProvider)常见 ImageryProvider 实现类 ArcGisMapServerImageryProvider&#xff1a;用于从 ArcGIS Server 获取影像数据。 BingMapsImageryProvider&#xff1a;用于从 Bing Maps 获取影像数据。 OpenStreetMapIm…...

【学Rust写CAD】22 双圆径向渐变的结构体(two_circle_radial_gradient.rs)

源码 //two_circle_radial_gradient.rs //! 定义双圆径向渐变的结构体和相关功能/// 表示一个双圆径向渐变的源 /// /// 该结构体描述了两个圆之间的渐变&#xff0c;支持矩阵变换和颜色查找表优化 #[derive(Debug, Clone, PartialEq)] pub struct TwoCircleRadialGradientSou…...

基于SpringAOP面向切面编程的一些实践(日志记录、权限控制、统一异常处理)

前言 Spring框架中的AOP&#xff08;面向切面编程&#xff09; 通过上面的文章我们了解到了AOP面向切面编程的思想&#xff0c;接下来通过一些实践&#xff0c;去更加深入的了解我们所学到的知识。 简单回顾一下AOP的常见应用场景 日志记录&#xff1a;记录方法入参、返回值、执…...

acwing 5438. 密接牛追踪2

农夫约翰有 NN 头奶牛排成一排&#xff0c;从左到右依次编号为 1∼N。 不幸的是&#xff0c;有一种传染病正在蔓延。 最开始时&#xff0c;只有一部分奶牛受到感染。 每经过一个晚上&#xff0c;受感染的牛就会将病毒传染给它左右两侧的牛&#xff08;如果有的话&#xff09…...

【Linux】线程池

目录 线程池 日志 线程池 在程序中&#xff0c;会预先创建一批线程&#xff0c;在内部会有一个叫任务队列task_queue的东西&#xff0c;未来如果有任务要处理&#xff0c;就把任务push到任务队列里&#xff0c;然后自动有线程去任务队列里拿任务并处理&#xff0c;如果没有任…...

【11408】考研英语长难句解析策略:三步断开与简化法,快速提升阅读得分

2025.04.01 英语断开长难句分析主谓心得 简化长难句心得 英语 断开长难句 在一些长难句中&#xff0c;有时从句的连词会被省略&#xff0c;且没有标点将其隔开&#xff0c;此时就无法通过标点和连接词来断开长难句。那么我们只能够通过分析主谓来断开长难句。 分析主谓 谓语…...

Spring Cloud 2023.x安全升级:OAuth2.1与JWT动态轮换实战

引言&#xff1a;当安全遇上云原生&#xff0c;零停机密钥轮换成为刚需 在微服务架构中&#xff0c;OAuth2.1与JWT已成为身份验证的黄金标准&#xff0c;但传统方案存在两大痛点&#xff1a; 密钥轮换风险&#xff1a;手动替换JWT密钥需重启服务&#xff0c;导致短暂鉴权中断&…...

Vue3.5 企业级管理系统实战(十二):组件尺寸及多语言实现

1 组件尺寸切换 1.1 用 Pinia 进行 Size 的持久化存储 首先&#xff0c;在 src/plugins/element.ts 中增加 size 类型&#xff0c;代码如下&#xff1a; //src/plugins/element.ts import type { App } from "vue";import { ElMessage, ElNotification, ElMessageBo…...

15:00开始面试,15:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…...

Java学习路线 - 第三阶段笔记

Java学习路线 - 第三阶段笔记 Java高级特性&#xff08;2-3个月&#xff09; 1. 集合框架深入 1.1 List详解 ArrayList&#xff1a;基于动态数组实现&#xff0c;随机访问高效&#xff0c;插入删除效率低LinkedList&#xff1a;基于双向链表实现&#xff0c;插入删除高效&a…...

【无标题】Scala函数基础

函数和方法的区别 1&#xff09; 核心概念 &#xff08;1&#xff09; 为完成某一功能的程序语句的集合&#xff0c;称为函数。 &#xff08;2&#xff09; 类中的函数称之方法。 2&#xff09; 案例实操 &#xff08;1&#xff09; Scala 语言可以在任何的语法结构中声明…...

微信登录、商品浏览前瞻

一.业务效果 二.所需技术...

自动化工作流工具的综合对比与推荐

最近收到很多朋友私信我说&#xff1a;“刷短视频的时候&#xff0c;总是刷到自动化工作流的工具&#xff0c;有好多直播间都在宣传&#xff0c;不知道哪款工具好”。我花了点时间&#xff0c;做了一下测试&#xff0c;大家可以参考一下&#xff0c;以下内容&#xff1a; 以下…...

可实现黑屏与蓝屏反应的屏幕隐私保护软件分享

软件介绍 在信息安全备受关注的当下&#xff0c;一款能够有效保护屏幕隐私的软件 —— 防窥助手&#xff0c;悄然问世。它由吾爱的 遗憾迟香精心开发&#xff0c;为用户的屏幕隐私防护带来全新体验。 独特原理&#xff0c;精准守护 防窥助手的运行原理相当巧妙&#xff0c;它…...

PERL开发环境搭建>>Windows,Linux,Mac OS

特点 简单 快速 perl解释器直接对源代码程序解释执行,是一个解释性的语言, 不需要编译器和链接器来运行代码>>速度快 灵活 借鉴了C/C, Basic, Pascal, awk, sed等多种语言, 定位于实用性语言,既具备了脚本语言的所有功能,也添加了高级语言功能 开源.免费 没有&qu…...

【实战】渗透测试下的传输命令

目录 bitsadmin certutil curl ftp js nc perl php py scp vbs wget WindowsDefender bitsadmin 不支持https、ftp协议&#xff0c;php python带的服务器会出错 >bitsadmin /transfer n http://192.168.1.192/Client.exe e:\1.exe >bitsadmin /rawreturn /…...

JSON 基础知识(一)

第一部分&#xff1a;JSON 基础知识 &#x1f4e2; 快速掌握 JSON&#xff01;文章 视频双管齐下 &#x1f680; 如果你觉得阅读文章太慢&#xff0c;或者更喜欢 边看边学 的方式&#xff0c;不妨直接观看我录制的 JSON 课程视频&#xff01;&#x1f3ac; 视频里会用更直观…...

nodejs:midi-writer-js 将基金净值数据转换为 midi 文件

开放式基金是没有公布每日交易量的。 /funds/data/660008.csv 文件开头&#xff1a; date,jz,ljjz 2016-01-04,1.1141,1.1141 2016-01-05,1.1161,1.1161 2016-01-06,1.1350,1.1350 这是一个将开放式基金数据转换为 MIDI音乐的 js 程序示例。该程序将基金净值映射为 MIDI音符的…...

从零实现Json-Rpc框架】- 项目实现 - 服务端registrydiscovery实现

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

自适应二值化与形态学变换在图像颜色识别与替换中的应用解析

目录 前言一、自适应二值化1.1 取均值 ADAPTIVE_THRESH_MEAN_C1.2 高斯加权求和 ADAPTIVE_THRESH_GAUSSIAN_C1.2.1 一维高斯分布1.2.2 二维高速分布1.2.3 二维高斯分布权重计算规则 1.2.3.1 用户设置了σ1.2.3.2 用户没有设置σ1.3 代码二、形态学变换2.1 核 2.2 腐蚀2.3 膨胀…...

JsonCpp 处理 JSON(现代 C++ 方案)(三)

第三部分:JsonCpp 处理 JSON(现代 C++ 方案) 📢 快速掌握 JSON!文章 + 视频双管齐下 🚀 如果你觉得阅读文章太慢,或者更喜欢 边看边学 的方式,不妨直接观看我录制的 JsonCpp 课程视频!🎬 视频里会用更直观的方式讲解 JsonCpp 的核心概念、实战技巧,并配有动手演…...

flutter 曲线学习 使用第三方插件实现左右滑动

flutter 曲线的使用 实现左右滑动 TemperatureChartPage() TemperatureChartPage2() – 不太完善 方法 ChartDrawPage import package:doluyo/dly_package/widget/dly_widget.dart; import package:fl_chart/fl_chart.dart; import package:flutter/material.dart; impor…...

【WRF工具】GIS4WRF详细介绍:配置 WPS/WRF

【WRF工具】GIS4WRF详细介绍 QGIS-GIS4WRF安装&#xff08;Installation&#xff09;安装 QGIS安装 GIS4WRF GIS4WRF 配置(Configuration)一、如何进入配置界面二、可配置内容1️⃣ 设置工作目录2️⃣ 与 WPS/WRF 集成3️⃣ 与 NCAR 数据档案集成 参考 GIS4WRF 是一个在 QGIS 中…...

【自用记录】本地关联GitHub以及遇到的问题

最近终于又想起GitHub&#xff0c;想上传代码和项目到仓库里。 由于很早之前有在本地连接过GitHub&#xff08;但没怎么用&#xff09;&#xff0c;现在需要重新搞起&#xff08;操作忘得差不多&#xff09;。 在看教程实操的过程中遇到了一些小问题&#xff0c;遂记录一下。 前…...

小程序中跨页面组件共享数据的实现方法与对比

小程序中跨页面/组件共享数据的实现方法与对比 在小程序开发中&#xff0c;实现不同页面或组件之间的数据共享是常见需求。以下是几种主要实现方式的详细总结与对比分析&#xff1a; 一、常用数据共享方法 全局变量&#xff08;getApp()&#xff09;、本地缓存&#xff08;w…...

ngx_http_core_merge_srv_conf

定义在 src\http\ngx_http_core_module.c static char * ngx_http_core_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) {ngx_http_core_srv_conf_t *prev parent;ngx_http_core_srv_conf_t *conf child;ngx_str_t name;ngx_http_server_name_t…...

如何在中科方德llinux系统上离线安装salt-minion

1&#xff0c;我的系统是什么 国产操作系统 中科方德 NFSChina Server release 4.0.240701 (RTM4-G320) 2&#xff0c;首先准备好两个安装包 salt-minion-2015.8.8-2.el7.noarch.rpm和salt-2015.8.8-2.el7.noarch.rpm 后者这个是前者的依赖项。 所以先安装salt-2015.8.8-2.e…...

RAG系统实战:当检索为空时,如何实现生成模块的优雅降级(Fallback)?

目录 RAG系统实战&#xff1a;当检索为空时&#xff0c;如何实现生成模块的优雅降级&#xff08;Fallback&#xff09;&#xff1f; 一、为什么需要优雅降级&#xff08;Fallback&#xff09;&#xff1f; 二、常用的优雅降级策略 策略一&#xff1a;预设后备提示&#xff0…...

输电线路航空标志球:低空飞行的安全路标 / 恒峰智慧科技

在现代社会&#xff0c;随着航空业的快速发展&#xff0c;低空飞行活动日益频繁。为了确保飞行安全&#xff0c;避免飞机与高压电线等障碍物发生碰撞&#xff0c;输电线路航空标志球应运而生。这种装置被广泛应用于高压输电线路上&#xff0c;尤其是超高压和跨江输电线&#xf…...

【SPP】蓝牙 SDP 协议在SPP中的互操作性解析

在蓝牙通信体系中&#xff0c;服务发现协议&#xff08;SDP, Service Discovery Protocol&#xff09;扮演着 "服务目录" 的核心角色。对于串口通信协议&#xff08;SPP, Serial Port Profile&#xff09;而言&#xff0c;SDP 服务记录是设备间建立串口连接的基础&am…...

本地部署vanna ai+通过http请求调用vanna

本地部署vanna ai ① 准备python环境&#xff0c;推荐最新的python12、13版本 ② 安装vanna库 我这里安装的python环境是python312 进入目录python312/Scripts&#xff0c;在该目录下的命令行窗口中输入以下命令&#xff1a;pip jinstall vanna pip install vanna③ 配置向…...

seq2seq

理解 transformer 中的 encoder decoder 详细的 transformer 教程见&#xff1a;【极速版 – 大模型入门到进阶】Transformer 文章目录 &#x1f30a; Encoder: 给一排向量输出另外一排向量&#x1f30a; Encoder vs. Decoder: multi-head attention vs. masked multi-head at…...

C++ ---- 虚继承

一、什么是虚继承 虚继承就是子类中只有一份间接父类的数据。用于解决多继承中的父类为非虚继承时出现的二义性问题&#xff0c;即菱形继承问题。继承方式需要加上virtual关键字。 二、虚继承的特性 以菱形继承为例&#xff1a; 1.不使用虚继承 根据输出的大小和关系图&…...