数据库基础以及基本建库建表的简单操作
文章目录
- 一、数据库是啥
- 1.1、数据库的概念
- 1.1、关系型数据库、非关系型数据库
- 1.1、数据库服务器,数据库与表之间的关系
- 二、为啥要使用数据库
- 2.1:传统数据文件存储
- 2.2:数据库存储数据
- 2.3、结论
- 三、使用数据库了会咋样
- 四、应该咋用数据库(MySQL数据库)
- 4.1、MySQL架构
- 4.2、数据库建库操作
- 4.2.1、查看数据库
- 4.2.2、创建数据库
- 4.2.3、查看数据库支持的字符集编码
- 4.2.4、查看数据库支持的排序(校验)规则
- 4.2.5、不同的字符集与排序规则对数据库的影响
- 4.2.6、查看系统默认字符集和排序规则
- 4.2.7、查看创建语句
- 4.2.8、修改数据库
- 4.2.9、删除数据库
- 总结:
- 4.3、数据类型(特殊标记为常用)
- 4.3.1、数值类型
- 4.3.2、字符串以及二进制类型
- 4.3.3、时间类型
- 4.4、表的操作
- 4.4.1、查看表
- 4.4.2、创建表
- 4.4.3、查看表
- 4.4.4、修改表
- 4.4.5、删除表
- 操作总结
一、数据库是啥
1.1、数据库的概念
什么是数据库,人如其名,可以简单理解为一台电脑可以用来存储数据,这台电脑的存储容量非常大,大到什么程度呢?没有非常明确的范围,但可以知道的是它可以供给整个地球上的人进行使用,并且查询数据的效率还非常高,同时也可以对数据有安全方面的保障,目前所有的公司都会使用数据库来对数据进行存储,数据对用公司来说是一种无形的资产,如果数据遭到泄露该公司就有可能面临破产的情况,因此数据的安全存储尤为重要,这也间接的说明了数据库在安全方面有着极为重要的帮助。
需要注意的是:数据并非仅仅是一个简单的存储工具,其还有对数据的管理功能。
数据库的本质是一个结构化数据的集合及其管理系统,其核心不仅仅是存储数据,而是通过一套软件系统(数据库管理系统,DBMS)实现数据的高效访问,安全控制,逻辑关系维护及复杂操作支持。即使数据最终存储在磁盘上,直接使用文件存储与通过数据库管理存在根本性差异。
数据库存在的核心意义在于高效、安全、结构化管理和操作数据,解决了传统文件存储方式在多用户、高并发、复杂查询及数据一致性上的不足。
1.1、关系型数据库、非关系型数据库
关系型数据库又称行列数据库,关系型数据库是采用了关系模型来组织数据的数据库,以行和列的形式来存储数据,可以简单理解为就是一个Excel表
因此关系型模型可以理解为是二位表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个关系组织。说点人话就是多个二维表之间构建某种关系,将多个表紧紧联系在一起,形成一张大型的关系网,互相可以参照数据存储数据管理数据,而这个关系网就是一个关系型数据库。
1.1、数据库服务器,数据库与表之间的关系
当我们在电脑上安装了数据库管理系统程序(MySQL),该程序可以管理多个数据库,该程序就是指数据库服务器,通过数据库服务可以管理多个数据库,同时数据库里面可以包含有多个表格,每个表格中有很多数据行,每一个数据行都是通过数据列组成的。
在面向对象编程当中,通常需要通过对事物的需求分析从而得到类和属性,数据库也是如此,通过对数据进行分析得到表的类型以及存储的类型,因此我们可以抽象理解为数据库其实就是面向对象语言java里面的类
通过类可以new出一个或者多个对象,通过数据库可以创建出一个或者多个表,那么表就可以理解为是一个对象,表是数据库当中的基本单位,对象是面向对象编程中的基本单位。
每一个对象都含有自己的行为和属性,表由列组成,那么列就可以简单理解为是对象的属性
对象的属性都拥有自己的数据类型,而列也拥有自己的数据类型
二、为啥要使用数据库
在我们的电脑当中,我们可以将数据存储到文件当中,通过编程也可以实现将数据存储到文件当中,那为什么还要使用数据库来进行存储呢,数据库也是存储到本地磁盘上,存储到文件当中也是存储磁盘中,那为什么还要安装数据库管理系统程序,然后通过数据库服务将数据存储到本地磁盘上呢?
实现我们要理解传统文件存储数据的缺陷:
2.1:传统数据文件存储
1、数据冗余于不一致:
不同的文件可能会存储相同的数据,假设表一和表二都存储了用户当前的身份信息,如今过去了两年,用户的身份从高中生变成了大学生,年龄变大了,这个时候对表一进行信息更新,但是表二不会因为表一的更新同步进行更新,传统的文件存储表与表之间没有同步关系,相同的数据一个表在同步变化而另外一个表没有同步变化,那么就会导致数据的矛盾,严重可能导致虚拟现实无法区分。
2、查询效率低下:
在文件当中查询需要遍历所有的数据进行一一比较查询,时间复杂度为O(n),当文件内存储的数据量很大的时候,就有可能会出现系统卡顿的情况
3、高并发访问冲突:
当通过多线程来实现对同一文件操作,有可能会出现覆写的情况,就是两个用户同时打开了一个文件并编辑,那么就有可能会出现编辑慢一点的用户将上一个用户编辑的操作覆盖了,那么结果就是只表现为只有一个用户在操作文件
4、安全性差:
当我们的电脑处于启动状态,同时防火墙没有经过特殊加强,那么我们的数据就有可能会被他人轻易窃取,从而造成经济损失,传统文件存储方式文件的级别控制粗糙。
5、无事务保障:
我们通过文件存储的时候,若突然出现断电情况或者是电脑卡死了,那么就可能会保存失败,从而造成数据丢失,并且这些特殊的情况想要进行数据方面的恢复非常困难,电脑的缓冲区直接被清空了,此时要对缓冲区的数据进行恢复代价较高。
6、数据备份
在传统文件存储方式当中,当文件需要备份的时候,只能手动进行文件的复制粘贴,把文件里面的内容粘贴到另外一个文件当中,但此时又产生了数据不一致的问题,同时又因为需要人为手动备份,导致效率降低
2.2:数据库存储数据
1、数据持久化
数据库可以将数据保存在存储介质中,即使应用程序关闭或服务器重启,以及断电情况,数据也不会丢失
2、数据结构化
严格的结构定义,结构化的方式存储使得数据易于存储和查询,井然有序的数据相比于无序的数据,肯定是有序的数据更易于查找操作
3、数据完整性
数据库服务系统提供了一系列的服务,保证数据的一致性和准确性
4、并发控制
数据库支持多用户同时访问和同时进行修改,同时保障数据的一致性,不会产生读写冲突
5、安全性
数据库提供多种安全机制,如访问控制,加密等,可以对数据提供安全性保障,未经授权无法访问他人的数据库
6、事务保障
大部分关系数据库都支持事务,确保一系列操作要么完全成功,要么完全失败,提高了操作的可靠性
7、备份与恢复
数据库支持数据的备份和恢复,会定期进行数据的备份,以防数据的丢失和损失
8、查询优化
数据库系统提供了高效的查询优化,可以快速执行复杂的查询操作
2.3、结论
相比于传统的文件存储方式,数据库存储数据更有性价比,相当于多了一个管家来提我们时时刻刻看管数据,虽然数据库在物理层面上依赖于磁盘存储数据,但是在逻辑方面可以通过技术的提高来实现高效管理,因此使用数据库来进行存储数据是目前对于数据的管理最为便捷的方式,一系列的数据库的技术提供,为我们保障了数据的安全性和查询高效性。随着时代的发展,不能只停留在老时代的技术上,技术的诞生一切都是为了便捷人类生活,哪一个好用就用那个。
三、使用数据库了会咋样
通过数据库可以便捷我们对数据的操作,我们只需要学会使用数据库,懂得数据的操作即可,那MySQL数据库来说我们只要学会SQL语言使用,通过一系列的SQL语句就可以将数据存储到数据库当中,亦或是从数据库当中提取数据,至于数据库是如何存储数据,如何提取数据,如何对数据进行保存和管理,我们程序员并不关心,只要数据库能够存储程序员需要存储的数据,能够提取出需要的数据即可。
数据库的核心价值在于将原始的数据存储提示为智能数据服务,一切只需要交给数据库服务管理即可,大大提高了程序员开发的效率。
四、应该咋用数据库(MySQL数据库)
使用MySQL服务器需要使用到SQL语言
4.1、MySQL架构
外部程序:包括需要使用MySQL服务的应用程序或者是MySQL服务端
链接层:主要用于确认身份,相当于我们登陆账号的过程,向数据库请求访问,同时输入用户名和密码,如果账号密码正确,服务器就会响应程序
服务层:对用户的指令进行解析及优化
存储引擎层:对数据进行处理
文件系统层:真正保存数据的存储介质
我们可以把一整个过程理解为去找吃的过程:首先我们可以在某团上面挑选附近的餐饮店家,(这里相当于我们在操作外部程序),当我们选好店家并去到店面,店家门口有一个接待的人员,他会咨询我们是不是来吃饭的,(此处相当于链接层也就是验证身份的过程,如果不是来吃饭是来砸场子的该人员不会给我们进入)。我们确定身份是来吃饭的,那么接下来我们进入到店中,接下来会有服务员来咨询我们需要点什么菜,(此处相当于服务层),服务层(服务人员)解析我们的需求并将需求传递给后厨,后厨就开始炒菜开始调整甜点(后厨相当于存储引擎层),后厨炒菜需要在冰箱里面拿出菜品进行清洁和烹饪(冰箱相当于文件系统层)最终经过服务员将菜品端上桌子给我们食用。这就是外部应用向MySQL服务器存储(提取)数据的简单过程
而指令的编写涉及一门语言,与Java,C语言同一等级的SQL语言,MySQL服务器的所有指令都是通过该语言进行编写的。
4.2、数据库建库操作
数据库的安装以及环境请自行搭建
4.2.1、查看数据库
语法:
show databases;
需要注意的是在对数据库发车指令之前需要将本地环境链接到数据库,并且代码需要使用英文符号。
可以下载该软件,用于代码运行,也可以通过CMD命令提示符输入:mysql -u 用户名 -p
密码是在安装本地环境的时候设置的
输入代码查看我们当前的本地环境里面有什么数据库
4.2.2、创建数据库
语法:
CREATE {DATABASE | SCHEMA } [IF NOT EXISTS] name [create_option]
create_option: [DEFAULT]{CHARACTER SET [=] charset_name| COLLATE [=] collation_name| ENCRYPTION [=] {'Y' | 'N'}
}
大写部分表示关键字
db_name:表示自定义的数据库名 { }大括号表示必须选 | 竖线表示任选其中之一 [ ] 中括号表示为可选项
CHARACTER SET:表示指定数据库采用的字符编码集
COLLATE:表示指定数据库字符集的校验规则
ENCRYPTION:数据库是否需要加密,默认不加密
创建一个名为:textnum的数据名,并且指定字符编码集为:utf8mb4,指定排序规则为:utf8mb4_0900_ai_ci;
create database if not exists textnum character set utf8mb4 collate utf8mb4_0900_ai_ci;
因此建议在编写代码的时候,能够添加判断代码一定要添加。
warning是警告的意思,我们可以通过show 关键字进行查看
show warnings;
#查看报错信息
当我们成功创建数据库后,会在数据目录底下生成与数据库名相同的目录,用于保存数据库当中的所有数据
4.2.3、查看数据库支持的字符集编码
语法:
show charset;
MySQL8.0 默认的字符编码集是utf8mb4.
4.2.4、查看数据库支持的排序(校验)规则
语法:
show collation;
MySQL8.0 默认的排序规则是utf8mb4_0900_ai_ci
4.2.5、不同的字符集与排序规则对数据库的影响
utf8mb4_0900_ai_ci是MySQL8.0引入的新规则,老版本不能识别
utf8mb4编码是Unicode字符集的一种实现,用1到4字节表示一个字符,可以表示世界上几乎全部的字符,而且更节省空间,按照存储的字符实际消耗的空间大小来进行编码,最大空间大小可达到4字节,范围足够宽 , Uniocde字符集基本包含世界上的全部字符,是一种规则,而utf8mb4是对Unicode的一种实现,类似于接口的关系
0900:是基于UCA 9.0.0算法,是Unicode Collation
Algorithm的缩写
ai:是Accent-insensitive的缩写,表示口音不敏感,可以拿汉语拼音的声调来理解,汉语拼音有四种声调,使用该排序规则相当于四合一,也就是说无论是那种声调都统一认为是同一种
ci:是Case-insensitive的缩写,表示大小写不敏感,英文的大小写统一认为是同一种
bin:表示二进制的排序规则
4.2.6、查看系统默认字符集和排序规则
#查看系统默认字符集
show variables like '%character%';
#查看系统默认排序规则
show variables like '%collation%';
4.2.7、查看创建语句
语法:
show create database db_name;
4.2.8、修改数据库
需要注意的是:并非是修改数据库当中存储的内容,而是修改数据库的字符编码集和修改排序规则,数据库存储的数据是存储在表当中的,而表是存储在数据库当中的,是无法直接通过数据库层面的代码修改到表层面的内容的
语法:
ALTER {DATABASE | SCHEMA} [db_name]alter_option...
alter_option: {[DEFAULT] CHARACTER SET [=] charset_name| [DEFAULT] COLLATE [=] collation_name| [DEFAULT] WNCRYPTION [=] {'Y' | 'N'}| READ ONLY [=] {DEFAULT | 0 | 1 }
}
4.2.9、删除数据库
语法:
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;
将数据库删除之后,就无法再查看到该数据库的所有信息了,数据库对应目录,以及目录内的所有文件也无法查看到,因此删除数据库是一种极其危险的行为,非必要不可删除
数据库删除的本质类似于数组的删除,只是简单的将数据进行覆盖,简单来说就是需要删除的位置不是置0或者置空,而是将新的数据放到需要删除的数据的位置,将旧的数据覆盖,此时就完成了删除操作。
总结:
对于数据库层面:
查看:show
新建:create
修改:alter(只能修改库的字符编码集和排序规则)
删除:drop
代码编写不区分大小写
4.3、数据类型(特殊标记为常用)
创建表的时候也就意味着可以往里面存储数据了,但是我们知道数据分有分多种有字符串,浮点型,数值型,但是在SQL语言当中只有4种,分别是:
1、数值类型
2、字符串类型
3、二进制类型
4、时间类型
在SQL当中行是由列组成的,那么也就是说列是类似于属性的存在,行(实体)对于的是Java里面的对象,那么每一列就是对应一个属性,因此如果要定义实体的属性,就需要为属性命名并指定合适的数据类型
4.3.1、数值类型
decimal的保存原理:
将数据以小数点进行分割,然后计算整数和小数的位数,一般默认用INT来进行存储,INT最大可以存储9位数,也就是说decimal的保存原理是将数据进行拆分,将其存储到INT当中,如果不满足9位数,那么就选择最大值最接近该数的数据类型
4.3.2、字符串以及二进制类型
变长类型的数据类型,是通过实际字符长度来定义实际大小的,也就是说当我们存储数据之后,数据库会计算该数据的大小,最终为其开辟空间存储。如果确定后面的M值,当存储的数据超过M值时,运行该代码会报错,M值规定了多大空间,那么存储的数据就不可以大于M值
4.3.3、时间类型
时间戳类型:TIMESTAMP有很大的问题,在以前一般以两位数来称呼,比如1999年叫做99年,那么00年到底是1900年还是2000年呢?据说这个情况在以前引起了很大的恐慌,这个情况有一个名字,叫做千年虫问题。同时该数据类型在2038年的时候会出现溢出情况,因此避免使用该数据类型
其他语法:
CURRENT_DATE 和 CURRENT_DATE()是CURDATE()的同义词,用于获取当前的日期
CURRENT_TIME 和 CURRENT_TIME()是CURTIME([fsp])的同义词,用于获取当前的时间
CURRENT_TIMESTAMP 和 CURRENT_TIMESTAMP([fsp]) 是 NOW()的同义词,用于获取当前的时间和日期
4.4、表的操作
4.4.1、查看表
语法:
#查看表
SHOW TABLES;
在进行任意表操作之前都必须要选择数据库,否则系统不知道当前的表操作是对那个数据库进行操作,因此我们需要先选择数据库
语法:
#选择库
use 库名;
4.4.2、创建表
语法:
CREATE [TEMPORARV] TABLE [IF NOT EXISTS] tbl_name(field datatype [约束] [comment '注解内容'][, field datatype [约束] [comment '注解内容']] ...
) [engine 存储引擎] [character set 字符集] [collate 排序规则];
TEMPORARV:表示创建的是一个临时表(目前不做了解)
field :列名称
datatype:列的数据类型
comment:对列的描述和说明
engine:存储引擎,不指定则使用默认存储引擎
character set:字符集,不指定则使用默认字符集
collate:排序规则,不指定则使用默认排序规则
例:创建⼀个⽤⼾表,其中包含⽤⼾编号、⽤⼾名、密码、⽣⽇,并指定字符集为utf8mb4,排序规则
为utf8mb4_0900_ai_ci
create table users (id bigint,name varchar(20) comment '⽤⼾名',password char(32) comment '密码是32位的md5值',birthday date comment '⽣⽇') CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
一般建议在创建每一个表 的时候都多添加一个ID列,用作标识符,在后期的查找数据的过程之中,可以提高查询的效率。
建议语法怎么规定我们就怎么写,比如说指定存储引擎以及字符集排序规则等,当我们在进行来回移交SQL代码的时候,就不会因为其他的环境默认设置与我们本地配置不同导致出现不必要的问题。标准语句意味着我们可以将这些语句拿去任意机器任意环境使用,执行的时候我们导出代码的这台机器,或者说我们在创建表的时候指定的参数,包括这个数据库的默认设置,系统默认设置要保持一致,因此为避免出现不可意料的情况,在来回移交SQL代码的时候,最好还是保证机器的设置是完全相同的。
例:创建⼀个表并指定存储引擎为MyISAM
create table t_myisam (id bigint,name varchar(20) comment '⽤⼾名') engine = MyISAM;
当我们成功创建存储引擎为innoDB的表了之后,会在当前数据库的目录底下生成一个用来存储数据的物理文件命名格式为xxx.jdb
而创建存储引擎为myISAM的表,会在数据库目录底下生成三个不同后缀的表分别是
xxx.MYD的数据文件
xxx.MYI的索引文件
xxx.sdi的表信息描述文件
也就是说存储引擎生成的物理文件是myISAM存储引擎生成的三个文件合一。
在8.0版本以前,表信息描述文件是以.frm为后缀的二进制文件
同样的,我们也建议在创建表,删除表的时候加上判断语句,避免系统报错导致代码停止运行。
4.4.3、查看表
语法:
desc tabl_name;
Field:表示列名
Type:表示列的数据类型
Null:表示该列是否可以为空,可以为YES,不可以为NO,默认是YES
Key:表示键,约束,主键
Default:表示是否含有默认值
Extra:表示拓展信息
4.4.4、修改表
语法:
ALTER TABLE tbl_name [alter_option [, alter_option] ...];
alter_option: {table_options| ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]| MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]| DROP [COLUMN] col_name| RENAME COLUMN old_col_name TO new_col_name| RENAME [TO | AS] new_tbl_name}
tbl_name :表示需要进行修改的表名
ADD :表示向表中添加列,不指定位置则默认放置到最后一列 FIRST :表示将列放置到第一列
AFTER col_name:表示将列放置到col_name列的后面
MODIFY :表示修改现有列的内容,不指定位置则默认存放在原位
DROP :删除现有列
RENAME COLUMN:重命名现有列
RENAME :重命名当前表
例:向表中添加一列,放置到第一列
例:将新增的列修改数据类型为char(50)为arr
例:将新增的列删除
例:将编号的名称改为ids
例:将表名修改为user
4.4.5、删除表
语法:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
TEMPORARY:表⽰临时表(目前不做解释)
tbl_name:将要删除的表名
例:删除当前表
同样的我们也建议在删除表的时候加上判断语句,防止重复删除导致系统报错。
操作总结
在删除表的时候要更加谨慎,删除表的操作相比删除库更加危险,当我们误删掉数据库的时候,应用程序一旦无法访问数据库就会马上报错,这个时候我们是可以轻易发现问题的,但是如果是误删表的情况就比较难以发现了,如果该表还是不经常用的就更加难以发现了,不访问改表是完全无法发现的。无论是访问哪一个表,都必须要经过数据库,如果误删数据库了对应的表也会被删除,一旦访问就直接报错速度很快。总结来说无论是删除表还是删除库,都是极其危险的行为,在行动之前一定要确认再确认。
当我们部署新的数据库的时候,一般不会像当前编写一句代码就执行一句代码,而是事先将代码全部编写完,然后将代码存储到文件当中统一执行,而SQL代码和我们的Java代码一样,一旦代码报错那么剩下的代码就无法继续执行,因此为避免文件中的代码因为某条代码的问题出现报错导致剩下的代码无法执行,我们建议在编写删除和新建内容代码的时候加上
判断语句 能够降低出现错误的概率
相关文章:
数据库基础以及基本建库建表的简单操作
文章目录 一、数据库是啥1.1、数据库的概念1.1、关系型数据库、非关系型数据库1.1、数据库服务器,数据库与表之间的关系 二、为啥要使用数据库2.1:传统数据文件存储2.2:数据库存储数据2.3、结论 三、使用数据库了会咋样四、应该咋用数据库&am…...
基于spring boot使用@Sl4j的日志功能,注解引入后爆红未生效
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 问题描述问题分析解决方案 📃文章…...
《深度剖析架构蒸馏与逻辑蒸馏:探寻知识迁移的差异化路径》
在人工智能模型优化的前沿领域,架构蒸馏与逻辑蒸馏作为知识蒸馏的关键分支,正引领着模型小型化与高效化的变革浪潮。随着深度学习模型规模与复杂度的不断攀升,如何在资源受限的情况下,实现模型性能的最大化,成为了学术…...
使用OpenCV来获取视频的帧率
在OpenCV中,获取视频的帧率(FPS, Frames Per Second)是一个常见的操作,尤其是在处理视频流或进行视频分析时。帧率表示每秒钟视频中的帧数,这个参数对于视频播放速度和时间计算非常重要。 以下是如何使用OpenCV来获取…...
计算机视觉|3D卷积网络VoxelNet:点云检测的革新力量
一、引言 在科技快速发展的背景下,3D 目标检测技术在自动驾驶和机器人领域中具有重要作用。 在自动驾驶领域,车辆需实时、准确感知周围环境中的目标物体,如行人、车辆、交通标志和障碍物等。只有精确检测这些目标的位置、姿态和类别&#x…...
vue-cli3+vue2+elementUI+avue升级到vite+vue3+elementPlus+avue总结
上一个新公司接手了一个vue-cli3vue2vue-router3.0elementUI2.15avue2.6的后台管理项目,因为vue2在2023年底已经不更新维护了,elementUI也只支持到vue2,然后总结了一下vue3的优势,最后批准升级成为了vitevue3vue-router4.5element…...
Jmeter进行http接口测试详解
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 本文主要针对http接口进行测试,使用 jmeter工具实现。 Jmeter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较…...
大模型AI平台DeepSeek 眼中的SQL2API平台:QuickAPI、dbapi 和 Magic API 介绍与对比
目录 1 QuickAPI 介绍 2 dbapi 介绍 3 Magic API 介绍 4 简单对比 5 总结 统一数据服务平台是一种低代码的方式,实现一般是通过SQL能直接生成数据API,同时能对产生的数据API进行全生命周期的管理,典型的SQL2API的实现模式。 以下是针对…...
靶场之路-VulnHub-DC-6 nmap提权、kali爆破、shell反连
靶场之路-VulnHub-DC-6 一、信息收集 1、扫描靶机ip 2、指纹扫描 这里扫的我有点懵,这里只有两个端口,感觉是要扫扫目录了 nmap -sS -sV 192.168.122.128 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.4p1 Debian 10deb9u6 (protoc…...
nginx服务器实现上传文件功能_使用nginx-upload-module模块
目录 conf文件内容如下html文件内容如下上传文件功能展示 conf文件内容如下 #user nobody; worker_processes 1;error_log /usr/logs/error.log; #error_log /usr/logs/error.log notice; #error_log /usr/logs/error.log info;#pid /usr/logs/nginx.pid;even…...
32.C++二叉树进阶1(二叉搜索树)
⭐上篇文章:31.C多态4(静态多态,动态多态,虚函数表的存储位置)-CSDN博客 ⭐本篇代码:c学习/18.二叉树进阶-二叉搜索树 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) ⭐标⭐是比较重要的部分…...
RV1126+FFMPEG多路码流监控项目
一.项目介绍: 本项目采用的是易百纳RV1126开发板和CMOS摄像头,使用的推流框架是FFMPEG开源项目。这个项目的工作流程如下(如上图):通过采集摄像头的VI模块,再通过硬件编码VENC模块进行H264/H265的编码压缩,并把压缩后的…...
doris: SQL Server
Doris JDBC Catalog 支持通过标准 JDBC 接口连接 SQL Server 数据库。本文档介绍如何配置 SQL Server 数据库连接。 使用须知 要连接到 SQL Server 数据库,您需要 SQL Server 2012 或更高版本,或 Azure SQL 数据库。 SQL Server 数据库的 JDBC 驱动…...
valgrind 检测多线程 bug,检测 并发 bug concurrent bug parallel bug
valgrind --toolhelgrind ./your_program 如果检测的对象是大型程序,可以设定仅在某些函数中开启 valgrind 的检测: Valgrind 提供了一些客户请求(client requests),可以在代码中插入特定的宏来控制 Valgrind 的行为。…...
查看k8s集群的资源使用情况
查看Kubernetes(k8s)集群的资源使用情况有多种方法,以下是一些常见的方式: 使用kubectl命令行工具 查看节点资源使用情况 kubectl top nodes命令可以显示集群中各个节点的CPU和内存使用情况。例如: NAME …...
在 k8s中查看最大 CPU 和内存的极限
在 Kubernetes(k8s)中,你可以从不同层面查看最大 CPU 和内存的极限,下面为你详细介绍从节点和集群层面查看的方法。 查看节点的 CPU 和内存极限 节点的 CPU 和内存极限是指单个节点上可分配的最大资源量,可通过以下几…...
IDC权威认证!永洪科技入选 IDC「GBI图谱」,点亮生成式 BI 价值灯塔
大数据市场正在稳步前进,生成式AI已成为厂商服务的重点方向,其发展离不开数据底座建设和数据工程管理,反过来AI也会帮助开发运维人员、业务人员和管理层更好地使用、查询数据。IDC调研数据显示,在生成式AI的驱动下,未来…...
HarmonyOS 应用程序包结构 (编译态)
不同类型的Module编译后会生成对应的HAP、HAR、HSP等文件,开发态视图与编译态视图的对照关系如下: 从开发态到编译态,Module中的文件会发生如下变更: ets目录:ArkTS源码编译生成.abc文件。resources目录:A…...
C# 程序结构
C#的程序结构大体可以分为: 命名空间、类名、Main方法、标识符及关键字语句注释 C# 文件的后缀为 .cs 以下创建一个HelloWorld的类,可以看一下 using System; namespace HelloWorldApplication //命名空间 {class HelloWorld //类名{static void …...
LLM 学习(二 完结 Multi-Head Attention、Encoder、Decoder)
文章目录 LLM 学习(二 完结 Multi-Head Attention、Encoder、Decoder)Self-Attention (自注意力机制)结构多头注意力 EncoderAdd & Norm 层Feed Forward 层 EncoderDecoder的第一个Multi-Head AttentionMasked 操作Teacher Fo…...
GET3D:从图像中学习的高质量3D纹理形状的生成模型
【摘要】 本文提出了GET3D,这是一种新的生成模型,能够生成具有任意拓扑结构的高质量3D纹理网格,可以直接被3D渲染引擎使用并在下游应用中立即使用。现有的3D生成模型要么缺乏几何细节,要么生成的网格拓扑受限,通常不支持纹理,或者在生成过程中使用神经渲染器,使得它们在…...
JmeterHttp请求头管理出现Unsupported Media Type问题解决
JmeterHttp请求头管理出现Unsupported Media Type问题解决 大多数的app与pc端压测的时候都会出现这种情况 当我们在jemter测试当中当中遇见Unsupported Media Type,有一种可能就是我们请求的网页的content-Type的类型与我们测试的时候的类型不一致 解决方法 可以添…...
Python 性能优化:从入门到精通的实用指南
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
Vue23Web 基礎性拉滿的面試題(2025版)還沒更新完...
Vue2&3 基礎性1. 關於Vue2和Vue3生命週期的差別2. Vue2&3組件之間傳參不同點Vue2 傳遞與接收Vue3 傳遞與接收 (使用script setup語法糖)Vue3 傳遞與接收 (不使用script setup語法糖) 3. Vue2&3 keep-alive 組件Vue2 keep-aliveVue3 keep-alive 進階性爲什麽POST請求…...
Python基于Django的医用耗材网上申领系统【附源码、文档说明】
博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…...
STM32使用无源蜂鸣器
1.1 介绍: 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定 无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同…...
9.1go结构体
Go不是完全面向对象的,没有类的概念,所以结构体应该承担了更多的责任。 结构体定义 使用 type 和 struct 关键字定义: type Person struct { Name string Age int } 字段可以是任意类型,包括其他结构体或指针。 字段名以大写…...
Ubuntu20.04本地配置IsaacLab 4.2.0的G1训练环境(一)
Ubuntu20.04本地配置IsaacLab的G1训练环境(一) 配置Omniverse环境配置IsaacSim配置IsaacLab 写在前面,如果Ubuntu剩余空间低于60G,则空间不足,除非你不需要资产包。但资产包中却包含了G1模型、Go2模型等机器人模型和代…...
全星FMEA软件:汽车电子行业研发管理高效之选
全星FMEA软件:汽车电子行业研发管理高效之选 在汽车电子行业,FMEA(失效模式与影响分析)是确保产品质量和安全的关键工具。然而,传统的FMEA分析过程往往繁琐复杂,耗费大量时间和精力。 全星FMEA软件应运而生…...
AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台
AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 目录 AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 一、简单介绍 二、Docker 下载安…...
OpenCV计算摄影学(18)平滑图像中的纹理区域同时保留边缘信息函数textureFlattening()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::textureFlattening 是 OpenCV 中用于图像处理的一个函数,旨在平滑图像中的纹理区域,同时保留边缘信息。该技术特别适…...
RLock类详细介绍、应用场景和示例代码
概述 org.redisson.api.RLock 是 Redisson 提供的 分布式可重入锁(类似 ReentrantLock),基于 Redis 实现,常用于 分布式环境 下的 并发控制。 1. RLock 详解 🔹 特点 基于 Redis 实现,支持 集群环境。可…...
【HeadFirst系列之HeadFirst设计模式】第16天之生成器模式(Builder Pattern):让对象构建更优雅!
🚀 生成器模式(Builder Pattern):让对象构建更优雅! “遇到复杂对象构建?试试生成器模式!” 在日常开发中,我们经常会遇到 创建对象属性过多、构造方法过长、可选参数混乱 的问题。这…...
Browser Use+DeepSeek的使用教程
browser-use webui 主要功能 提供了全新的网页界面,简单好用,方便操作。 支持更多大语言模型,比如 Gemini、OpenAI、Azure 等,还有最近爆火的国产大模型 DeepSeek,未来还会加更多。 支持用自己的浏览器,不用…...
“此电脑”中删除WPS云盘方法(百度网盘通用)
📣此方法适用于卸载WPS云盘后,WPS云盘图标依然在此电脑中显示的问题。 原理:通过注册来进行删除 步骤: WIN键R,打开运行窗口,输入regedit命令,来打开【注册表编辑器】; 从左侧,依…...
1. 树莓派上配置机器人环境(具身智能机器人套件)
1. 安装树莓派系统 镜像下载地址(windows/Mac/Ubuntu),安装Pi5. 2. 环境配置(登录Pi系统) 2.1 启用 SSH From the Preferences menu, launch Raspberry Pi Configuration. Navigate to the Interfaces tab. Select Enable…...
正则表达式(2)匹配规则
正则表达式的匹配规则定义了如何识别字符串中的特定模式。这些规则包括字符类匹配、元字符匹配、数量词、字符转义和分组。 字符类匹配 字符类匹配允许你指定一个字符集合,并匹配该集合中的任意单个字符。这是通过方括号 [] 来实现的。 简单字符类:[abc…...
Golang实践录:go发布版本信息收集
go发布版本信息收集。 背景 本文从官方、网络资料收罗有关go的发布历史概况。主要目的是能快速了解golang不同版本的变更。鉴于官方资料为英文,为方便阅读,使用工具翻译成中文,重要特性参考其它资料补充/修改。由于发布版本内容较多…...
go:windows环境下安装Go语言
1.下载 打开Go语言中文网下载页面: https://studygolang.com/dl 按照对应平台选择下载: https://studygolang.com/dl/golang/go1.19.2.windows-amd64.msi。 2.安装 双击下载好的文件 记下安装路径,删除末尾的反斜杠: C:\Program…...
遵义市招生管理信息系统的开发与实现
近年来,随着信息技术的发展,各类管理系统在教育领域得到广泛应用。本文将介绍如何开发一个基于Web的招生管理信息系统,以提高遵义市招生工作的效率和透明度。 系统架构设计 本系统采用典型的三层架构,包括表示层、业务逻辑层和数…...
Java 大视界 -- 区块链赋能 Java 大数据:数据可信与价值流转(84)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
Pytest自动化框架
目录 Pytest简单介绍 第一章:Pytest console命令 1.pytest -v 参数 -h 参数 其他一些参数:仅供参考 第二章. mark标记 pytest.mark.skip pytest.mark.skipif pytest.mark.xfail 编辑 pytest.mark.patametrize 单个参数 多个参数 直接…...
算法之 前缀和
文章目录 前缀和基础3427.变长子数组求和 前缀和与哈希表1524.和为奇数的子数组数目 距离和1685.有序数组中绝对值之和 前缀异或和1177.构建回文串检测 其他一维前缀和1310.子数组异或查询 二维前缀和1314.矩阵区域和 前缀和,就是定义pre[i] 为nums的前i个元素的和值…...
【Windows下Gitbook快速入门使用】
Windows下Gitbook快速入门使用 1 工具安装1.1 Node.js下载安装1.1 环境变量1.2 npm配置1.3 安装gitbook 2 gitbook使用2.1 gitbook 无法执行2.2 gitbook常用命令 Gitbook是一个软件,使用Git和Markdown来编排书本; GitBook helps you pushlish beautiful …...
python网络爬虫开发实战之基本库使用
目录 第二章 基本库的使用 2.1 urllib的使用 1 发送请求 2 处理异常 3 解析链接 4 分析Robots协议 2.2 requests的使用 1 准备工作 2 实例引入 3 GET请求 4 POST请求 5 响应 6 高级用法 2.3 正则表达式 1 实例引入 2 match 3 search 4 findall 5 sub 6 com…...
【hello git】git rebase、git merge、git stash、git cherry-pick
目录 一、git merge:保留了原有分支的提交结构 二、git rebase:提交分支更加整洁 三、git stash 四、git cherry-pick 共同点:将 一个分支的提交 合并到 到另一个上分支上去 一、git merge:保留了原有分支的提交结构 现有一个模型…...
deepseek、腾讯元宝deepseek R1、百度deepseekR1关系
分析与结论 区别与联系 技术基础与定制方向: DeepSeek官网R1版本:作为基础版本,通常保留通用性设计,适用于广泛的AI应用场景(如自然语言处理、数据分析等)。其优势在于技术原生性和官方直接支持。腾讯元宝…...
DeepSeek + 沉浸式翻译 打造智能翻译助手
本文详细介绍如何使用 DeepSeek API 沉浸式翻译插件打造个性化翻译助手。 一、DeepSeek API 配置 基础配置 API 基础地址:https://api.deepseek.com需要申请 API Key支持与 OpenAI SDK 兼容的调用方式 可用模型 deepseek-chat:已升级为 DeepSeek-V3&am…...
iOS 聊天 IM 消息收发管理工具
iOS 聊天 IM 消息收发管理工具 连续疯狂加班告一段落,趁着离职前夕的空闲时间,整理一下重构相关的文档。之前写过两篇文章 iOS 客户端 IM 以及列表 UI 框架 、iOS 客户端 IM 消息卡片插件化,突然发现时间过的真的很快,这都已经是…...
从零开始学习Slam--数学概念
正交矩阵 矩阵的转置等于它的逆矩阵,这样的矩阵称之为正交矩阵 即: Q T Q I Q^T Q I QTQI, 这样的矩阵列向量都是单位向量且两两正交。 旋转矩阵属于特殊的正交群,即SO(n),这里n通常是3,所以SO(3)就是…...