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

快速入门:使用 Spring Boot 构建 Web 应用程序

前言

本文将讨论以下主题:

  1. 安装 Java JDK、Gradle 或 Maven 和 Eclipse 或 IntelliJ IDEA
  2. 创建一个新的 Spring Boot 项目
  3. 运行 Spring Boot 应用程序
  4. 编写一个简单的 Web 应用程序
  5. 打包应用程序以用于生产环境

通过这些主题,您将能够开始使用 Spring Boot 并创建自己的 Web 应用程序。

文章目录

    • 前言
    • 介绍
      • Spring Boot简介
      • 为什么选择Spring Boot
    • 准备工作
      • 安装Java JDK
      • 安装Gradle或Maven
        • 安装Gradle
        • 安装Maven
      • 安装Eclipse或IntelliJ IDEA
        • 安装Eclipse
        • 安装IntelliJ IDEA
    • 创建Spring Boot项目
      • 使用 Maven 构建 Spring Boot 项目
        • 分析项目结构
        • 运行应用程序
        • Whitelabel
      • 使用 Gradle 构建 Spring Boot 项目
        • 分析项目结构
        • 运行应用程序
    • 编写第一个Web应用程序
      • 使用 Maven
      • 使用 Gradle
      • 打包成可执行jar包
      • 实现热部署
        • spring-boot-devtools
      • Maven的常用命令:
    • 总结

介绍

Spring Boot是一个用于构建基于Spring的应用程序的框架。它通过提供一些默认配置和约定来简化开发过程,使得构建可独立运行的、生产级别的应用程序变得更加容易。

Spring Boot简介

Spring Boot是Spring框架的扩展版本,可以帮助开发者更快地创建基于Spring的应用程序。与传统的Spring开发相比,Spring Boot采用了自动配置机制,可以省去大量繁琐的配置,同时还提供了很多常用功能的依赖库,例如Web、JPA、数据源等。

为什么选择Spring Boot

相对于其他Java开发框架,Spring Boot有以下优点:

  • 快速开发:使用Spring Boot可以快速搭建一个Web应用程序,并具有一些默认的配置,例如自动配置数据源、日志、信息视图等。
  • 易于部署:Spring Boot应用程序可以打成jar包或war包并独立运行,这样就不需要安装Tomcat或其他Web服务器。
  • 社区活跃:Spring Boot拥有庞大的社区支持,提供了丰富的文档和示例代码,方便开发者学习和使用。

非常感谢您的反馈,以下是更加详细的安装步骤:

准备工作

在开始创建Spring Boot项目之前,需要安装并配置好以下软件:

  • Java JDK:Java开发环境
  • Gradle或Maven:构建工具,用于管理项目依赖项和构建过程
  • Eclipse或IntelliJ IDEA:集成开发环境,用于编写和调试代码

安装Java JDK

首先需要安装Java JDK,可以从官方网站下载对应版本的JDK进行安装。建议选择最新的稳定版JDK。
JAVA8
在这里插入图片描述

你可以根据大多数教程先配置JAVA_HOME,然后再去系统变量path中添加%JAVA_HOME%\bin
在这里插入图片描述
也可以直接添加bin完整目录
在这里插入图片描述
查看版本

java -version

安装Gradle或Maven

接下来需要安装Gradle或Maven。Gradle是一种基于Groovy语言的构建工具,而Maven是一种基于XML的构建工具。两者都可以用于管理项目依赖项和构建过程,这里介绍其中一种。

安装Gradle

Gradle是一个构建工具,面向开发者的脚本语言是Groovy和Kotlin这里不做过多介绍

  1. 下载Gradle二进制文件:访问Gradle官网,下载最新的Gradle二进制文件。
  2. 解压缩Gradle二进制文件:将下载的Gradle二进制文件解压缩到任意目录中。
  3. 配置环境变量:将Gradle的bin目录添加到系统的环境变量PATH中,确保可以在命令行中使用Gradle。
  4. 通过 gradle -v 来查看版本。
安装Maven
  1. 下载Maven二进制文件:访问Maven官网,下载最新的Maven二进制文件。
  2. 解压缩Maven二进制文件:将下载的Maven二进制文件解压缩到任意目录中。
  3. 配置环境变量:将Maven的bin目录添加到系统的环境变量PATH中,确保可以在命令行中使用Maven。
  4. 通过 mvn -v 来查看版本。

安装Eclipse或IntelliJ IDEA

最后需要安装一个集成开发环境(IDE),如Eclipse或IntelliJ IDEA。

安装Eclipse
  1. 下载Eclipse:访问Eclipse官网,下载最新的Eclipse IDE for Java Developers。
  2. 解压缩Eclipse:将下载的Eclipse压缩包解压缩到任意目录中。
  3. 启动Eclipse:执行Eclipse根目录下的eclipse.exe文件,启动Eclipse。

以上就是安装Java JDK、Gradle或Maven、Eclipse或IntelliJ IDEA的具体步骤。如果您已经完成了上述步骤,就可以开始创建Spring Boot项目了。
非常感谢您的反馈,以下是对IntelliJ IDEA的安装教程和如何通过cmd查看Java JDK、Gradle、Maven版本的介绍:

安装IntelliJ IDEA

IntelliJ IDEA是一种常用的Java开发IDE,可以从官方网站JetBrains官网下载适合自己电脑的版本进行安装。根据操作系统选择对应的版本进行下载,然后按照向导进行安装即可。

创建Spring Boot项目

Spring Initializr是一个web应用程序,用于生成基于Spring Boot的新项目,我们可以直接访问它的网站Spring Initializr进行使用。下面将演示如何使用Spring Initializr创建一个新项目。

  1. 打开Spring Initializr网站
  2. 选择“Project”页面,选择构建工具和Spring Boot版本
  3. 选择“Dependencies”页面,添加所需依赖项
  4. 点击“Generate”按钮以生成项目框架
.
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/example/demo/
│   │   │       └── DemoApplication.java
│   │   └── resources/
│   │       ├── application.properties
│   │       └── static/
│   └── test/
│       ├── java/
│       │   └── com/example/demo/
│       │       └── DemoApplicationTests.java
│       └── resources/
│           └── application_test.properties
├── pom.xml
└── README.md

使用 Maven 构建 Spring Boot 项目

在这里插入图片描述

分析项目结构

使用Maven构建Spring Boot项目时,它将使用标准的Maven目录结构:

├── src
│   ├── main
│   │   ├── java            # Java源代码
│   │   └── resources       # 配置文件、资源文件等
│   └── test
│       ├── java            # 测试代码
│       └── resources       # 测试配置文件、资源文件等
└── pom.xml                  # Maven项目描述文件

pom.xml中添加spring-boot-starter-parent作为父依赖项,这将提供Spring Boot所需的所有默认设置。还可以添加其他任何需要的依赖项。例如,在本例中,我们将添加Web依赖项。

<project xmlns="http://maven.apache.org/POM/4.0.0"<!--...--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>{spring-boot-version}</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>
运行应用程序

使用Maven运行Spring Boot应用程序很容易。只需要执行以下命令即可:

mvn spring-boot:run

IntelliJ IDEA maven配置
在这里插入图片描述

Whitelabel

这将启动应用程序并在控制台中输出应用程序的日志信息。当应用程序启动后,可以在Web浏览器中访问localhost:8080查看结果。
在这里插入图片描述

因为应用程序没有正确处理Web请求而导致了Whitelabel错误。按照以下步骤可以解决该问题:

  1. 确认404页面是Spring Boot的默认错误页面,表示我们的请求在Web服务中不存在。

  2. 创建一个新的控制器类,并添加相应的方法来处理Web请求。例如,在您的项目中创建一个名为HelloController的类,实现以下功能:

    • 响应/hello请求。
    • 返回“hello, springboot”。
  3. 修改HelloController类并导入所需的依赖项,如下所示:

package com.example.demo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class HelloController {@GetMapping("/hello")@ResponseBodypublic String hello() {return "hello, springboot";}}

在这里插入图片描述

  1. 重新启动应用程序并访问http://localhost:8080/hello,您应该会看到类似于“hello, springboot”的消息。如果能正常响应,则说明问题已经解决了。

在这里插入图片描述

使用 Gradle 构建 Spring Boot 项目

Gradle是一个构建工具,面向开发者的脚本语言是Groovy和Kotlin这里不做过多介绍

分析项目结构

使用Gradle构建Spring Boot项目时,它将使用标准的Gradle目录结构:

├── build.gradle      # Gradle项目描述文件
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── settings.gradle   # Gradle项目设置文件
├── src
│   ├── main
│   │   ├── java      # Java源代码
│   │   └── resources # 配置文件、资源文件等
│   └── test
│       ├── java      # 测试代码
│       └── resources # 测试配置文件、资源文件等

build.gradle中添加spring-boot-starter作为依赖项,这将提供Spring Boot所需的所有默认设置。还可以添加其他任何需要的依赖项。例如,在本例中,我们将添加Web依赖项。

plugins {id 'java'id 'org.springframework.boot' version '{spring-boot-version}'
}dependencies {implementation 'org.springframework.boot:spring-boot-starter-web'
}
运行应用程序

使用Gradle运行Spring Boot应用程序很容易。只需要执行以下命令即可:

./gradlew bootRun

这将启动应用程序并在控制台中输出应用程序的日志信息。当应用程序启动后,可以在Web浏览器中访问localhost:8080查看结果。

编写第一个Web应用程序

使用 Maven

创建一个名为DemoController的类,它将处理来自Web浏览器的HTTP请求,并返回一条消息。

@RestController
public class DemoController {@GetMapping("/hello")public String hello() {return "Hello World";}
}

与使用Gradle时相同,@RestController注解表示这个类将处理HTTP请求,并且@GetMapping注解表示这个方法将处理HTTP GET请求。在这种情况下,当用户访问/hello时,将调用hello()方法并返回一个字符串。

现在,重新启动应用程序并在Web浏览器中访问localhost:8080/hello,您应该看到一个包含"Hello World"消息的响应。

使用 Gradle

创建一个名为DemoController的类,它将处理来自Web浏览器的HTTP请求,并返回一条消息。

@RestController
public class DemoController {@GetMapping("/hello")public String hello() {return "Hello World";}
}

@RestController注解表示这个类将处理HTTP请求,并且@GetMapping注解表示这个方法将处理HTTP GET请求。在这种情况下,当用户访问/hello时,将调用hello()方法并返回一个字符串。

现在,重新启动应用程序并在Web浏览器中访问localhost:8080/hello,您应该看到一个包含"Hello World"消息的响应。

打包成可执行jar包

我们还可以将Spring Boot应用程序打包成可执行的jar文件。在pom.xml或build.gradle文件中添加以下插件依赖:

使用Maven:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

使用Gradle:

plugins {id 'org.springframework.boot' version '2.5.1'
}bootJar {enabled = true
}

然后执行以下命令进行打包:

  • 使用Maven:
mvn package

mvn packagemvn clean package都是Maven命令,用于构建项目并生成可执行的JAR或WAR文件。

mvn package会执行以下步骤:

  1. 编译源代码
  2. 运行单元测试
  3. 打包编译后的代码到JAR或WAR文件中

mvn clean package则会在执行以上步骤之前先执行清理操作,即删除已经生成的目标文件夹以及其他编译产生的临时文件。然后再执行上述步骤。

因此,mvn clean packagemvn package更加彻底,可以确保您得到最新的编译结果。如果您在编译过程中遇到了问题,并且认为这些问题可能与缓存数据有关,则可以尝试使用mvn clean package来解决这些问题。

总之,mvn clean package相对于mvn package会花费更多的时间,但通常会更安全、更可靠,可以防止一些不必要的错误。

  • 使用Gradle:
gradlew build

打包完成后,可以在target/目录下找到生成的可执行jar文件。要运行jar文件,请使用以下命令:

java -jar target\demo-0.0.1-SNAPSHOT.jar 

实现热部署

对于开发人员而言,热部署是一个非常有用的功能,可以避免频繁重启应用程序。Spring Boot提供了两种方式实现热部署:使用spring-boot-devtools和JRebel插件。

spring-boot-devtools

spring-boot-devtools是一个内置的开发者工具,可以自动检测代码更改并重新加载应用程序。要使用spring-boot-devtools,只需在pom.xml或build.gradle中添加以下依赖项:

使用Maven:

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

使用Gradle:

dependencies {developmentOnly 'org.springframework.boot:spring-boot-devtools'
}

启用IDEA的“Make Project Automatically”选项。在IDEA中,可以通过选中菜单栏的"File -> Settings -> Build, Execution, Deployment -> Compiler"来启用自动构建。

在IDE中启动应用程序并进行调试时,任何更改都会自动重新加载应用程序。
你需要先打开自动构建项目
在这里插入图片描述
在这里插入图片描述
Debug模式在这里插入图片描述启动后,在这里插入图片描述即可自动检测代码更改并重新加载应用程序

在这里插入图片描述

Maven的常用命令:

  1. mvn dependency:purge-local-repository:该命令将从本地存储库中删除所有已解析的依赖项和插件。这对于解决依赖项版本冲突或清理本地存储库非常有用。

  2. mvn dependency:tree:该命令将以树形结构显示项目依赖项及其传递依赖项。这对于检查依赖项版本、冲突或排除不需要的依赖项非常有用。

  3. mvn dependency:list:该命令将列出当前项目的所有依赖项。它与 mvn dependency:tree 不同之处在于,它只列出直接依赖项而不显示传递依赖项。

  4. mvn dependency:resolve:该命令将解析并下载所有项目依赖项,但不会将它们复制到本地存储库中。

  5. mvn dependency:analyze:该命令将分析项目依赖项并生成报告,其中包含未使用的依赖项和可能产生潜在问题的依赖项。

这些命令可以帮助你管理项目依赖项,解决依赖项相关问题,并确保项目的稳定性和可靠性。

总结

通过本文,您已经了解了如何使用Spring Boot创建Web应用程序。我们首先讨论了Spring Boot的基础知识,然后介绍了如何设置您的开发环境。接下来,我们演示了如何使用Maven和Gradle构建Spring Boot项目,并分析了项目的结构。最后,我们编写了一个简单的Web应用程序,并演示了如何打包成可执行jar包和实现热部署。

我们希望本文对您有所帮助,使您能够以更快、更轻松的方式创建优秀的Spring Boot Web应用程序。

相关文章:

快速入门:使用 Spring Boot 构建 Web 应用程序

前言 本文将讨论以下主题&#xff1a; 安装 Java JDK、Gradle 或 Maven 和 Eclipse 或 IntelliJ IDEA创建一个新的 Spring Boot 项目运行 Spring Boot 应用程序编写一个简单的 Web 应用程序打包应用程序以用于生产环境 通过这些主题&#xff0c;您将能够开始使用 Spring Boo…...

01.CentOS7静默安装oracle11g

CentOS7静默安装oracle11g 一、下载Oracle11g安装包二、开始安装oracle11g三、配置Oracle监听程序四、添加数据库实例五、设置开机启动六、登录后解除锁定 一、下载Oracle11g安装包 下载链接&#xff1a;https://pan.baidu.com/s/1gcLMFGX7-8ju7OoFOFLzQA 提取码&#xff1a;6…...

SASE安全访问服务边缘

自存用&#xff1a; 参考文档&#xff1a; 什么是安全访问服务边缘 (SASE)&#xff1f; | Microsoft 安全 网安人必读 &#xff5c;一文读懂SASE - 知乎...

k8s集群升级

目录 1. 部署cri-docker &#xff08;所有集群节点&#xff09; 2. 升级master节点 3. 升级worker节点 4. 部署containerd 1. 部署cri-docker &#xff08;所有集群节点&#xff09; k8s从1.24版本开始移除了dockershim&#xff0c;所以需要安装cri-docker插件才能使用docker …...

redis原理 主从同步和哨兵集群

主从库如何实现数据一致 我们总说的 Redis 具有高可靠性&#xff0c;又是什么意思呢&#xff1f;其实&#xff0c;这里有两层含义&#xff1a;一是数据尽量少丢失&#xff0c;二是服务尽量少中断。AOF 和 RDB 保证了前者&#xff0c;而对于后者&#xff0c;Redis 的做法就是增…...

四季古诗赏析

春晓 春眠不觉晓&#xff0c;处处闻啼鸟。夜来风雨声&#xff0c;花落知多少。 夏意 别院深深夏簟清&#xff0c;石榴开遍透帘明。树阴满地日当午&#xff0c;梦觉流莺时一声。 秋词 自古逢秋悲寂寥&#xff0c;我言秋日胜春朝。晴空一鹤排云上&#xff0c;便引诗情到碧霄。 …...

【网络协议】聊聊套接字socket

网络编程我们知道是通过socket进行编程的&#xff0c;其实socket也是基于TCP和UDP协议进行编程的。但是在socket层面是感知不到下层的&#xff0c;所以在设置参数的时候&#xff0c;其实是端到端协议智商的网络层和传输层。TCP是数据流所以设置为SOCK_STREAM&#xff0c;而UDP是…...

GEO生信数据挖掘(十一)STRING数据库PPI蛋白互作网络 Cytoscape个性化绘图【SCI 指日可待】

GEO生信数据挖掘&#xff08;十&#xff09;肺结核数据-差异分析-WGCNA分析&#xff08;900行代码整理注释更新版本&#xff09; 通过 前面十篇文章的学习&#xff0c;我们应该已经可以获取到一个”心仪的基因列表“了&#xff0c;相较于原始基因数量&#xff0c;这个列表的数…...

api接口更新钉钉文档

class OperateKnowledgeBaseExcel():robot_code # agent_id #app_key #群机器人app_secret #群机器人def __init__(self,union_id, workbook_id, worksheet_id):self.union_id union_idself.workbook_id workbook_id # 获取方式&#xff1a;... &g…...

Android---如何同view进行渲染

ViewRootImpl 在 Activity、window 和 View 三者关系之间起着承上启下的作用。一方面&#xff0c;ViewRootImpl 中通过 Binder 通信机制&#xff0c;远程调用 WindowSession 将 View 添加到 Window 中&#xff1b;另一方面&#xff0c;ViewRootImpl 在添加 View 之前&#xff0…...

【LeetCode:26. 删除有序数组中的重复项 | 双指针】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

如何判断一个对象是不是一个空对象?

在JavaScript中&#xff0c;可以使用以下方法来判断一个对象是否为空对象&#xff1a; 1&#xff1a;使用Object.keys()方法&#xff1a;Object.keys()方法返回一个包含对象自身可枚举属性的数组。通过判断该数组的长度&#xff0c;可以确定对象是否为空对象。 function isEm…...

C/C++ “variable set but not used“的 警告问题解决方案

在编程的过程中&#xff0c;会有一些预留的变量暂时不用&#xff0c;但是编译过程编译器警告 会报错无法编译通过针对这个问题&#xff0c;采用下面的解决方案比较方便。 错误如下形式&#xff1a; 三种解决方法&#xff1a; 1.可以在变量前加上&#xff08;void&#xff09;就…...

JAVA安全入门之反射

反射 对于反射这个概念来说&#xff0c;直白的讲就是&#xff1a; 对象可以通过反射获取他的类&#xff0c;类可以通过反射拿到所有⽅法&#xff08;包括私有&#xff09;&#xff0c;拿到的⽅法可以调⽤而众所周知 JAVA 是一门静态语言&#xff0c;我们通过反射就可以达到动…...

【c++|opencv】一、基础操作---2.图像信息获取

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 图像信息获取&#xff0c;roi 1. 图像信息获取 // 获取图像信息#include <iostream> #include <opencv2/opencv.hpp>using namespace cv; …...

HarmonyOS开发:探索组件化模式开发

前言 组件化一直是移动端比较流行的开发方式&#xff0c;有着编译运行快&#xff0c;业务逻辑分明&#xff0c;任务划分清晰等优点&#xff0c;针对Android端的组件化&#xff0c;之前有比较系统的总结过相关文章&#xff0c;感兴趣的朋友&#xff0c;可以查看&#xff0c;点击…...

目标URL启用了不安全的HTTP方法

修复中危web项目漏洞&#xff08;目标URL启用了不安全的HTTP方法&#xff09; 漏洞名 &#xff1a;目标URL启用了不安全的HTTP方法 等级&#xff1a; 中危 漏洞位置&#xff1a; PUT DELETE 描述&#xff1a; Web服务器配置为允许使用危险的HTTP方法&#xff0c;如PUT、MOVE、…...

大数据之LibrA数据库系统告警处理(ALM-12001 审计日志转储失败)

告警解释 根据本地历史数据备份策略&#xff0c;集群的审计日志需要转储到第三方服务器上。如果转储服务器满足配置条件&#xff0c;审计日志可以成功转储。审计日志转储失败&#xff0c;系统产生此告警。如果第三方服务器的转储目录磁盘空间不足&#xff0c;或者用户修改了转…...

大模型该被知道的技术实现-面向垂直领域

一个高度清晰的思维导图截图奉上&#xff08;下载&#xff1a;需3积分&#xff09; 内容截图...

赛灵思产品系列

FPGA概述&#xff1a; FPGA的性能主要划分为以下几个方面&#xff1a; 1. 逻辑单元数量&#xff1a;逻辑单元数量越多&#xff0c;FPGA的处理能力越强。 2. 存储单元数量&#xff1a;存储单元数量越多&#xff0c;FPGA的存储能力越强。 3. 时钟频率&#xff1a;时钟频率越高&a…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...