SpringBoot与MongoDB深度整合及应用案例
SpringBoot与MongoDB深度整合及应用案例
在当今快速发展的软件开发领域,NoSQL数据库因其灵活性和可扩展性而变得越来越流行。MongoDB,作为一款领先的NoSQL数据库,以其文档导向的存储模型和强大的查询能力脱颖而出。本文将为您提供一个全方位的指南,从MongoDB的基础介绍到在SpringBoot项目中的整合实践,助您快速上手。
MongoDB核心特性一览
MongoDB是一款开源的NoSQL数据库,它以其高性能、高可用性和易扩展性在大数据时代脱颖而出。以下是MongoDB的一些核心特性:
- 文档存储:以类似JSON的文档形式存储数据,灵活且功能强大。
- 高可扩展性:通过分片技术,MongoDB能够水平扩展,应对海量数据挑战。
- 动态模式:无需预定义模式,MongoDB允许文档字段的灵活变化。
- 强大的查询语言:支持复杂的查询操作,如过滤、排序、聚合等。
- 索引支持:提供多种索引类型,加速查询效率。
- 复制和高可用性:通过数据复制和自动故障转移,确保数据的安全性和可用性。
MongoDB的应用场景概览
MongoDB适用于多种数据存储需求,尤其是在处理半结构化数据和需要高度灵活性的场景中。以下是一些典型的应用场景:
- 大数据存储与分析:存储和分析日志、社交媒体数据等。
- 实时分析:利用聚合框架进行实时数据聚合和分析。
- 内容管理系统(CMS):处理多媒体资源和协同编辑。
- 物联网(IoT):处理来自传感器和设备的实时数据。
- 移动应用:支持灵活的数据模型,适应应用需求变化。
MongoDB的安装与配置
安装包形式安装
在CentOS系统中,通过tar包安装MongoDB的步骤如下:
-
下载MongoDB:
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.4.0.tgz
-
解压MongoDB:
tar -zxvf mongodb-linux-x86_64-4.4.0.tgz
-
移动MongoDB文件夹:
sudo mv mongodb-linux-x86_64-4.4.0 /opt/mongodb
-
创建数据和日志目录:
sudo mkdir -p /data/db sudo mkdir -p /var/log/mongodb
-
配置环境变量:
编辑/etc/profile
文件,添加MongoDB路径到PATH:export PATH=/opt/mongodb/bin:$PATH
-
使环境变量生效:
source /etc/profile
-
启动MongoDB服务:
mongod --dbpath /data/db --logpath /var/log/mongodb/mongod.log --fork
Docker形式安装
在Docker中安装MongoDB的步骤如下:
-
拉取MongoDB镜像:
docker pull mongo
-
创建并运行MongoDB容器:
docker run --name my-mongodb -p 27017:27017 -d mongo
-
查看运行中的容器:
docker ps
-
连接到MongoDB容器:
docker exec -it my-mongodb mongo
-
停止并删除MongoDB容器:
docker stop my-mongodb docker rm my-mongodb
MongoDB基础语法与操作
创建数据库和集合
在MongoDB中,数据存储在集合中,类似于关系型数据库的表。以下是创建集合并插入文档的示例:
use my_db
db.Books.insertOne({title: "如何使用MongoDB",author: "IT小辉同学",year: 2023
})
插入数据
-
单条插入:
db.Books.insertOne({title: "如何使用MongoDB",author: "IT小辉同学",year: 2023 })
-
多条插入:
db.Books.insertMany([{ title: "平凡的世界", author: "路遥", year: 1986 },{ title: "呐喊", author: "鲁迅", year: 1923 } ])
查找数据
-
基本查询:
db.Books.find()
-
条件查询:
db.Books.find({ author: "鲁迅" })
-
投影查询:
db.Books.find({}, { title: 1, author: 1, _id: 0 })
-
排序查询:
db.Books.find().sort({ year: 1 })
-
限制查询结果数量:
db.Books.find().limit(3)
更新数据
-
单条更新:
db.Books.updateOne({ title: "橘颂", author: "张炜", year: 2022 },{ $set: { year: 2023 } } )
-
多条更新:
db.Books.updateMany({ title: "橘颂", author: "张炜", year: 2022 },{ $set: { year: 2023 } } )
删除数据
-
单条删除:
db.Books.deleteOne({ title: "橘颂", author: "张炜", year: 2023 } )
-
多条删除:
db.Books.deleteMany({ year: "2021" } )
SpringBoot整合MongoDB
整合方式一:继承MongoRepository
在SpringBoot中整合MongoDB,可以通过继承MongoRepository
来简化数据库操作。以下是整合步骤:
-
添加依赖:
在pom.xml
中添加Spring Data MongoDB依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope> </dependency>
-
配置数据库连接:
在application.properties
中配置MongoDB连接信息:spring.data.mongodb.uri=mongodb://192.168.18.181:27017/my_db
-
创建实体类:
创建一个实体类表示MongoDB中的文档:import lombok.Data; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document;@Document(collection = "books") @Data public class Book {@Idprivate String id;private String title;private String author;private int year; }
-
创建Repository接口:
创建一个继承自MongoRepository
的接口:import com.xiaohui.pojo.Book; import org.springframework.data.mongodb.repository.MongoRepository; import java.util.List;public interface BookRepository extends MongoRepository<Book, String> {List<Book> findByAuthor(String author); }
-
使用Repository:
在服务类中注入自定义Repository并使用:import com.xiaohui.mapper.BookRepository; import com.xiaohui.pojo.Book; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List;@Service public class BookService {private final BookRepository bookRepository;@Autowiredpublic BookService(BookRepository bookRepository) {this.bookRepository = bookRepository;}public List<Book> findByAuthor(String author) {return bookRepository.findByAuthor(author);} }
-
创建控制层访问接口:
import com.xiaohui.pojo.Book; import com.xiaohui.service.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.util.HashMap; import java.util.List;@RestController @RequestMapping("/api") public class BookController {@Autowiredprivate BookService bookService;@GetMapping("/list")public HashMap<String,Object> getBookList() {String author = "张炜";HashMap<String,Object> books = new HashMap<>();List<Book> bookList = bookService.findByAuthor(author);books.put("books", bookList);return books;} }
整合方式二:注解MongoTemplate
另一种整合方式是使用MongoTemplate
,以下是步骤:
-
注入MongoTemplate:
在服务类中注入MongoTemplate
:import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Service;@Service public class BookService {private final MongoTemplate mongoTemplate;public BookService(MongoTemplate mongoTemplate) {this.mongoTemplate = mongoTemplate;} }
-
执行MongoDB操作:
使用MongoTemplate
执行查询:import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query;public List<Book> findByAuthor(String author) {Query query = new Query(Criteria.where("author").is(author));return mongoTemplate.find(query, Book.class); }
您——作为读者和开发者——将能够获得以下知识和技能:
-
MongoDB核心概念的理解:您将掌握MongoDB的基础特性,包括其文档存储模式、高可扩展性、动态模式以及强大的查询语言。
-
MongoDB的应用场景:您将了解到MongoDB在不同领域的应用,包括大数据存储、实时分析、内容管理系统、物联网和移动应用开发。
-
MongoDB的安装与配置:您将学会如何在不同的环境下安装MongoDB,包括传统的tar包安装方法和使用Docker容器的方式。
-
MongoDB基础操作:您将学习到如何使用MongoDB的基础语法进行数据库和集合的创建、数据的增删改查等操作。
-
SpringBoot与MongoDB的整合:您将掌握两种在SpringBoot项目中整合MongoDB的方法:继承MongoRepository和使用MongoTemplate。
-
实际开发技能:通过实际的代码示例,您将学会如何在SpringBoot项目中配置MongoDB连接、创建实体类、定义Repository接口以及编写控制层代码来访问MongoDB。
-
问题解决能力:在遇到数据库操作问题时,您将具备诊断和解决问题的能力,这对于任何开发人员来说都是宝贵的技能。
-
持续学习与进步:本文不仅提供了知识,还激发了您对新技术的好奇心和学习欲望,鼓励您在技术的道路上不断探索和前进。
通过本文的学习,您将能够更加自信地在项目中应用MongoDB,无论是进行数据存储还是复杂的查询操作。希望您能够将这些知识应用到实际工作中,提升开发效率,创造出更加优秀的软件产品。
你掌握了那些或遇到那些问题,欢迎评论留言进行讨论!!!
相关文章:
SpringBoot与MongoDB深度整合及应用案例
SpringBoot与MongoDB深度整合及应用案例 在当今快速发展的软件开发领域,NoSQL数据库因其灵活性和可扩展性而变得越来越流行。MongoDB,作为一款领先的NoSQL数据库,以其文档导向的存储模型和强大的查询能力脱颖而出。本文将为您提供一个全方位…...
计算机网络(12)介质访问控制
ok通过前面的学习我们已经知道数据链路层提供的服务有帧封装,物理地址,流量控制,错误控制,访问控制。今天就来记录最后的访问控制。 介质访问控制 (MAC)详解 介质访问控制(Media Access Control,简称 MAC&…...
Axios 响应拦截器与未登录状态的统一处理
目录 前言1. 响应拦截器的作用与应用场景1.1 什么是响应拦截器?1.2 响应拦截器的应用场景 2. 代码解读:响应拦截器中的未登录处理2.1 原始代码分析 3. 完善未登录处理逻辑3.1 未登录状态的用户体验优化3.2 改进后的代码实现 4. 实践中的场景4.1 登录态的…...
【MySQL系列】深入理解MySQL中的存储、排序字符集
前言 在创建数据库时,我们经常会需要填写数据库的所用字符集、排序规则,字符集和排序规则是两个非常重要的概念,它们决定了数据库如何存储和比较字符串数据。在 MySQL 中,常用的存储字符集有 utf8、utf8mb4,而排序字符…...
【ARM Coresight OpenOCD 系列 5.1 -- OpenOCD 无法识别CPUID 问题: xxx is unrecognized】
请阅读【嵌入式开发学习必备专栏】 文章目录 OpenOCD 无法识别CPUID 问题ARM CPUIDCPUID 特性CPUID 寄存器字段OpenOCD 无法识别CPUID 问题 在使用OpenOCD 进行CPU debug的过程中有时会报出 无法识别CPUID的问题,本文将会介绍如何解决这个问题。首先我们来学习下什么是CPUID,…...
YOLOv11融合针对小目标FFCA-YOPLO中的FEM模块及相关改进思路
YOLOv11v10v8使用教程: YOLOv11入门到入土使用教程 YOLOv11改进汇总贴:YOLOv11及自研模型更新汇总 《FFCA-YOLO for Small Object Detection in Remote Sensing Images》 一、 模块介绍 论文链接:https://ieeexplore.ieee.org/document/10…...
【Docker容器】一、一文了解docker
1、什么是docker? 1.1 docker概念 Docker是一种容器化平台,通过使用容器技术,Docker允许开发人员将应用程序和其依赖项打包到一个独立的、可移植的容器中。每个容器具有自己的文件系统、环境变量和资源隔离,从而使应用程序可以在…...
【团购核销】抖音生活服务商家应用快速接入①——基础工作
文章目录 一、前言二、抖音开放平台(服务商平台)三、认证服务能力四、第三方生活服务商家应用五、APPID和AppSecret六、申请接口权限七、开发配置八、参考 一、前言 目的:将抖音团购核销的功能集成到我们自己开发的App和小程序中 【团购核销】…...
MyBatis实践:提高持久化层数据处理效率
一、MyBatis简介: 1.简介:https://mybatis.org/mybatis-3/zh/index.html?spmwolai.workspace.0.0.66162306mX2SuC MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下ÿ…...
如何理解Lua 使用虚拟堆栈
虚拟堆栈的基本概念 Lua使用虚拟堆栈来实现Lua和C(或其他宿主语言)之间的交互。这个虚拟堆栈是一个数据结构,用于存储Lua的值,如数字、字符串、表、函数等。它在Lua状态机(lua_State)内部维护,为…...
UE5 腿部IK 解决方案 footplacement
UE5系列文章目录 文章目录 UE5系列文章目录前言一、FootPlacement 是什么?二、具体实现 前言 在Unreal Engine 5 (UE5) 中,腿部IK(Inverse Kinematics,逆向运动学)是一个重要的动画技术,用于实现角色脚部准…...
SMMU软件指南之概述
安全之安全(security)博客目录导读 目录 1. 概述 1.1 开始之前 2. SMMU 的功能 1. 概述 本博客描述了 ARM 系统内存管理单元(SMMUv3)的基本操作及其使用案例,包括: • SMMU 架构概念、术语和操作 • 与 SMMU 功能相关的系统级考虑因素 • 典型 SMMU 使用案例的知识 1…...
Vue_Router权限控制:不同角色显示不同路由
写在前面 在Vue中,Router是一个官方提供的用于处理应用程序路由的插件。它允许我们创建单页应用程序(SPA),其中不同的页面和组件可以通过URL进行导航和展示。使我们可以轻松地创SPA,并实现可复用和可组合的组件…...
机器学习4
九、线性回归 1、概念 假设存在多个点,需要使用一条线来保障尽量拟合这些点,寻找这条线的过程就叫回归。 机器学习中一种有监督学习的算法,回归问题主要关注的是因变量(需要预测的值)和一个或多个数值型的自变量(预测变量)之间的关系。 2、损失…...
Linux中系统的延迟任务及定时任务
一、延时任务 at 命令,即用即消 如 at 11:30 rm -rf /mnt/* ctrld运行 (过一秒即可执行) -v 使用较明显的时间格式,列出at调度中的任务列表 -l 可列出目前系统上面的所有该用户的at调度 -c 可以列出后面接…...
从Stream的 toList() 和 collect(Collectors.toList()) 方法看Java的不可变流
环境 JDK 21Windows 11 专业版IntelliJ IDEA 2024.1.6 背景 在使用Java的Stream的时候,常常会把流收集为List。 假设有List list1 如下: var list1 List.of("aaa", "bbbbbb", "cccc", "d", "eeeee&qu…...
centos7.9单机版安装K8s
1.安装docker [rootlocalhost ~]# hostnamectl set-hostname master [rootlocalhost ~]# bash [rootmaster ~]# mv /etc/yum.repos.d/* /home [rootmaster ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [rootmaster ~]# cu…...
Notepad++--在开头快速添加行号
原文网址:Notepad--在开头快速添加行号_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Notepad怎样在开头快速添加行号。 需求 原文件 想要的效果 方法 1.添加点号 Alt鼠标左键,从首行选中首列下拉,选中需要添加序号的所有行的首列ÿ…...
如何在 PyCharm 中配置 HTTP 代理以确保网络连接的顺畅性
如何在 PyCharm 中配置 HTTP 代理以确保网络连接的顺畅性 在配置 PyCharm 的 HTTP 代理以确保网络连接的顺畅性时,需按照一定的步骤进行设置,这不仅有助于确保 PyCharm 能够顺利访问互联网资源,还能保证插件和工具的正常更新与同步。以下是详…...
查找萤石云IOS Sdk中的编解码接口
2021/1/20 以前的时候,碰到的问题,想把萤石云视频介入到TRTC,但是... 萤石云的IOS接口中没有相应的解码播放库,也就是找不到PlayerSDK对应部分,怎么做呢? 一个是坐等萤石云开放这部分接口,可能…...
webpack配置
4-3vue-loader测试_哔哩哔哩_bilibili 一.新建文件夹vue_todo,vscode打开 二.ctrl打开终端,输入npm init -y,快速生成一个默认的package.json文件 之后左边出现项目初始化文件package.json 三.接下来需要webpack完成打包,所以安装…...
Streamlit + AI大模型API实现视频字幕提取
简介 在本文中,我将带你探讨如何使用Streamlit和AI大模型API来实现视频字幕提取的技术。Streamlit是一个开源的Python库,用于快速构建数据应用的Web界面,而AI大模型API,如OpenAI,提供了强大的语言处理能力,…...
11.21 深度学习-tensor常见操作
import torch from PIL import Image from torchvision import transforms # 获取元素值 tensor.item() 返回一个数值 只能是tensor里面有一个数字的 # 我们可以把单个元素tensor转换为Python数值,这是非常常用的操作 # tensor 里面超过了1个数字就不行 def g…...
gitlab和jenkins连接
一:jenkins 配置 安装gitlab插件 生成密钥 id_rsa 要上传到jenkins,id_rsa.pub要上传到gitlab cat /root/.ssh/id_rsa 复制查看的内容 可以看到已经成功创建出来了对于gitlab的认证凭据 二:配置gitlab cat /root/.ssh/id_rsa.pub 复制查…...
从视频帧生成点云数据、使用PointNet++模型提取特征,并将特征保存下来的完整实现。
文件地址 https://github.com/yanx27/Pointnet_Pointnet2_pytorch?spm5176.28103460.0.0.21a95d27ollfze Pointnet_Pointnet2_pytorch\log\classification\pointnet2_ssg_wo_normals文件夹改名为Pointnet_Pointnet2_pytorch\log\classification\pointnet2_cls_ssg "E:…...
vue3 + Element Plus + ts 封装全局的 message、messageBox、notification 方法
本文示例将 Element Plus 中的 ElMessage 消息提示, ElMessageBox 消息弹出框, ElNotification 消息通知 方法统一封装到全局 hooks 文件中方便全局调用 准备:在项目 src 目录中新建 hooks 目录、然后在 hooks 目录中新建 index.ts (如果你没有使用 ts …...
【人工智能】Python在机器学习与人工智能中的应用
Python因其简洁易用、丰富的库支持以及强大的社区,被广泛应用于机器学习与人工智能(AI)领域。本教程通过实用的代码示例和讲解,带你从零开始掌握Python在机器学习与人工智能中的基本用法。 1. 机器学习与AI的Python生态系统 Pyth…...
linux上安装docker
在 Linux 上安装 Docker 是一个相对简单的过程。以下是针对 Debian 和其他基于 Debian 的发行版(如 Ubuntu)的详细步骤。如果您使用的是其他发行版(如 CentOS 或 Fedora),也可以参考相应的官方文档进行安装。 安装 Do…...
LeetCode:1008. 前序遍历构造二叉搜索树
目录 题目描述: 代码: 第一种: 第二种: 第三种:分治法 题目描述: 给定一个整数数组,它表示BST(即 二叉搜索树 )的 先序遍历 ,构造树并返回其根。 保证 对于给定的测试用例,总是有可能找到具有给定需求的二叉搜索树。 二叉搜索树 是一棵…...
开源远程桌面工具:RustDesk
在远程办公和远程学习日益普及的今天,我们经常需要远程访问办公电脑或帮助他人解决电脑问题。 市面上的远程控制软件要么收费昂贵,要么需要复杂的配置,更让人担心的是数据安全问题。 最近我发现了一款名为 RustDesk 的开源远程桌面工具&…...
nfs服务器--RHCE
一,简介 NFS(Network File System,网络文件系统)是FreeBSD支持的文件系统中的一种,它允许网络中的计 算机(不同的计算机、不同的操作系统)之间通过TCP/IP网络共享资源,主要在unix系…...
使用 Elastic 3 步实现基于 OTel 的原生 K8s 和应用可观测性
作者:来自 Elastic Bahubali Shetti Elastic 的 OpenTelemetry 发行版现已支持 OTel Operator,可使用 EDOT SDK 自动检测应用程序,并管理 EDOT OTel Collector 的部署和生命周期以实现 Kubernetes 可观察性。了解如何通过 3 个简单步骤进行配…...
Vue3-小兔鲜项目出现问题及其解决方法(未写完)
基础操作 (1)使用create-vue搭建Vue3项目 要保证node -v 版本在16以上 (2)添加pinia到vue项目 npm init vuelatest npm i pinia //导入creatPiniaimport {createPinia} from pinia//执行方法得到实例const pinia createPinia()…...
【mysql】锁机制 - 3.意向锁
意向锁(Intension Lock) 是为了提高粗粒度锁性能而设置的一种预判机制,即在一个操作发起实际资源的锁申请行为之前,先对更粗力度的资源发起一个加锁意向声明。 为什么需要意向锁? 比如对于以下操作: 事务…...
Nuxt3 动态路由URL不更改的前提下参数更新,NuxtLink不刷新不跳转,生命周期无响应解决方案
Nuxt3 动态路由URL不更改的前提下参数更新,NuxtLink不刷新不跳转,生命周期无响应解决方案 首先说明一点,Nuxt3 的动态路由响应机制是根据 URL 是否更改,参数的更改并不会触发 Router 去更新页面,这在 Vue3 上同样存在…...
Spring Boot集成Redis:配置、序列化与持久化
Spring Boot集成Redis:配置、序列化与持久化 一、简介 什么是Redis Redis是一个开源的、基于内存的高性能键值对存储数据库,支持多种数据结构如字符串、哈希、列表、集合等。它以其卓越的性能、高可用性和持久性而广受欢迎。 为什么要使用Redis Red…...
JAVA:探索 PDF 文字提取的技术指南
1、简述 随着信息化的发展,PDF 文档成为了信息传播的重要媒介。在许多应用场景下,如数据迁移、内容分析和信息检索,我们需要从 PDF 文件中提取文字内容。JAVA提供了多种库来处理 PDF 文件,其中 PDFBox 和 iText 是最常用的两个。…...
当你项目服务器磁盘报警
当你们公司运维收到这样的邮件,大概率日志文件过大引起的 在Linux下如何不停止服务,清空nohup.out文件呢? nohup.out会一直一直自己增长下去,如果你的服务器硬盘不给力的话,很容易把应用也挂掉(硬盘没空间 ࿰…...
SpringBoot中Maven的定义及国内源配置教程,实现自动获取Jar包
推荐一个国内镜像API网站,无需信用卡及科学上网即可调用gpt,claude3,gemini等国外模型,感兴趣的可以看下👉:https://api.atalk-ai.com/ SpringBoot中Maven的定义及国内源配置教程,实现自动获取J…...
LSTM 和 LSTMCell
1. LSTM 和 LSTMCell 的简介 LSTM (Long Short-Term Memory): 一种特殊的 RNN(循环神经网络),用于解决普通 RNN 中 梯度消失 或 梯度爆炸 的问题。能够捕获 长期依赖关系,适合处理序列数据(如自然语言、时间序列等&…...
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter) 更新以gitee为准: 文章目录 数据预测概念和适用方式线性系统的适用性 数据预测算法和卡尔曼滤波公式推导状态空间方程和观测器先验估计后验估计…...
神经网络问题之一:梯度消失(Vanishing Gradient)
梯度消失(Vanishing Gradient)问题是深度神经网络训练中的一个关键问题,它主要发生在反向传播过程中,导致靠近输入层的权重更新变得非常缓慢甚至几乎停滞,严重影响网络的训练效果和性能。 图1 在深度神经网络中容易出现…...
【微软:多模态基础模型】(4)统一视觉模型
欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html)原创作品 【微软:多模态基础模型】(1)从专家到通用助手 【微软:多模态基础模型】(2)视觉理解 【微…...
npm | Yarn | pnpm Node.js包管理器比较与安装
一、包管理器比较 参考原文链接: 2024 Node.js Package Manager 指南:npm、Yarn、pnpm 比较 — 2024 Node.js Package Manager Guide: npm, Yarn, pnpm Compared (nodesource.com) 以下是对 Node.js 的三个包管理工具 npm、Yarn 和 pnpm 的优缺点总结&am…...
建造者模式
什么是建造者模式? 建造者模式(Builder Pattern)是一种设计模式,用来一步步创建复杂的对象,而不用直接去调用复杂的构造函数或手动设置大量属性。 你可以: • 按步骤“搭建”对象。 • 自由选择要设置的部…...
Spring Boot核心概念:应用配置
Spring Boot提供了强大的配置系统,允许开发者通过配置文件轻松管理应用的配置。支持的主要配置文件格式有两种:application.properties和application.yml。 application.properties与application.yml application.properties和application.yml是Spring…...
linux环境安装cuda toolkit
1 全新安装 如果环境中没安装过cuda版本, 这种情况下比较简单。 直接在https://developer.nvidia.com/cuda-toolkit-archive选择对应版本下载安装即可。 如下为安装cuda toolkit 11.8. 2 环境中已经存在其他版本 这种情况下比较复杂一些。 首先要确认最高支持的版…...
WebSocket实战,后台修改订单状态,前台实现数据变更,提供前端和后端多种语言
案例场景: 在实际的后台中需要变更某个订单的状态,在官网中不刷新页面,可以自动更新状态 在前端页面实现订单状态的实时更新(不刷新页面),可以通过 WebSocket 的方式与后台保持通信,监听订单状态…...
实时通信协议概述:WebRTC、RTP/RTCP、RTMP、HLS 和 FLV 的比较与应用
文章目录 一、协议总览二、WebRTC2.1 时序图2.2 代码示例 三、RTP/RTCP3.1 时序图3.2 代码示例 四、RTMP4.1 时序图4.2 代码示例 五、HLS5.1 时序图5.2 代码示例 六、总结 一、协议总览 协议/格式细节对比适用场景用法WebRTC使用 UDP 传输协议,支持 P2P 通信&#…...
Vue路由
目录 1. 安装 vue-router 2. 创建 Vue 项目结构 3. 配置路由 4. 在 main.js 中使用路由 5. 在 App.vue 中添加 6. 创建组件 7. 运行你的应用 在 Vue.js 2 中,路由管理通常通过 vue-router 插件来实现。vue-router 是一个官方的路由管理器,允许你…...