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

KingbaseES 原生XML系列二 -- XML数据操作函数

KingbaseES 原生XML系列二--XML数据操作函数(DELETEXML,APPENDCHILDXML,INSERTCHILDXML,INSERTCHILDXMLAFTER,INSERTCHILDXMLBEFORE,INSERTXMLAFTER,INSERTXMLBEFORE,UPDATEXML)

XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的一种公共语言。在不同平台下产生的信息,可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。
xml数据类型可以被用来存储XML数据。它比直接在一个text域中存储XML数据的优势在于,它会检查输入值的结构是不是良好,并且有支持函数用于在其上执行类型安全的操作。
本文详细介绍了KingbaseES中集成的相关xml数据操作函数使用。

准备数据:CREATE TABLE "public"."xmldata" ("id" integer NULL,"comm" varchar NULL,"xmlvarchar" varchar NULL,"xmldata" xml NULL,"XMLarray" xml NULL
);INSERT INTO xmldata values(1, 'zhangsan' , '<kes>aaa</kes>' , '<kes><sql>sql001</sql><rac>rac001</rac></kes>' , '<kes><version>v8r3001</version><version>v8r6001</version></kes>');
INSERT INTO xmldata values(2, 'lisi' , '<kes>bbb</kes>' , '<kes><sql>sql002</sql><rac>rac002</rac></kes>' , '<kes><version>v8r3002</version><version>v8r6002</version></kes>');
INSERT INTO xmldata values(3, 'wangwu' , '<kes>ccc</kes>' , '<kes><sql>sql003</sql><rac>rac003</rac></kes>' , '<kes><version>v8r3003</version><version>v8r6003</version></kes>');

xml函数列表

  • DELETEXML
  • APPENDCHILDXML
  • INSERTCHILDXML
  • INSERTCHILDXMLAFTER
  • INSERTCHILDXMLBEFORE
  • INSERTXMLAFTER
  • INSERTXMLBEFORE
  • UPDATEXML

json函数简介

DELETEXML

功能:

函数deletexml会删除xml_instance实例中与xpath表达式匹配的节点。

每次删除指定的一层节点,若一层含有多个节点,则该层所有节点都将被删除。若删除节点后父节点值为空,则父节点只显示结尾部分,否则显示完整父节点及父节点的其他值。

用法:

deletexml(xml_instance xml, xpath text)
deletexml(xml_instance xml, xpath text, namespace _text)

示例:

test=# select deletexml(xmlvarchar , '/kes') , xmlvarchar from xmldata ;deletexml |   xmlvarchar   
-----------+----------------| <kes>aaa</kes>| <kes>bbb</kes>| <kes>ccc</kes>
(3 行记录)test=# select deletexml(xmldata , '/kes/sql') , xmldata from xmldata ;deletexml      |                    xmldata                    
---------------------+-----------------------------------------------<kes>              +| <kes><sql>sql001</sql><rac>rac001</rac></kes><rac>rac001</rac>+| </kes>              | <kes>              +| <kes><sql>sql002</sql><rac>rac002</rac></kes><rac>rac002</rac>+| </kes>              | <kes>              +| <kes><sql>sql003</sql><rac>rac003</rac></kes><rac>rac003</rac>+| </kes>              | 
(3 行记录)test=# select deletexml(xmlarray , '/kes/version') , xmlarray from xmldata ;deletexml |                            xmlarray                             
-----------+-----------------------------------------------------------------<kes/>    | <kes><version>v8r3001</version><version>v8r6001</version></kes><kes/>    | <kes><version>v8r3002</version><version>v8r6002</version></kes><kes/>    | <kes><version>v8r3003</version><version>v8r6003</version></kes>
(3 行记录)

APPENDCHILDXML

功能:

函数appendchildxml将value_expr提供的值作为xpath节点的子节点追加到xml_instance中。成功则返回追加后的xml_instance数据,失败则返回ERROR。

用法:

appendchildxml(xml_instance xml,  xpath text , value_expr xml)

示例:

test=# select appendchildxml(xmldata , '/kes' ,xmlvarchar) , xmldata , xmlvarchar from xmldata ;appendchildxml    |                    xmldata                    |   xmlvarchar   
---------------------+-----------------------------------------------+----------------<kes>              +| <kes><sql>sql001</sql><rac>rac001</rac></kes> | <kes>aaa</kes><sql>sql001</sql>+|                                               | <rac>rac001</rac>+|                                               | <kes>aaa</kes>   +|                                               | </kes>              |                                               | <kes>              +| <kes><sql>sql002</sql><rac>rac002</rac></kes> | <kes>bbb</kes><sql>sql002</sql>+|                                               | <rac>rac002</rac>+|                                               | <kes>bbb</kes>   +|                                               | </kes>              |                                               | <kes>              +| <kes><sql>sql003</sql><rac>rac003</rac></kes> | <kes>ccc</kes><sql>sql003</sql>+|                                               | <rac>rac003</rac>+|                                               | <kes>ccc</kes>   +|                                               | </kes>              |                                               | 
(3 行记录)

INSERTCHILDXML

功能:

函数insertchildxml将value_expr提供的值作为xpath指定节点的子节点插入到xml_instance中。成功则返回插入后的xml_instance数据,失败则返回ERROR。

用法:

insertchildxml(xml_instance xml,  xpath text, child_expr text , value_expr xml)
insertchildxml(xml_instance xml,  xpath text , child_expr text ,value_expr xml, namespace _text)

示例:

test=# select insertchildxml(xmldata , '/kes' , 'cluster' , '<cluster>nodes</cluster>') ,xmldata from xmldata ;insertchildxml       |                    xmldata                    
----------------------------+-----------------------------------------------<kes>                     +| <kes><sql>sql001</sql><rac>rac001</rac></kes><sql>sql001</sql>       +| <rac>rac001</rac>       +| <cluster>nodes</cluster>+| </kes>                     | <kes>                     +| <kes><sql>sql002</sql><rac>rac002</rac></kes><sql>sql002</sql>       +| <rac>rac002</rac>       +| <cluster>nodes</cluster>+| </kes>                     | <kes>                     +| <kes><sql>sql003</sql><rac>rac003</rac></kes><sql>sql003</sql>       +| <rac>rac003</rac>       +| <cluster>nodes</cluster>+| </kes>                     | 
(3 行记录)-- 数组数据插入
test=# select insertchildxml(XMLarray , '/kes' , 'cluster' , '<cluster>nodes</cluster>') , XMLarray from xmldata ;insertchildxml        |                            XMLarray                             
------------------------------+-----------------------------------------------------------------<kes>                       +| <kes><version>v8r3001</version><version>v8r6001</version></kes><version>v8r3001</version>+| <version>v8r6001</version>+| <cluster>nodes</cluster>  +| </kes>                       | <kes>                       +| <kes><version>v8r3002</version><version>v8r6002</version></kes><version>v8r3002</version>+| <version>v8r6002</version>+| <cluster>nodes</cluster>  +| </kes>                       | <kes>                       +| <kes><version>v8r3003</version><version>v8r6003</version></kes><version>v8r3003</version>+| <version>v8r6003</version>+| <cluster>nodes</cluster>  +| </kes>                       | 
(3 行记录)

INSERTCHILDXMLAFTER

功能:

函数insertchildxmlafter将value_expr提供的一个或多个集合元素作为xpath指定的目标父元素的子元素插入到child_expr指定的现有集合元素之后。成功则返回插入后的xml_instance数据,失败则返回ERROR。

用法:

insertchildxmlafter(xml_instance xml,  xpath text, child_expr text , value_expr xml)
insertchildxmlafter(xml_instance xml,  xpath text , child_expr text ,value_expr xml,namespace _text)

示例:

test=# select insertchildxmlafter(xmldata , '/kes','sql','<cluster>nodes</cluster>') ,xmldata from xmldata ;insertchildxmlafter     |                    xmldata                    
----------------------------+-----------------------------------------------<kes>                     +| <kes><sql>sql001</sql><rac>rac001</rac></kes><sql>sql001</sql>       +| <cluster>nodes</cluster>+| <rac>rac001</rac>       +| </kes>                     | <kes>                     +| <kes><sql>sql002</sql><rac>rac002</rac></kes><sql>sql002</sql>       +| <cluster>nodes</cluster>+| <rac>rac002</rac>       +| </kes>                     | <kes>                     +| <kes><sql>sql003</sql><rac>rac003</rac></kes><sql>sql003</sql>       +| <cluster>nodes</cluster>+| <rac>rac003</rac>       +| </kes>                     | 
(3 行记录)-- 数组数据插入
test=#  select insertchildxmlafter(xmlarray ,'/kes','version[1]' ,'<cluster>nodes</cluster>') ,xmlarray from xmldata ;insertchildxmlafter      |                            xmlarray                             
------------------------------+-----------------------------------------------------------------<kes>                       +| <kes><version>v8r3001</version><version>v8r6001</version></kes><version>v8r3001</version>+| <cluster>nodes</cluster>  +| <version>v8r6001</version>+| </kes>                       | <kes>                       +| <kes><version>v8r3002</version><version>v8r6002</version></kes><version>v8r3002</version>+| <cluster>nodes</cluster>  +| <version>v8r6002</version>+| </kes>                       | <kes>                       +| <kes><version>v8r3003</version><version>v8r6003</version></kes><version>v8r3003</version>+| <cluster>nodes</cluster>  +| <version>v8r6003</version>+| </kes>                       | 
(3 行记录)

INSERTCHILDXMLBEFORE

功能:

函数insertchildxmlbefore将value_expr提供的一个或多个集合元素作为xpath指定的目标父元素的子元素插入到child_expr指定的现有集合元素之前。成功则返回插入后的xml_instance数据,失败则返回ERROR。

用法:

insertchildxmlbefore(xml_instance xml,  xpath text, child_expr text , value_expr xml)
insertchildxmlbefore(xml_instance xml,  xpath text , child_expr text , value_expr xml,namespace _text)

示例:

test=# select insertchildxmlbefore(xmldata , '/kes','sql','<cluster>nodes</cluster>') ,xmldata from xmldata ;insertchildxmlbefore    |                    xmldata                    
----------------------------+-----------------------------------------------<kes>                     +| <kes><sql>sql001</sql><rac>rac001</rac></kes><cluster>nodes</cluster>+| <sql>sql001</sql>       +| <rac>rac001</rac>       +| </kes>                     | <kes>                     +| <kes><sql>sql002</sql><rac>rac002</rac></kes><cluster>nodes</cluster>+| <sql>sql002</sql>       +| <rac>rac002</rac>       +| </kes>                     | <kes>                     +| <kes><sql>sql003</sql><rac>rac003</rac></kes><cluster>nodes</cluster>+| <sql>sql003</sql>       +| <rac>rac003</rac>       +| </kes>                     | 
(3 行记录)-- 数组数据插入
test=# select insertchildxmlbefore(xmlarray ,'/kes','version[1]' ,'<cluster>nodes</cluster>') ,xmlarray from xmldata ;insertchildxmlbefore     |                            xmlarray                             
------------------------------+-----------------------------------------------------------------<kes>                       +| <kes><version>v8r3001</version><version>v8r6001</version></kes><cluster>nodes</cluster>  +| <version>v8r3001</version>+| <version>v8r6001</version>+| </kes>                       | <kes>                       +| <kes><version>v8r3002</version><version>v8r6002</version></kes><cluster>nodes</cluster>  +| <version>v8r3002</version>+| <version>v8r6002</version>+| </kes>                       | <kes>                       +| <kes><version>v8r3003</version><version>v8r6003</version></kes><cluster>nodes</cluster>  +| <version>v8r3003</version>+| <version>v8r6003</version>+| </kes>                       | 
(3 行记录)

INSERTXMLAFTER

功能:

函数insertxmlafter将value_expr提供的值插入到xpath指定的节点之后。成功则返回插入后的xml_instance数据,失败则返回ERROR。

用法:

insertxmlafter(xml_instance xml,  xpath text , value_expr xml)
insertxmlafter(xml_instance xml,  xpath text , value_expr xml,namespace _text)

示例:

test=# select insertxmlafter(xmldata ,'/kes/sql' ,'<cluster>nodes</cluster>') ,xmldata  from xmldata ;insertxmlafter       |                    xmldata                    
----------------------------+-----------------------------------------------<kes>                     +| <kes><sql>sql001</sql><rac>rac001</rac></kes><sql>sql001</sql>       +| <cluster>nodes</cluster>+| <rac>rac001</rac>       +| </kes>                     | <kes>                     +| <kes><sql>sql002</sql><rac>rac002</rac></kes><sql>sql002</sql>       +| <cluster>nodes</cluster>+| <rac>rac002</rac>       +| </kes>                     | <kes>                     +| <kes><sql>sql003</sql><rac>rac003</rac></kes><sql>sql003</sql>       +| <cluster>nodes</cluster>+| <rac>rac003</rac>       +| </kes>                     | 
(3 行记录)-- 数组数据插入
test=# select insertxmlafter(xmlarray ,'/kes/version[1]' ,'<cluster>nodes</cluster>') , xmlarray from xmldata ;insertxmlafter        |                            xmlarray                             
------------------------------+-----------------------------------------------------------------<kes>                       +| <kes><version>v8r3001</version><version>v8r6001</version></kes><version>v8r3001</version>+| <cluster>nodes</cluster>  +| <version>v8r6001</version>+| </kes>                       | <kes>                       +| <kes><version>v8r3002</version><version>v8r6002</version></kes><version>v8r3002</version>+| <cluster>nodes</cluster>  +| <version>v8r6002</version>+| </kes>                       | <kes>                       +| <kes><version>v8r3003</version><version>v8r6003</version></kes><version>v8r3003</version>+| <cluster>nodes</cluster>  +| <version>v8r6003</version>+| </kes>                       | 
(3 行记录)

INSERTXMLBEFORE

功能:

函数insertxmlbefore将value_expr提供的值插入到xpath指定的节点之前。成功则返回插入后的xml_instance数据,失败则返回ERROR。

用法:

insertxmlbefore(xml_instance xml,  xpath text , value_expr xml)
insertxmlbefore(xml_instance xml,  xpath text , value_expr xml,namespace _text)

示例:

test=# select insertxmlbefore(xmldata ,'/kes/sql' ,'<cluster>nodes</cluster>') ,xmldata  from xmldata ;insertxmlbefore       |                    xmldata                    
----------------------------+-----------------------------------------------<kes>                     +| <kes><sql>sql001</sql><rac>rac001</rac></kes><cluster>nodes</cluster>+| <sql>sql001</sql>       +| <rac>rac001</rac>       +| </kes>                     | <kes>                     +| <kes><sql>sql002</sql><rac>rac002</rac></kes><cluster>nodes</cluster>+| <sql>sql002</sql>       +| <rac>rac002</rac>       +| </kes>                     | <kes>                     +| <kes><sql>sql003</sql><rac>rac003</rac></kes><cluster>nodes</cluster>+| <sql>sql003</sql>       +| <rac>rac003</rac>       +| </kes>                     | 
(3 行记录)-- 数组数据插入
test=# select insertxmlbefore(xmlarray ,'/kes/version[1]' ,'<cluster>nodes</cluster>') , xmlarray from xmldata ;insertxmlbefore        |                            xmlarray                             
------------------------------+-----------------------------------------------------------------<kes>                       +| <kes><version>v8r3001</version><version>v8r6001</version></kes><cluster>nodes</cluster>  +| <version>v8r3001</version>+| <version>v8r6001</version>+| </kes>                       | <kes>                       +| <kes><version>v8r3002</version><version>v8r6002</version></kes><cluster>nodes</cluster>  +| <version>v8r3002</version>+| <version>v8r6002</version>+| </kes>                       | <kes>                       +| <kes><version>v8r3003</version><version>v8r6003</version></kes><cluster>nodes</cluster>  +| <version>v8r3003</version>+| <version>v8r6003</version>+| </kes>                       | 
(3 行记录)

UPDATEXML

功能:

函数updatexml将xml_instance实例中xpath指定的节点内容替换为value_expr提供的值,成功则返回更新后的xml_instance实例,失败则返回ERROR。

用法:

updatexml(xml_instance xml, xpath text, value_expr xml)
updatexml(xml_instance xml, xpath text, value_expr text)
updatexml(xml_instance xml, xpath text, value_expr text, namespace text)

示例:

test=# select updatexml(xmlvarchar ,'/kes' ,'<kes>xxx</kes>' ) , xmlvarchar from xmldata ;updatexml    |   xmlvarchar   
----------------+----------------<kes>xxx</kes> | <kes>aaa</kes><kes>xxx</kes> | <kes>bbb</kes><kes>xxx</kes> | <kes>ccc</kes>
(3 行记录)

相关文章:

KingbaseES 原生XML系列二 -- XML数据操作函数

KingbaseES 原生XML系列二--XML数据操作函数(DELETEXML,APPENDCHILDXML,INSERTCHILDXML,INSERTCHILDXMLAFTER,INSERTCHILDXMLBEFORE,INSERTXMLAFTER,INSERTXMLBEFORE,UPDATEXML) XML的简单使其易于在任何应用程序中读写数据&#xff0c;这使XML很快成为数据交换的一种公共语言。…...

【Flink】DataStream API使用之源算子(Source)

源算子 创建环境之后&#xff0c;就可以构建数据的业务处理逻辑了&#xff0c;Flink可以从各种来源获取数据&#xff0c;然后构建DataStream进项转换。一般将数据的输入来源称为数据源&#xff08;data source&#xff09;&#xff0c;而读取数据的算子就叫做源算子&#xff08…...

树莓派硬件介绍及配件选择

目录 树莓派Datasheet下载地址&#xff1a; Raspberry 4B 外观图&#xff1a; 技术规格书&#xff1a; 性能介绍&#xff1a; 树莓派配件选用 电源的选用&#xff1a; 树莓派外壳选用&#xff1a; 内存卡/U盘选用 树莓派Datasheet下载地址&#xff1a; Raspberry Pi …...

O2OA (翱途) 平台 V8.0 发布新增数据台账能力

亲爱的小伙伴们&#xff0c;O2OA (翱途) 平台开发团队经过几个月的持续努力&#xff0c;实现功能的新增、优化以及问题的修复。2023 年度 V8.0 版本已正式发布。欢迎大家到 O2OA 的官网上下载进行体验&#xff0c;也希望大家在藕粉社区里多提宝贵建议。本篇我们先为大家介绍应用…...

数控解锁怎么解 数控系统解锁解密

Amazon Fargate 在中国区正式落地&#xff0c;因 数控解锁使用 Serverless 架构&#xff0c;更加适合对性能要求不敏感的服务使用&#xff0c;Pyroscope 是一款基于 Golang 开发的应用程序性能分析工具&#xff0c;Pyroscope 的服务端为无状态服务且性能要求不敏感&#xff0c;…...

3.0 响应式系统的设计与实现

1、Proxy代理对象 Proxy用于对一个普通对象代理&#xff0c;实现对象的拦截和自定义&#xff0c;如拦截其赋值、枚举、函数调用等。里面包含了很多组捕获器&#xff08;trap&#xff09;&#xff0c;在代理对象执行相应的操作时捕获&#xff0c;然后在内部实现自定义。 const…...

Rust 快速入门60分① 看完这篇就能写代码了

Rust 一门赋予每个人构建可靠且高效软件能力的语言https://hannyang.blog.csdn.net/article/details/130467813?spm1001.2014.3001.5502关于Rust安装等内容请参考上文链接&#xff0c;写完上文就在考虑写点关于Rust的入门文章&#xff0c;本专辑将直接从Rust基础入门内容开始讲…...

【5.JS基础-JavaScript的DOM操作】

1 认识DOM和BOM 所以我们学习DOM&#xff0c;就是在学习如何通过JavaScript对文档进行操作的&#xff1b; DOM Tree的理解 DOM的学习顺序 DOM的继承关系图 2 document对象 3 节点&#xff08;Node&#xff09;之间的导航&#xff08;navigator&#xff09; 4 元素&#xff0…...

【大数据之Hadoop】二十九、HDFS存储优化

纠删码和异构存储测试需要5台虚拟机。准备另外一套5台服务器集群。 环境准备&#xff1a; &#xff08;1&#xff09;克隆hadoop105为hadoop106&#xff0c;修改ip地址和hostname&#xff0c;然后重启。 vim /etc/sysconfig/network-scripts/ifcfg-ens33 vim /etc/hostname r…...

SuperMap GIS基础产品组件GIS FAQ集锦(2)

SuperMap GIS基础产品组件GIS FAQ集锦&#xff08;2&#xff09; 【iObjects for Spark】读取GDB参数该如何填写&#xff1f; 【解决办法】可参考以下示例&#xff1a; val GDB_params new util.HashMapString, java.io.Serializable GDB_params.put(FeatureRDDProviderParam…...

C语言printf()函数中整型格式说明符详解

每个整型在printf()函数中对应不同的格式说明符,以实现该整型的打印输出。格式说明符必须使用小写。现在让我们看看各个整型及其格式说明符: 短整型(short) 10进制:%hd16进制:无负数格式,正数使用%hx8进制:无负数格式,正数使用%ho c short s 34; printf("%hd", s…...

阿里云服务器地域和可用区怎么选择合适?

阿里云服务器地域和可用区怎么选择&#xff1f;地域是指云服务器所在物理数据中心的位置&#xff0c;地域选择就近选择&#xff0c;访客距离地域所在城市越近网络延迟越低&#xff0c;速度就越快&#xff1b;可用区是指同一个地域下&#xff0c;网络和电力相互独立的区域&#…...

Java序列化引发的血案

1、引言 阿里巴巴Java开发手册在第一章节&#xff0c;编程规约中OOP规约的第15条提到&#xff1a; **【强制】**序列化类新增属性时&#xff0c;请不要修改serialVersionUID字段&#xff0c;避免反序列失败&#xff1b;如果完全不兼容升级&#xff0c;避免反序列化混乱&#x…...

为Linux系统添加一块新硬盘,并扩展根目录容量

我的原来ubuntu20.04系统装的时候不是LVM格式的分区&#xff0c; 所以先将新硬盘转成LVM&#xff0c;再将原来的系统dd到新硬盘&#xff0c;从新硬盘的分区启动&#xff0c;之后再将原来的分区转成LVM&#xff0c;在融入进来 1&#xff1a;将新硬盘制作成 LVM分区 我的新硬盘…...

树莓派Opencv调用摄像头(Raspberry Pi 11)

前言&#xff1a;本人初玩树莓派opencv&#xff0c;使用的是树莓派Raspberry Pi OS 11&#xff0c;系统若不一致请慎用&#xff0c;本文主要记录在树莓派上通过Opencv打开摄像头的经验。 1、系统版本 进入树莓派&#xff0c;打开终端输入以下代码&#xff08;查看系统的版本&…...

国产ChatGPT命名图鉴

很久不见这般热闹的春天。 随着ChatGPT的威名席卷全球&#xff0c;大洋对岸的中国厂商也纷纷亮剑&#xff0c;各式本土大模型你方唱罢我登场&#xff0c;声势浩大的发布会排满日程表。 有趣的是&#xff0c;在这些大模型产品初入历史舞台之时&#xff0c;带给世人的第一印象其…...

操作系统——进程管理

0.关注博主有更多知识 操作系统入门知识合集 目录 0.关注博主有更多知识 4.1进程概念 4.1.1进程基本概念 思考题&#xff1a; 4.1.2进程状态 思考题&#xff1a; 4.1.3进程控制块PCB 4.2进程控制 思考题&#xff1a; 4.3线程 思考题&#xff1a; 4.4临界资源与临…...

第四十一章 Unity 输入框 (Input Field) UI

本章节我们学习输入框 (Input Field)&#xff0c;它可以帮助我们获取用户的输入。我们点击菜单栏“GameObject”->“UI”->“Input Field”&#xff0c;我们调整一下它的位置&#xff0c;效果如下 我们在层次面板中发现&#xff0c;这个InputField UI元素包含两个子元素&…...

10.集合

1.泛型 1.1泛型概述 泛型的介绍 ​ 泛型是JDK5中引入的特性&#xff0c;它提供了编译时类型安全检测机制 泛型的好处 把运行时期的问题提前到了编译期间避免了强制类型转换 泛型的定义格式 <类型>: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如:…...

强化学习p3-策略学习

Policy Network (策略网络) 我们无法知道策略函数 π \pi π所以要做函数近似&#xff0c;求一个近似的策略函数 使用策略网络 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(a∣s;θ) 去近似策略函数 π ( a ∣ s ) \pi(a|s) π(a∣s) ∑ a ∈ A π ( a ∣ s ; θ ) 1 \sum_{a\in …...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...