MySQL的安装及相关操作
目录
一. 数据库产生的背景
二. 数据库操作系统的组成
2.1 数据库(Database)
2.2 数据库管理系统(DBMS, Database Management System)
2.3 应用程序(Application)
三. 数据库的分类
3.1 关系数据库
3.2 非关系数据库
四. MySQL安装
4.1yum安装
1. Ubuntu
2. centos
3. centos---- 用清华源安装
4.2 编译安装
4.3 二进制下载
centos
Ubuntu
五. MySQL数据库相关的操作
5.1 登录数据库
5.2 查看数据库结构
1. 查看所有数据库
2. 查看数据库信息
3. 查看指定数据库中的表
4. 查看表的属性
5.3 创建数据库和数据表
1. 创建新的数据库
2. 创建新的表
5.4 删除数据库和数据表
1. 删除指定数据库中的表
2. 删除数据库
5.5 管理数据表中的数据记录
1. 查询数据记录
补充:select其他用法
字段使用别名
与算数操作符(+, -, *, /, % )结合
不连续的查询 IN (element1, element2, ...)
2. 向表中插入新的数据
3. 去除重复行
4. like 模糊查询 与 通配符
5. 修改数据表中的数据记录
6. 删除数据表中的数据记录
7. 修改表名和表结构
8. 聚合函数(重要)
一. 数据库产生的背景
在数据库出现之前,数据通常存储在文件系统中,容易导致:
- 数据冗余:相同的数据可能被多个应用程序重复存储,导致数据冗余。
- 数据不一致:由于数据冗余,更新数据时容易产生不一致。
- 数据孤立:数据分散在不同的文件中,难以共享和整合。
二. 数据库操作系统的组成
定义:数据库系统(Database System, DBS)是一个复杂的软件系统,用于存储、管理和操作数据。它由多个组成部分协同工作,共同实现数据的有效管理和使用。
2.1 数据库(Database)
数据库(Database)是用于存储、管理和组织数据的系统或软件。它的核心作用是提供一种系统化的方式来存储和检索信息,以满足不同应用的需求。
2.2 数据库管理系统(DBMS, Database Management System)
用于创建、管理和操作数据库的软件。
2.3 应用程序(Application)
指以数据库为基础的应用程序。
三. 数据库的分类
3.1 关系数据库
- 关系型数据库(Relational Database,RDB)是基于关系模型的数据库。
- 数据以表格(Table)的形式存储,表与表之间通过关系连接,表格由行(Row)和列(Column)组成。
关系数据库常用的关系术语
- 表(Table):存储数据的基本单位。
- 行(Row):表示一条记录。
- 列(Column):表示数据的属性。
- 主键(Primary Key):唯一标识表中的每一行数据,避免数据重复。
-
外键(Foreign Key):是表中的一个列或列的组合,它引用另一个表的主键;用于建立表与表之间的关系。
-
关系(Relationship):指表与表之间的关联,通常通过外键实现。
常见关系数据库:
MySQL,PostgreSQL,Oracle
3.2 非关系数据库
非关系数据库是一种灵活的数据存储系统,适用于非结构化或半结构化数据,不需要预先定义严格的模式,数据结构可以动态调整。
多种数据模型:
-
键值对(Key-Value):如Redis
-
文档型(Document):如MongoDB
-
列族型(Column-Family):如Cassandra
四. MySQL安装
4.1yum安装
1. Ubuntu
apt search mysql
#在已配置的软件包仓库中,找到你需要的MySQL相关软件包apt-get update
#更新本地的软件包缓存apt install mysql-server-8.0 -ysystemctl start mysqlsystemctl status mysqlapt install mycli
#是一个命令行工具,专门用于与MySQL数据库进行交互
2. centos
yum remove mysql-libs #卸载 mariadb的安装联系
#下载软件
rpm -ivh mysql-community-common-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.44-1.el7.x86_64.rpm systemctl start mysqldsystemctl status mysqldgrep password /var/log/mysqld.logmysql -uroot -p 密码alter user root@'localhost' identified by 'Admin@123';
#修改MySQL中root用户的密码
3. centos---- 用清华源安装
vim /etc/yum.repos.d/mysql-community.repo[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-connectors-community-el7-$basearch/
enabled=1
gpgcheck=0
#gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2022[mysql-tools-community]
name=MySQL Tools Community
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-tools-community-el7-$basearch/
enabled=1
gpgcheck=0
#gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2022[mysql-8.0-community]
name=MySQL 8.0 Community Server
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el7-$basearch/
enabled=1
gpgcheck=0
#gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2022yum install mysql-community-server -ysystemctl start mysqldgrep password /var/log/mysqld.logmysql -uroot -p 密码alter user root@'localhost' identified by 'Admin@123';
4.2 编译安装
yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel#依赖环境
yum -y install \
ncurses \
ncurses-devel \
bison \
cmake#添加用户
useradd -s /sbin/nologin mysql#将MySQL源代码包放在 /opt目录下
cd /opttar xf mysql-boost-5.7.20.tar.gz #解压cd mysql-5.7.20#编译
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1#安装
make -j2 && make install
#进入配置文件,把内容全删掉,然后加入以下内容
vim /etc/my.cnf[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES#更改mysql安装目录和配置文件的属主属组
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf#设置路径环境变量
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile#数据库初始化
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data#添加mysqld系统服务
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
#能用systemd启动systemctl daemon-reload 刷新识别
systemctl start mysqld.service 开启服务
systemctl enable mysqld 开机自启动ss -natp | grep 3306 查看端口#修改用户mysql 的登录密码
mysqladmin -u root -p password "123abc"
#开始初始密码为空,回车即可,然后输入新密码
4.3 二进制下载
centos
mkdir -p /datacd /data下载压缩包tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
mkdir /data/mysql -pgroupadd mysqluseradd -r -g mysql -s /bin/false mysqlcd /data/mysql-5.7.20-linux-glibc2.12-x86_64//bin./mysqld --initialize-insecure --user=mysql --datadir=/data/mysql --lc-messages-dir=/data/mysql-5.7.20-linux-glibc2.12-x86_64/share
#会出现warm警告,选择无视即可ln -s /data/mysql-5.7.20-linux-glibc2.12-x86_64 /usr/local/mysql
#ln -s /data/mysql文件名 /usr/local/mysql
#建立软连接#准备配置文件cp /etc/my.cnf{,.bak}
vim /etc/my.cnf
#清空内容
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sockcp /data/mysql-5.7.20-linux-glibc2.12-x86_64/support-files/mysql.server /etc/init.d/mysqld
#为 MySQL 服务创建一个系统服务脚本chkconfig --add mysqldsystemctl start mysqldsystemctl status mysqldecho 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh. /etc/profile.d/mysql.sh
Ubuntu
groupadd -r -g 306 mysql
useradd -r -g 306 -u 306 -d /data/mysql mysqlmkdir /data/mysql -p
chown mysql:mysql /data/mysqlcd /data
#下载mysql压缩包
tar xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
ln -s /data/mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysqlvim /etc/my.cnf
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sockecho 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.shmysqld --initialize --user=mysql --datadir=/data/mysqlcp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldsystemctl daemon-reload
systemctl start mysqldgrep password /var/log/mysqld.log
mysql -u root -p '密码'
alter user root@'localhost' identified by 'abc123';create user test@'192.168.%.%' identified by '123123';
grant all privileges on *.* to test@'192.168.%.%';
ALTER USER 'test'@'192.168.%.%' IDENTIFIED WITH mysql_native_password BY 'Admin@123';
五. MySQL数据库相关的操作
5.1 登录数据库
mysql -u root -p password "密码" #设置密码mysql -u root -p #没有设置密码
5.2 查看数据库结构
1. 查看所有数据库
show databases; #大小写不区分,分号“;”表示结束
2. 查看数据库信息
show create database 数据库名;
3. 查看指定数据库中的表
use 表名;
show tables;
4. 查看表的属性
use 数据库名;
desc 表名;
5.3 创建数据库和数据表
1. 创建新的数据库
create database 数据库名;
举例:我要建立一个名为dhf的数据库
create database dhf;
2. 创建新的表
CREATE TABLE 表名 (列名1 数据类型 [列约束],列名2 数据类型 [列约束],...[表约束]
);列名:
列名是表中每一列的名称,需符合 MySQL 的命名规则。数据类型:
数据类型定义了列中存储的数据类型,常用数据类型:
整数:INT、BIGINT、TINYINT
浮点数:FLOAT、DOUBLE
字符串:VARCHAR(n)、CHAR(n)、TEXT
日期时间:DATE、DATETIME、TIMESTAMP
布尔值:BOOLEAN 或 TINYINT(1)列约束:
列约束用于限制列中数据的规则。
常用列约束:
NOT NULL:列值不能为空。
UNIQUE:列值必须唯一。
PRIMARY KEY:列作为主键,唯一标识每一行。
AUTO_INCREMENT:列值自动递增(通常用于主键)。
DEFAULT 默认值:为列指定默认值。
CHECK (条件):列值必须满足指定条件(MySQL 8.0+支持)。表约束:
表约束用于定义表级别的规则。
常用表约束:
PRIMARY KEY (列名):定义主键。
FOREIGN KEY (列名) REFERENCES 另一表名(列名):定义外键。
UNIQUE (列名):定义唯一约束。
CHECK (条件):定义表级别的检查约束(MySQL 8.0+ 支持)。
举例:我将建立一个名为dhf的数据库,并在其中建立一个名为students的数据表
create database dhf;use dhf;
CREATE TABLE students (student_id INT AUTO_INCREMENT PRIMARY KEY, -- 学生ID,主键,自动递增name VARCHAR(100) NOT NULL, -- 学生姓名,不能为空gender ENUM('男', '女', '其他') NOT NULL, -- 性别,枚举类型,不能为空birth_date DATE, -- 出生日期email VARCHAR(100) UNIQUE, -- 邮箱,唯一phone VARCHAR(20), -- 电话address VARCHAR(255), -- 地址class_id INT -- 班级ID
);desc students;
#查看表
5.4 删除数据库和数据表
1. 删除指定数据库中的表
方法一:
use 数据库名;
drop table 表名;方法二:
drop table 数据库名.表名; #不用USE进入库中,需加上数据库名
2. 删除数据库
drop database 数据库名;
5.5 管理数据表中的数据记录
接下来以hellodb数据库中的students数据表为操作对象
1. 查询数据记录
select 字段名1,字段名2[,...] from 表名 [where 条件表达式];
举例1:我要查询hellodb数据库下的students表中的所有记录
select * from students;
举例2:我只要查看students表中Name的记录
举例3:我只要查看students表中Name和Age的记录
select Name from students;select Name,Age from students;
举例4:查询students表中年龄大于等于20,小于等于30的
方法一:
select * from students where age>=20 and age<=30;方法二:
select * from students where age between 20 and 30;
补充:select其他用法
字段使用别名
select age 年龄,classid 班级 from students;
与算数操作符(+, -, *, /, % )结合
select 2*3;
用别名进一步优化
select 2*3 as result;
不连续的查询 IN (element1, element2, ...)
举例:查询年龄在20,22,30的人
select * from students where age in (20,22,30);
2. 向表中插入新的数据
insert into表名(字段1,字段2[,...]) values(字段1的值,字段2的值,...);
举例1:
insert into students (StuID,Name,Age,Gender,ClassID,TeacherID) values(26,"Ding Huangfei",23,M,4,6);
3. 去除重复行
select distinct column1, column2, ...from 表名;
举例:从 students
表中查询所有学生的年龄,并返回不重复的年龄值
select distinct age from students;
4. like 模糊查询 与 通配符
select "字段" from "表名" where "字段" like "匹配表达式";
SQL 中常用的通配符有两种:
(1) %
(百分号)
-
表示 任意长度的任意字符(包括 0 个字符)。
-
示例:
-
'a%'
:匹配以a
开头的字符串。 -
'%a'
:匹配以a
结尾的字符串。 -
'%a%'
:匹配包含a
的字符串。
-
(2) _
(下划线)
-
表示 单个任意字符。
-
示例:
-
'a_'
:匹配以a
开头且长度为 2 的字符串。 -
'_a'
:匹配以a
结尾且长度为 2 的字符串。
-
举例:
select * from students where name like 's%'; #找到名字以s开头的
select * from students where name like '%s%'; #找到名字包含s
5. 修改数据表中的数据记录
UPDATE 表名
SET column1 = value1, column2 = value2, ...
WHERE 限制条件;
举例:将StuID为1的学生的年龄更新为 29
UPDATE students
SET age = 20
WHERE StuID = 1;
6. 删除数据表中的数据记录
delete from 表名 where 条件表达式;
举例:删除students表中StuID为3的记录
delete from students where StuID=3;
7. 修改表名和表结构
#修改表名
alter table 旧表名 rename 新表名;#扩展表结构(增加字段)
alter table 表名 add 新字段 数据类型 [字段属性];#修改字段(列)名,
alter table 表名 change 旧字段 新字段 数据类型 [字段属性];#删除字段
alter table 表名 drop 字段名;
举例:
#将students重命名为stu
alter table students rename stu;#在stu表中添加一个height列,数据类型为FLOAT,不允许为空
alter table stu add height float not null; #删除height列
alter table stu drop height;
8. 聚合函数(重要)
函数名 | 函数意 |
---|---|
avg() | 返回指定列的平均值 |
count() | 返回指定列中非 NULL 值的个数 |
min() | 返回指定列的最小值 |
max() | 返回指定列的最大值 |
sum(x) | 返回指定列的所有值之和 |
#avg平均值select avg(age) from students; #avg 所有人的平均值
select avg(age) from students where classid=1; #求1班年龄平均值
#count返回指定列中非NULL值的个数select count(classid) from students; #统计非空classid 字段 一共有多少行记录select count(distinct classid) from students; #一共有几个班级 去重select count(classid) from students; #统计一共有多少个班级
select count(*) from students; #统计一共有多少条数据
#min最小值
select min(age) from students;#max最大值
select max(classid) from students;
#sum求和
select sum(age) from students; #求年龄总和
select sum(age) from students where classid=1; #求1班的年龄总和
相关文章:
MySQL的安装及相关操作
目录 一. 数据库产生的背景 二. 数据库操作系统的组成 2.1 数据库(Database) 2.2 数据库管理系统(DBMS, Database Management System) 2.3 应用程序(Application) 三. 数据库的分类 3.1 关系数据库 3.2 非关系数据库 四. MySQL安装 4.1yum安装 1. Ubuntu 2. cent…...
【Code】Foundations 2017- Catalogue, List of Tables, List of Figures
Foundations 2017 目录 | Catalogue表格目录 | List of Tables图表目录 | List of Figures 目录 | Catalogue 英文原文中文翻译词汇学习(音标和解释)1. General1. 总则1.1 Scope1.1 范围1.2 Glossary1.2 术语表Glossary [ˈɡlɒsəri] 术语表ÿ…...
【TCGA-CRC】TCGA数据读取
写在前面 参考已有的帖子写的,但是临床数据和UCSC的不同。有知道的小伙伴欢迎指正。 rm(list ls()); gc() test1 data.table::fread("./00_Rawdata/GDCdata/TCGA-COAD/Transcriptome_Profiling/Gene_Expression_Quantification/00ae9ab8-6eaa-4085-af72-26…...
BYUCTF 2025
几周没会的比赛了,都是一题游。这周的BYU还不错,难度适中,只是时间有点短。周末时间不够。 Crypto Many Primes from Crypto.Util.number import bytes_to_long, getPrime import randomflag open("flag.txt").read().encode()…...
【Linux】初见,基础指令(续)
前言: 上文讲解了部分指令,本文我们来讲解剩下的指令【Linux】初见,基础指令-CSDN博客 cat指令 语法:cat 选项 文件 功能:打印文件中的内容 选项: -b 对非空行输出进行编号 -n 对输出的说有行进行编号…...
《MambaLLIE:基于隐式Retinex感知的低光照增强框架与全局-局部状态空间建模》学习笔记
Paper:2405.16105 Github:GitHub - wengjiangwei/MambaLLIE 目录 摘要 一、介绍 二、相关工作 2.1 低光图像增强 2.2 视觉空间状态模型 三、方法 3.1 预备知识 3.2 整体流程 3.3 全局优先-局部次之状态空间块 四、实验 4.1 基准数据集与实施细节 4.2 对比实验 4…...
计算机图形学Games101笔记--几何
第二部分:几何 几何介绍 光栅化解决如何渲染,几何研究模型如何存储在GPU的内存中。几何主要分为两种:隐式几何和显式几何。 **隐士几何:**用点之间的关系存储,如球的计算公式。更一般的可以用f(x,y,z)。我们可以令f…...
Web开发-Python应用Flask框架Jinja模版绑定路由参数传递页面解析SSTI注入
知识点: 1、安全开发-Python-Flask&Jinja2 2、安全开发-Python-路由传参&SSTI注入 演示案例-WEB开发-Python-Flask框架&Jinja2模版&路由传参&SSTI注入 0、Pycharm 配置Python解析 新建Flask项目 1、路由传参 app.route(/) app.route(/<id…...
聚焦开放智能,抢占技术高地 | 2025 高通边缘智能创新应用大赛第五场公开课来袭!
随着2025高通边缘智能创新应用大赛的推进,越来越多的参赛者关注如何借助高性能硬件突破技术瓶颈、打造差异化作品。 5月27日晚8点,大赛将开启初赛阶段的第五场专题公开课——由美格软件研究院院长李书杰领衔,深入解析高通平台的底层架构与参…...
NMOS和PMOS的区别
1 区分NMOS和PMOS:衬底箭头指向G级的是NMOS,衬底箭头背向G级的是PMOS 2 区分D和S级:针对NMOS,体二极管的正方向为S级;针对PMOS,体二极管正的方向为D级 3 区分电流方向:针对NMOS,电…...
Paillier加密方案的原理、实现与应用(vs)
一、实验目的 1、掌握NTL的基本配置和方法(以下是以visualstudio为例) 2、掌握Paillier加密方案的原理与实现 ①钥匙生成:首先,生成一把钥匙,包括钥匙和私钥匙。钥匙由两个大素数(p,q)的乘积n和一个整数g组成&#…...
Metal入门,使用Metal绘制3D图形
这次是使用Metal绘制一个立方体,并且添加旋转效果,绘制正方形的步骤很简单,我们绘制一个正方形就相当于绘制两个三角形,那么绘制一个正方体,我们很容易想到需要绘制他六个面,很显然,我们也需要把…...
Java 04 API
API 简介 一些已经写好的应用程序编程接口Object toString 默认返回的是当前对象在堆内存中的地址值信息:类的全类名十六进制哈希值返回该对象的返回值 class A{ } //返回的是地址哦 String sA.toString(); //细节:使用打印语句,打印对象…...
基于Gitee 的开发分支版本管理规范
一、版本管理规范概述 目的:规范代码分支管理和版本发布流程,提高团队协作效率,确保代码质量和版本可追溯性。适用范围:基于 Gitee 平台开发的所有项目。分支策略:采用 Git Flow 模型的变体,主要分支包括 …...
HOW - 结合 AI 进行 Tailwind 样式开发
文章目录 情况 1:使用 Tailwind CSS 与手写传统 CSS 的开发效率对比情况 2:AI Tailwind 自动生成 UI 的效率如何?总结 在 WHAT - Tailwind 样式方案(不写任何自定义样式) 中我们已经简单介绍过 Tailwind。今天主要认识…...
系统数据对接-从获取到处理的全流程
在后端架构的复杂生态中,子系统间或与外部系统的对接是常态,其核心要义在于实现数据的精准传输。本文聚焦于数据传输后的运算逻辑与异常处理机制,旨在为后端开发者提供深度见解。 一、数据获取机制:触发式与定时任务的权衡 &…...
Java 09Stream流与File类
Stream流与File类 Stream流 简化集合和数组的操作,startWith(“张”) 第一个为这个返回true String1.获取Stream对象 单列集合 双列集合 先获得键值对 在遍历数组 零散的数据 Stream<Integer> arrStream.of(1,2,34,3); stream.forEach(sss); 即可2.中间…...
《光与影:33号远征队》栩栩如生的角色动画是如何创建的?
《光与影:33号远征队》是一款由Sandfall Interactive公司开发的回合制RPG游戏,背景是一个黑暗的幻想世界。游戏因其独特的艺术风格和引人注目的叙事赢得了无数赞誉,成为今年大热游戏中的一匹黑马。 在该游戏制作中Sandfall依靠包括Xsens在内的…...
GESP2024年12月认证C++二级( 第三部分编程题(1)寻找数字)
参考程序(枚举): #include <iostream> //#include <cmath> using namespace std;int main() {int t;cin >> t;while (t--) {long long a;cin >> a;bool found false;// 枚举 b for (long long b 1; b * b * b * b…...
《探索具身智能机器人视觉-运动映射模型的创新训练路径》
视觉 - 运动映射模型作为实现智能交互与精准行动的核心,吸引着全球科研人员与技术爱好者的目光。这一模型就像机器人的 “神经中枢”,连接着视觉感知与肢体运动,使机器人能够在复杂的现实环境中灵活应对各种任务。 传统的视觉 - 运动映射模型…...
Python打卡DAY31
今日的示例代码包含2个部分 notebook文件夹内的ipynb文件,介绍下今天的思路项目文件夹中其他部分:拆分后的信贷项目,学习下如何拆分的,未来你看到的很多大项目都是类似的拆分方法 知识点回顾 规范的文件命名规范的文件夹管理机器学…...
【SPIN】PROMELA远程引用与控制流验证(SPIN学习系列--5)
PROMELA语言提供了两种强大的机制用于验证并发系统:远程引用(remote references)和进程变量引用。这些机制使得在不引入额外状态变量的情况下,能够精确描述系统状态和属性。 远程引用(Remote References) 远程引用允许你直接引用进程中的控制位置(labe…...
GMSL:汽车里的音视频传输
参考链接: blog.csdn.net/weixin_50875614/article/details/119995651 blog.csdn.net/syjie19900426/article/details/145269782 SerDes 应用场景 WHAT GMSL是什么 GMSL(Gigabit Multimedia Serial Links),中文名称为千兆多媒体串行链路,是Maxim公司推出的一种…...
Java并发进阶系列:深度讨论jdk1.8 ConcurrentHashMap并发环境下transfer方法桶位分配过程
在前面有多篇关于jdk1.8的ConcurrentHashMap研究是基于源代码给出的深度分析,要知道多线程环境下的ConcurrentHashMap内部运行机制是相对复杂的,好在IDEA提供的相关断点和Debug功能确实好用,使得多线程调试起来直观,通过这种方式能…...
【深度学习-Day 14】从零搭建你的第一个神经网络:多层感知器(MLP)详解
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
fdisk和parted的区别
在Linux系统中,fdisk和parted是两种常用的分区工具。虽然它们都可以对硬盘进行分区,但在功能和适用范围上有显著的区别。 fdisk fdisk主要用于MBR(主引导记录)分区表的管理。MBR分区表有以下特点: 支持小于2TB的硬盘…...
springMVC拦截器,拦截器拦截策略设置
目录 1、MyInterceptor1 2、UserController 3、MvcConfig,拦截器4种拦截方法策略 做请求的校验,如果校验没有通过,直接返回,原来下面的处理,就不用处理了 将request进行拦截校验 将response进行拦截校验 preHandle…...
如何测试北斗卫星通讯终端的性能?
测试北斗卫星通讯终端的性能需从功能、性能、环境适应性、可靠性等多维度展开,以下是具体测试内容与方法: 一、基础功能测试 验证终端是否满足北斗系统的核心通讯功能。 (1)通信模式测试 短报文通信 测试终端发送 / 接收短报…...
基于MakeReal3D的虚拟预装系统:飞机装配效率与精度的双重突破
在航空制造领域,飞机部件的对接装配是飞机制造过程中的关键环节。传统的部件装配方式高度依赖操作人员的经验和反复调整,调姿过程耗时较长,且难以保证每次装配都能达到最优状态。随着虚拟现实技术的成熟,虚拟装配技术作为一种新兴…...
IP54是什么?
IP54是什么 定义 IP54是一种国际标准,用来指示设备的防护等级,该标准由国际电工委员会(IEC)制定,并在许多领域广泛使用13。IP是Ingress Protection的缩写,IP等级是针对电气设备外壳对异物侵入的防护等级。…...
Python异步编程详解
Python异步编程详解 引言 异步编程是Python中处理并发操作的重要方式,它允许程序在等待I/O操作时执行其他任务,从而提高程序的整体效率。本文将详细介绍Python异步编程的概念、实现方式以及实际应用场景。 1. 异步编程基础 1.1 什么是异步编程&#x…...
AUC与Accuracy的区别
下面分别解释下这两句话的含义及其原因,并说明 AUC 与 Accuracy(准确率)的区别: AUC 是阈值无关的指标 • 含义:在二分类问题中,模型通常会输出一个概率值或打分,需要设定一个阈值来将这些概…...
差分数组:原理与应用
一、什么是差分数组 差分数组是一种高效处理区间更新操作的数据结构技巧,特别适用于需要对数组的某个区间进行频繁增减操作的场景。差分数组的核心思想是通过存储相邻元素的差值而非元素本身,将区间操作转化为端点操作,从而将时间复杂度从O(…...
一些C++入门基础
关键字 图引自 C 关键词 - cppreference.com 命名空间 命名空间解决了C没办法解决的各类命名冲突问题 C的标准命名空间:std 命名空间中可以定义变量、函数、类型: namespace CS {//变量char cs408[] "DS,OS,JW,JZ";int cs 408;//函数vo…...
免费插件集-illustrator插件-Ai插件-路径尖角圆角化
文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,实现图形编辑中路径尖角圆角化。首先从下载网址下载这款插件https://download.csdn.net/download/m0_67316550/87…...
数据分析_商务运营考核指标体系搭建
以抖音电商中的小学教辅书籍业务为例,搭建对接达人的商务运营团队能力考核指标体系,涵盖达人筛选、合作管理、效果追踪和长期价值维护等核心环节,结合教育产品特性和商务运营目标,设计分层量化指标: 一、考核目标 围绕…...
基于Java的校运会管理系统【附源码】
湄洲湾职业技术学院 毕业设计(论文) 课题名称: 系 别: 专 业: 年 级: 姓 名: 学 号: 指导教师: 摘 要 用传统的方式来管理信息,一是耗时较长,二是…...
保证数据库 + redis在读写分离场景中事务的一致性
在 Spring Boot 中实现数据库与 Redis 的一致性,特别是处理读写分离时,确保数据修改的事务一致性是一个常见的挑战。因为 Redis 是一个内存数据库,通常用于缓存,而关系型数据库是持久化存储,两者之间的数据同步和一致性…...
【Redis】跳表结构
目录 1、背景2、跳表【1】底层结构【2】关键操作【3】redis使用跳表原因【4】特性 1、背景 redis中的跳表是一种有序数据结构,主要用于实现有序集合(zset)。跳表通过多级索引实现高效查找(平均O(logN)时间复杂度)&…...
Semaphore解决高并发场景下的有限资源的并发访问问题
在高并发编程的领域中,我们常常面临着对有限资源的激烈抢夺问题。而 Java 的 java.util.concurrent 包提供的 Semaphore ,为我们提供了精准控制对有限资源并发访问的强大能力。 一、Semaphore? Semaphore,直译为 “信号量”&#…...
医学影像辅助诊断系统开发教程-基于tensorflow实现
源码下载地址: https://download.csdn.net/download/shangjg03/90873910 1. 简介 医学影像辅助诊断系统是利用计算机视觉和深度学习技术,帮助医生分析医学影像(如X光、CT、MRI等)并提供诊断建议的系统。本教程将指导你开发一个基于深度学习的胸部X光肺炎检测系统。 2. 准备…...
手动导出Docker进行并自动执行脚本命令的操作方法
若你已在 Docker 镜像里手动封装好文件,想让容器启动时自动执行 start.sh 脚本,可按以下步骤操作将镜像导出,同时确保启动时能自动执行脚本。 1. 提交当前容器为新镜像 假设你是在某个运行中的容器里进行文件封装操作的,要先把这个容器的当前状态提交为一个新的 Docker 镜…...
Mysql 中的日期时间函数汇总
前言 在 MySQL 中,处理日期和时间是非常常见的需求,MySQL中内置了大量的日期和时间函数,能够灵活、方便地处理日期和时间数据,本节就简单介绍一下 MySQL中内置的日期和时间函数,以便更好地利用这些函数来处理日期和时间…...
RabbitMQ Topic RPC
Topics(通配符模式) Topics 和Routing模式的区别是: topics 模式使⽤的交换机类型为topic(Routing模式使⽤的交换机类型为direct)topic 类型的交换机在匹配规则上进⾏了扩展, Binding Key⽀持通配符匹配(direct类型的交换机路 由规则是BindingKey和RoutingKey完全匹配) 在top…...
Conda环境管理:确保Python项目精准复现
探讨如何使用 Conda 有效地管理项目依赖,确保你的 Python 环境可以被精确复制和轻松共享 为什么依赖管理如此重要? 在开始具体操作之前,我们先来理解一下为什么环境依赖管理至关重要: 可复现性 (Reproducibility):无…...
基于PyTorch的医学影像辅助诊断系统开发教程
本文源码地址: https://download.csdn.net/download/shangjg03/90873921 1. 简介 本教程将指导你使用PyTorch开发一个完整的医学影像辅助诊断系统,专注于胸部X光片的肺炎检测。我们将从环境搭建开始,逐步介绍数据处理、模型构建、训练、评估以及最终的系统部署。...
Vue3——Pinia
目录 什么是 Pinia? 为什么选择 Pinia? 基本使用 安装pinia 配置pinia 定义store 使用 持久化插件 什么是 Pinia? Pinia 是一个轻量级的状态管理库,专为 Vue 3 设计。它提供了类似 Vuex 的功能,但 API 更加简…...
Java中Collections工具类中常用方法详解
文章从工具类的概述、常用方法的作用、实现原理到使用注意事项,都进行了详细说明,供你参考。 Java中Collections工具类中常用方法详解 在Java开发中,集合是存储和处理数据的重要容器,而java.util.Collections工具类则提供了一组静…...
面经总目录——持续更新中
说明 本面经总结了校招时我面试各个公司的面试题目,每场面试后我都及时进行了总结,同时后期补充扩展了同类型的相近面试题,校招时从两个方向进行投递,视觉算法工程师和软件开发工程师(C方向),所…...
电力设备智能化方案复盘
本文针对公司在售的一款电力设备智能化方案的运营情况进行复盘分析,提出一些基于研发人员角度的看法及建议,欢迎大家交流,因本人经验有限,多多包涵。具体的产品用途和公司名称不方便透露。 1.背景 本方案是针对电网配电侧中某关键…...