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

VO包装类和实体类分别是什么?区别是什么?

VO包装类和实体类

  • 1. 实体类(Entity Class)是什么?
  • 2. VO包装类(Value Object Class)是什么?
  • 3. VO包装类和实体类的区别
  • 4. 实际应用中的区别
  • 5. 举例
    • 5.1. 实体类(Entity Class)的定义与示例
    • 5.2. VO包装类(Value Object Class)的定义与示例
    • 5.3. 实际应用中的使用示例
      • 5.3.1 用户注册功能
      • 5.3.2 用户资料展示功能
    • 5.5. 结语
  • 6. 总结

1. 实体类(Entity Class)是什么?

定义
实体类通常用于表示数据库中的表或数据结构。它们是持久化的对象,包含与数据库表字段相对应的属性,主要用于在应用程序和数据库之间传输数据。

特点

  • 持久化:通过ORM(对象关系映射)框架(如Hibernate、JPA)与数据库交互,直接映射到数据库表。
  • 身份标识:通常有一个唯一的标识符(例如ID),用于区分数据库中的不同记录。
  • 可变性:实体类是可变的,可以在应用程序中修改其属性,并将更改持久化到数据库。
  • 业务逻辑:一般不包含业务逻辑,主要关注数据的存储和检索。
  • 使用场景:常用于数据访问层(DAO)或与数据库相关的操作。

示例

public class UserEntity {private Long id;         // 唯一标识符private String username; // 用户名private String password; // 密码private String email;    // 邮箱// Getters and setters
}

2. VO包装类(Value Object Class)是什么?

定义
VO包装类是一种用于封装数据的类,通常用于在应用程序的各层(如Controller、Service、DAO)之间传递数据。它可以包含来自一个或多个实体类的数据,甚至可能包含一些额外的计算或业务逻辑,以满足特定的业务需求或用户界面需求。

特点

  • 数据传输:主要用于应用程序层之间的数据传递,而不是直接与数据库交互。
  • 不可变性:通常设计为不可变(Immutable),即一旦创建,其属性值不可修改,以保证数据一致性和线程安全性。
  • 无身份标识:没有唯一的标识符,VO类的相等性基于其属性值(值相等即相等)。
  • 业务逻辑:可以包含简单的业务逻辑或计算,但不涉及持久化操作。
  • 使用场景:常用于业务逻辑层、表示层或API响应,以满足特定展示或业务需求。

示例

public class UserVO {private final String username; // 用户名private final String email;    // 邮箱private final String fullName; // 全名,可能从其他数据源聚合public UserVO(String username, String email, String fullName) {this.username = username;this.email = email;this.fullName = fullName;}// 仅提供Getters,无Setters
}

3. VO包装类和实体类的区别

以下是VO包装类和实体类的详细对比:

特征实体类(Entity Class)VO包装类(Value Object Class)
用途表示数据库中的表或数据结构,负责数据持久化在应用程序各层之间传递数据
持久化是,与数据库直接交互(通过ORM框架)否,不与数据库直接交互
身份标识有,通常有唯一ID无,基于属性值的相等性
可变性可变,可以修改并持久化到数据库通常不可变,属性值固定
业务逻辑通常不包含业务逻辑,仅封装数据可以包含简单业务逻辑或计算
数据来源直接映射数据库表可从多个实体类或其他数据源派生
生命周期与数据库记录相关联,较长通常是临时的,仅在请求或会话期间存在
使用场景数据访问层(DAO)、数据库操作业务逻辑层、表示层、API响应

4. 实际应用中的区别

  • 数据访问层:实体类(如UserEntity)用于与数据库交互,执行创建、读取、更新、删除(CRUD)操作。
  • 业务逻辑层:VO类(如UserVO)可能从多个实体类中聚合数据,执行业务逻辑后传递给表示层。
  • 表示层:VO类用于将数据传递给用户界面或API响应,满足特定的展示需求。

5. 举例

为了帮助我们更好地理解VO包装类(Value Object Class)和实体类(Entity Class)的区别,我将以一个简单的用户管理系统为例,展示用户注册和用户资料展示两个功能,分别使用实体类和VO包装类来说明它们的用途和差异。

5.1. 实体类(Entity Class)的定义与示例

定义
实体类用于表示数据库中的表结构,包含与数据库字段对应的属性,通常通过ORM框架(如JPA)与数据库交互。它是数据的持久化表示,负责存储和检索数据。

场景
假设数据库中有一个users表,包含以下字段:

  • id(主键,自增)
  • username(用户名)
  • password(密码)
  • email(邮箱)

实体类示例
以下是对应的UserEntity类:

// 引入 JPA 相关注解,用于实体类与数据库表的映射
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;// 使用 @Entity 注解标记该类为 JPA 实体类,表示这是一个与数据库表对应的 Java 类
@Entity
public class UserEntity {// 使用 @Id 注解标记该字段为主键@Id// 使用 @GeneratedValue 注解指定主键生成策略,这里使用 GenerationType.IDENTITY 表示主键由数据库自动生成(自增)@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id; // 主键字段,通常用于唯一标识一条记录private String username; // 用户名字段private String password; // 密码字段private String email; // 邮箱字段// Getters 和 setters 方法,用于获取和设置类的属性值,这是 Java Bean 的标准写法// 获取 id 的值public Long getId() {return id;}// 设置 id 的值public void setId(Long id) {this.id = id;}// 获取 username 的值public String getUsername() {return username;}// 设置 username 的值public void setUsername(String username) {this.username = username;}// 获取 password 的值public String getPassword() {return password;}// 设置 password 的值public void setPassword(String password) {this.password = password;}// 获取 email 的值public String getEmail() {return email;}// 设置 email 的值public void setEmail(String email) {this.email = email;}
}

说明

  • UserEntity直接映射到数据库的users表。
  • 属性与表字段一一对应,例如idusernamepasswordemail
  • 通过ORM框架,可以将UserEntity对象保存到数据库,或从数据库加载数据。
  • 它是可变的,可以在程序中修改其属性并持久化到数据库。

5.2. VO包装类(Value Object Class)的定义与示例

定义
VO包装类用于在应用程序的各层之间传递数据,满足特定的业务需求或用户界面需求。它不直接与数据库交互,通常从实体类或其他数据源聚合数据,并设计为不可变以确保数据一致性。

场景
假设在用户资料展示页面,需要显示用户的用户名、邮箱和全名(全名可能通过业务逻辑计算或从其他数据源获取)。

VO类示例
以下是对应的UserProfileVO类:

// 声明一个 UserProfileVO 类,通常 VO 代表 Value Object(值对象),用于封装相关的数据值
public class UserProfileVO {// 定义三个私有字段,分别存储用户名、邮箱和全名,并通过 final 修饰,表示一旦赋值后不可改变private final String username;private final String email;private final String fullName;// 构造方法,用于初始化 UserProfileVO 对象,传入用户名、邮箱和全名作为参数public UserProfileVO(String username, String email, String fullName) {this.username = username; // 将传入的用户名赋值给对象的 username 字段this.email = email; // 将传入的邮箱赋值给对象的 email 字段this.fullName = fullName; // 将传入的全名赋值给对象的 fullName 字段}// 提供用户名的 getter 方法,用于获取 username 字段的值public String getUsername() {return username;}// 提供邮箱的 getter 方法,用于获取 email 字段的值public String getEmail() {return email;}// 提供全名的 getter 方法,用于获取 fullName 字段的值public String getFullName() {return fullName;}
}

说明

  • UserProfileVO不与数据库交互,仅用于数据传输。
  • 包含usernameemailfullName,其中fullName可能是通过业务逻辑从其他地方获取的。
  • 它是不可变的,没有setter方法,确保数据在传递过程中不会被意外修改。

5.3. 实际应用中的使用示例

下面通过用户注册和用户资料展示两个场景,展示实体类和VO包装类的具体用法。

5.3.1 用户注册功能

场景
用户在注册时输入用户名、密码和邮箱,系统需要将这些数据保存到数据库。

使用实体类

  • 在Controller层接收用户输入的数据。
  • 创建UserEntity对象,设置相关属性。
  • 通过DAO层将UserEntity保存到数据库。

代码示例

// 声明一个 UserController 类,通常 Controller 类用于处理用户请求和业务逻辑
public class UserController {// 定义一个私有字段 userDao,类型为 UserDao,用于与数据库进行交互操作private final UserDao userDao;// 构造方法,用于初始化 UserController 对象,传入一个 userDao 对象作为参数public UserController(UserDao userDao) {this.userDao = userDao; // 将传入的 userDao 对象赋值给当前对象的 userDao 字段}// 定义一个 registerUser 方法,用于处理用户注册的逻辑public void registerUser(String username, String password, String email) {UserEntity user = new UserEntity(); // 创建一个新的 UserEntity 对象,用于存储用户信息user.setUsername(username); // 设置用户名user.setPassword(password); // 设置密码(注:实际开发中密码不应该以明文形式存储,应进行加密处理)user.setEmail(email); // 设置邮箱userDao.save(user); // 调用 userDao 的 save 方法将用户信息保存到数据库}
}

说明

  • UserEntity直接用于与数据库交互,负责数据的持久化。
  • 它的属性完全对应数据库字段,适合存储用户输入的完整信息。

5.3.2 用户资料展示功能

场景
在用户资料页面,需要显示用户的用户名、邮箱和全名(全名可能从其他服务或逻辑生成)。

使用VO类

  • 从数据库中获取UserEntity对象。
  • 通过业务逻辑获取用户的全名(例如从另一个服务)。
  • 创建UserProfileVO对象,封装需要展示的数据。
  • UserProfileVO传递给表示层。

代码示例

// 声明一个 UserService 类,作为业务逻辑层,负责处理用户相关的业务逻辑
public class UserService {// 定义一个私有字段 userDao,类型为 UserDao,用于与数据库进行交互操作private final UserDao userDao;// 定义一个私有字段 fullNameService,类型为 FullNameService,用于获取用户的全名信息private final FullNameService fullNameService;// 构造方法,用于初始化 UserService 对象,传入 userDao 和 fullNameService 对象作为参数public UserService(UserDao userDao, FullNameService fullNameService) {this.userDao = userDao; // 将传入的 userDao 对象赋值给当前对象的 userDao 字段this.fullNameService = fullNameService; // 将传入的 fullNameService 对象赋值给当前对象的 fullNameService 字段}// 定义一个 getUserProfile 方法,根据用户 ID 获取用户信息并封装成 UserProfileVO 对象返回public UserProfileVO getUserProfile(Long userId) {UserEntity user = userDao.findById(userId); // 调用 userDao 的 findById 方法,根据 userId 从数据库中查询用户实体String fullName = fullNameService.getFullName(user.getUsername()); // 调用 fullNameService 的 getFullName 方法,根据用户名获取用户的全名return new UserProfileVO(user.getUsername(), user.getEmail(), fullName); // 创建并返回一个 UserProfileVO 对象,包含用户名、邮箱和全名}
}

说明

  • UserEntity提供了数据库中的原始数据(usernameemail)。
  • fullName通过外部服务生成,聚合到UserProfileVO中。
  • UserProfileVO只包含展示所需的数据,不包括敏感信息(如password),适合传递给前端。

5.5. 结语

通过这个用户管理系统的例子,我们可以看到:

  • 用户注册时,使用UserEntity将数据保存到数据库,体现了实体类的持久化特性。
  • 用户资料展示时,使用UserProfileVO封装展示所需的数据,体现了VO类的灵活性和安全性。

6. 总结

  • 实体类:关注数据的持久化和数据库交互,适合数据存储和检索。
  • VO包装类:关注数据的传输和业务需求的满足,适合层间通信和展示。

相关文章:

VO包装类和实体类分别是什么?区别是什么?

VO包装类和实体类 1. 实体类(Entity Class)是什么?2. VO包装类(Value Object Class)是什么?3. VO包装类和实体类的区别4. 实际应用中的区别5. 举例5.1. 实体类(Entity Class)的定义与…...

如何创建一个C#项目(基于VS2022版)

一.先找到要保存项目的位置,新建一个文件夹 二.打开VisualStudio,选择创建新项目 三.选择模版: 选择操作语言和操作系统 这个是跨平台的 初学在windows系统上,可选择其他,下面这个是不带窗体模版 也可根据需要选择带窗体模版 点击下一步 填写项目名称,选择项目保存位置,填写解…...

RabbitMQ 四种交换机(Direct、Topic、Fanout、Headers)详解

本文是博主在梳理 RabbitMQ 知识的过程中,将所遇到和可能会遇到的基础知识记录下来,用作梳理 RabbitMQ 的整体架构和功能的线索文章,通过查找对应的知识能够快速的了解对应的知识而解决相应的问题。 文章目录 一、直连交换机(Dire…...

聚合分销系统开发:短剧小说外卖网盘电商cpscpa系统

聚合分销系统是一种整合了多种分销项目和功能的综合性平台,其核心在于通过CPS(按销售付费)和CPA(按行为付费)两种模式,为推广者提供多样化的赚钱机会。以下是聚合分销系统的主要项目和功能: 一…...

【Flume 】Windows安装步骤、配置环境

🛠 Flume 是什么? Apache Flume 是一个高效、可靠、可扩展的数据收集系统,通常用于收集日志、流数据,比如收集数据到 HDFS、Kafka 等。 虽然 Flume 本身是为 Linux 服务器设计的,但 在 Windows 本地也是能跑起来的&a…...

【信息系统项目管理师】高分论文:论质量管理和进度管理(智慧旅游平台建设项目)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、规划质量管理2、质量保证3、质量控制论文 2019年3月,我作为项目经理,参加了某市智慧旅游平台建设项目,负责项目的全面管理, 该项目以打造一流的国内外生态旅游城市为目标,旨在大数据云平台建设的基…...

一致性哈希详解:优雅地扩展分布式系统

引言 对于哈希算法,相信大家一定不会陌生。它经常被用在负载均衡、分库分表等场景中。例如,在进行分库分表时,我们可能初步根据业务分析,确定 128 张表足以满足当前的数据量需求。此时,当需要插入或查询一条记录时&am…...

pytest 技术总结

目录 一 pytest的安装: 二 pytest有三种启动方式: 三 用例规则: 四 配置框架: 一 pytest的安装: pip install pytest # 安装 pip install pytest -U # 升级到最新版 二 pytest有三种启动方式: 1…...

数据库MySQL学习——day5(总结与复习实践)

文章目录 1、复习总结1.1. 数据库基础1.2. 表操作1.3. 数据操作1.4. 更新与删除 2、实践任务:创建学生管理系统数据库2.1. 数据库设计2.2. 创建表的SQL语句2.3. 插入示例数据2.4. 查询与数据操作示例 3、调试与练习4、 今日小结 1、复习总结 1.1. 数据库基础 数据…...

unity bug

发现一个奇怪的bug,就是某些unity版本打包apk时候不允许StreamingAssets里面有中文文件或者中文路径。比如下图这面这俩都是不行的。 解决方案:中文改为英文即可。 一般报错信息如下: > Configure project :launcher WARNING:The option s…...

苹果计划2026年底前实现美版iPhone“印度造”,以减轻关税及地缘政治风险

基于 6 个来源 据多家媒体报道,苹果公司计划在2026年底前,实现在印度组装销往美国的大部分或全部iPhone手机,以减轻关税和地缘政治紧张局势带来的风险。这一目标意味着苹果需将印度的iPhone产量增加一倍以上,凸显其供应链多元化战…...

新增Webhook通知功能,文档目录树展示性能优化,zyplayer-doc 2.5.1 发布啦!

zyplayer-doc是一款适合企业和个人使用的WIKI知识库管理工具,支持在线编辑富文本、Markdown、表格、Office文档、API接口、思维导图、Drawio以及任意的文本文件,支持基于知识库的AI问答,专为私有化部署而设计,最大程度上保证企业或…...

【量化交易笔记】17.多因子的线性回归模型策略

前言 上一篇介绍了 因子的评价和分析方法,让我知道如何判断该因子的作用,以及对最终结果的影响,其最大的问题,他只能评价和分析单因子,而对多个因子,不能直接加以评价。我们自然会想到,如果是多…...

五年经验Java开发如何破局创业

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息文章目录 五年经验Java开发如何破局创业一、创业方向筛选与优劣势分析**方向1:技术教育/在线课程开发****方向2:企业级技术服务外包****方向3:技…...

定制一款国密浏览器(11):SM2算法的椭圆曲线参数定义

在国密算法中,SM2 算法是最复杂的,不仅是算法本身比较复杂,其应用场景也复杂。不管 SM2 算法本身有多复杂,作为开发者,我们需要知道的是 SM2 算法是建立在椭圆曲线算法(ECC)之上。关于 SM2 算法和椭圆曲线算法之间的关系,参考我之前的一篇文章: 解读国密非对称加密算…...

RAG技术与应用---0426

大语言模型>3.10 课程中会用到python 工具箱: faiss,modelscope,langchain,langchain_community,PyPDF2 1)大模型应用开发的三种模式 提示词没多少工作量,微调又花费时间费用,RAG是很多公司招聘用来对LLM进行应用…...

STM32的开发环境介绍

目录 STM32软件环境 Keil软件在线安装 其他软件环境安装 STM32开发的几种方式 STM32寄存器版本和库函数版本 标准外设库的作用: STM32软件环境 STM32 的集成开发环境(IDE):编辑编译软件 常见的环境: (1)KEIL&a…...

【生成式AI】从原理到实践的创造性革命

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现(文生图) 三、性能对比测试方法论量化数据对比结果分析 四、最佳实践推荐方…...

Win下Pycharm运行/调试配置脚本形参执行替换Linux下终端执行,进行调试需要注意的

Linux下终端执行 python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cpuWin下Pycharm运行/调试配置脚本形参执行 主要改红色两处 如果工作目录正确,脚本形参…...

Pytorch(无CPU搭建)+Jupyter

2024年最新最简洁深度学习环境配置:AnacondaPyTorch(CPU、GPU)VScodePycahrm_哔哩哔哩_bilibili 跟 PyCharm說再見, [VSCode] PythonJupyter 超牛逼的功能 ! 5分鐘大幅提升編碼效率~ 數據分析、AI大神必備_哔哩哔哩_bilibili...

类的高级特性与语法细节

static 静态关键字 Java中的static关键字用于修饰类的成员(属性或方法),表示“静态”的含义,即属于类本身,而非某个对象。静态成员在内存中只有一份,在类加载时初始化,生命周期贯穿程序运行始终…...

基于 RAG 的 Text2SQL 全过程的 Python 实现详解,结合 LangChain 框架实现自然语言到 SQL 的转换

什么是RAG 一、核心流程:三阶段协同 RAG的核心流程分为检索(Retrieval)、增强(Augmentation)、生成(Generation)三个阶段,形成“检索→知识整合→生成”的闭环。 1. 检索&#xff…...

使用 OpenCV 进行视觉图片调整的几种常见方法

以下是使用 OpenCV 进行视觉图片调整的几种常见方法: 调整图片大小 指定目标尺寸:使用cv2.resize()函数,通过设定目标图像的宽度和高度来调整图片大小。例如,将图片调整为 200x200 像素: import cv2 image cv2.imre…...

【特殊场景应对9】视频简历的适用场景与风险分析

写在最前 作为一个中古程序猿,我有很多自己想做的事情,比如埋头苦干手搓一个低代码数据库设计平台(目前只针对写java的朋友),比如很喜欢帮身边的朋友看看简历,讲讲面试技巧,毕竟工作这么多年,也做到过高管,有很多面人经历,意见还算有用,大家基本都能拿到想要的offe…...

Dify 1.3.0 为 LLM 节点引入了结构化输出支持

Dify 1.3.0 为 LLM 节点引入了结构化输出支持 0. 引言1. 使用方法 0. 引言 Dify 1.3.0 开始,在 LLM 节点支持结构化输出:Dify 已经为 LLM 节点引入了结构化输出支持。这意味着您的语言模型现在可以返回整齐组织且易于处理的数据。后端实现由 Nov1c444 在…...

【Linux网络】HTTP协议全解析 - 从请求响应到方法与Header

📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...

JSP实现用户登录注册系统(三天内自动登录)

JSP实现用户登录注册系统 引言 在Web开发中,用户认证是最基础且核心的功能之一。本文基于JSP技术,实现了一个包含注册、登录、自动登录(3天内)、退出等功能的用户系统,并在过程中解决了Cookie字符错误、错误信息回显…...

大数据模型现状分析

大数据模型现状分析 一、引言 在当今数字化时代,数据以前所未有的速度增长,大数据已成为推动各行业发展的核心动力。大数据模型作为挖掘数据价值的关键工具,正受到广泛关注与深入研究。通过对海量、多样且高速产生的数据进行处理和分析&…...

代码随想录算法训练营第二十八天

LeetCode题目: 509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯2444. 统计定界子数组的数目(每日一题) 其他: 今日总结 往期打卡 动态规划解题步骤: 确定递推公式确定遍历顺序记忆化搜索(确定dp数组以及下标的含义与初始化值)递推优化与空间优化 509. 斐波那契数 跳转: 5…...

HTML与安全性:XSS、防御与最佳实践

HTML 与安全性:XSS、防御与最佳实践 前言 现代 Web 应用程序无处不在,而 HTML 作为其基础结构,承载着巨大的安全责任。跨站脚本攻击(XSS)仍然是 OWASP Top 10 安全威胁之一,对用户数据和网站完整性构成严…...

三维重建(二十)——思路整理与第一步的进行

文章目录 一、整体思路二、细分三、之前存在问题四、任务安排五、第一步——找到内参并选定一种5.1 train的RTK5.2 test的RTK5.3 各选择一个5.3.1 train-185.3.2 test-193一、整体思路 这部分主要是宏观的讲一下整体框架。 从gshell里面提取核心参数,放入py3d,渲染出图片,…...

判断 ONNX 模型是否支持 GPU

🔍 判断 ONNX 模型是否支持 GPU 的几个关键点: ✅ 1. 检查模型支持的 Execution Provider 可以通过下面的代码打印出来当前模型使用了什么设备: 需要安装好:onnxruntime-gpu import onnxruntime as ort session ort.InferenceSe…...

CANFD技术在实时运动控制系统中的应用:协议解析、性能测试与未来发展趋势

摘要: 本文深入探讨了CANFD技术在实时运动控制系统中的应用。通过对传统CAN协议与CANFD协议的对比分析,详细阐述了CANFD在提升数据传输效率、增强系统实时性与稳定性方面的优势。文章结合具体测试案例,对CANFD总线的性能指标进行了全面评估&a…...

Java基础 4.26

1.访问修饰符细节 package com.logic.modifier;public class A {public int n1 100;protected int n2 200;int n3 300;private int n4 400;public void m1() {//在同一个类中 可以访问public protected 默认 private 修饰属性和方法System.out.println(n1 " " …...

山东大学离散数学第九章习题解析

参考教材:离散数学教程,徐秋亮 / 栾俊峰 / 卢雷 / 王慧 / 赵合计 编著,山东大学计算机科学与技术学院 注:该解析为个人所写,涵盖了 2022-2023-2 学期赵合计老师所布置的所有课本习题;由于学识、认识及经验…...

5G融合消息PaaS项目深度解析 - Java架构师面试实战

5G融合消息PaaS项目深度解析 - Java架构师面试实战 场景:互联网大厂Java求职者面试,面试官针对5G融合消息PaaS项目进行提问。 第一轮提问 面试官:马架构,请简要介绍5G融合消息PaaS平台的核心功能和应用场景。 马架构&#xff…...

React-Redux

1、安装 npm i redux react-redux reduxjs/toolkit 2、基础使用方式(无 Toolkit) (1)核心Api createStore:创建数据仓库;store.dispatch():用于派发action,执行修改动作&#xf…...

Linux基础篇、第4章_03系统磁盘高级管理LVM 逻辑卷管理器

题目:系统磁盘高级管理LVM 逻辑卷管理器 版本号: 1.0,0 作者: 老王要学习 日期: 2025.04.26 适用环境: Centos7 文档说明 本文档聚焦于 Centos7 系统下的磁盘高级管理,围绕 LVM 逻辑卷管理器展开。详细介绍了物理卷、卷组和逻辑卷的创建、管理与删除操…...

代码随想录算法训练营Day36

力扣1049.最后一块石头的重量Ⅱ【medium】 力扣474.一和零【meidum】 一、力扣1049.最后一块石头的重量Ⅱ【medium】 题目链接:力扣1049.最后一块石头的重量Ⅱ 视频链接:代码随想录 1、思路 把这个问题转换成尽可能将 stones 分成两个等分子集&#xf…...

iperf网络性能测试

iperf 是一个网络性能测试工具,用于测量网络带宽、延迟、抖动等性能指标。它支持 TCP 和 UDP 协议,可以在客户端和服务器模式下运行,广泛用于网络性能评估和故障排查。 主要功能 带宽测试:测量网络的最大可用带宽。延迟测试&…...

基于 Nginx 的 WebSocket 反向代理实践

一、HTTP 协议升级机制回顾 Upgrade/Connection 报头 客户端发起 WebSocket 握手时&#xff0c;会在普通 HTTP 请求中加入Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: <随机值> Sec-WebSocket-Version: 13服务端若接受协议切换&#xff0c;会以 101 Swit…...

C++ 同步原语

同步原语&#xff08;Synchronization Primitives&#xff09;是操作系统和编程语言提供的基本工具&#xff0c;用于在多线程或并发环境中协调线程&#xff08;或进程&#xff09;之间的执行顺序&#xff0c;管理共享资源的访问&#xff0c;以避免数据竞争&#xff08;data rac…...

mmap详解

mmap详解 mmap基础概念mmap内存映射原理mmap相关函数调用mmap的使用细节mmap和常规文件操作的区别 mmap基础概念 mmap是一种内存映射文件的方法&#xff0c;即将一个文件或者其它对象映射到进程的地址空间&#xff0c;实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一…...

基于大模型底座重构司法信息系统

前置篇章&#xff1a;法律智能体所需的基础知识 构建一个高效的法律智能体&#xff0c;特别是在基于RAG&#xff08;Retrieval-Augmented Generation&#xff09;架构的背景下&#xff0c;需要融合多种学科和领域的知识。以下是对法律智能体开发和应用所需核心基础知识的简要介…...

如何判断你的PyTorch是GPU版还是CPU版?

如何判断你的PyTorch是GPU版还是CPU版&#xff1f; PyTorch作为当前最流行的深度学习框架之一&#xff0c;支持在CPU和GPU(NVIDIA CUDA)上运行。对于深度学习开发者来说&#xff0c;正确识别PyTorch版本至关重要&#xff0c;因为GPU版本可以带来10-100倍的性能提升。本文将全面…...

Leetcode刷题记录19——无重复字符的最长子串

题源&#xff1a;https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/?envTypestudy-plan-v2&envIdtop-100-liked 题目描述&#xff1a; 思路一&#xff1a; 通过两个指针&#xff0c;第一个指针指向字串的开头&#xff0c;第二…...

SpringBoot程序的创建以及特点,配置文件,LogBack记录日志,配置过滤器、拦截器、全局异常

一、创建一个SpringBoot程序 在之前写过一篇如何创建SpringBoot程序&#xff0c;两种方式&#xff0c;方法1&#xff1a;通过maven创建SpringBoot项目 方法2&#xff1a;使用Spring Initialzr创建一个SpringBoot项目&#xff08;缺点&#xff1a;当创建项目时网络中断&#x…...

Ubuntu20.04 Ollama 配置相关

Ubuntu20.04 Ollama 配置相关 Ubuntu20.04 Ollama 配置相关ollama修改配置文件常用命令修改端口局域网访问 Ubuntu20.04 Ollama 配置相关 ollama修改配置文件常用命令 sudo gedit /etc/systemd/system/ollama.service systemctl daemon-reload systemctl restart ollama sys…...

python调用ffmpeg对截取视频片段,可批量处理

本文完全免费&#xff0c;非VIP文章&#xff0c;如果您发现需VIP可看全文&#xff0c;请邮箱联系我&#xff1a;openwebsitefoxmail.com 文章目录 python调用ffmpeg对截取视频片段&#xff0c;可批量处理用到的ffmpeg命令python调用bash指令的方法python处理代码准备函数python…...

【WLAN】华为无线AC双机热备负载分担—双链路热备份

配套实验拓扑可以下载学习交流&#xff1a;【WLAN】华为无线AC双机负载分担—双链路热备份 双链路备份的传统配置方式是在主、备AC上为AP指定对方AC的IP地址&#xff0c;并分别配置优先级&#xff0c;通过比较优先级的方式来确定主、备AC。为简化配置逻辑&#xff0c;新配置方式…...