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

主键id设计

主键自增id

🌱 1. 自增 ID(Auto Increment ID)

✅ 特点:

• 数据库自带(MySQL, PostgreSQL 都支持)

• 简单易用,可读性强

• 一般作为主键自带聚簇索引(主键就是物理存储顺序)

❌ 缺点:

单点瓶颈(高并发环境中,写入需要锁定 ID 生成器)

不适合分布式(各节点之间 ID 容易冲突)

不适合高频写入(写热点集中,容易成为瓶颈)

易被推测业务量(连续的 ID 暴露增长速度)

👉 适合:单库/单实例系统,写入压力不大

🌟 什么是 聚簇索引(Clustered Index)?

聚簇索引

将数据本身存储在索引结构中

✅ 索引结构本身就是数据结构,

✅ 数据行存储的物理顺序和索引的顺序一致。

•	普通索引:字典目录页里有词条和页码,真正的内容在其他页(跳转查找)
•	聚簇索引:目录页和内容页是同一页(词条和内容都在一起)
特性说明
✅ 数据和索引一起存储不需要二次跳转,查找快
✅ 按主键顺序存储数据数据文件的物理顺序和主键一致
❌ 每个表只能有一个因为数据只能按一个顺序存一次
✅ 范围查询效率高按顺序扫,非常快
❌ 插入/更新主键成本高因为要“挪位置”
❌ 不适合频繁插入中间位置容易造成 页分裂 + 碎片化
[B+Tree 索引结构][50]/    \[30]     [70]/   \     /   \data  data data  data

UUID

🧊 2. UUID(通用唯一标识符)

✅ 特点:

全局唯一,不需要中心节点生成

• 可以离线生成、跨服务生成

• 不泄露业务信息

❌ 缺点:

• 太长(16字节/36字符)

不可读

无序 → 插入时会导致 索引树碎片化、页分裂

占用更多存储(主键 + 索引体积大)

👉 不建议直接作为主键,但可以用作全局唯一业务 ID。

雪花算法

❄️ 3. 雪花算法(Snowflake ID)

这是 Twitter 提出的经典 分布式唯一 ID 生成器,核心思想是:

[时间戳 41bit] + [机器ID 10bit] + [序列号 12bit]

✅ 优点:

• 基于时间,趋势递增,适合数据库主键

• 全局唯一

• 支持高并发(毫秒内可生成 4096 个)

❌ 缺点:

复杂度高,依赖机器时钟(时间回拨会导致重复 ID)

• 有生命周期限制(41bit 时间戳 ≈ 69.7 年)

👉 适合:中大型系统、分布式集群、高并发写入

UUIDv7

UUIDv7 是 UUID 的新标准(RFC 4122 bis),设计目标就是:

兼具 UUID 的全局唯一性 + 雪花 ID 的时间排序性!

✅ 优点:

• 基于时间戳(有序)

• 标准 UUID(仍是 128bit,兼容 UUID 系统)

• 兼顾分布式 + 插入性能 + 全局唯一性

❌ 缺点:

• 还比较新(2022 草案提出,语言/数据库支持不全)

• 时间戳精度有限(约等于毫秒级)

时间驱动的有序 UUID

• UUIDv7 的前缀部分是毫秒级时间戳(48 bit)

• 自然趋势递增、有序

• 是标准 UUID 格式(128 bit,全局唯一)

• 可以被当作主键使用(兼顾唯一性和排序)

PostgreSQL 内置有原生的 uuid 类型,用这个就够了,而且空间更优:

CREATE TABLE my_table (id UUID PRIMARY KEY DEFAULT gen_random_uuid(), -- 替换成你自己的 UUIDv7 生成函数...
);

✅ 原生 UUID 类型:

• 占用 16 字节(128 bit)

• 自动支持索引、排序、比较

• 比 varchar 更节省空间 & 更快

❓2. UUIDv7 插入性能会不会比自增 ID 差?

不会差,反而可以接近持平

UUIDv7 的核心优势就是顺序递增,所以:

• 它生成的值在索引 B+Tree 中的插入是**“顺序插入”** → 极大减少页分裂

• 对比 UUIDv4 的“随机插入”性能好很多

• 和自增 ID 差不多,甚至在分布式场景中还更优(无中心)

❓3. 如果查询按时间来,UUIDv7 的时间前缀能不能用作范围查询?

SELECT * FROM orders
WHERE id >= '018f2d45-...'AND id <  '018f2d60-...';

• 如果你使用 WHERE create_time BETWEEN … 也是一样能走索引

• 所以如果查询场景大量是按时间的,加上 create_time 索引是非常合理的

不过如果你已经用了 UUIDv7,而且仅用它做主键并且查询就是时间序排序,那你甚至可以不用额外建 create_time 索引。

🧠 所有 UUID(v1~v8)长度都是固定的:

128 bit(16 字节)

• 通常表示为 36 个字符的字符串(带连字符):8-4-4-4-12 格式

018f2d62-89a7-7b7b-bd5e-bb2d1294f4d3

UUIDv7 开头 48bit 是毫秒级时间戳,所以生成的 UUID 会“大概率保持有序”,也就是**“趋势递增”**。

这就意味着:

插入顺序不会很跳跃 → B+Tree 索引结构能高效维护

• 不容易发生“页分裂” → 插入性能稳定

• 如果你建主键索引(或者唯一索引),性能接近自增 ID

剖析UUIDv7

UUIDv7 的前缀有序、后缀看似“乱序”

| 48 bits  | 4 bits | 12 bits | 62 bits       |
|----------|--------|---------|----------------|
| Unix毫秒时间戳 | version=7 |随机 |更多随机数(熵)|
0195d31a-ff35-7509-80e7-4e4ff946e34d↑      ↑     ↑    ↑     ↑|      |     |    |     └─ node/random 数据|      |     |    └────── variant 标记(高2位固定)|      |     └────────── version 字段 (v7 = 0111)|      └───────────────── 高位时间戳后段└──────────────────────── 时间戳高位(48 bit)

✅ 时间有序,后缀随机,是有意为之!

• ✅ 前 48 位毫秒时间戳 → 实现整体趋势递增

• ✅ 中间部分固定结构 → version 和 variant

• ✅ 尾部是随机数 → 解决同一毫秒内并发插入冲突(保证唯一性)

时间戳一样的时候,后面的部分是随机的,可能会出现“索引跳插”,这是不是影响性能?

插入场景行为对 B+ Tree 影响
时间不同UUID整体递增插入顺序完美,性能最佳
同一毫秒内多并发插入前缀相同,尾部无序局部跳插(叶子节点)但不分裂,影响极小
高并发压力下UUIDv7 相比 UUIDv4 更稳定更接近“顺序插入”,写性能好很多

🧪 举例解释一下:

假设你当前叶子节点能容纳 100 个 UUID,结果你同一毫秒内来了 50 条记录:

• 它们前 48 bit 一样,后面是随机的 → 插入同一页的不同位置

• B+ 树排序时这些 UUID 会“局部乱序插入”

• 但总体页不会立即分裂 → 插入性能稳定

• 等下一毫秒,下一批 UUID 有新时间戳 → 再进新页

UUIDv7 是一种“

局部无序的有序 ID

不会像 UUIDv4 那样完全乱插导致频繁页分裂

🔚 最终建议总结(含金量超高!)

• ✅ UUIDv7 的“有序 + 唯一”组合,适合作为数据库主键

• ✅ 对 PostgreSQL 而言,使用 UUIDv7 的插入性能 接近自增 ID

• ✅ 不影响索引性能,不必担心页分裂频繁

• ✅ 同一毫秒内的乱序可忽略(除非你 1ms 插入 10000+ 条数据)

• ✅ 若需要精确时间筛选,仍建议保留 create_time 字段 + 索引

✅ PostgreSQL 中的 uuid 类型:

• 占用 16 字节

• 使用原生格式存储(不是字符串!)

• 内部用二进制比较,不需要解析字符串 → 效率比 varchar 快很多

🔍 那 bigint 呢?

✅ bigint 是

64 bit(8 字节)

PostgreSQL 的 bigint(也叫 int8):

• 占用 8 字节

• 存储范围是 -2^63 ~ 2^63 - 1

• 通常用于自增主键(serial8, bigserial)

如果你在 PostgreSQL 中使用原生的 uuid 类型,它天然支持带连字符(-)的标准 UUID 格式,包括 UUIDv7,你可以直接存,也可以直接查!

INSERT INTO users (id, name)
VALUES ('0195d31a-ff35-7509-80e7-4e4ff946e34d', 'Alice');

但是:推荐使用带 - 的标准格式,更可读、兼容性好、调试更方便。

四个对比

特性自增 IDUUID雪花 IDUUIDv7
唯一性单库唯一全局唯一全局唯一全局唯一
顺序性有序无序趋势递增有序
可读性一般一般
性能
分布式支持
作为主键插入效率
标准化支持否(私有实现)是(UUIDv7)
生命周期限制~70年~20万年

相关文章:

主键id设计

主键自增id &#x1f331; 1. 自增 ID&#xff08;Auto Increment ID&#xff09; ✅ 特点&#xff1a; • 数据库自带&#xff08;MySQL, PostgreSQL 都支持&#xff09; • 简单易用&#xff0c;可读性强 • 一般作为主键自带聚簇索引&#xff08;主键就是物理存储顺序&…...

文件上传绕过的小点总结(6)

14.文件上传&#xff08;文件包含漏洞&#xff09;二次渲染 很多服务器为了防止代码嵌入图片&#xff0c;通常会将上传的图片进行重新生成处理&#xff0c;包括文件格式转换等等&#xff0c;嵌入的恶意代码很容易被改掉。于是产生了二次渲染&#xff0c;二次渲染的原理就是找到…...

传统应用容器化迁移实践

背景介绍&#xff1a;从传统部署到容器化迁移的必要性 在过去的运维工作中&#xff0c;某企业一直依赖于传统的物理机和虚拟机部署方式。然而&#xff0c;随着业务的快速发展和应用规模的不断扩大&#xff0c;传统部署方式的局限性逐渐显现&#xff1a; 资源利用率低&#xf…...

混境之地1

问题描述 小蓝有一天误入了一个混境之地。 好消息是&#xff1a;他误打误撞拿到了一张地图&#xff0c;并从中获取到以下信息&#xff1a; 混境之地的大小为 n⋅mn⋅m&#xff0c;其中 # 表示这个位置很危险&#xff0c;无法通行&#xff0c;. 表示道路&#xff0c;可以通行。他…...

LLM 加速技术有哪些

LLM 加速技术有哪些 目录 LLM 加速技术有哪些量化(Quantization)基本原理举例剪枝(Pruning)基本原理举例动态Shape(Dynamic Shape)基本原理举例算子融合(Operator Fusion)基本原理举例量化(Quantization) 基本原理 量化是指将模型中连续取值(如32位浮点数)的参数…...

CPP从入门到入土之类和对象Ⅲ

拷贝构造函数 拷贝构造函数是一个已经存在的对象去初始化一个新的对象时&#xff0c;调用的函数 例如&#xff1a; 假设我有一个盒子&#xff0c;里面装了一个苹果 拷贝构造函数的特点 拷贝构造函数是构造函数的一个重载拷贝构造函数的第一个参数必须是类类型对象的引用,例如…...

安全上网沙箱:多方面解决政企私的上网问题

在数字化的浪潮中&#xff0c;网络已成为我们工作与生活不可或缺的一部分。然而&#xff0c;网络的便捷也伴随着诸多安全隐患&#xff0c;尤其是对于企业、个人以及政企机构而言&#xff0c;安全上外网成为了至关重要的课题。 隔离保护&#xff1a;构建安全堡垒 沙箱技术在内网…...

空转 | GetAssayData doesn‘t work for multiple layers in v5 assay.

问题分析 当我分析多个样本的时候&#xff0c;而我的seurat又是v5时&#xff0c;通常就会出现这样的报错。 错误的原因有两个&#xff1a; 一个是参数名有slot变成layer 一个是GetAssayData 不是自动合并多个layers&#xff0c;而是选择保留。 那么如果我们想合并多个样本&…...

26、web前端开发之CSS3(三)

5. 文本&#xff08;Text&#xff09; CSS3大大增强了对文本样式和排版的控制&#xff0c;使得网页设计更加灵活和多样化。本讲详细介绍CSS3中常用的文本相关属性&#xff0c;包括文本对齐、字体大小、行高、字母间距、单词拆分、溢出隐藏等&#xff0c;帮助开发者更好地控制和…...

第 8 章:使用更好的库_《C++性能优化指南》_notes

使用更好的库 第八章核心知识点解析编译与测试建议总结优化原则重点内容&#xff1a;第一部分&#xff1a;多选题&#xff08;10题&#xff09;第二部分&#xff1a;设计题答案与解析多选题答案&#xff1a;设计题答案示例&#xff08;部分&#xff09;&#xff1a; 测试用例设…...

【面试八股】:常见的锁策略

常见的锁策略 synchronized &#xff08;标准库的锁不够你用了&#xff09;锁策略和 Java 不强相关&#xff0c;其他语言涉及到锁&#xff0c;也有这样的锁策略。 1. 悲观锁&#xff0c;乐观锁&#xff08;描述的加锁时遇到的场景&#xff09; 悲观锁&#xff1a;预测接下来…...

Apache Iceberg 解析,一文了解Iceberg定义、应用及未来发展

什么是 Iceberg&#xff1f; Apache Iceberg 是一种开源的 表格式&#xff08;Table Format&#xff09; &#xff0c;专为超大规模数据分析场景设计&#xff0c;通过标准化数据存储规范与访问协议&#xff0c;解决了传统数据湖在元数据管理、事务控制、查询性能等方面的核心痛…...

Ubuntu 优化启动时间优化

优化 Ubuntu 20.04 的启动时间可以从多个方面入手&#xff0c;以下是详细的步骤和建议&#xff1a; 一、分析启动耗时 首先检查系统启动各阶段的耗时&#xff1a; systemd-analyze time # 查看整体启动时间 systemd-analyze blame # 列出各服务/进程的启动耗时 …...

【Git 常用指令速查表】

Git 常用指令速查表 Git 常用指令速查表目录1. 初始化仓库2. 提交代码流程3. 分支管理4. 远程仓库操作5. 撤销操作6. 查看状态与日志7. 其他实用指令完整操作示例常用场景速查表 Git 常用指令速查表 目录 初始化仓库提交代码流程分支管理远程仓库操作撤销操作查看状态与日志其…...

Linux实用操作及命令

一、各类小技巧&#xff08;快捷键&#xff09; 1、强制停止&#xff08;ctrlc&#xff09; Linux某些程序的运行&#xff0c;如果想要强制停止它&#xff0c;可以使用快捷键ctrl c 命令输入错误&#xff0c;也可以通过快捷键ctrl c&#xff0c;退出当前输入&#xff0c;重…...

洛谷 P10516 数据结构 Solution

Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​) 和 b ( b 1 , b 2 , ⋯ , b n ) b(b_1,b_2,\cdots,b_n) b(b1​,b2​,⋯,bn​)&#xff0c;有 m m m 个操作分三种&#xff1a; add ⁡ ( l , r , k , t ) \operatorname{ad…...

在IDEA中使用TortoiseSVN

一、前言 原版SVN由于下载路径中没有svn.exe文件&#xff0c;导致IDEA中无法使用命令行提交项目代码&#xff0c;因此&#xff0c;现在卸载旧版本TortoiseSVN&#xff0c;下载附有svn.exe的新版TortoiseSVN&#xff0c;下载使用过程记录如下 二、下载过程 卸载就在 控制面板…...

基于 ffmpeg 实现合并视频

ffmpeg是一个强大的多媒体处理工具&#xff0c;支持视频文件的合并。 列出目录下所有MP4文件 import os import glob# 当前目录 directory os.getcwd() directory "/directory/to/mp4/*"# 列出目录下所有MP4文件 files glob.glob(directory)# 排序 files.sort(…...

如何在 HTML 中嵌入外部字体,有哪些注意事项?

大白话如何在 HTML 中嵌入外部字体&#xff0c;有哪些注意事项&#xff1f; 在 HTML 里嵌入外部字体&#xff0c;能让网页文字更有个性&#xff0c;瞬间提升页面的吸引力。下面就来详细说说怎么嵌入外部字体&#xff0c;以及其中的注意事项。 嵌入外部字体的方法 1. 使用 fo…...

三极管原理及应用

一、结构 基极&#xff08;Base&#xff0c;符号&#xff1a;B&#xff09; 基极是三极管的控制端&#xff0c;用于输入控制信号。通过基极电流的大小&#xff0c;可以控制集电极与发射极之间的电流导通程度&#xff0c;实现电流放大或开关功能。 发射极&#xff08;Emitter&…...

三个串口同时打开并指定数据包控制指令思想

可以对嵌入式串口数据包指令设置做一次总结&#xff1a; 首先确定你的数据包大小&#xff0c;传统的接收串口数据到数组存储会出现需要循环遍历数组去读取数据的弊端&#xff0c;所以我设计了一个机制&#xff0c;只有当你想要读取外界指令时&#xff0c;才开始读取外界发过来…...

“征服HTML引号恶魔:“完全解析手册”!!!(quot;表示双引号)

&#x1f6a8;&#x1f4e2; "征服HTML引号恶魔&#xff1a;“完全解析手册” &#x1f4e2;&#x1f6a8; &#x1f3af; 博客引言&#xff1a;当引号变成"恶魔" &#x1f631; 是否遇到过这种情况&#xff1a; 写HTML时满心欢喜输入<div title"他…...

MQL5教程 04 脚本开发实战、指标开发基础

文章目录 一、脚本开发实战1、给脚本设置快捷键2、运行时显示输入参数界面3、开市价单4、一键平仓5、修改止盈止损6、一键删除当前图表所有挂单 二、指标开发基础 一、脚本开发实战 1、给脚本设置快捷键 在MT5导航栏中&#xff0c;选定脚本&#xff0c;鼠标右击 → 设置热键 …...

【Qt】Ubuntu22.04使用命令安装Qt5和Qt6

1、安装Qt5 注意:Ubuntu22.04已经没有 qt5-default ,因此不能一键安装啦 1)安装核心组件 sudo apt install qtbase5-dev qtchooser qt5-qmake qtcreator2)安装QtCreator sudo apt install qtcreator3)安装工具包、Qt Quick 开发的核心库(qtdeclarative5-dev) sudo a…...

海康设备http监听接收报警事件数据

http监听接收报警事件数据 海康获取设备报警事件数据两种方式&#xff1a; 1、sdk 布防监听报警事件数据&#xff08;前面文章有示例&#xff09; 2、http监听接收报警事件数据 http监听接收报警事件数据&#xff0c;服务端可以使用netty通过端口来监听获取事件数据。 WEB 端…...

【MVCC快照如何实现】

MVCC(多版本并发控制)快照的实现原理 MVCC(Multi-Version Concurrency Control)是现代数据库实现事务隔离级别的核心技术&#xff0c;它通过数据多版本和快照机制来实现高效的并发控制。下面我将详细解析MVCC快照的实现机制。 一、MVCC核心组件 1. 版本链结构 MVCC通过以下…...

STM32中不同FLASH的芯片启动文件选择规则

F103ZET6的FLASH大小是512K&#xff0c;所以选择startup_stm32f10x_hd.s F103C8T6的FLASH大小是64K&#xff0c;所以选择startup_stm32f10x_md.s 移植需要注意的事项&#xff1a; 从ZET6到C8T6&#xff0c;需要更改 1&#xff09;启动文件 2&#xff09;C/C选项卡...

树莓集团商业模式解析:树莓集团是国企吗?

树莓集团作为中国市场的重要企业实体&#xff0c;其所有制性质一直受到业界关注。从公开资料显示&#xff0c;树莓集团并非传统意义上的国有企业&#xff0c;而是一家具有混合所有制特征的现代化企业集团。其股权结构中既包含国有资本成分&#xff0c;也吸纳了社会资本和民营投…...

mock.js模拟数据

MOCK模拟后端数据 1.按照mock.js npm install mockjs2.在src目录下建立mock目录&#xff0c;在该目录下建立index.js文件&#xff0c;该文件中写上你所需要的数据&#xff0c;示例如下&#xff1a; import Mock from mockjs let data Mock.mock("/data/person",&…...

如何自动规整化(格式化)HTML

如果你想要自动规整化&#xff08;格式化&#xff09;HTML&#xff0c;可以使用以下方法&#xff1a; 方法 1&#xff1a;使用 VS Code 进行 HTML 格式化&#xff08;推荐&#xff09; 步骤 安装 Visual Studio Code打开你的 HTML 文件按下 Shift Alt F&#xff08;Windows…...

MySQL数据库入门

目录 前言 一、安装软件 二、普通指令使用 三、MySQL接口API相关函数 1、API函数使用步骤 2、mysql_init-MYSQL对象初始化 3、mysql_real_connect()——数据库引擎建立连接 4、mysql_close()——关闭数据库连接 5、mysql_query()——查询数据库某表内容 6、mysql_stor…...

SpringBoot集成Couchbase开发与实践

1 前言 1.1 什么是Couchbase Couchbase 是一个高性能的 NoSQL 数据库,支持文档存储、内存缓存和分布式计算。它结合了内存数据库的速度和灵活性与传统数据库的持久性和查询能力。 1.2 Couchbase的特点与优势 高性能:利用内存缓存加速数据访问。可扩展性:支持水平扩展,能…...

一周掌握Flutter开发--8. 调试与性能优化(上)

文章目录 8. 调试与性能优化核心技能8.1 使用 Flutter DevTools 分析性能8.2 检查 Widget 重绘&#xff08;debugPaintSizeEnabled&#xff09;8.3 解决 ListView 卡顿&#xff08;ListView.builder itemExtent&#xff09; 其他性能优化技巧8.4 减少 build 方法的调用8.5 使用…...

动态路由机制MoE专家库架构在多医疗AI专家协同会诊中的应用探析

随着医疗人工智能技术的飞速进步,AI在医学领域的应用日益增多,尤其是在复杂疾病的诊断和治疗中,AI技术的应用带来了巨大的潜力。特别是动态路由机制混合专家(Mixture of Experts,MoE)架构,因其灵活、高效的特点,正逐渐成为实现多AI专家协同会诊的关键技术。通过将多个不…...

Linux上位机开发实践(开源框架和开源算法)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 做嵌入式软件开发&#xff0c;如果软件本身比较简单&#xff0c;只是图形界面显示&#xff0c;那么相关的开发工作并不难。最主要的内容也就是数据…...

算法时间复杂度分析

1. 基本概念 大 O 符号 O(f(n)) 表示算法的最坏情况复杂度&#xff0c;即算法在最不利情况下所需的基本操作数不会超过 O(f(n))的级别。例如&#xff0c;表示当输入规模 n 增大时&#xff0c;算法运行时间上界是某个常数乘以 。 Ω 符号 Ω(f(n)) 表示算法的下界&#xff0c;即…...

数据库基础知识点(系列五)

创建表&#xff0c;设置约束&#xff0c;修改表&#xff0c;删除表&#xff0c;表中数据的操作(insert,修改&#xff0c;删除) 1&#xff0e;在第5章习题创建的 “仓库库存”数据库中完成下列操作。 (1)创建“商品”表&#xff0c;表结构如表6-4&#xff1a; 表6-4 “goods”…...

C++中使用ShellExecute函数调用其他窗口程序时,参数设置为隐藏,后续能通过发消息给这个被调用程序显示,能显示出来窗口吗

文章目录 一、可行性分析二、实现步骤1. 启动程序并隐藏窗口2. 获取目标窗口句柄3. 发送消息显示窗口方法1&#xff1a;发送WM_SHOWWINDOW方法2&#xff1a;发送WM_SYSCOMMAND恢复窗口方法3&#xff1a;直接调用ShowWindow&#xff08;推荐&#xff09; 三、代码示例四、关键注…...

使用 AI 生成 页面

当前使用的是 火山引擎 提供的 deepseek-v3-241226 思考 如何让AI可以按自己的想法一步步生成页面&#xff1f; 我们要把要生成的内容分段的给到它&#xff0c;让它按步聚完成。 如生成一个列表页 依据所定义的接口。生成API依赖定义接口 生成 状态管理模块依赖上状态管理…...

【人工智能】机器学习中的评价指标

机器学习中的评价指标 在机器学习中&#xff0c;评估指标&#xff08;Evaluation Metrics&#xff09;是衡量模型性能的工具。选择合适的评估指标能够帮助我们更好地理解模型的效果以及它在实际应用中的表现。 一般来说&#xff0c;评估指标主要分为三大类&#xff1a;分类、…...

shell脚本运行方式 bash 和./区别

在 Linux 或 macOS 这类基于 Unix 的系统里&#xff0c;使用 ./ 运行脚本和使用 bash 运行脚本存在一些差异&#xff0c;下面为你详细说明&#xff1a; 1. 语法与使用方式 使用 ./ 运行脚本&#xff1a; 若要使用 ./ 来运行脚本&#xff0c;需要确保脚本文件具备可执行权限&a…...

ShardingSphere+达梦数据库分表操作

背景 随着数字经济时代的全面到来&#xff0c;数据量呈现爆炸式增长&#xff0c;传统单机数据库在性能、扩展性和可用性方面面临严峻挑战。分布式数据库技术应运而生&#xff0c;成为解决海量数据存储与处理的关键方案。在这一背景下&#xff0c;Apache ShardingSphere作为一款…...

WordPress上传图片时显示“未提供数据”错误

在WordPress中上传图片时显示“未提供数据”的错误&#xff0c;通常是由多种原因引起的&#xff0c;以下是一些常见的问题及其解决方法&#xff1a; 1. 文件权限问题 WordPress需要正确的文件和目录权限才能正常上传图片。如果权限设置不正确&#xff0c;可能会导致无法上传图…...

AP CSA FRQ Q2 Past Paper 五年真题汇总 2023-2019

Author(wechat): bigshuang2020 ap csa tutor, providing 1-on-1 tutoring. 国际教育计算机老师, 擅长答疑讲解&#xff0c;带学生实践学习。 热爱创作&#xff0c;作品&#xff1a;ap csa原创双语教案&#xff0c;真题梳理汇总&#xff0c; AP CSA FRQ专题冲刺, AP CSA MCQ小题…...

海量数据场景题--查找两个大文件的URL

查找两个大文件共同的URL 给定 a、b 两个文件&#xff0c;各存放 50 亿个 URL&#xff0c;每个 URL 各占 64B&#xff0c;找出 a、b 两个文件共同的 URL。内存限制是 4G。 操作逻辑&#xff1a; 使用哈希函数 hash(URL) % 1000​ 将每个URL映射到0-999的编号 文件A切割为a0, a1…...

Spring AI Alibaba 工具(Function Calling)使用

一、工具(Function Calling)简介 Spring AI Alibaba工具(Function Calling)&#xff1a;https://java2ai.com/docs/1.0.0-M6.1/tutorials/function-calling/ 1、工具(Function Calling) “工具&#xff08;Tool&#xff09;”或“功能调用&#xff08;Function Calling&#xf…...

汽车方向盘开关功能测试的技术解析

随着汽车智能化与电动化的发展&#xff0c;方向盘开关的功能日益复杂化&#xff0c;从传统的灯光、雨刷控制到智能语音、自动驾驶辅助等功能的集成&#xff0c;对开关的可靠性、耐久性及安全性提出了更高要求。本文结合北京沃华慧通测控技术有限公司&#xff08;以下简称“慧通…...

9-100V输入替代CYT5030/LM5030高压双路电流模式PWM控制器

产品描述: PC3530高压 PWM 控制器包含实现推挽和桥式拓扑所需的所有功能&#xff0c;采用电流模式控制&#xff0c;提供两个交替栅极驱动器输出。PC3530内置高压启动稳压器&#xff0c;可在 9V~100V 的宽输入电压范围内工作。芯片内部还集成有误差放大器、精密基准、两级过流保…...

详细讲解c++中线程类thread的实现,stl源码讲解之thread

Thread 本节我们来详细介绍一下c中的线程类thread&#xff0c;在讲解的过程中会用到大量模板的知识&#xff0c;可以去看c详解模板泛型编程&#xff0c;详解类模板的实现为什么不能放在cpp文件_泛型函数 cpo-CSDN博客 源码: template <class _Fn, class... _Args, enable_…...

PostgreSQL详解

第一章&#xff1a;环境部署与基础操作 1.1 多平台安装详解 Windows环境 图形化安装 下载EnterpriseDB安装包&#xff08;含pgAdmin&#xff09; 关键配置项说明&#xff1a; # postgresql.conf优化项 max_connections 200 shared_buffers 4GB work_mem 32MB 服务管理命…...