MySQL数据库基础练习系列:科研项目管理系统
DDL
CREATE TABLE Users (user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',password VARCHAR(255) NOT NULL COMMENT '密码',gender ENUM('男', '女') NOT NULL COMMENT '性别',email VARCHAR(100) UNIQUE COMMENT '邮箱'
);CREATE TABLE Roles (role_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '角色ID',role_name VARCHAR(50) NOT NULL UNIQUE COMMENT '角色名称'
);CREATE TABLE UserRoles (user_id INT COMMENT '用户ID',role_id INT COMMENT '角色ID',PRIMARY KEY (user_id, role_id),FOREIGN KEY (user_id) REFERENCES Users(user_id),FOREIGN KEY (role_id) REFERENCES Roles(role_id)
);CREATE TABLE Projects (project_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '项目ID',project_name VARCHAR(100) NOT NULL COMMENT '项目名称',project_description TEXT COMMENT '项目描述',principal_investigator_id INT COMMENT '主研人ID',start_date DATE NOT NULL COMMENT '开始日期',end_date DATE NOT NULL COMMENT '结束日期',status ENUM('申请中', '审批中', '执行中', '结题') NOT NULL COMMENT '项目状态',FOREIGN KEY (principal_investigator_id) REFERENCES Users(user_id)
);CREATE TABLE Funds (fund_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '资金ID',project_id INT NOT NULL COMMENT '项目ID',source VARCHAR(100) NOT NULL COMMENT '资金来源',amount DECIMAL(10, 2) NOT NULL COMMENT '资金金额',FOREIGN KEY (project_id) REFERENCES Projects(project_id)
);CREATE TABLE Achievements (achievement_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '成果ID',project_id INT NOT NULL COMMENT '项目ID',achievement_name VARCHAR(100) NOT NULL COMMENT '成果名称',achievement_type ENUM('论文', '专利', '获奖', '其他') NOT NULL COMMENT '成果类型',description TEXT COMMENT '成果描述',FOREIGN KEY (project_id) REFERENCES Projects(project_id)
);CREATE TABLE ProjectLogs (log_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '日志ID',project_id INT NOT NULL COMMENT '项目ID',user_id INT NOT NULL COMMENT '用户ID',log_date DATETIME NOT NULL COMMENT '日志日期',log_content TEXT NOT NULL COMMENT '日志内容',FOREIGN KEY (project_id) REFERENCES Projects(project_id),FOREIGN KEY (user_id) REFERENCES Users(user_id)
);
DML
INSERT INTO Roles (role_name) VALUES
('管理员'),
('项目负责人'),
('项目成员');
INSERT INTO Users (username, password, gender, email) VALUES
('诸葛亮', '123', '男', 'zhugeliang@example.com'),
('孙悟空', '123', '男', 'sunwukong@example.com'),
('林黛玉', '123', '女', 'lindaiyu@example.com');
INSERT INTO UserRoles (user_id, role_id) VALUES
(1, 1), -- 诸葛亮是管理员
(2, 2), -- 孙悟空是项目负责人
(2, 3), -- 孙悟空也是项目成员
(3, 3); -- 林黛玉是项目成员
INSERT INTO Projects (project_name, project_description, principal_investigator_id, start_date, end_date, status) VALUES
('三国历史研究项目', '研究三国历史背景', 1, '2023-01-01', '2023-12-31', '执行中'),
('西游记文化研究', '探究西游记的文学价值', 2, '2023-02-01', '2024-01-31', '申请中'),
('红楼梦解读', '分析红楼梦的深层含义', 2, '2023-03-01', '2023-11-30', '审批中');
INSERT INTO Funds (project_id, source, amount) VALUES
(1, '国家社会科学基金', 50000.00),
(2, '企业赞助', 30000.00),
(3, '学校科研基金', 45000.00),
(1, '地方政府资助', 20000.00); -- 同一个项目可以有多个经费来源
INSERT INTO Achievements (project_id, achievement_name, achievement_type, description) VALUES
(1, '三国历史研究报告', '论文', '详细分析了三国时期的历史事件'),
(2, '西游记文化解读', '论文', '深入探讨了西游记的文化内涵'),
(3, '红楼梦人物分析', '论文', '对红楼梦中的主要人物进行了深入剖析'),
(2, '西游记新发现', '专利', '发现了西游记中的新文学元素'); -- 同一个项目可以有多个成果
INSERT INTO ProjectLogs (project_id, user_id, log_date, log_content) VALUES
(1, 1, '2023-01-10 10:00:00', '项目启动会议召开'),
(2, 2, '2023-02-15 15:30:00', '提交项目申请书至学院'),
(3, 3, '2023-03-20 09:45:00', '开始收集红楼梦相关资料'),
(1, 1, '2023-04-01 14:15:00', '第一阶段研究成果汇报');
ER图
ER图
模型图
简单查询
一、查询用户信息,仅显示用户的姓名与项目名称,用中文显示列名
SELECT DISTINCTu.username AS 用户名,p.project_name AS 项目名称
FROMUsers u
JOINProjects p ON u.user_id = p.principal_investigator_id;
二、根据项目名称进行模糊查询,模糊查询要进行索引,需要给出explain语句
EXPLAIN SELECT project_id, project_name
FROM Projects
WHERE project_name LIKE '%三国%';
三、统计用户的项目信息,查询所有用户的项目数量,并进行倒序排列
SELECT u.username AS 用户名,COUNT(p.project_id) AS 项目数量
FROM Users u
LEFT JOIN Projects p ON u.user_id = p.principal_investigator_id
GROUP BY u.user_id, u.username
ORDER BY 项目数量 DESC;
复杂查询
一、查询用户的基本信息,项目信息
SELECT u.user_id,u.username,u.gender,u.email,p.project_id,p.project_name,p.project_description,p.start_date,p.end_date,p.status
FROM Users u
LEFT JOIN Projects p ON u.user_id = p.principal_investigator_id;
二、查看项目中项目阶段最多的项目对应的类型
SELECT p.project_name,p.status
FROM Projects p
WHERE (SELECT COUNT(*) FROM Projects p2 WHERE p2.status = p.status) = (SELECT MAX(cnt) FROM (SELECT status, COUNT(*) as cnt FROM Projects GROUP BY status) as subquery);
三、查询项目最多的用户,并且查询用户的全部信息与当前项目阶段
SET @MostProjectsUserId = (SELECT principal_investigator_idFROM ProjectsGROUP BY principal_investigator_idORDER BY COUNT(*) DESCLIMIT 1
);SELECT u.*,p.project_id,p.project_name,p.status AS current_project_status
FROM Users u
JOIN Projects p ON u.user_id = p.principal_investigator_id
WHERE u.user_id = @MostProjectsUserId;
触发器
触发器一:确保在Projects表中插入新项目时,主研人必须是已存在的用户
DELIMITER //
CREATE TRIGGER trg_check_principal_investigator
BEFORE INSERT ON Projects
FOR EACH ROW
BEGINIF NOT EXISTS (SELECT 1 FROM Users WHERE user_id = NEW.principal_investigator_id) THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'The principal investigator does not exist.';END IF;
END //
DELIMITER ;-- 测试语句
INSERT INTO Projects (project_name, project_description, principal_investigator_id, start_date, end_date, status)
VALUES ('新项目测试', '测试项目描述', 999, '2023-05-01', '2023-12-31', '申请中'); -- 假设999是一个不存在的用户ID-- 预期会失败,因为用户ID 999 不存在-- 成功的测试语句
INSERT INTO Projects (project_name, project_description, principal_investigator_id, start_date, end_date, status)
VALUES ('新项目测试成功', '测试项目描述成功', 2, '2023-05-01', '2023-12-31', '申请中'); -- 假设用户ID 2 是存在的(孙悟空)-- 检查新项目是否成功插入
SELECT * FROM Projects WHERE project_name = '新项目测试成功';
触发器二:在插入新的项目日志时,自动设置日志日期为当前时间(如果未提供)
DELIMITER //
CREATE TRIGGER trg_set_log_date_if_null
BEFORE INSERT ON ProjectLogs
FOR EACH ROW
BEGINIF NEW.log_date IS NULL THENSET NEW.log_date = NOW();END IF;
END //
DELIMITER ;-- 测试语句
INSERT INTO ProjectLogs (project_id, user_id, log_content) VALUES
(2, 2, '项目申请已被接收');-- 检查触发器是否工作
SELECT * FROM ProjectLogs WHERE log_content = '项目申请已被接收';
触发器三:在更新项目状态时,检查状态是否合法(此触发器实际上已经确保了状态的合法性,因为status列是一个ENUM类型,所以这里仅作为示例)
DELIMITER //
CREATE TRIGGER trg_check_project_status_update
BEFORE UPDATE ON Projects
FOR EACH ROW
BEGINIF NEW.status NOT IN ('申请中', '审批中', '执行中', '结题') THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid project status!';END IF;
END //
DELIMITER ;-- 测试语句(确保成功)
UPDATE Projects SET status = '审批中' WHERE project_id = 2; -- 将西游记文化研究的状态更改为审批中,应该成功-- 检查Projects表,确保状态已更新
SELECT * FROM Projects WHERE project_id = 2;
存储过程
存储过程 1: 添加新用户
DELIMITER //
CREATE PROCEDURE AddUser(IN p_username VARCHAR(50), IN p_password VARCHAR(255), IN p_gender ENUM('男', '女'), IN p_email VARCHAR(100))
BEGININSERT INTO Users (username, password, gender, email)VALUES (p_username, p_password, p_gender, p_email);
END //
DELIMITER ;-- 测试语句
CALL AddUser('刘备', '123', '男', 'liubei@example.com');-- 验证新用户是否添加成功
SELECT * FROM Users WHERE username = '刘备';
存储过程 2: 分配用户角色
DELIMITER //
CREATE PROCEDURE AssignUserRole(IN p_user_id INT, IN p_role_id INT)
BEGININSERT INTO UserRoles (user_id, role_id)VALUES (p_user_id, p_role_id);
END //
DELIMITER ;-- 测试语句
CALL AssignUserRole(3, 2); -- 假设林黛玉(user_id=3)需要被分配为项目负责人(role_id=2)-- 验证角色是否分配成功
SELECT * FROM UserRoles WHERE user_id = 3;
存储过程 3: 记录项目日志
DELIMITER //
CREATE PROCEDURE RecordProjectLog(IN p_project_id INT, IN p_user_id INT, IN p_log_content TEXT)
BEGININSERT INTO ProjectLogs (project_id, user_id, log_date, log_content)VALUES (p_project_id, p_user_id, NOW(), p_log_content);
END //
DELIMITER ;-- 测试语句
CALL RecordProjectLog(1, 2, '项目有新的研究进展'); -- 假设为三国历史研究项目(project_id=1)添加日志,由孙悟空(user_id=2)记录-- 验证日志是否记录成功
SELECT * FROM ProjectLogs WHERE project_id = 1 AND log_content LIKE '%项目有新的研究进展%';
相关文章:
MySQL数据库基础练习系列:科研项目管理系统
DDL CREATE TABLE Users (user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,username VARCHAR(50) NOT NULL UNIQUE COMMENT 用户名,password VARCHAR(255) NOT NULL COMMENT 密码,gender ENUM(男, 女) NOT NULL COMMENT 性别,email VARCHAR(100) UNIQUE COMMENT 邮箱 …...
算法设计与分析--考试真题
分布式算法试题汇总选择题简答题算法题 2013级试题2019级试题2021年秋考卷 根据考试范围找相应题目做。 分布式算法试题汇总 选择题 下述说法错误的是___ A 异步系统中的消息延迟是不确定的 B 分布式算法的消息复杂性是指在所有合法的执行上发送消息总数的最大值 C 在一个异步…...
【鸿蒙学习笔记】页面和自定义组件生命周期
官方文档:页面和自定义组件生命周期 目录标题 [Q&A] 都谁有生命周期? [Q&A] 什么是组件生命周期? [Q&A] 什么是组件?组件生命周期 [Q&A] 什么是页面生命周期? [Q&A] 什么是页面?页面生…...
ASPICE与ISO 21434:汽车软件与网络安全标准的协同与互补
ASPICE(Automotive SPICE)与ISO 21434在汽车行业中存在显著的相关性,主要体现在以下几个方面: 共同目标: ASPICE和ISO 21434都旨在提高汽车系统和软件的质量、可靠性和安全性。ASPICE关注汽车软件开发过程的成熟度和…...
视频格式转换方法:如何使用视频转换器软件转换视频
众所周知,目前存在许多不同的视频和音频格式。但我们的媒体播放器、移动设备、PC 程序等仅兼容少数特定格式。例如,如果不先将其转换为 MP4、MOV 或 M4V 文件,AVI、WMV 或 MKV 文件就无法在 iPhone 上播放。 视频转换器允许您将一种视频格式…...
vim操作小诀窍:快速多行添加注释
在使用vim编译python代码的时候,经常碰到需要将一段代码注释的情况,每次都要按“向下” “向左”按钮,将光标移到句首,然后再键入#井号键。如果行数较多,则操作相当繁琐。 vim里面有将一段文字前面加#注释的方法&#…...
无线麦克风领夹哪个牌子好,2024年领夹麦克风品牌排行榜推荐
随着短视频热潮的兴起,越来越多的人倾向于用vlog记录日常生活,同时借助短视频和直播平台开辟了副业。在这一过程中,麦克风在近两年内迅速发展,从最初的简单收音功能演变为拥有多样款式和功能,以满足视频创作的需求。…...
Mybatis入门——语法详解:基础使用、增删改查、起别名、解决问题、注释、动态查询,从入门到进阶
文章目录 1.基础使用1.添加依赖2.在resouces文件下新建xml文件db.properties3.在resouces文件下新建xml文件mybatis-config-xml4.创建一个MybatisUtils工具类5.创建xml文件XxxMapper.xml映射dao层接口6.添加日志5.测试 2.增删改查1.select2.delete3.update4.insert5.模糊查询6.…...
仓库选址问题【数学规划的应用(含代码)】阿里达院MindOpt
本文主要讲述使用MindOpt工具优化仓库选址的数学规划问题。 视频讲解👈👈👈👈👈👈👈👈👈 一、案例场景 仓库选址问题在现代物流和供应链管理中具有重要的应用。因为仓库…...
Docker Compose 一键快速部署 RocketMQ
Apache RocketMQ是一个开源的分布式消息中间件系统,最初由阿里巴巴开发并贡献给Apache软件基金会。RocketMQ提供了高性能、高可靠性、高扩展性和低延迟的消息传递服务,适用于构建大规模分布式系统中的消息通信和数据同步。 RocketMQ支持多种消息模型&am…...
Vscode lanuch.json
Intro 使用launch.json 能够方便的运行需要传很多参数的代码文件 如下: import math import argparse # 1、导入argpase包def parse_args():parse argparse.ArgumentParser(descriptionCalculate cylinder volume) # 2、创建参数对象parse.add_argument(--rad…...
Golang开发:构建支持并发的网络爬虫
Golang开发:构建支持并发的网络爬虫 随着互联网的快速发展,获取网络数据成为了许多应用场景中的关键需求。网络爬虫作为一种自动化获取网络数据的工具,也因此迅速崛起。而为了应对日益庞大的网络数据,开发支持并发的爬虫成为了必…...
2024年跨境电商关键数据统计:市场规模将达到1.976万亿美元
预计2024年跨境电商消费市场规模将达到1.976万亿美元,占全球网上销售总额的31.2%。这一数据无疑展示了跨境电商市场的巨大潜力和迅猛增长趋势。 全球跨境电商的现状与未来 现状 2023年,全球跨境电商市场规模预计达到1.56万亿美元,占全球电子…...
联想至像M3070DNA打印机加粉及清零方法
基本参数: 产品类型:黑白激光多功能商用一体机(打印/复印/扫描) 网络功能:支持有线网络打印 最大处理幅面:A4 双面功能:自动 打印速度:30页/分钟(高速激光打印&…...
通过nginx去除 api url前缀 并保持后面剩余的url不变向后台请求
如 我前台浏览器向后台请求的接口是 http://127.0.0.1:5099/api/sample/sample/getbuttonlist 实际的请求接口传向 http://192.168.3.71:5099/sample/sample/getbuttonlist 方法是向config中加入下面这样一个server server {listen 5099;location /api/ {rewrite ^/a…...
AI技术在现代社会中的广泛应用及其影响
目录 前言: 一、AI技术在医疗领域的应用 二、AI技术在教育领域的应用 三、AI技术在工业领域的应用 四、AI技术在金融领域的应用 五、AI技术在生活领域的应用 前言: 随着科技的不断发展,人工智能(AI)技术逐渐成为人…...
VBA 批量变换文件名
1. 页面布局 在“main”Sheet中按照下面的格式编辑。 2. 实现代码 Private wsMain As Worksheet Private intIdx As LongPrivate Sub getExcelBookList(strPath As String)Dim fso As ObjectDim objFile As ObjectDim objFolder As ObjectSet fso = CreateObject("Scrip…...
OpenHarmony 5.0 纯血鸿蒙系统
OpenHarmony-v5.0-Beta1 版本已于 2024-06-20 发布。 OpenHarmony 5.0 Beta1 版本标准系统能力持续完善,ArkUI 完善了组件通过 C API 调用的能力;应用框架细化了生命周期管理能力,完善了应用拉起、跳转的能力;分布式软总线连接能力…...
计算机网络地址划分A-E(自学)
1、网络地址组成 (1)物理地址MAC(Media Access Control Address) 网卡生产商分配,全球唯一,48/64位二进制 (2)逻辑地址IP(Internet Protocol) 网络层地址,用于在不同网…...
js导入导出
好久没有学习新的知识点了,今天开始学一下前端的知识点。直接在vscode里面编写,然后从基本的前端知识开始。 JS的导入导出 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"…...
python办公自动化之excel
用到的库:openpyxl 实现效果:读取单元格的值,写入单元格 代码: import openpyxl # 打开现有工作簿 workbookopenpyxl.load_workbook(现有工作簿.xlsx) # 选择一个工作表 sheetworkbook[交易表] # 读取单元格的值 cell_valueshe…...
生命在于学习——Python人工智能原理(2.5.1)
五、Python的类与继承 5.1 Python面向对象编程 在现实世界中存在各种不同形态的事物,这些事物之间存在各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象之间的关系描述事物之间的联系,这种思想用在编程中就是面向对象编程。 …...
visual studio 2022配置和使用jsoncpp
下载 jsoncpp下载位置: GitHub - open-source-parsers/jsoncpp: A C library for interacting with JSON. 编译库 1、下载完成之后解压 2、在解压文件的makefiles文件下有个vs71,在vs71中有visual studio项目,不过这里的项目是visual stud…...
Spring Boot中的动态数据源切换
Spring Boot中的动态数据源切换 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将探讨如何在Spring Boot中实现动态数据源切换的技术。动态…...
npm error code EUNSUPPORTEDPROTOCOL 解决
更换包管理工具 npm i -g pnpm pnpm install pnpm run dev 参考 https://blog.csdn.net/qq_42592823/article/details/137541827...
基于改进天鹰优化算法(IAO)优化支持向量机(SVM)数据分类预测(IAO-SVM)
改进天鹰优化算法(IAO)见:【智能优化算法】改进的AO算法(IAO)-CSDN博客 支持向量机(SVM)数据分类预测:基于支持向量机(SVM)的数据分类预测-CSDN博客 代码原理 基于改进天鹰优化算法(IAO)优化支持向量机(SVM…...
【数学建模】—【Python库】—【Numpy】—【学习】
目录 编辑 1. NumPy安装 2. ndarray对象 1. 创建ndarray 1.从列表或元组创建: 2.使用内置函数创建: 2. ndarray属性 3. 数组运算 1. 基本运算 2. 数学函数 3.统计函数 4. 数组索引与切片 1. 一维数组索引与切片 2.多维数组索引与切片 5.…...
C语言一些逆置算法
目录 整数逆置 数组逆置 矩阵转置 整数逆置 如7234变为4327 int Reversed(int n){int x,reversed_n0;while(n!0){xn%10; reversed_nreversed_n*10x;nn/10;}return reversed_n; }数组逆置 将数组{1,2,3,4,5,6}逆置为{6,5,4,3,2,1} void Reverse(int a[],int l,int r){w…...
CentOS7安装MongoDB
文章目录 一、 环境准备二、安装包下载三、 软件安装和启动3.1 将下载好的安装包上传到 Linux 服务器某个目录下,并使用以下命令解压压缩包。3.2 将解压后的目录移动到 /usr/local 目录下,并改名为 mongodb 。3.3 进入 mongo 目录,并创建文件…...
python笔记----少儿编程课程
第1课: 认识新朋友-python 知识点: 1、在英文状态下编写Python语句。 2、内置函数print()将结果输出到标准的控制台上,它的基本语法格式如下: print("即将输出的内容") #输出的内容要用引号引起来,可…...
RabbitMQ实践——搭建单人聊天服务
大纲 创建Core交换器用户登录发起聊天邀请接受邀请聊天实验过程总结代码工程 经过之前的若干节的学习,我们基本掌握了Rabbitmq各个组件和功能。本文我们将使用之前的知识搭建一个简单的单人聊天服务。 基本结构如下。为了避免Server有太多连线导致杂乱,下…...
GPT-5
欢迎来到 Papicatch的博客 文章目录 🍉技术突破预测 🍈算法进步 🍈理解力提升 🍈行业推动力 🍉人机协作的未来 🍈辅助决策 🍈增强创造力 🍈复杂任务中的角色 🍈人…...
Vip-智能预估+大数据标签+人群全选=用户分群!
Mobpush用户分群功能升级,创建推送入口vip用户可进入自有选择标签创建“用户分群”,相比于免费标签,“用户标签”维度更丰富。在应用基础属性上,增加“品牌”、“网络状态”、“运营商”,众所周知,不同厂商…...
SpringBoot异常处理机制之自定义404、500错误提示页面 - 518篇
历史文章(文章累计500) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《…...
为什么选择Xinstall CPA结算系统?因为它能帮您解决这些痛点!
在App推广和运营的道路上,我们时常面临着各种挑战和痛点。其中,结算系统的复杂性和不透明性往往成为制约我们发展的瓶颈。然而,有了Xinstall CPA结算系统,这些问题将迎刃而解,让您的App推广之路更加顺畅和高效。 一、…...
2024年【建筑电工(建筑特殊工种)】模拟试题及建筑电工(建筑特殊工种)作业考试题库
题库来源:安全生产模拟考试一点通公众号小程序 2024年建筑电工(建筑特殊工种)模拟试题为正在备考建筑电工(建筑特殊工种)操作证的学员准备的理论考试专题,每个月更新的建筑电工(建筑特殊工种)作业考试题库祝您顺利通过建筑电工(建筑特殊工种)考试。 1、…...
解锁数字化转型的双引擎:MSP和CMP的力量
随着企业数字化转型的深入,云计算已经成为现代企业IT基础设施的重要组成部分。为了高效地管理和优化多云环境,企业通常会依赖管理服务提供商 (Managed Service Providers, MSP) 和云管理平台 (Cloud Management Platforms, CMP)。本文将探讨MSP和CMP的定…...
Pyecharts入门
数据可视化 Pyecharts简介 Apache ECharts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时&#…...
Socket编程详解(一)服务端与客户端的双向对话
目录 预备知识 视频教程 项目前准备知识点 1、服务器端程序的编写步骤 2、客户端程序编写步骤 代码部分 1、服务端FrmServer.cs文件 2、客户端FrmClient.cs文件 3、启动文件Program.cs 结果展示 预备知识 请查阅博客http://t.csdnimg.cn/jE4Tp 视频教程 链接&#…...
使用Python实现深度学习模型:强化学习与深度Q网络(DQN)
深度Q网络(Deep Q-Network,DQN)是结合深度学习与强化学习的一种方法,用于解决复杂的决策问题。本文将详细介绍如何使用Python实现DQN,主要包括以下几个方面: 强化学习简介DQN算法简介环境搭建DQN模型实现模型训练与评估1. 强化学习简介 强化学习是一种训练智能体(agent…...
Py-Spy、Scalene 和 VizTracer 的对比分析
在前几篇文章中,我们详细介绍了如何使用 py-spy、scalene 和 viztracer 进行性能分析和优化。今天,我们将对这三个性能分析工具进行详细对比,帮助你选择最适合你的工具。 工具简介 Py-Spy: 实时性能分析:Py-Spy 可以…...
软考架构师考试内容
软考系统架构设计师考试是中国计算机技术与软件专业技术资格(水平)考试(简称软考)中的一项高级资格考试,旨在评估考生是否具备系统架构设计的能力。根据提供的参考资料,考试内容主要包括以下几个方面&#…...
【MySQL基础篇】概述及SQL指令:DDL及DML
数据库是一个按照数据结构来组织、存储和管理数据的仓库。以下是对数据库概念的详细解释:定义与基本概念: 数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库不仅仅是数据的简单堆积,而是遵循一定的规则…...
计算机网络 —— 网络字节序
网络字节序 1、网络字节序 (Network Byte Order)和本机转换 1、大端、小端字节序 “大端” 和” 小端” 表示多字节值的哪一端存储在该值的起始地址处;小端存储在起始地址处,即是小端字节序;大端存储在起始地址处,即是大端字节…...
区块链不可能三角
区块链不可能三角:探索去中心化、安全与可扩展性的权衡 引言 区块链技术自诞生以来,以其去中心化、透明、安全等特点吸引了全球的关注,成为金融科技领域的重要革新力量。然而,随着区块链应用的日益广泛,一个核心问题…...
新手第一个漏洞复现:MS17-010(永恒之蓝)
文章目录 漏洞原理漏洞影响范围复现环境复现步骤 漏洞原理 漏洞出现在Windows SMB v1中的内核态函数srv!SrvOs2FeaListToNt在处理FEA(File Extended Attributes)转换时。该函数在将FEA list转换成NTFEA(Windows NT FEA)list前&am…...
代码随想录Day64
98.所有可达路径 题目:98. 所有可达路径 (kamacoder.com) 思路:果断放弃 答案 import java.util.*;public class Main {private static List<List<Integer>> adjList;private static List<List<Integer>> allPaths;private sta…...
Angular 指令
Angular 指令是 Angular 框架中的一项核心功能,它允许开发人员扩展 HTML 的功能,并创建可复用的组件和行为。以下是一些常见的 Angular 指令: 1. 组件指令 (Component Directives) 组件指令是最常用的一种指令,用于创建可复用的 U…...
移动端 UI 风格,书写华丽篇章
移动端 UI 风格,书写华丽篇章...
flutter开发实战-ListWheelScrollView与自定义TimePicker时间选择器
flutter开发实战-ListWheelScrollView与自定义TimePicker 最近在使用时间选择器的时候,需要自定义一个TimePicker效果,当然这里就使用了ListWheelScrollView。ListWheelScrollView与ListView类似,但ListWheelScrollView渲染效果类似滚筒效果…...