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

SpringBoot入门指南:让Java开发变得像搭积木一样简单 - 教程

SpringBoot入门指南:让Java开发变得像搭积木一样简单

什么是Spring Boot?

想象一下,你要做一顿丰盛的大餐(开发一个Java Web应用):

Spring Boot是Spring家族的核心成员,基于"约定优于配置"(Convention Over Configuration)的设计理念,彻底简化了基于Spring框架的应用开发流程。只需几行核心代码,就能快速构建一个可独立运行、具备生产级质量的Java应用程序。

为什么需要Spring Boot?(传统开发VS Boot开发对比)

为了更直观展示Spring Boot的优势,我们通过对比表格和逻辑图,清晰呈现其带来的变革:

1. 开发体验对比表

对比维度传统Spring开发Spring Boot开发
配置方式大量XML配置文件(需手动编写)零XML配置(自动配置+少量属性文件)
依赖管理手动引入各组件,需解决版本冲突起步依赖(starter)自动管理依赖及版本
项目启动需部署到外部服务器(Tomcat/Jetty)内置服务器,直接运行JAR包
生产就绪特性需手动集成监控、日志等组件内置Actuator监控、统一日志等
开发效率配置占比高,业务开发周期长专注业务逻辑,开发效率提升50%+

2. 核心价值逻辑图

graph TD
A[传统Spring开发痛点] --> A1[XML配置繁琐]
A --> A2[依赖版本冲突]
A --> A3[部署流程复杂]
A --> A4[生产特性缺失]
B[Spring Boot解决方案] --> B1[自动配置替代XML]
B --> B2[起步依赖管版本]
B --> B3[内置服务器简化部署]
B --> B4[Actuator提供监控]
A1 --> B1
A2 --> B2
A3 --> B3
A4 --> B4
B --> C[最终价值:开发效率提升+运维成本降低]

开始你的第一个Spring Boot项目

环境要求(前置准备)

创建项目:三种简单方式(附操作流程图)

方式1:使用Spring Initializr(官网可视化创建,最简单)

这是官方推荐的创建方式,无需安装任何工具,浏览器操作即可:

  1. 访问官方创建地址:start.spring.io
  2. 按如下配置填写表单:
    • Project:选择「Maven Project」(初学者友好)
    • Language:选择「Java」
    • Spring Boot:选择「最新稳定版」(如3.2.x,避免使用快照版)
    • Group:填写包名(如com.example
    • Artifact:填写项目名(如springboot-demo
    • Dependencies:搜索并添加「Spring Web」(核心依赖)
  3. 点击「Generate」按钮,下载项目压缩包
  4. 解压压缩包,用IDEA打开项目

操作流程图

方式2:使用IDEA直接创建(集成式创建)

如果你已安装IntelliJ IDEA,可直接在IDE内完成创建:

  1. 打开IDEA → 点击「File」→「New」→「Project」
  2. 在左侧列表选择「Spring Initializr」,右侧选择默认的「Default」
  3. 后续步骤与方式1一致(填写项目信息、添加依赖)
  4. 点击「Finish」,IDEA自动下载依赖并构建项目
方式3:手动创建(了解原理,不推荐初学者)

手动创建需自己编写pom.xml配置依赖,适合想深入理解项目结构的开发者:

<!-- pom.xml 核心配置 --><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion><!-- 父依赖:Spring Boot核心依赖管理 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.5</version> <!-- 最新稳定版 --><relativePath/></parent><groupId>com.example</groupId><artifactId>springboot-demo</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><!-- Web开发起步依赖:自动引入Tomcat、Spring MVC等 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><!-- 打包插件:将项目打包为可执行JAR包 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

编写第一个接口(附代码说明)

创建完成后,项目默认生成主启动类SpringbootDemoApplication.java,我们在此基础上添加一个简单的接口:

package com.example.springbootdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
// 主启动类注解:包含@ComponentScan(扫描组件)、@EnableAutoConfiguration(自动配置)等
@SpringBootApplication
public class SpringbootDemoApplication
{
// 程序入口:启动Spring Boot应用
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args)
;
}
}
// 控制器注解:标识此类为REST接口控制器(返回JSON/字符串,而非页面)
@RestController
class HelloController
{
// GET请求映射:访问路径为/hello时触发此方法
@GetMapping("/hello")
public String sayHello() {
// 返回字符串给前端
return "Hello, Spring Boot! ";
}
// 根路径接口:访问http://localhost:8080时触发
@GetMapping("/")
public String home() {
return "欢迎来到Spring Boot世界!这是你的第一个项目~";
}
}

运行与测试应用(两种运行方式)

方式1:IDE内运行
  1. 在IDEA中找到SpringbootDemoApplication.java
  2. 点击类左侧的「运行按钮」(绿色三角形),或右键选择「Run ‘SpringbootDemoApplication’」
  3. 观察控制台输出,出现如下日志表示启动成功:
    Tomcat started on port(s): 8080 (http) with context path ''
    Started SpringbootDemoApplication in 2.3 seconds (process running for 2.8)
方式2:命令行运行
  1. 打开终端,进入项目根目录(包含pom.xml的目录)
  2. 执行Maven命令启动项目:
    mvn spring-boot:run
  3. 启动成功后,打开浏览器访问以下地址:
    • 根路径:http://localhost:8080 → 显示「欢迎来到Spring Boot世界!」
    • Hello接口:http://localhost:8080/hello → 显示「Hello, Spring Boot! 」

Spring Boot核心概念(附原理图解)

掌握以下4个核心概念,就能理解Spring Boot的工作原理:

1. 起步依赖(Starter Dependencies)

定义:Spring Boot提供的"依赖套餐",只需引入一个starter,就能自动引入该场景下所需的所有依赖。

核心原理:通过Maven的依赖传递特性,将某一场景(如Web开发、数据库操作)的相关依赖打包成一个starter,避免手动引入多个依赖的麻烦。

常用起步依赖表

Starter名称作用场景核心依赖组件
spring-boot-starter-webWeb应用开发(REST接口、MVC)Tomcat、Spring MVC、Jackson
spring-boot-starter-data-jpa数据库操作(ORM框架)Hibernate JPA、Spring Data
spring-boot-starter-test单元测试、集成测试JUnit、Mockito、AssertJ
spring-boot-starter-security用户认证、权限控制Spring Security、OAuth2
spring-boot-starter-redisRedis缓存操作Spring Data Redis、Jedis

原理图解

2. 自动配置(Auto-configuration)

定义:Spring Boot根据项目中的依赖和配置,自动为应用程序配置Bean(如数据源、服务器、视图解析器等),无需手动编写XML配置。

核心原理

  1. Spring Boot启动时,会扫描META-INF/spring.factories文件,加载所有自动配置类(如WebMvcAutoConfigurationDataSourceAutoConfiguration
  2. 自动配置类通过@Conditional系列注解判断是否满足配置条件(如是否引入了某依赖、是否存在某类)
  3. 满足条件时,自动配置类会创建对应的Bean,并注入到Spring容器中

示例:当引入spring-boot-starter-web后,WebMvcAutoConfiguration会自动配置:

  • 视图解析器(ViewResolver)
  • 静态资源处理器(处理CSS/JS/图片)
  • 消息转换器(JSON格式转换)

原理图解

flowchart TD
A[Spring Boot启动] --> B[加载spring.factories中的自动配置类]
B --> C[检查自动配置类的@Conditional条件]
C -->|条件满足(如引入Web依赖)| D[创建对应Bean(如ViewResolver)]
C -->|条件不满足| E[跳过该自动配置类]
D --> F[将Bean注入Spring容器]
F --> G[应用可直接使用该Bean,无需手动配置]

3. 外部化配置(Externalized Configuration)

定义:将应用的配置参数(如端口号、数据库地址、密钥)抽离到外部文件,避免硬编码,方便不同环境(开发、测试、生产)切换配置。

常用配置文件格式

  • application.properties:键值对格式(传统格式,适合简单配置)
  • application.yml:缩进格式(结构化强,适合复杂配置,推荐使用)

配置示例

# application.yml(推荐)
server:
port: 9090 # 更改服务器端口为9090
servlet:
context-path: /demo # 设置项目上下文路径,访问地址变为http://localhost:9090/demo
spring:
application:
name: my-first-springboot-app # 应用名称
datasource: # 数据库配置(后续连接数据库时使用)
url: jdbc:mysql://localhost:3306/testdb
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver

配置优先级(从高到低):

  1. 命令行参数(如java -jar app.jar --server.port=8888
  2. application.yml(项目内)
  3. application.properties(项目内)
  4. 外部配置文件(如/config/application.yml

4. 监控与管理(Actuator)

定义:Spring Boot提供的生产级监控工具,通过暴露HTTP端点,实时查看应用的健康状态、 metrics指标、环境配置等信息。

使用步骤

  1. 引入Actuator依赖:
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  2. 在配置文件中暴露监控端点:
    management:
    endpoints:
    web:
    exposure:
    include: "*" # 暴露所有Web端点(生产环境建议只暴露必要端点)
    endpoint:
    health:
    show-details: always # 显示健康状态详情
  3. 访问监控端点(以默认端口8080为例):
    • 健康状态:http://localhost:8080/actuator/health → 显示数据库、Redis等组件的健康状态
    • 环境配置:http://localhost:8080/actuator/env → 查看所有配置参数
    • 指标监控:http://localhost:8080/actuator/metrics → 查看JVM内存、请求量等指标

Spring Boot项目结构规范(附目录树)

遵循以下规范,能让项目结构更清晰,便于团队协作:

src/
├── main/
│   ├── java/  # 源代码目录
│   │   └── com/
│   │       └── example/
│   │           └── springbootdemo/  # 项目根包
│   │               ├── SpringbootDemoApplication.java  # 主启动类(必须在根包下)
│   │               ├── controller/  # 控制器层(处理HTTP请求)
│   │               │   └── HelloController.java  # 示例控制器
│   │               ├── service/  # 服务层(业务逻辑处理)
│   │               │   ├── UserService.java  # 服务接口
│   │               │   └── impl/  # 服务实现类
│   │               │       └── UserServiceImpl.java
│   │               ├── repository/  # 数据访问层(操作数据库)
│   │               │   └── UserRepository.java
│   │               ├── entity/  # 实体类(对应数据库表)
│   │               │   └── User.java
│   │               └── config/  # 配置类(手动配置Bean)
│   │                   └── WebConfig.java
│   └── resources/  # 资源文件目录
│       ├── static/  # 静态资源(CSS、JS、图片)
│       │   ├── css/
│       │   ├── js/
│       │   └── img/
│       ├── templates/  # 模板文件(如Thymeleaf、Freemarker)
│       └── application.yml  # 主配置文件
└── test/  # 测试代码目录(与main/java结构一致)
└── java/
└── com/
└── example/
└── springbootdemo/
└── controller/
└── HelloControllerTest.java

目录规范说明

  • 主启动类必须放在根包下(如com.example.springbootdemo),否则Spring无法扫描到子包中的组件
  • controller:只负责接收请求、返回响应,不处理复杂业务逻辑
  • service:处理核心业务逻辑,是controller和repository之间的桥梁
  • repository:只负责数据库操作,不包含业务逻辑
  • entity:与数据库表一一对应,使用JPA注解标识表结构

常见问题解决(附解决方案)

1. 端口被占用(最常见问题)

现象:启动时控制台报错Address already in use: bind,提示8080端口被其他程序占用。

解决方案

  1. 修改端口号(推荐):在application.ymlapplication.properties中配置新端口:
    # application.yml
    server:
    port: 8081 # 改为8081、8090等未被占用的端口
  2. 终止占用端口的进程(Windows系统):
    # 1. 查找占用8080端口的进程ID
    netstat -ano | findstr "8080"
    # 2. 根据进程ID终止进程(假设进程ID为1234)
    taskkill /pid 1234 /f
  3. 终止占用端口的进程(Mac/Linux系统):
    # 1. 查找占用8080端口的进程ID
    lsof -i :8080
    # 2. 根据进程ID终止进程(假设进程ID为1234)
    kill -9 1234

2. 静态资源无法访问

现象:将CSS/JS/图片放在static目录后,访问http://localhost:8080/css/style.css提示404错误。

解决方案

  1. 确认资源目录位置:静态资源必须放在src/main/resources/static/目录下(大小写敏感,不可自定义为StaticstaticFiles)。
  2. 检查资源访问路径:若配置了context-path(项目上下文路径),访问路径需包含上下文路径。例如配置context-path: /demo时,访问路径应为:
    http://localhost:8080/demo/css/style.css
  3. 排除配置冲突:若自定义了WebMvcConfigurer,需确保未覆盖默认的静态资源映射,或手动添加映射:
    @Configuration
    public class WebConfig
    implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    // 手动指定静态资源映射(若默认映射被覆盖时使用)
    registry.addResourceHandler("/static/**")
    .addResourceLocations("classpath:/static/");
    }
    }

3. 热部署不生效(修改代码后需重启)

现象:修改Java代码或配置文件后,应用未自动刷新,需手动重启才能生效。

解决方案

  1. 添加devtools依赖(核心步骤):在pom.xml中引入热部署依赖:
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional> <!-- 防止依赖传递 -->
    </dependency>
  2. 配置IDE自动编译(以IntelliJ IDEA为例):
    • 打开设置:File → Settings → Build, Execution, Deployment → Compiler
    • 勾选Build project automatically(自动编译项目)
    • Ctrl + Shift + Alt + /,选择Registry,勾选compiler.automake.allow.when.app.running(允许应用运行时自动编译)
  3. 触发热部署:修改代码后,按Ctrl + F9(或点击IDE工具栏的「Build Project」按钮),应用会自动重启(重启速度比冷启动快80%+)。

4. 数据库连接失败

现象:集成MySQL等数据库时,控制台报错Could not create connection to database server

解决方案

  1. 检查数据库配置:确认application.yml中的数据库地址、用户名、密码正确:
    spring:
    datasource:
    url: jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC
    username: root # 你的数据库用户名
    password: 123456 # 你的数据库密码
    driver-class-name: com.mysql.cj.jdbc.Driver # MySQL 8.0+需用此驱动
  2. 确认数据库服务已启动
    • Windows:在「服务」中启动MySQL服务
    • Mac/Linux:执行systemctl start mysql(或brew services start mysql
  3. 检查数据库权限:确保数据库用户有访问目标数据库的权限(如root用户默认有所有权限,若使用自定义用户需授权):
    -- 给testuser用户授权访问testdb数据库
    GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
  4. 处理MySQL版本兼容问题
    • MySQL 8.0+:需使用com.mysql.cj.jdbc.Driver驱动,且URL需添加serverTimezone=UTC参数
    • MySQL 5.x:使用com.mysql.jdbc.Driver驱动,URL无需添加时区参数

下一步学习建议(附学习路径图)

掌握基础后,可按以下路径逐步深入Spring Boot生态,从「会用」到「精通」:

1. 基础进阶:数据操作与接口开发

2. 中级进阶:功能增强与性能优化

  • 学习内容
    1. 集成Redis缓存,减少数据库访问压力(使用spring-boot-starter-redis
    2. 学习Spring Security,实现用户登录、权限控制(如角色区分:普通用户/管理员)
    3. 掌握全局异常处理(@RestControllerAdvice)、请求参数校验(@Valid
    4. 使用Swagger/OpenAPI自动生成接口文档(springdoc-openapi-starter-webmvc-ui
  • 实践项目:在「用户管理系统」基础上,添加登录认证、权限控制、缓存优化

3. 高级进阶:分布式与微服务

  • 学习内容
    1. 学习Spring Cloud(微服务生态),掌握服务注册与发现(Eureka/Nacos)、负载均衡(Ribbon/OpenFeign)
    2. 集成消息队列(RabbitMQ/Kafka),实现异步通信、解耦业务流程
    3. 学习分布式事务(Seata)、分布式锁(Redis/ZooKeeper)
    4. 掌握应用监控与链路追踪(Prometheus + Grafana、SkyWalking)
  • 实践项目:将「用户管理系统」拆分为微服务(用户服务、订单服务、支付服务),实现跨服务调用

学习路径图

Spring Boot基础
数据操作
RESTful API开发
Spring Data JPA
MyBatis
分页/排序/条件查询
中级进阶
Redis缓存
Spring Security认证
全局异常处理/参数校验
高级进阶
Spring Cloud微服务
消息队列
分布式事务/锁
企业级应用开发

总结

Spring Boot的核心价值在于「简化」——简化配置、简化依赖管理、简化部署流程,让开发者能从繁琐的框架配置中解放出来,专注于业务逻辑的实现。

对于初学者:

记住:最好的学习方式是「边学边练」。当你能独立开发一个包含数据库操作、用户认证、接口文档的项目时,就已经掌握了Spring Boot的核心能力。后续再结合实际业务需求,逐步学习微服务、分布式等高级内容,就能成长为一名合格的Java开发工程师。


延伸阅读与资源

希望这篇指南能帮助你顺利开启Spring Boot之旅!如果在学习过程中遇到问题,欢迎在评论区交流讨论,一起进步~

相关文章:

SpringBoot入门指南:让Java开发变得像搭积木一样简单 - 教程

SpringBoot入门指南:让Java开发变得像搭积木一样简单 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New"…...

汇编语言[王爽]-13 int指令【中断实现loop、jmp】

int指令 格式:int n :n是中断向量码,引发一个中断 作用:等价于下面的代码【中断流程】 1. 取中断向量码N 2. pushf 3. IF=0,TF=0 4. push CS , push IP 5. (IP)=(N*4) ; (CS)=(N*4+2)iret指令 格式: iret 从中断例程中返回 作用:等价于下面的代码 pop IP pop CS popf💡…...

Supabase云同步架构:Flutter应用的数据同步策略

Supabase云同步架构:Flutter应用的数据同步策略本文基于BeeCount(蜜蜂记账)项目的实际开发经验,深入探讨如何使用Supabase构建安全、高效的云端数据同步系统。项目背景 BeeCount(蜜蜂记账)是一款开源、简洁、无广告的个人记账应用。所有财务数据完全由用户掌控,支持本地存储…...

汇编语言[王爽]-12 内中断

内中断的产生 来源及中断码除法错误:0 单步执行:1 执行into指令:4 执行int n指令:n中断向量表中断过程 CPU收到中断信息后,根据中断向量表,跳转到相应的中断程序中处理中断,这一过程称为中断过程从中断信息中取得中断向量码N 标志寄存器入栈(因为中断过程中要改变标志寄…...

【SPIE出版】第五届先进制造技术与电子信息国际学术会议(AMTEI 2025)

第五届先进制造技术与电子信息国际学术会议(AMTEI 2025)将于2025年09月26-28日在重庆召开。【先进制造、机械工程、电子信息方向均可投稿】 【SPIE见刊发表,EI Compendex和Scopus检索收录 | 发表&检索十分稳定!】 第五届先进制造技术与电子信息国际学术会议(AMTEI 202…...

2025.9.15 考试总结

总结来说就是 3h 写 t1 没时间想 t2,t3 了,其实 t3 还是很一眼的。 T1 一个斜优板子。 每次如果 \(l_i = 1, r_i = i - 1\),是很容易用李超树做到 \(O(n \log n)\)。 既然每次查一个区间,那么就在外面套一个线段树。 std 的做法是用线段树维护凸包,我的树套树被卡常了。 李…...

汇编语言[王爽]-01 基础知识

汇编语言的组成汇编指令:机器码的助记符,有相应的机器码 伪指令:没有对应的机器码,由编译器执行,计算机不执行 其他符号:如+ - * / 由编译器识别,没有对应的机器码汇编指令是汇编语言的核心 指令与数据是应用上的概念,在x86架构中,指令和数据存放在内存或磁盘中没有任…...

贪心外套计数

[AGC049E] Increment Decrement一个序列 \(A\) 有一个权值:序列 \(a\) 元素都等于 \(0\),能进行若干次操作单点加 \(1\) 或 \(-1\),花费为 \(1\)。 区间加 \(1\) 或 \(-1\),花费为 \(C\)。\(a\) 变成 \(A\) 的最小花费,即为 \(A\) 的权值。 给 \(n\) 个长 \(k\) 的序列 \(…...

汇编语言[王爽]-02 寄存器

14个寄存器,都是16位 AX BX CX DX SI DI SP BP IP CS SS DS ES PSW 通用寄存器:AX BX CX DX 段寄存器:CS DS SS ES cpu分段寻址 8086是16位机,寄存器,运算器,寄存器与运算器的通路都是16位的,那么又是如何达到20位的地址总线宽度的呢。答案是使用分段寻址 物理地址= 段地…...

汇编语言[王爽]-03 寄存器(内存访问)

内存视图内存由低至高从上往下画 栈的生长方向:高地址向低地址 小端存储:高位存放在高地址,低位存放在低地址书写的时候高位在左边。 4E20H 存储单元高地址在右边。 0 - 3 : 20 4E 12 00mov指令 mov ax,1000h mov ds,ax mov [0],bx #传送字型数据内存单元以ds为段基址 不能…...

汇编语言[王爽]-05 [BX]和loop指令

loop指令实现循环 执行过程: ①(cx)=(cx)-1 ②判断 cx 中的值,不为零则转至标号处执行程序,如果为零则向下执行。 例:计算2^12 assume cs:codesegcodeseg segmentmov ax,2#-------做11次add ax,ax----------mov cx,11 s:add ax,axloop s#--------------------------------m…...

完整教程:YOLO数据集格式转换工具v1.0-微智启软件工作室

完整教程:YOLO数据集格式转换工具v1.0-微智启软件工作室pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", mo…...

2.docker 安装

系统环境 wind(wsl ) Ubuntu 安装Docker...

树形DP2F

T1 树的直径 我们使用\(f[u]\)表示以\(u\)为根的子树,向下延伸的最远距离 那么\(f[u]\)的初始值为0,表示\(u\)能向下延伸的最远距离是自己,\(f[u]=0\) \(ans=max(ans,f[u]+f[v]+w)ans\)表示直径 错误1 如果有负边权,所以我把\(f[u]\)的初值设置成为一个极小值,这样的话,和…...

搞定SPI开发:硬件设计精讲与CH390H示例应用

想要轻松搞定SPI开发?聚焦硬件设计关键要点,结合CH390H芯片示例,带你从理论到实践,全面掌握SPI开发技术。 本文以Air780EPM为例,分享SPI接口的开发注意事项及硬件设计要点。 一、Air780EPM的SPI功能支持 在Air780EPM中,SPI接口通过特定GPIO引脚实现,需结合LuatOS的API进…...

Qt-摄像头捕获画面

Qt-摄像头捕获画面在qt中捕获摄像头画面,在ui界面上添加一个comboBox控件、label标签和两个pushButton按钮,comboBox用于显示摄像头的设备,按钮用于开启摄像头和捕获当前帧的画面,label用于显示摄像头捕获的画面。//需要在.pro文件中加上multimedia multimediawidgets QT …...

我开发的软件和开源/免费软件

一、我开发的软件 1.软件目录 2.下载地址 通过网盘分享的文件: 链接:https://pan.baidu.com/s/1PiK9OhZs_mSjd5PcXRig4Q?pwd=dyzj 提取码:dyzj 复制这段内容后打开百度网盘手机App,操作更方便哦二、开源/免费软件Everything.zip(电脑文件搜索软件) ScreenToGif录屏工具 O…...

PostgreSQL中级认证,PG证书官网查询

Oracle数据库的认证行业皆知,它分为OCA、OCP和OCM三种代表着初中高三个级别,证书可以在Oracle官网查询;PostgreSQL数据库的认证也是类似,分为PGCA、PGCP和PGCM三种,如果是工信部人才交流中心的PG认证,可以在工信人才官网查询,查询网址:www.miitec.cn 一、工信部人才交流…...

LLaMA-Adapter - 详解

LLaMA-Adapter - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14…...

查看安装软件版本的命令

java -version allure --version pip3 --verison...

ubuntu 20.04安装mysql 5.7

环境Os:ubuntu 20.04 desktop桌面版mysql:mysql-5.7.42-linux-glibc2.12查看操作系统信息root@db:/soft# ldd --version ldd (Ubuntu GLIBC 2.31-0ubuntu9) 2.31 Copyright (C) 2020 Free Software Foundation, Inc. This is free software; see the source for copying condit…...

企业微信逆向开发协议,ipad协议调用方式

企业微信逆向开发协议,ipad协议调用方式企业微信ipad协议接口,已经实现了企业微信pc端所有功能。 【初始化】:初始化企业微信、设置消息回调、获取运行中的实例、根据uuid查看实例详情 【登录】: 获取登录二维码、输入验证码设置、 自动登录、退出登录、获取二次验证二维码…...

OpenStack Nova Scheduler 计算节点选择机制

Nova Scheduler 的核心任务是解决“虚拟机实例在哪个计算节点上启动”的问题,它根据用户通过 flavor 提出的资源需求(如 CPU、内存、磁盘)来做出决策。其默认的调度器是 Filter Scheduler,工作流程主要分为过滤 (Filtering) 和称重 (Weighting) 两个阶段。 1、整体流程 1.1…...

记一种很新的 bitset

bitset 可以维护位移和或。 我们可以扩展他一下,变成值域为 \([0,2^k)\),然后每次操作是位移和对位相加然后对 \(2^k-1\) 取 \(\min\)。 我们每一位取 \(k+1\) 个 \(\text{bit}\),每次加起来后把第 \(k+1\) 位或到前面,然后再与掉就可以了。 复杂度 \(\dfrac {n\log k}\ome…...

基于yolo12进行深度学习的机动车车牌检测

本文介绍了一个基于YOLOv12深度学习的机动车车牌检测系统。该系统采用PyQt5构建图形界面,支持图片和视频输入,能实时检测并分割车牌区域,同时提供结果保存功能。项目使用约1300张包含多角度、多颜色变化的车牌图像进行训练,提升模型鲁棒性。代码部分详细展示了界面设计、YO…...

有向图强连通分量

相关定义 若有向图的 \(u, v\) 两点互相可达,则称 \(u, v\) 强连通。满足任意两点强连通的有向图为 强连通图。有向图的极大强连通子图称作 强连通分量(SCC)。 以下讨论时默认图为有向弱连通图(弱连通即将有向边看作无向边时连通)。 DFS 树 对于有向图,按照任意顺序对结点…...

Kafka 消费者元数据topicId变化问题

遇到问题程序启动后, 短时间内没有数据2025-09-15 15:09:44,214 INFO org.apache.kafka.clients.Metadata [] - [Consumer clientId=flink-test-2, groupId=flink-test] Resetting the last seen epoch of partition ykkafka-3 to 0 since the as…...

【SPIE出版】第五届生物医学与生物信息工程国际学术会议(ICBBE 2025)

第五届生物医学与生物信息工程国际学术会议(ICBBE 2025)将于2025年9月26-28日在中国沈阳召开。【ICBBE 2025已成功申请到SPIE独立出版,稳定EI, Scopus检索!】 【北京大学一级教授莅临本会,欢迎专家学者积极报名参会,即享现场直面交流机会,助力大家求学/科研之路!】 第五…...

Qoder 全新「上下文压缩」功能正式上线,省 Credits !

Qoder 全新「上下文压缩」功能正式上线,高效管理会话上下文,节省开发成本,同时保持高效协作!你是否经历过与 AI Coding 工具协作编程时,对话越来越长,回答却开始变慢,甚至跑偏?在使用 AI Coding 工具过程中,是否觉得 tokens 消耗过快,越来越不经用? Qoder 全新「上下…...

journald 持久化 + 限额脚本

#!/usr/bin/env bash # --------------------------------------------------------- # Enable persistent systemd-journald logs with disk limits # Tested on: AlmaLinux 9 / CentOS Stream 9 # Author: 四点 # ---------------------------------------------------------…...

【2025-09-14】连岳摘抄

23:59一个人要想战胜自己的恐慌,就必须在自身与全人类的命运间建立关联。一个人要想坦然生活下去,就必须明白自己是全人类的一分子。——阿尔弗雷德阿德勒该讨厌的人就得讨厌,这样才能开心。该讨厌的人假装不讨厌,自己就不能开心。一个人利用你,侮辱你,当然应该讨厌。你性…...

深入解析:PAT乙级_1125 子串与子列_Python_AC解法_含疑难点

深入解析:PAT乙级_1125 子串与子列_Python_AC解法_含疑难点pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New",…...

ESP32-S3 与GPS北斗通信返回定位/海拔/速度数据的测试代码

1.设备选用了银尔达企业店的 M100PG(DTU固件)贴片卡-单北斗模块 https://item.taobao.com/item.htm?id=718803061339&mi_id=0000qaxoKpzXrjCqKjNVBO442w3_i_Vz_sY6iyO-vASV8-s&spm=tbpc.boughtlist.suborder_itempic.d718803061339.67002e8dTIrFEQ&sku_properties…...

GZY.Quartz.MUI(基于Quartz的UI可视化操作组件) 2.8.0发布 新增仪表盘和检索功能

前言 很久没更新这个组件了,主要是没想到加什么东西 后来经过群友提醒,其实可以加个仪表盘的功能,方便在任务比较多的时候监听执行情况. (PS:有些群友的定时任务已经干到了上百条..) 说加就加.. 所以就有了2.8的版本.. 2.8.0正式发布. 更新内容: 1.新增任务界面搜索功能,可根据…...

AIGEO助力企业破局

商务部9月13日发布公告,就美国对华集成电路领域相关措施发起反歧视调查,这一事件凸显了核心技术自主可控的紧迫性。在AI搜索优化领域,不少中国企业正积极创新突破外部限制,跑一跑自研的AIGEO产品便是其中典型。您是否正为企业曝光度低、市场影响力不足而发愁?跑一跑AIGEO产…...

东南大学数据库课程06-Database Design

Database Design 目录Database DesignData DependencyNormalization of Relational Schema1NF2NFProblems of non 2NF3NFProblems of non 3NFSummaryER Model and ER DiagramDatabase Design MethodRequirement AnalysisConcept DesignLogic DesignPhysical DesignSummary Data…...

MacOS升级15.2后的问题(二):无法修改mac网络地址

升级新的系统版本后,安全策略有变动,无法直接修改mac网络地址,只能绕过去 1.打开《系统设置》->《网络》->《其他服务》->《管理虚拟接口》 2.点击《+》号新增,名字自己随便取,记住BSD名称就行3.打开终端,输入指令,例如刚刚我新增的test1 对应BSD名称 bridge2 …...

东南大学数据库课程07-Distributed Database Systems

Distributed Database Systems 目录Distributed Database SystemsIntroductionDatabase DistributionStrategies of Data DistributionUnit of Data DistributionProblems Caused by Data DistributionFederated DatabaseQuery Optimization in DDBMSRecovery Mechanism in DDB…...

HCIA——VLAN间通信

...

Xdebug安装与PhpStorm调试配置

一、Xdebug 介绍 Xdebug 是 PHP 的一个扩展,提供了多种功能以改善 PHP 开发体验。单步调试:在脚本执行时于集成开发环境(IDE)或编辑器中逐行调试代码的一种方式。PHP 错误报告的改进:改进的 var_dump() 函数,针对提示、警告、错误和异常提供堆栈跟踪,以突出显示导致错误…...

vue - 内置指令

Vue3 提供了一系列内置指令,用于简化 DOM 操作和实现常见功能。这些指令以 v- 前缀开头,通常用于模板中,以下是详细分类及解析: 一、核心渲染指令 用于控制元素的渲染逻辑和数据绑定。v-text功能:更新元素的文本内容(相当于 textContent)。示例: <span v-text="…...

东南大学数据库课程02-DataModel数据模型

Data Model 数据模型 目录Data Model 数据模型2.1 Hierarchical Data ModelBasic IdeaHierarchical Data SchemaVirtual Record2.2 Network Data Model2.3 Relational Data ModelBasic Idea相关术语Relation,Tuple,Attribute,Column,DomainPrimary KeyForeign Key, Reference I…...

Torch核心数据结构Tensor(张量)

本文pytorch的入门系列文章第一篇,首先介绍了张量tensor这一基础内容,尤其详细介绍其关键概念自动求导autograd原理及简单应用。1 基本概念 tensor是一个多维数组,类似于NumPy中的ndarray,但tensor可以在GPU上进行高效计算,这是它与ndarray的重要区别之一。它可以表示标量…...

vue - 进阶

响应式: 进阶 customRef() 创建一个自定义的 ref,显式声明对其依赖追踪和更新触发的控制方式。类型 function customRef<T>(factory: CustomRefFactory<T>): Ref<T>type CustomRefFactory<T> = (track: () => void,trigger: () => void ) =>…...

读书笔记:为什么你的数据库有时不用索引?一个关键参数告诉你答案

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学习《Expert Oracle Database Architecture Techniques and…...

MacOS升级15.2后的问题(一):安装第三方下载的软件,提醒文件已损坏

安装第三方下载的软件,提醒文件已损坏解决步骤: 第一步,重启系统,command+r 持续按住,进入恢复模式,打开左上角实用工具-终端,进行禁用SIP操作:1 csrutil disable第二步,Macos隐私安全性,打开允许任何来源指令:1 sudo spctl --master-disable完成后即可看见(任何来…...

Playwright MCP浏览器自动化教程

你是否曾厌倦在编程软件和浏览器之间反复切换,只为了检查AI生成的代码能否正常运行?现在,有了Playwright MCP(Model Context Protocol),你可以直接让AI自己操作浏览器,查看自己写的代码运行效果,并自行修复问题。 本文将手把手教你如何配置和使用Playwright MCP,让AI成…...

故障分析:ORA-00900 修改props$中字符集导致

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。故障分析:ORA-00900 修改props$中字符集导致 某天在一个群里面看到有人…...

Unstable Twin - TryHackMe

Unstable Twin 一、信息收集 使用nmap对网站ip的开放端口进行扫描 nmap -sS -sV -A -Pn 10.10.187.113 开放了22端口和80端口 使用dirsearch扫描一下看看还有没有其他目录 dirsearch -u http://10.10.187.113 -e php,html,txt -t 100这里我访问网站网站显示一片空白课,我以为…...

单片机实现挡位调节

简易挡位调节模块 1、初始化硬件这里就不过多赘述了,去看我之前的帖子,我这篇帖子选择TIM2的1通道PWM的简单应用2、触发方式 (1)中断 I 初始化硬件启用按钮的中断在主函数外写入中断回调函数void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){uint16_t value;__HAL_TIM_SET_CO…...