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

MySQL 基础入门

写在前面

关于MySQL的下载安装和其图形化软件Navicat的下载安装,网上已经有了很多的教程,这里就不再赘述了,本文主要是介绍了关于MySQL数据库的基础知识。

MySQL数据库

MySQL数据库基础

MySQL数据库概念

MySQL 数据库: 是一个关系型数据库管理系统

支持SQL语句的数据库:

MySQL数据库; SQL Server数据库; Oracle数据库; Sybase数据库; DB2数据库; PostgreSQL数据库; 人大金仓数据库(国产)。

MySQL数据库的逻辑结构

在这里插入图片描述

计算机数据容量计算方式

1、1PB = 1024TB

2、1TB = 1024GB

3、1GB = 1024MB

4、1MB = 1024KB

5、1KB = 1024B

6、1B = 8bits(比特)

PB:拍字节,TB:太字节,GB:千兆字节;MB:兆字节,KB:千字节,B:字节

MySQL数据库的数据类型

整数类型 (bool、 int big int 浮点数类型 float double decimal 字符串类型 varchar text blob 日期类型 DateTime(年-月-日 时:分:秒) TimeStamp(时间戳) 其他数据类型 enum 等)

编写SQL语句的顺序,解释器编译SQL语句的顺序

编写SQL语句顺序与解释器编译SQL语句顺序(重点):

在这里插入图片描述

exists与in、内表与外表的区别

内表与外表的区别

  1. 建表默认就是内表,如:create table 指定表名;
  2. external就是外表,如:create table external 指定表名;
  3. 删掉内表,HDFS(分布式文件系统)上的数据被删掉了;
  4. 删除外表,HDFS上的数据是存在的。

exists 与 in的区别

exists的效率比in查询要高,因为in不走索引。

in适合于外表数据量大而内表数据小的情况;exists适合于外表小而内表大的情况。

数据库常用命令

查看函数帮助的、查看警告的命令
  • 查看函数说明命令:help 函数名,如:help abs;----查看abs()函数帮助
  • 显示数据库警告的命令: show warnings
数据库常用的函数
  • avg(expression):返回字段expression的平均值;
  • max(expression): 返回字段expression中的最大值;
  • min(expression):返回字段expression中的最小值;
  • sum(expression):返回字段expression的总和;
  • count(expression): 返回字段expression的行数;
  • replace(string, from_string, new_string)string:原始字符串;from_string:要替换的子字符串;new_string:新的替换子字符串;
  • group_concat(expression):用于将group by产生的同一个分组中的值连接起来,返回一个字符串结果
  • user():返回当前用户名:select USER();
  • database(): 返回当前数据库名:select DATABASE();
  • version():返回数据库的版本号:select VERSION();
新建、选择、删除数据库与新建、显示、删除表的命令
  • 新建数据库命令create database 数据库名 character set utf8 collate utf8_general_ci;

注意:character set设置编码格式,collate校验编码格式

  • 选择数据库命令use 数据库名;

  • 删除数据库命令drop database 数据库名;

  • 新建表命令:create table 表名;

  • 显示表命令show tables;

  • 删除指定表的命令drop table 指定表名;

查看指定表的结构的命令
  • 查看表的字段与字段值命令describe 指定表名;
为指定表添加、修改、重命名、删除字段的命令
  • 为指定表添加一个字段alter table 指定表名 add 字段名 字段类型;

  • 为指定表修改字段类型alter table 指定表名 modify 字段名 字段类型;

  • 重命名指定表的字段alter table 指定表名 change 原字段名 新字段名 字段类型;

  • 为指定表删除字段alter table 指定表名 drop 字段名;

新建表并为表添加一条数据
  • 为指定表添加一条数据:insert into 指定表名(字段名1,字段名2,字段名3,字段名4)values(数据1,数据2,数据3,数据4);

使用MySQL语句的例子

自动插入录入时间

--新建一个自动记录时间的消息表
create table test_msg(   id int primary key auto_increment comment "主键",message longtext comment "消息",cre_time timestamp not null default current_timestamp comment "录入时间")comment="记录消息的表";-- 没有输入时间,会自动记录插入数据时系统时间
insert into test_msg(message) values("这是一个重大的新闻");
查询其他数据库的表
--编写一个查询其他数据库数据时数据的SQL语句
select from database_name.表名;-- 其中database_name不是当前选择的数据库
单表查询(重点)
-- 新建学生表并插入相应的数据
create table student(
s_id int(10) primary key default 0 comment'用户ID',
sname varchar(10) comment'用户姓名',
sex varchar(1) comment'用户性别',
age int(3) comment'用户年龄',
s_time DateTime comment'记录时间',
s_info longtext comment'用户简介'
)engine=InnoDB default charset=utf8;-- 查询学生表中所有数据
select * from student;
select s_id,sname,sex,age,s_time,s_info from student;-- 查询学生姓名为张浩的信息
select * from student where sname="张浩";
select * from student where sname in("张浩");-- 查询学生姓名,重复的不要显示
select distinct(sname) from student;-- 查询年龄为20-40的学生信息
select * from student where age between 20 and 40;
select * from student where age>=20 and age<=40;-- 查询以年龄进行(小到大,大到小)排序显示学生信息
-- 小到大排序:
select * from student where age order by age asc;-- 大到小排序:
select * from student where age order by age desc;-- 查询姓名以A开头、以A结尾、包含A、A开头并且后面跟一个字符的学生信息
-- A开头:
select * from student where sname like'A%';-- A结尾:
select * from student where sname like'%A';-- 包含A:
select * from student where sname like'%A%';-- A开头并且后面跟一个字符:
select * from student where sname like'A_';-- 查询性别不为女的学生信息
select * from student where sex not in ('女');
select * from student where sex !='女';-- 查询年龄是22、55岁的学生信息
select * from student where age in (22,55);
select * from student where age=22 or age=55;-- 查询年龄由小到大,在第二到第五的所有学生信息
select * from student where age order by age desc limit 1,4;-- 查询最新的学生信息
select * from student order by s_time desc limit 1;-- 查询相同年龄等于2的人数,并显示其姓名
select age as "年龄",count(age) as "人数",group_concat(sname) 
from student where age group by age having count(age)=2;-- 根据学生的年龄查询显示学生处于的年龄段
select * ,
case when t1.age between 0 and 18 then 'young'
when t1.age between 19 and 45 then 'middle'
else 'old' end as 'test_age' 
from student t1;-- 将李丽的年龄更新100岁
update student set sex='女',age="100" where s_id='97';-- 删除李丽的数据
delete from student where sname="李丽";-- 清除学生表所有的数据
truncate table student;
笛卡尔积

连接查询没有建外键时会出现笛卡尔积如集合A={a,b}, 集合B={1,2} 两个集合则为笛卡尔积 {(a,1),(a,2),(b,1),(b,2)}。

MySQL 的连接查询

左连接查询left join 表名 on 连接条件……-----左表全部保留,右表关联不上用null表示;

右连接查询right join 表名 on 连接条件……-----右表全部保留,左表关联不上的用null表示;

内连接查询inner join 表名 on- 连接条件join 表名 on 连接条件)……-----两表关联保留两表中交集的记录;

全连接查询左连接+ union all +右连接-----两表关联查询它们的所有记录;

三表查询(重点)

-- 创建员工表
create table employee(
id int primary key auto_increment,
name varchar(10) unique,
age int,
salary double,
check(salary>7000 and salary<=15000),
relation_department_name varchar(20));-- 创建部门表
create table department(
id int primary key auto_increment,
department_name varchar(20) unique,
department_person_num int);-- 创建项目表
create table project(
id int primary key auto_increment,
project_name varchar(20),
relation_department_name varchar(20));-- 1、要求-查询姓名为张三的员工,所在部门的名称、部门人数、关联项目的数量、关联项目的具体名称select t1.name as "姓名", t2.department_name as "部门名", 
t2.department_person_num as "部门人数",count(t3.project_name) as "关联项目个数",
group_concat(t3.project_name) as "关联项目名称"
from employee t1, department t2, project t3 
where t1.relation_department_name = t2.department_name 
and t2.department_name = t3.relation_department_name
and t1.name = "张三" group by t2.department_name,t2.department_person_num ;select t1.name as "姓名",t2.department_name as "部门名", t2.department_person_num as "部门人数",
count(t3.project_name) as "关联项目个数",group_concat(t3.project_name) as "关联项目名称"
from employee t1 left join department t2 on t1.relation_department_name = t2.department_name 
left join project t3 on t2.department_name = t3.relation_department_name
where t2.department_name is not null
and t3.relation_department_name is not null
and t1.name = "张三" group by t2.department_name,t2.department_person_num ;-- 2、要求-查询所有的员工,所在部门的人数与关联的项目数,具体项目的名称?select t1.name as "姓名",t2.department_person_num as "部门人数",
count(t3.project_name) as "关联项目个数",group_concat(t3.project_name) as "关联项目名称"
from employee t1, department t2, project t3 
where t1.relation_department_name = t2.department_name 
and t2.department_name = t3.relation_department_name
group by t1.name,t2.department_person_num ;select t1.name as "姓名",t2.department_person_num as "部门人数",
count(t3.project_name) as "关联项目个数",group_concat(t3.project_name) as "关联项目名称" 
from employee t1 left join department t2 on t1.relation_department_name = t2.department_name
left join project t3 on t2.department_name = t3.relation_department_name
where t2.department_name is not null
and t3.relation_department_name is not null
group by t1.name,t2.department_person_num ;-- 3、要求-查询出每个人工程师所在的部门、薪资、负责项目名称select t1.name as "姓名",t2.department_name as "部门名",t1.salary as "薪资",
group_concat(t3.project_name) as "关联项目名称"
from employee t1, department t2, project t3 
where t1.relation_department_name = t2.department_name 
and t2.department_name = t3.relation_department_name
group by t1.name,t1.salary;select t1.name as "姓名",t2.department_name as "部门名",t1.salary as "薪资",
group_concat(t3.project_name) as "关联项目名称"
from employee t1 left join department t2 on t1.relation_department_name = t2.department_name
left join project t3 on t2.department_name = t3.relation_department_name
where t2.department_name is not null
and t3.relation_department_name is not null
group by t1.name,t1.salary;-- 4、要求-查询出每个人工程师所在的部门、薪资、负责项目名称,并增加一个工资阶段财富类型字段select t1.name as "姓名",t2.department_name as "部门名",t1.salary as "薪资",
group_concat(t3.project_name) as "关联项目名称",case when t1.salary between 0 and 4000 then "低收入"
when t1.salary between 4001 and 8000 then "中收入"
else "高收入" end as "财富类型"from employee t1, department t2, project t3 
where t1.relation_department_name = t2.department_name 
and t2.department_name = t3.relation_department_name
group by t1.name,t1.salary;select t1.name as "姓名",t2.department_name as "部门名",t1.salary as "薪资",
group_concat(t3.project_name) as "关联项目名称" ,case when t1.salary between 0 and 4000 then "低收入"
when t1.salary between 4001 and 8000 then "中收入"
else "高收入" end as "财富类型"from employee t1 left join department t2 on t1.relation_department_name = t2.department_name
left join project t3 on t2.department_name = t3.relation_department_name
where t2.department_name is not null
and t3.relation_department_name is not null
group by t1.name,t1.salary;-- 5、要求-查询项目中学生管理系统最高薪资的工程师姓名、所在项目、薪资select t1.name as "姓名",t3.project_name as "项目名",t1.salary as "薪资"
from employee t1, department t2, project t3 
where t1.relation_department_name = t2.department_name 
and t2.department_name = t3.relation_department_name
and t3.project_name = "学生管理系统"
order by t1.salary desc limit 1;select t1.name as "姓名",t3.project_name as "项目名",t1.salary as "薪资"
from employee t1 left join department t2 on t1.relation_department_name = t2.department_name 
left join project t3 on t2.department_name = t3.relation_department_name
where t2.department_name is not null
and t3.relation_department_name is not null
and t3.project_name = "学生管理系统"
order by t1.salary desc limit 1;

MySQL视图

什么是视图

MySQL数据库视图:视图(View)是一种虚拟存在的表。

视图的特点

  • 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系
  • 视图是由基本表(实表)产生的表(虚表)
  • 视图的建立和删除不影响基本表
  • 对视图内容的更新(增删改)直接影响基本表
  • 当视图来自多个基本表时,不允许添加、删除、更新数据。

视图的优缺点

优点:

1、安全:一些数据表有着重要的信息,有些字段是保密的,不能让用户直接看到;

2、性能:视图建立在服务器上,直接调用在服务器上运行,可以提高性能;

3、灵活:建立一张视图,视图中的数据直接映射到新建的表,这样,就可以少做很多改动,也达到了升级数据表的目的。

缺点:如果实际数据表的结构变更了,就需要及时对相关的视图进行相应的维护。

视图相关的SQL语句

  • 声明视图create view 视图名 as SQL查询语句;
  • 查看视图show tables;
  • 删除视图drop view 视图名;

MySQL存储过程

什么是存储过程

存储过程:是一组为了完成特定功能的SQL语句集合。

存储过程的优缺点

优点:

  1. 封装性:封装成一个没有返回值函数;
  2. 可增强SQL语句的功能和灵活性:针对特定的功能编写存储过程;
  3. 高性能:存储过程编写成功后,就存储在数据库服务器中,以后客户端可以直接调用,从而提高性能;
  4. 提高数据库的安全性:存储过程作为接口提供给外部程序,外部程序无法直接操作数据库表,可以提高数据安全性。

缺点: DBMS(DBMS是数据库管理系统)中的存储过程语法有所不同,所以可移植性差。

存储过程的语法

create procedure 存储过程名(in 参数名 参数类型,out 参数名 参数类型)  
-- in:表示输入,out:表示输出
begin
-- 实现功能的SQL语句(一般是查询语句的封装);
end;-- 调用存储过程:
call 存储过程名();-- 删除存储过程:
drop procedure 存储过程名;
-- 例子如下:-- 新建存储过程test_add:create procedure test_add(in a int,in b int,out c int)
begin
set c=a+b;
end-- 调用存储过程:
call test_add(2,3,@a);-- 查看输出
select @a;-- 删除存储过程:
drop procedure test_add;

MySQL 数据库导入导出

将表导出:

-- 将表test_csv导出到指定路径下面,导成csv类型文件select id,name from test_csvinto outfile 'D:/test_as/test(utf8).csv'character set utf8fields terminated by ',';-- 导入前可以先查看导入的路径:show variables like 'secure_file_priv';-- 将into outfile 'D:/test_as/test(utf8).csv'中路径改为对应路径-- character set utf8 表示字符编码为utf-8-- fields terminated by ','; 表明数据与数据直接用','分隔开

将表导入:

load data local infile 'D:/test_as/test(utf8).csv'into table test_csvcharacter set utf8fields terminated by ',';-- 将infile 'D:/test_as/test(utf8).csv'中路径改为对应路径-- character set utf8 表示字符编码为utf-8-- fields terminated by ','; 表明数据与数据直接用','分隔开

数据库整体导入导出(以Navicat为例):

  • 导出:右键数据库,选择“存储SQL文件”,选择对应的存储位置;
  • 导入:连接中新建数据,选中新建数据库右键“运行SQL文件”

MySQL 中事务的基本使用

事务概念:是一个操作序列,不可分割的工作单位,这些操作要么都执行,要么都不执行。

事务的语法:

1、beginstart transaction:显式地开启一个事务;

2、commitcommit work:提交事务,对数据库进行的修改是永久性的;

3、rollbackrollback work:回滚结束用户事务,并撤销正在进行的所有未提交的修改事务;

4、savepoint S1:在事务中创建一个回滚点(savepoint),一个事务中可以有多个回滚点,S1代表回滚点名称;

5、rollback to [savepoint] S1:把事务回滚到标记点,S1代表回滚点名称。

相关文章:

MySQL 基础入门

写在前面 关于MySQL的下载安装和其图形化软件Navicat的下载安装,网上已经有了很多的教程,这里就不再赘述了,本文主要是介绍了关于MySQL数据库的基础知识。 MySQL数据库 MySQL数据库基础 MySQL数据库概念 MySQL 数据库&#xff1a; 是一个关系型数据库管理系统 。 支持SQL语…...

GPT模型搭建

GPT模型搭建 1. 章节介绍 本章节聚焦于从0搭建GPT模型&#xff0c;通过事先准备的基础代码&#xff0c;引导学习者逐步构建模型。旨在让程序员、软件架构师和工程师等掌握GPT模型搭建的核心流程&#xff0c;理解其关键组件与技术细节&#xff0c;为实际应用和面试做好准备。 …...

BUUCTF-web刷题篇(8)

17.EasyCalcS 查看源码&#xff0c;发现有段代码有php文件&#xff0c;即calc.php 经过代码审计之后应该要访问calc.php文件&#xff0c;打开后&#xff1a; <?php error_reporting(0); if(!isset($_GET[num])){show_source(__FILE__); }else{$str $_GET[num];$blackli…...

AI SEO内容优化指南:如何打造AI平台青睐的高质量内容

AI SEO内容优化指南&#xff1a;如何打造AI平台青睐的高质量内容 在生成式AI平台&#xff08;如DeepSeek、Kimi、豆包、腾讯元宝等&#xff09;主导的搜索新时代&#xff0c;内容优化已成为企业抢占流量入口的核心策略。本文将从内容创作、分发到效果维护全链路&#xff0c;解…...

无需预对齐即可消除批次效应,东京大学团队开发深度学习框架STAIG,揭示肿瘤微环境中的详细基因信息

生物组织是由多种类型细胞构成的复杂网络&#xff0c;这些细胞通过特定的空间配置执行重要功能。近年来&#xff0c;10x Visium、Slide-seq、Stereo-seq 和 STARmap 等空间转录组学 (ST) 技术的进步&#xff0c;使得生物学家们能够在空间结构内绘制基因数据&#xff0c;从而各类…...

B2B2C多用户商城系统:打造新零售电商生态的创新解决方案

在当今数字化时代&#xff0c;电商行业正以前所未有的速度蓬勃发展&#xff0c;而新零售作为电商与传统零售的深度融合&#xff0c;正逐渐成为市场的新宠。为了满足这一变革带来的多元化需求&#xff0c;B2B2C多用户商城系统应运而生&#xff0c;为商家和消费者搭建了一个高效、…...

走向多模态AI之路(二):多模态 AI 如何工作?

目录 前言一、跨模态对齐&#xff08;Cross-modal Alignment&#xff09;&#xff1a;AI 如何理解不同模态的关系二、多模态融合&#xff08;Multimodal Fusion&#xff09;&#xff1a;AI 如何整合不同模态的信息三、多模态生成&#xff08;Multimodal Generation&#xff09;…...

MCP 实战:实现server端,并在cline调用

本文动手实现一个简单的MCP服务端的编写&#xff0c;并通过MCP Server 实现成绩查询的调用。 一、配置环境 安装mcp和uv, mcp要求python版本 Python >3.10; pip install mcppip install uv 二、编写并启用服务端 # get_score.py from mcp.server.fastmcp import…...

C#游戏开发【第18天】 | 深入理解队列(Queue)与栈(Stack):从基础到任务队列实战

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

2.5路径问题专题:LeetCode 64. 最小路径和

动态规划解决最小路径和问题 1. 题目链接 LeetCode 64. 最小路径和 2. 题目描述 给定一个包含非负整数的 m x n 网格 grid&#xff0c;从网格的左上角出发&#xff0c;每次只能向右或向下移动一步&#xff0c;最终到达右下角。要求找到一条路径&#xff0c;使得路径上的数字…...

办公设备管理系统(springboot+ssm+jsp+maven)

基于springboot的办公设备管理系统(springbootssmjspmaven) 系统功能主要有&#xff1a; 欢迎页账号管理 管理员账号管理系统账号添加密码修改 普通管理员管理 用户管理用户添加用户查询 资产类型管理资产信息管理资产档案管理资产报表...

蓝桥杯2024JavaB组的一道真题的解析

文章目录 1.问题描述2.问题描述3.思路分析4.代码分析 1.问题描述 这个是我很久之前写的一个题目&#xff0c;当时研究了这个题目好久&#xff0c;发布了一篇题解&#xff0c;后来很多人点赞&#xff0c;我都没有意识到这个问题的严重性&#xff0c;我甚至都在怀疑自己&#xf…...

数据库--SQL

SQL&#xff1a;Structured Query Language&#xff0c;结构化查询语言 SQL是用于管理关系型数据库并对其中的数据进行一系列操作&#xff08;包括数据插入、查询、修改删除&#xff09;的一种语言 分类&#xff1a;数据定义语言DDL、数据操纵语言DML、数据控制语言DCL、事务处…...

SQL Server:Log Shipping 说明

目录标题 SQL Server Log Shipping与Oracle归档日志备份对比分析一、SQL Server Log Shipping的日志截断机制二、Oracle归档日志备份对比三、关键配置对比表四、最佳实践建议 如何修改和查看SQL Server默认备份配置防止自动删除&#xff1f;一、查看现有备份配置二、修改备份配…...

Zephyr实时操作系统初步介绍

一、概述 Zephyr是由Linux基金会托管的开源实时操作系统&#xff08;RTOS&#xff09;&#xff0c;专为资源受限的物联网设备设计。其核心特性包括模块化架构、跨平台兼容性、安全性优先以及丰富的连接协议支持。基于Apache 2.0协议&#xff0c;Zephyr允许商业和非商业用途的自…...

【大模型系列篇】大模型基建工程:基于 FastAPI 自动构建 SSE MCP 服务器 —— 进阶篇

&#x1f525;&#x1f525;&#x1f525; 上期 《大模型基建工程&#xff1a;基于 FastAPI 自动构建 SSE MCP 服务器》中我们使用fastapi-mcp自动挂载fastapi到mcp工具&#xff0c;通过源码分析和实践&#xff0c;我们发现每次sse请求又转到了内部fastapi RESTful api接口&…...

深度学习deeplearn3

# Jupyter Notebook魔法命令&#xff0c;用于在Notebook中内联显示图表 %matplotlib inline# 导入NumPy库&#xff0c;用于高效的数值计算 import numpy as np# 从matplotlib_inline库导入backend_inline模块&#xff0c;用于设置图表显示格式 from matplotlib_inline import b…...

(九)图形管线

一图说明问题 顶点数据->顶点着色器->细分着色器->几何着色器->光栅化->片元着色器->颜色混合 创建图形管线函数放在后面位置 void MyApplication::initVulkan() { createInstance(); createSurface(); pickPhysicalDevice(); createLogicalDevice(); cre…...

7-3 逆序的三位数

程序每次读入一个正3位数&#xff0c;然后输出按位逆序的数字。注意&#xff1a;当输入的数字含有结尾的0时&#xff0c;输出不应带有前导的0。比如输入700&#xff0c;输出应该是7。 输入格式&#xff1a; 每个测试是一个3位的正整数。 输出格式&#xff1a; 输出按位逆序…...

git从历史版本创建新分支或标签

git从某个历史版本创建标签 # 查看历史版本 git log git tag tag-v1.0 780e2a7fc714faf388ba71git从某个分支的指定历史版本中创建新分支 # 查看历史版本 git log # 从历史分支创建标签 git checkout -b new-branch 780e2a7fc714faf388ba71...

HTML 音频(Audio)学习笔记

一、HTML 音频概述 在 HTML 中&#xff0c;音频可以通过多种方式播放&#xff0c;但要确保音频在不同浏览器和设备上都能正常播放&#xff0c;需要掌握一些技巧。HTML5 引入了 <audio> 元素&#xff0c;为音频播放提供了一种标准方法&#xff0c;但在 HTML4 中&#xff…...

五种音频器件综合对比——《器件手册--音频器件》

目录 音频器件 简述 1. 扬声器&#xff08;Speakers&#xff09; 2. 麦克风&#xff08;Microphones&#xff09; 3. 放大器&#xff08;Amplifiers&#xff09; 4. 音频接口&#xff08;Audio Interfaces&#xff09; 5. 音频处理器&#xff08;Audio Processors&#xff09…...

数据结构复习(单调栈,单调队列,KMP,manacher,tire,字符串哈希)

单调栈&#xff1a; 介绍&#xff1a; 单调栈用于解决"寻找每个元素左侧/右侧第一个比它小/大的元素"类问题。栈中元素保持单调性&#xff0c;时间复杂度O(n)。 维护一个严格递增栈。对于每个元素a[i]&#xff0c;不断弹出栈顶比a[i]大的元素&#xff0c;剩下的栈顶即…...

(学习总结32)Linux 基础 IO

Linux 基础 IO 一、什么是 " 文件 "二、C 文件接口打开文件写文件读文件其它介绍 三、系统文件 I/O传递标志位系统接口写文件系统接口读文件部分系统调用接口介绍打开文件函数 open关闭文件函数 close写入文件函数 write读取文件函数 read 文件描述符 fdfd 0 & 1…...

操作系统(一):概念及主流系统全分析

目录 一.操作系统是什么 二.操作系统的分类 2.1 按应用场景分类 2.2 按实时性分类 2.3 按内核架构分类 2.4 按用户与任务分类 三.主流操作系统比较 四.未来趋势 一.操作系统是什么 操作系统&#xff08;Operating System, OS&#xff09;是计算机系统的核心软件&#x…...

三、GPIO

一、GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口GPIO引脚电平&#xff1a;0V&#xff08;低电平&#xff09;~3.3V&#xff08;高电平&#xff09;&#xff0c;部分引脚可容忍5V 容忍5V&#xff0c;即部分引脚输入5V的电压&#xff0c;…...

Ceph异地数据同步之-RBD异地同步复制(上)

#作者&#xff1a;闫乾苓 文章目录 前言基于快照的模式&#xff08;Snapshot-based Mode&#xff09;工作原理单向同步配置步骤单向同步复制测试双向同步配置步骤双向同步复制测试 前言 Ceph的RBD&#xff08;RADOS Block Device&#xff09;支持在两个Ceph集群之间进行异步镜…...

fastapi完全离线环境(无外网)的访问Swagger所做特殊处理

在互联网环境中&#xff0c;只要 启动FastAPI 服务运行在本地机器上&#xff0c;访问 http://localhost:8000/docs&#xff08;Swagger UI&#xff09;就可以访问到Swagger界面&#xff0c;但是在完全离线环境&#xff08;无外网&#xff09;下如何访问Swagger页面呢&#xff1…...

在网络中加入预训练的多层感知机(MLP)有什么作用?

在网络中加入预训练的多层感知机&#xff08;MLP&#xff09;通常是为了引入先验知识、提升特征表示能力或dropout&#xff0c;具体作用取决于MLP的设计和预训练任务。以下是常见的应用场景和优势&#xff1a; 1. 特征融合与迁移学习:预训练的MLP可以作为特征提取器&#xff0…...

3.2/Q2,GBD数据库最新文章解读

文章题目&#xff1a;Temporal trends in the burden of vertebral fractures caused by falls in China and globally from 1990 to 2021: a systematic analysis of the Global Burden of Disease Study 2021 DOI&#xff1a;10.1186/s13690-025-01500-y 中文标题&#xff1a…...

机器学习的一百个概念(9)学习曲线

前言 本文隶属于专栏《机器学习的一百个概念》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…...

浅谈Tomcat数据源连接池

目录 为什么需要JDBC连接池 Tomcat JDBC Pool 相关参数 1. 基本配置 2. 连接池大小控制 3. 连接验证与测试 4. 空闲连接回收 5. 连接泄漏与超时 Tomcat JDBC Pool 源码分析&#xff08;tomcat 8.5.3&#xff09; DataSourceFactory DataSource ConnectionPool Pool…...

Techub 财报解读:Circle 冲刺 IPO,但收入增长难掩利润困局

作者&#xff1a;Techub 财报解读 撰文&#xff1a;Yangz&#xff0c;Techub News 4 月 1 日&#xff0c;Circle 向美国证券交易委员会&#xff08;SEC&#xff09;提交 S-1 文件&#xff0c;计划进行首次公开募股&#xff08;IPO&#xff09;&#xff0c;股票代码为 CRCL&…...

C++中的链表操作

在C中&#xff0c;链表是一种常见的数据结构&#xff0c;它由一系列节点组成&#xff0c;每个节点包含数据部分和指向下一个节点的指针。C标准库&#xff08;STL&#xff09;中提供了std::list和std::forward_list两种链表实现&#xff0c;分别对应双向链表和单向链表。此外&am…...

Vue2 生命周期

文章目录 前言&#x1f504; Vue2 生命周期流程&#xff08;8个核心钩子&#xff09;&#x1f4dd; 代码中典型用法示例一、您的描述验证二、完整生命周期代码示例三、关键阶段行为说明&#x1f50d; 常见问题 前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案…...

2007-2022年 上市公司政府补助数据 -社科数据

上市公司政府补助数据&#xff08;2007-2022年&#xff09;-社科数据https://download.csdn.net/download/paofuluolijiang/90028547 https://download.csdn.net/download/paofuluolijiang/90028547 政府补助是指政府为支持企业发展&#xff0c;提供的资金或资源支持。对于上市…...

设计心得——状态机

一、状态机 在设计一些与硬件交互或者游戏等开发中&#xff0c;经常会听到状态机&#xff08;State Machines&#xff09;这个字眼&#xff0c;而在设计模式&#xff08;GoF&#xff09;中&#xff0c;又经常听到状态模式这个概念&#xff0c;它们之间有什么联系和不同呢&…...

python match case语法

学习路线&#xff1a;B站 普通的if判断 def if_traffic_light(color):if color red:return Stopelif color yellow:return Slow downelif color green:return Goelse:return Invalid colorprint(if_traffic_light(red)) # Output: Stop print(if_traffic_light(yellow)) …...

Lua中协程相关函数使用详解

目录 1. coroutine.create(f)2. coroutine.resume(co [, val1, ...])3. coroutine.yield([val1, ...])4. coroutine.status(co)5. coroutine.wrap(f)6. coroutine.running()7. coroutine.isyieldable()协程状态转换示例总结 Lua 中的协程&#xff08;coroutine&#xff09;提供…...

代码拟有感

最近的日子像被按了0.5倍速播放键。腱鞘炎让手腕转动时发出咯吱声&#xff0c;尾骨的钝痛让久坐变成酷刑&#xff0c;落枕的脖子和酸胀的手臂组成了“疼痛交响乐”——这些隐秘的、持续的身体抗议&#xff0c;让原本枯燥的代码练习变成了一场生理与意志的拉锯战。 我盯着屏幕苦…...

《实战AI智能体》MCP对Agent有哪些好处

首先MCP为Agent提供了标准化的方式来接入各种工具和数据源,无论是本地运行的工具,例如通过stdio服务器,还是远程托管的服务HTTP over SSE服务, Agent都可以通过统一的接口与它们进行交互,极大扩展了第三方工具库。 例如,在金融领域,Agent 可以接入股票分析的MCP工具。当…...

maptalks获取所有图层并把图层按照zIndex排序

maptalks获取所有图层并把图层按照zIndex排序 获取所有图层 通过调用 map.getLayers() 可以返回当前地图上所有的图层集合。此方法会返回一个数组形式的结果&#xff0c;其中包含了地图上的每一个图层层级对象。 图层属性中的 ZINDEX 每种图层类型&#xff08;如矢量图层、…...

GUI-Guider 按钮按下 选项卡 右移动一个,到最右边停下

extern lv_ui guider_ui; // 在文件顶部添加// 在按钮事件中使用&#xff1a; lv_obj_t * tabview guider_ui.screen_tabview_1; // 替换为你的实际 TabView 名称 uint16_t current lv_tabview_get_tab_act(tabview); lv_tabview_set_act(tabview, current 1, LV_ANIM_ON); …...

让AI再次伟大-MCP-Client开发指南

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理、AI应用&#x1f525;如果感觉…...

sql工具怎么选?

为什么大多数主流工具又贵又难用&#xff1f; 有没有一款免费好用的sql工具&#xff1f; 像大多人朋友常用的sql工具&#xff0c;应该都遇到过这种情况&#xff0c; 用着用着收到了来自品牌方的律师函&#xff0c; 或者处理数据经常卡死&#xff0c; 再或者不支持国产数据库…...

video标签播放mp4格式视频只有声音没有图像的问题

video标签播放mp4格式视频只有声音没有图像的问题 这是由于视频格式是hevc(H265)编码的&#xff0c;这种编码格式视频video播放有问题主要是由于以下两种原因导致的&#xff1a; 1、浏览器没有开启硬加速模式&#xff1a; 开启方法&#xff08;以谷歌浏览器为例&#xff09;&a…...

问题解决:glog中的LOG(INFO)与VLOG无法打印

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 MotivationProcess glog版本为&#xff1a;https://github.com/google/glog/archive/…...

【第2月 day16】Matplotlib 散点图与柱状图

好的&#xff01;以下是针对初学者的 Matplotlib 散点图与柱状图 学习内容&#xff0c;用简单易懂的语言和示例讲解&#xff1a; 一、散点图&#xff08;Scatter Plot&#xff09; 作用&#xff1a;展示两个变量之间的关系&#xff08;如相关性、分布等&#xff09;。 1. 核心…...

汽车 HMI 设计的发展趋势与设计要点

一、汽车HMI设计的发展历程与现状 汽车人机交互界面&#xff08;HMI&#xff09;设计经历了从简单到复杂、从单一到多元的演变过程。2012年以前&#xff0c;汽车HMI主要依赖物理按键进行操作&#xff0c;交互方式较为单一。随着特斯拉Model S的推出&#xff0c;触控屏逐渐成为…...

Vue 3 中按照某个字段将数组分成多个数组

方法一&#xff1a;使用 reduce 方法 const originalArray [{ id: 1, category: A, name: Item 1 },{ id: 2, category: B, name: Item 2 },{ id: 3, category: A, name: Item 3 },{ id: 4, category: C, name: Item 4 },{ id: 5, category: B, name: Item 5 }, ];const grou…...