JavaWeb酒店管理系统(详细版)

news2024/11/16 15:48:51

在这里插入图片描述

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:前端案例分享专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:JavaWeb酒店管理系统(详细版)

文章目录

    • 一、环境版本
      • 1、数据库设计(MySQL 5.7):
      • 2、后端开发(Java):
      • 3、前端开发:
      • 4、集成开发工具(Eclipse IDE for Java EE Developers):
    • 二、数据库设计
      • 1、新建数据库
      • 2、建表
      • 3、初始化数据
      • 4、创建日志记录表
      • 5、创建触发器
      • 6、添加索引
      • 7、存储过程
    • 三、Web应用开发
      • 1、创建JavaWeb项目
      • 2、BaseDao单例模式
      • 3、登录功能
        • 3.1 登录页面
        • 3.2 登录逻辑(使用Servlet处理登录请求)
      • 4、展示信息
        • 4.1 列表界面(使用JSP展示酒店列表)
        • 4.2 列表逻辑(使用Servlet处理登录请求)
      • 5、添加功能
        • 5.1 添加页面(使用JSP编写)
        • 5.2 添加逻辑(使用Servlet处理添加请求)
      • 6、修改功能
        • 6.1 修改页面(使用JSP编写)
        • 6.2 修改逻辑(使用Servlet处理修改请求)
      • 7、注释
    • 四、示例输入和输出

在这里插入图片描述

一、环境版本

1、数据库设计(MySQL 5.7):

  • 数据库包括三个表:HotelBrand(酒店品牌表)、HotelStar(酒店星级表)和Hotel(酒店表)。
  • HotelBrand表存储酒店品牌信息,HotelStar表存储酒店星级信息,Hotel表存储具体酒店的信息。
  • Hotel表中的BrandID和StarID分别作为外键,关联到HotelBrand表和HotelStar表中的对应主键。

2、后端开发(Java):

  • 在后端开发中,您需要编写Java类来处理数据库操作,包括连接数据库、查询数据、插入数据等。
  • 您可以使用JDBC来连接MySQL数据库,并编写SQL语句来执行数据库操作,如插入新酒店信息、查询特定品牌的酒店等。

3、前端开发:

  • 在前端开发中,您可以根据数据库中的数据表结构设计合适的界面,展示酒店品牌、星级和具体酒店信息。
  • 可以使用HTML、CSS和JavaScript来构建前端界面,通过后端提供的数据接口来动态展示数据。

4、集成开发工具(Eclipse IDE for Java EE Developers):

  • 使用Eclipse IDE来编写和调试Java代码,同时集成Tomcat 9作为Web服务器来运行和测试您的Web应用程序。
  • 您可以在Eclipse中创建Java Servlet来处理HTTP请求,并将数据库操作集成到Servlet中,实现与数据库的交互。

二、数据库设计

1、新建数据库

CREATE DATABASE HotelManagement;

2、建表

在数据库设计中,满足三大范式是非常重要的,可以确保数据库结构的合理性和数据的一致性。同时,使用约束可以帮助确保数据的完整性和准确性。下面我将详细阐述如何设计表满足三大范式,并使用主键约束和外键约束:

  • 第一范式(1NF):
    • 确保每个列都是原子的,不可再分。在建表时,确保每个字段都是不可再分的最小数据单元,不包含重复的数据。
    • 例如,在酒店表(Hotel)中,每个字段应该是原子的,如Name字段只存储酒店名称,Price字段只存储价格。
  • 第二范式(2NF):
    • 确保表中的非主键列完全依赖于主键,而不是部分依赖。如果有部分依赖的情况,需要将其拆分成单独的表。
    • 在建表时,将数据分解成多个表,确保每个表中的非主键列都完全依赖于主键。
    • 例如,在酒店表(Hotel)中,BrandID和StarID应该完全依赖于HotelID,如果存在部分依赖的情况,需要进行拆分。
  • 第三范式(3NF):
    • 确保表中的非主键列之间没有传递依赖关系,即不存在传递依赖。如果存在传递依赖,需要进一步拆分表。
    • 在建表时,确保每个非主键列都直接依赖于主键,而不是依赖于其他非主键列。
    • 例如,在酒店表(Hotel)中,如果存在非主键列之间的传递依赖,需要将其拆分成独立的表以消除这种依赖关系。
  • 约束使用:
    • 主键约束:在每个表中定义一个主键,用于唯一标识每条记录。主键可以确保表中的每条记录都具有唯一性。
    • 外键约束:在表之间建立关联时,使用外键约束来确保参照完整性。外键约束可以确保在一个表中的外键值必须在另一个表的主键中存在。
    • 在您的数据库设计中,可以使用主键约束来定义主键字段(如HotelID、BrandID、StarID),并使用外键约束来建立表之间的关联关系(如Hotel表中的BrandID和StarID与HotelBrand表和HotelStar表中的对应主键关联)。

通过满足三大范式和使用主键约束、外键约束,您可以设计出结构合理、数据完整的数据库表,确保数据的一致性和准确性。

酒店表(Hotel)

CREATE TABLE HotelBrand (
    BrandID INT PRIMARY KEY AUTO_INCREMENT,
    BrandName VARCHAR(255) NOT NULL
);

酒店星级表(HotelStar)

CREATE TABLE HotelStar (
    StarID INT PRIMARY KEY,
    StarLevel INT NOT NULL
);

酒店品牌表(HotelBrand)

CREATE TABLE Hotel (
    HotelID INT PRIMARY KEY AUTO_INCREMENT,
    BrandID INT,
    StarID INT,
    Name VARCHAR(255) NOT NULL,
    Price DECIMAL(10, 2),
    FOREIGN KEY (BrandID) REFERENCES HotelBrand(BrandID),
    FOREIGN KEY (StarID) REFERENCES HotelStar(StarID)
);

3、初始化数据

批量插入酒店数据

INSERT INTO Hotel (BrandID, StarID, Name, Price) VALUES
(1, 5, '五星级酒店A', 1200.00),
(2, 4, '四星级酒店B', 800.00),
(1, 5, '五星级酒店C', 1500.00),
(3, 3, '三星级酒店D', 500.00),
(2, 4, '四星级酒店E', 750.00);

4、创建日志记录表

CREATE TABLE OperationLog (
    LogID INT PRIMARY KEY AUTO_INCREMENT,
    UserID INT,
    OperationType VARCHAR(50),
    OperationTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (UserID) REFERENCES Hotel (HotelID)
);

5、创建触发器

DELIMITER //
CREATE TRIGGER AfterHotelUpdate
AFTER UPDATE ON Hotel
FOR EACH ROW
BEGIN
    INSERT INTO OperationLog (UserID, OperationType)
    VALUES (NEW.HotelID, CONCAT('Updated: ', NEW.Name));
END;
//
DELIMITER ;

6、添加索引

CREATE INDEX idx_hotel_name ON Hotel (Name) USING BTREE;

7、存储过程

DELIMITER //
CREATE PROCEDURE AddHotel(IN brandID INT, IN starID INT, IN name VARCHAR(255), IN price DECIMAL(10, 2))
BEGIN
    INSERT INTO Hotel (BrandID, StarID, Name, Price) VALUES (brandID, starID, name, price);
END;
//
DELIMITER ;

三、Web应用开发

1、创建JavaWeb项目

在创建JavaWeb项目并导入相关JAR包时,您需要遵循一系列步骤来确保项目的顺利开发和运行。下面我将详细阐述如何创建JavaWeb项目并导入常用的JAR包(如Servlet、JDBC、JSTL等):

  • 创建JavaWeb项目:
    • 打开Eclipse IDE,选择“File” -> “New” -> “Dynamic Web Project”来创建一个新的JavaWeb项目。
    • 输入项目名称和选择合适的目标运行时环境(如Apache Tomcat 9),然后点击“Finish”来创建项目。
  • 导入相关JAR包:
    • Servlet JAR包:Servlet是用于处理HTTP请求和生成动态内容的Java类。您可以在Apache官网下载Servlet API的JAR包(如servlet-api.jar)。
    • 将下载的Servlet JAR包复制到项目的WebContent/WEB-INF/lib目录下。
    • JDBC JAR包:JDBC用于连接数据库并执行SQL操作。您可以在MySQL官网下载MySQL Connector/J的JAR包。
    • 将下载的JDBC JAR包也复制到项目的WebContent/WEB-INF/lib目录下。
    • JSTL JAR包:JSTL(JavaServer Pages Standard Tag Library)是用于在JSP页面中编写更简洁的代码的标签库。您可以在Apache标准标签库的官网下载JSTL的JAR包。
    • 同样,将下载的JSTL JAR包复制到项目的WebContent/WEB-INF/lib目录下。
  • 配置项目构建路径:
    • 在Eclipse中右键单击项目,选择“Properties” -> “Java Build Path” -> “Libraries”选项卡。
    • 点击“Add JARs”按钮,选择刚刚导入的JAR包,以将它们添加到项目的构建路径中。
  • 编写代码:
    • 开发Servlet类来处理HTTP请求和与数据库交互。
    • 编写JSP页面来生成动态内容并展示数据。
  • 部署和运行项目:
    • 将项目部署到Tomcat服务器上,启动Tomcat服务器并访问项目的URL来查看Web应用程序运行情况。

2、BaseDao单例模式

public class BaseDao {
    private static BaseDao instance;
    private Connection conn;
 
    private BaseDao() {
        // 初始化数据库连接
    }
 
    public static synchronized BaseDao getInstance() {
        if (instance == null) {
            instance = new BaseDao();
        }
        return instance;
    }
 
    public Connection getConnection() {
        return conn;
    }
}

3、登录功能

3.1 登录页面
<!DOCTYPE html>
<html>
<head>
    <title>登录页面</title>
</head>
<body>
    <h2>用户登录</h2>
    
    <%-- 显示错误信息 --%>
    <c:if test="${not empty error}">
        <p style="color: red;">${error}</p>
    </c:if>
    
    <form action="login" method="post">
        <label for="username">用户名:</label>
        <input type="text" id="username" name="username" required><br><br>
        
        <label for="password">密码:</label>
        <input type="password" id="password" name="password" required><br><br>
        
        <input type="submit" value="登录">
    </form>
</body>
</html>

在上面的代码中,我添加了一个用于显示错误信息的部分,并使用JSTL标签库来实现。具体优化包括:

  • <c:if> 标签用于判断是否存在错误信息,如果存在则显示红色的错误提示。
  • ${error} 用于显示具体的错误信息,这个信息是在Servlet中设置的。
  • 表单的 action 属性指向了Servlet的URL,确保提交表单时数据发送到正确的地方。
3.2 登录逻辑(使用Servlet处理登录请求)
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        // 验证用户名和密码
        if (validateUser(username, password)) {
            request.getSession().setAttribute("username", username);
            response.sendRedirect("hotelList.jsp");
        } else {
            request.setAttribute("error", "用户名不存在/密码错误");
            request.getRequestDispatcher("login.jsp").forward(request, response);
        }
    }
 
    private boolean validateUser(String username, String password) {
        // 这里添加验证逻辑
        return true;
    }
}

4、展示信息

4.1 列表界面(使用JSP展示酒店列表)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>酒店列表</title>
</head>
<body>
    <h2>酒店列表</h2>
    
    <table border="1">
        <tr>
            <th>酒店名称</th>
            <th>价格</th>
            <th>星级</th>
        </tr>
        <c:forEach var="hotel" items="${hotels}">
            <tr>
                <td>${hotel.name}</td>
                <td>${hotel.price}</td>
                <td>${hotel.starLevel}</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

在上面的代码中:

  • 使用 <c:forEach> 标签遍历名为 hotels 的列表,该列表包含要展示的酒店信息。
  • ${hotel.name}、${hotel.price} 和 ${hotel.starLevel} 分别显示每个酒店的名称、价格和星级。
  • 通过在Servlet中将酒店信息存储在 hotels 属性中,并将其传递到该JSP页面,以便在页面上动态展示酒店列表信息。
4.2 列表逻辑(使用Servlet处理登录请求)
@WebServlet("/hotelList")
public class HotelListServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 模拟从数据库中获取酒店列表数据
        List<Hotel> hotels = getHotelListFromDatabase();
        
        // 将酒店列表数据存储在request属性中
        request.setAttribute("hotels", hotels);
        
        // 转发到展示酒店列表的JSP页面
        RequestDispatcher dispatcher = request.getRequestDispatcher("hotelList.jsp");
        dispatcher.forward(request, response);
    }
    
    private List<Hotel> getHotelListFromDatabase() {
        // 模拟从数据库中获取酒店列表数据的逻辑
        List<Hotel> hotels = new ArrayList<>();
        hotels.add(new Hotel("Hotel A", 100, "5-star"));
        hotels.add(new Hotel("Hotel B", 80, "4-star"));
        hotels.add(new Hotel("Hotel C", 120, "5-star"));
        return hotels;
    }
}

5、添加功能

5.1 添加页面(使用JSP编写)
<!DOCTYPE html>
<html>
<head>
    <title>添加酒店信息</title>
</head>
<body>
    <h2>添加酒店信息</h2>
    
    <form action="addHotel" method="post">
        <label for="name">酒店名称:</label>
        <input type="text" id="name" name="name" required><br><br>
        
        <label for="price">价格:</label>
        <input type="text" id="price" name="price" required><br><br>
        
        <label for="starLevel">星级:</label>
        <input type="text" id="starLevel" name="starLevel" required><br><br>
        
        <input type="submit" value="添加">
    </form>
</body>
</html>

5.2 添加逻辑(使用Servlet处理添加请求)
@WebServlet("/addHotel")
public class AddHotelServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        int price = Integer.parseInt(request.getParameter("price"));
        String starLevel = request.getParameter("starLevel");
        
        // 在实际应用中,这里可以将酒店信息保存到数据库中
        
        // 重定向到酒店列表页面
        response.sendRedirect("hotelList");
    }
}

在上面的代码中:

  • addHotel.jsp 页面包含一个表单,用户可以输入酒店名称、价格和星级信息。
  • AddHotelServlet Servlet 接收表单提交的数据,将酒店信息保存到数据库(在实际应用中),然后重定向到展示酒店列表的页面。

6、修改功能

6.1 修改页面(使用JSP编写)
<!DOCTYPE html>
<html>
<head>
    <title>修改酒店信息</title>
</head>
<body>
    <h2>修改酒店信息</h2>
    
    <form action="editHotel" method="post">
        <label for="name">酒店名称:</label>
        <input type="text" id="name" name="name" value="${hotel.name}" required><br><br>
        
        <label for="price">价格:</label>
        <input type="text" id="price" name="price" value="${hotel.price}" required><br><br>
        
        <label for="starLevel">星级:</label>
        <input type="text" id="starLevel" name="starLevel" value="${hotel.starLevel}" required><br><br>
        
        <input type="hidden" name="hotelId" value="${hotel.id}">
        <input type="submit" value="修改">
    </form>
</body>
</html>

6.2 修改逻辑(使用Servlet处理修改请求)
@WebServlet("/editHotel")
public class EditHotelServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int hotelId = Integer.parseInt(request.getParameter("hotelId"));
        String name = request.getParameter("name");
        int price = Integer.parseInt(request.getParameter("price"));
        String starLevel = request.getParameter("starLevel");
        
        // 在实际应用中,根据hotelId更新数据库中对应的酒店信息
        
        // 重定向到酒店列表页面
        response.sendRedirect("hotelList");
    }
}

在上面的代码中:

  • editHotel.jsp 页面包含一个表单,显示当前酒店信息并允许用户修改。
  • EditHotelServlet Servlet 接收表单提交的数据,根据酒店ID更新数据库中对应的酒店信息,然后重定向到展示酒店列表的页面。

7、注释

在类和方法以及重要代码中添加注释。

当为Java类和方法添加注释时,通常遵循以下几个原则:

  • 在类的顶部添加类级注释,描述类的作用、功能和重要信息。
  • 在方法的前面添加方法级注释,描述方法的作用、参数、返回值和可能的异常。
  • 在重要的代码块或逻辑部分添加行级注释,解释代码的目的和实现细节。

以下是一个示例,展示如何为类和方法添加注释:

@WebServlet("/editHotel")
public class EditHotelServlet extends HttpServlet {
    
    /**
     * 处理POST请求,用于修改酒店信息
     * @param request HTTP请求对象
     * @param response HTTP响应对象
     * @throws ServletException Servlet异常
     * @throws IOException IO异常
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获取表单提交的数据
        int hotelId = Integer.parseInt(request.getParameter("hotelId"));
        String name = request.getParameter("name");
        int price = Integer.parseInt(request.getParameter("price"));
        String starLevel = request.getParameter("starLevel");
        
        // 在实际应用中,根据hotelId更新数据库中对应的酒店信息
        
        // 重定向到酒店列表页面
        response.sendRedirect("hotelList");
    }
}

在上面的代码中,我们为 EditHotelServlet 类添加了类级注释,描述了类的作用。同时,在 doPost() 方法前添加了方法级注释,描述了方法的作用和参数。在代码中也添加了行级注释,解释了关键代码块的作用。

四、示例输入和输出

示例输入:

  • 用户名:example_user
  • 密码:example_password

示例输出:

  • 如果输入的用户名和密码与系统中的匹配:
  • 登录成功,跳转到酒店列表页面。
  • 如果输入的用户名或密码不匹配:
  • 登录失败,显示错误信息,例如:“用户名不存在/密码错误”。

  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

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

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

相关文章

QT 界面编程中使用协程

QT 界面编程中使用协程 一、概述二、集成2.1、编译 Acl2.2、将 Acl 库集成到 QT 项目中2.3、开始编写代码2.3.1、QT 程序初始化时初始化 Acl 协程2.3.2、在界面中创建协程2.3.3、界面程序退出前需要停止协程调度2.3.4、在界面线程中下载数据2.3.5、在协程中延迟创建窗口 2.4、效…

8642 快速排序

### 思路 快速排序是一种分治算法&#xff0c;通过选择一个基准元素将数组分成两部分&#xff0c;然后递归地对每部分进行排序。每次分区后输出当前排序结果。 ### 伪代码 1. 读取输入的待排序关键字个数n。 2. 读取n个待排序关键字并存储在数组中。 3. 对数组进行快速排序&am…

HarmonyOS/OpenHarmony 自定义弹窗页面级层级控制解决方案

关键词&#xff1a;CuntomDialog自定义弹窗、SubWindow子窗口、页面级、弹窗层级控制、鸿蒙、弹窗展示层级异常 问题存在API版本&#xff1a;API10 - API12&#xff08;该问题已反馈&#xff0c;期望后续官方能增加页面级控制能力&#xff09; 在正常的鸿蒙app开发过程中&…

【Linux】命令管道

一、命名管道的介绍 之前的管道博客中介绍的是匿名管道&#xff0c;这个管道的应用的一个限制就是只能在具有公共祖先&#xff08;具有亲缘关系&#xff09;的进程间通信。 如果我们不想在不相关的进程之间交换数据&#xff0c;可以使用FIFO文件来做这项工作&#xff0c;他经常…

Arduino UNO R3自学笔记6 之 Arduino引脚(IO)功能介绍

注意&#xff1a;学习和写作过程中&#xff0c;部分资料搜集于互联网&#xff0c;如有侵权请联系删除。 前言&#xff1a;Ardunio UNO R3有很多引脚&#xff0c;接下来主要介绍它们都可以用做什么。 从上图不难看出开发板引脚也不是有多少&#xff0c;分类来看也就以下种类型&…

C语言、Eazy_X——五子棋

//五子棋#include<graphics.h>#define board_size 20 #define pixel 600 int pr pixel / board_size; char board_data[board_size][board_size]; char current_piece o; int count 0;//检测指定玩家是否获胜 bool CheckWin(char c) {int i, j;//检查行for (i 0; i &…

位运算(6)_只出现一次的数字 II

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 位运算(6)_只出现一次的数字 II 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 …

自动驾驶系列—解析自动驾驶汽车的“大脑”:电子电气架构详解与选型指南

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

【折半查找】

目录 一. 折半查找的概念二. 折半查找的过程三. 折半查找的代码实现四. 折半查找的性能分析 \quad 一. 折半查找的概念 \quad 必须有序 \quad 二. 折半查找的过程 \quad \quad 三. 折半查找的代码实现 \quad 背下来 \quad 四. 折半查找的性能分析 \quad 记住 比较的是层数 …

python如何显示数组

np.set_printoptions方法的相关属性&#xff1a; <span style"background-color:#272822"><span style"color:#f8f8d4">set_printoptions(precisionNone, thresholdNone, edgeitemsNone, linewidthNone, suppressNone, nanstrNone, infstrNo…

【论文精度——长尾问题】Long-Tailed Learning as Multi-Objective Optimization

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;论文精读_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. Abstract …

Python数据分析篇--NumPy--进阶

人有一种天生的、难以遏制的欲望&#xff0c;那就是在理解之前就评判。 -- 米兰昆德拉 多维数组 1. 一维数组只有行&#xff0c;二维数组相比一维数组多了列这个维度&#xff0c;而三维数组则类似多个二维数组堆叠在一起&#xff0c;形如一个立方体。 二维数组的创建 1. 二…

Java中的顺序控制、分支控制、嵌套分支if-else

if-else 顺序控制分支控制if-else单分支1.基本语法2.说明&#xff1a;3.案例说明4.流程图 双分支1.基本语法2.说明&#xff1a;3.案例说明4.流程图5.练习 多分支1.基本语法2.说明&#xff1a;3.流程图4.练习 嵌套分支1.基本介绍2.基本语法3.练习 顺序控制 1.介绍&#xff1a;程…

CMake所学

向大佬lyf学习&#xff0c;先把其8服务器中所授fine 文章目录 前言一、CMakeList.txt 命令1.1 最外层CMakeLists1.1.1 cmake_minimum_required&#xff08;&#xff09;1.1.2 project&#xff08;&#xff09;1.1.3 set&#xff08;&#xff09;1.1.4 add_subdirectory&#xf…

小红书制作视频如何去原视频音乐,视频如何去原声保留背景音乐?

在视频编辑、音乐制作或个人娱乐中&#xff0c;有时我们希望去掉视频中的原声&#xff08;如对话、解说等&#xff09;&#xff0c;仅保留背景音乐。这种处理能让观众更加聚焦于视频的氛围或节奏&#xff0c;同时也为创作者提供了更多创意空间。选择恰当的背景音乐&#xff0c;…

【tower-boot 系列】开源RocketMQ和阿里云rockerMq 4.x和5.x集成 (一)

RocketMQ 简单介绍 阿里云rockerMq 4.x和5.x集成 一、云平台创建实例 参考文档&#xff1a; 阿里云api 阿里云 创建实例 二、skd集成思路 公司用的RocketMQ一般是自建开源apache的RocketMQ和上阿里云的RocketMQ&#xff0c;目前阿里云支持4.x和5.x版本 项目集成思路&…

【MAUI】CollectionView之 垂直网格

App主页或者导航页面中动态按钮的垂直网格布局 在 XAML 中,CollectionView 可以通过将其 ItemsLayout 属性设置为 VerticalGrid,在垂直网格中显示其项: <CollectionView ItemsSource="{Binding Monkeys}"ItemsLayout

链表面试编程题

1. 删除链表中等于给定值 val 的所有节点。 203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 2. 反转一个单链表。206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 3. 给定一个带有头结点 head 的非空单链表&#xff0c;返回链表的中间结点。如果有两个中间…

FOCShield v2.0.4原理图

1.FOCShield v2.0.4原理图,开源原文件用AD制作。用 AD09可以打开。 主要部分为 1.电机驱动芯片部分 2.电流采样部分

2024 全新体验:国学心理 API 接口来袭

在当今快节奏的生活中&#xff0c;人们对于心理健康越来越重视。而研究发现&#xff0c;国学心理学乃至传统文化中的思想智慧&#xff0c;对于人们的心理健康有着独特且深远的影响。为了让更多人能够体验到国学心理的魅力&#xff0c;2024年全新推出的国学心理 API 接口&#x…