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

Mysql学习笔记

连接数据库

找到 MySQL 安装目录下的 bin 目录,然后打开命令窗口,在命令窗口中按如下语法输入命令:
mysql - h MySQL 数据库服务器的 IP 地址 - u 用户名 - p

 然后按下回车键,输入密码即可

数据库操作

创建数据库

CREATE DATABASE [ IF NOT EXISTS ] 数据库名称 DEFAULT CHARACTER SET 字符集 COLLATE 排序规则;

示例:创建数据库lesson,并指定字符集为 GBK ,排序规则为 GBK_CHINESE_CI 

CREATE DATABASE IF NOT EXISTS lesson DEFAULT CHARACTER SET GBK COLLATE
GBK_CHINESE_CI;

 修改数据库

ALTER DATABASE 数据库名称 CHARACTER SET 字符集 COLLATE 排序规则 ;

 示例:修改数据库lesson的字符集为 UTF8 ,排序规则为 UTF8_GENERAL_CI

ALTER DATABASE lesson CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;

 删除数据库

DROP DATABASE [IF EXISTS] 数据库名称;

示例:删除数据库lesson 

DROP DATABASE IF EXISTS lesson;

查看数据库

 SHOW DATABASES;

使用数据库

USE 数据库名称; 

示例:使用数据库lesson 

USE lesson;

数据表操作

数据表类型 

MySQL 中的数据表类型有许多,如 MyISAM InnoDB HEAP BOB CSV 等。其中最常用的就是 MyISAM 和 InnoDB。

 创建数据表

CREATE TABLE [ IF NOT EXISTS ] 数据表名称 (
字段名 1 列类型 ( 长度 ) [ 修饰属性 ] [ / 索引 ] [ 注释 ] ,
字段名 2 列类型 ( 长度 ) [ 修饰属性 ] [ / 索引 ] [ 注释 ] ,
字段名 3 列类型 ( 长度 ) [ 修饰属性 ] [ / 索引 ] [ 注释 ] ,
......
字段名 n 列类型 ( 长度 ) [ 修饰属性 ] [ / 索引 ] [ 注释 ]
) [ ENGINE = 数据表类型 ][ CHARSET = 字符集编码 ] [ COMMENT = 注释 ] ;

示例:创建学生表,表中有字段学号、姓名、性别、年龄和成绩

CREATE TABLE IF NOT EXISTS student(
`number` VARCHAR(30) NOT NULL PRIMARY KEY COMMENT '学号,主键',
name VARCHAR(30) NOT NULL COMMENT '姓名',
sex TINYINT(1) UNSIGNED DEFAULT 0 COMMENT '性别:0-男 1-女 2-其他',
age TINYINT(3) UNSIGNED DEFAULT 0 COMMENT '年龄',
score DOUBLE(5, 2) UNSIGNED COMMENT '成绩'
)ENGINE=InnoDB CHARSET=UTF8 COMMENT='学生表';

修改数据表

修改表名

ALTER TABLE 表名 RENAME AS 新表名;
示例:将student表名称修改为 stu
ALTER TABLE student RENAME AS stu;

增加字段

ALTER TABLE 表名 ADD 字段名 列类型(长度) [修饰属性] [键/索引] [注释]; 

示例:在 stu 表中添加字段联系电话(phone),类型为字符串,长度为11,非空 

ALTER TABELE stu ADD phone varchar(11) NOT NULL COMMENT '联系电话';

查看表结构

DESC 表名; 

修改字段

-- MODIFY 只能修改字段的修饰属性
ALTER TABLE 表名 MODIFY 字段名 列类型(长度) [修饰属性] [键/索引] [注释];
-- CHANGE 可以修改字段的名字以及修饰属性
ALTER TABLE 表名 CHANGE 字段名 新字段名 列类型(长度) [修饰属性] [键/索引] [注释];
示例: 将 stu 表中的 sex 字段的类型设置为 VARCHAR ,长度为2,默认值为'男',注释为 "性别, 男,女,其他"
ALTER TABLE stu MODIFY sex VARCHAR(2) DEFAULT '男' COMMENT '性别:男,女,其他';
示例:将 stu 表中 phone 字段修改为 mobile ,属性保持不变
ALTER TABLE stu CHANGE phone mobile VARCHAR(11) NOT NULL COMMENT '联系电话';

 删除字段

ALTER TABLE 表名 DROP 字段名;

示例:将 stu 表中的 mobile 字段删除 

ALTER TABLE stu DROP mobile;

删除数据表

DROP TABLE [IF EXISTS] 表名; 

示例:删除数据表 stu 

DROP TABLE IF EXISTS stu;

 练习

1. 在数据库 exercise 中创建课程表 stu_course ,包含字段课程编号 (number) ,类型为整数,长度为 11 ,是主键,自增长,非空、课程名称 (name) ,类型为字符串,长度为 20 ,非空、学分 (score) ,类型 为浮点数,小数点后面保留 2 位有效数字, 长度为 5 ,非空
-- 如果数据库不存在 就创建数据库
CREATE DATABASE IF NOT EXISTS exercise DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;

 -- 使用数据库

USE exercise;

-- 在数据库中创建数据表stu_course 

CREATE TABLE IF NOT EXISTS stu_course( `number` INT(11) AUTO_INCREMENT PRIMARY KEY NOT NULL COMMENT '课程号', name VARCHAR(20) NOT NULL COMMENT '课程名称', score DOUBLE(5, 2) NOT NULL COMMENT '学分' )ENGINE=InnoDB CHARSET=UTF8 COMMENT '课程表';

2. 将课程表重命名为 course
ALTER TABLE stu_course RENAME AS course;

3. 在课程表中添加字段学时(time),类型为整数,长度为3,非空 

ALTER TABLE course ADD time INT(3) NOT NULL COMMENT '学时';

4. 修改课程表学分类型为浮点数,小数点后面保留1位有效数字,长度为3,非空 

ALTER TABLE course MODIFY score DOUBLE(3,1) NOT NULL COMMENT '学分';

 5. 删除课程表

DROP TABLE IF EXISTS course;

6. 删除数据库exercise 

DROP DATABASE IF EXISTS exercise;

 DML数据操作语言

INSERT

-- 需要注意,VALUES后的字段值必须与表名后的字段名一一对应
INSERT INTO 表名(字段名1, 字段名2, ..., 字段名n) VALUES(字段值1, 字段值2, ..., 字段值
n);
-- 需要注意,VALUES后的字段值必须与创建表时的字段顺序保持一一对应
INSERT INTO 表名 VALUES(字段值1, 字段值2, ..., 字段值n);
-- 一次性插入多条数据
INSERT INTO 表名(字段名1, 字段名2, ..., 字段名n) VALUES(字段值1, 字段值2, ..., 字段值
n),(字段值1, 字段值2, ..., 字段值n), ... , (字段值1, 字段值2, ..., 字段值n);
INSERT INTO 表名 VALUES(字段值1, 字段值2, ..., 字段值n), (字段值1, 字段值2, ..., 字段值
n), ..., (字段值1, 字段值2, ..., 字段值n);
示例:向课程表中插入数据
INSERT INTO course(`number`, name, score, `time`) VALUES (1, 'Java基础', 4, 40);
INSERT INTO course VALUES (2, '数据库', 3, 20);
INSERT INTO course(`number`, score, name, `time`) VALUES (3, 5, 'Jsp', 40);
INSERT INTO course(`number`, name, score, `time`) VALUES (4, 'Spring', 4, 5),(5,
'Spring Mvc', 2, 5);
INSERT INTO course VALUES (6, 'SSM', 2, 3), (7, 'Spring Boot', 2, 2);

UPDATA

UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2, ..., 字段名n=字段值n] [WHERE 修改条件] 

示例:将数据库的学分更改为4,学时更改为15
UPDATA course SET score=4,time=15 WHERE name='数据库';

DELETE

DELETE FROM 表名 [WHERE 删除条件]; 

示例:删除课程表中课程编号为1的数据
DETELE FROM course WHERE 'number'=1;

TRUNCATE

-- 清空表中数据
TRUNCATE [TABLE] 表名;

示例:清空课程表的数据 

TRUNCATE course;

DELETE和TRUNCATE区别

DELETE 语句根据条件删除表中数据,而 TRUNCATE 语句则是将表中数据全部清空;如果 DELETE
句要删除表中所有数据,那么在效率上要低于 TRUNCATE 语句。
如果表中有自增长列, TRUNCATE 语句会重置自增长的计数器,但 DELETE 语句不会。
TRUNCATE 语句执行后,数据无法恢复,而 DELETE 语句执行后,可以使用事务回滚进行恢复。

DQL数据查询语言

SELECT

SELECT ALL/DISTINCT * | 字段名1 AS 别名1[,字段名1 AS 别名1, ..., 字段名n AS 别名n]
FROM 表名 WHERE 查询条件
ALL 表示查询所有满足条件的记录,可以省略; DISTINCT 表示去掉查询结果中重复的记录
AS 可以给数据列、数据表取一个别名
示例: 从课程表中查询课程编号小于5的课程名称
SELECT name FROM course WHERE 'number'<5;

从课程表中查询课程名称为"Java基础"的学分和学时

SELECT score, `time` FROM course WHERE name='Java基础'; 

比较操作符

操作符语法说明
IS NULL字段名IS NULL
如果字段的值为 NULL ,则条件满足
IS NOT NULL字段名IS NOT NULL
如果字段的值不为 NULL ,则条件满足
BETWEEN...AND字段名BETWEEN 最小值 AND 最大值
如果字段的值在最小值与最大值之间(能够取到
最小值和最大值),则条件满足
LIKE字段名 LIKE '%匹配内容%'
如果字段值包含有匹配内容,则条件满足
IN字段名 IN (值1,值2...值n)
如果字段值在值 1, 2, ... ,值 n 中,则条件满足

示例:从课程表查询课程名为NULL的课程信息

SELECT * FROM course WHERE name IS NULL;

示例:从课程表查询课程名不为NULL的课程信息 

SELECT * FROM course WHERE name IS NOT NULL;

示例:从课程表查询学分在2~4之间的课程信息 

SELECT * FROM course WHERE score BETWEEN 2 AND 4;

示例:从课程表查询课程名包含"V"的课程信息 

SELECT * FROM course WHERE name LIKE '%V%';

示例:从课程表查询课程名以"J"开头的课程信息 

SELECT * FROM course WHERE name LIKE 'J%';

 示例:从课程表查询课程名以"p"结尾的课程信息

SELECT * FROM course WHERE name LIKE '%p';

示例:从课程表查询课程编号为1,3,5的课程信息 

SELECT * FROM course WHERE 'number' IN (1,3,5);

分组 

数据表准备:新建学生表 student ,包含字段学号( no ),类型为长整数,长度为 20 ,是主键,自增 长,非空;姓名(name ),类型为字符串,长度为 20 ,非空;性别( sex ),类型为字符串,长度为 2,默认值为 " " ;年龄( age ),类型为整数,长度为 3 ,默认值为 0 ;成绩( score ),类型为浮点 数,长度为5 ,小数点后面保留 2 位有效数字。
DROP TABLE IF EXISTS student;
CREATE TABLE student(
  no BIGINT(20) AUTO_INCREMENT NOT NULL PRIMARY KEY COMMENT '学号,主键',
  name VARCHAR(20) NOT NULL COMMENT '姓名',
  sex VARCHAR(2) DEFAULT '男' COMMENT '性别',
  age INT(3) DEFAULT 0 COMMENT '年龄',
  score DOUBLE(5,2) COMMENT '成绩'
)ENGINE=InnoDB CHARSET=UTF8 COMMENT='学生表';

 插入测试数据:

INSERT INTO student(no, name, sex, age, score) VALUES (DEFAULT, '张三', '男', 20,
59);
INSERT INTO student(no, name, sex, age, score) VALUES (DEFAULT, '李四', '女', 19,
62);
INSERT INTO student(no, name, sex, age, score) VALUES (DEFAULT, '王五', '其他',
21, 62);
INSERT INTO student(no, name, sex, age, score) VALUES (DEFAULT, '龙华', '男', 22,
75);
INSERT INTO student(no, name, sex, age, score) VALUES (DEFAULT, '金凤', '女', 18,
80);
INSERT INTO student(no, name, sex, age, score) VALUES (DEFAULT, '张华', '其他',
27, 88);
INSERT INTO student(no, name, sex, age, score) VALUES (DEFAULT, '李刚', '男', 30,
88);
INSERT INTO student(no, name, sex, age, score) VALUES (DEFAULT, '潘玉明', '女',
28, 81);
INSERT INTO student(no, name, sex, age, score) VALUES (DEFAULT, '凤飞飞', '其他',
32, 90);

 分组查询

SELECT ALL/DISTINCT * | 字段名1 AS 别名1[,字段名1 AS 别名1, ..., 字段名n AS 别名n]
FROM 表名 WHERE 查询条件 GROUP BY 字段名1,字段名2,..., 字段名n

分组查询所得的结果只是该组中的第一条数据。 

示例:从学生表查询成绩在80分以上的学生信息并按性别分组

SELECT * FROM student WHERE score>80 GROUP BY sex;

示例:从学生表查询成绩在60~80之间的学生信息并按性别和年龄分组 

SELECT * FROM student WHERE score BETWEEN 60 AND 80 GROUP BY sex, age;

聚合函数

COUNT() :统计满足条件的数据总条数 

示例:从学生表查询成绩在80分以上的学生人数

SELECT COUNT(*) total FROM student WHERE score>80;

SUM():只能用于数值类型的字段或者表达式,计算该满足条件的字段值的总和

示例:从学生表查询不及格的学生人数和总成绩 

SELECT COUNT(*) totalCount,SUM(score) totalScore FROM student WHERE score<60;

AVG():只能用于数值类型的字段或者表达式,计算该满足条件的字段值的平均值 

示例:从学生表查询男生、女生、其他类型的学生的平均成绩
SELECT sex,AVG(score) avgScore FROM student GROUP BY sex;

MAX():只能用于数值类型的字段或者表达式,计算该满足条件的字段值的最大值 

示例:从学生表查询学生的最大年龄
SELECT MAX(age) FROM student;

MIN():只能用于数值类型的字段或者表达式,计算该满足条件的字段值的最小值 

示例:从学生表查询学生的最低分
SELECT MIN(score) FROM student;

分组查询结果筛选

SELECT ALL/DISTINCT * | 字段名1 AS 别名1[,字段名1 AS 别名1, ..., 字段名n AS 别名n]
FROM 表名 WHERE 查询条件 GROUP BY 字段名1,字段名2,..., 字段名n HAVING 筛选条件

分组后如果还需要满足其他条件,则需要使用HAVING子句来完成。

示例:从学生表查询年龄在20~30之间的学生信息并按性别分组,找出组内平均分在74分以上的组 

SELECT * FROM student WHERE age BETWEEN 20 AND 30 GROUP BY sex HAVING AVG(score)>74;

排序

SELECT ALL/DISTINCT * | 字段名1 AS 别名1[,字段名1 AS 别名1, ..., 字段名n AS 别名n]
FROM 表名 WHERE 查询条件 ORDER BY 字段名1 ASC|DESC,字段名2 ASC|DESC,..., 字段名n ASC|DESC
示例:从学生表查询年龄在18~30岁之间的学生信息并按成绩从高到低排列,如果成绩相同,则按年龄 从小到大排列
SELECT * FROM student WHERE age BETWEEN 18 AND 30 ORDER BY score DESC, age ASC;

 分页

SELECT ALL/DISTINCT * | 字段名1 AS 别名1[,字段名1 AS 别名1, ..., 字段名n AS 别名n]
FROM 表名 WHERE 查询条件 LIMIT 偏移量, 查询条数
LIMIT 的第一个参数表示偏移量,也就是跳过的行数。
LIMIT 的第二个参数表示查询返回的最大行数,可能没有给定的数量那么多行。
示例:从学生表分页查询成绩及格的学生信息,每页显示3条,查询第2页学生信息

 SELECT * FROM student WHERE score>=60 LIMIT 3, 3;

注意: 如果一个查询中包含分组、排序和分页,那么它们之间必须按照 分组 -> 排序 -> 分页 的先后顺序排列。

常用函数

常用数学函数

函数说明示例
ABS(x)返回x的绝对值SELECT ABS(-8);
FLOOR(x)返回不大于x的最大整数SELECT FLOOR(1.3);
CEIL(x)返回不小于x的最小整数SELETC CEIL(1.3);
TRUNCATE(x,d)返回数值x保留小数点后d位的值,截断时不进行四舍五入SELECT TRUNCATE(1.2328,3);
ROUND(x)返回离x最近的整数,截断时要进行四舍五入SELECT ROUND(1.8);
RAND()返回0~1的随机数SELECT RAND();
MOD(n,m)返回n除以m后的余数SELECT MOD(9,2);

常用字符串函数

函数说明示例
CHAR_LENGTH(str)计算字符串字符个数SELECT CHAR_LENGTH('中国');
LENGTH(str)返回值为字符串str的长度,单位为字节SELECT LENGTH('中国');
CONCAT(str1,str2,...)将多个字符串拼接起来,其中任意一个为NULL则返回值为NULLSELECT CONCAT('ad','min');

UPPER(str)

UCASE(str)

将字符串中的字母全部转换成大写

SELECT UPPER('abcde');

SELECT UCASE('abcde');

LOWER(str)

LCASE(str)

将字符串中的字母全部转换成小写

SELECT LOWER('ABCDE');

SELECT LCASE('ABCDE');

LEFT(s,n)

RIGHT(s,n)

前者返回字符串s从最左边开始的n个字符

后者返回字符串s从最右边开始的n个字符

SELECT LEFT('abcdefg',5);

SELECT RIGHT('abcdefg',5);

LTRIM(s)

RTRIM(s)

前者返回字符串s,其左边的所有空格被删除

后者返回字符串s,其右边的所有空格被删除

SELECT LTRIM('  abcde  ');

SELECT RTRIM('  abcde  ');

TRIM(s)返回字符串删除了两边空格后的字符串SELECT TRIM('  abcde  ');
REPLACE(s,s1,s2)返回一个字符串,用字符串s2代替s中所有字符串s1SELECT REPLACE('ababac','ab','d');
SUBSTRING(s,n,len)从字符串s中返回第一个第n个字符开始 长度为n的字符串

SELECT SUBSTRING('abcdef',2,3);

日期和时间函数

函数说明示例

CURDATE()

CURRENT_DATE()

返回当前日期

SELECT CURDATE();

SELECT CURRENT_DATE();

CURTIME()

CURRENT_TIME()

返回当前时间

SELECT CURTIME();

SELECT CURRENT_TIME();

NOW()

CURRENT_TIMESTAMP()

SYSDATE()

返回当前日期和时间

SELECT NOW();

SELECT CURRENT_TIMESTAMP();

SELECT SYSDATE();

YEAR(d)返回日期d中的年SELECT YEAR(NOW());
MONTH(d)返回日期d中的月份值,范围1~12SELECT MONTH(NOW());
DAYOFMONTH(d)返回给定日期是当月的第几天SELECT DAYOFMONTH(NOW());
HOUR(d)返回给定日期d的小时数SELECT HOUR(NOW());
MINUTE(d)返回给定日期d的分钟数SELECT MINUTE(NOW());
SECOND(d)返回给定日期d的秒数SELECT SECOND(NOW());
ADDDATE(d,n)返回起始日期d加上n天的日期SELECT ADDDATE(NOW(),3);
TIMESTAMPDIFF(INTERVAL,d1,d2)返回给定日期d1和d2的时间差SELECT TIMESTAMPDIFF(YEAR,'2019-10-10','2021-10-1');
DATE_FROMAT(d,f)返回给定日期格式的字符串SELECT DATE_FROMAT(NOW(),'%Y-%m-%d %H:%i:%s');

条件判断函数

IF(条件,表达式1,表达式2)

如果条件满足,则使用表达式 1, 否则使用表达式 2

IFNULL(字段,表达式)

如果字段值为空,则使用表达式,否则,使用字段值

CASE...WHEN

CASE WHEN 条件1 THEN 表达式1 [WHEN 条件2 THEN 表达式2 ...] ELSE 表达式n END

如果条件 1 满足,则使用表达式 1 ;【如果条件 2 满足,则使用表达式 2 ... 】否则,使用表达式 n 。相当于if..else
CASE 表达式 WHEN 1 THEN 表达式 1 [WHEN 2 THEN 表达式 2 ...] ELSE 表达式 n END
如果表达式的执行结果为值 1 ,则使用表达式 1 ;【执行结果为值 2 ,则使用表达式 2 ... 】否则,使用
表达式 n 。相当于switch

其他函数

数字格式化函数

FORMAT(X,D) ,将数字 X 格式化,将 X 保留到小数点后 D 位,截断时要进行四舍五入。
示例:SELECT FORMAT(1.2353,2);

系统信息函数

函数说明示例
VERSION()获取数据库的版本号SELECT VERSION();
CONNECTION_ID()获取服务器的连接数SELECT CONNECTION_ID();

DATABASE()

SCHEMA()

获取当前数据库名

SELECT DATABASE();

SELECT SCHEMA();

USER()

SYSTEM_USER()

SESSION_USER()

获取当前用户名

SELECT USER();

SELECT SYSTEM_USER();

SELECT SESSION_USER();

CURRENT_USER()

CURRENT_USER

获取当前用户名

SELECT CURRENT_USER();

SELECT CURRENT_USER;

 

相关文章:

Mysql学习笔记

连接数据库 找到 MySQL 安装目录下的 bin 目录&#xff0c;然后打开命令窗口&#xff0c;在命令窗口中按如下语法输入命令&#xff1a; mysql - h MySQL 数据库服务器的 IP 地址 - u 用户名 - p 然后按下回车键&#xff0c;输入密码即可 数据库操作 创建数据库 CREAT…...

Safari常用快捷键

一、书签边栏 1、显示或隐藏书签边栏&#xff1a;Control-Command-1 2、选择下一个书签或文件夹&#xff1a;向上头键或向下头键 3、打开所选书签&#xff1a;空格键 4、打开所选文件夹&#xff1a;空格键或右箭头键 5、关闭所选文件夹&#xff1a;空格键或左箭头键 6、更…...

OpenEuler学习笔记(二):用通俗的道理讲操作系统原理

用通俗的道理讲操作系统原理 基础概念类比 把OpenEuler操作系统想象成一个大型的工厂&#xff0c;这个工厂有各种各样的部门&#xff0c;每个部门都有自己的职责&#xff0c;共同协作来让整个工厂正常运转。内核就像是工厂的管理中心&#xff0c;它负责指挥和协调所有的工作。 …...

ros2-7.5 做一个自动巡检机器人

7.5.1 需求及设计 又到了小鱼老师带着做最佳实践项目了。需求&#xff1a;做一个在各个房间不断巡逻并记录图像的机器人。 到达目标点后首先通过语音播放到达目标点信息&#xff0c; 再通过摄像头拍摄一张图片保存到本地。 7.5.2 编写巡检控制节点 在chapt7_ws/src下新建功…...

使用 `scanpy` 观察 `AnnData` 对象内部数据结构

以下是使用 scanpy 观察 AnnData 对象内部数据结构的步骤: 一、导入必要的库: import scanpy as sc二、读取 AnnData 对象: 假设你的 AnnData 对象存储在一个文件中,例如 adata.h5ad,你可以使用以下代码读取它: adata = sc.read(adata.h5ad)如果你已经有了 adata 对象…...

《CPython Internals》阅读笔记:p232-p249

《CPython Internals》学习第 13天&#xff0c;p232-p249 总结&#xff0c;总计 18 页。 一、技术总结 无。 二、英语总结(生词&#xff1a;1) 1.overhead (1)overhead: over-(“above”) head(“top part, uppermost section”) overhead的字面意思是&#xff1a;above…...

Java并发08 - 并发安全容器详解

并发容器详解 文章目录 并发容器详解一&#xff1a;不使用并发容器如何保证安全二&#xff1a;阻塞队列容器2&#xff1a;ArrayBlockingQueue2.1&#xff1a;内部成员2.2&#xff1a;put方法的实现2.3&#xff1a;take方法的实现 3&#xff1a;LinkedBlockingQueue3.1&#xff…...

抽奖系统(3——奖品模块)

1. 图片上传 application.properties 配置上传文件路径 ## 文件上传 ## # 目标路径 pic.local-pathD:/PIC # spring boot3 升级配置名 spring.web.resources.static-locationsclasspath:/static/,file:${pic.local-path} tip&#xff1a; 1. 如果访问的是本地路径&#xff0c…...

36.centos7上安装python3.6.5、安装卸载依赖包

查看openssl的版本号&#xff0c;默认python3.6.5需要OpenSSL 1.0.2以上的版本支持。 监测安装好的python,是否可以正确导入ssl和_ssl包 pip3安装依赖包 通过Pycharm工具导出requirements.txt文件 查看/usr/bin/目录下的软连接 pip3, python...

微透镜阵列精准全检,白光干涉3D自动量测方案提效70%

广泛应用的微透镜阵列 微透镜是一种常见的微光学元件&#xff0c;通过设计微透镜&#xff0c;可对入射光进行扩散、光束整形、光线均分、光学聚焦、集成成像等调制&#xff0c;进而实现许多传统光学元器件难以实现的特殊功能。 微透镜阵列&#xff08;Microlens Array&#x…...

nature genetics | scATAC-seq预测scRNA-seq,识别影响基因表达的新染色质区域

–https://doi.org/10.1038/s41588-024-01689-8 Single-cell multi-ome regression models identify functional and disease-associated enhancers and enable chromatin potential analysis 研究团队和单位 Christina S. Leslie–Memorial Sloan Kettering Cancer Center …...

简述mysql 主从复制原理及其工作过程,配置一主两从并验证。

MySQL 主从同步是一种数据库复制技术&#xff0c;它通过将主服务器上的数据更改复制到一个或多个从服务器&#xff0c;实现数据的自动同步。 主从同步的核心原理是将主服务器上的二进制日志复制到从服务器&#xff0c;并在从服务器上执行这些日志中的操作。 MySQL主从同步是基…...

Java API:封装自定义响应类

本文介绍 Web 服务开发中自定义响应&#xff0c;涵盖标准 HTTP 响应状态码局限性、自定义响应价值、设计原则与实现、在 Spring Boot 项目应用、与其他响应格式对比总结及应用场景。 1. 标准HTTP响应与自定义响应 1.1标准HTTP响应状态码 在 Web 服务开发中&#xff0c;HTTP…...

【Unity3D】利用Hinge Joint 2D组件制作绳索效果

目录 一、动态绳索 &#xff08;可移动根节点&#xff09; 二、静态绳索 三、利用Skinning Editor(Unity2022.3.15f1正常使用) 四、注意事项 一、动态绳索 &#xff08;可移动根节点&#xff09; 动态绳索 DynamicRope空物体 Anchor和whitecircle是相同位置的物体&#xff…...

vim练级攻略(精简版)

vim推荐配置: curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh 0. 规定 Ctrl-λ 等价于 <C-λ> :command 等价于 :command <回车> n 等价于 数字 blank字符 等价于 空格&#xff0c;tab&am…...

嵌入式硬件篇---PID控制

文章目录 前言第一部分&#xff1a;连续PID1.比例&#xff08;Proportional&#xff0c;P&#xff09;控制2.积分&#xff08;Integral&#xff0c;I&#xff09;控制3.微分&#xff08;Derivative&#xff0c;D&#xff09;控制4.PID的工作原理5..实质6.分析7.各种PID控制器P控…...

技术洞察:C++在后端开发中的前沿趋势与社会影响

文章目录 引言C在后端开发中的前沿趋势1. 高性能计算的需求2. 微服务架构的兴起3. 跨平台开发的便利性 跨领域技术融合与创新实践1. C与人工智能的结合2. C与区块链技术的融合 C对社会与人文的影响1. 提升生产力与创新能力2. 促进技术教育与人才培养3. 技术与人文的深度融合 结…...

C语言程序设计之小系统

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 目录 系统说明 1.1 系统概述 1.2 功能模块总体设计详细设计 3.1 程序中使用的函数 3.2各类问…...

pyinstaller : 无法将“pyinstaller”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

pyinstaller : 无法将“pyinstaller”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确保路径正确&#xff0c;然后再试一次。 所在位置 行:1 字符: 1pyinstaller --onefile --windowed 过年烟花.py~~~~~~~~~~~ …...

接口传参 data格式和json格式区别是什么

接口传参 data格式和json格式区别是什么 以下是接口传参 data 格式和 JSON 格式的区别&#xff1a; 定义和范围 Data 格式&#xff1a; 是一个较为宽泛的概念&#xff0c;它可以指代接口传递参数时所使用的任何数据的组织形式。包括但不限于 JSON、XML、Form 数据、纯文本、二进…...

ClickHouse 入门

简介 ClickHouse 是一个列式数据库&#xff0c;传统的数据库一般是按行存储&#xff0c;而ClickHouse则是按列存储&#xff0c;每一列都有自己的存储空间&#xff0c;并且只存储该列的数值&#xff0c;而不是存储整行的数据。这样做主要有几个好处&#xff0c;压缩率高&#x…...

Python自动化:基于faker批量生成模拟数据(以电商行业销售数据为例)

引言&#xff1a;个人认为&#xff0c;“造数据”是一个数据分析师的一项基本技能&#xff0c;当然啦&#xff0c;“造数据”不是说胡编乱造&#xff0c;而是根据自己的需求去构造一些模拟数据集&#xff0c;用于测试等用途&#xff0c;而且使用虚拟数据不用担心数据隐私和安全…...

3.3 OpenAI GPT-4, GPT-3.5, GPT-3 模型调用:开发者指南

OpenAI GPT-4, GPT-3.5, GPT-3 模型调用:开发者指南 OpenAI 的 GPT 系列语言模型,包括 GPT-4、GPT-3.5 和 GPT-3,已经成为自然语言处理领域的标杆。无论是文本生成、对话系统,还是自动化任务,开发者都可以通过 API 调用这些强大的模型来增强他们的应用。本文将为您详细介…...

【Spring Boot】掌握 Spring 事务:隔离级别与传播机制解读与应用

前言 &#x1f31f;&#x1f31f;本期讲解关于spring 事务传播机制介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话…...

力扣203题—— 移除链表元素

题目 递归法使用 if(headnull){return null; }//假设remove返回后面已经去掉val值的链表 我们用head.next去存放他&#xff0c;接着我们要判断此时head head值是否等于val&#xff0c;如果等于我们就返回后继元素即可 head.nextremove(head.next,val); if(head.valval){return…...

Express中间件

目录 Express中间件 中间件的概念 next函数 全局中间与局部中间件 多个中间件 中间的5个注意事项 中间的分类 应用级中间件 路由级中间件 错误级中间件 Express内置中间件 express.json express.urlencoded 第三方中间件​编辑 自定义中间件 Express中间件 中间…...

【AIGC】SYNCAMMASTER:多视角多像机的视频生成

标题&#xff1a;SYNCAMMASTER: SYNCHRONIZING MULTI-CAMERA VIDEO GENERATION FROM DIVERSE VIEWPOINTS 主页&#xff1a;https://jianhongbai.github.io/SynCamMaster/ 代码&#xff1a;https://github.com/KwaiVGI/SynCamMaster 文章目录 摘要一、引言二、使用步骤2.1 TextT…...

模块化架构与微服务架构,哪种更适合桌面软件开发?

前言 在现代软件开发中&#xff0c;架构设计扮演着至关重要的角色。两种常见的架构设计方法是模块化架构与微服务架构。它们各自有独特的优势和适用场景&#xff0c;尤其在C#桌面软件开发领域&#xff0c;模块化架构往往更加具有实践性。本文将对这两种架构进行对比&#xff0…...

Ubuntu 24.04 LTS 安装 tailscale 并访问 SMB共享文件夹

Ubuntu 24.04 LTS 安装 tailscale 安装 Tailscale 官方仓库 首先&#xff0c;确保系统包列表是最新的&#xff1a; sudo apt update接下来&#xff0c;安装 Tailscale 所需的仓库和密钥&#xff1a; curl -fsSL https://tailscale.com/install.sh | sh这会自动下载并安装 …...

fgets、scanf存字符串应用

题目1 夺旗&#xff08;英语&#xff1a;Capture the flag&#xff0c;简称 CTF&#xff09;在计算机安全中是一种活动&#xff0c;当中会将“旗子”秘密地埋藏于有目的的易受攻击的程序或网站。参赛者从其他参赛者或主办方偷去旗子。 非常崇拜探姬的小学妹最近迷上了 CTF&am…...

C#高级:用Csharp操作鼠标和键盘

一、winform 1.实时获取鼠标位置 public Form1() {InitializeComponent();InitialTime(); }private void InitialTime() {// 初始化 Timer 控件var timer new System.Windows.Forms.Timer();timer.Interval 100; // 设置为 100 毫秒&#xff0c;即每 0.1 秒更新一次timer.…...

关于AI agent的学术论文实验部分:准确率,响应时间,用户满意度

关于AI agent的学术论文实验部分 在撰写关于AI agent的学术论文时,实验设计和实施是关键部分,仅搭建完成AI agent通常是不够的,需要通过严谨的实验来验证其性能、效果和创新性。以下以一个在智能客服场景中应用AI agent的例子,说明如何完成实验: 明确实验目的:确定通过实…...

消息队列实战指南:三大MQ 与 Kafka 适用场景全解析

前言&#xff1a;在当今数字化时代&#xff0c;分布式系统和大数据处理变得愈发普遍&#xff0c;消息队列作为其中的关键组件&#xff0c;承担着系统解耦、异步通信、流量削峰等重要职责。ActiveMQ、RabbitMQ、RocketMQ 和 Kafka 作为市场上极具代表性的消息队列产品&#xff0…...

postgresql表分区及测试

本文主要采用list类型实现表分区&#xff0c;并对表分区数据进行查询对比&#xff0c;数据量6000万条以上&#xff0c;速度相差10倍以上。 一、创建表&#xff0c;以substationcode字段为ist类型表分区 CREATE TABLE "public"."d_population_partition" …...

VUE学习笔记(入门)1__创建VUE实例

核心步骤 <div id"app"><!-- 这里存放渲染逻辑代码 --><h1>{{ msg }}</h1><a href"#">{{count}}</a> </div><!-- 引入在线的开发版本核心包 --> <!-- 引入核心包后全局可使用VUE构造函数 --> <…...

STL—stack与queue

目录 Stack stack的使用 stack的模拟实现 queue queue的使用 queue的模拟实现 priority_queue priority_queue的用法 priority_queue的模拟实现 容器适配器 种类 Stack http://www.cplusplus.com/reference/stack/stack/?kwstack stack是栈&#xff0c;后入先出 stack的…...

pthread_create函数

函数原型 pthread_create 是 POSIX 线程&#xff08;pthread&#xff09;库中的一个函数&#xff0c;用于在程序中创建一个新线程。 #include <pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *a…...

suctf2025

Suctf2025 --2标识为看的wp&#xff0c;没环境复现了 所有参考资料将在文本末尾标明 WEB SU_photogallery 思路&#x1f447; 构造一个压缩包&#xff0c;解压出我们想解压的部分&#xff0c;然后其他部分是损坏的&#xff0c;这样是不是就可以让整个解压过程是出错的从而…...

二、点灯基础实验

嵌入式基础实验第一个就是点灯&#xff0c;地位相当于编程界的hello world。 如下为LED原理图&#xff0c;要让相应LED发光&#xff0c;需要给I/O口设置输出引脚&#xff0c;低电平&#xff0c;二极管才会导通 2.1 打开初始工程&#xff0c;编写代码 以下会实现BLINKY常亮&…...

ESP8266-01S、手机、STM32连接

1、ESP8266-01S的工作原理 1.1、AP和STA ESP8266-01S为WIFI的透传模块&#xff0c;主要模式如下图&#xff1a; 上节说到&#xff0c;我们需要用到AT固件进行局域网应用&#xff08;ESP8266连接的STM32和手机进行连接&#xff09;。 ESP8266为一个WiFi透传模块&#xff0c;和…...

微服务学习:基础理论

一、微服务和应用现代化 1、时代的浪潮&#xff0c;企业的机遇和挑战 在互联网化数字化智能化全球化的当今社会&#xff0c;IT行业也面临新的挑战&#xff1a; 【快】业务需求如“滔滔江水连绵不绝”&#xff0c;企业需要更快的交付【变】林子大了&#xff0c;百色用户&…...

【c++继承篇】--继承之道:在C++的世界中编织血脉与传承

目录 引言 一、定义二、继承定义格式2.1定义格式2.2继承关系和访问限定符2.3继承后子类访问权限 三、基类和派生类赋值转换四、继承的作用域4.1同名变量4.2同名函数 五、派生类的默认成员构造函数5.1**构造函数调用顺序&#xff1a;**5.2**析构函数调用顺序&#xff1a;**5.3调…...

Java操作Excel导入导出——POI、Hutool、EasyExcel

目录 一、POI导入导出 1.数据库导出为Excel文件 2.将Excel文件导入到数据库中 二、Hutool导入导出 1.数据库导出为Excel文件——属性名是列名 2.数据库导出为Excel文件——列名起别名 3.从Excel文件导入数据到数据库——属性名是列名 4.从Excel文件导入数据到数据库…...

基于VSCODE+GDB+GDBSERVER远程单步调试设备篇(可视化界面)

目录 说明 配置方法 1&#xff09;VSCODE必备插件 2&#xff09;配置launch.json文件&#xff0c;用于GDB调试 调试步骤 ​​​​​​目标板运行程序 1&#xff09;已启动程序&#xff0c;通过attach方式进入调试 2&#xff09;通过gdbserver启动时加载程序(程序路径根据实际情…...

【设计模式】 单例模式(单例模式哪几种实现,如何保证线程安全,反射破坏单例模式)

单例模式 作用&#xff1a;单例模式的核心是保证一个类只有一个实例&#xff0c;并且提供一个访问实例的全局访问点。 实现方式优缺点饿汉式线程安全&#xff0c;调用效率高 &#xff0c;但是不能延迟加载懒汉式线程安全&#xff0c;调用效率不高&#xff0c;能延迟加载双重检…...

lvm快照备份

前提 数据文件要在逻辑卷上&#xff1b; 此逻辑卷所在卷组必须有足够空间使用快照卷&#xff1b; 数据文件和事务日志要在同一个逻辑卷上&#xff1b; 前提&#xff1a;MySQL数据lv和将要创建的快照要在同一vg&#xff0c;vg要有足够的空间存储 优点 几乎是热备&…...

PHP CRM售后系统小程序

&#x1f4bc; CRM售后系统 &#x1f4fa;这是一款基于PHP和uniapp深度定制的CRM售后管理系统&#xff0c;它犹如企业的智慧核心&#xff0c;精准赋能销售与售后管理的每一个环节&#xff0c;引领企业步入精细化、数字化的全新管理时代。系统集成了客户管理、合同管理、工单调…...

ETL 数据抽取

ETL ETL 数据抽取 ETL&#xff08;Extract, Transform, Load&#xff09;是数据集成和处理的重要过程&#xff0c;其中数据抽取&#xff08;Extract&#xff09;是第一步&#xff0c;负责从各种数据源中提取数据。以下是ETL数据抽取的详细说明和常用工具&#xff1a; 1. 数据…...

FANUC机器人系统镜像备份与恢复的具体步骤(图文)

FANUC机器人系统镜像备份与恢复的具体步骤(图文) 镜像备份: 如下图所示,进入文件—工具—切换设备,找到插入的U盘UT1, 如下图所示,进入U盘目录后,创建目录,这里目录名称为11, 如下图所示࿰...

MindsDB - 构建企业数据源 AI 对话

一、关于 MindsDB MindsDB是世界上最有效的解决方案&#xff0c;用于构建与混乱的企业数据源对话的AI应用程序。把它想象成图书管理员Marie Kondo。 github : https://github.com/mindsdb/mindsdb官网&#xff1a;https://www.mindsdb.com/官方文档&#xff1a;https://docs.…...