面基:为什么不推荐用UUID作为主键
推荐回答结构:
-
技术理论层面分析
-
实际项目中的教训
-
优化改进过程
-
总结提炼认知
阐述回答
在阐述回答时,你可以从 UUID 本身特性带来的问题,以及在实际工作中遇到的具体场景和优化过程等方面展开,下面从这一思路,给出参考回复。
在实际项目开发中,我曾大量使用数据库,也碰到过 UUID 作为主键带来的各种问题,因此对 “不推荐使用 UUID 作为主键” 这一观点有深刻体会。
1. 性能层面
在插入数据时,UUID 的无序性会导致 B + 树索引频繁分裂。在一个数据量达千万级别的分库分表项目中,使用 UUID 作为主键,数据插入时产生大量随机 I/O。
(UUID作为无序字符串会导致聚簇索引频繁的页分裂。因为InnoDB的数据存储是按主键顺序组织的,插入无序数据时,MySQL不得不频繁进行页分裂重组(我们通过SHOW ENGINE INNODB STATUS
观察到大量页分裂事件),这直接导致写入性能下降约40%。)
与之对比,自增主键能够顺序写入磁盘,利用磁盘预读特性,大幅提升写入性能。
经测试,使用自增主键的写入速度比 UUID 主键快约 30% 。
在高并发写入场景下,UUID 主键的无序性,会让数据库产生大量锁争用,导致数据库吞吐量降低,响应时间变长。
2. 存储空间层面
UUID 由 36 个字符组成,长度达到 128 位。
以 MySQL 为例,若使用 VARCHAR (36) 类型存储 UUID 主键,相比于 4 字节的 INT 类型自增主键,存储空间增加了近 9 倍。
(UUID的36字符长度(实际存储优化后16字节)相比BIGINT的8字节,不仅使主键索引体积膨胀2倍,二级索引中存储的主键引用也会同步膨胀。我们做过测试:当订单表达到2亿数据量时,UUID方案的总索引大小比自增ID多消耗约300GB存储空间,这对SSD存储成本影响显著。)
当数据量达到 PB 级时,这会显著增加存储成本,并且在数据传输过程中,会占用更多的网络带宽,降低系统整体性能。
3. 查询效率层面
由于 UUID 的随机性,数据库无法有效利用索引进行范围查询。
在电商项目的订单查询中,需要根据订单创建时间进行范围查询。若使用自增主键,数据库可以利用索引快速定位数据;而使用 UUID 主键时,数据库不得不进行全表扫描,查询效率极低,导致响应时间从几百毫秒增加到数秒。
4. 业务场景适配层面
在实际业务中,很多场景需要主键具有一定的业务含义,例如订单号。UUID 缺乏业务含义,难以满足业务需求。而且 UUID 不易记忆和识别,对于用户输入操作来说不太友好。
UUID业务层面的连锁反应:由于主键无序性,当我们需要按时间范围查询近期订单时,即使有created_time
索引,执行计划仍经常出现回表查询。最典型的一个场景是用户查询最近三个月订单,响应时间从最初的200ms逐渐恶化到2秒以上。
基于以上这些在实际工作中遇到的问题,我认为除非有特殊需求,否则不推荐使用 UUID 作为主键。在大多数情况下,自增主键或基于业务规则生成的主键,能更好地满足系统性能和业务需求。
5、优化过程分为三个阶段:
-
先用分布式ID生成器(雪花算法)替换UUID,保持ID时间有序性
-
对历史数据做在线迁移时,采用双写方案逐步过渡
-
优化后TPS从1200提升到4800,P99延迟下降65%
这个经历让我深刻认识到:主键设计需要平衡唯一性、有序性和存储效率。现在我们团队将UUID的使用场景严格限制在非索引字段或极低频更新的业务字段上,核心业务表的主键必须满足有序性和空间效率。"
---------分界线------------------------------------------------------------------------------------------------
【难点理解】
B + 树索引与数据插入
- B + 树索引:在数据库中,B + 树是一种常见的索引结构,它用于快速定位和查找数据。B + 树的节点按照一定的顺序存储数据,通常是按照主键的值进行排序。这种有序的结构使得数据库在查询数据时能够快速地通过索引定位到所需的记录。
- 数据插入与索引分裂:当向数据库中插入新数据时,数据库需要根据主键的值将新数据插入到 B + 树的合适位置。如果主键是有序的,例如自增的整数,新数据会依次插入到 B + 树的末尾或接近末尾的位置,这样只会导致 B + 树在原有基础上进行少量的扩展。然而,如果主键是无序的,如 UUID,新数据可能会被插入到 B + 树的任何位置。当插入的位置已满时,就会导致 B + 树的节点分裂,以容纳新的数据。节点分裂是一个相对复杂且耗时的操作,它需要重新调整 B + 树的结构,并且可能会导致数据库的 I/O 操作增加。
UUID 无序性导致的随机 I/O
- UUID 的特性:UUID 是通用唯一识别码,它是一种由数字和字母组成的 128 位标识符,具有全球唯一性和随机性。这意味着 UUID 的值是随机分布的,没有任何规律可循。
- 随机 I/O 的产生:在分库分表的项目中,数据通常会被分散存储在多个数据库节点或表中。当使用 UUID 作为主键插入数据时,由于其无序性,新数据可能会被随机地插入到不同的数据库节点或表中。这就导致了数据插入时的 I/O 操作也是随机的,而不是像有序主键那样可以进行顺序的 I/O 操作。在数据量达到千万级别时,这种随机 I/O 的影响会更加明显,因为大量的随机插入操作会使得数据库的存储引擎需要频繁地在不同的磁盘位置之间进行切换,以写入新的数据,从而产生大量的随机 I/O。
这种大量的随机 I/O 会严重影响数据库的性能,因为随机 I/O 的速度通常比顺序 I/O 慢很多。它会导致磁盘寻道时间增加,降低数据库的写入吞吐量,增加系统的响应时间,甚至可能导致数据库出现性能瓶颈。
雪花算法 Snowflake
基本结构:雪花算法生成的ID是64位的长整数,由时间戳、工作机器ID、序列号组成。这三个部分组合起来保证在分布式系统中生成的ID唯一且有序。
尽管存在时间回拨等限制,但通过合理调整参数和引入优化策略,仍可适应大多数分布式场景需求。
雪花算法就像给每个事件打一个「时间戳+地点+流水号」的三合一标签,让计算机世界里的所有事情都有序排队。
具体参考URL: 简聊雪花算法Snowflake快乐认知-CSDN博客
---------分界线------------------------------------------------------------------------------------------------
问:UUID(防爬优势)这么好,那么数据库中的主键是用UUID还是自增主键呢?
分析UUID和自增主键各自的优缺点。
UUID的优点包括全局唯一性、分布式生成无需协调、防爬;
缺点则是存储空间大、索引碎片化、查询性能差。
自增主键的优点是存储紧凑、查询高效、有序性好;
缺点是易预测、单点故障、分布式环境下生成困难。
这个问题其实触及了系统设计的核心权衡(trade-off),我们可以用「选餐厅」的比喻来理解这个选择困境:
1.场景类比:
假设你要开一家餐厅,纠结菜单用**流水号(自增主键)还是随机暗号(UUID)**来标记订单:
-
流水号:
A001, A002, A003...
(服务员快速传菜,后厨按顺序处理) -
随机暗号:
X9K4, 3LPQ, R2D2...
(顾客看不出订单量,防竞争对手分析)
你发现:
-
想要传菜快就选流水号,但竞争对手站在门口数
A001→A100
就知道今天卖了100单 -
想要保密性好就选随机暗号,但后厨找订单像玩捉迷藏,高峰期容易堵车
2.技术本质对比:
自增主键 (如MySQL Auto Increment) | UUID | |
---|---|---|
优点 | 存储小(8字节),索引紧凑,范围查询快 | 全局唯一,无需中心化协调,天然防爬虫 |
致命缺点 | 易暴露业务规模,单机瓶颈,分布式难扩展 | 存储大(16字节),索引碎片化,查询性能差 |
适用场景 | 单机/主从架构,内部管理系统 | 分布式系统初期,安全敏感且低QPS场景 |
3.真实案例决策树:
假设你在开发一个外卖平台:
-
如果订单系统是单体架构 → 自增主键 + 业务层加密(例如对外暴露
A001
转码为Zx3h7T
)-
实际案例:早期美团外卖用自增ID,对外接口通过HMAC算法生成Token隐藏真实ID
-
-
如果订单系统是分布式架构 → 雪花算法/Snowflake(时间有序的分布式ID)
-
实际案例:饿了么使用改良版雪花ID(64位包含机房、服务节点等信息)
-
-
如果涉及跨国多中心 → UUID v7(新版时间有序UUID)或 ULID
-
实际案例:Airbnb的预订ID采用ULID,既保证分布式唯一性又保留时间排序
-
4.防爬虫的深层真相:
不要迷信UUID的防爬能力! 举个反例:
-
某社交App用UUID作为帖子ID,但爬虫通过时间排序接口+批量拉取照样能抓取数据
-
更有效的防爬方案:
// 自增主键 + 加密混淆(Spring Boot示例) public String getOrderPublicId(Long dbId) {// 1. 用密钥将数字ID转换为无规律字符串String cipher = AES.encrypt(dbId.toString(), SECRET_KEY); // 2. 转换为URL安全的Base64return Base64.encodeBase64URLSafeString(cipher.getBytes()); }
-
实际效果:数据库内用自增ID保证性能,对外暴露
3q2-7XgtyuJKlw
式乱码,兼顾安全与效率
-
5.终极决策原则:
-
先保性能:优先让数据库吃得好(索引效率),再考虑防爬这类业务需求
-
分层防御:主键层用适合数据库的机制(自增/雪花ID),安全层用加密/鉴权/限流
-
特殊场景特供:
-
金融交易流水 → 自增ID + 前缀(
TXN202403011000001
含日期和机构码) -
匿名投票系统 → UUID + 哈希加盐(既隐藏投票顺序又保证不可篡改)
-
6.一句话总结:
选主键就像选工装裤——优先保证干活利索(性能),兜里的暗袋(防爬)只是加分项。真正要防贼,得靠门禁系统(安全架构),而不是指望裤子的花纹迷惑小偷。
(望各位潘安、各位子健/各位彦祖、于晏不吝赐教!多多指正!🙏)
相关文章:
面基:为什么不推荐用UUID作为主键
推荐回答结构: 技术理论层面分析 实际项目中的教训 优化改进过程 总结提炼认知 阐述回答 在阐述回答时,你可以从 UUID 本身特性带来的问题,以及在实际工作中遇到的具体场景和优化过程等方面展开,下面从这一思路,给…...
oracle 常用函数的应用
在使用开发中会经常遇到数据类型转换、显示系统时间等情况,需要使用函数来实现。通过函数来实现业务需求会非常的省事便捷,函数可以用在适当的dml语句和查询语句中。 Oracle 数据库中主要使用两种类型的函数: (1)单行函数:对每一个…...
ubuntu的ubuntu--vg-ubuntu--lv磁盘扩容
在我们安装ubuntu时,如果选择的是自动分区,就会按照逻辑卷的形式来分区,并且只分配100G其余的并不会被分配,这对我们大多数情况来说都是不合理的,所以,如何扩充呢 下面以一个小的案例来说明如何扩充 问题…...
鬼泣:升龙系统
文章目录 0.升龙系统:升龙斩使敌人浮空升龙斩使敌人浮空:设置flying状态,不会落下 1.升龙斩:S 攻击S按下calculate directionin range warp:前提是根运动打开蒙太奇拔刀收刀canCombo:接轻攻击连击 2. A.向…...
UI产品经理基础(四):用价值链视角来分析项目需求
用价值链视角来分析项目需求 作为产品经理,从价值链视角分析项目需求,能够更精准地定位价值创造的关键环节,确保资源投入与用户需求、商业目标深度匹配。以下是系统化的方法论与落地步骤,结合案例说明如何实现需求分析与用户认可…...
ThinkPHP的“get\post\put\delete“请求
首先了解一下这四个请求的区别 1.GET 请求 用途:获取资源(只读操作,不修改服务器数据)。 特点: 参数通过 URL 的 查询字符串(Query String) 传递(例如 /book?id1)。 数…...
目标检测的训练策略
在目标检测竞赛中,训练策略的优化是提高模型性能的关键。常用的训练策略包括数据预处理、数据增强、超参数调节、损失函数设计、正负样本采样、模型初始化和训练技巧等。以下是一些常见的训练策略: 1. 数据预处理与数据增强 数据归一化:对输…...
【JavaSE】小练习 —— 图书管理系统
【JavaSE】JavaSE小练习 —— 图书管理系统 一、系统功能二、涉及的知识点三、业务逻辑四、代码实现4.1 book 包4.2 user 包4.3 Main 类4.4 完善管理员菜单和普通用户菜单4.5 接着4.4的管理员菜单和普通用户菜单,进行操作选择(1查找图书、2借阅图书.....…...
代码随想录Day29
Day29 动态规划part02 LeetCode 62.不同路径 题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” &…...
Python入门(3):语句
目录 1 基本语句 1.1 表达式语句 1.2 赋值语句 2 控制流语句 2.1 条件语句 2.2 循环语句 while循环: for循环: 2.3 流程控制语句 1. break语句:退出整个循环体 2. continue语句:只跳过本次循环,还会进…...
04_SQL概述及DDL
文章目录 一、关于SQL1.1、SQL概述1.2、SQL分类 二、数据库操作2.1、查看数据库2.2、切换数据库2.3、查询当前使用的数据库2.4、创建数据库2.5、查看数据库创建信息2.6、修改数据库2.7、删除数据库 三、表的操作3.1、数据类型3.1.1、数值类型3.1.2、字符串类型3.1.3、日期时间类…...
如何调整yarn.nodemanager.vmem-pmem-ratio参数?
调整 yarn.nodemanager.vmem - pmem - ratio 参数,可参考以下步骤: 打开YARN配置文件 找到 yarn - site.xml 文件,该文件通常位于Hadoop配置目录中,例如 /etc/hadoop/conf 或 /opt/module/hadoop - 3.1.3/etc/hadoop 。 找到并修改…...
【质量管理】质量的系统是预防,那以预防为主的质量管理系统包括什么?
“质量的系统是预防”这是克劳士比零缺陷管理四项基本原则的第二项基本原则。什么样的系统才是一个以预防为主的质量管理系统呢? 一个以预防为主的质量系统,必须包括三大方面:质量检验系统、质量保证系统、质量管理系统。 举个例子࿱…...
JavaScript 事件流与事件委托
目录 一、事件流、事件捕获与事件冒泡 1. 事件流(Event Flow) 2. 事件捕获(Event Capturing) 3. 事件冒泡(Event Bubbling) 4. 阻止事件冒泡 5. 事件解绑 6. 实际应用场景 二、事件委托 1. 什么是…...
RAG 优化 Embedding 模型或调整检索策略
在 RAG(Retrieval-Augmented Generation)系统中,优化 Embedding 模型和调整检索策略是提升检索质量的核心手段。以下是系统化的优化方法和实践指南: 一、优化 Embedding 模型 Embedding 模型的质量直接决定检索的召回率(Recall)和准确率(Precision)。优化方向包括: …...
Sentinel[超详细讲解]-3
主要讲解🚀 - 基于QPS/并发数的流量控制 1、流控规则 流量控制(Flow Control)用于限制某个资源的访问频率,防止系统被瞬时的流量高峰冲垮。流量控制规则可以针对不同的资源进行配置,例如接口、方法、类等。 流量规则的…...
vue3使用i18n$t()无法获取数组和对象
今天在使用i18n进行国际化时,定义了数组和对象节点,但是用$t()无法获取,只能返回字符串值,查询相关材料,解决方案如下: 使用新的api替换即可,$t > $tm 参考文章(深表谢意):vue -…...
机器学习的一百个概念(5)数据增强
前言 本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…...
(Kotlin)Android 高效底部导航方案:基于预定义 Menu 和 ViewPager2 的 Fragment 动态绑定实现
支持预定义 Menu 并绑定 Fragment,同时保留动态添加 Tab 的能力 BottomTabHelper.kt package smartconnection.com.smartconnect.home.utilimport android.content.Context import android.util.SparseArray import androidx.annotation.IdRes import androidx.fra…...
零基础入门多媒体音频(4)-GENIVIProjectAudioManager总览
GENIVI Project的AudioManager是一个专门设计用于汽车信息娱乐系统的音频管理解决方案。它负责管理和控制车辆内的音频源和音频路径,确保各种音频信号能够正确、高效地在车辆的音响系统中传输和播放。 AudioManager的核心功能包括音频源的管理、音频路径的控制以及音…...
DeepSeek协助优化-GTX750Ti文物显卡0.65秒卷完400MB float 音频512阶时域FIR
文章目录 1. 学习目的2. 阶段成果2.1 NVVP 性能探查2.2 测试编译环境2.3 测试样例 3 学习过程3.1 提问DeepSeek3.2 最终代码 4. 体会 1. 学习目的 最近在学习cuda,准备给我的taskBus SDR添加CUDA的模块支持,以便可以用PC机压榨山寨 B210那56M的带宽。 因…...
Embedding原理
Embedding(嵌入)是将离散符号(如单词)映射到连续向量空间的核心技术,其本质是语义的数学化表示。以下是其核心原理详解: 一、基础概念图解 graph LRA[单词猫] --> B[索引5] --> C[向量[0.2, -1.3,…...
Spark,配置hadoop集群1
配置运行任务的历史服务器 1.配置mapred-site.xml 在hadoop的安装目录下,打开mapred-site.xml,并在该文件里面增加如下两条配置。 eg我的是在hadoop199上 <!-- 历史服务器端地址 --> <property><name>mapreduce.jobhistory.address…...
人工智能大模型-数据预处理-文本数据预处理-图像数据预处理
文本数据预处理 大模型常用的文本数据类型 通用文本数据:网页、对话和图书资料等专用文本数据:多语言文本、科学文本、代码和指令等 构造方法 指令数据:指令(instruction)、输入(input)、输出(output)3部分组成 如果在instruction部分已…...
怎么使用嵌套虚拟环境实现项目部署之virtualenv嵌套conda绕开安装环境检测实现.venv部署facefusion
#工作记录 一、前言 嵌套虚拟环境本来是不建议的一种方法,这种嵌套虚拟环境的使用有一定特殊性,但在一些特别的使用场景下,嵌套虚拟环境的使用非常有用。 二、嵌套虚拟环境: (一)conda嵌套virtualenv 该…...
ansible介绍以及安装
一.ansible介绍 实现对IT基础设施的批量管控,加快效率,节省工作时间。 1.ansible特性 1.基于python开发,开源, 2.基于ssh协议工作。只需要确保ansible机器,与被控制机器能连通就好了, 3.no server 无…...
GPT-4o图像生成功能:技术突破与隐忧并存
2025年3月25日,OpenAI正式推出GPT-4o原生图像生成功能,宣称其实现了“文本到图像的终极跨越”。然而,这一被市场追捧的技术在短短72小时内便因用户需求过载触发限流,暴露出算力瓶颈与商业化矛盾的尖锐性。这场技术狂欢的背后&…...
Java 时间处理:轻松掌握 java.time 包
前言 在 Java 开发中,日期和时间处理一直是令人头疼的问题。传统的 Date 和 Calendar 类不仅复杂,还充满了线程安全和时区处理的坑。Java 8 引入的 java.time 包彻底改变了这一局面,带来了现代化、直观且功能强大的日期时间 API。 本…...
Vue项目中Vuex在util引入,断点存在default
示例代码 // src/store/index.js import Vue from vue; import Vuex from vuex; ……Vue.use(Vuex); export default new Vuex.Store({…… })// src/utils/index.js import store from /store // 导入默认导出的 store export async function getDict() {store.state.userInf…...
2025宁德时代测评Verify考什么?网申测评如何通过SHL笔试|附真题线上笔试考点、高分攻略、CATL新能源科技SHL测评宁德社招题目、面试攻略、求职建议
——职小豚 带你拆解新能源巨头招聘密码 一、宁德时代:新能源赛道「超级独角兽」 作为全球动力电池龙头,宁德时代(CATL)的江湖地位无需多言: 技术硬实力:麒麟电池、钠离子电池、无钴电池等黑科技加持&…...
谈谈常见的数据结构(如数组、链表、栈、队列、哈希表、树、图)及其应用场景
一、数组(Array) 定义:连续存储相同类型数据的线性结构,支持随机访问。 应用场景:列表渲染、数据缓存、算法处理 代码示例: // 数组基本操作 const arr [1, 2, 3, 4]; arr.push(5); // O(1) 平均时间复杂…...
【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的 AOP:实现日志记录与性能监控
答应我,这篇一定要看到最后~! <前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&a…...
【算法】快速幂
一、概念 快速幂是一种高效的指数运算,当指数范围过大时,通过位运算能够减少大量的计算次数 对于,我们通过将指数b转化为二进制数,就可以将分解为许多的(其中i是指数b中对应位为1的位数) 例如࿰…...
使用卷积神经网络识别MNIST数据集
卷积神经网络 卷积神经网络本质是共享权重稀疏链接的全连接网络 编写步骤 构建一个神经网络,步骤是几乎不变的,大概有以下几步 准备数据集 #更高级的CNN网络 import torch import torch.nn as nn import torch.nn.functional as F import torchvisi…...
JavaScript 中数组增删改查
在 JavaScript 中,数组是一种用来存储不同类型的值的数据结构。 增加数组元素: let arr = [1, 2, 3];// 在数组末尾添加元素 arr.push(4); console.log(arr); // [1, 2, 3, 4]// 在数组开头添加元素 arr.unshift(0); console.log(arr); // [0, 1, 2, 3, 4]// 在指定位置插…...
【Kettle安装】Kettle安装过程, 电脑已安装java23,安装Kettle 出现报错:尝试启动 Java 虚拟机(JVM)时失败解决方法
Kettle安装 Kettle 通常指的是 Pentaho Data Integration (PDI),这是一款开源的 ETL(Extract, Transform, Load)工具,用于数据集成、数据清洗和数据分析。它的核心工具名为 Spoon,但整个项目常被直接称为 Kettle 数据…...
Spring笔记04-注解注入
1.导入包 <dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.2.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId>…...
[动规19] 最大子数组和
目录 1. 题意 2. 思路 2.1. 状态表示 2.2. 状态转移方程 2.3. 初始化 2.4. 填表顺序 2.5. 返回值 3. 编码 1. 题意 链接: 53. 最大子数组和 - 力扣(LeetCode) 题目 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组&…...
2024年零知识证明(ZK)研究进展
Sumcheck 整个领域正在转向更多地依赖于 Sumcheck Protocol Sumcheck是用于验证多项式承诺的协议,常用于零知识证明(ZKP)中,尤其是在可验证计算和扩展性上。它的主要目的是通过对多项式进行分段检查,从而保证某个多项…...
1. 两数之和
leetcode Hot 100系列 文章目录 一、核心操作二、外层配合操作三、核心模式代码总结 一、核心操作 使用map,key作为数值,value作为下标先寻找对应的目标值,如果找到了则直接返回,否则在往map中插入 提示:小白个人理…...
【电动汽车再生制动控制技术(万字长文,图文并茂)】
电动汽车再生制动控制系统概述 电动汽车再生制动的基本原理是:通过具有可逆作用的电动机/发电机来实现电动汽车动能和电能的转化。在汽车减速或制动时,可逆电机以发电机形式工作,汽车行驶的动能带动发电机将汽车动能转化为电能并储存在储能器(蓄电池或超级电容器)中;在汽车…...
python实现股票数据可视化
最近在做一个涉及到股票数据清洗及预测的项目,项目中需要用到可视化股票数据这一功能,这里我与大家分享一下股票数据可视化的一些基本方法。 股票数据获取 目前,我已知的使用python来获取股票数据方式有以下三种: 爬虫获取,实现…...
2025年湖南建筑安全员 C1考证刷题题库
湖南建筑安全员 C1 类的练习题: 1、塔机的拆装作业必须在白天进行,不得在( )情况下进行。 A. 夜间 B. 大风 C. 浓雾 D. 以上都是 答案:D 2、采用钢筋混凝土灌注桩时,开挖标准是桩身混凝土达到&#…...
【Feign】⭐️使用 openFeign 时传递 MultipartFile 类型的参数参考
💥💥✈️✈️欢迎阅读本文章❤️❤️💥💥 🏆本篇文章阅读大约耗时三分钟。 ⛳️motto:不积跬步、无以千里 📋📋📋本文目录如下:🎁🎁&a…...
ToolsSet之:梯度色板
ToolsSet是微软商店中的一款包含数十种实用工具数百种细分功能的工具集合应用,应用基本功能介绍可以查看以下文章: Windows应用ToolsSet介绍https://blog.csdn.net/BinField/article/details/145898264 ToolsSet中Media菜单下的“Gradient Palette”工…...
Apache Hive和Snowflake的`CREATE VIEW`语法和功能特性整理的对比表
写一个Apache Hive中CREATE VIEW语句转换为对应Snowflake中CREATE VIEW语句的程序,现在需要一个根据功能的相似性对应的Apache HiveQL和Snowflake SQL的CREATE VIEW语句的表。 以下是基于Apache Hive的CREATE VIEW语法规则构造的所有可能合法语句实例及其功能说明&…...
【测试】每日3道面试题 3/31
长期更新,建议关注收藏点赞。 单元测试策略有哪些,主要内容。 白盒测试黑盒测试基于异常和边界的测试 主要内容:测试用例设计、执行、结果分析、自动化beta测试和alpha测试主要区别 主要区别:测试环境测试者 alphabeta时间先后测…...
用 Hugging Face Spaces 打造哪吒的 3D 模型:完整指南
引言: 哪吒,这位中国神话中的传奇人物,以其独特的形象和故事深受人们喜爱。如今,通过 Hugging Face Spaces 提供的 TripoSG 工具,我们可以轻松创建哪吒的 3D 模型。以下是详细步骤,帮助你将这个神话角色带入…...
鸿蒙应用元服务开发-Account Kit概述
Account Kit(华为账号服务)提供简单、快速、安全的登录功能,让用户快捷地使用华为账号登录元服务。用户授权后,Account Kit可提供头像、手机号码等信息,帮助元服务更了解用户。Account Kit提供的SampleCode示例工程体现…...
美团小程序 mtgsig1.2 拼好饭案例 分析 mtgsig
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 美团网页、小程序、app全是指…...