SpringBoot 3.0 来啦!

news2025/3/1 0:52:45

SpringBoot 3.0 来啦!!

大家好,我 是 Ding Jiaxiong。

没赶上热乎的,晚了两天,2022年11月24日,SpringBoot 3.0 正式发布了!

文章目录

    • SpringBoot 3.0 来啦!!
      • 1 看看官网
      • 2 看看GitHub Wiki
      • 3 我的第一个 SpringBoot 3.0 应用程序
        • 3.1 SpringBoot 介绍
        • 3.2 系统要求
          • 3.2.1 服务程序容器
          • 3.2.2 GraalVM 原生镜像
        • 3.3 安装Spring Boot
          • 3.3.1 面向Java 开发人员的安装说明
          • 3.3.2 安装Spring Boot CLI
        • 3.4 开发第一个Spring Boot 应用程序【3.0】
          • 3.4.1 创建POM
          • 3.4.2 添加类路径依赖
          • 3.4.3 编写代码
          • 3.4.4 运行示例
      • 4 最后想说的
        • 4.1 GraalVM 原生镜像 是什么?
        • 4.2 引入GraalVM 原生镜像
          • 4.2.1 与JVM 部署的主要区别
          • 4.2.2 了解Spring 提前处理

1 看看官网

看看官网 https://spring.io/learn

在这里插入图片描述

在这里插入图片描述

标题:Spring Boot 3.0 正式发布

他非常高兴地代表团队宣布 Spring Boot 3.0 现已普遍可用,并且3.0.0可以在 Maven Central 中找到。

这是自 4.5 年前发布 2.0 以来,Spring Boot 的第一次重大修订。它也是第一个支持Spring Framework 6.0和 GraalVM 的 Spring Boot GA 版本。

新版本的亮点包括:

  • Java 17 基线

  • 支持使用 GraalVM 生成原生镜像,取代实验性的 Spring Native 项目

    • 简单解释GraalVM Native Images

      GraalVM Native Images 提供了一种部署和运行 Java 应用程序的新方法。【嗦嘎】与 Java 虚拟机相比,本机映像可以以更小的内存占用和更快的启动时间运行。

      它们非常适合使用容器映像部署的应用程序,并且在与“功能即服务”(FaaS) 平台结合时特别有趣。

      与为 JVM 编写的传统应用程序不同,GraalVM Native Image 应用程序需要提前处理才能创建可执行文件。这种提前处理涉及从应用程序的主要入口点静态分析您的应用程序代码。

      GraalVM Native Image 是一个完整的、特定于平台的可执行文件。您无需发布 Java 虚拟机即可运行本机映像。【牛逼】

  • 通过千分尺和千分尺追踪提高可观察性

  • 支持具有 EE 9 基线的 Jakarta EE 10

再次感谢多年来为 Spring 和 Spring Boot 做出贡献的所有人!支持 Jakarta EE 9 和 10、可观察性增强以及 GraalVM 支持是一项巨大的团队努力,Spring 产品组合的方方面面都未受影响。特别感谢 Spring 组合中其他项目的开发人员,没有他们就不可能有这个版本。

2 看看GitHub Wiki

仓库地址:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes

在这里插入图片描述

一些新的 和值得 注意的:

  1. Java 17 基线和 Java 19 支持

    Spring Boot 3.0 要求 Java 17 作为最低版本。如果您当前使用的是 Java 8 或 Java 11,则需要先升级 JDK,然后才能开发 Spring Boot 3.0 应用程序。

    Spring Boot 3.0 也运行良好,并已通过 JDK 19 测试。

    GraalVM 基线和本机构建工具

    Spring Boot 需要 Graal 22.3 或更高版本和 Native Build Tools Plugin 0.9.17 或更高版本

  2. 第三库升级

    Spring Boot 3.0 基于并需要 Spring Framework 6。

    此版本中升级的其他 Spring 项目包括:

    • Spring AMQP 3.0.
    • Spring Batch 5.0.
    • Spring Data 2022.0.
    • Spring GraphQL 1.1.
    • Spring HATEOAS 2.0.
    • Spring Integration 6.0.
    • Spring Kafka 3.0.
    • Spring LDAP 3.0.
    • Spring REST Docs 3.0.
    • Spring Retry 2.0.
    • Spring Security 6.0 (see also what’s new).
    • Spring Session 2022.0.
    • Spring WS 4.0.

    Spring Boot 3.0 已将所有依赖项从 Java EE 迁移到 Jakarta EE API。尽可能选择 Jakarta EE 10 兼容依赖项,包括:

    • Jakarta Activation 2.1
    • Jakarta JMS 3.1
    • Jakarta JSON 2.1
    • Jakarta JSON Bind 3.0
    • Jakarta Mail 2.1
    • Jakarta Persistence 3.1
    • Jakarta Servlet 6.0
    • Jakarta Servlet JSP JSTL 3.0
    • Jakarta Transaction 2.0
    • Jakarta Validation 3.0
    • Jakarta WebSocket 2.1
    • Jakarta WS RS 3.1
    • Jakarta XML SOAP 3.0
    • Jakarta XML WS 4.0

    我们还尽可能升级到第三方 jar 的最新稳定版本。这里一些值得注意的依赖项升级包括:

    • Couchbase Client 3.4
    • Elasticsearch Client 8.5
    • Flyway 9
    • Groovy 4.0
    • Hibernate 6.1
    • Hibernate Validator 8.0
    • Jackson 2.14
    • Jersey 3.1
    • Jetty 11
    • jOOQ 3.16
    • Kotlin 1.7.20
    • Liquibase 4.13
    • Lettuce 6.2
    • Log4j 2.18
    • Logback 1.4
    • Micrometer 1.10
    • Micrometer Tracing 1.0
    • Neo4j Java Driver 5.2
    • Netty 4.1.77.Final
    • OkHttp 4.10
    • R2DBC 1.0
    • Reactor 2022.0
    • SLF4J 2.0
    • SnakeYAML 1.32
    • Tomcat 10
    • Thymeleaf 3.1.0.M2
    • Undertow 2.2.20.Final

    GraalVM 本机镜像支持

    Spring Boot 3.0 应用程序现在可以转换为 GraalVM 原生镜像【笔者还第一次 看见这个东西】,这可以提供显着的内存和启动性能改进。支持 GraalVM Native Images 是整个 Spring 产品组合中的一项重大工程工作。

    【开始使用GraalVM 原生镜像 → https://docs.spring.io/spring-boot/docs/3.0.0-SNAPSHOT/reference/html/native-image.html#native-image】

    Log4j2 增强功能

    Log4j2 支持已更新为提供以下功能的新扩展:

    • 配置文件特定的配置
    • 环境属性查找
    • Log4j2 系统属性

    【详细信息 → https://docs.spring.io/spring-boot/docs/3.0.0-SNAPSHOT/reference/html/features.html#features.logging.log4j2-extensions】

    改进的@ConstructorBinding 检测

    使用构造函数绑定时@ConfigurationProperties@ConstructorBinding如果类具有单个参数化构造函数,则不再需要注释。如果您有多个构造函数,您仍然需要使用@ConstructorBinding来告诉 Spring Boot 使用哪一个。

    对于大多数用户来说,这个更新后的逻辑将允许使用更简单的@ConfigurationProperties类。但是,如果您有一个@ConfigurationProperties并且想要将 bean 注入构造函数而不是绑定它,那么您现在需要添加一个@Autowired注释。

    Micrometer 更新

    … 【读不下去了,大家自行查看文档吧,笔者太菜了】

  3. Spring Boot 3.0 中的弃用

    • @ConstructorBinding已从org.springframework.boot.context.properties包中移至org.springframework.boot.context.properties.bind.
    • JsonMixinModule基于扫描的构造函数已被弃用。
    • ClientHttpRequestFactorySupplier应替换为ClientHttpRequestFactories.
    • comment不再支持Cookie属性。
    • RestTemplateExchangeTagsProviderWebClientExchangeTagsProviderWebFluxTagsProviderWebMvcTagsProvider相关类已替换为ObservationConvention等效类。
    • 基类上的无参数构造函数HealthContributor @Configuration已被弃用。
    • DefaultTestExecutionListenersPostProcessor并且SpringBootDependencyInjectionTestExecutionListener已被弃用,取而代之的是 Spring Framework 的ApplicationContextFailureProcessor.
    • 属性management.metrics.export.<product>已弃用,替换为management.<product>.metrics.export.
    • 有利于的push设定。management.prometheus.metrics.export.pushgateway.shutdown-operation``post
    • @AutoConfigureMetrics已被弃用,取而代之的是@AutoConfigureObservability.

3 我的第一个 SpringBoot 3.0 应用程序

3.1 SpringBoot 介绍

Spring Boot 可帮助开发者创建可以运行的独立的、生产级的基于 Spring 的应用程序。我们对 Spring 平台和第三方库有自己的看法,这样您就可以轻松上手。大多数 Spring Boot 应用程序需要很少的 Spring 配置。

您可以使用 Spring Boot 创建可以通过使用java -jar或更传统的 war 部署启动的 Java 应用程序。我们还提供了一个运行“spring scripts”的命令行工具。

我们的主要目标是:

  • 为所有 Spring 开发提供速度极快且可广泛访问的入门体验。
  • 开箱即用,但随着需求开始偏离默认值,请迅速摆脱困境。
  • 提供一系列大型项目通用的非功能特性(例如嵌入式服务器、安全性、指标、健康检查和外部化配置)。
  • 绝对没有代码生成,也不需要 XML 配置。

3.2 系统要求

Spring Boot 3.0.0 需要Java 17,并且兼容 Java 19(包括 Java 19 )。还需要Spring Framework 6.0.2或更高版本。

为以下构建工具提供显式构建支持:

Build ToolVersion
Maven3.5+
Gradle7.x (7.5 or later)
3.2.1 服务程序容器

Spring Boot 支持以下嵌入式 servlet 容器:

NameServlet Version
Tomcat 10.05.0
Jetty 11.05.1
Undertow 2.2 (Jakarta EE 9 variant)5.0

您还可以将 Spring Boot 应用程序部署到任何 servlet 5.0+ 兼容容器。

3.2.2 GraalVM 原生镜像

可以使用 GraalVM 22.3 或更高版本将 Spring Boot 应用程序转换为本机映像。

可以使用原生构建工具Gradle/Maven 插件或native-imageGraalVM 提供的工具来创建镜像。您还可以使用原生镜像 Paketo buildpack创建原生镜像。

支持以下版本:

NameVersion
GraalVM Community22.3
Native Build Tools0.9.18

3.3 安装Spring Boot

Spring Boot 可以与“经典”Java 开发工具一起使用,也可以作为命令行工具安装。无论哪种方式,您都需要Java SDK v17或更高版本。

在开始之前,您应该使用以下命令检查当前的 Java 安装:

$ java -version

在这里插入图片描述

如果您是 Java 开发的新手,或者想尝试使用 Spring Boot,您可能想先尝试Spring Boot CLI(命令行界面)。

Spring Boot CLI(命令行界面)是一个命令行工具,可用于使用 Spring 快速制作原型。它允许您运行Groovy脚本,这意味着您拥有熟悉的类似 Java 的语法,而没有那么多样板代码。

您不需要使用 CLI 来使用 Spring Boot,但这是在没有 IDE 的情况下启动 Spring 应用程序的快速方法。

否则,请继续阅读“经典”安装说明。【不用了!!!!】

3.3.1 面向Java 开发人员的安装说明

您可以像使用任何标准 Java 库一样使用 Spring Boot。为此,请spring-boot-*.jar在您的类路径中包含适当的文件。Spring Boot 不需要任何特殊工具集成,因此您可以使用任何 IDE 或文本编辑器。此外,Spring Boot 应用程序没有什么特别之处,因此您可以像运行任何其他 Java 程序一样运行和调试 Spring Boot 应用程序。

虽然您可以复制 Spring Boot jar,但我们通常建议您使用支持依赖管理的构建工具(例如 Maven 或 Gradle)。

在这里插入图片描述

OK。

3.3.2 安装Spring Boot CLI

【笔者就不安了,这文档真 … 细】

3.4 开发第一个Spring Boot 应用程序【3.0】

本节介绍如何开发一个小的“Hello World!” 突出显示 Spring Boot 的一些关键功能的 Web 应用程序。我们使用 Maven 来构建这个项目,因为大多数 IDE 都支持它。

3.4.1 创建POM

笔者这里 直接就基于 IDEA 构建了

来一个 崭新的Maven 工程吧

这里就一步步来了,看看现在的IDEA 吧

在这里插入图片描述

妙啊,这里就先不用了

在这里插入图片描述

直接创建!

在这里插入图片描述

OK,一个全新的 Maven 工程。

【引入父依赖】

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.dingjiaxiong</groupId>
    <artifactId>MyFirstSpringBoot3</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.0</version>
    </parent>

</project>

在这里插入图片描述

OK

3.4.2 添加类路径依赖

Spring Boot 提供了许多“Starters”,可让您将 jar 添加到类路径中。我们的冒烟测试应用程序使用POM 部分中的spring-boot-starter-parentparentspring-boot-starter-parent是一个提供有用的 Maven 默认值的特殊启动器。它还提供了一个dependency-management部分,以便您可以省略version“blessed”依赖项的标签。【意思就是 版本 我帮你管了,你不用写】

还是我们熟悉 的web 依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

在这里插入图片描述

Cool

3.4.3 编写代码

现在就 可以编写代码了

要完成我们的应用程序,我们需要创建一个 Java 文件。默认情况下,Maven 从 编译源代码src/main/java,因此您需要创建该目录结构,然后添加一个名为src/main/java/MyApplication.java包含以下代码的文件:

package com.dingjiaxiong;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * ClassName: com.dingjiaxiong.MyApplication
 * date: 2022/11/25 20:34
 *
 * @author DingJiaxiong
 */

@RestController
@SpringBootApplication
public class MyApplication {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

}

在这里插入图片描述

OK【简单解释下吧】

【1】@RestController 和@RequestMapping 注解

MyApplication的第一个类级注解是@RestController. 这称为构造型注释。它为阅读代码的人和 Spring 提供了该类扮演特定角色的提示。在这种情况下,我们的类是一个 web @Controller,因此 Spring 在处理传入的 web 请求时会考虑它。

@RequestMapping注释提供“路由”信息。它告诉 Spring,任何带有/路径的 HTTP 请求都应该映射到该home方法。注释告诉 Spring将@RestController结果字符串直接呈现给调用者。

【2】@SpringBootApplication 注解

第二个类级注释是@SpringBootApplication. 这个注解被称为元注解,它结合了@SpringBootConfiguration,@EnableAutoConfiguration@ComponentScan

其中,我们在这里最感兴趣的注解是@EnableAutoConfiguration. @EnableAutoConfiguration告诉 Spring Boot 根据您添加的 jar 依赖项“猜测”您想要如何配置 Spring。由于spring-boot-starter-web添加了 Tomcat 和 Spring MVC,自动配置假定您正在开发 Web 应用程序并相应地设置 Spring。

【3】 main 方法

我们应用程序的最后一部分是main方法。这是一个标准方法,它遵循应用程序入口点的 Java 约定。我们的主要方法通过调用委托给 Spring Boot 的SpringApplicationrunSpringApplication引导我们的应用程序,启动 Spring,而 Spring 又会启动自动配置的 Tomcat Web 服务器。我们需要将MyApplication.class参数作为参数传递给该run方法,以判断SpringApplication哪个是主要的 Spring 组件。该args数组也被传递以公开任何命令行参数。

3.4.4 运行示例

此时,您的应用程序应该可以工作了。由于您使用了spring-boot-starter-parentPOM,因此您有一个有用的run目标可以用来启动应用程序。

直接启动!

在这里插入图片描述

OK,打开浏览器,访问 localhost:8080

在这里插入图片描述

OK,就这样吧~ 【也算是 用了 一手新版本,哈哈哈哈哈】

4 最后想说的

除了最低环境要求【Java 17】,以及大量依赖升级了之外,支持 GraalVM 原生镜像 这感觉是一个非常大的更新了 【笔者的拙见】

4.1 GraalVM 原生镜像 是什么?

官网文档:

https://docs.spring.io/spring-boot/docs/current/reference/html/native-image.html#native-image.introducing-graalvm-native-images

在这里插入图片描述

GraalVM Native Images是独立的可执行文件,可以通过提前处理已编译的 Java 应用程序来生成。Native Images 通常比它们的 JVM 对应物具有更小的内存占用并且启动更快。

又一个笔者第一次 听的概念

https://www.graalvm.org/native-image/

在这里插入图片描述

原生镜像 → 编写高效、更安全、即时可扩展的云原生 Java 应用程序

【简单介绍】

Native Image 是一种提前将 Java 代码编译为二进制文件(本机可执行文件)的技术。本机可执行文件仅包含运行时所需的代码,即应用程序类、标准库类、语言运行时和来自 JDK 的静态链接本机代码。

Native Image 生成的可执行文件有几个重要的优点,因为它

  • 使用 Java 虚拟机所需资源的一小部分,因此运行成本更低
  • 以毫秒为单位开始
  • 立即提供最佳性能,无需预热
  • 可打包成轻量级容器镜像,实现快速高效部署
  • 减少攻击面

OK,看个响就行

4.2 引入GraalVM 原生镜像

GraalVM Native Images 提供了一种部署和运行 Java 应用程序的新方法。与 Java 虚拟机相比,本机映像可以以更小的内存占用和更快的启动时间运行。

它们非常适合使用容器映像部署的应用程序,并且在与“功能即服务”(FaaS) 平台结合时特别有趣。

与为 JVM 编写的传统应用程序不同,GraalVM Native Image 应用程序需要提前处理才能创建可执行文件。这种提前处理涉及从应用程序的主要入口点静态分析您的应用程序代码。

GraalVM Native Image 是一个完整的、特定于平台的可执行文件。您无需发布 Java 虚拟机即可运行本机映像。

4.2.1 与JVM 部署的主要区别

提前生成 GraalVM 本机映像这一事实意味着本机应用程序和基于 JVM 的应用程序之间存在一些关键差异。

主要区别是:

  • 应用程序的静态分析是在构建时从main入口点执行的。
  • 创建本机映像时无法访问的代码将被删除,并且不会成为可执行文件的一部分。
  • GraalVM 不直接感知代码的动态元素,必须告知反射、资源、序列化和动态代理。
  • 应用程序类路径在构建时是固定的,不能更改。
  • 没有惰性类加载,可执行文件中的所有内容都将在启动时加载到内存中。
  • 未完全支持的 Java 应用程序的某些方面存在一些限制。

嗯,每一点都很“生硬”

4.2.2 了解Spring 提前处理

典型的 Spring Boot 应用程序非常动态,配置在运行时执行。事实上,Spring Boot 自动配置的概念在很大程度上取决于对运行时状态的反应,以便正确配置。

虽然可以将应用程序的这些动态方面告诉 GraalVM,但这样做会抵消静态分析的大部分好处。因此,当使用 Spring Boot 创建本机镜像时,会假定一个封闭的世界并且应用程序的动态方面受到限制。

封闭世界假设意味着以下限制:

  • 类路径是固定的,并在构建时完全定义
  • 在您的应用程序中定义的 bean 不能在运行时更改,这意味着:
    • 不支持Spring@Profile注释和特定于配置文件的配置
    • 不支持在创建 bean 时更改的属性(例如,@ConditionalOnProperty.enable属性)。

当这些限制到位时,Spring 可以在构建时执行提前处理并生成 GraalVM 可以使用的额外资产。Spring AOT 处理的应用程序通常会生成:

  • Java源代码
  • 字节码(用于动态代理等)
  • GraalVM JSON 提示文件:
    • 资源提示 ( resource-config.json)
    • 反思提示 ( reflect-config.json)
    • 序列化提示 ( serialization-config.json)
    • Java 代理提示 ( proxy-config.json)
    • JNI 提示 ( jni-config.json)

OK,差不多就这亚子吧。路漫漫其修远兮,吾将上下而求索

我们一定能够成为我们想要去成为的人。

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

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

相关文章

ARM 37 个通用寄存器详解

一、简介 1、ARM 总共有 37 个寄存器&#xff0c;但是每种模式下最多只能看到 18 个寄存器&#xff0c;其他寄存器虽然名字相同&#xff0c;但是在当前模式不可见。 2、例如&#xff0c;对 r13 这个名字来说&#xff0c;在 ARM 中共有 6 个名叫 r13&#xff08;又叫 sp&#x…

SpringBoot SpringBoot 原理篇 1 自动配置 1.10 bean 的加载方式【八】

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇1 自动配置1.10 bean 的加载方式【八】1.10.1 BeanDefinitionRegistryPostPro…

ABAP学习笔记之——第五章:内表

内表&#xff1a; 内表是可以在程序内部定义且使用的表&#xff0c;属于本地表。 与C语言比较&#xff1a; C语言的数组和内表比较&#xff1a; 内表是动态数组(Dynamic Data Object) INITIALSIZE 语句并非实际占用内存空间&#xff0c;而只是预约(RESERVE)内存空间。 创建…

Python每日一练 06

Python每日一练 06 文章目录Python每日一练 06while循环实例一、斐波那契数列前n项实例二、Leibniz公式计算圆周率while循环 循环结构表示程序重复执行某个或某些操作&#xff0c;直到某条件为假&#xff08;或为真&#xff09;时才可终止循环。 在问题求解过程中&#xff0c;…

[算法笔记]最长递增子序列和编辑距离

最长递增子序列 例如对于 a[] {2,1,5,3,6,4,8,9,7}其最长递增子序列为{1,3,4,8,9}所以长度&#xff08;或者说是结果&#xff09;为5。 对于a[0...n-1]&#xff0c;用dp[i]表示a[0...i]中以a[i]结尾的最长递增子序列长度 其状态状态方程&#xff1a; dp[i]1 // 0≤i≤…

【无人机通信优化】基于粒子群算法的多跳无线网络部署优化附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

[附源码]SSM计算机毕业设计时事资讯平台JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Date对象

文章目录Date日期对象Date对象的创建格式化日期3.获取Date总的毫秒数(时间戳)&#xff0c;是距离1970年1月1日过了多少毫秒数。二&#xff1a;常用时间获取方法三&#xff1a;日期设置方法四&#xff1a;时间转字符串菜鸟工具&#xff1a;https://www.runoob.com/jsref/jsref-o…

在Express框架使用ORM模型访问关系型数据库

一、ORM模型&#xff1a;设计思想&#xff0c;主要目的是简化计算机程序访问数据库 1、ORM&#xff1a;对象关系模型(对象关系映射) Object Releastion Model,将程序中的对象和数据库中关系(表格)进行映射。可以使开发者在程序中方便的对数据库进行操作(用户在程序操作对对象实…

【网页制作课作业】用HTML+CSS制作一个简单的学校网页(9页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

一文熟悉 Go 的分支结构(if - else-if - else、switch)

哈喽大家好&#xff0c;我是陈明勇&#xff0c;今天分享的知识是 Go 的分支结构。如果本文对你有帮助&#xff0c;不妨点个赞&#xff0c;如果你是 Go 语言初学者&#xff0c;不妨点个关注&#xff0c;一起成长一起进步&#xff0c;如果本文有错误的地方&#xff0c;欢迎指出&a…

Python爬虫脚本+XML解析实现自动保存某商城的商品图

文章目录 1.背景介绍2.代码分析2.1.创建图片保存的目录2.2.定一下载函数2.3.发送请求解析数据2.源代码(全)1.背景介绍 Python脚本可以实现数据的爬取,而XML可以解析网页数据。将Python爬虫脚本与XML解析功能相结合,可以实现自动保存某商城的商品图功能。 注:本功能仅用于…

基于AlexNet卷积神经网络的手写体数字识别系统研究-附Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、手写体数字识别系统✳️ 2.1 MNIST 数据集✳️ 2.2 CNN✳️ 2.3 网络训练✳️ 三、手写体数字识别结果✳️ 四、参考文献✳️ 五、Matlab代码获取✳️ 一、引言 手写数字识别是计算机视觉领域中的一个重要应用&#xff0c;已广泛应用在很…

电动汽车充电站的最优选址matlab程序

​摘要&#xff1a;以规划期内充电站的总成本 &#xff08;包括投资、运行和维护成本&#xff09;和网损费用之和最小为目标&#xff0c;考虑了相关的约束条件&#xff0c;构造了电动汽车充电站最优规划的数学模型&#xff0c; 关键词&#xff1a;电动汽车&#xff1b;充电站&a…

角色扮演?一款跨平台可移植开源游戏

程序员宝藏库&#xff1a;gitee.com/sharetech_lee/CS-Books-Store DevWeekly收集整理每周优质开发者内容&#xff0c;包括开源项目、资源工具、技术文章等方面。 每周五定期发布&#xff0c;同步更新到 知乎&#xff1a;Jackpop 。 欢迎大家投稿&#xff0c;提交issue&#…

支付系统设计概览

前言 就个人对支付的一些理解和经验&#xff0c;在此编辑出来和大家一起交流分享。请大佬多多指正。 在各种互联网场景中&#xff0c;牵扯到交易的情况&#xff0c;大多都需要支付系统的支持。支付系统往往不是一蹴而就的&#xff0c;往往都是随着业务的不断扩展&#xff0c;…

【python】面向对象程序设计(基础篇)

个人主页&#xff1a;天寒雨落的博客_CSDN博客-初学者入门C语言,python,数据库领域博主 &#x1f4ac; 热门专栏&#xff1a;python_天寒雨落的博客-CSDN博客 ​每日赠语&#xff1a;没有窘迫的失败&#xff0c;就不会有自豪的成功&#xff1b;失败不可怕&#xff0c;只要能从失…

浅识vue的虚拟DOM和渲染器

虚拟DOM本质上是对DOM的抽象描述&#xff0c;就是一个普通的js对象。他身上的属性要比真实DOM的属性要少得多。 在一定情况下&#xff0c;使用虚拟DOM的性能要逊于直接使用真实DOM。 例如&#xff0c;在页面一开始的时候&#xff0c;Vue需要先通过生成虚拟DOM树&#xff0c;在…

【雷达通信】雷达探测项目仿真附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

《恋上数据结构与算法》第1季:链表原理实现(图文并茂)

数据结构与算法的学习笔记目录&#xff1a;《恋上数据结构与算法》的学习笔记 目录索引链表原理实现一、链表二、链表的设计三、链表的接口设计四、链表接口的实现1. 索引越界的判断2. 根据索引查找指定节点3. 添加数据4. 插入元素5. 删除元素6. 清空元素7. 修改元素8. 查找元素…