MySQL基础 [三] - 数据类型
目录
数据类型分类
编辑
数值类型
tinyint
bit
浮点类型
float
decimal
字符串类型
char
varchar
varchar和char的比较和选择
日期和时间类型
enum和set
enum类型
set类型
enum和set的类型查找
数据类型分类
数值类型
tinyint
TINYINT[(M)] [UNSIGNED]是 MySQL 中最小的整数数据类型。
主要特性:
占用空间:1个字节(8位)
有符号范围:-128 到 127 (-2^7 到 2^7-1)
无符号范围:0 到 255 (0 到 2^8-1)
M 参数:表示显示宽度,不影响存储范围,仅用于格式化显示
UNSIGNED:声明为无符号数,不能存储负数,但正数范围扩大
create table t4(num tinyint);
这个num是表的变量名
数值越界情况:
无符号的tinyint,相当于把[-128,0)给砍掉了,这个时候在插入负数就会提示超出范围了
和语言的区别
语言定义变量的时候是类型在前,变量名在后,而mysql在表中建立属性列是列名称在前,类型在后,和语言是反过来的!!
如果是语言出现这种数据问题的不合法问题可能会发生截断或者是隐式类型转换,比如说char a = 1234567,但是mysql他为了保证数据的完整性是不会做这种截断的操作的,而是会直接把你给拦截不让你做对应的操作!!
也就是说凡是在mysql中已经插入的数据,它都是合法的。所以,在mysql中,一般而言数据类型本身也是一种:约束。约束的是使用者,如果你不是一个很好的使用者,mysql也能保证数据插入的合法性。同时也能保证数据库中的数据是可预期,完整的
注意
尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此, 还不如设计时,将int类型提升为bigint类型。
当然也要看具体的场景,比如说年龄不可能有负数,所以用unsigned int本身也是很合理的。
为什么mysql要有这么多大小不一的数据类型呢??
为了满足不同的应用场景中和节省资源中做一个平衡,所以也不能无脑选最大的!
bit
bit[(M)] : 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。
下面我们使用一下
create table if not exists t3(id int, online bit(1));
BIT类型的数据在MySQL中以二进制形式存储,默认是按照ascii码值的形式显示出来。 在MySQL老版本下,二进制默认是不显示的,因为我这个用的是8.0版本,进行了优化
select id, hex(online) from t3;
当我们定义了bit(1),说明只有一个bit位,如果插入的不是0,1,数据库就会约束
当我们修改bit位数后,然后插入97,我们就会发现显示的是‘a’ (默认显示的是ascii值,可以用特定的内建函数去按照我们想要的进制去显示)
但是如果插入的是130,ascii无法显示,就表示不出来了。
需要使用特定的方法才能将其转换为可读的格式。在select语句中无法直接查看其值。要查看bit字段的值,我们可以使用MyL内置函数BIN() 二进制 或 OCT() 八进制 或HEX() 十六进制
转换可读格式的结果如下:
当我们不给bit参数的时候,默认创建的是1个比特位
如果我们有这样的值,比如性别,这时可以定义bit(1),只存放0或1。这样可以节省空间。
浮点类型
float
float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节 (精度是6-7)
要注意M必须>=D
使用
create table if not exists t6(id int, salary float(4,2));
关于m和d的探究:
-99.999插入不进去倒还好理解,可我们会发现-10.0插入后变成了-10.00,小数位用0补齐了,但是-100.0也是4位数却不可以,这是因为他小数部分需要2位,所以如果补0了就变成5位了就不符合要求了!!所以我们会发现(4,2)的范围是-99.99----99.99
我们会发现刚才99.999不行,但是99.991却可以,这是因为MySQL在保存值时对多余的位不会无脑拦截,而是会先进行四舍五入,只有四舍五入后会导致位数变多的情况才会拦截
总结上面的情况,我们会发现其实mysql并不是无脑拦截,而是对于小数部分缺的会先尝试补0,多的会先尝试四舍五入,如果之后还不符合要求,才会拦截。
比如100.0 99.95 所以更详细的范围应该是-99.994444444444……---- 99.994444444444……。(即使我们用的是unsigned 他的上限也是不会变的,而负数部分会直接变成非法数据)
注意:浮点数存的时候也是转化成科学计数法然后进行存储的,有符号位、指数位、精度位,任何一个浮点数在转化的过程中不一定都能很精确地转化(因为精度位可能会存不下)。其次将浮点数转化成二进制的时候对于小数部分进行乘2取整也不一定所有的部分都能转化成0。 所以是很有可能会有部分精度丢失
double是比float精度还大的浮点数(15-16),占8个字节。
使用float的默认值
当数据比较大,或者小数点位数比较多,此时float存储的数据就不太准了。这个是跟浮点数存储的原理是有关的。我们的数据是十进制的,但是要按照二进制去存储,当转成二进制的时候,整数部分是要%2取余的,小数点部分是*2取整的,所以会丢失精度
decimal
decimal可以规避float的缺点
格式
decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
- decimal(5,2) 表示的范围是 -999.99 ~ 999.99
- decimal(5,2) unsigned 表示的范围 0 ~ 999.99 decimal和float很像
但是有区别: float和decimal表示的精度不一样
使用
create table if not exists t9(f1 float(10,8),f2 decimal(4,2));
- float表示的精度大约是7位。
- decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认是10。
建议:如果希望小数的精度高,推荐使用decimal。
未来如果对精度要求不高,就用float,精度特别高,就用decimal
字符串类型
char
char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
注意:char的单位是 字符
create table if not exists t10(-> id int,-> name char(2)-> );
char(2) 表示可以存放两个字符,可以是字母或汉字,但是不能超过2个, 最多只能是255
char的单位是 字符 ,mysql的字符和我们以往语言的字符(1个字符占1个字节,utf8中按道理一个汉字要占3个字节)概念不一样,而是真的就是一个字符!无论是123 abc还是汉字 其实每个都算一个字符!
超过最大长度会报错(最大长度为:255)
varchar
varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节
注意:最大长度65535个字节
create table if not exists t11(-> id int,-> name varchar(6)-> );
表面上看起来好像和char没啥区别,但是实际上是有区别的!!如下你会发现max竟然变成了21845!!这是为啥呢,因为varchar最大长度65536的单位是字节!!
这个varchar(len),len到底是多大呢?
这个len值,和表的编码密切相关:
varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是65532。
- 当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844(因为utf中,一个字符占用3个字节)
- 如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符占用2字节)。
这个21845也是错误的,它没有考虑记录数据大小的那1-3个字节,实际utf8最大应该是21844.
关于变长和定长的理解
char类型就有点像静态数组,你定义多少我就给你多少空间,这就是定长的含义!!而varchar就有点像string类型,string会有一个char*指向该字符串,一个size表示该字符串有多少字符,一个capacity表示该字符串的上限,你需要多少空间就开辟多少空间,但是你一定不可以超过capacity,所以varchar括号后面表示的是他的字符上限,并不代表他真的开了这么多空间,他也会像string一样会有一部分空间来维护相关的信息,所以这就是变长的含义!!!
utf8最大字节数是21844,那为什么t12可以创建,但是t11不让创建呢??
因为表的存储是一行一行存的,而一行存储最大的字节数也是65536,t12只有varchar类型所以可以一行都用来存varchar,因此可以达到最大的21844,但是t11还有一个int类型,所以要分出一部分空间给int,因此不能达到21844. 但如果我们减到21842,也是可以创建的
varchar和char的比较和选择
如果我们存储的是短字符串且大小比较均匀,那么使用char其实会更好一点(因为还需要额外一部分字节来保存有效长度),但是其他情况(字符串较长且大小不均匀)的话使用varchar会好些。
varchar具体需要多少个字节来存有效长度(1-3)是要根据实际情况动态调整的,像上图的短字符串其实只要一个字节就够了
如何选择定长或变长字符串?
- 如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
- 如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
- 定长的磁盘空间比较浪费,但是效率高。
- 变长的磁盘空间比较节省,但是效率低。(需要维护一些字段,而且动态开辟空间耗时)
定长的意义是,直接开辟好对应的空间
变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。
日期和时间类型
常用的日期有如下三个:
- date :日期 'yyyy-mm-dd' ,占用三字节(存储一个不需要时间的日期,比如生日、各种节日)
- datetime:时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节(存储一个静态的、不会随修改而更新的时间,比如入职时间、身份证过期时间)
- timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节(存储一个需要随着修改而更新的时间,比如评论、修改文章)
CREATE TABLE t13(t1 date,t2 datetime,t3 timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
在老版本中,timestamp默认的是当前的时间戳,而当你进行增加或者更改的时候,他会立马更新成当前的时间戳!(动态)!而前两种需要程序员自己设定格式且是静态的!!
因为timestamp会自动更新时间戳t3,不需要我们插入,因此我们只需要插入t1和t2, 这个时候我们的括号就不能省略了,因为省略的话默认是全都要插入
但是从MySQL 5.6.5开始,默认的TIMESTAMP自动初始化和自动更新行为发生了变化。在较新版本中,这种行为必须明确指定。
insert into t13 (t1,t2) values ('2000-10-01','1949-10-01 08:00:00');
当我们改掉t1的时候,t3也跟着变了
timestamp的典型应用场景:评论
enum和set
enum类型
ENUM是枚举类型,允许从预定义的值列表中选择一个值存储。
特点
- 只能从预定义列表中选择一个值
- 存储效率高,内部使用整数表示
- 最多可以有65,535个不同的元素
- 区分大小写
该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际 存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,....最多65535个;当我们添加枚举值时,也可 以添加对应的数字编号。
set类型
SET类型允许从预定义列表中选择零个、一个或多个值存储。
特点
- 可以选择多个值(以逗号分隔)
- 最多可以有64个不同的成员
- 内部使用位字段存储,非常高效
- 区分大小写
该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值 实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,.... 最多64个。
案例: 有一个调查表votes,需要调查人的喜好
- (代码、羽毛球、乒乓球、足球、游泳)中去选择(可以多选)
- (男,女)[单选]
create table if not exists votes (username varchar(30),gender enum('男', '女'),hobby set('代码', '羽毛球', '乒乓球', '足球', '游泳')
);
只允许插入枚举常量的字符,也就是男,女。也可以写对应常量的下标,不过要注意,下标是从1开始,而不是0开始。不能插入其他的任何字符
爱好是多选的,一个人可以用多个爱好
NULL vs ‘ ’ 的区别:NULL是什么都没有,而' '是有只不过是空串 (前者就是你没有银行卡,后者就是你有银行卡但是里面没钱)
我们发现也可以用数字,去表示爱好
但是,当我们发现插入3的时候
3难道不是乒乓球吗?为啥给的结果是代码,羽毛球呢?
这说明其实多选每个选项代表的是一个bit位 比方说我们有五个多选,就是00000 每一位是0还是1代表这个爱好是否选择,比如3就是00011,说明有两个被选了,也就是代码,羽毛球。如果是7的话,就是00111,也就是3个被选了
所以单选是下标,多选是位图!!
enum和set的类型查找
enum的查找
我想查找兴趣爱好有羽毛球的,该怎么查找呢?
下面方法是固定查找的方法,对于多选就不适用了,比如我想找到会所有会打羽毛球的人,但是这样只会给我筛选出只会打羽毛球的人。
或者是给我查找出指定爱好
我想要的不是只有羽毛球的,是有羽毛球的,那该怎么呢?
对于集合查找,我们可以使用 find_ in_ set 函数
find_in_set(sub,str_list)
如果 sub 在 str_list 中,则返回下标;如果不在,返回0; str_list 用逗号分隔的字符串。
select find_in_set('a', 'a,b,c')
查找会打羽毛球的人 select * from votes where find_in_set('羽毛球', hobby);
也就是说只要hobby里面有羽毛球,那么也就是有返回值,也就意味着结果是true,所以就可以把这些选出来了。
如果我们想查找会代码和羽毛球的,直接写到find_in_set里面是不可以的,因为他其实只能判断其中一个是否在集合里,不能判断两个。
但是因为where是一个条件判断,所以如果我们想要两个都满足的话,我们只需要用一个逻辑与就可以解决这个问题了!
数据类型其实就是一种约束,将来表中插入的数据是有预期的。
相关文章:
MySQL基础 [三] - 数据类型
目录 数据类型分类 编辑 数值类型 tinyint bit 浮点类型 float decimal 字符串类型 char varchar varchar和char的比较和选择 日期和时间类型 enum和set enum类型 set类型 enum和set的类型查找 数据类型分类 数值类型 tinyint TINYINT[(M)] [UNSIGNED]是 …...
1.1 测试计划阶段:如何制定高效的测试策略
测试计划阶段:如何制定高效的测试策略 摘要 本文详细介绍了软件测试流程中的测试计划阶段,包括测试策略制定、资源规划、进度安排和风险管理等内容。通过本文,读者可以系统性地了解如何制定有效的测试计划,确保测试工作有序进行…...
Spring 概念
Spring 是一个功能强大、灵活且广泛使用的 Java 企业级开发框架,它诞生于 2003 年,由 Rod Johnson 创建,初衷是简化 Java EE 的开发过程。 一、Spring 是什么? 简单来说: Spring 是一个轻量级的 Java 开发框架&#…...
animals_classification动物分类
数据获取 深度学习训练中第一个是获取数据集,数据集的质量很重要,我们这里做的是动物分类,大致会选择几个动物,来做一个简单的多分类问题,数据获取的方法,鼠鼠我这里选择使用爬虫的方式来对数据进行爬取&a…...
15.QT窗口:主窗口、浮动窗口、对话框
0. 概述 Qt窗口是通过 QMainWindow类 来实现的。 QMainWindow 是一个为用户提供主窗口程序的类,继承自QWidget类,并且提供了一个预定义的布局。QMainWindow包含一个菜单栏(menu bar)、多个工具栏(tool barsÿ…...
nginx中地理位置访问控制模块geo
1.安装 GeoIP2 模块 Ubuntu/Debian 系统: sudo apt-get update sudo apt-get install nginx-module-geoip2 sudo apt-get install libnginx-mod-http-geoip2CentOS/RHEL 系统: sudo yum install nginx-module-geoip22.下载 GeoIP2 数据库 下载 GeoIP2 …...
基于SpringBoot酒店管理系统设计和实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
蓝桥杯嵌入式第十四届模拟二
一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹,code中添加fun.c、fun.h、headfile.h文件,去资源包中把lc…...
【前端】Node.js一本通
近两天更新完毕,建议关注收藏点赞。 目录 复习Node.js概述使用fs文件系统模块path路径模块http模块模块化 复习 为什么JS可以在浏览器中执行 原理:待执行的JS代码->JS解析引擎 不同的浏览器使用不同的 JavaScript 解析引擎:其中…...
Groovy
一:了解 1:groovy保留字 2: 标识符 二:数据类型 1:字符串(1) 1: java.lang.string 定义的字符串是不能改变的 2: groovy.lang.GString 定义的字符串的值是不能改变的 2: 总结 三:数值类型 1: Groovy的数值型包括整数型(integer)…...
【并发编程 | 第七篇】深入学习线程池(一)
什么是线程池? 线程池是用来管理和复用线程的⼯具,它可以减少线程的创建和销毁开销。 在 Java 中,ThreadPoolExecutor 是线程池的核⼼实现,它通过核⼼线程数、最⼤线程数、任务队列和拒绝策略来 控制线程的创建和执⾏。 举个栗…...
C++ 获取一整行(一行)字符串并转换为数字
代码很简单,主要是自己总是忘记,记录一下: #include <iostream> #include <cstdlib> #include <cstring>#include <string> #include <vector> #include <sstream>using namespace std;void print_int_…...
初探:简道云平台架构及原理
一、系统架构概述 简道云作为一款低代码开发平台,其架构设计以模块化和云端协同为核心,主要分为以下层次: 1. 前端层 可视化界面:基于Web的拖拽式表单设计器,支持动态渲染(React/Vue框架)。多…...
鸿蒙Arkts开发飞机大战小游戏,包含无敌模式,自动射弹,暂停和继续
飞机大战可以把飞机改成图片,目前包含无敌模式,自动射弹,暂停和继续的功能 代码如下: // 定义位置类 class GamePosition {x: numbery: numberconstructor(x: number, y: number) {this.x xthis.y y} }Entry Component struct…...
使用`sklearn`中的逻辑回归模型进行股票的情感分析,以及按日期统计积极和消极评论数量的功能
以下是完成上述任务的Python代码,可在Jupyter Notebook中运行。此代码包含了使用sklearn中的逻辑回归模型进行情感分析,以及按日期统计积极和消极评论数量的功能。 import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer f…...
简洁的 PlantUML 入门教程
评论中太多朋友在问,我的文章中图例如何完成的。 我一直用plantUML,也推荐大家用,下面给出一个简洁的PlantUML教程。 🌱 什么是 PlantUML? PlantUML 是一个用纯文本语言画图的工具,支持流程图、时序图、用例图、类图、…...
Python 面向对象 - 依赖倒置原则 (DIP)
1. 核心概念 依赖倒置原则(Dependency Inversion Principle, DIP) 是SOLID原则中的"D",包含两个关键点: 高层模块不应依赖低层模块,二者都应依赖抽象抽象不应依赖细节,细节应依赖抽象 2. 使用场景 典型应用场景 系…...
自动化框架及其设计搭建浅谈(二)--分层自动化测试
目录 测试金字塔模型 分层自动化测试的模型 分层自动化测试的最佳实践 自动化分层测试的误区 自动化框架的设计与自动化分层 自动化测试的设计建议 分层自动化测试,顾名思义,就是分层的自动化测试,那么自动化测试为什么要分层呢&#x…...
ResNet改进(19):基于PyTorch的ResNet改进方案详解:Mish激活+SPP模块+MixUp数据增强
1. 前言 ResNet作为深度学习领域里程碑式的网络架构,在图像分类等计算机视觉任务中表现出色。然而,随着研究的深入和技术的发展,原始的ResNet架构仍有改进空间。本文将详细介绍一种基于PyTorch的ResNet改进方案,该方案融合了Mish激活函数、SPP模块和MixUp数据增强等先进技…...
设计模式简述(九)命令模式
命令模式 描述基本使用使用 描述 命令模式是一种体现高内聚的行为模式。 将整个请求封装成一个命令对象,由这个命令对象完成所需业务调用。 命令对象封装了该命令需要的所有逻辑,不需要调用方关注内部细节。 基本使用 定义抽象命令(所有命…...
Codecademy—— 交互式编程学习的乐园
一、网站概述 Codecademy 是一家美国在线学习编程知识的网站,它为编程学习者提供了一种全新的学习方式。在如今众多的编程学习平台中,Codecademy 凭借其独特的优势脱颖而出,吸引了全球数百万用户。其目标是帮助更多人轻松学习编程࿰…...
分布式数据库HBase
1.概述 1.1从BigTable 说起 BigTable是一个分布式存储系统,BigTable起初用于解决典型的互联网搜索问题。 BigTable是一个分布式存储系统利用谷歌提出的MapReduce分布式并行计算模型来处理海量数据使用谷歌分布式文件系统GFS作为底层数据存储采用Chubby提供协同服…...
Linux进程地址空间(12)
文章目录 前言一、进程空间地址基本概念代码分析 二、如何理解地址空间三、进一步理解页表和写实拷贝对虚拟地址的进一步深入fork() 的两个返回值? 总结 前言 融会贯通! 本篇会让你再次对计算机世界里面的大智慧感到汗颜! 本篇研究环境基…...
鸿蒙开发04界面渲染
文章目录 前言一、条件渲染1.1 if/else1.2 属性控制1.3 可见性 二、循环渲染三、滚动渲染3.1 下拉刷新3.2 上拉加载 前言 在声明式描述语句中开发者除了使用系统组件外,还可以使用渲染控制语句来辅助UI的构建,这些渲染控制语句包括控制组件是否显示的条…...
CANoe CAPL——Ethernet CAPL函数
CANoe CAPL——CAN CAPL函数 事件过程(Event Procedures) 函数名简要描述on ethernetErrorPacket收到错误的以太网数据包时调用。on ethernetMacsecStatus当物理端口的以太网 MACsec 连接状态变化时调用。on ethernetPacket接收到以太网数据包后调用。…...
语法: setup_lcd (mode, prescale, [segments]);
SETUP_LCD( ) 语法: setup_lcd (mode, prescale, [segments]); 参数: mode可能是来自devices.h头文件如下常数: LCD_DISABLED, LCD_STATIC, LCD_MUX12, LCD_MUX13, LCD_MUX14 下面的参数:STOP_ON_SLEEP, USE_TIMER_1可同上面的LCD_DISABLED, LCD_STATIC, LCD_MUX12, LCD…...
微前端随笔
✨ single-spa: js-entry 通过es-module 或 umd 动态插入 js 脚本 ,在主应用中发送请求,来获取子应用的包, 该子应用的包 singleSpa.registerApplication({name: app1,app: () > import(http://localhost:8080/app1.js),active…...
实操(不可重入函数、volatile、SIGCHLD、线程)Linux
1 不可重入函数 为什么会导致节点丢失内存泄露?main函数在执行insert,但是没执行完就被信号中断了,又进了这个函数里,所以这个insert函数在不同的执行流中,同一个函数被重复进入,如果没有问题,…...
如何在Linux系统上通过命令调用AI大模型?
如何在Linux系统上通过命令调用AI大模型? 文章目录 如何在Linux系统上通过命令调用AI大模型?一、准备工作二、编写API调用脚本三、配置命令行工具 使用AI命令帮我做一个文档总结提问技术问题编写简单的shell脚本帮我写一个docker-compose 在这个AI技术飞…...
数据分析-Excel-学习笔记Day1
Day1 复现报表聚合函数:日期联动快速定位区域SUMIF函数SUMIFS函数环比、同比计算IFERROR函数混合引用单元格格式总结汇报 拿到一个Excel表格,首先要看这个表格的构成(包含了哪些数据),几行几列,每一列的名称…...
负载均衡是什么,Kubernetes如何自动实现负载均衡
负载均衡是什么? 负载均衡(Load Balancing) 是一种网络技术,用于将网络流量(如 HTTP 请求、TCP 连接等)分发到多个服务器或服务实例上,以避免单个服务器过载,提高系统的可用性、可扩…...
洞察 Linux 进程管理
一、进程和线程的概念 1.进程 (1)概念 进程是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位。进程是程序的执行实例,拥有独立的资源(如内存、文件描述符等)。每个进程在创建时会被…...
http协议版本的区别 -- 2和3
目录 http2和http3的区别 传输层协议 QUIC协议 介绍 连接建立与握手 建立安全连接的过程 RTT 建连为什么需要两个过程 原因 解决 QUIC协议的1-RTT 建连 必要性 连接过程 第一次握手(Client Hello) 版本号 key_share 其他 第二次握手 介绍 Server Hello 身…...
Vue2-实现elementUI的select全选功能
文章目录 使用 Element UI 的全选功能自定义选项来模拟全选 在使用 Element UI 的 el-select组件时,实现“全选”功能,通常有两种方式:一种是使用内置的全选功能,另一种是通过自定义选项来模拟全选。 使用 Element UI 的全选功能…...
Spring Boot 与 TDengine 的深度集成实践(四)
优化与扩展 批量插入数据 在实际应用中,当需要插入大量数据时,逐条插入会导致性能低下,因为每次插入都需要建立数据库连接、解析 SQL 语句等操作,这些操作会带来额外的开销 。为了提高数据插入效率,我们可以采用批量…...
2025年【山东省安全员C证】考试题及山东省安全员C证考试内容
在当今建筑行业蓬勃发展的背景下,安全生产已成为企业生存与发展的基石。安全员作为施工现场安全管理的直接责任人,其专业能力和资质认证显得尤为重要。山东省安全员C证作为衡量安全员专业水平的重要标准,不仅关乎个人职业发展,更直…...
提升Spring Boot开发效率的Idea插件:Spring Boot Helper
一、Spring Boot Helper插件介绍 Spring Boot Helper是一款专为Spring Boot开发者设计的IntelliJ IDEA插件,它提供了丰富的功能来简化和加速Spring Boot应用程序的开发过程。 该插件能够智能识别Spring Boot项目结构,提供专属的代码生成、配置辅助和运…...
【USTC 计算机网络】第三章:传输层 - 面向连接的传输:TCP
本文介绍了面向连接的传输协议:TCP,首先介绍 TCP 报文段的结构以及如何设置超时定时器,接着介绍 TCP 如何实现可靠数据传输以及流量控制,最后介绍 TCP 中最重要的三次握手与四次挥手的连接建立与关闭过程。 1. TCP 概述与段结构 …...
Linux主要开发工具之gcc、gdb与make
此系列还有两篇,大家想完整掌握可以阅读另外两篇 Linux文本编辑与shell程序设计-CSDN博客 Linux基础知识详解与命令大全(超详细)-CSDN博客 1.gcc编译系统 1.1 文件名后缀 文件名后缀 文 件 类 型 文件名后缀 文 件 类 型 .c C源…...
23种设计模式-行为型模式-观察者
文章目录 简介问题解决代码关键实现说明 总结 简介 观察者是一种行为设计模式, 允许你定义一种订阅通知机制, 可在事件发生时通知多个“观察/订阅”该对象的其他对象。 问题 假如你有两种类型的对象: 顾客和商店。顾客对某个新品非常感兴趣࿰…...
去中心化预测市场
去中心化预测市场 核心概念 预测市场类型: 类别型市场:二元结果(YES/NO),例如“BTC在2024年突破10万美元?” 多选型市场:多个选项(如总统候选人),赔付基于…...
springboot-ai接入DeepSeek
1、引入pom依赖 <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId> </dependency><dependencyManagement><dependencies><dependency><groupId>o…...
【C语言】数据在内存中的储存(整形)
目录 前言: 预备知识 整数在内存中的储存 原码 反码 补码 总结: 前言: 在上两章中讲解了五大内存函数,其中memchr函数,这个函数考察到数据内存的存储。 接下来为大家讲解整数在内存中的储存。 预备知识 认识…...
PCL 树木树干粗提取(地基数据,TLS)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 主要的思路如下: 1、首先,使用之前的CSF算法提取点云的地面点,在提取的过程中我们可以得到一个布料结构(地面模型)。 2、在得到这个布料结构之后,我们也就可以得到整个地面模型的高度了,之后我们只需要遍历每…...
Spring 中的 IOC
🌱 一、什么是 IOC? 📖 定义(通俗理解): IOC(Inversion of Control,控制反转) 是一种设计思想:对象不再由你自己创建和管理,而是交给 Spring 容器…...
尚硅谷2019版Java集合和泛型
第十一章 Java集合框架 集合框架全景图 mindmaproot((Java集合))Collection单列List有序可重复ArrayListLinkedListVectorSet无序唯一HashSetLinkedHashSetTreeSetMap双列HashMapLinkedHashMapTreeMapHashtablePropertiesToolsCollectionsArrays三大核心接口对比 特性ListSe…...
车载诊断架构 --- 整车重启先后顺序带来的思考
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...
华为eNSP:实验 配置单区域集成ISIS
单区域集成ISIS是一种基于中间系统到中间系统(IS-IS)协议的网络架构优化方案,主要用于简化网络设计并提升数据传输效率。其核心特点包括: 单一区域部署 ISIS协议在单一逻辑区域内运行,消除多区域间的分层复杂性&am…...
常见框架漏洞(五)----中间件IIS6
一、【PUT漏洞】 漏洞描述:IIS Server 在 Web 服务扩展中开启了 WebDAV ,配置了可以写⼊的权限,造成任意⽂件上传。 版本:IIS 6.0 1. 环境 fofa搜素环境:"IIS-6.0" 或者环境搭建:本地搭建2003…...
leetcode221.最大正方形
class Solution {public int maximalSquare(char[][] matrix) {int result 0; // 记录正方形边长int m matrix.length, n matrix[0].length;int[][] dp new int[m 1][n 1];// 动态规划for (int i 1; i < m; i) {for (int j 1; j < n; j) {if (matrix[i - 1][j - …...