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

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

在这里插入图片描述

✅作者简介: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
BEGININSERT 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))
BEGININSERT 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知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

相关文章:

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

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

C++ | 定长内存池 | 对象池

文章目录 C | 定长内存池 | 对象池一、内存池的引入二、代码中的内存池实现 - ObjectPool类&#xff08;一&#xff09;整体结构&#xff08;二&#xff09;内存分配 - New函数&#xff08;三&#xff09;内存回收 - Delete函数 三、内存池在TreeNode示例中的性能测试演示四、脱…...

python画图|自制渐变柱状图

在前述学习过程中&#xff0c;我们已经通过官网学习了如何绘制渐变的柱状图及其背景。 掌握一门技能的最佳检验方式就是通过实战&#xff0c;因此&#xff0c;本文尝试做一些渐变设计。 前述学习记录可查看链接&#xff1a; Python画图|渐变背景-CSDN博客 【1】柱状图渐变 …...

基于RPA+BERT的文档辅助“悦读”系统 | OPENAIGC开发者大赛高校组AI创作力奖

在第二届拯救者杯OPENAIGC开发者大赛中&#xff0c;涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到&#xff0c;我们特意开设了优秀作品报道专栏&#xff0c;旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者&#xff0c;希望能带给…...

K8S部署流程

一、war打包镜像(survey,analytics,trac系统) 代码打包成war准备tomcat的server.xml文件&#xff0c;修改connector中8080端口为项目的端口 修改前&#xff1a; <Connector port"8080" protocol"HTTP/1.1"connectionTimeout"20000"redirect…...

DevExpress WinForms中文教程:Data Grid - 如何添加或删除行?

本教程介绍DevExpress WinForm的Data Grid控件UI元素和API&#xff0c;它们使您和最终用户能够添加或删除数据行。您将首选学习如何启用内置的数据导航器&#xff0c;然后学习如何使用Microsoft Outlook启发的New Item行添加新记录。最后教程将向您展示基本的API&#xff0c;它…...

u盘格式化后数据能恢复吗?2024年Top4恢复神器来帮忙

在这个电脑和手机满天飞的时代&#xff0c;U盘是我们用来存东西和传文件的得力助手&#xff0c;特别重要。但是&#xff0c;有时候U盘可能会不小心被格式化了&#xff0c;里面的重要文件就不见了。那么&#xff0c;U盘格式化后的数据还能恢复吗&#xff1f;当然可以。今天会告诉…...

深度学习·Argparse

Argparse 命令行选项、参数和子命令解析器 ArgumentParser 命令行传参数->解析参数->获得对应参数 初始化&#xff1a;parser argparse.ArgumentParser(descriptionxxx)添加命令行参数&#xff1a; parser.add_argument("--training_filepath", typestr, he…...

制造企业为何需要PLM系统?PLM系统解决方案对制造业重要性分析

制造企业为何需要PLM系统&#xff1f;PLM系统解决方案对制造业重要性分析 新华社9月23日消息&#xff0c;据全国组织机构统一社会信用代码数据服务中心统计&#xff0c;我国制造业企业总量突破600万家。数据显示&#xff0c;2024年1至8月&#xff0c;我国制造业企业数量呈现稳…...

http协议中的header详细讲解

http协议中的header详细讲解 HTTP 协议和 TCP/IP 协议族内的其他众多的协议相同&#xff0c;用于客户端和服务器之间的通信。 请求访问文本或图像等资源的一端称为客户端&#xff0c;而提供资源响应的一端称为服务器端。 HTTP 协议规定&#xff0c;请求从客户端发出&#xf…...

探索后量子安全:基于格加密技术的未来密码学展望

在信息技术日新月异的今天&#xff0c;量子计算作为下一代计算技术的代表&#xff0c;正逐步从理论走向实践。量子计算的出现对现有的加密体系构成了严重威胁&#xff0c;尤其是基于大数分解和离散对数难题的传统密码学&#xff08;如RSA和Diffie-Hellman协议&#xff09;。为了…...

WPF之UI进阶--完整了解wpf的控件和布局容器及应用

前面三篇有关WPF的基础介绍&#xff0c;分别介绍了wpf与winform的异同&#xff0c;wpf的事件生成和使用以及数据绑定。但我们还缺乏一副好的“皮囊”&#xff0c;所以从这篇开始我们来开始学习wpf的UI相关的内容&#xff0c;首当其冲的就是布局容器。 其实我们知道&#xff0c;…...

unity一键注释日志和反注释日志

开发背景&#xff1a;游戏中日志也是很大的开销&#xff0c;虽然有些日志不打印但是毕竟有字符串的开销&#xff0c;甚至有字符串拼接的开销&#xff0c;有些还有装箱和拆箱的开销&#xff0c;比如Debug.Log(1) 这种 因此需要注释掉&#xff0c;当然还需要提供反注释的功能&am…...

VBA数据库解决方案第十五讲:Recordset集合中单个数据的精确处理

《VBA数据库解决方案》教程&#xff08;版权10090845&#xff09;是我推出的第二套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;是学完字典后的另一个专题讲解。数据库是数据处理的利器&#xff0c;教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…...

甄选范文“论软件需求管理”,软考高级论文,系统架构设计师论文

论文真题 软件需求管理是一个对系统需求变更了解和控制的过程。需求管理过程与需求开发过程相互关联,初始需求导出的同时就要形成需求管理规划,一旦启动了软件开发过程,需求管理活动就紧密相伴。 需求管理过程中主要包含变更控制、版本控制、需求跟踪和需求状态跟踪等4项活…...

Android Studio Dolphin 中Gradle下载慢的解决方法

我用的版本Android Studio Dolphin | 2021.3.1 Patch 1 1.Gradle自身的版本下载慢 解决办法&#xff1a;修改gradle\wrapper\gradle-wrapper.properties中的distributionUrl 将https\://services.gradle.org/distributions为https\://mirrors.cloud.tencent.com/gradle dis…...

Excel实现省-市-区/县级联

数据准备 准备省份-城市映射数据&#xff0c;如下&#xff1a; 新建sheet页&#xff0c;命名为&#xff1a;省-市数据源&#xff0c;然后准备数据&#xff0c;如下所示&#xff1a; 准备城市-区|县映射数据&#xff0c;如下&#xff1a; 新建sheet页&#xff0c;命名为&#x…...

【优化代码结构】函数的参数归一化

某些封装的函数&#xff0c;其参数具有多样性&#xff0c;会导致函数中会增加非常多的分支&#xff0c;比如下面这个 format 函数有如下几种参数方式&#xff0c;其中 formatter 会有很多种情况 date&#xff1a;日期对象formatter&#xff1a; ‘date’&#xff1a;格式化日期…...

CSS中height设置100vh和100%的区别

文章目录 CSS中height设置100vh和100%的区别一、引言二、高度设置的区别1、100%1.1、父元素高度固定1.2、父元素高度未定义 2、100vh2.1、视口高度2.2、不受父元素限制 三、总结 CSS中height设置100vh和100%的区别 一、引言 在前端开发中&#xff0c;我们经常需要设置元素的高…...

红米k60至尊版工程固件 MTK芯片 资源预览 刷写说明 与nv损坏修复去除电阻图示

红米k60至尊版机型代码为:corot。 搭载了联发科天玑9200+处理器。此固件mtk引导为MT6985。博文将简单说明此固件的一些特点与刷写注意事项。对于NV损坏的机型。展示修改校验电阻的图示。方便改写参数等 通过博文了解 1💝💝💝-----此机型工程固件的资源刷写注意事项 2…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...