【SQL】SQL常见面试题总结(2)

news2024/12/24 10:22:03

目录

  • 1、增删改操作
    • 1.1、插入记录(一)
    • 1.2、插入记录(二)
    • 1.3、插入记录(三)
    • 1.4、更新记录(一)
    • 1.5、更新记录(二)
    • 1.6、删除记录(一)
    • 1.7、删除记录(二)
    • 1.8、删除记录(三)
  • 2、表与索引操作
    • 2.1、创建一张新表
    • 2.2、修改表
    • 2.3、删除表
    • 2.4、创建索引
    • 2.5、删除索引

1、增删改操作

SQL 插入记录的方式汇总:

  • 普通插入(全字段)INSERT INTO table_name VALUES (value1, value2, ...)
  • 普通插入(限定字段)INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)
  • 多条一次性插入INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...
  • 从另一个表导入INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]
  • 带更新的插入REPLACE INTO table_name VALUES (value1, value2, ...)(注意这种原理是检测到主键或唯一性索引键重复就删除原记录后重新插入)

1.1、插入记录(一)

描述:后台会记录每个用户的试卷作答记录到 exam_record 表,现在有两个用户的作答记录详情如下:

  • 用户 1001 在 2021 年 9 月 1 日晚上 10 点 11 分 12 秒开始作答试卷 9001,并在 50 分钟后提交,得了 90 分;
  • 用户 1002 在 2021 年 9 月 4 日上午 7 点 1 分 2 秒开始作答试卷 9002,并在 10 分钟后退出了平台。

试卷作答记录表exam_record中,表已建好,其结构如下,请用一条语句将这两条记录插入表中。

FiledTypeNullKeyExtraDefaultComment
idint(11)NOPRIauto_increment(NULL)自增 ID
uidint(11)NO(NULL)用户 ID
exam_idint(11)NO(NULL)试卷 ID
start_timedatetimeNO(NULL)开始时间
submit_timedatetimeYES(NULL)提交时间
scoretinyint(4)YES(NULL)得分

答案:

# 建表语句
-- 删除表 exam_record 如果存在
DROP TABLE IF EXISTS exam_record;
-- 创建表 exam_record 如果尚未创建
CREATE TABLE IF NOT EXISTS exam_record (
    id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    uid INT(11) NOT NULL,
    exam_id INT(11) NOT NULL,
    start_time DATETIME NOT NULL,
    submit_time DATETIME,
    score TINYINT(4)
);

// 存在自增主键,无需手动赋值
INSERT INTO exam_record (uid,exam_id,start_time,submit_time,score ) VALUES
(1001,9001,'2021-09-01 22:11:12','2021-09-01 23:01:12',90),
(1002,9002,'2021-09-04 07:01:02',NULL,NULL);

在这里插入图片描述

1.2、插入记录(二)

描述:现有一张试卷作答记录表exam_record,结构如下表,其中包含多年来的用户作答试卷记录,由于数据越来越多,维护难度越来越大,需要对数据表内容做精简,历史数据做备份。

exam_record

FiledTypeNullKeyExtraDefaultComment
idint(11)NOPRIauto_increment(NULL)自增 ID
uidint(11)NO(NULL)用户 ID
exam_idint(11)NO(NULL)试卷 ID
start_timedatetimeNO(NULL)开始时间
submit_timedatetimeYES(NULL)提交时间
scoretinyint(4)YES(NULL)得分

我们已经创建了一张新表exam_record_before_2021用来备份 2021 年之前的试题作答记录,结构和exam_record表一致,请将 2021 年之前的已完成了的试题作答纪录导入到该表。

答案:

# 建表语句不再赘述
INSERT INTO exam_record_before_2021(uid,exam_id,start_time,submit_time,score)
SELECT uid,exam_id,start_time,submit_time,score
FROM exam_record
WHERE YEAR(submit_time) < 2021;

exam_record
在这里插入图片描述
exam_record_before_2021
在这里插入图片描述

1.3、插入记录(三)

描述:现在有一套 ID 为 9003 的高难度 SQL 试卷,时长为一个半小时,请你将 2021-01-01 00:00:00 作为发布时间插入到试题信息表examination_info,不管该 ID 试卷是否存在,都要插入成功,请尝试插入它。

试题信息表examination_info

FiledTypeNullKeyExtraDefaultComment
idint(11)NOPRIauto_increment(NULL)自增 ID
exam_idint(11)NOUNI(NULL)试卷 ID
tagvarchar(32)YES(NULL)类别标签
difficultyvarchar(8)YES(NULL)难度
durationint(11)NO(NULL)时长(分钟数)
release_timedatetimeYES(NULL)发布时间

答案:

REPLACE INTO examination_info VALUES
(NULL,9003,"SQL","hard",90,"2021-01-01 00:00:00")

知识点REPLACE INTO examination_info:
这个部分表示要将数据插入到 examination_info 这个表中。如果表中存在与新插入数据相同主键或唯一键的记录,则删除旧记录后再插入新记录。

1.4、更新记录(一)

描述:现在有一张试卷信息表 examination_info, 表结构如下图所示:

FiledTypeNullKeyExtraDefaultComment
idint(11)NOPRIauto_increment(NULL)自增 ID
exam_idint(11)NOUNI(NULL)试卷 ID
tagvarchar(32)YES(NULL)类别标签
difficultyvarchar(8)YES(NULL)难度
durationint(11)NO(NULL)时长(分钟数)
release_timedatetimeYES(NULL)发布时间

请把examination_info表中tagPYTHONtag字段全部修改为Python

思路:这题有两种解题思路,最容易想到的是直接update + where来指定条件更新,第二种就是根据要修改的字段进行查找替换

答案一:

UPDATE examination_info SET tag = 'Pyhton' WHERE tag = 'PYTHON';

答案二:

UPDATE examination_info SET tag = REPLACE(tag,'PYTHON','Python');

# REPLACE (目标字段,"查找内容","替换内容")

在这里插入图片描述

1.5、更新记录(二)

描述:现有一张试卷作答记录表 exam_record,其中包含多年来的用户作答试卷记录,结构如下表:作答记录表 exam_recordsubmit_time 为 完成时间 (注意这句话)

FiledTypeNullKeyExtraDefaultComment
idint(11)NOPRIauto_increment(NULL)自增 ID
uidint(11)NO(NULL)用户 ID
exam_idint(11)NO(NULL)试卷 ID
start_timedatetimeNO(NULL)开始时间
submit_timedatetimeYES(NULL)提交时间
scoretinyint(4)YES(NULL)得分

题目要求:请把exam_record表中 2021 年 9 月 1 日之前开始作答的未完成记录全部改为被动完成,即:将完成时间改为’2099-01-01 00:00:00’,分数改为 0。

思路:注意题干中的关键字(已经高亮) " xxx 时间 "之前这个条件, 那么这里马上就要想到要进行时间的比较 可以直接 xxx_time < "2021-09-01 00:00:00", 也可以采用date()函数来进行比较;第二个条件就是 "未完成", 即完成时间为 NULL,也就是题目中的提交时间 ----- submit_time 为 NULL

答案:

UPDATE exam_record SET submit_time = '2099-01-01 00:00:00',score = 0 WHERE DATE(start_time) < "2021-09-01 00:00:00" AND submit_time IS NULL;

在这里插入图片描述

1.6、删除记录(一)

描述:现有一张试卷作答记录表 exam_record,其中包含多年来的用户作答试卷记录,结构如下表:

作答记录表exam_recordstart_time是试卷开始时间submit_time 是交卷,即结束时间。

FiledTypeNullKeyExtraDefaultComment
idint(11)NOPRIauto_increment(NULL)自增 ID
uidint(11)NO(NULL)用户 ID
exam_idint(11)NO(NULL)试卷 ID
start_timedatetimeNO(NULL)开始时间
submit_timedatetimeYES(NULL)提交时间
scoretinyint(4)YES(NULL)得分

要求:请删除exam_record表中作答时间小于 5 分钟整且分数不及格(及格线为 60 分)的记录;

思路:这一题虽然是练习删除,仔细看确是考察对时间函数的用法,这里提及的分钟数比较,常用的函数有 TIMEDIFFTIMESTAMPDIFF ,两者用法稍有区别,后者更为灵活,这都是看个人习惯。

  1. TIMEDIFF:两个时间之间的差值
TIMEDIFF(time1, time2)

两者参数都是必须的,都是一个时间或者日期时间表达式。如果指定的参数不合法或者是 NULL,那么函数将返回 NULL。

对于这题而言,可以用在 minute 函数里面,因为 TIMEDIFF 计算出来的是时间的差值,在外面套一个 MINUTE 函数,计算出来的就是分钟数。

  1. TIMESTAMPDIFF:用于计算两个日期的时间差
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
# 参数说明
#unit: 日期比较返回的时间差单位,常用可选值如下:
SECOND:秒
MINUTE:分钟
HOUR:小时
DAY:天
WEEK:星期
MONTH:月
QUARTER:季度
YEAR:年
# TIMESTAMPDIFF函数返回datetime_expr2 - datetime_expr1的结果(人话: 后面的 - 前面的  即2-1),其中datetime_expr1和datetime_expr2可以是DATE或DATETIME类型值(人话:可以是“2023-01-01”, 也可以是“2023-01-01- 00:00:00”)

这题需要进行分钟的比较,那么就是 TIMESTAMPDIFF(MINUTE, 开始时间, 结束时间) < 5

答案:

SELECT TIME_TO_SEC (TIMEDIFF(submit_time , start_time)) FROM exam_record
DELETE FROM exam_record WHERE TIMESTAMPDIFF(MINUTE, start_time, submit_time) < 5 AND score < 60

1.7、删除记录(二)

描述:现有一张试卷作答记录表exam_record,其中包含多年来的用户作答试卷记录,结构如下表:

作答记录表exam_recordstart_time 是试卷开始时间,submit_time 是交卷时间,即结束时间,如果未完成的话,则为空。

FiledTypeNullKeyExtraDefaultComment
idint(11)NOPRIauto_increment(NULL)自增 ID
uidint(11)NO(NULL)用户 ID
exam_idint(11)NO(NULL)试卷 ID
start_timedatetimeNO(NULL)开始时间
submit_timedatetimeYES(NULL)提交时间
scoretinyint(4)YES(NULL)得分

要求:请删除exam_record表中未完成作答作答时间小于 5 分钟整的记录中,开始作答时间最早的 3 条记录。

思路:这题比较简单,但是要注意题干中给出的信息,结束时间,如果未完成的话,则为空,这个其实就是一个条件

还有一个条件就是小于 5 分钟,跟上题类似,但是这里是,即两个条件满足一个就行;另外就是稍微考察到了排序和 limit 的用法。

答案:

DELETE FROM exam_record WHERE submit_time IS NULL OR TIMESTAMPDIFF(MINUTE, start_time, submit_time) < 5
ORDER BY start_time
LIMIT 3
# 默认就是asc, desc是降序排列

1.8、删除记录(三)

描述:现有一张试卷作答记录表 exam_record,其中包含多年来的用户作答试卷记录,结构如下表:

FiledTypeNullKeyExtraDefaultComment
idint(11)NOPRIauto_increment(NULL)自增 ID
uidint(11)NO(NULL)用户 ID
exam_idint(11)NO(NULL)试卷 ID
start_timedatetimeNO(NULL)开始时间
submit_timedatetimeYES(NULL)提交时间
scoretinyint(4)YES(NULL)得分

要求:请删除exam_record表中所有记录,并重置自增主键

思路:这题考察对三种删除语句的区别,注意高亮部分,要求重置主键;

  • DROP: 清空表,删除表结构,不可逆
  • TRUNCATE: 格式化表,不删除表结构,不可逆
  • DELETE:删除数据,可逆

这里选用TRUNCATE的原因是:TRUNCATE 只能作用于表;TRUNCATE会清空表中的所有行,但表结构及其约束、索引等保持不变;TRUNCATE会重置表的自增值;使用TRUNCATE后会使表和索引所占用的空间会恢复到初始大小。

这题也可以采用DELETE来做,但是在删除后,还需要手动ALTER表结构来设置主键初始值;

同理也可以采用DROP来做,直接删除整张表,包括表结构,然后再新建表即可。

答案:

TRUNCATE exam_record;

2、表与索引操作

2.1、创建一张新表

描述:现有一张用户信息表,其中包含多年来在平台注册过的用户信息,随着平台的不断壮大,用户量飞速增长,为了高效地为高活跃用户提供服务,现需要将部分用户拆分出一张新表。

原来的用户信息表:

FiledTypeNullKeyDefaultExtraComment
idint(11)NOPRI(NULL)auto_increment自增 ID
uidint(11)NO(NULL)用户 ID
nick_namevarchar(64)YES(NULL)昵称
achievementint(11)YES0成就值
levelint(11)YES(NULL)用户等级
jobvarchar(32)YES(NULL)职业方向
register_timedatetimeYESCURRENT_TIMESTAMP注册时间

作为数据分析师,请创建一张优质用户信息表user_info_vip,表结构和用户信息表一致。

你应该返回的输出如下表格所示,请写出建表语句将表格中所有限制和说明记录到表里。

FiledTypeNullKeyDefaultExtraComment
idint(11)NOPRI(NULL)auto_increment自增 ID
uidint(11)NO(NULL)用户 ID
nick_namevarchar(64)YES(NULL)昵称
achievementint(11)YES0成就值
levelint(11)YES(NULL)用户等级
jobvarchar(32)YES(NULL)职业方向
register_timedatetimeYESCURRENT_TIMESTAMP注册时间

思路:如果这题给出了旧表的名称,可直接create table 新表 as select * from 旧表; 但是这题并没有给出旧表名称,所以需要自己创建,注意默认值和键的创建即可,比较简单。

答案:

CREATE TABLE IF NOT EXISTS user_info_vip(
    id INT(11) PRIMARY KEY AUTO_INCREMENT COMMENT'自增ID',
    uid INT(11) UNIQUE NOT NULL COMMENT '用户ID',
    nick_name VARCHAR(64) COMMENT'昵称',
    achievement INT(11) DEFAULT 0 COMMENT '成就值',
    `level` INT(11) COMMENT '用户等级',
    job VARCHAR(32) COMMENT '职业方向',
    register_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间'
)CHARACTER SET UTF8

2.2、修改表

描述: 现有一张用户信息表user_info,其中包含多年来在平台注册过的用户信息。

用户信息表 user_info

FiledTypeNullKeyDefaultExtraComment
idint(11)NOPRI(NULL)auto_increment自增 ID
uidint(11)NO(NULL)用户 ID
nick_namevarchar(64)YES(NULL)昵称
achievementint(11)YES0成就值
levelint(11)YES(NULL)用户等级
jobvarchar(32)YES(NULL)职业方向
register_timedatetimeYESCURRENT_TIMESTAMP注册时间

要求:请在用户信息表,字段level的后面增加一列最多可保存 15 个汉字的字段 school;并将表中 job 列名改为 profession,同时 varchar 字段长度变为 10;achievement 的默认值设置为 0。

思路:首先做这题之前,需要了解ALTER语句的基本用法:

  • 添加一列:ALTER TABLE 表名 ADD COLUMN 列名 类型 【first | after 字段名】;(first : 在某列之前添加,after 反之)
  • 修改列的类型或约束:ALTER TABLE 表名 MODIFY COLUMN 列名 新类型 【新约束】;
  • 修改列名:ALTER TABLE 表名 change COLUMN 旧列名 新列名 类型;
  • 删除列:ALTER TABLE 表名 drop COLUMN 列名;
  • 修改表名:ALTER TABLE 表名 rename 【to】 新表名;
  • 将某一列放到第一列:ALTER TABLE 表名 MODIFY COLUMN 列名 类型 first;

COLUMN 关键字其实可以省略不写,这里基于规范还是罗列出来了。

在修改时,如果有多个修改项,可以写到一起,但要注意格式

答案:

ALTER TABLE user_info 
	ADD COLUMN school VARCHAR(15) AFTER level,
	CHANGE COLUMN job profession VARCHAR(10),
	MODIFY achievement INT(11) DEFAULT 0; 

在这里插入图片描述

2.3、删除表

描述:现有一张试卷作答记录表 exam_record,其中包含多年来的用户作答试卷记录。一般每年都会为exam_record表建立一张备份表 exam_record_{YEAR},{YEAR} 为对应年份。

现在随着数据越来越多,存储告急,请你把很久前的(2011 到 2014 年)备份表都删掉(如果存在的话)。

思路:这题很简单,直接删就行,如果嫌麻烦,可以将要删除的表用逗号隔开,写到一行;这里肯定会有小伙伴问:如果要删除很多张表呢?放心,如果要删除很多张表,可以写脚本来进行删除。

答案:

DROP TABLE IF EXISTS exam_record_2011;
DROP TABLE IF EXISTS exam_record_2012;
DROP TABLE IF EXISTS exam_record_2013;
DROP TABLE IF EXISTS exam_record_2014;

2.4、创建索引

描述:现有一张试卷信息表 examination_info,其中包含各种类型试卷的信息。为了对表更方便快捷地查询,需要在 examination_info 表创建以下索引,

规则如下:在 duration 列创建普通索引 idx_duration、在 exam_id 列创建唯一性索引 uniq_idx_exam_id、在 tag 列创建全文索引 full_idx_tag

根据题意,将返回如下结果:

examination_info0PRIMARY1idA0BTREE
examination_info0uniq_idx_exam_id1exam_idA0YESBTREE
examination_info1idx_duration1durationA0BTREE
examination_info1full_idx_tag1tag0YESFULLTEXT

备注:后台会通过SHOW INDEX FROM examination_info 语句来对比输出结果

思路:做这题首先需要了解常见的索引类型:

  • B-Tree 索引:B-Tree(或称为平衡树)索引是最常见和默认的索引类型。它适用于各种查询条件,可以快速定位到符合条件的数据。B-Tree 索引适用于普通的查找操作,支持等值查询、范围查询和排序。
  • 唯一索引:唯一索引与普通的 B-Tree 索引类似,不同之处在于它要求被索引的列的值是唯一的。这意味着在插入或更新数据时,MySQL 会验证索引列的唯一性。
  • 主键索引:主键索引是一种特殊的唯一索引,它用于唯一标识表中的每一行数据。每个表只能有一个主键索引,它可以帮助提高数据的访问速度和数据完整性。
  • 全文索引:全文索引用于在文本数据中进行全文搜索。它支持在文本字段中进行关键字搜索,而不仅仅是简单的等值或范围查找。全文索引适用于需要进行全文搜索的应用场景。
-- 示例:
-- 添加B-Tree索引:
	CREATE INDEX idx_name(索引名) ON 表名 (字段名);   -- idx_name为索引名,以下都是
-- 创建唯一索引:
	CREATE UNIQUE INDEX idx_name ON 表名 (字段名);
-- 创建一个主键索引:
	ALTER TABLE 表名 ADD PRIMARY KEY (字段名);
-- 创建一个全文索引
	ALTER TABLE 表名 ADD FULLTEXT INDEX idx_name (字段名);

-- 通过以上示例,可以看出create 和 alter 都可以添加索引

有了以上的基础知识之后,该题答案也就浮出水面了。

答案:

ALTER TABLE examination_info
	ADD INDEX  idx_duration(duration),
	ADD UNIQUE INDEX uniq_idx_exam_id(exam_id ),
	ADD FULLTEXT INDEX full_idx_tag(tag);

2.5、删除索引

描述:请删除examination_info表上的唯一索引 uniq_idx_exam_id 和全文索引 full_idx_tag

思路:该题考察删除索引的基本语法:

-- 使用 DROP INDEX 删除索引
DROP INDEX idx_name ON 表名;

-- 使用 ALTER TABLE 删除索引
ALTER TABLE employees DROP INDEX idx_email;

这里需要注意的是:在 MySQL 中,一次删除多个索引的操作是不支持的。每次删除索引时,只能指定一个索引名称进行删除。

而且 DROP 命令需要慎用!!!

答案:

DROP INDEX uniq_idx_exam_id  ON examination_info;
DROP INDEX full_idx_tagON examination_info;

好文推荐:

《【SQL】SQL常见面试题总结(1)》
《【SQL】SQL常见面试题总结(3)》
在这里插入图片描述

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

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

相关文章

【文末附gpt升级方案】腾讯混元文生图大模型开源:中文原生Sora同款DiT架构引领新潮流

在人工智能与计算机视觉技术迅猛发展的今天&#xff0c;腾讯再次引领行业潮流&#xff0c;宣布其旗下的混元文生图大模型全面升级并对外开源。这次开源的模型不仅具备强大的文生图能力&#xff0c;更采用了业内首个中文原生的Sora同款DiT架构&#xff0c;为中文世界的视觉生成领…

NodeJS V8引擎内存和垃圾回收器

关于max_old_space_size max_old_space_size参数用于指定V8引擎的老生代内存的最大大小。通过增加max_old_space_size参数的值&#xff0c;我们可以提供更多的内存给V8引擎&#xff0c;从而提高应用程序的性能和稳定性。 既然提到了老生代&#xff0c;就不得不提下什么是垃圾&…

IDEA 每次启动都显示选择项目页面

IDEA版本&#xff1a;2021.3.3 打开 Settings > Appearance & Behavior > System Settings 取消勾选 Reopen projects on startup 然后下次启动 IDEA 会显示选择项目页面

论文阅读 - Anatomy of an AI-powered malicious social botnet

论文链接&#xff1a; https://arxiv.org/pdf/2307.16336.pdf 目录 摘要 1引言 2 相关工作 2.1 LLM驱动的网络威胁 2.2 LLM生成的内容检测 2.3 社交机器人检测 2.4 由 LLM 增强的机器人 3 Fox8僵尸网络的识别 4 特性 4.1 配置文件 4.2 社交网络 4.3内容类型 4.4放…

全新多语言海外抢单刷单系统源码 订单自动匹配 支持分组 代理后台

安装教程 测试环境&#xff1a;Nginx PHP7.0 MySQL5.6 config/database 修改数据库 设置运行目录public 伪静态thinkphp 后台登录地址&#xff1a;/admin 账号admin 密码admin123 前端出现报错 删除runtime文件夹得缓存文件即可 源码免费下载地址抄笔记 (chaobiji.cn)

数据结构——冒泡排序

懒猫老师-数据结构-(63)冒泡排序(起泡排序)_哔哩哔哩_bilibili 交换排序的一类 基本思想 两两比较相邻记录的关键码&#xff0c;如果反序则交换&#xff0c;直到没有反序的记录为止。 过程 有序区不断扩大&#xff0c;无序区不断减小

vllm docker部署qwen等大模型推理;api post调用访问

参考: https://docs.vllm.ai/en/latest/serving/deploying_with_docker.html https://hub.docker.com/r/vllm/vllm-openai https://blog.csdn.net/weixin_42357472/article/details/136165481 下载镜像: docker pull vllm/vllm-openai 镜像默认最后一层就是python -m vllm.…

ModuleNotFoundError: No module named ‘sklearn‘

ModuleNotFoundError: No module named sklearn 解决办法&#xff1a; pip install scikit-learn

在win10折腾Flowise:部署和尝试

Flowise 是一种低代码/无代码拖放工具&#xff0c;旨在让人们轻松可视化和构建 LLM 应用程序。 本地部署 操作系统&#xff1a; win10 由于网络、操作系统等各种未知问题&#xff0c;使用npm install -g flowise的方式&#xff0c;尝试了很多次&#xff0c;都没有部署成功&am…

Python 白底黑字图片去除红色水印

Python 白底黑字图片去除红色水印 import os from PIL import Imagedef remove_color(image_path, new_image_path):"""初始化:param image_path: 图片路径:param new_image_path: 新图片路径"""# 打开图片并转换为RGBA格式img Image.open(imag…

C语言例题42、打印金字塔

#include <stdio.h>void main() {int i, j;for (i 0; i < 5; i) {for (j 4; j > i; j--) {//输出空格printf(" ");}for (j 0; j < 2 * i 1; j) {//输出星号printf("* ");}printf("\n");} }运行结果&#xff1a; 本章C语言经…

【智能算法】清道夫优化算法(CFO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;W Zhang受到清道夫自然行为启发&#xff0c;提出了清道夫优化算法&#xff08;Cleaner Fish Optimization Algorithm, CFO&#xff09;。 2.算法原理 2.1算法思想 CF…

【JAVA SE】初识JAVA

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;JAVA 个人主页&#xff1a;Celias blog~ 目录 ​编辑 一、关于JAVA 1.1 JAVA语言简介 1.2 语言优势 1…

【Shell】shell编程之数组

目录 一、数组的概念 二、数组定义方法 三、数组 1.获取数组长度 2.获取数组数据列表 3.获取数组下标列表 4.读取某下标赋值 5.数组遍历 6.数组切片 7.数组替换 8.数组删除 四、数组追加元素 五、向函数传数组参数 ​编辑六、数组排序算法 1.冒泡排序 2.直接选…

Vue的学习 —— <路由与网络请求>

目录 前言 正文 一、初识路由 二、初识Vue Router 1、安装Vue Router 2、Vue Router基本使用 三、路由重定向 四、嵌套路由 前言 在之前的学习中了解到单页Web应用通常只有一个HTML页面&#xff0c;所有的组件展示和切换都在这个页面上完成。虽然我们可以通过动态组件…

数据密码机独特的安全性能

数据密码机&#xff0c;作为一种专用的信息安全设备&#xff0c;在现代社会的各个领域中都发挥着至关重要的作用。它以其独特的加密技术和安全性能&#xff0c;为数据的传输和存储提供了坚实的保护屏障。 首先&#xff0c;数据密码机的工作原理是基于复杂的加密算法。这些算法能…

【Javaer学习Python】2、Django的MVT设计模式,完成CRUD小应用

系列文章&#xff1a;学习Python Django的MVT设计模式由Model(模型), View(视图) 和Template(模板)三部分组成&#xff0c;分别对应单个app目录下的models.py, views.py和templates文件夹。它们看似与MVC设计模式不太一致&#xff0c;其实本质是相同的&#xff1b; 实践是检验学…

Leetcode2391. 收集垃圾的最少总时间

Every day a Leetcode 题目来源&#xff1a;2391. 收集垃圾的最少总时间 解法1&#xff1a;前缀和 收集垃圾的时间分为两部分&#xff1a; 垃圾车收拾垃圾的时间&#xff1a;垃圾车收拾一单位的任何一种垃圾都需要花费 1 分钟。三辆垃圾车行驶的时间&#xff1a;每辆垃圾车…

24HN逆向部分wp

24H&N逆向部分wp 菜鸡新手师傅wp&#xff0c;Re 5/9&#xff0c;记录一下qaq&#xff08;好久没写博客了&#xff0c;水一篇hh&#xff09; 最喜欢的逆向题 64位&#xff0c;进主函数之后直接看&#xff0c;要求输入第5位为i&#xff0c;然后后面依次相等&#xff0c;长…

线性系统(一)

线性系统&#xff08;一&#xff09; 1.什么是线性系统2.高斯消元法3.高斯-约旦消元法4.线性方程组解的结构 链接: 线性系统&#xff08;二&#xff09; 1.什么是线性系统 线性&#xff1a;未知数只能是一次方项 非线性: 同时&#xff0c;读者也可以通过作图来更直观地感受&…