SQLite数据类型
目录
1 SQLite的类型概述
1.1 存储类(Storage Classes)
1.2 类型亲和性(Type Affinity)
2 类型亲和性分配规则
3 数据类型详细说明
3.1 INTEGER类型
3.2 REAL类型
3.3 TEXT类型
3.4 BLOB类型
3.5 NULL类型
3.6 NUMERIC类型
4 特殊类型和类型转换
4.1 BOOLEAN
4.2 DATE, DATETIME, TIMESTAMP
4.3 DECIMAL和精确数值
5 类型转换和兼容性
5.2 显式类型转换
5.2 隐式类型转换规则
5.3 类型灵活性示例
6 数据类型的实际应用示例
6.1 主键和ROWID
6.2 处理二进制数据(BLOB)
6.3 存储和查询JSON数据
6.4 日期时间处理
6.5 高效存储大表的考虑
7 数据类型的最佳实践
8 SQLite类型系统的优缺点
8.1 优点
8.2 缺点
9 总结
SQLite采用了一种不同于大多数其他SQL数据库的类型系统,称为"动态类型系统"或"存储类系统"。下面将详细介绍SQLite的数据类型体系、类型亲和性、类型存储及其使用特点。
1 SQLite的类型概述
1.1 存储类(Storage Classes)
SQLite有5种基本存储类:
存储类 | 描述 | 存储方式 |
---|---|---|
NULL | 表示空值 | NULL |
INTEGER | 有符号整数 | 1, 2, 3, 4, 6或8字节,取决于存储的数值大小 |
REAL | 浮点数 | 8字节的IEEE浮点数 |
TEXT | 文本字符串 | UTF-8、UTF-16BE或UTF-16LE编码 |
BLOB | 二进制大对象 | 按照输入存储(完全保留) |
1.2 类型亲和性(Type Affinity)
当创建表时,SQLite会为每列分配一种类型亲和性。类型亲和性决定了SQLite如何尝试转换存储的值:
INTEGER - 倾向于将数据存储为INTEGER
TEXT - 倾向于将数据存储为TEXT
REAL - 倾向于将数据存储为REAL
NUMERIC - 尝试存储为INTEGER或REAL;如果不行则为TEXT
BLOB - 不做任何类型转换,按原样存储
2 类型亲和性分配规则
SQLite根据列的声明类型决定其类型亲和性,规则如下:
INTEGER亲和性:如果类型包含字符串"INT"(不区分大小写)
例如:INT, INTEGER, BIGINT, SMALLINT, TINYINT
TEXT亲和性:如果类型包含以下任一字符串(不区分大小写):
“CHAR”, “CLOB”, “TEXT”
例如:VARCHAR, NCHAR, CLOB, TEXT
BLOB亲和性:仅当列的声明类型为"BLOB"(不区分大小写)
REAL亲和性:如果类型包含以下任一字符串(不区分大小写):
“REAL”, “FLOA”, “DOUB”
例如:REAL, FLOAT, DOUBLE, DOUBLE PRECISION
NUMERIC亲和性:所有其他情况,包括:
NUMERIC, DECIMAL, BOOLEAN, DATE, DATETIME
3 数据类型详细说明
3.1 INTEGER类型
CREATE TABLE example (id INTEGER PRIMARY KEY,count INTEGER,big_num BIGINT,small_num SMALLINT
);
注意事项:
存储有符号整数值
最大可达8字节(64位),范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
可用于主键(特别是INTEGER PRIMARY KEY)
与JavaScript不同,SQLite的INTEGER可以精确表示大整数,不会有精度损失
3.2 REAL类型
CREATE TABLE measurements (temperature REAL,distance FLOAT,calculation DOUBLE
);
注意事项:
存储8字节的IEEE浮点数
范围约为±1.79×10^308,精度为15-16位十进制数字
所有FLOAT, DOUBLE等类型都会映射为REAL
受浮点数固有的精度限制影响
3.3 TEXT类型
CREATE TABLE messages (message TEXT,name VARCHAR(100),description NVARCHAR(200)
);
注意事项:
存储文本字符串,默认为UTF-8编码
也可以存储为UTF-16BE或UTF-16LE
没有固定的长度限制(除了整个数据库的大小限制)
VARCHAR(N)中的长度限制仅作为文档说明,不强制执行
3.4 BLOB类型
CREATE TABLE files (file_id INTEGER PRIMARY KEY,file_name TEXT,file_data BLOB
);
注意事项:
原样存储二进制数据
适用于图像、音频、视频、加密数据等任何二进制内容
不进行任何编码或转换
没有大小限制(除了数据库大小限制)
3.5 NULL类型
CREATE TABLE users (user_id INTEGER PRIMARY KEY,middle_name TEXT DEFAULT NULL
);
注意事项:
表示缺少值
与其他数据库的NULL类似
NULL是一个特殊值,不等于零、空字符串或任何其他值
3.6 NUMERIC类型
CREATE TABLE financial (amount NUMERIC,tax DECIMAL(10,2),is_completed BOOLEAN,transaction_date DATE
);
注意事项:
可以存储为INTEGER、REAL或TEXT,具体取决于值
整数值优先存储为INTEGER
非整数数值存储为REAL
不符合数值格式的值存储为TEXT
4 特殊类型和类型转换
4.1 BOOLEAN
SQLite没有专门的布尔类型,通常用以下方式表示:
CREATE TABLE settings (feature_enabled BOOLEAN -- 实际存储为INTEGER: 0(false)或1(true)
);
注意事项:
存储为INTEGER: 0(false)或1(true)
在查询中,所有非0值和非NULL值都被视为true
4.2 DATE, DATETIME, TIMESTAMP
SQLite没有专门的日期或时间类型,通常以以下方式存储:
CREATE TABLE events (event_date DATE, -- 实际上是TEXT、REAL或INTEGERcreated_at TIMESTAMP, -- 实际上是TEXT、REAL或INTEGERmeeting_time DATETIME -- 实际上是TEXT、REAL或INTEGER
);
常见日期时间存储格式:
TEXT格式(推荐)- 如 ‘2023-05-15 15:30:00’
- ISO8601格式: ‘YYYY-MM-DD HH:MM:SS.SSS’
- 最便于人类阅读和理解
INTEGER格式 - Unix时间戳(自1970-01-01 00:00:00 UTC以来的秒数)
- 适合于日期比较和计算
REAL格式 - Julian日期格式(自公元前4714年起的天数)
- 可以精确到毫秒级别
SQLite提供内置日期函数处理这些格式:
date()
、time()
、datetime()
strftime()
julianday()
4.3 DECIMAL和精确数值
SQLite没有专门的DECIMAL或MONEY类型:
CREATE TABLE financial (price DECIMAL(10,2) -- 实际上是NUMERIC亲和性
);
对于需要精确计算的财务数据,有两种方案:
-
整数存储:将金额乘以100或10000存储为INTEGER
-- 存储$123.45为12345 INSERT INTO financial(price_cents) VALUES (12345); -- 查询时除以100 SELECT price_cents/100.0 AS price FROM financial;
-
TEXT存储:将精确小数存储为TEXT,需要计算时转换
5 类型转换和兼容性
5.2 显式类型转换
-- INTEGER转换
SELECT CAST('123' AS INTEGER); -- 返回123
SELECT CAST(123.45 AS INTEGER); -- 返回123 (截断)
-- REAL转换
SELECT CAST('123.45' AS REAL); -- 返回123.45
SELECT CAST(123 AS REAL); -- 返回123.0
-- TEXT转换
SELECT CAST(123 AS TEXT); -- 返回'123'
SELECT CAST(123.45 AS TEXT); -- 返回'123.45'
5.2 隐式类型转换规则
SQLite会根据上下文自动转换类型:
-
数值上下文中的TEXT
SELECT '123' + 456; -- 579 (TEXT转为INTEGER) SELECT '123.45' + 1; -- 124.45 (TEXT转为REAL)
-
TEXT上下文中的数值
SELECT 123 || 'abc'; -- '123abc' (INTEGER转为TEXT) SELECT 123.45 || 'x'; -- '123.45x' (REAL转为TEXT)
-
比较操作中的混合类型
SELECT 123 = '123'; -- 1 (true,比较前进行转换)
5.3 类型灵活性示例
CREATE TABLE flexible(x);
INSERT INTO flexible VALUES(NULL),(42),(3.14159),('hello'),(x'ABCD'); -- BLOB值
SELECT typeof(x), x FROM flexible;
结果:
typeof(x) x
--------- ------
NULL NULL
INTEGER 42
REAL 3.14159
TEXT hello
BLOB ABCD
6 数据类型的实际应用示例
6.1 主键和ROWID
-- 使用INTEGER PRIMARY KEY (推荐)
CREATE TABLE users (user_id INTEGER PRIMARY KEY, -- 与内部ROWID关联username TEXT UNIQUE
);
-- 隐式ROWID
CREATE TABLE messages (content TEXT-- 自动创建一个隐藏的ROWID列
);
-- 显式禁用ROWID
CREATE TABLE settings (key TEXT PRIMARY KEY,value TEXT
) WITHOUT ROWID; -- 节省空间,但不自动生成ID
6.2 处理二进制数据(BLOB)
-- 存储图像文件
CREATE TABLE images (image_id INTEGER PRIMARY KEY,name TEXT,data BLOB, -- 存储二进制图像数据mime_type TEXT
);
-- C#代码示例
// 读取图像到SQLite
byte[] imageData = File.ReadAllBytes("image.jpg");
using (var command = new SQLiteCommand(connection)) {command.CommandText = "INSERT INTO images(name, data, mime_type) VALUES (@name, @data, @mime)";command.Parameters.AddWithValue("@name", "sample.jpg");command.Parameters.AddWithValue("@data", imageData);command.Parameters.AddWithValue("@mime", "image/jpeg");command.ExecuteNonQuery();
}
6.3 存储和查询JSON数据
-- 创建包含JSON的表
CREATE TABLE products (product_id INTEGER PRIMARY KEY,name TEXT,attributes TEXT -- 存储JSON数据
);
-- 插入JSON数据
INSERT INTO products(name, attributes)
VALUES ('Smartphone', '{"color":"black","memory":"128GB","camera":"12MP"}');
-- 使用JSON函数查询(SQLite 3.9.0+)
SELECT name, json_extract(attributes, '$.color') AS color,json_extract(attributes, '$.memory') AS memory
FROM products;
-- 使用JSON路径操作符(SQLite 3.38.0+)
SELECT name,attributes->>'$.color' AS color,attributes->>'$.memory' AS memory
FROM products;
6.4 日期时间处理
-- 创建日期时间表
CREATE TABLE events (event_id INTEGER PRIMARY KEY,title TEXT,event_date TEXT, -- ISO格式日期created_at TEXT DEFAULT (datetime('now'))
);
-- 插入日期
INSERT INTO events(title, event_date)
VALUES ('Conference', '2023-12-15 09:00:00');
-- 日期计算和过滤
SELECT title, event_date
FROM events
WHERE date(event_date) > date('now');
-- 日期格式化
SELECT title, strftime('%Y-%m-%d', event_date) AS date_only,strftime('%H:%M', event_date) AS time_only
FROM events;
-- 日期差值计算(天数)
SELECT title,julianday('now') - julianday(event_date) AS days_diff
FROM events;
6.5 高效存储大表的考虑
-- 为大表选择高效数据类型
CREATE TABLE log_entries (id INTEGER PRIMARY KEY, -- 比BIGINT更节省空间timestamp INTEGER, -- Unix时间戳比ISO日期字符串更紧凑level TINYINT, -- 使用更小的整数类型(虽然存储还是INTEGER)message TEXT -- 可变长度字符串
);
-- 索引对类型的影响
CREATE INDEX idx_timestamp ON log_entries(timestamp);
-- 整数索引通常比文本索引更高效
7 数据类型的最佳实践
-
明确指定类型
-- 推荐 CREATE TABLE users (id INTEGER PRIMARY KEY,name TEXT NOT NULL,age INTEGER,score REAL ); -- 不推荐 CREATE TABLE users (id,name,age,score );
-
合理使用INTEGER PRIMARY KEY
-- 推荐 CREATE TABLE categories (category_id INTEGER PRIMARY KEY,name TEXT ); -- 不推荐对常用ID列使用TEXT类型 CREATE TABLE categories (category_id TEXT PRIMARY KEY, -- 更慢,更占空间name TEXT );
-
日期时间存储策略
-- 推荐(可读性好) CREATE TABLE appointments (appointment_date TEXT DEFAULT (datetime('now', 'localtime')) ); -- 推荐(计算效率高) CREATE TABLE logs (timestamp INTEGER DEFAULT (strftime('%s', 'now')) );
-
JSON存储与结构化数据的权衡
-- 少量属性,经常作为整体访问:使用JSON CREATE TABLE user_preferences (user_id INTEGER PRIMARY KEY,settings TEXT -- JSON数据 ); -- 频繁查询特定字段:使用结构化表 CREATE TABLE user_preferences_structured (user_id INTEGER PRIMARY KEY,theme TEXT,notifications BOOLEAN,language TEXT );
-
使用约束增强类型安全
CREATE TABLE employees (id INTEGER PRIMARY KEY,name TEXT NOT NULL,email TEXT UNIQUE CHECK(length(email) > 3 AND email LIKE '%@%'),salary REAL CHECK(salary >= 0),department_id INTEGER REFERENCES departments(id) );
8 SQLite类型系统的优缺点
8.1 优点
灵活性:可以存储任何类型的数据到任何列
简单性:不需要像其他数据库那样处理复杂的类型系统
兼容性:容易从其他系统导入数据,不会遇到严格类型不匹配问题
紧凑存储:值按实际需要的空间存储,而不是预分配固定大小
8.2 缺点
类型安全性较低:没有严格的类型检查,可能导致数据一致性问题
隐式转换可能导致意外行为:在操作中类型可能自动转换
与其他SQL数据库不完全兼容:迁移代码时需要注意类型差异
缺少专门的DECIMAL/金融类型:需要应用层面处理精确计算
9 总结
SQLite的数据类型系统虽然简单,但非常灵活且强大:
它提供5种基本存储类型:NULL, INTEGER, REAL, TEXT, BLOB
使用类型亲和性机制来尝试转换数据到合适的存储类型
不强制执行类型约束,但通过CHECK约束可以实现类型安全
灵活性使其非常容易使用,但需要在应用层面确保数据一致性
相比其他关系型数据库,SQLite的类型系统更加灵活,但也需要开发者更加谨慎地使用,确保数据的一致性和完整性。特别是在处理财务数据、精确计算和日期时间时,需要采取适当的存储策略。以上就是SQLite数据类型的全部内容啦,期待我们下期的相遇,下期将介绍SQLite的函数以及如何使用SQLite函数。
相关文章:
SQLite数据类型
目录 1 SQLite的类型概述 1.1 存储类(Storage Classes) 1.2 类型亲和性(Type Affinity) 2 类型亲和性分配规则 3 数据类型详细说明 3.1 INTEGER类型 3.2 REAL类型 3.3 TEXT类型 3.4 BLOB类型 3.5 NULL类型 3.6 NUMERI…...
Django异步任务处理方式总结
在 Django 中实现异步任务处理是优化性能和用户体验的关键。以下是几种常见的异步任务处理方式及详细说明: 1. Celery(最主流方案) 适用场景:需要可靠、分布式、复杂任务队列的项目(如定时任务、重试机制、多节点部署…...
AI技术下研发体系重构
导语: 人工智能技术已发展70余年,经历了从逻辑符号主义向数据驱动范式的转变,目前正处于向多模态、通用化以及伦理化方向演化的阶段。在接下来的五年内,人工智能技术的商业化应用预计将迎来关键性的转变。大模型技术的突破、多模…...
UE5 使用插槽和物理约束对角色新增的饰品添加物理效果
这是一条项链,分为链部分和吊坠部分 新增物理碰撞资产,链部分在前面(作为固定),吊坠部分在后面(作为物理模拟) 链部分的Physics设置 连接部分的设置 吊坠部分 添加物理约束,在Constraint里面添加角色名和饰品名 在约束里面可以对特定骨骼约束,这里需要把链部分约束...
邂逅蓝耘元生代:ComfyUI 工作流与服务器虚拟化的诗意交织
往期推荐: 探秘蓝耘元生代:ComfyUI 工作流创建与网络安全的奇妙羁绊-CSDN博客 工作流 x 深度学习:揭秘蓝耘元生代如何用 ComfyUI 玩转 AI 开发-CSDN博客 探索元生代:ComfyUI 工作流与计算机视觉的奇妙邂逅-CSDN博客 解锁元生代&a…...
【Elasticsearch】在kibana中能获取已创建的api keys吗?
在 Kibana 中,目前没有直接的界面功能可以列出或查看已创建的 API 密钥(API keys)。API 密钥的管理和查看主要通过 Elasticsearch 的 REST API 来完成,而不是通过 Kibana 的管理界面。 在 Kibana 中使用 Dev Tools 查看 API 密钥…...
[论文阅读]Deep Cross Network for Ad Click Predictions
摘要 特征工程是许多预测模型成功的关键。然而,这个过程是困难的,甚至需要手动特征工程或穷举搜索。DNN能够自动学习特征交互;然而,它们隐式地生成所有的交互,并且不一定有效地学习所有类型的交叉特征。在本文中&…...
薪技术|0到1学会性能测试第45课-apache调优技术
前面的推文我们掌握了apache监控技术,今天我们继续来看下apache调优技术,究竟是怎么做性能调优???后续文章都会系统分享干货,带大家从0到1学会性能测试。 Apache调优技术 Apache最近的版本是2.2版,Apache2.2是一个多用途的web服务器,其设计在灵活性、可移植性和性能中…...
Linux之基础开发工具二(makefile,git,gdb)
目录 一、自动化构建-make/makefile 1.1、背景 1.2、基本使用 1.3、推导过程 1.4、语法拓展 二、进度条小程序 2.1、回车与换行 2.2、行缓冲区 2.3、练手-倒计时程序 2.4、进度条程序 三、版本控制器-Git 3.1、版本控制器 3.2、gitee的使用 3.2.1、如何创建仓库 …...
cesium之自定义地图与地图叠加
在appvue中,cesium支持更换不同的地图资源,代码如下 <template><div id"cesiumContainer" ref"cesiumContainer"></div> </template><script setup> import * as Cesium from cesium; import "./Widgets/widgets.css&…...
链表结构深度解析:从单向无头到双向循环的实现全指南
上篇博客实现动态顺序表时,我们会发现它存在许多弊端,如: • 中间/头部的插⼊删除,时间复杂度为O(N) • 增容需要申请新空间,拷⻉数据,释放旧空间。会有不⼩的消耗。 • 增容⼀般是呈2倍的增⻓,…...
Apache Velocity代码生成简要介绍
Apache Velocity 概述 Apache Velocity 是一个基于 Java 的模板引擎,它允许将 Java 代码与 HTML、XML 或其他文本格式分离,实现视图与数据的解耦。在 Web 开发中,Velocity 常用于生成动态网页内容;在其他场景下,也可用…...
阿里云前端Nginx部署完,用ip地址访问却总访问不到,为什么?检查安全组是否设置u为Http(80)!
根据你的描述,Ping测试显示数据包无丢失但无法通过公网IP访问服务,说明网络基础层(ICMP协议)是通畅的,但更高层(如TCP/UDP协议或服务配置)存在问题。以下是系统性排查与解决方案: 一…...
【Hive入门】Hive行级安全:基于Apache Ranger的细粒度访问控制深度解析
引言 在大数据时代,数据安全与隐私保护已成为企业不可忽视的核心需求。传统表级权限控制已无法满足"同一张表不同用户看到不同数据"的业务场景,行级安全(Row-Level Security)成为数据仓库系统的必备能力。 1 行级安全概述 1.1 什么是行级安全…...
Marin说PCB之1000-BASE-T1的PCB设计总结--04
另外一路的1000-BASE-T1 Circuit:千兆以太网的仿真电路原理图的连接搭建方式如下: (共模电感的连接需要特别注意一下PIN序别搞错了) 这一路1000-BASE-T1 Circuit是做了兼容设计的: 其中电容C2099和C2100是百兆以太网的…...
两数之和(暴力+哈希查找)
目录 一.题目 二.解题过程 题目解析 方法一(暴力求解) 思路 代码 提交结果 方法二(哈希查找) 思路 代码 提交结果 作者的个人gitee 作者的算法讲解主页▶️ 每日一言:“愿你纵踩淤泥,也要…...
Qt项目——天气预报
目录 前言结果预览工程文件窗体无状态栏窗口跟随移动HTTP基本概念JSON数据QT解析JSON数据结语 前言 通过对之前Qt的学习其实我们就已经有一点经验了,做天气预报只需要了解以下内容: stylesheet界面美化 Json数据解析 HTTP通信 自定义控件绘制温度 结果预…...
智能推理DeepSeek-R1+Word深度整合业级智能办公构建
前引: 当我们将DeepSeek-R1深度集成到Word时,实际上是在构建智能办公的"数字神经系统"。这个系统不仅理解文字内容,更能感知用户意图,在恰当的时刻提供精准的智能辅助。随着RAG(检索增强生成)技术…...
【C++ Qt】常用输入类下:Combo Box/Spin Box/DataTimeEdit/Dial/Slide
每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论: 在Qt开发框架中,UI组件是构建用户交互界面的基石。本章将详细探讨Qt中常用的UI组件,包括下拉框(QComboBoxÿ…...
基于Piecewise Jerk Speed Optimizer的速度规划算法(附ROS C++/Python仿真)
目录 1 时空解耦运动规划2 PJSO速度规划原理2.1 优化变量2.2 代价函数2.3 约束条件2.4 二次规划形式 3 算法仿真3.1 ROS C仿真3.2 Python仿真 1 时空解耦运动规划 在自主移动系统的运动规划体系中,时空解耦的递进式架构因其高效性与工程可实现性被广泛采用。这一架…...
K8s 常用命令、对象名称缩写汇总
K8s 常用命令、对象名称缩写汇总 前言 在之前的文章中已经陆续介绍过 Kubernetes 的部分命令,本文将专题介绍 Kubernetes 的常用命令,处理日常工作基本够用了。 集群相关 1、查看集群信息 kubectl cluster-info # 输出信息Kubernetes master is run…...
C++编程语言:从高效系统开发到现代编程范式的演进之路
目录 前言一、c简介1.1 起源1.2 c的特点 二、开发环境搭建 2.1. 安装 Qt 开发工具2.2 修改编码环境 2.3创建第一个 Qt 项目2.4 c的编译过程2.5 代码示例 2.6 qt疑难杂症 2.6.1 遇到无法删除代码,一点击光标就变成小黑块2.6.2 遇到运行不弹出终端 编辑 2.6.3 遇到…...
OpenCV进阶操作:角点检测
文章目录 一、角点检测1、定义2、检测流程1)输入图像2)图像预处理3)特征提取4)角点检测5)角点定位和标记6)角点筛选或后处理(可选)7)输出结果 二、Harris 角点检测&#…...
广州华锐视点邀您参与2025广交会VRAR展【5月10-12日】
2025 广交会数字显示与元宇宙生态博览会暨第 9 届世界 VR&AR 展将在广州盛大举行 。时间:2025 年 5 月 10 日至 12 日,广州华锐视点作为一家深耕 VR、AR、AI、元宇宙内容制作领域的企业,也将携旗下众多创新产品和解决方案闪耀登场&#x…...
mac m2 安装 hbase
默认安装好了 homebrew。 1. 终端先更新下 homebrew brew upgrade再安装 hbase brew install hbase 安装完会有如下图的内容 2. 按照提示启动 hbase brew services start hbase返回启动成功 3. 访问 http://localhost:16010 检验一下 启动成功 4. 在启动 hbase shell之…...
k8s node 报IPVS no destination available
在 Kubernetes 集群中,IPVS no destination available 错误通常表示 kube-proxy(IPVS 模式)无法为 Service 找到可用的后端 Pod。这会导致流量无法正确转发,影响服务可用性。以下是详细的排查和解决方法: 一、错误原因…...
MySQL 中 EXISTS (SELECT 1 FROM ...) 的用法详解
EXISTS (SELECT 1 FROM ...) 是 MySQL 中用于存在性检查的核心语法,其核心逻辑是判断子查询是否返回至少一行数据。以下从作用原理、使用场景、性能优化等方面展开解析,并结合具体示例说明。 1. 基本语法与作用原理 语法结构: SELECT 列名 F…...
荣耀A8互动娱乐组件部署实录(第3部分:控制端结构与房间通信协议)
作者:曾在 WebSocket 超时里泡了七天七夜的苦命人 一、控制端总体架构概述 荣耀A8控制端主要承担的是“运营支点”功能,也就是开发与运营之间的桥梁。它既不直接参与玩家行为,又控制着玩家的行为逻辑和游戏规则触发机制。控制端的主要职责包…...
前端-HTML+CSS+JavaScript+Vue+Ajax概述
HTML(超文本标记语言)常见标签 <html><head> <title>这是标题的内容,显示在浏览器的头部</title></head><body><!-- 这里面的内容在浏览器显示给用户看 --><!-- h1 -> h6 : 标题从大到小 …...
20250506格式化NanoPi NEO开发板使用Ubuntu core16.04系统的TF启动卡
https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip 20250506使用SDCardFormatter工具格式化NanoPi NEO开发板使用Ubuntu core16.04系统的TF启动卡 2025/5/6 20:04 缘起:使用友善之臂的NanoPi NEO开发板,制作了Ubunt…...
信息时代的政治重构:网络空间与主权的未来
一、网络空间:暴力垄断的终结 无边界主权的崛起 网络空间作为“第五阶段”的暴力竞争场域,打破传统领土垄断。政府无法像控制物理世界那样垄断网络暴力,类似公海的法律真空状态。 边区类比:中世纪的安道尔(法西共管避…...
Kotlin重构Android项目实践
以下是使用 Kotlin 重构 Android 项目的 5 个常见场景实践,通过对比 Java 实现方式,展示 Kotlin 的简洁性和现代特性: 场景 1:数据类替代 Java POJO Java 传统实现: public class User {private String name;private…...
Vue + Element UI 表单弹窗输入法卡顿问题解决方案
Vue Element UI 表单弹窗输入法卡顿问题解决方案 前言 在使用 Vue 和 Element UI 开发后台管理系统时,经常会遇到 el-dialog 弹出表单对话框的场景。然而,很多开发者可能会遇到一个棘手的问题:当调用 resetFields() 方法重置表单时&#x…...
ubantu安装CUDA
想要通过llama.cpp的方式跑deepseek R1模型。在按照https://huggingface.co/unsloth/DeepSeek-R1-GGUF教程去配环境时报错了。具体如下: (base) oemcore:~/Desktop/deepseek_llama.cpp$ sudo cmake llama.cpp -B llama.cpp/build -DBUILD_SHARED_LIBSOFF -DGGM…...
Python生活手册-Numpy多维数组构建:从快递分拣到智能家居的数据变形术
一、快递分拣系统(基础构建) 1. 电子面单生成(列表转数组) import numpy as np手工录入的快递单号 纸质单号 [["SF123", "JD456", "EMS789"],["YT012", "ZT345", "YZ6…...
数据库的范围查询
范围查询 B树迭代器 迭代器接口 B树的基本操作包括用于范围查询的查找和迭代。B树的位置由状态化的迭代器 BIter 表示。 // 查找小于或等于输入键的最近位置 func (tree *BTree) SeekLE(key []byte) *BIter// 获取当前键值对 func (iter *BIter) Deref() ([]byte, []byte)/…...
JS DAY4 日期对象与节点
一日期对象 日期对象:用来表示时间的对象 作用:可以得到当前系统时间 1.实例化 在代码中发现了 new 关键字时,一般将这个操作称为实例化 创建一个时间对象并获取时间 时间必须实例化 获得当前时间 const date new Date() 获得指定时间 const date new Date(…...
【Leetcode 每日一题 - 补卡】1007. 行相等的最少多米诺旋转
问题背景 在一排多米诺骨牌中, t o p s [ i ] tops[i] tops[i] 和 b o t t o m s [ i ] bottoms[i] bottoms[i] 分别代表第 i i i 个多米诺骨牌的上半部分和下半部分。(一个多米诺是两个从 1 1 1 到 6 6 6 的数字同列平铺形成的 —— 该平铺的每一半…...
Android设备运行yolov8
放假这几天搞了一个基于uniapprk3588实现了一版yolo检测 这个是基于前端调用后端api来实现,感觉还可以,但是需要有网络才能进行图像检测,网络不稳定就会出现等待时间会比较久的问题,然后有做了一个在做了一个Android版本的图像检…...
Debezium MySqlValueConverters详解
Debezium MySqlValueConverters详解 1. 类的作用与功能 1.1 核心作用 MySqlValueConverters是Debezium中负责MySQL数据类型转换的核心类,主要功能包括: 数据类型映射:将MySQL的数据类型映射到Kafka Connect的Schema类型值转换:将MySQL的原始值转换为Kafka Connect可用的…...
Redis从入门到实战——实战篇(下)
四、达人探店 1. 发布探店笔记 探店笔记类似于点评网站的评价,往往是图文结合。对应的表有两个: tb_blog:探店笔记表,包含笔记中的标题、文字、图片等tb_blog_comments:其他用户对探店笔记的评价 步骤①࿱…...
算法中的数学:质数(素数)
1.质数 1.1定义 一个大于1的自然数,除了1和它自身外,不能被其他自然数整除,那么他就是质数,否则他就是合数。 注意:1既不是质数也不是合数 唯一的偶质数是2,其余所有质数都是奇质数 1.2质数判定求法 试除法…...
linux、window安装部署nacos
本文以nacos 2.2.0为例 文章目录 1.下载安装包2.按需修改配置配置单机模式配置内存 -Xms -Xmx -Xmn配置数据库为MySQL 3. 访问http://ip:8848/nacos4.常见问题找不到javac命令 1.下载安装包 打开官网,下载2.2.0版本 2.按需修改配置 配置单机模式 默认集群模式&…...
C++ 外观模式详解
外观模式(Facade Pattern)是一种结构型设计模式,它为复杂的子系统提供一个简化的接口。 概念解析 外观模式的核心思想是: 简化接口:为复杂的子系统提供一个更简单、更统一的接口 降低耦合:减少客户端与子…...
42. 接雨水(相向双指针/前后缀分解),一篇文章讲透彻
给定一个数组,代表柱子的高度 求出下雨之后,能接的水有多少单位。我们将每一个柱子想象成一个水桶,看他能接多少水 以这个水桶为例,他所能接的水取决于左边的柱子的最大高度和右边柱子的最大高度,因为只有柱子高的时候…...
vue实现AI问答Markdown打字机效果
上线效果 功能清单 AI问答,文字输出跟随打字机效果格式化回答内容(markdown格式)停止回答,复制回答内容回答时自动向下滚动全屏切换历史问答查看 主要技术 vue 2.7.1markdown-it 14.1.0microsoft/fetch-event-source 2.0.1high…...
【QT】QT中的事件
QT中的事件 1.事件的定义和作用2.QT中事件产生和派发流程2.1 步骤2.2 图示示例代码:(event函数接收所有事件) 3.常见的事件3.1 鼠标事件示例代码:现象: 3.2 按键事件3.3 窗口大小改变事件 4.举例说明示例代码ÿ…...
【QT】QT中的软键盘设计
QT的软键盘设计 1.软键盘制作步骤2.介绍有关函数的使用3.出现的编译错误及解决办法示例代码1:按键事件实现软键盘现象:示例代码2:按键事件实现软键盘(加特殊按键)现象: 软键盘移植到新的工程的步骤…...
【Unity】一个AssetBundle热更新的使用小例子
1.新建两个预制体: Cube1:GameObject Material1:Material Cube1使用了Material1材质 之后设置打包配置 Cube1的打包配置为custom.ab Material1的打包配置为mat.ab 2.在Asset文件夹下创建Editor文件夹,并在Editor下创建BuildBundle…...
【Bootstrap V4系列】学习入门教程之 组件-按钮组(Button group)
Bootstrap V4系列 学习入门教程之 组件-按钮组(Button group) 按钮组(Button group)一、Basic example二、Button toolbar 按钮工具条三、Sizing 尺寸四、Nesting 嵌套五、Vertical variation 垂直变化 按钮组(Button …...