MySQL多表查询、事务与索引的实践与应用
摘要:本文围绕MySQL数据库操作展开,通过构建部门与员工管理、餐饮业务相关的数据库表,并填充测试数据,系统地阐述了多表查询的多种方式,包括内连接、外连接和不同类型的子查询,同时介绍了事务的处理以及索引的创建、查询和删除操作。
关键词:MySQL;多表查询;事务;索引
一、引言
在数据库管理与开发过程中,多表查询、事务管理以及索引优化是提升数据处理效率和数据完整性的关键技术。本文通过实际案例详细展示这些技术在MySQL数据库中的具体应用。
二、数据准备
2.1 部门与员工表的创建及数据插入
- 部门表(
tb_dept
):用于存储部门相关信息。
CREATE TABLE tb_dept(id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',name VARCHAR(10) NOT NULL UNIQUE COMMENT '部门名称',create_time DATETIME NOT NULL COMMENT '创建时间',update_time DATETIME NOT NULL COMMENT '修改时间'
) COMMENT '部门表';INSERT INTO tb_dept (id, name, create_time, update_time) VALUES
(1, '学工部', NOW(), NOW()),
(2, '教研部', NOW(), NOW()),
(3, '咨询部', NOW(), NOW()),
(4, '就业部', NOW(), NOW()),
(5, '人事部', NOW(), NOW());
- 员工表(
tb_emp
):通过dept_id
与部门表关联,记录员工详细信息。
CREATE TABLE tb_emp (id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',password VARCHAR(32) DEFAULT '123456' COMMENT '密码',name VARCHAR(10) NOT NULL COMMENT '姓名',gender TINYINT UNSIGNED NOT NULL COMMENT '性别, 说明: 1 男, 2 女',image VARCHAR(300) COMMENT '图像',job TINYINT UNSIGNED COMMENT '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师',entrydate DATE COMMENT '入职时间',dept_id INT UNSIGNED COMMENT '部门ID',create_time DATETIME NOT NULL COMMENT '创建时间',update_time DATETIME NOT NULL COMMENT '修改时间'
) COMMENT '员工表';INSERT INTO tb_emp(id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time) VALUES
(1, 'jinyong', '123456', '金庸', 1, '1.jpg', 4, '2000 - 01 - 01', 2, NOW(), NOW()),
(2, 'zhangwuji', '123456', '张无忌', 1, '2.jpg', 2, '2015 - 01 - 01', 2, NOW(), NOW()),
-- 省略部分插入数据
(17, 'chenyouliang', '123456', '陈友谅', 1, '17.jpg', NULL, '2015 - 03 - 21', NULL, NOW(), NOW());
2.2 餐饮业务相关表的创建及数据插入
- 分类表(
category
):区分菜品分类与套餐分类。
CREATE TABLE category(id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',name VARCHAR(20) NOT NULL UNIQUE COMMENT '分类名称',type TINYINT UNSIGNED NOT NULL COMMENT '类型 1 菜品分类 2 套餐分类',sort TINYINT UNSIGNED NOT NULL COMMENT '顺序',status TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '状态 0 禁用,1 启用',create_time DATETIME NOT NULL COMMENT '创建时间',update_time DATETIME NOT NULL COMMENT '更新时间'
) COMMENT '分类';
- 菜品表(
dish
):记录菜品的各项属性,与分类表通过category_id
关联。
CREATE TABLE dish(id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',name VARCHAR(20) NOT NULL UNIQUE COMMENT '菜品名称',category_id INT UNSIGNED NOT NULL COMMENT '菜品分类ID',price DECIMAL(8, 2) NOT NULL COMMENT '菜品价格',image VARCHAR(300) NOT NULL COMMENT '菜品图片',description VARCHAR(200) COMMENT '描述信息',status TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '状态, 0 停售 1 起售',create_time DATETIME NOT NULL COMMENT '创建时间',update_time DATETIME NOT NULL COMMENT '更新时间'
) COMMENT '菜品';
- 套餐表(
setmeal
):存储套餐信息,与分类表通过category_id
关联。
CREATE TABLE setmeal(id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',name VARCHAR(20) NOT NULL UNIQUE COMMENT '套餐名称',category_id INT UNSIGNED NOT NULL COMMENT '分类id',price DECIMAL(8, 2) NOT NULL COMMENT '套餐价格',image VARCHAR(300) NOT NULL COMMENT '图片',description VARCHAR(200) COMMENT '描述信息',status TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '状态 0:停用 1:启用',create_time DATETIME NOT NULL COMMENT '创建时间',update_time DATETIME NOT NULL COMMENT '更新时间'
) COMMENT '套餐';
- 套餐菜品关联表(
setmeal_dish
):建立套餐与菜品之间的联系。
CREATE TABLE setmeal_dish(id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',setmeal_id INT UNSIGNED NOT NULL COMMENT '套餐id ',dish_id INT UNSIGNED NOT NULL COMMENT '菜品id',copies TINYINT UNSIGNED NOT NULL COMMENT '份数'
) COMMENT '套餐菜品中间表';
- 插入测试数据:向上述餐饮业务相关表插入大量测试数据,涵盖各类菜品、套餐及其关联信息。
三、多表查询操作
3.1 基本多表查询
通过连接 tb_emp
和 tb_dept
表,获取员工所属部门信息。
SELECT * FROM tb_emp, tb_dept WHERE tb_emp.dept_id = tb_dept.id;
3.2 内连接
- 隐式内连接:查询员工姓名及所属部门名称,可通过起别名提高可读性。
SELECT tb_emp.name, tb_dept.name FROM tb_emp, tb_dept WHERE tb_emp.dept_id = tb_dept.id;
SELECT e.name, d.name FROM tb_emp e, tb_dept d WHERE e.dept_id = d.id;
- 显式内连接:同样实现查询员工姓名及所属部门名称。
SELECT tb_emp.name, tb_dept.name FROM tb_emp JOIN tb_dept ON tb_emp.dept_id = tb_dept.id;
3.3 外连接
- 左外连接:获取员工表所有员工姓名及对应的部门名称,包括无部门员工。
SELECT e.name, d.name FROM tb_emp e LEFT JOIN tb_dept d ON e.dept_id = d.id;
- 右外连接:获取部门表所有部门名称及对应的员工名称,包括无员工部门。
SELECT e.name, d.name FROM tb_emp e RIGHT JOIN tb_dept d ON e.dept_id = d.id;
-- 等同于
SELECT e.name, d.name FROM tb_dept d LEFT JOIN tb_emp e ON e.dept_id = d.id;
3.4 子查询
- 标量子查询:
- 查询“教研部”的所有员工信息,先获取教研部
id
,再查询该部门员工。
- 查询“教研部”的所有员工信息,先获取教研部
SELECT id FROM tb_dept WHERE name = '教研部';
SELECT * FROM tb_emp WHERE dept_id = (SELECT id FROM tb_dept WHERE name = '教研部');
- 查询在“方东白”入职之后的员工信息,先获取方东白入职时间,再查询晚于该时间入职的员工。
SELECT entrydate FROM tb_emp WHERE name = '方东白';
SELECT * FROM tb_emp WHERE entrydate > (SELECT entrydate FROM tb_emp WHERE name = '方东白');
- 列子查询:查询“教研部”和“咨询部”的所有员工信息,先获取两个部门
id
,再查询对应部门员工。
SELECT id FROM tb_dept WHERE name = '教研部' OR name = '咨询部';
SELECT * FROM tb_emp WHERE dept_id IN (SELECT id FROM tb_dept WHERE name = '教研部' OR name = '咨询部');
- 行子查询:查询与“韦一笑”入职日期及职位都相同的员工信息,可通过两种方式实现。
SELECT entrydate, job FROM tb_emp WHERE name = '韦一笑';
-- 方式一
SELECT * FROM tb_emp WHERE entrydate = (SELECT entrydate FROM tb_emp WHERE name = '韦一笑') AND job = (SELECT job FROM tb_emp WHERE name = '韦一笑');
-- 方式二
SELECT * FROM tb_emp WHERE (entrydate, job) = (SELECT entrydate, job FROM tb_emp WHERE name = '韦一笑');
- 表子查询:查询入职日期在“2006 - 01 - 01”之后的员工信息及其部门名称,先获取符合日期条件的员工,再连接部门表获取部门名称。
SELECT * FROM tb_emp WHERE entrydate > '2006 - 01 - 01';
SELECT e.*, d.name FROM (SELECT * FROM tb_emp WHERE entrydate > '2006 - 01 - 01') e, tb_dept d WHERE e.dept_id = d.id;
3.5 餐饮业务多表查询需求
- 查询低价菜品信息:获取价格低于10元的菜品名称、价格及分类名称。
SELECT d.name, d.price, c.name
FROM dish d, category c
WHERE d.category_id = c.id AND d.price < 10;
- 查询特定价格与状态菜品信息:查询价格在10元(含)到50元(含)之间且状态为“起售”的菜品信息,包括无分类菜品。
SELECT d.name, d.price, c.name
FROM dish d LEFT JOIN category c ON d.category_id = c.id
WHERE d.price BETWEEN 10 AND 50 AND d.status = 1;
- 查询各分类最贵菜品信息:展示每个分类下最贵菜品的分类名称和价格。
SELECT c.name, MAX(d.price)
FROM dish d, category c
WHERE d.category_id = c.id
GROUP BY c.name;
- 查询特定条件分类名称:获取菜品状态为“起售”且菜品数量大于等于3的分类名称。
SELECT c.name, COUNT(*)
FROM dish d, category c
WHERE d.category_id = c.id AND d.status = 1
GROUP BY c.name
HAVING COUNT(*) >= 3;
- 查询套餐包含菜品信息:展示“商务套餐A”包含的菜品相关信息。
SELECT s.name, s.price, d.name, d.price, sd.copies
FROM setmeal s, setmeal_dish sd, dish d
WHERE s.id = sd.setmeal_id AND sd.dish_id = d.id AND s.name = '商务套餐A';
- 查询低于平均价格菜品信息:先计算菜品平均价格,再查询低于该平均价格的菜品。
SELECT AVG(price) FROM dish;
SELECT * FROM dish WHERE price < (SELECT AVG(price) FROM dish);
四、事务操作
4.1 事务处理流程
在删除部门及相关员工操作中,使用事务确保数据一致性。
-- 开启事务
START TRANSACTION;
-- 删除部门
DELETE FROM tb_dept WHERE id = 2;
-- 删除部门下的员工
DELETE FROM tb_emp WHERE dept_id = 2;
-- 提交事务
COMMIT;
-- 回滚事务(若中途出错)
ROLLBACK;SELECT * FROM tb_dept;
SELECT * FROM tb_emp;
五、索引操作
5.1 索引的创建、查询与删除
- 创建索引:为
tb_sku
表的sn
字段和tb_emp
表的name
字段创建索引。
CREATE INDEX idx_sku_sn ON tb_sku(sn);
CREATE INDEX idx_emp_name ON tb_emp(name);
- 查询索引信息:查看
tb_emp
表的索引情况。
SHOW INDEX FROM tb_emp;
- 删除索引:删除
tb_emp
表中name
字段的索引。
DROP INDEX idx_emp_name ON tb_emp;
相关文章:
MySQL多表查询、事务与索引的实践与应用
摘要:本文围绕MySQL数据库操作展开,通过构建部门与员工管理、餐饮业务相关的数据库表,并填充测试数据,系统地阐述了多表查询的多种方式,包括内连接、外连接和不同类型的子查询,同时介绍了事务的处理以及索引…...
MySQL【8.0.41版】安装详细教程--无需手动配置环境
一、MySQL 介绍 1. 概述 MySQL 是一个开源的关系型数据库管理系统,由瑞典公司 MySQL AB 开发,现属于 Oracle 旗下。它基于 SQL(结构化查询语言)进行数据管理,支持多用户、多线程操作,广泛应用于 Web 应用、…...
FRP练手:hello,world实现
方案一:使用 Flask(推荐) from flask import Flaskapp Flask(__name__)app.route(/) def hello_world():return "你好啊世界"if __name__ __main__:# 监听所有网络接口(0.0.0.0),端口 3344app.…...
Mysql | 主从复制的工作机制
主从复制的工作机制 Mysql的主从复制 从库主要是读取主库的binlog日志来完成数据同步的, binlog中存储了对数据库所有修改SQL的语句。 首先Master开启BinLog二进制的写入。Slave从库通过ip、port、账号、密码链接到Master主数据库,链接成功后从库会向主数据库获取B…...
清明之后叙
经历了漫长的冬季,春天的脚步近了,要说讲这一年的开始,绝大数人说是从春季,但是我说应该是从冬季开始,中国传统讲冬至是一阳生,冬季收藏好了,开始收敛精气,养精蓄锐,好好…...
Docker新型容器镜像构建技术,如何正确高效的编写Dockerfile
一、容器与容器镜像之间的关系 说到Docker管理的容器不得不说容器镜像,主要因为容器镜像是容器模板,通过容器镜像我们才能快速创建容器。 如下图所示: Docker Daemon通过容器镜像创建容器。 二、容器镜像分类 操作系统类 CentOSUbuntu在do…...
Starrocks的Bitmap索引和Bloom filter索引以及全局字典
写这个的主要作用是梳理一下Starrocks的索引效率以及使用场景。 Starrocks Bitmap索引 原理: Bitmap 索引是一种使用 bitmap 的特殊数据库索引。bitmap 即为一个 bit 数组,一个 bit 的取值有两种:0 或 1。 每一个 bit 对应数据表中的一行&…...
从 0 到上线:Java 项目打包 Docker 镜像全流程实战
📖 摘要 本文是一份超详细的Java项目Docker化实战手册,从环境准备到最终上线,手把手带你完成整个容器化部署流程。你将学会: Docker基础概念与核心原理如何为Java项目编写高效的Dockerfile多阶段构建优化镜像体积镜像推送与容器…...
【符号引用和直接引用是什么?有什么作用?什么场景下使用?为什么符号引用和直接引用在常量池里?】
符号引用与直接引用详解 1. 符号引用(Symbolic Reference) 定义: 符号引用是编译阶段使用的抽象标识符,通过全限定名、方法签名等符号描述目标(如类、方法、字段)。它不涉及具体内存地址,仅作为…...
ESModule和CommonJS在Node中的区别
ESModule console.log(require);//>errorconsole.log(module);//>errorconsole.log(exports);//>errorconsole.log(__filename);//>errorconsole.log(__dirname);//>error全部报错commonjs console.log(require);console.log(module);console.log(exports);co…...
阿里发布实时数字人项目OmniTalker,实时驱动技术再突破~
简介 OmniTalker 是一个由 阿里巴巴集团 Tongyi Lab(通义实验室) 开发的研究项目,专注于实时文本驱动的说话头像生成技术。该项目旨在通过文本输入生成同步的语音和视频内容,同时保留参考视频中的音视频风格。以下是关于 OmniTalk…...
Kubernetes-如何进入某POD中
Kubernetes 如何进入某POD中 工作中需要进入pod中查询比如pod 网络等问题 步骤: 1、 查询某pod, 比如该pod 为namespace test 下的 ip 为 192.168.1.100 #查询namespace 列表 #kubectl get ns #查询该ns下ip 为 192.168.1.100的pod # kubectl -n test get pods …...
java导出postgis空间数据几何对象shapefile文件
项目开发中,需要java后端实现导出postgis空间数据几何对象shapefile文件,以便能直观查看数据详情。注意事项Shapefile 默认的几何字段名为 the_geom,若导出时未显式指定或字段名被修改,部分软件(如 ArcGIS、QGI&#x…...
蓝桥杯嵌入式按键长按双击
直接上代码这个代码里面我们简单实现了如果按键按下时间超过0.8秒K1的值增加,短按只增加一次,按键2长按K2值增加,按键3双击K1的值减1,按键4双击K2的值减1 #include "fun.h" #define long_press_time 800//定义长按时间…...
深入解析Java中的栈:从JVM原理到开发实践
一、栈的双重身份:JVM运行时数据区 vs 数据结构 1. JVM层面的栈 线程私有:每个线程独立拥有自己的栈 LIFO结构:后进先出的方法调用模型 栈帧存储:每个方法对应一个栈帧(Stack Frame) 2. 数据结构中的栈…...
408 计算机网络 知识点记忆(6)
前言 本文基于王道考研课程与湖科大计算机网络课程教学内容,系统梳理核心知识记忆点和框架,既为个人复习沉淀思考,亦希望能与同行者互助共进。(PS:后续将持续迭代优化细节) 往期内容 408 计算机网络 知识…...
从ETL到ELT:大数据时代下两者的选型建议及优势
随着大数据时代的到来,数据量呈爆炸式增长,数据类型日益复杂,ETL与ELT两种技术路径的抉择直接影响着数据处理效率。我们这次来深入解析下两种模式的本质差异与应用场景,为企业提供选型建议。 一、ETL架构的优势 ETL架构遵循“提…...
Java蓝桥杯习题一:for循环和字符串的应用
知道循环次数用for循环 练习题1 小明对数位中含有2.0.1.9的数字很感兴趣,在1到40中这样的数包含1.2.9.10至32.39.40,共28个,他们的和是574.请问,在1到2019中,所有这样的数的和是多少?(2019Jav…...
Windows 图形显示驱动开发-WDDM 2.0功能_分配用法跟踪
随着分配列表的消失,视频内存管理器 (VidMm) 不再能够查看特定命令缓冲区中引用的分配。 因此,VidMm 不再能够跟踪分配使用情况和处理相关同步。 此责任现在由用户模式驱动程序 (UMD) 承担。 具体而言,UMD 需要处理与直接 CPU 访问分配和重命…...
SpringMVC的请求-文件上传
文件上传客户端三要素 1. 表单项type“file” 2. 表单的提交方式是post 3. 表单的enctype属性是多部分表单形式,及enctype“multipart/form-data” <% page contentType"text/html;charsetUTF-8" language"java" %> <html> <he…...
MySQL表的增删查改(基础)
一.插入数据 数据准备 create table student(id INT,sn INT comment 学号,name VARCHAR(20) comment 姓名,qq_mail VARCHAR(20) comment QQ邮箱 ); 1.单行数据全列插入 INSERT INTO student VALUES (100, 10000, 唐三藏, NULL); INSERT INTO student VALUES (101, 10001, …...
C++初阶-C++的讲解1
目录 1.缺省(sheng)参数 2.函数重载 3.引用 3.1引用的概念和定义 3.2引用的特性 3.3引用的使用 3.4const引用 3.5.指针和引用的关系 4.nullptr 5.总结 1.缺省(sheng)参数 (1)缺省参数是声明或定义是为函数的参数指定一个缺省值。在调用该函数是…...
【NLP 面经 9.逐层分解Transformer】
如果我能给你短暂的开心 —— 25.4.7 一、Transformer 整体结构 1.Tranformer的整体结构 Transformer 的整体结构,左图Encoder和右图Decoder,下图是Transformer用于中英文翻译的整体结构: 可以看到 Transformer 由 Encoder 和 Decoder 两个…...
Diffusion Policy Visuomotor Policy Learning via Action Diffusion官方项目解读(二)(5)
运行官方代码库中提供的Colab代码:vision-based environment(二)(5) Network十八、类SinusoidalPosEmb,继承自nn.Module十八.1 def __init__()十八.2 def forward()总体说明 十九、类Downsample1dÿ…...
西门子S7-1200PLC 工艺指令PID_Temp进行控温
1.硬件需求: 西门子PLC:CPU 1215C DC/DC/DC PLC模块:SM 1231 TC模块 个人电脑:已安装TIA Portal V17软件 加热套:带加热电源线以及K型热电偶插头 固态继电器:恩爵 RT-SSK4A2032-08S-F 其他࿱…...
【深度学习:理论篇】--Pytorch进阶教程
目录 1.神经网络 1.1.torch.nn 核心模块 1.2.定义神经网络 1.3.损失函数 1.4.反向传播 1.5.梯度更新 2.图片分类器 2.1.数据加载 2.2.卷积神经网络 2.3.优化器和损失 2.4.训练网络 2.5.测试网络 2.6.GPU上训练 3.数据并行训练--多块GPU 3.1.导入和参数 3.2.构造…...
卷积神经网络(CNN)基础
目录 一、应用场景 二、卷积神经网络的结构 1. 输入层(Input Layer) 2. 卷积层(Convolutional Layer) 3. 池化层(Pooling Layer) 最大池化(max_pooling)或平均池化(…...
第 28 场 蓝桥入门赛 JAVA 完整题解
前言 本文总结了六个编程题目的解题思路与核心考点,涵盖基础语法、逻辑分析、贪心算法、数学推导等知识点。每个题目均从问题本质出发,通过巧妙的算法设计或数学优化降低复杂度,展现了不同场景下的编程思维与解题技巧。以下为各题的详细考点解…...
Python 网络请求利器:requests 包详解与实战
诸神缄默不语-个人技术博文与视频目录 文章目录 一、前言二、安装方式三、基本使用1. 发起 GET 请求2. 发起 POST 请求 四、requests请求调用常用参数1. URL2. 数据data3. 请求头 headers4. 参数 params5. 超时时间 timeout6. 文件上传 file:上传纯文本文件流7. jso…...
聊透多线程编程-线程基础-1.进程、线程基础概念
目录 一、进程 二、线程 三、进程与线程的关系 四、进程与线程的比较 注:本文多张图片来源于网络,如有侵权,请联系删除 一、进程 1. 进程的定义 进程是指在系统中正在运行的一个应用程序的实例,是操作系统进行资源分配和调…...
Android:Android Studio右侧Gradle没有assembleRelease等选项
旧版as是“Do not build Gradle task list during Gradle sync” 操作这个选项。 参考这篇文章:Android Studio Gradle中没有Task任务,没有Assemble任务,不能方便导出aar包_gradle 没有task-CSDN博客 在as2024版本中,打开Setting…...
LeetcodeBST2JAVA
235.二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大&…...
如何创建单独的城市活码?活码能永久使用吗?
如何创建单独的城市活码 创建单独的城市活码通常需要借助专业的第三方工具,以下是具体步骤: 1.选择合适的工具 推荐使用专业的活码生成工具。 2.注册并登录 访问官网,完成注册并登录。 3.创建活码 在首页点击“创建活码”按钮。输入活码…...
用户画像(https://github.com/memodb-io/memobase)应用
1.下载项目的源代码,我们要先启动后端,用docker启动 cd src/server cp .env.example .env cp ./api/config.yaml.example ./api/config.yaml 这里我的配置内容如下config.yaml(因为我是调用的符合openai格式的大模型,所以我没改,如果要是别的大模型的话,需要自己再做兼容…...
基于形状补全和形态测量描述符的腓骨游离皮瓣下颌骨重建自动规划|文献速递-深度学习医疗AI最新文献
Title 题目 Automated planning of mandible reconstruction with fibula free flap basedon shape completion and morphometric descriptors 基于形状补全和形态测量描述符的腓骨游离皮瓣下颌骨重建自动规划 01 文献速递介绍 因创伤、骨髓炎和肿瘤而接受下颌骨节段切除术…...
Python3笔记之号称替代pip的uv包管理器
uv是什么? uv,这是一个由 Astral 团队开发的极快速的Python包和项目管理工具,用Rust语言编写。它集成了多种功能,旨在替代pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv等多个工具,提供更高效、更全面的Py…...
面试如何应用大模型
在面试中,如果被问及如何应用大模型,尤其是面向政务、国有企业或大型传统企业的数字化转型场景,你可以从以下几个角度进行思考和回答: 1. 确定应用大模型的目标与痛点 首先,明确应用大模型的业务目标,并结合企业的实际需求分析可能面临的痛点。这些企业通常会关注如何提…...
贪心算法:部分背包问题深度解析
简介: 该Java代码基于贪心算法实现了分数背包问题的求解,核心通过单位价值降序排序和分阶段装入策略实现最优解。首先对Product数组执行双重循环冒泡排序,按wm(价值/重量比)从高到低重新排列物品;随后分两阶段装入:循环…...
Java程序的基本规则
java程序的基本规则 1.1 java程序的组成形式 Java程序是一种纯粹的面向对象的程序设计语言,因此Java程序 必须以类(class)的形式存在,类(class)是Java程序的最小程序 单位。Java程序不允许可执行性语句…...
机器学习-线性回归模型
机器学习-线性回归模型 线性模型笔记1、向量化2、线性回归模型公式3、损失函数(代价函数)4、梯度下降法5、Python 实现示例 6、使用 sklearn 实现线性回归模型✅ 基本步骤如下:📦 示例代码: 7、numpy中的切片X[n,:]是取…...
Linux 入门指令(1)
(1)ls指令 ls -l可以缩写成 ll 同时一个ls可以加多个后缀 比如 ll -at (2)pwd指令 (3)cd指令 cd .是当前目录 (4)touch指令 (5)mkdir指令 (6)rmdir和rm…...
密码学基础——AES算法
目录 一、算法背景 AES算法与Rijndael算法 二、算法特点 1.安全性高 2.效率高 3.灵活性好 三、算法说明 3.1状态、种子密钥和轮数的概念 (1)状态(State) 定义 结构:通常状态是一个 4N 字节的矩阵࿰…...
淘宝API与小程序深度联动:商品详情页“一键转卖”功能开发
要实现淘宝 API 与小程序深度联动,开发商品详情页 “一键转卖” 功能,可按以下步骤进行: 1. 前期准备 淘宝开放平台接入:在淘宝开放平台注册开发者账号,创建应用,获取 App Key 和 App Secret,…...
深入解析 C++ 设计模式:原理、实现与应用
一、引言 在 C 编程的广袤领域中,设计模式犹如闪耀的灯塔,为开发者指引着构建高效、可维护软件系统的方向。设计模式并非神秘莫测的代码魔法,实际上,我们在日常编程中或许早已与之打过交道。简单来说,设计模式常常借助…...
配置与管理代理服务器
安装squid Squid软件包在标准yum存储库中可用,因此,我们正在使用yum命令安装Squid代理。 [rootserver ~]# dnf install -y squid //安装 [rootserver ~]#systemctl enable --now squid.service [rootserver ~]#systemctl status squid.serv…...
RuntimeError: CUDA error: invalid device function
CUDA内核编译时的架构设置与当前GPU不兼容导致 -- The CUDA compiler identification is NVIDIA 11.5.119 (实际为 12.6) 解决方案: 1. 查看显卡计算能力 2. CMakeLists.txt 修改 set_target_properties(my_library PROPERTIESCUDA_AR…...
vulnhub:sunset decoy
靶机下载地址https://www.vulnhub.com/entry/sunset-decoy,505/ 渗透过程 简单信息收集 nmap 192.168.56.0/24 -Pn # 确定靶机ip:192.168.56.121 nmap 192.168.56.121 -A -T4 # 得到开放端口22,80 在80端口得到save.zip,需要密码解压。 john破解压缩…...
MySQL日期时间类型详解:DATE、TIME和DATETIME的用法与区别
在数据库设计中,正确处理日期和时间数据是至关重要的。MySQL提供了多种数据类型来存储时间信息,其中最常用的三种是DATE、TIME和DATETIME。本文将详细介绍这三种类型的特性、区别以及实际应用场景。 一、基本数据类型介绍 1. DATE类型 用途࿱…...
js异步机制
1、什么是异步机制?为什么js需要异步机制? 异步机制和同步机制是相对应的,异步是指:当代码按照顺序执行到一些比较耗时的操作,不会立刻执行,而是将这些操作推到一个队列中等待合适的时机从队列中取出任务执…...
Pycharm常用快捷键总结
主要是为了记录windows下的PyCharm的快捷键,里面的操作都试过了功能描述会增加备注。 文件操作 快捷键功能描述Ctrl N新建文件Ctrl Shift N根据名称查找文件Ctrl O打开文件Ctrl S保存当前文件Ctrl Shift S另存为Alt F12打开终端(Terminal&…...