Spring Boot 基础教程 - 指南

news/2025/10/12 14:19:49/文章来源:https://www.cnblogs.com/lxjshuju/p/19136599

Spring Boot 基础教程

带你系统学习Spring Boot 3.5.6,结合JDK 25的新特性,从基础到实践,全面掌握Spring Boot开发技能。

章节规划

  1. Spring Boot简介与环境搭建
  2. 第一个Spring Boot应用
  3. Spring Boot配置体系
  4. Spring Boot Web开发
  5. 数据库操作 - MyBatis篇
  6. 数据库操作 - MyBatis-Plus篇
  7. 数据库操作 - JPA篇
  8. 服务集成与高级特性
  9. 测试与部署

第1章:Spring Boot简介与环境搭建

1.1 什么是Spring Boot

Spring Boot是由Pivotal团队开发的Spring框架的子项目,它简化了Spring应用的初始搭建和开发过程。

通过自动配置、起步依赖等特性,Spring Boot让开发者能够快速构建独立运行的、生产级别的Spring应用。

Spring Boot 3.5.6基于Spring Framework 6.2.x,要求JDK 17及以上版本,我们将使用最新的JDK 25进行开发。

1.2 开发环境准备

  • JDK 25:确保正确配置JAVA_HOME环境变量
  • Maven 3.9.x 或 Gradle 8.7+
  • IDE:IntelliJ IDEA 2025.2 或 Eclipse 2025-06
  • 数据库:MySQL 8.4.6 或者 MySQL 9.4.0

1.3 环境验证

确认JDK安装成功:

java -version
# 应显示类似:openjdk version "25" 2025-09-16

确认Maven安装成功:

mvn -version
# 应显示Maven版本信息及正确的Java版本

第2章:第一个Spring Boot应用

2.1 项目创建

我们将使用Spring Initializr创建项目:

  1. 访问 https://start.spring.io/
  2. 选择:
    • Project: Maven
    • Language: Java
    • Spring Boot: 3.5.6
    • Group: com.lihaozhe
    • Artifact: springboot-tutorial
    • Name: springboot-tutorial
    • Description: First Spring Boot Application
    • Package name: com.lihaozhe
    • Packaging: Jar
    • Java: 25
  3. 添加依赖:Spring Web
  4. IntelliJ IDEA 创建工程
    IDEA 新建 springboot 工程
    IDEA 新建 springboot 工程

2.2 项目结构解析

生成的项目结构如下:

springboot-tutorial/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── lihaozhe/
│   │   │           └── SpringbootTutorialApplication.java
│   │   └── resources/
│   │       ├── application.yml
│   │       ├── static/
│   │       └── templates/
│   └── test/
│       └── java/
│           └── com/
│               └── lihaozhe/
│                   └── SpringbootTutorialApplicationTests.java
├── pom.xml
└── README.md

2.3 完整的pom.xml

<?xml version="1.0" encoding="UTF-8"?><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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><!-- 模型版本,固定为4.0.0 --><modelVersion>4.0.0</modelVersion><!-- 继承Spring Boot的父工程,统一管理依赖版本 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.5.6</version><relativePath/> <!-- lookup parent from repository --></parent><!-- 项目基本信息 --><groupId>com.lihaozhe</groupId><artifactId>springboot-tutorial</artifactId><version>1.0.0</version><name>springboot-tutorial</name><description>springboot-tutorial</description><properties><!-- JDK版本配置 --><java.version>25</java.version></properties><dependencies><!-- Spring Web Starter:包含Spring MVC和嵌入式Tomcat --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- 读取配置文件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><!-- Spring Boot Test Starter:包含测试相关依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><!-- 构建配置 --><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></path></annotationProcessorPaths></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

2.4 主程序类

package com.lihaozhe;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Spring Boot应用的主入口类
* -@SpringBootApplication 是一个组合注解,包含:
*  - @SpringBootConfiguration:标记此类为配置类
*  - @EnableAutoConfiguration:启用Spring Boot的自动配置机制
*  - @ComponentScan:启用组件扫描,自动发现并注册Bean
*/
@SpringBootApplication
public class SpringbootTutorialApplication {
/**
* 程序入口方法
*
* @param args 命令行参数
*/
public static void main(String[] args) {
// 启动Spring Boot应用
// SpringApplication.run()方法会创建Spring容器,启动嵌入式服务器
SpringApplication.run(SpringbootTutorialApplication.class, args);
}
}

2.5 创建第一个控制器

package com.lihaozhe.controller;
import org.springframework.web.bind.annotation.*;
/**
* 第一个控制器类
* -@RestController 是一个组合注解,包含:
* - @Controller:标记此类为控制器
* - @ResponseBody:将方法返回值直接作为HTTP响应体
*
* @author 李昊哲
* @version 1.0.0
*/
@RestController
@RequestMapping("/hello")
public class HelloController {
/**
* 处理根路径的GET请求
*
* @return 响应消息
*/
@GetMapping("/home")
public String home() {
// 返回简单字符串,将直接作为HTTP响应体
return "Hello, Spring Boot 3.5.6!";
}
/**
* 处理带路径变量的GET请求
*
* @param name 路径中的变量
* @return 包含名称的问候消息
*/
@GetMapping("/helloWithPath/{name}")
public String helloWithPath(@PathVariable String name) {
// 使用JDK 21引入的文本块特性,使字符串更易读
return """
Hello, %s!
Welcome to Spring Boot 3.5.6 tutorial.
""".formatted(name);
}
/**
* 处理带查询参数的GET请求
*
* @param name 查询参数,可以为null
* @return 包含名称的问候消息
*/
@GetMapping("/greet")
public String greet(@RequestParam(required = false) String name) {
// 如果没有提供name参数,使用默认值
String actualName = (name == null || name.isEmpty()) ? "Guest" : name;
return "Greetings, " + actualName + "!";
}
}

2.6 配置文件

application.properties(除springcloud工程外 单体 springboot工程使用的人已经不多了 不推荐 )

# 服务器端口配置,默认为8080
server.port=8080
# 应用名称
spring.application.name=springboot-tutorial
# 日志级别配置
logging.level.root=INFO
logging.level.com.lihaozhe=DEBUG

application.yaml 或者 application.yml(推荐)

server:
# 服务器端口配置,默认为8080
port: 8080
spring:
application:
# 应用名称
name: springboot-tutorial
# 日志级别配置
logging:
level:
root: INFO
com:
lihaozhe: DEBUG

2.7 前端页面

我们创建一个简单的HTML页面,放在src/main/resources/static目录下:

index.html

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Spring Boot tutorial</title><!-- 使用Tailwind CSS进行样式设计 --><script src="https://cdn.tailwindcss.com"></script></head><body class="bg-gray-100 min-h-screen flex items-center justify-center"><div class="bg-white p-8 rounded-lg shadow-lg max-w-md w-full"><h1 class="text-3xl font-bold text-center text-blue-600 mb-6">Spring Boot 3.5.6 tutorial</h1><div class="mb-6"><p class="text-gray-700 mb-4">This is a simple Spring Boot application demonstrating basic features.</p><div class="space-y-3"><a href="/hello/home" class="block px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600 transition-colors text-center">Home</a><a href="/hello/helloWithPath/World" class="block px-4 py-2 bg-green-500 text-white rounded hover:bg-green-600 transition-colors text-center">Hello World</a><a href="/hello/greet?name=Spring" class="block px-4 py-2 bg-purple-500 text-white rounded hover:bg-purple-600 transition-colors text-center">Greet Spring</a></div></div><div class="text-center text-gray-500 text-sm"><p>Running on Spring Boot 3.5.6 with JDK 25</p></div></div></body></html>

2.8 测试类

package com.lihaozhe;
import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
/**
* Spring Boot应用的测试类
* - @SpringBootTest 表示这是一个Spring Boot测试类,会加载完整的应用上下文
* - @AutoConfigureMockMvc 自动配置MockMvc,用于模拟HTTP请求
*/
@SpringBootTest
@AutoConfigureMockMvc
class SpringbootTutorialApplicationTests {
/**
* 注入MockMvc实例,用于模拟HTTP请求和验证响应
*/
@Autowired
private MockMvc mvc;
/**
* 测试根路径的GET请求
*/
@Test
void testHome() throws Exception {
// 模拟GET请求访问根路径,并验证响应状态和内容
mvc.perform(MockMvcRequestBuilders.get("/hello/home").accept(org.springframework.http.MediaType.TEXT_PLAIN))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("Hello, Spring Boot 3.5.6!")));
}
/**
* 测试带路径变量的请求
*/
@Test
void testHelloWithPath() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/hello/helloWithPath/Test").accept(org.springframework.http.MediaType.TEXT_PLAIN))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("Hello, Test!\nWelcome to Spring Boot 3.5.6 tutorial.\n")));
}
/**
* 测试带查询参数的请求
*/
@Test
void testGreet() throws Exception {
// 测试带参数的情况
mvc.perform(MockMvcRequestBuilders.get("/hello/greet").param("name", "JUnit")
.accept(org.springframework.http.MediaType.TEXT_PLAIN))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("Greetings, JUnit!")));
// 测试不带参数的情况
mvc.perform(MockMvcRequestBuilders.get("/hello/greet")
.accept(org.springframework.http.MediaType.TEXT_PLAIN))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("Greetings, Guest!")));
}
}

2.9 运行与测试

  1. 运行应用

    • 方式1:在IDE中运行SpringbootTutorialApplication类的main方法
    • 方式2:使用Maven命令:mvn spring-boot:run
  2. 访问应用

    • 打开浏览器,访问 http://localhost:8080/hello/home 查看根路径响应
    • 访问 http://localhost:8080/hello/helloWithPath/YourName 测试路径变量
    • 访问 http://localhost:8080/hello/greet?name=YourName 测试查询参数
    • 访问 http://localhost:8080/index.html 查看前端页面
  3. 运行测试

    • 在IDE中运行测试类
    • 或使用Maven命令:mvn test

2.10 开发思路总结

  1. 项目初始化:使用Spring Initializr快速创建项目结构,选择合适的依赖
  2. 主程序类:通过@SpringBootApplication注解标识,作为应用入口
  3. 控制器开发:使用@RestController创建REST接口,通过@RequestMapping系列注解映射请求
  4. 配置管理:使用application.properties配置应用参数
  5. 前端页面:将静态资源放在static目录下,Spring Boot会自动映射
  6. 测试策略:使用MockMvc模拟HTTP请求,验证接口功能

通过这个简单的示例,我们已经掌握了Spring Boot的基本开发流程。下一章我们将深入学习Spring Boot的配置体系。


第3章:Spring Boot配置体系

3.1 配置文件类型

Spring Boot支持多种配置文件格式,最常用的有两种:

3.1.1 YAML配置文件示例

3.1.2 两种配置文件的对比

特性propertiesYAML
语法键值对,使用.分隔层次结构,使用缩进
可读性中等高,尤其对于复杂配置
列表支持繁琐简洁
多环境支持支持支持
流行度传统,应用广泛现代,越来越流行

3.2 配置注入方式

Spring Boot提供了多种方式将配置注入到Bean中:

3.2.1 使用@Value注解

3.2.2 使用@ConfigurationProperties

3.2.3 配置注入控制器示例

3.3 多环境配置

Spring Boot支持为不同环境(开发、测试、生产等)提供不同的配置。

3.3.1 多环境配置文件命名

3.3.2 开发环境配置

3.3.3 生产环境配置

3.3.4 激活特定环境

在主配置文件中指定激活的环境:

# 在application.yml中添加
spring:
profiles:
active: dev  # 激活开发环境

或者通过命令行参数指定:

# 运行时指定生产环境
java -jar demo.jar --spring.profiles.active=prod

3.4 外部化配置

Spring Boot支持多种外部化配置方式,优先级从高到低:

  1. 命令行参数
  2. 操作系统环境变量
  3. application-{profile}.properties/yaml
  4. application.properties/yaml

3.4.1 命令行参数示例

# 运行时指定端口和环境
java -jar demo.jar --server.port=8888 --spring.profiles.active=test

3.4.2 环境变量示例

在Linux/Mac中:

# 设置环境变量
export SPRING_PROFILES_ACTIVE=prod
export SERVER_PORT=8081
# 运行应用
java -jar demo.jar

在Windows中:

# 设置环境变量
set SPRING_PROFILES_ACTIVE=prod
set SERVER_PORT=8081
# 运行应用
java -jar demo.jar

3.5 配置优先级演示控制器

3.6 本章pom.xml文件

3.7 前端页面展示配置信息

3.8 测试配置注入

3.9 开发思路总结

  1. 配置文件选择:根据项目复杂度选择properties或YAML格式,复杂配置优先选择YAML
  2. 配置注入策略
    • 简单配置使用@Value注解
    • 复杂配置或相关配置组使用@ConfigurationProperties
  3. 多环境管理
    • 为不同环境创建独立配置文件
    • 通过spring.profiles.active指定激活环境
    • 敏感信息(如密码)应使用环境变量或配置中心
  4. 配置优先级:了解不同配置方式的优先级,避免配置冲突
  5. 配置验证:编写测试验证配置是否正确注入

通过本章学习,你应该掌握了Spring Boot的配置体系,能够根据实际需求选择合适的配置方式,并能灵活管理不同环境的配置。


第4章:Spring Boot Web开发

4.1 Spring Boot Web核心组件

Spring Boot Web基于Spring MVC,提供了以下核心组件:

4.2 RESTful API开发

RESTful API是一种软件架构风格,用于创建可扩展的Web服务。

4.2.1 创建实体类

4.2.2 创建服务层

4.2.3 创建REST控制器

4.3 请求参数处理

Spring Boot提供了多种处理请求参数的方式:

4.4 全局异常处理

4.5 数据验证

使用JSR-303/JSR-380进行数据验证:

4.6 本章pom.xml文件

4.7 前端页面测试REST API

4.8 测试Web控制器

4.9 开发思路总结

  1. RESTful API设计

    • 使用合适的HTTP方法(GET、POST、PUT、DELETE)表示操作类型
    • 使用URL路径表示资源
    • 使用HTTP状态码表示请求结果
    • 返回一致的JSON响应格式
  2. 分层架构

    • 控制器(Controller):处理HTTP请求,返回响应
    • 服务层(Service):包含业务逻辑
    • 实体类(Entity):表示数据模型
  3. 异常处理

    • 使用@ControllerAdvice创建全局异常处理器
    • 自定义异常类表示特定业务异常
    • 返回包含详细信息的错误响应
  4. 数据验证

    • 使用JSR-303/JSR-380注解进行数据验证
    • 在控制器方法参数上使用@Valid触发验证
    • 统一处理验证失败的异常
  5. 测试策略

    • 使用@WebMvcTest测试控制器层
    • 使用MockMvc模拟HTTP请求
    • 使用Mockito模拟服务层依赖

通过本章学习,你应该掌握了Spring Boot Web开发的核心技能,能够设计和实现RESTful API,处理请求参数,进行数据验证,并编写相应的测试。


第5章:数据库操作 - MyBatis篇

5.1 MyBatis简介

MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。

Spring Boot通过spring-boot-starter-mybatis提供了对MyBatis的自动配置支持。

5.2 准备工作

5.2.1 创建数据库和表

首先,我们需要创建一个MySQL数据库和用户表:

5.2.2 配置文件

5.2.3 pom.xml文件

5.3 实现数据库操作

5.3.1 实体类

5.3.2 Mapper接口

5.3.3 Mapper XML文件

5.3.4 服务层

5.3.5 控制器

5.4 前端页面

5.5 MyBatis测试类

5.6 MyBatis分页查询实现

5.7 MyBatis动态SQL示例

5.8 开发思路总结

  1. MyBatis核心组件

  2. 数据库操作最佳实践

  3. 动态SQL使用场景

  4. 分页查询实现

  5. 测试策略

通过本章学习,你应该掌握了Spring Boot整合MyBatis进行数据库操作的方法,包括基本CRUD操作、分页查询、动态SQL等核心功能,能够根据实际需求设计和实现数据库访问层。

第6章. MyBatis高级特性

6.1 MyBatis缓存机制

MyBatis提供了两级缓存机制,用于提高查询性能:

6.2 MyBatis类型处理器

类型处理器用于Java类型与数据库JDBC类型之间的转换,MyBatis提供了默认的类型处理器,也支持自定义。

6.3 MyBatis调用存储过程

MyBatis支持调用数据库存储过程,适用于复杂的业务逻辑实现。

第7章. 项目整合与部署

7.1 整合Spring Security

为用户管理系统添加认证和授权功能。

7.2 项目打包与部署


第8章. 总结与扩展

8.1 项目总结

本项目实现了一个基于Spring Boot和MyBatis的用户管理系统,包含以下核心功能:

  1. 基础CRUD操作:实现了用户的增删改查功能
  2. 分页查询:支持按页获取用户数据,提高大数据量下的查询效率
  3. 动态SQL:根据不同条件动态生成SQL语句,灵活应对复杂查询需求
  4. 缓存机制:利用MyBatis的一级和二级缓存,减少数据库访问次数
  5. 类型转换:通过自定义类型处理器,实现Java类型与数据库类型的灵活转换
  6. 存储过程调用:演示了如何调用数据库存储过程处理复杂业务逻辑
  7. 安全认证:整合Spring Security实现用户认证和权限控制
  8. 项目部署:提供了生产环境配置和部署脚本

8.2 扩展方向

  1. 添加Redis缓存:整合Redis实现分布式缓存,提高系统性能
  2. 实现接口限流:使用令牌桶算法或漏桶算法,防止接口被恶意调用
  3. 添加API文档:整合Swagger/OpenAPI,自动生成API文档
  4. 实现数据导出:支持将用户数据导出为Excel或CSV格式
  5. 添加全文搜索:整合Elasticsearch实现用户信息的全文检索
  6. 实现异步任务:使用Spring的异步功能处理耗时操作
  7. 添加消息队列:整合RabbitMQ或Kafka,实现系统解耦
  8. 实现分布式事务:使用Seata等框架处理分布式环境下的事务一致性

通过本项目的学习,你应该掌握了Spring Boot整合MyBatis开发数据库应用的核心技能,能够根据实际需求进行扩展和优化,开发出高性能、可维护的企业级应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统监控报告CPU软锁定问题(soft lockup)诊断方法

CPU软锁定问题,即软件锁定(soft lockup),是指CPU在一段时间内被一个内核进程占用而无法处理其他任务,通常是由于某个进程或驱动程序在内核空间执行了过长时间的循环或者死锁。这种情况下,系统可能无响应或响应非…

pytorch报告

首先对卷积神经网络的基本概念进行了详细阐述。他通过对比传统神经网络,指出了卷积神经网络在处理图像数据时的优势,即能够自动提取图像的特征,减少参数数量,提高模型的训练效率。对于卷积运算这一核心概念,UP 主…

Java语言操作INI配置文件策略

在Java中操作INI配置文件通常涉及到读取、解析、修改和保存配置信息。INI文件是一种简单的文本文件,其结构由节(section)、键(key)和值(value)组成,通常用于存储程序的配置信息。 下面是如何在Java中操作INI文件的策…

IntelliJ IDEA / Android Studio 里直接跑 Cursor(不用来回切窗口) - 教程

IntelliJ IDEA / Android Studio 里直接跑 Cursor(不用来回切窗口) - 教程2025-10-12 14:07 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x…

2025管件厂家最新权威推荐榜:技术实力与市场口碑深度解析

2025管件厂家最新权威推荐榜:技术实力与市场口碑深度解析在工业与民用建筑领域,管件作为流体输送系统的关键组成部分,其质量直接影响工程安全与使用寿命。随着新材料、新工艺的不断涌现,管件行业正迎来技术升级与市…

Java 软件报错之初

在用Sublime Text编写好后,在控制台使用javac ##.java时,文件没有转为class格式,这是因为在Sublime Text中需要先设置文件编码格式为GBK,如图1所示,然后点击保存,再在控制台输入javac ##.java才可以转为class格式…

投票

明天下午放啥???

2025防震气柱袋厂家权威推荐榜:抗震防护与品质口碑深度解析

2025防震气柱袋厂家权威推荐榜:抗震防护与品质口碑深度解析在电商物流、精密仪器、高端消费品等行业快速发展的今天,产品运输过程中的安全防护已成为企业重点关注的问题。防震气柱袋作为现代包装领域的重要创新产品,…

当代世界数字化转型与人工智能应用

本文深入探讨数字化转型从自动化到智能平台的技术演进,分析AI和机器学习在客户服务、销售、供应链等核心业务功能中的具体应用案例,并讨论数据集成、系统治理等关键技术挑战与解决方案。数字化转型在当代世界 数字化…

2025智能照明模块厂家权威推荐榜:技术创新与智能控制口碑之

2025智能照明模块厂家权威推荐榜:技术创新与智能控制口碑之选在数字化与智能化浪潮的推动下,智能照明模块作为现代建筑、家居和工业设施的核心组件,正迎来前所未有的发展机遇。据行业数据显示,全球智能照明市场规模…

化工反应釜全流程监控中Modbus TCP 转DeviceNet协议下西门子 S7-1200 与温度传感器的智能化精准调控方案

案例背景 在化工行业,反应釜是生产过程中的关键设备,其温度、压力、液位等参数的精准控制对于产品质量和生产安全至关重要。某化工企业的反应釜控制系统采用了基于 Modbus TCP 主站的西门子 S7 - 1200 系列 PLC,负责…

实用指南:【Linux】深入理解Linux的进程(一)

实用指南:【Linux】深入理解Linux的进程(一)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

2025年10月铝型材源头厂家最新推荐排行榜:五大优选企业深度解析!

在铝型材行业需求持续攀升的当下,采购决策正面临多重挑战:部分厂家产能有限导致订单交付延迟,原材料与工艺把控松懈造成产品精度不足,定制服务缺失难以匹配个性化需求,多层级供货推高采购成本。更值得关注的是,近…

2025外贸独立站推广最新权威推荐榜:高效引流与转化实战全解

2025外贸独立站推广最新权威推荐榜:高效引流与转化实战全解在全球数字化转型加速的背景下,外贸独立站已成为中国企业出海的核心阵地。根据最新行业数据显示,通过专业运营的独立站渠道,外贸企业平均获客成本比第三方…

软件工程第三次作业——结对作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/homework/13470这个作业的目标 完…

20232310 2025-2026-1 《网络与系统攻防技术》 实验一实验报告

一、实验目的 篡改程序流程——直接修改可执行文件,跳转至getShell; 栈溢出攻击——利用foo函数的缓冲区溢出漏洞,覆盖返回地址触发getShell; Shellcode注入——构造恶意输入注入自定义Shellcode并执行。 二、基础…

2025年CNC高压清洗机订做厂家权威推荐榜:技术实力与定制

2025年CNC高压清洗机订做厂家权威推荐榜:技术实力与定制在制造业智能化转型的浪潮中,CNC高压清洗机作为精密加工环节的关键设备,正发挥着不可替代的作用。这类设备不仅能有效清除CNC加工过程中产生的切削液、油污和…

K8s学习笔记(八) K8s资源对象 - 教程

K8s学习笔记(八) K8s资源对象 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

小分子抗体药物:突破传统抗体瓶颈,在精准治疗中开辟新赛道

在治疗性抗体药物的大家族中,全长单克隆抗体(IgG,分子量约 150kDa)虽凭借高特异性、长半衰期占据主流,但面对实体瘤深层治疗、中枢神经系统疾病等复杂场景,其分子量大、组织穿透性差的问题逐渐凸显。而小分子抗体…