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

MySQL 概述 数据库表操作 数据增删改

目录

  • MySQL概述
    • 前言
    • 安装与配置
      • MySQL登录与卸载
    • 数据模型概述
    • SQL简介
      • SQL通用语法简介
      • SQL分类
  • 数据库设计(数据库操作)-DDL
    • 数据库操作
      • 查询数据库 show databases、select database()
      • 创建数据库 create database
      • 使用数据库 use
      • 删除数据库 drop database
    • 图形化工具
      • 连接数据库
      • 操作数据库
    • 表操作
      • 创建表
        • 创建表语法 create table
        • 创建表约束语法 primary key、not null、unique、auto_increment等
        • 创建表数据类型
      • 查询表 desc、show create table
      • 修改表 alter table、add、modify、change等
      • 删除表 drop table
  • 数据库操作-DML(数据增删改)
    • 增加数据(insert)
    • 修改数据(update)
    • 删除数据(delete)

MySQL概述

前言

web开发调用流程图如下所示,程序员给数据库管理系统(DBMS)发送SQL语句,再由数据库管理系统操作数据库当中的数据。

在这里插入图片描述

排名前十的数据库:

在这里插入图片描述

Oracle:大型的收费数据库,Oracle公司产品,价格昂贵。(通常是不差钱的公司会选择使用这个数据库)
MySQL:开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle又收购了Sun公司。目前Oracle推出两个版本的Mysql:社区版(开源免费)、商业版(收费)。
SQL Server:Microsoft 公司推出的收费的中型数据库,C#、.net等语言常用。
PostgreSQL:开源免费的中小型数据库。
DB2:IBM公司的大型收费数据库产品。
SQLLite:嵌入式的微型数据库。Android内置的数据库采用的就是该数据库。
MariaDB:开源免费的中小型数据库。是MySQL数据库的另外一个分支、另外一个衍生产品,与MySQL数据库有很好的兼容性。

这些数据库都是属于关系型数据库,要操作关系型数据库都是通过 SQL语句来实现的,而SQL语句又是操作关系型数
据库的统一标准。

下面来学习MySQL。


安装与配置

官网免费版下载地址

下载完安装包后解压到想安装的位置,然后添加环境变量,在系统变量中新建MYSQL_HOME,其值为解压后的文件夹位置,再将%MYSQL_HOME%\bin添加到PATH。

cmd输入mysql,如果提示Can’t connect to MySQL server on ‘localhost’ 则证明添加成功。

再以管理员身份,运行命令行窗口,运行mysqld --initialize-insecure。data目录初始化没有问题则MySQL目录下已经有data目录生成。

再以管理员身份,运行命令行窗口,mysqld -install,至此MySQL服务安装完成。

MySQL的cmd启动与关闭:

net start mysql // 启动mysql服务
net stop mysql // 停止mysql服务

修改密码
在黑框里敲入mysqladmin -u root password 1234 ,这里的1234 就是指默认管理员(即root账户)的密码,可以修改成你想要的。

MySQL登录与卸载

启动mysql服务后在命令行输入登录参数:

mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306)

比如输入mysql -uroot -p1234回车,出现下图且左下角为mysql>,则登录成功。

在这里插入图片描述

1.密码直接在-p参数之后直接指定 (这种方式不安全,密码直接以明文形式出现在命令行)
2.密码在-p回车之后,在命令行中输入密码,然后回车:

在这里插入图片描述

退出mysql:
exit
quit

卸载:
管理员身份,运行命令行窗口,net stop mysql停止服务,mysqld -remove mysql,删除。最后删除MySQL目录及相关的环境变量。卸载完毕。

PS:上述的MySQL服务器我们是安装在本地的,在真实的企业开发中,MySQL是在公司的服务器上安装的,并不是你一个人在访问。接下来,就来演示一下,通过MySQL的客户端命令行,如何来连接服务器上部署的MySQL :

在这里插入图片描述




数据模型概述

关系型数据库(RDBMS):建立在关系模型基础上,由多张相互连接的二维表组成的数据库。
而所谓二维表,指的是由行和列组成的表,如下图:

在这里插入图片描述

二维表的优点:
使用表存储数据,格式统一,便于维护
使用SQL语言操作,标准统一,使用方便,可用于复杂查询

基于二维表存储数据的数据库就成为关系型数据库,不是基于二维表存储数据的数据库,就是非关系型数据库(比如后面要学习的Redis,就属于非关系型数据库)。

在这里插入图片描述

在Mysql数据库服务器当中存储数据,你需要:

1. 先去创建数据库(可以创建多个数据库,之间是相互独立的)
2. 在数据库下再去创建数据表(一个数据库下可以创建多张表)
3. 再将数据存放在数据表中(一张表可以存储多行数据)



SQL简介

SQL:结构化查询语言。一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。

SQL通用语法简介

1、SQL语句可以单行或多行书写,以分号结尾。

在这里插入图片描述

2、SQL语句可以使用空格/缩进来增强语句的可读性。

在这里插入图片描述

3、MySQL数据库的SQL语句不区分大小写。

在这里插入图片描述

4、注释:
单行注释:-- 注释内容 或 # 注释内容(MySQL特有)
多行注释: /* 注释内容 */



SQL分类

SQL语句根据其功能被分为四大类:DDL、DML、DQL、DCL

在这里插入图片描述

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限



数据库设计(数据库操作)-DDL

项目开发流程:

在这里插入图片描述

在上述的流程当中,针对于数据库来说,主要包括三个阶段:

1. 数据库设计阶段
参照页面原型以及需求文档设计数据库表结构
2. 数据库操作阶段
根据业务功能的实现,编写SQL语句对数据表中的数据进行增删改查操作
3. 数据库优化阶段
通过数据库的优化来提高数据库的访问性能。优化手段:索引、SQL优化、分库分表等

接下来我们就先来学习第一部分数据库的设计,就是定义数据库,定义表结构以及表中的字段。

数据库操作

DDL中数据库的常见操作:查询、创建、使用、删除。

查询数据库 show databases、select database()

查询所有数据库:show databases;

在这里插入图片描述


查询当前数据库:select database();
我们要操作某一个数据库,必须要切换到对应的数据库中。
通过指令:select database() ,就可以查询到当前所处的数据库

在这里插入图片描述


创建数据库 create database

语法:create database [ if not exists ] 数据库名;

在这里插入图片描述

可以使用if not exists来避免这个问题


使用数据库 use

语法:use 数据库名;

我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则不能操作。


删除数据库 drop database

语法:drop database [ if exists ] 数据库名;

如果删除一个不存在的数据库,将会报错。

PS:

上述语法中的database,也可以替换成 schema
如:create schema db01;
如:show schemas;



图形化工具

目前MySQL主流的图形化界面工具有以下几种:

在这里插入图片描述

DataGrip是JetBrains旗下的一款数据库管理工具,已经集成到了 IDEA当中,所以我们就可以使用IDEA来作为一款图形化界面工具来操作Mysql数据库。

连接数据库

1、打开IDEA自带的Database,配置MySQL

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

默认情况下,连接上了MySQL数据库之后, 数据库并没有全部展示出来。 需要选择要展示哪些数据库。具体操作如下:

请添加图片描述



操作数据库

创建数据库:

在这里插入图片描述

在这里插入图片描述

查看所有数据库:

在这里插入图片描述

在这里插入图片描述




表操作

继续学习DDL语句当中关于表结构的操作。
关于表结构的操作也是包含四个部分:创建表、查询表、修改表、删除表。

创建表

创建表语法 create table
create table  表名(字段1  字段1类型 [约束]  [comment  字段1注释 ],字段2  字段2类型 [约束]  [comment  字段2注释 ],......字段n  字段n类型 [约束]  [comment  字段n注释 ] 
) [ comment  表注释 ] ;

注意: [ ] 中的内容为可选参数; 最后一个字段后面没有逗号


案例:创建tb_user表,对应的结构如下:

在这里插入图片描述

建表语句:

create table tb_user (id int comment 'ID,唯一标识',   # id是一行数据的唯一标识(不能重复)username varchar(20) comment '用户名',name varchar(10) comment '姓名',age int comment '年龄',gender char(1) comment '性别'
) comment '用户表';

建表之前注意要选择对应的数据库,可以使用use语句,也可以直接在idea选中对应的数据库:

请添加图片描述

双击打开tb_user表结构,发现可以插入俩条id相同的数据,因为我们还没加上约束。

在这里插入图片描述

在这里插入图片描述



创建表约束语法 primary key、not null、unique、auto_increment等

在MySQL数据库当中,提供了以下5种约束:

约束描述关键字
非空约束限制该字段值不能为nullnot null
唯一约束保证字段的所有数据都是唯一、不重复的unique
主键约束主键是一行数据的唯一标识,要求非空且唯一primary key
默认约束保存数据时,如果未指定该字段值,则采用默认值default
外键约束让两张表的数据建立连接,保证数据的一致性和完整性foreign key

tb_user表的结构如下

在这里插入图片描述

在上述的表结构中:

id 是一行数据的唯一标识
username 用户名字段是非空且唯一的
name 姓名字段是不允许存储空值的
gender 性别字段是有默认值,默认为男

建表语句:

create table tb_user (id int primary key comment 'ID,唯一标识', username varchar(20) not null unique comment '用户名',name varchar(10) not null comment '姓名',age int comment '年龄',gender char(1) default '男' comment '性别'
) comment '用户表';

数据表创建完成,测试发现表中字段上的约束生效

PS:id字段下存储的值,如果由我们自己来维护会比较麻烦(必须保证值的唯一性)。MySQL数据库为了解决这个问题,给我们提供了一个关键字:auto_increment(自动增长)

主键自增:auto_increment

每次插入新的行记录时,数据库自动生成id字段(主键)下的值具有auto_increment的数据列是一个正数序列开始增长(从1开始自增)

create table tb_user (id int primary key auto_increment comment 'ID,唯一标识', #主键自动增长username varchar(20) not null unique comment '用户名',name varchar(10) not null comment '姓名',age int comment '年龄',gender char(1) default '男' comment '性别'
) comment '用户表';

也可以使用图形化界面来创建表结构,更加直观、方便:

在这里插入图片描述



创建表数据类型

MySQL中的数据类型主要分为三类:数值类型、字符串类型、日期时间类型。

数值类型

类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述
TINYINT1byte(-128,127)(0,255)小整数值
SMALLINT2bytes(-32768,32767)(0,65535)大整数值
MEDIUMINT3bytes(-8388608,8388607)(0,16777215)大整数值
INT/INTEGER4bytes(-2147483648,2147483647)(0,4294967295)大整数值
BIGINT8bytes(-263,263-1)(0,2^64-1)极大整数值
FLOAT4bytes(-3.402823466 E+38,3.402823466351 E+38)0 和 (1.175494351 E-38,3.402823466 E+38)单精度浮点数值
DOUBLE8bytes(-1.7976931348623157 E+308,1.7976931348623157 E+308)0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308)双精度浮点数值
DECIMAL依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度)的值小数值(精度更高)
示例: 年龄字段 # 不会出现负数, 而且人的年龄不会太大age tinyint unsigned分数 ---总分100分, 最多出现一位小数score double(4,1) # 4表示整个数字长度,1 表示小数位个数decimal(5,2)# 5表示整个数字长度,2 表示小数位个数

字符串类型

类型大小描述
CHAR0-255 bytes定长字符串(需要指定长度)
VARCHAR0-65535 bytes变长字符串(需要指定长度)
TINYBLOB0-255 bytes不超过255个字符的二进制数据
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据
char是定长字符串,指定长度多长,就占用多少个字符
varchar是变长字符串,指定的长度为最大占用长度
相对来说,char的性能会更高些,但会浪费空间示例:用户名 username ---长度不定, 最长不会超过50username varchar(50)手机号 phone ---固定长度为11phone char(11)

日期时间类型

类型大小范围格式描述
DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155YYYY年份值
DATETIME81000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳
示例:生日字段 birthday ---生日只需要年月日birthday date创建时间 createtime --- 需要精确到时分秒createtime datetime




查询表 desc、show create table

关于表结构的查询操作,工作中一般都是直接基于图形化界面操作。

在这里插入图片描述

desc 表名 ;#可以查看指定表的字段、字段的类型、是否可以为NULL、是否存在默认值等信息

在这里插入图片描述



show create table 表名 ;# 查询指定表的建表语句

在这里插入图片描述

在这里插入图片描述



修改表 alter table、add、modify、change等

关于表结构的修改操作,工作中一般都是直接基于图形化界面操作。

alter table 表名 add  字段名  类型(长度)  [comment 注释]  [约束]; # 添加字段

案例: 为tb_emp表添加字段qq,字段类型为 varchar(11)

alter table tb_emp add  qq  varchar(11) comment 'QQ号码';

alter table 表名 modify  字段名  新数据类型(长度); # 修改数据类型
alter table 表名 change  旧字段名  新字段名  类型(长度)  [comment 注释]  [约束]; # 修改数据类型

案例:修改qq字段的字段类型,将其长度由11修改为13

alter table tb_emp modify qq varchar(13) comment 'QQ号码';

案例:修改qq字段名为 qq_num,字段类型varchar(13)

alter table tb_emp change qq qq_num varchar(13) comment 'QQ号码';

alter table 表名 drop 字段名; # 删除字段

rename table 表名 to 新表名; # 修改表名


删除表 drop table

drop table [ if exists ] 表名;



数据库操作-DML(数据增删改)

DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。

增加数据(insert)

  • 向指定字段添加数据

    insert into 表名 (字段名1, 字段名2, ...) values (1,2, ...);
    
  • 全部字段添加数据

    insert into 表名 values (1,2, ...);
    
  • 批量添加数据(指定字段)

    insert into 表名 (字段名1, 字段名2, ...) values (1,2, ...), (1,2, ...);
    
  • 批量添加数据(全部字段)

    insert into 表名 values (1,2, ...), (1,2, ...);
    

案例1:向tb_emp表的username、name、gender字段插入数据

# 因为设计表时create_time, update_time两个字段不能为NULL,所以也做为要插入的字段
insert into tb_emp(username, name, gender, create_time, update_time)
values ('wuji', '张无忌', 1, now(), now());

案例2:向tb_emp表的所有字段插入数据

insert into tb_emp(id, username, password, name, gender, image, job, entrydate, create_time, update_time)
values (null, 'zhirou', '123', '周芷若', 2, '1.jpg', 1, '2010-01-01', now(), now());

案例3:批量向tb_emp表的username、name、gender字段插入数据

insert into tb_emp(username, name, gender, create_time, update_time)
values ('weifuwang', '韦一笑', 1, now(), now()),('fengzi', '张三疯', 1, now(), now());



修改数据(update)

update语法:

update 表名 set 字段名1 =1 , 字段名2 =2 , .... [where 条件] ;

案例1:将tb_emp表中id为1的员工,姓名name字段更新为’张三’

update tb_emp set name='张三',update_time=now() where id=1;

案例2:将tb_emp表的所有员工入职日期更新为’2010-01-01’

update tb_emp set entrydate='2010-01-01',update_time=now();

在这里插入图片描述

注意事项:

1. 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
2. 在修改数据时,一般需要同时修改公共字段update_time,将其修改为当前操作时间。



删除数据(delete)

delete语法:

delete from 表名  [where  条件] ;

案例1:删除tb_emp表中id为1的员工

delete from tb_emp where id = 1;

案例2:删除tb_emp表中所有员工

delete from tb_emp;

注意事项:

• DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
• DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)。
• 当进行删除全部数据操作时,会提示询问是否确认删除所有数据,直接点击Execute即可。

相关文章:

MySQL 概述 数据库表操作 数据增删改

目录 MySQL概述前言安装与配置MySQL登录与卸载 数据模型概述SQL简介SQL通用语法简介SQL分类 数据库设计(数据库操作)-DDL数据库操作查询数据库 show databases、select database()创建数据库 create database使用数据库 use删除数据库 drop database 图形化工具连接数据库操作数…...

存储器概述

一、存储系统基本概念...

Fabric.js 使用自定义字体

本文简介 点赞 关注 收藏 学会了 如果你使用 Fabric.js 做编辑类的产品,有可能需要给用户配置字体。 这次就讲讲在 Fabric.js 中创建文本时怎么使用自定义字体、在项目运行时怎么修改字体、以及推荐一个精简字体库的工具。 学习本文前,你必须有一点…...

【C++项目】高并发内存池第七讲性能分析

目录 1.测试代码2.代码介绍3.运行结结果 1.测试代码 #include"ConcurrentAlloc.h" #include"ObjectPool.h" #include"Common.h" void BenchmarkMalloc(size_t ntimes, size_t nworks, size_t rounds) {std::vector<std::thread> vthread(…...

【JavaScript】快速学习JS

JS区分大小写&#xff0c;后面的分号可有可无&#xff1b; 输出语句 window.alter() // 写入警告框&#xff1b;在浏览器中的警告弹窗输出 document.write() // 写入html输出&#xff1b;在html页面中输出 console.log() // 写入浏览器控制台&#xff1b;在控制台输出 变量…...

控制输入流,从控制台打印到文件中,更改输出的位置

public static void main(String[] args) throws IOException {PrintStream printStream System.out;//在默认情况下&#xff0c;PrintStream 输出数据的位置 标准输出&#xff0c;即显示器printStream.print("Tom,hello");/*public void print(String s) {if (s n…...

计算线阵相机 到 拍摄产品之间 摆放距离?(隐含条件:保证图像不变形)

一物体被放置在传送带上&#xff0c;转轴的直径为100mm。已知线阵相机4K7u&#xff08;一行共4096个像素单元&#xff0c;像素单元大小7um&#xff09;&#xff0c;镜头35mm&#xff0c;编码器2000脉冲/圈。保证图像不变形的条件下&#xff0c;计算相机到产品之间 摆放距离&…...

【网络】详解http协议

目录 一、认识URLurlencode和urldecode 二、HTTP协议HTTP协议格式HTTP的方法HTTP的状态码HTTP常见Header 一、认识URL URL叫做统一资源定位符&#xff0c;也就是我们平时俗称的网址&#xff0c;是因特网的万维网服务程序上用于指定信息位置的表示方法。 urlencode和urldecode …...

1819_ChibiOS的互斥信号与条件变量

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 1. 关于会吃信号与条件变量的全局配置提供了4个配置信息&#xff0c;分别是互斥信号的使能、互斥信号的递归支持、条件变量的使能、条件变量的超时使…...

CSDN学院 < 华为战略方法论进阶课 > 正式上线!

目录 你将收获 适用人群 课程内容 内容目录 CSDN学院 作者简介 你将收获 提升职场技能提升战略规划的能力实现多元化发展综合能力进阶 适用人群 主要适合公司中高层、创业者、产品经理、咨询顾问&#xff0c;以及致力于改变现状的学员。 课程内容 本期课程主要介绍华为…...

电商接口api数据比价接口推荐

当前&#xff0c;受诸多因素的影响&#xff0c;经济下行&#xff0c;在日趋激烈的市场竞争中&#xff0c;很多企业也都面临着越来越大的生存压力&#xff0c;企业的盈利空间也逐渐被压缩。因此&#xff0c;越来越多的企业在控制成本方面更下功夫&#xff0c;这也就对企业采购提…...

读取Excel的工具类——ExcelKit

文章目录 ExcelKit工具类1、准备工作1.1、SheetInfoVo1.2、BizException 2、读取xlsx3、读取xls4、完整的ExcelKit.java源码 ExcelKit工具类 1、准备工作 1.1、SheetInfoVo import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import …...

vscode连接服务器一直retry

解决方法 打开vscode控制面板&#xff0c;输入命令remote-ssh: kill vs code server on host 选择一直连接不上的服务器端口 重新连接...

Spring Cloud Sentinel整合Nacos实现配置持久化

sentinel配置相关配置后无法持久化&#xff0c;服务重启之后就没了&#xff0c;所以整合nacos&#xff0c;在nacos服务持久化&#xff0c;sentinel实时与nacos通信获取相关配置。 使用上一章节Feign消费者服务实现整合。 版本信息&#xff1a; nacos:1.4.1 Sentinel 控制台 …...

STM32F4VGT6-DISCOVERY:uart1驱动

对于这款板子&#xff0c;官方并没有提供串口例程&#xff0c;只能自行添加。 一、PA9/PA10复用成串口1功能不可用 驱动测试代码如下&#xff1a; main.c: #include "main.h" #include <stdio.h>void usart1_init(void) {GPIO_InitTypeDef GPIO_InitStruct…...

C语言之 结构体,枚举,联合

目录 1.结构体 1.1结构的基础知识 1.2结构的声明 1.3 特殊的声明 1.4 结构的自引用 1.5 结构体变量的定义和初始化 1.6 结构体内存对齐 1.7 修改默认对齐数 1.8 结构体传参 2. 位段 2.1 什么是位段 2.2位段的内存分配 2.3 位段的跨平台问题 3. 枚举 3.1 枚举类型…...

红米电脑硬盘剪切

Redmi R14 2023版固态硬盘剪切 工具准备操作结尾语 首先要说明&#xff0c;本文所说的操作不一定适合你的电脑&#xff0c;因为电子产品更新换代过快&#xff0c;你的硬盘不一定能剪切&#xff0c;在操作前一定要仔细观察硬盘的型号&#xff0c;是否为同款&#xff0c;我上了图…...

微信小程序在线预览PDF文件

需求&#xff1a;微信小程序在线预览PDF合同文件&#xff0c;加载完成后强制阅读10秒才可点击同意按钮 H5代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" cont…...

Android 工厂模式增加Type-A功能测试

Android 工厂模式增加Type-A功能测试 收到客户需求想要增加Type-A测试项来验证Type-A功能&#xff0c;具体功能实现参照如下&#xff1a; /vendor/freeme/packages/apps/FreemeFactoryTest/src/com/freeme/factory/usb/TypeAUSB.java package com.freeme.factory.usb;i…...

Web攻防06_sqlmap的使用

文章目录 参考链接&#xff1a; SQLMAP简介支持五种不同的注入模式 数据猜解-库表列数据权限操作引出权限&#xff1a;引出文件&#xff1a;引出命令&#xff08;执行命令&#xff09;&#xff1a; 提交方法-POST&HEAD&JSONPost注入cookie注入注入请求头中&#xff08;…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...