X86与ARM之争:从指令集到生态的系统对比

Sqoop处理Clob与Blob字段 [Author]: kwu --- Sqoop处理Clob与Blob字段,在Oracle中Clob为大文本,Blob存储二进制文件。遇到这类字段导入hive或者hdfs需要特殊处理。 阅读详情

1. 从一次"编译失败"说起:指令集架构到底在决定什么

如果搞开发的时间够长,多半经历过这种场景:同事发过来一个编译好的二进制包,你在自己的机器上跑,直接报"Exec format error",或者更恶心的是,Windows下双击没反应。这时候懂行的人会问你一句:"你这是X86还是ARM的?"很多人一脸懵——不都是CPU吗?怎么还分阵营?

这几年移动端开发、嵌入式开发、云原生部署混在一起之后,X86和ARM的架构之争已经不再是芯片厂商圈子里的"学术讨论"了。它会直接影响你口袋里的手机续航、云服务器的账单、甚至你本地Docker镜像能不能跑起来。我用过一段时间树莓派做家庭服务器,刚开始觉得"都是Linux应该没区别",结果宿主机是X86的,容器镜像全得重新拉ARM版本,那个折腾劲儿记忆犹新。

这篇文章不打算做成那种百科全书式科普,而是以一个做开发、做部署、做选型的人视角,把这两种架构从指令集底层到生态取舍讲清楚。你不需要是芯片设计专家,但如果想把云主机选型、嵌入式开发、甚至买电脑这件事搞明白,这文章对你有用。

所谓指令集架构,简单点说就是CPU和人之间约定好的一套"交流语言"。它定义了硬件能识别哪些指令、寄存器怎么排布、内存怎么访问、中断怎么响应。软件写出来之后,最终都会被编译成这种机器码才能在CPU上跑。X86走的是"复杂指令集"路线,ARM走的是"精简指令集"路线,这两条路从半世纪前岔开之后,直接决定了今天两家人完全不同的性格和命运。

2. 从"指令集哲学"分道扬镳:CISC与RISC的博弈

2.1 复杂指令集和精简指令集的本质差异

想要把X86和ARM区别讲透彻,绕不开CISC(复杂指令集计算)和RISC(精简指令集计算)这两个概念。听名字好像只是一个复杂一个简单,实则背后是对"硬件和软件分工"截然不同的态度。

X86采用CISC路线,好比一个全能型选手,单条指令能完成的任务非常复杂。比如 rep movsb 这一条指令,就能把一大块内存数据从一个地方搬到另一个地方,走的是"一条指令干一整件大事"的路子。硬件要为这种复杂指令设计对应的控制逻辑,这直接导致X86 CPU内部的译码器异常复杂。

ARM采用的RISC路线,则更像搭积木。把复杂操作拆成一堆简单操作,比如数据搬移、算术运算、逻辑判断各司其职。一条指令只干一件事,比如 ADD R0, R1, R2 就是把R1和R2相加存到R0。硬件逻辑相对简单,指令长度固定,译码过程快,功耗也更低。

这里有一个关键技术点:复杂指令真的能"一条更抵五条"吗?在早期确实如此,因为当时内存贵、编译器技术弱,指令越复杂越省事。但后来编译器水平上来了,发现很多复杂指令使用频率极低,真正频繁用的还是那些基础指令。X86内部实际上也慢慢把这个矛盾转化了——现代X86 CPU会把X86指令先"翻译"成类似RISC风格的微操作,再送去执行。这就是为什么Intel和AMD的CPU内部流水线那么长的原因之一。

2.2 指令编码和长度上的直观差异

再看指令编码,这个区别更直接。ARM经典指令集(AArch32)的指令长度基本都是固定的32位,后来ARMv8的AArch64也保持32位定长。X86则是典型的变长指令,指令长度从1字节到15字节都有。定长指令的好处是译码器简单,可以并行译码;变长指令的坏处是译码器需要预判指令边界,复杂度和功耗都上去了。

X86敢用变长指令,跟它的历史包袱有关。当年8086为了兼容8080的汇编程序,必须保留一堆奇怪的指令格式,还得支持前缀字节。这个兼容性决定让它一直背着这个沉重包袱走到今天。你也可以理解为,X86是一个从1978年开始就没有断过代的古老物种,每一代新处理器都必须兼容老应用。

ARM从2011年发布ARMv8,照说可以甩掉老包袱了,但为了兼容ARMv7的软件生态,AArch64仍然在一些规则上做了保留。不过相比X86,ARM的干净程度还是好很多。这点对一个做底层工具链的开发者来说感触很深——在ARM64上做静态二进制翻译的指令对齐,要比X86的变长译码简单不少。

2.3 从指令集到"指令集架构"的更广泛含义

需要澄清一点,指令集架构不只是指令集合,还包括寄存器体系、异常模型、内存管理单元(MMU)接口、调试接口等一整套规范。X86的通用寄存器有16个(64位模式),RAX、RBX这些,虽然数量少,但命名和段式寻址的历史包袱比较重。ARM64有31个通用寄存器,且寄存器设计更加规整,大部分指令对寄存器的使用没有特殊限制,这对编译器的寄存器分配非常友好。

也就是说,ARM从设计哲学上就是对编译器更友好的架构。同样是GCC或LLVM,ARM后端的代码生成规则比X86后端简洁很多。如果介入过编译器的开发,你会发现为ARM64写后端比X86后端省心不少。X86的历史包袱经常产出各种奇怪的寻址组合和特殊寄存器约束,编译器要处理的特例特别多。这也是为什么很多新一代编译器项目优先支持ARM的原因之一。

3. 功耗与性能的跷跷板:同频下差的那些关键因素

3.1 X86为什么总给人"功耗高"的印象

抛开具体型号谈功耗都是耍流氓,但从总体趋势看,X86芯片的功耗天花板确实比ARM高。这个不仅仅是制程差异,更多源于设计目标。X86的性能追求是"单线程绝对速度拉满",为了实现乱序执行、超深流水线、大缓存、跨宽度译码,晶体管数量必须堆上去。大量晶体管在高主频下翻转,功耗自然不是一个小数目。

服务器端的X86 CPU动辄上百瓦的TDP。你随便看一颗Intel Xeon铂金系列,TDP是270W,这还是热设计功耗,真实功耗更高。但换到桌面端,比如i5-13600K,TDP只有125W,但跑满的时候瞬时功耗能冲到180W以上。这种高功耗带来的是无与伦比的单核性能,特别是对重度单线程任务,比如游戏、桌面应用交互,体验就是"快"。

X86的并行扩展也并非吃素的,AVX-512指令集(虽然在消费端被Intel在12代后屏蔽了一阵子,但还是通过大小核或特定产品线回归)能一条指令同时处理多组数据,对科学计算、音视频处理非常有用。这些复杂指令区域面积大、功耗高,却让数学密集型应用收益明显。

3.2 ARM的"够用就好的智慧"

ARM的功耗控制思路完全不同,它不是不追求高性能,而是追求"能效比"。早期ARM处理器用在小嵌入式设备上,电池电量有限,散热条件差,所以第一设计准则是:在完成工作的情况下尽可能少耗电。你看ARM的流水线设计、外设集成方式,都透着一股"精打细算"的劲儿。

以手机SoC为例,一颗旗舰级移动SoC,比如高通骁龙8 Gen 3或苹果A17 Pro,包含CPU、GPU、NPU、基带、ISP等一堆组件,但整个SoC的典型功耗也就15W到20W。这里面光是CPU核心部分可能只占5W到10W。手机能实现全天续航,这个低功耗设计功不可没。

但这句话容易造成误解——ARM不能做高性能?去看看苹果M系列芯片就明白了。苹果把ARM授权架构和自家微架构设计结合起来,在轻薄本上做到了跨越X86厂商的能效表现。M3 Max的多核性能已经能压制很多标压X86移动处理器,而且整机功耗只相当于X86本的一半。这说明ARM架构本身绝非"低性能"代名词,关键是看谁在设计和针对什么场景优化。

3.3 制程缩小和异构计算对功耗差距的拉平作用

以前X86和ARM在功耗上的差距还有一层来自制程工艺。Intel当年在自己的14nm上磨了好多年,AMD的台积电7nm和5nm反而占据优势,苹果M系列一直用台积电最先进制程。制程的差异能直接改变同样架构下的功耗表现。今天如果你拿同样在台积电5nm或4nm下制造的X86芯片和ARM芯片比,功耗差距其实没有想象中大。

另一个重要变量是异构计算。ARM从ARMv8.2开始支持大小核架构,比如big.LITTLE,后来升级为DSU(DynamIQ),例如Cortex-A76大核搭配Cortex-A55小核。操作系统根据负载动态调度任务,轻负载用高效核,重负载用性能核。X86这边从Intel 12代开始也学会了大小核设计,P核加E核,类似思路。这意味着两者在低功耗场景的差距也在逐渐收窄。X86向ARM学习能效管理,ARM向X86学习极致性能,两条路越走越像。

4. 撕开表层看内功:微架构设计的五个关键分界线

4.1 译码器的复杂度差距

如果你把CPU内部想象成一条生产流水线,最前面的工序就是译码——把指令翻译成机器能执行的控制信号。X86译码器是CPU设计里出了名的复杂区域,因为变长指令集让"切分"指令这件事变得困难。

X86 CPU的译码器通常采用多级译码,一级简单译码处理常见短指令,遇到复杂指令要进入微码定序器(microcode sequencer)去查微码表,把一条X86指令展开成一串微操作。这种设计占面积、费电。ARM的指令定长,译码器可以把每条指令几乎在一个周期内分割出来,并行度高,面积小。

不过近两代X86微架构对译码器的优化已经炉火纯青,乱序窗口足够大,足够隐藏译码延迟。比如Intel的P核和AMD的Zen系列,指令缓存和译码前端已经非常强悍。所以功耗劣势是存在,但在重度负载下性能补偿远超这些额外开销。

4.2 乱序执行窗口和调度宽度

对比X86和ARM高性能核心的乱序执行能力,你会发现X86的大核心一般具备更大的重排序缓冲区(ROB)。比如Intel的高性能核ROB容量在300以上,AMD Zen 4大概320,ARM的Cortex-X系列可能要到256左右。ROB越大,CPU可以在更大范围内查找指令间的并行性,从而更好地利用空闲执行单元。

但ROB大也有代价——分支预测错误的恢复成本会更高。X86为了撑住这个巨大的乱序执行窗口,用了极其复杂的分支预测器,这些预测器本身也是功耗和面积的大户。ARM的高性能核比如Cortex-X4也在逐步扩大乱序窗口,但要考虑移动设备的功耗预算,目前整体上比X86高端核心略收敛一些。

服务器和高性能计算场景特别吃这套。MySQL、ClickHouse、Nginx这种重请求负载,分支密集、依赖链长,X86大核凭借预测准确率和巨大的乱序窗口,仍然是最优解之一。这也是为什么数据中心里X86依然占主导的硬件层原因。

4.3 访存模型和缓存一致性

X86和ARM之间的另一个深层区别在于内存一致性模型。X86使用的是TSO(Total Store Order)模型,简单理解就是写操作顺序在某种程度上对数据一致性的要求比较温和,编程模型对开发者更友好。ARM则采用弱内存模型,它允许CPU和编译器做更多的重排优化,性能潜力更大,但需要软件通过内存屏障(memory barrier)来保证顺序。

这个区别在实际编码中表现非常明显。写多线程程序时,在X86上不加屏障往往"碰巧是对的",而同样的代码放到ARM上就可能出现诡异的数据竞争问题。做过跨平台并发编程的人应该有体会——同一段自旋锁代码,在X86上跑得好好的,交叉编译到ARM板子上就莫名其妙卡死了。实际上这是ARM弱内存模型的特性在作怪,Lock前缀或屏障指令用少了。

对于一般应用开发者,你可能不会直接碰这些底层细节,但对做数据库、做中间件、做操作系统内核的工程师来说,这两种内存模型的差异是踩坑重灾区。AMD的Zen架构和Intel一样保持TSO模型,这让X86阵营的软件开发一致性较好。ARM的各个实现之间,内存模型倒是统一的,只是相比X86更弱,代码需要显式同步。

4.4 从总线到缓存:互联与一致性协议

现代CPU都不只是单核跑分,多核协作和缓存一致性是关键。X86厂商Intel和AMD在自家多核互联方案上各有绝招。Intel用环形总线或Mesh架构连接核心,AMD用Infinity Fabric和CCD/IO die的组合方式。这些方案都经过了大量优化,延迟低,带宽足。

ARM授权的CPU核心通常需要搭配第三方的SoC互联方案,比如ARM的CMN-700或CMN-600网格互联,或者像苹果这样自研Fabric互联。移动SoC的互联架构直接影响CPU与GPU、NPU、内存之间的数据搬运效率。苹果M系列SoC能实现那么高的内存带宽,跟Fabric设计关系很大。

缓存的一致性协议上,X86主要是MESI族系,ARM也使用MESI,但在具体实现上有差异。此外,ARM服务器芯片经常需要配置CCI/CMN等一致性互连组件,在某些高端场景要考虑跨die的一致性延迟问题。这些细节在芯片选型、BSP调优时会直接影响性能表现。

4.5 虚拟化:硬件辅助能力的近身肉搏

云计算时代虚拟化的硬件支持也值得单聊。X86很早就引入了Intel VT-x和AMD-V虚拟化技术,后来又发展出EPT(Extended Page Tables)和VPID等特性,让虚拟机内存管理和中断投递极高效。目前几乎所有云厂商的虚拟化方案都深度依赖这些特性。

ARM是从ARMv7开始引入虚拟化扩展,ARMv8-A进一步完善,包括支持硬件虚拟化异常级别EL2。但在ARM服务器生态中,虚拟化方案成熟度相比X86还是有一些差距,比如某些嵌套虚拟化场景,X86的支持更完善。不过AWS Graviton、阿里云倚天这些ARM服务器芯片在云上跑虚拟机已经越来越稳定,说明这一块的差距正在快速缩小。

做基础设施或云原生研发的人,如果选ARM服务器,遇到KVM或Firecracker的性能调优时,通常还是要对照ARM的虚拟化手册,多做一些基准测试。不能简单拿X86的调优经验照搬。

5. 软件生态的护城河:为什么"换架构"不是把CPU换掉那么简单

5.1 从"编译一下就能跑"到"编译之后处处是坑"

常有人说"CPU架构不同,重新编译一下就好了"。这句话对纯C/C++的Hello World是成立的,但对一个商业级完整软件栈,情况要复杂得多。

首先是依赖库。一个大型项目往往依赖几十上百个第三方库,这些库要在目标架构上重新编译,且它们自身还有依赖。如果一个依赖只有预编译二进制,没有源码没有支持,整个链条直接断掉。其次是汇编和编译选项。有些底层库为了性能直接用汇编编写,这些汇编都是架构相关的,移植起来非常痛苦。第三是构建系统本身。很多老旧的构建脚本硬编码了宿主架构的检测逻辑,换到ARM环境会报出各种莫名其妙的错误。

我印象很深的一次,是给一块ARM开发板移植一个老掉牙的计算软件,原以为花了半天能搞定,结果卡在一个Fortran编译器的数学库上,整整折腾了两天。这种"看似兼容实则处处有暗坑"的感觉,亲身体会过才明白架构迁移的真实成本。

5.2 Apple Silicon带来的"破壁"效应

苹果M系列芯片是ARM生态发展的分水岭。苹果没有选择"只提供一个ARM SoC然后让开发者自己适配",而是提供Rosetta 2动态二进制翻译层,让旧X86应用无缝在新机器上跑。实测大部分X86应用在Rosetta 2下运行效率能到原生性能的80%左右,很多日常应用甚至感知不到差异。

这一手棋让整个桌面生态看到了ARM的可行性。今天在M系列Mac上跑Adobe全家桶、跑Docker、跑Linux虚拟机都已经成为日常。苹果用庞大的用户量和系统级措施倒逼开发者适配ARM,效果显著。相比之下,高通和微软此前的Windows on ARM虽然也在努力,但Prism模拟器的X86应用兼容性始终不如Rosetta 2成熟,桌面软件生态的碎片化问题依旧明显。

5.3 云原生时代的架构无关性幻觉

容器化和云原生技术让人产生一种错觉:"都上容器了,架构还重要吗?"很不幸,Docker镜像本身是绑定架构的。你在X86机器上拉取一个镜像,默认会拉取linux/amd64版本;到了ARM服务器上,需要镜像仓库正好有linux/arm64版本才能无缝运行。

好在现在多架构镜像(multi-arch)已经非常普遍。通过docker buildx构建多架构镜像,配合containerd的镜像索引机制,确实能实现在不同架构的集群节点上自动选择对应镜像。但前提是镜像里的软件都提供ARM版本,或者能通过QEMU模拟方式运行。对一个中小团队来说,构建多架构CI流水线需要额外花时间,一旦组成复杂,出问题排查也麻烦。

Kubernetes生态里有个概念叫混部架构,X86节点和ARM节点混合在一个集群里。理论上可以,实际上对工作负载的亲和性和调度策略要求很高,只有少数大厂能把它玩得比较顺滑。

6. 服务器、终端、嵌入式的真实选型建议

6.1 云服务器选X86还是ARM

先说云服务器。目前云厂商的ARM实例,最典型的代表是AWS Graviton系列、阿里云倚天710、华为云鲲鹏等。从性价比角度看,ARM实例通常比同档位的X86实例便宜20%到40%。如果你的工作负载能原生跑在ARM上,尤其是Web服务、Java服务、容器化无状态应用,选ARM云主机确实能省不少钱。

但要留意几个前提。第一,你的所有依赖库和二进制都必须在ARM64上有对应版本。第二,中间件和数据库的事,像MySQL、Redis、Nginx这些都有ARM版本,但性能优化参数可能需要针对ARM重新调校。第三,某些混合部署场景下,运维工具、监控Agent、日志采集器如果没有ARM版本,整个链路就会断。以我自己的经验,中小规模Web后端搬到ARM云主机是完全可行的,能拿到实打实的成本收益;但如果是跑特定GPU计算、高性能计算或者依赖特定闭源SDK的场景,还是老老实实X86稳妥。

6.2 嵌入式与物联网:ARM的主场

在嵌入式领域,ARM几乎是统治级的存在。从MCU级别的Cortex-M系列,到应用处理器级别的Cortex-A系列,再到实时控制场景的Cortex-R系列,ARM用一套灵活的IP授权模式渗透了几乎所有嵌入式设备。X86虽然也有Atom、N100之类的低功耗方案,但在这个市场的存在感和灵活性远不如ARM。

从开发者的角度,如果做低功耗传感器节点、电池供电的IoT设备,选择ARM Cortex-M内核的单片机几乎是默认选项。如果想在边缘设备上跑Linux和AI推理,Cortex-A系列或者苹果、瑞芯微、全志等基于ARM的SoC也是主流选择。x86只适合那些需要跑大量现有X86二进制、且对功耗不敏感的边缘计算盒子。

在嵌入式开发时特别要注意的一点是:交叉编译工具链的选择。ARM官方提供了arm-none-eabi(裸机)和arm-linux-gnueabihf(Linux用户态)等工具链,也可以用Llvm自带的工具链。选型时一定要跟芯片厂商推荐的编译器和版本对齐,否则容易遇到浮点ABI不一致、sysroot缺失等诡异问题。

6.3 桌面与工作站:x86仍是综合最优解

到2025年的今天,虽然Apple Silicon已经很成熟,但如果要说"桌面与工作站的通用兼容性之王",X86依然是公认的综合最优解。原因无他——软件库的绝对数量。Windows、Linux、macOS(Intel版)三大平台的海量软件,最原生的版本几乎都是X86架构。特别是PC游戏、专业行业软件(如CAD、电子设计自动化)和部分理工科的商业软件,ARM桌面的可用性仍有明显短板。

简单总结我的选购建议:预算允许又愿意适应苹果生态的,可以无脑选M系列,尤其看重续航和静谧性,省电看不到但一天一充的笔记本电脑体验改变很明显。追求极致游戏画面、或者依赖Windows特定软件,还是选X86平台。至于Windows on ARM设备,我的态度是:除非你的工作流完全基于浏览器和轻量办公,否则仍需谨慎,别被宣传语里的"所有应用可运行"骗了,那是"可运行"不是"运行流畅"。

6.4 从X86迁移到ARM的实战排查清单

如果团队真的决定做一次从X86到ARM的迁移,下面这张排查清单可以直接拿来当checklist用:

  • 盘点全部代码仓库和依赖来源,确定源码可用率。关键依赖有没有预编译包,没有就评估编译工作量。
  • 检查CI/CD流水线中的宿主机架构假设。很多流水线里跑着x86专用缓存或工具,迁移时要全部重做。
  • 审查应用中的汇编、内联汇编、编译器 __attribute__ 和目标架构宏分支,确认无硬编码X86逻辑。
  • 跑一轮完整的内存模型测试。多线程库代码最好用TSAN或类似工具在ARM上一并跑一遍,排查弱内存模型下的数据竞争。
  • 关注浮点ABI和NEON指令的使用。ARM64默认支持硬件浮点,但一些老代码可能要启用 -march=armv8-a+simd 之类的编译选项才能完全发挥。
  • 用基准测试和压测工具建立迁移前后的性能基线,别只看能不能跑,要量化对比。同一套负载,迁移后性能差20%和差一倍是完全不同的决策逻辑。

迁移的过程往往不是"替换机器+重新编译"一句话,而是一只隐藏的三头怪兽:依赖、工具链和人。团队里如果有一个人对交叉编译和底层ABI很熟,整个迁移项目的风险会小很多。

7. 大小核、AI加速和指令集扩张:未来五年的竞争看点

7.1 混合架构成定局,X86也学会大小核

Intel 12代酷睿的P核+E核混合架构是个标志性事件,说明X86阵营也正式拥抱了能效优先的调度哲学。AMD虽然在桌面端还没有大规模铺开大小核,但在sensor架构芯片和下一代消费级处理器上已经有相关计划。混合架构的最大挑战是调度器的调度策略——如何识别前台交互任务和后台负载,如何在核心之间动态迁移线程。

ARM的big.LITTLE和DSU经过多年积累,调度优化经验已经相当丰富,联发科和高通的调度层也都有各自的游戏小核优化方案。未来几年,x86和ARM在"大小核调度"上的竞争其实是一场系统软件对硬件理解深度的比拼。Linux内核的EAS(Energy Aware Scheduling)框架已经同时支持两种架构,但具体调优参数差异很大。

7.2 面向AI与大模型的架构演进:两条路径殊途同归

AI基础设施正在反过来重新塑造CPU架构。指令集层面,ARMv9加入了SVE2(可伸缩向量扩展2),X86则在AVX-512基础上继续扩展AMX(Advanced Matrix Extensions)等矩阵运算能力。这些指令集都是为矩阵运算、向量运算准备的,能把AI推理任务中的GEMM运算速度提升数个量级。

不过坦白讲,在重度AI训练和推理上,GPU和专用NPU(神经网络处理器)才是主力,CPU的向量指令更多是锦上添花和延迟敏感型场景的补充。细品你会发现,ARM和X86的CPU厂商都在把AI加速单元往SoC里集成,比如Intel的NPU、AMD的XDNA、高通和联发科的AI引擎。未来的竞争焦点从"CPU通用算力"转向了"异构AI算力调度平台"。这一点上,谁的软件栈更清晰、模型工具链更顺滑,谁就能占得先机。

7.3 跨架构协作与无缝迁移的工程化未来

展望未来几年,软件生态层面的跨架构适配会越来越自动化。容器镜像的多架构构建、CI系统的多目标编译、二进制翻译层的性能提升,都在一点点抹平X86和ARM之间的迁移成本。Rosetta 2的成功证明了,如果翻译层的性能足够高、系统集成足够深,架构差异对于终端用户是可以"被隐藏"的。

Linux端的Box64等项目也在做ARM64上运行X86软件的翻译层,虽然效果与Rosetta 2还有差距,但进步很快。数据中心里,类似QEMU用户态模拟、Firecracker的微虚机方案也在让跨架构运行变得更容易。我个人判断,未来五年我们不会再纠结"你的是什么架构",可能更多的是自动适配和动态迁移。甚至会出现更多类似"分层编译+运行时迁移"的混合执行方案,同一套代码不同模块可以跑到各自最优的架构上。

但这不是说架构差异不存在了,恰恰相反,越是底层优化和SLA严苛的场景,越要去深究两种架构的差异。只是对绝大多数应用层开发者来说,这块门槛会随着工具链进步而逐渐降低。如果你真正想做底层基础设施、云原生平台或芯片软件栈相关的方向,理解X86和ARM架构的细节仍然是基本功。

Spring Boot + Oracle 处理Blob/Clob类型字段实例 本篇演示使用SpringBoot (JPA)如何保存和查询Oracle 数据库中的Clob/Blob 类型的字段。 Clob/Blob 大对象数据 Clob/Blob 类型的字段用于保存大型的数据, 比如超长的字符串、某个文件的内容或是图片文件。 Clob , Character Large Object, 字符大对象。用于存储字符串或是文本文件等。 BLOB, Binary Large Object, 二进制大对象, 用于存储二进制的文件,比如图片文件。 实例步骤 创建包含Clob/Blob 字段 阅读详情

相关推荐

oracle中对blob字段的处理方法

oracle中对blob字段的处理方法,包括增加,删除,修改,更新等操作。

innodb一页为什么要存储两行记录_MySQL原理 - InnoDB引擎 - 行记录存储 - Compact 行格式

MySQL 服务器上负责对表中数据的读取和写入工作的部分是存储引擎,比如 InnoDB、MyISAM、Memory 等等,不同的存储引擎一般是由不同的人为实现不同的特性而开发的,目前OLTP业务的表如果是使用 MySQL 一般都会使用 InnoDB 引擎,这也是默认的表引擎。为了能说明 InnoDB 引擎的原理,我们必须先搞清楚 InnoDB 的存储结构,通过这些存储结构才能实现 InnoDB 的...

weixin_39906878的博客 404

BLOB字段处理

BLOB字段处理 插入和获取BLOB字段

clob处理

如果是很大,则可以考虑: http://yangtingkun.itpub.net/post/468/495918 create table PL_CLOB( id INTEGER not null, t...

cqu63737的博客 159

关于在Hibernate中对于Clob,Blob字段的处理方法

oracle的jdbc驱动程序,用这个版本的操作Clob,blob类型的数据很方便。 博文链接:https://zhenjw.iteye.com/blog/173419

Understanding Lockup Cells

工具会分析扫描链和EDT逻辑之间的控制时序元素的时钟的时序关系,当必须要同步时钟并保持数据完整性时插入边沿触发寄存器(lockup cells)。可以使用report_edt_lockup_cells命令来展示工具已经插入的lockup cells的详细报告。

weixin_44954910的博客 1080

Oracle的CLOB大数据字段类型

一、Oracle中的varchar2类型 我们在Oracle数据库存储的字符数据一般是用VARCHAR2。VARCHAR2既分PL/SQL Data Types中的变量类型,也分Oracle Database中的字段类型,不同场景的最大长度不同。 在Oracle Database中,VARCHAR2 字段类型,最大值为4000;PL/SQL中 VARCHAR2 变量类...

3265

深入解析AXI-Stream协议中的TVALID与TREADY握手时序

本文深入解析AXI-Stream协议中TVALID与TREADY的握手时序,通过实际案例和代码示例详细说明三种典型握手场景及其应用。文章还探讨了常见握手失败案例的解决方法,并介绍了TLAST、TKEEP等高级信号的使用技巧,帮助开发者优化FPGA设计中的数据传输效率。

weixin_29200485的博客 341

ibatis处理blob字段和clob字段

最经项目的一个功能需要提供webservice接口个别的系统调用,数据库层采用了ibatis, ibatis在处理blob字段的时候遇到了问题,后面解决了 解决办法采用ibatis自己的自动转换  配置文件如下:           这个是blob字段 这个字段是clob字段

huangxiaoqin0818的专栏 910

APP抓包-代理转发绕过反代理+Xposed绕过证书校验

而这里的牛牛不止设置了反代理还设置了证书校验,一闪而过的三个数据包就是在校验证书。而proxifier工具的转发机制获取的是网络接口出口数据,相当于是在网络接口设代理。这个时候就可以在夜神打开牛牛开始抓包了,打开牛牛可以看到proxifier有夜神流量通过。关闭代理之后牛牛就正常了,可恶的牛牛啊,这样我没办法抓包啊,怎么办啊。模拟器开启代理,burp开启监听。打开牛牛app,牛牛不在报错。牛牛app检测的是系统代理,也就是在模拟器或手机上设置的代理。再在浏览器下载两个模块,在夜神安装,用来屏蔽证书校验。

xiaoheizi的博客 7532

均匀分布产生高斯分布

均匀分布产生高斯分布 文章目录均匀分布产生高斯分布简介方法和证明代码效果引用 简介 方法和证明 代码 效果 引用

gy_Rick的博客 5317

sqoop blob mysql_Sqoop处理Clob与Blob字段

[Author]: kwuSqoop处理Clob与Blob字段,在Oracle中Clob为大文本。Blob存储二进制文件。遇到这类字段导入hive或者hdfs须要特殊处理。1、oracle中的測试表CREATE TABLET_LOB(A INTEGER,B CLOB,C BLOB)測试数据insert into T_LOB (A, B, C) values (1, 'clob測试',to_blob...

weixin_35830006的博客 532

IGV新手必看:5分钟搞定ChIP-seq/DAP-seq/ATAC-seq数据可视化(附常见报错解决方案)

本文为IGV新手提供了一份快速上手的实战指南,详细讲解了如何高效完成ChIP-seq、DAP-seq、ATAC-seq等数据的可视化。内容涵盖软件安装、基因组导入、文件格式转换与优化,并重点剖析了“导入后一片空白”等常见报错的根本原因与解决方案,帮助用户在5分钟内避开雷区,生成可用于发表的IGV专业图谱。

weixin_29198045的博客 539

浅淡mybatis对Oracle中BLOB以及CLOB字段的处理

在对数据进行数据库存储的时候,通常有遇到内容较大的数据。因ORACLE字段的限制,VARCHAR2类型只支持最长4000个 英文字符的保存。此时只能通过BLOB或CLOB来存取。 BLOB全称byte类型的大对象,即字节型大对象,CLOB全称Character类型的大对象即字符型大对象。虽然在使用mybatic读取这两种类型时可以用to_char函数将字段转换成字符串类型,但是遇到长度超过40...

先生有火吗 2467

【服务器电源架构与关键技术发展趋势】深度解析架构、方案、玩家与未来趋势

技术维度:台达 / 光宝在高功率密度(97%+ 效率)和垂直整合上领先,大陆厂商(麦格米特 / 欧陆通)在成本控制和快速响应上更优,国际厂商(英飞凌)聚焦核心器件突破。 客户维度:台达绑定英伟达核心供应链,麦格米特 / 欧陆通兼顾国内外客户,光宝 / 中恒电气侧重云端与互联网厂商。 趋势适配:所有厂商均加速布局 800V 高压架构、液冷技术和高功率 Power Shelf,以应对 AI 服务器单柜功率从 10kW→200kW 的升级需求。

昔时扬尘处 723

【2026年华为暑期实习/秋招(AI)-8月5日-第一题- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

摘要: 本文包含20道选择题,涵盖深度学习、数值计算、概率统计、线性代数及机器学习等领域。重点考察了Softmax的数值稳定性实现(减去最大值)、视觉问答任务(图像+问题→答案)、分层强化学习的奖惩计算、欧氏距离与余弦相似度、反向传播梯度计算、SVD降维存储优化、贝叶斯概率推断、插值多项式等。此外,涉及逻辑回归评价指标(不含MSE)、端侧推理内存因素(中间激活)、集中趋势度量(均值)、Householder变换性质、早期停止正则化、梯度矩阵秩与优化、在线学习特性及大模型训练技巧(如学习率预热、梯度裁剪)等知

m0_73659489的博客 192

MySQL和Oracle在对Clob和Blob字段的处理

MySQL和Oracle在对Clob和Blob字段的处理 文章目录MySQL和Oracle在对Clob和Blob字段的处理前言一、MySQL与Oracle数据库如何处理Clob,Blob数据类型二、jdbc操作clob(以oracle为例)1.插入操作2. 读取操作三、jdbc操作blob四、hibernate处理clob五、使用hibernate处理blob总结 前言 一、MySQL与Oracle数据库如何处理Clob,Blob数据类型 (1) 不通数据库中对应clob,blob的类型

一页尘埃 600

【RT-DETR涨点改进】全网独家首发、注意力改进篇 | ICLR 2026 | 引入 MHLA 多头线性注意力,关注不同的上下文区域,弥补卷积的长程依赖建模方面的不足,助力高效涨点,来自北京大学

🔥本文提出MHLA多头线性注意力模块,用于改进RT-DETR目标检测网络。MHLA通过恢复线性注意力的表达能力,在保持线性复杂度的同时,为网络提供高效的全局上下文建模能力。该方法解决了传统线性注意力在长序列建模中的"全局上下文坍塌"问题,使不同空间位置能关注不同上下文区域。实验表明,MHLA显著提升了RT-DETR在复杂背景、小目标和遮挡场景下的检测性能,且不增加显著计算开销。文章详细介绍了MHLA的原理、优势及8种改进方案,并提供了完整的代码实现和配置指南。

Ai缝合怪、助力小伙伴高效发论文 271

mysql是否支持clob_mysql和Oracle在对clob和blob字段的处理

Photo photo = new Photo();photo.setName("Jambhala");photo.setPhoto(Hibernate.createBlob(""));session.save(photo);session.flush();session.refresh(photo, LockMode.UPGRADE); //锁住此对象oracle.sql.Blob blob ...

weixin_42298802的博客 907

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

故障分析:dul处理long、clob、blob字段中有中文内容

本文介绍了使用DUL工具处理Oracle数据库中包含中文字符的LONG、CLOB和BLOB字段的方法。测试环境为Oracle 11.2.0.3数据库,演示了如何通过DUL导出包含中文的LONG字段数据并使用SQL*Loader重新导入,验证了中文内容完整保留。同时测试了BLOB字段的中文处理,展示了从DUL导出到重新导入BLOB数据的完整流程。文章强调这仅是测试环境验证,不建议直接用于生产环境,并提供了详细的命令行操作记录和编码验证过程。文章同步发布于微信公众号"IT民工的龙马人生"和个

提供数据库技术支持(系统优化,故障处理,安装升级,数据恢复等) 371

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Mysql在对clob和blob字段的处理

1、 CLOB 定义   数据库中的一种保存文件所使用的类型。   Character Large Object   SQL 类型 CLOB 在 JavaTM 编程语言中的映射关系。SQL CLOB 是内置类型,它将字符大对象 (Character Large Object) 存储为数据库表某一行中的一个列值。默认情况下,驱动程序使用 SQL locator(CLOB) 实现 Clob 对象,这...

cm4002的博客 5458

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: PostgreSQL与MySQL选型:设计哲学、性能分水岭与迁移实战
下一篇: Three.js GLTFExporter 实战指南:从导出失败到生产级 glTF 资产生成
cuixie2370
博客等级 码龄10年 17粉丝 842原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值