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

【JAVA】Java项目实战—Java 数据库应用项目:学生信息管理系统

本项目将实现一个简单的学生信息管理系统,功能包括学生信息的录入、查询、修改和删除。通过本项目,读者将深入理解Java与数据库交互的基本原理,掌握JDBC(Java Database Connectivity)技术,以及如何构建一个简单的CRUD(创建、读取、更新、删除)应用。

1. 理论知识

1.1 Java与数据库的关系

Java通过JDBC与各种数据库进行交互。JDBC是Java提供的一个API,允许Java程序通过标准的方式连接到不同的数据库。通过JDBC,开发者可以执行SQL语句,获取结果集,并处理数据库中的数据。

1.2 数据库基本概念

  • 数据库(Database):一个有组织的数据集合,通常存储在计算机系统中。

  • 表(Table):数据库中的数据以表格的形式存储,每个表由行和列组成。

  • 记录(Record):表中的一行,表示一个具体的数据项。

  • 字段(Field):表中的一列,表示数据的某个属性。

1.3 JDBC的基本流程

  1. 加载数据库驱动:通过Class.forName()方法加载数据库驱动。

  2. 建立连接:使用DriverManager.getConnection()方法与数据库建立连接。

  3. 创建语句对象:使用Connection.createStatement()Connection.prepareStatement()创建SQL语句对象。

  4. 执行SQL语句:通过语句对象执行SQL语句。

  5. 处理结果:对查询结果进行处理。

  6. 关闭连接:释放资源,关闭连接。

##2. 项目结构

我们的学生信息管理系统将包括以下几个主要部分:

  • Student类:表示学生信息的模型。

  • StudentDAO类:数据访问对象,负责与数据库交互。

  • Main类:程序入口,提供用户界面,处理用户输入。

3. 具体实现

3.1 创建数据库和表

首先,我们需要在数据库中创建一个表来存储学生信息。以下是一个简单的SQL语句,用于创建students表:

CREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100),age INT,gender VARCHAR(10)
);

3.2 Student类

Student类用于表示学生的信息,包含学生的基本属性。

public class Student {private int id;private String name;private int age;private String gender;// 构造方法public Student(int id, String name, int age, String gender) {this.id = id;this.name = name;this.age = age;this.gender = gender;}// Getter和Setter方法public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", gender='" + gender + '\'' +'}';}
}

3.3 StudentDAO类

StudentDAO类负责与数据库进行交互,包含CRUD操作的方法。

import java.sql.*;
import java.util.ArrayList;
import java.util.List;public class StudentDAO {private Connection connection;// 构造方法,初始化数据库连接public StudentDAO() {try {// 加载数据库驱动Class.forName("com.mysql.cj.jdbc.Driver");// 建立连接connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/school", "root", "password");} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}}// 添加学生public void addStudent(Student student) {String sql = "INSERT INTO students (name, age, gender) VALUES (?, ?, ?)";try (PreparedStatement pstmt = connection.prepareStatement(sql)) {pstmt.setString(1, student.getName());pstmt.setInt(2, student.getAge());pstmt.setString(3, student.getGender());pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();}}// 查询所有学生public List<Student> getAllStudents() {List<Student> students = new ArrayList<>();String sql = "SELECT * FROM students";try (Statement stmt = connection.createStatement();ResultSet rs = stmt.executeQuery(sql)) {while (rs.next()) {Student student = new Student(rs.getInt("id"), rs.getString("name"), rs.getInt("age"), rs.getString("gender"));students.add(student);}} catch (SQLException e) {e.printStackTrace();}return students;}// 更新学生信息public void updateStudent(Student student) {String sql = "UPDATE students SET name = ?, age = ?, gender = ? WHERE id = ?";try (PreparedStatement pstmt = connection.prepareStatement(sql)) {pstmt.setString(1, student.getName());pstmt.setInt(2, student.getAge());pstmt.setString(3, student.getGender());pstmt.setInt(4, student.getId());pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();}}// 删除学生public void deleteStudent(int id) {String sql = "DELETE FROM students WHERE id = ?";try (PreparedStatement pstmt = connection.prepareStatement(sql)) {pstmt.setInt(1, id);pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();}}// 关闭连接public void close() {try {if (connection != null && !connection.isClosed()) {connection.close();}} catch (SQLException e) {e.printStackTrace();}}
}

3.4 Main类

Main类是程序的入口,提供简单的用户界面,允许用户进行操作。

import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {StudentDAO studentDAO = new StudentDAO();Scanner scanner = new Scanner(System.in);int choice;do {System.out.println("学生信息管理系统");System.out.println("1. 添加学生");System.out.println("2. 查询所有学生");System.out.println("3. 更新学生信息");System.out.println("4. 删除学生");System.out.println("5. 退出");System.out.print("请输入您的选择: ");choice = scanner.nextInt();scanner.nextLine(); // 消耗换行符switch (choice) {case 1:// 添加学生System.out.print("请输入学生姓名: ");String name = scanner.nextLine();System.out.print("请输入学生年龄: ");int age = scanner.nextInt();scanner.nextLine(); // 消耗换行符System.out.print("请输入学生性别: ");String gender = scanner.nextLine();Student student = new Student(0, name, age, gender);studentDAO.addStudent(student);System.out.println("学生添加成功!");break;case 2:// 查询所有学生List<Student> students = studentDAO.getAllStudents();System.out.println("所有学生信息:");for (Student s : students) {System.out.println(s);}break;case 3:// 更新学生信息System.out.print("请输入要更新的学生ID: ");int id = scanner.nextInt();scanner.nextLine(); // 消耗换行符System.out.print("请输入新的学生姓名: ");String newName = scanner.nextLine();System.out.print("请输入新的学生年龄: ");int newAge = scanner.nextInt();scanner.nextLine(); // 消耗换行符System.out.print("请输入新的学生性别: ");String newGender = scanner.nextLine();Student updatedStudent = new Student(id, newName, newAge, newGender);studentDAO.updateStudent(updatedStudent);System.out.println("学生信息更新成功!");break;case 4:// 删除学生System.out.print("请输入要删除的学生ID: ");int deleteId = scanner.nextInt();studentDAO.deleteStudent(deleteId);System.out.println("学生删除成功!");break;case 5:// 退出studentDAO.close();System.out.println("退出系统。");break;default:System.out.println("无效的选择,请重新输入。");}} while (choice != 5);scanner.close();}
}

4. 代码注释和解释

4.1 Student类

  • 属性id, name, age, gender分别表示学生的ID、姓名、年龄和性别。

  • 构造方法:用于初始化学生对象。

  • Getter和Setter:用于获取和设置学生的属性。

  • toString方法:重写了toString方法,方便打印学生信息。

4.2 StudentDAO类

  • 构造方法:加载数据库驱动并建立连接。

  • addStudent:使用PreparedStatement执行插入操作,防止SQL注入。

  • getAllStudents:查询所有学生,返回一个学生列表。

  • updateStudent:更新学生信息,使用PreparedStatement执行更新操作。

  • deleteStudent:根据ID删除学生。

  • close:关闭数据库连接,释放资源。

4.3 Main类

  • 用户界面:通过控制台输入,提供简单的菜单选项。

  • 选择操作:根据用户的选择调用相应的DAO方法,执行CRUD操作。

5. 总结

通过本项目的实现,读者不仅掌握了Java与数据库交互的基本知识,还了解了如何构建一个简单的CRUD应用。这个学生信息管理系统是一个基础的项目,但它为进一步学习Java EE、Spring框架等更复杂的项目打下了良好的基础。

在实际应用中,数据库操作的性能和安全性至关重要,因此在开发中应考虑使用连接池、事务管理、数据验证等技术,以提高应用的健壮性和安全性。

相关文章:

【JAVA】Java项目实战—Java 数据库应用项目:学生信息管理系统

本项目将实现一个简单的学生信息管理系统&#xff0c;功能包括学生信息的录入、查询、修改和删除。通过本项目&#xff0c;读者将深入理解Java与数据库交互的基本原理&#xff0c;掌握JDBC&#xff08;Java Database Connectivity&#xff09;技术&#xff0c;以及如何构建一个…...

中电金信携手中远海科,共启贸易金融数智新篇章

在数智化转型成为驱动经济社会高质量发展的新引擎背景下&#xff0c;“数智方案”栏目聚焦金融等国计民生重点行业场景&#xff0c;依托中电金信“源启筑基咨询引领应用重构”的产品及服务体系&#xff0c;输出市场洞察和行业解决方案、应用案例&#xff0c;旨在全面推动行业IT…...

有没有办法让爬虫更加高效,比如多线程处理?

要让Python爬虫更加高效&#xff0c;确实可以采用多线程处理。多线程可以显著提高爬虫的效率&#xff0c;因为它允许程序同时执行多个任务&#xff0c;从而减少等待时间。以下是一些提高爬虫效率的方法&#xff0c;特别是通过多线程技术&#xff1a; 1. 多线程爬虫 多线程爬虫…...

Android历史版本主要更新说明

Android 15 Android 15 继续致力于构建注重隐私和安全保护的平台&#xff0c;助您提高效率&#xff0c;同时还引入了多项新功能&#xff0c;帮您打造精美应用、卓越的媒体和相机体验&#xff0c;并提供直观的用户体验。在平板电脑和可折叠设备上更能凸显出这些优势。 Android…...

测试岗位应该学什么

以下是测试岗位需要学习的一些关键内容&#xff1a; 1. 测试理论和方法 - 了解不同类型的测试&#xff0c;如功能测试、性能测试、压力测试、安全测试、兼容性测试等。 - 掌握测试策略和测试计划的制定。 2. 编程语言 - 至少熟悉一种编程语言&#xff0c;如 Python、Java…...

华为HarmonyOS NEXT 原生应用开发: 数据持久化存储(用户首选项)的使用 token令牌存储鉴权!

Preferences 数据持久化存储 用户首选项&#xff08;Preferences&#xff09; 1. 封装 仓库工具类 ● 这里可以选择将 数据字段 key 抽取为一个静态方法&#xff0c;这里选择让用户传参&#xff0c;看起来较容易理解&#xff01; /*** 首选项 preferences - 实现数据持久化…...

【AIStarter】告别复杂转换 - MinerU整合包实现PDF到Markdown的无缝转变

在数字化时代&#xff0c;信息的传递与共享变得愈发重要。文档格式之间的转换成为了日常工作中不可或缺的一部分。为了满足用户对高效工作流程的需求&#xff0c;新版MinerU整合包应运而生&#xff0c;它不仅简化了从PDF到Markdown的转换过程&#xff0c;还为用户带来了前所未有…...

Jenkins参数化构建详解(This project is parameterized)

本文详细介绍了Jenkins中不同类型的参数化构建方法&#xff0c;包括字符串、选项、多行文本、布尔值和git分支参数的配置&#xff0c;以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法 文章目录 1. Jenkins的参数化构建1…...

服务器批量清理redis keys,无法适用客户端必须直连的情况

在 Redis 中&#xff0c;批量清理指定模式的键&#xff08;例如 memberCardData:*&#xff09;可以通过多种方法来实现。需要注意的是&#xff0c;Redis 的命令执行是单线程的&#xff0c;因此对大量键进行操作时可能会阻塞服务器。以下是几种常见的方法&#xff1a; shell K…...

单元测试SpringBoot

添加测试专用属性 加载测试专用bean Web环境模拟测试 数据层测试回滚 测试用例数据设定...

牛客网刷题 | BC126 小乐乐查找数字

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;从0至1-CSDN博客&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;C语言、C、数据结构、嵌入式、Linux&#x1f36d; &#x1f60e;本文内容&#x1f923;&#xff1a;&#x1f36d;BC1…...

Node一、fs 模块、path 模块、端口号、 http 模块、

一、Node.js了解 Node.js是一个跨平台JavaScript运行环境&#xff0c;使开发者可以搭建服务器端的JavaScript应用程序。 概念&#xff1a;使用 Node.js 编写后端程序 / 支持前端工程化 ✓ 后端程序&#xff1a;提供接口和数据&#xff0c;网页资源等 ✓ 前端工程化 &#x…...

k8s service 配置AWS nlb load_balancing.cross_zone.enabled

在Kubernetes中配置NLB&#xff08;Network Load Balancer&#xff09;的跨区域负载均衡&#xff08;cross-zone load balancing&#xff09;&#xff0c;需要使用服务注解&#xff08;service annotations&#xff09;来实现。根据AWS官方文档&#xff0c;以下是配置NLB跨区域…...

[分布式即时通讯系统] 注册类完善

我们在qss里添加err_tip样式&#xff0c;根据不同的状态做字体显示 #err_tip[statenormal]{color: green; } #err_tip[stateerr]{color: red; } 接下来项目中添加global.h和global.cpp文件&#xff0c;global.h声明repolish函数&#xff0c;global.cpp用来定义这个函数。 .h…...

C#使用HttpWebRequest下载文件

public static bool HttpDownloadFile(string downloadUrl, string localPath, log4net.ILog log) { bool bFlagDownloadFile false; //log.Debug(“HttpDownloadFile–准备以HTTP的方式下载文件&#xff0c;url:[” downloadUrl “]本地文件&#xff1a;【” localPath “…...

CentOS7环境安装php

直接安装 yum -y install php CentOS7默认安装是php5&#xff0c;现在php已有8.3版本 先查看php -v 版本 如果是低版本&#xff0c;可以删除 yum remove php yum remove php-fpm yum remove php-common 一、添加REMI存储库 yum install epel-release yum install -y …...

【Excel学习记录】04-排序和筛选

1.排序 &#xff08;1&#xff09;简单排序 不建议选中某列后进行排序 可以选中一个单元格或者整个表格→开始→编辑→排序和筛选→升序/降序 &#xff08;2&#xff09;多条件排序 可以选中一个单元格或者整个表格→开始→编辑→排序和筛选→自定义排序→指定关键字、比较内…...

Python轻松获取抖音视频播放量

现在在gpt的加持下写一些简单的代码还是很容易的&#xff0c;效率高&#xff0c;但是要有一点基础&#xff0c;不然有时候发现不了问题&#xff0c;这些都需要经验积累和实战&#xff0c;最好能和工作结合起来&#xff0c;不然很快一段时间就忘的干干净净了&#xff0c;下面就是…...

恢复删除的文件:6个免费Windows电脑数据恢复软件

数据恢复软件可帮助您从众多存储设备中恢复损坏或删除的数据。您可以使用这些文件恢复软件来检索文件、文档、视频、图片等。这些应用程序支持多种标准文件格式&#xff0c;如 PNG、RTF、PDF、HTML、JPG、MP3 等。 经过超过 75 小时的研究&#xff0c;我分析了 25 最佳免费数据…...

Go的Gin比java的Springboot更加的开箱即用?

前言 隔壁组的云计算零零后女同事&#xff0c;后文简称 云女士 &#xff0c;非说 Go 的 Gin 框架比 Springboot 更加的开箱即用&#xff0c;我心想在 Java 里面 Springboot 已经打遍天下无敌手&#xff0c;这份底蕴岂是 Gin 能比。 但是云女士突出一个执拗&#xff0c;非我要…...

Java 中枚举的 toString 方法及其字段信息展示

在 Java 编程中&#xff0c;枚举&#xff08;enum&#xff09;是一种特殊的数据类型&#xff0c;用于定义一组固定的常量。枚举类型不仅限于简单的常量定义&#xff0c;还可以包含字段、方法以及构造函数&#xff0c;从而使其具备更强的表达能力。toString 方法是 Java 中所有对…...

Python数据分析(OpenCV视频处理)

处理视频我们引入的还是numpy 和 OpenCV 的包 引入方式如下&#xff1a; import numpy as np import cv2 我们使用OpenCV来加载本地视频&#xff0c;参数就是你视频的路径就可以 #加载视频 cap cv2.VideoCapture(./1.mp4) 下面我们进行读取视频 #读取视频 flag,frame cap.re…...

DocFlow票据AI自动化处理工具:出色的文档解析+抽取能力,提升企业文档数字化管理效能

目录 财务应付 金融信贷业务 近期&#xff0c;DocFlow票据自动化产品正式上线。DocFlow是一款票据AI自动化处理工具&#xff0c;支持不同版式单据智能分类扩展&#xff0c;可选功能插件配置流程&#xff0c;满足多样业务场景。 随着全球化与信息化进程&#xff0c;企业的文件…...

python编程Day15-UnitTest框架的介绍

框架 framework为了解决一类事情的功能集合 Unittest 框架 是 Python 自带的单元测试框架 自带的, 可以直接使用, 不需要单外安装 测试人员 用来做自动化测试, 作为自动化测试的执行框架, 即 管理和执行用例的 使用原因 能够组织多个用例去执行提供丰富的断言方法能够生成测试报…...

Linux——进程控制模拟shell

1.进程创建 我们在之前的文章中介绍过进程创建的方法&#xff0c;可以通过系统调用接口fork来创建新的进程。 fork在创建完新的子进程之后&#xff0c;返回值是一个pid&#xff0c;对于父进程返回子进程的pid&#xff0c;对于子进程返回0。fork函数后父子进程共享代码&#xff…...

OpenCV的图像矫正

一、原理 图像矫正的原理是透视变换&#xff0c;下面来介绍一下透视变换的概念。 透视变换&#xff08;Perspective Transform&#xff09;基于一个4对点的映射关系&#xff08;4个源点到4个目标点&#xff09;&#xff0c;通过这些点之间的映射&#xff0c;可以计算一个变换…...

基于php求职招聘系统设计

摘要 随着社会信息化时代的到来&#xff0c;如今人们社会的生活节奏普遍加快&#xff0c;人们对于工作效率的要求也越来越高&#xff0c;企业 举办招聘会耗时耗财&#xff0c;个人参加招聘会漫无目的寻找不到“方向”&#xff0c;网络搜索工作量目的性不强&#xff0c;信息量繁…...

并行口的基本概念

单片机的并行口结构包括多个并行I/O端口&#xff0c;用于与外部设备进行并行数据传输。这些端口能够直接读写外部存储器、显示设备、打印机等外设的数据&#xff0c;是单片机与外界交互的重要通道。在深入探讨之前&#xff0c;我们先简要了解下单片机的基本概念。 单片机&…...

(六)机器学习 - 正态数据分布

正态数据分布&#xff0c;也称为高斯分布&#xff08;Gaussian distribution&#xff09;&#xff0c;是一种在统计学中非常重要的概率分布。它描述了自然和社会科学中许多现象的分布情况&#xff0c;如人的身高、体重、智商等。正态分布的图形特征是中间高、两边低&#xff0c…...

电脑系统报错找不到d3dcompiler_47.dll怎么修复?怎么预防“d3dcompiler_47.dll”文件缺失?

“d3dcompiler_47.dll”文件缺失的修复与预防策略 在日常使用电脑软件&#xff0c;尤其是运行大型游戏或图形密集型应用时&#xff0c;我们可能会遇到一些令人困惑的系统报错。其中之一便是“找不到d3dcompiler_47.dll”的错误提示。这个错误不仅影响软件的正常运行&#xff0…...

Github 2024-12-12 Go开源项目日报Top10

根据Github Trendings的统计,今日(2024-12-12统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Go Ethereum: 以太坊Go语言官方实现 创建周期:3717 天开发语言:Go协议类型:GNU Lesser General Public License v3.0Star数量:4504…...

RIP协议

介绍 路由信息协议RIP&#xff08;Routing Information Protocol&#xff09;是基于距离矢量&#xff08;Distance-Vector&#xff09;算法的路由协议&#xff0c;它是一种较为简单的内部网关协议IGP&#xff08;Interior Gateway Protocol&#xff09;。它的主要功能是帮助路…...

vue-router查漏补缺

一、动态路由匹配 1.带参数的动态路由匹配 import User from ./User.vue// 这些都会传递给 createRouter const routes [// 动态字段以冒号开始{ path: /users/:efg, component: User }, ]这种方式的路由会匹配到/users/abc或者/users/123,路径参数用冒号:表示&#xff0c;并…...

使用Flink CDC实现 Oracle数据库数据同步的oracle配置操作

使用Flink CDC实现 Oracle数据库数据同步的oracle配置操作&#xff0c;包括开启日志归档和用户授权。 flink官方参考资料&#xff1a; https://nightlies.apache.org/flink/flink-cdc-docs-master/zh/docs/connectors/flink-sources/oracle-cdc/ 操作步骤&#xff1a; 1.启用…...

mqtt.js 客户端封装

mqtt.js 客户端封装 没封装前使用 const client mqtt.connect(ws://10.10.20.9:9001) onMounted(() > {const topicList []const channelCount 12for(let i 0; i < channelCount; i) {topicList.push(/test/sendImage${i 1})}client.on(connect, () > {console…...

www.aws.training网站的账户密码如何修改

www.aws.training网站的账户密码如何修改 参加aws考试后, 账号密码如何修改呢? 是不是找了好久都找不到. 右上角, 我的账户, 点击注销. 然后会跳到页面: 点击那个网址链接, 进入新的页面,点安全: 右上角: 更改密码. 按提示来就好....

使用Python实现高性能数据存储

在数据驱动的时代&#xff0c;处理和存储海量数据已成为关键需求。高性能数据存储不仅能够确保数据的快速读写&#xff0c;还能提升系统的整体性能。Python作为一种灵活且功能强大的编程语言&#xff0c;提供了多种高效的数据存储解决方案。本文将详细介绍如何使用Python实现高…...

[已解决]nvm安装node.js 报错 拒绝访问此应用无法在你电脑上运行

报错如下&#xff1a; 出错背景&#xff1a; 心血来潮把node删掉重新安装&#xff0c;想用nvm来进行管理node 出错原因&#xff1a; npm下载失败、下载不完整 不完整的npm展示&#xff1a; 出错根本原因&#xff1a; 可能因为镜像源或者网络波动&#xff0c;导致node下载…...

图文检索(36):Decomposing Semantic Shifts for Composed Image Retrieval

Decomposing Semantic Shifts for Composed Image Retrieval 摘要方法3.1 前期准备3.2 视觉语言表示3.3 降级过程3.4 升级过程3.5 训练和推理 结论 发布时间&#xff08;2024 AAAI&#xff09; 标题&#xff1a;分解语义转换以实现组合图像检索 摘要 语义转换网络 (SSN)&…...

批量计算(Batch Processing)

批量计算&#xff08;Batch Processing&#xff09;是一种数据处理方式&#xff0c;指的是将大量任务或数据分批次进行处理&#xff0c;而不是实时处理每一个任务。这种处理方式通常在任务之间没有依赖关系时使用&#xff0c;可以大大提高计算效率和资源利用率。批量计算广泛应…...

Linux yum-config-manager命令异常

错误信息 使用 yum-config-manager命令时错误信息如下 sudo yum-config-manager \ > --add-repo \ > https://download.docker.com/linux/centos/docker-ce.repo sudo: yum-config-manager: command not found 解决办法 第一步&#xff1a; sudo yum -y install yum-u…...

【C++】关联存储结构容器-set(集合)详解

目录 一、基本概念 二、内部实现 三、常用操作 3.1 构造函数 3.2 插入操作 3.3 删除操作 3.4 查找操作 3.5 访问元素 3.6 容量操作 3.7 交换操作 四、特性 五、应用场景 结语 一、基本概念 set是C标准模板库&#xff08;STL&#xff09;中的一种关联容器&#xf…...

如何利用SPSS软件进行多组间显著性检验以abcd显示

1.SPSS软件中进行多组间的显著性检验 要在SPSS软件中进行多组间的显著性检验&#xff0c;并以abcd显示结果&#xff0c;你可以按照以下步骤操作&#xff1a; 数据准备&#xff1a; 确保你的数据已经正确输入SPSS&#xff0c;其中每行代表一个观测值&#xff0c;包含至少两列&a…...

C++ 之计时函数总结

C 之计时函数总结 总结Windows下C开发时的计时实现 1. clock() #include <time.h>   //引入头文件void main() {clock_t start, end;start clock();fun(); //需计时的函数end clock(); float t_cfloat(end-start)/CLOCKS_PER_SEC;cout << "func cos…...

仿dota2渲染--shader常见贴图含义(直观展示)

Properties {[Header(Texture)]_MainTex ("RGB:颜色 A:透贴", 2D) "white"{}_NormTex ("RGB:法线贴图", 2D) "bump" {}_MaskTex ("R:高光强度 G:边缘光强度 B:高光染色 A:高光次幂…...

NoSQL大数据存储技术测试(5)MongoDB的原理和使用

单项选择题 第1题 关于 MongoDB 集群部署下面说法不正确的是&#xff08;&#xff09; 已经不使用主从复制的模式 在实际应用场景中&#xff0c; Mongodb 集群结合复制集和分片机制 MongoDB 支持自动分片&#xff0c; 不支持手动切分 &#xff08;我的答案&#xff09; 每…...

视图、转发与重定向、静态资源处理

目录 视图 默认视图 视图机制原理 自定义视图 请求转发与重定向 静态资源处理 视图 每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性 可以通过 order 属性指定解析器的优先顺序&#xff0c;order 越小优先级越高 默认是最低优先级&#xff0c;Integer.MAX_…...

ThinkPHP 5.1 的模板布局功能

ThinkPHP 5.1 的模板布局功能&#xff0c;包括全局配置、模板标签以及动态方法布局三种方式。以下是对这三种方式的要点概括和补充&#xff0c;以便于更好地理解和使用&#xff1a; 方式一&#xff1a;全局配置方式 适用于全站使用相同布局的情况&#xff0c;配置简单且统一。…...

入门网络安全工程师要学习哪些内容【2025年寒假最新学习计划】

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 大家都知道网络安全行业很火&#xff0c;这个行业因为国家政策趋势正在大力发展&#xff0c;大有可为!但很多人对网络安全工程师还是不了解&#xff0c;不知道网…...

Redis Cluster 分片机制

Redis 集群是 Redis 提供的一种分布式实现&#xff0c;用于水平扩展数据存储能力。通过 Redis 集群&#xff0c;可以将数据分片存储在多个 Redis 节点上&#xff0c;同时提供高可用性和故障转移功能。 分片&#xff08;Sharding&#xff09;&#xff1a; Redis 集群将数据划分…...