• 关于

    C#可空类型

    的搜索结果

回答

如果您不使用可为空的类型,那么最好的办法是检查该列的值是否为DBNull。如果它是DBNull,则将您的引用设置为对相应数据类型使用null / empty的引用。 DataRow row = ds.Tables[0].Rows[0]; string value; if (row["fooColumn"] == DBNull.Value) { value = string.Empty; } else { value = Convert.ToString(row["fooColumn"]); } 就像Manu所说的那样,您可以使用每种类型的重载convert方法创建一个convert类,这样就不必在if / else块中添加代码了。 但是,我会强调,如果可以使用可空类型,那是更好的选择。原因是对于非空类型,您将不得不求助于“魔术数字”来表示空。例如,如果要将列映射到int变量,将如何表示DBNull?通常,您不能使用0,因为0在大多数程序中具有有效含义。我经常看到人们将DBNull映射到int.MinValue,但这也可能有问题。我最好的建议是: 对于数据库中可以为空的列,请使用可为空的类型。 对于数据库中不能为空的列,请使用常规类型。 可空类型用于解决此问题。话虽如此,如果您使用的是较旧版本的框架,或者是为不使用可空类型的人工作的,那么代码示例将解决问题。
心有灵_夕 2019-12-25 20:56:36 0 浏览量 回答数 0

回答

Kotlin的简介 Kotlin是由JetBrains公司(IDEA开发者)所开发的编程语言,其名称来自于开发团队附近的科特林岛。 多平台开发 JVM :Android; Server-Side Javascript:前端 Native(beta) :开发原生应用 windows、macos、linux Swift与Kotlin非常像 http://nilhcem.com/swift-is-like-kotlin/ kotlin发展历程 image.png java发展历程 image.png JVM语言的原理 image.png JVM规范与java规范是相互独立的 只要生成的编译文件匹配JVM字节码规范,任何语言都可以由JVM编译运行. Kotlin也是一种JVM语言,完全兼容java,可以与java相互调用;Kotlin语言的设计受到Java、C#、JavaScript、Scala、Groovy等语言的启发 kotlin的特性 下面不会罗列kotlin中具体的语法,会介绍我认为比较重要的特性,以及特性背后的东西。 类型推断 空类型设计 函数式编程 类型推断 image.png 类型推断是指编程语言中在编译期自动推导出值的数据类型。推断类型的能力让很多编程任务变得容易,让程序员可以忽略类型标注的同时仍然允许类型检查。 在开发环境中,我们往往写出表达式,然后可以用快捷键来生成变量声明,往往都是很准的,这说明了编译器其实是可以很准确的推断出来类型的。编程语言所具备的类型推断能力可以把类型声明的任务由开发者转到了编译器. java中声明变量的方式是类型写在最前面,后面跟着变量名,这就迫使开发者在声明变量时就要先思考变量的类型要定义成什么,而在一些情况下比如使用集合、泛型类型的变量,定义类型就会变得比较繁琐。 Kotlin中声明变量,类型可以省略,或者放到变量名后面,这可以降低类型的权重,从必选变为可选,降低开发者思维负担。java10中也引入了类型推断。 Javascript中声明变量也是用关键字var,但是还是有本质区别的,Kotlin中的类型推断并不是变成动态类型、弱类型,类型仍然是在编译期就已经决定了的,Kotlin仍然是静态类型、强类型的编程语言。javascript由于是弱类型语言,同一个变量可以不经过强制类型转换就被赋不同数据类型的值, 编程语言的一个趋势就是抽象程度越来越高,编译器做更多的事情。 空类型设计 空类型的由来 image.png 托尼·霍尔(Tony Hoare),图灵奖得主 托尼·霍尔是ALGOL语言的设计者,该语言在编程语言发展历史上非常重要,对其他编程语言产生重大影响,大多数近代编程语言(包括C语言)皆使用类似ALGOL的语法。他在一次大会上讨论了null应用的设计: “我把 null 引用称为自己的十亿美元错误。它的发明是在1965 年,那时我用一个面向对象语言( ALGOL W )设计了第一个全面的引用类型系统。我加入了null引用设计,仅仅是因为实现起来非常容易。它导致了数不清的错误、漏洞和系统崩溃,可能在之后 40 年中造成了十亿美元的损失。” null引用存在的问题 以java为例,看null引用的设计到底存在哪些问题 空指针问题NPE 编译时不能对空指针做出检查,运行时访问null对象就会出现错误,这个就是工程中常见的空指针异常。 null本身没有语义,会存在歧义 值未被初始化 值不存在 也许表示一种状态 逻辑上有漏洞 Java中,null可以赋值给任何引用,比如赋值给String类型变量,String a = null,但是null并不是String类型: a instanceof String 返回的是false,这个其实是有些矛盾的。所以当持有一个String类型的变量,就存在两种情况,null或者真正的String. 解决NPE的方式 防御式代码 在访问对象前判空,但会有冗余代码;会规避问题,而隐藏真正的问题 抛出异常给调用方处理 方法中传参传入的空值、无效值,抛出受检查异常给上层调用方 增加注解 Android中可以增加@NonNull注解,编译时做额外检查 空状态对象设计模式 空状态对象是一个实现接口但是不做任何业务逻辑的对象,可以取代判空检查;这样的空状态对象也可以在数据不可用的时候提供默认的行为 java8 Optional类 java8中引入了Optional类,来解决广泛存在的null引用问题.官方javadoc文档介绍 A container object which may or may not contain a non-null value. If a value is present, isPresent() will return true and get() will return the value. Additional methods that depend on the presence or absence of a contained value are provided, such as orElse() (return a default value if value not present) and ifPresent() (execute a block of code if the value is present). 来看一下是如何实现的。 举一个访问对象读取熟悉的例子 java 8 之前 : image.png java 8: image.png 总结: 1.用Optional还是会比较繁琐,这个也说明了设计一个替代null的方案还是比较难的。 optional的耗时大约是普通判空的数十倍,主要是涉及泛型、使用时多创键了一个对象的创建;数据比较大时,会造成性能损失。 java8 引入Optional的意义在于提示调用者,用特殊类型包装的变量可能为空,在使用取出时需要判断 Kotlin的空类型设计 Kotlin中引入了可空类型和不可空类型的区分,可以区分一个引用可以容纳null,还是不能容纳null。 String vs String? String 类型表示变量不能为空,String?则表示变量可以为空 String?含义是String or null.这两种是不同的类型. 比如: var a:String = “abc” //ok var a:String = null //不允许 var b :String? = null //ok a=b // 不允许 String?类型的值不能给String类型的值赋值 这样就将类型分成了可空类型和不可能类型,每一个类型都有这样的处理;Kotlin中访问非空类型变量永远不会出现空指针异常。 同样上面的例子,采用Kotlin去写,就会简洁很多 image.png 编程范式-函数式编程 编程范式是什么? 编程范式是程序员看待程序和写程序的观点 主要的类型 非结构化编程 结构化编程 面向对象编程 命令式编程 函数式编程 这些类型并不是彼此互斥的,而是按照不同的维度做的划分,一种编程语言可能都支持多个编程范式 非结构化编程 第一代的高级语言往往是非结构化编程 比如 BASIC语言 每一行的代码前面都有一个数字作为行号,通常使用GOTO的跳跃指令来实现判断和循环. 看一下下面这段代码是做什么的: image.png 实际上做的是:程序在屏幕上显示数字 1 到 10 及其对应的平方 采用这种方式写程序,大量的使用goto实现逻辑的跳转,代码一长,可读性和维护性就比较差了,形成“面条式代码” 结构化编程 采用顺序、分支、循环结构来表达,禁用或者少用GOTO; 并用子程序来组织代码,采用自顶向下的方式来写程序 代表语言是C语言 实现同样的逻辑: image.png 可见采用结构化编程,代码的逻辑会更清晰。 面向对象编程 思想: 将计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。 特性: 封装性、继承性、多态性。 命令式编程 把计算机程序视为一系列的命令集合 主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。 “先做这,再做那”,强调“怎么做” 实现: 用变量来储存数据,用语句来执行指令,改变变量状态。 基本所有的常见的编程语言都具有此范式 函数式编程 声明式语法,描述要什么,而不是怎么做 类似于SQL语句 语言: kotlin swift python javascript scala 函数是第一等公民 可以赋值给变量,可作为参数传入另一个函数,也可作为函数的返回值 纯函数 y=f(x) 只要输入相同,返回值不变 没有副作用:不修改函数的外部状态 举个栗子 公司部门要进行outing,去哪里是个问题,要考虑多个因素,比如花费、距离、天数等等,有多个备选地点进行选择。 定义一个数据类: image.png 要进行筛选了,分别用sql,kotlin,java来实现 找出花费低于2000元的outing地点信息 SQL image.png Kotlin image.png java 7 image.png 可见kotin的写法还是比较接近于sql的思想的,声明式的写法,而不管具体如何实现;其中的:place->place.money<2000 就是函数,可以作为参数传递给fliter这个高阶函数;而且这个函数没有副作用,不改变外部状态。 再来一个复杂一点的: 找出花费低于5000元,时间不多于4天,按照距离排序的outing地点名称 SQL image.png Kotlin: image.png java 7 image.png 由此可见用kotlin的函数式写法,会更简洁,逻辑也更清晰,这段代码的目标一目了然,这种清晰在于实现了业务逻辑与控制逻辑的分离,业务逻辑就是由函数实现的,比如place->place.money<500,而控制逻辑是由filter,sorterBy等高阶函数实现的。 而java的传统写法是基于对数据的操作,避免不了遍历的操作,业务逻辑与控制逻辑交织在了一起,这段代码的目的就不是那么容易清晰看到的了。 总结 kotlin是实用的现代编程语言,吸收了众多编程语言的优点,支持类型推断、空类型安全、函数式编程、DSL等特性,非常值得学习和使用。
问问小秘 2020-04-30 16:33:40 0 浏览量 回答数 0

回答

回楼主li781825965的帖子 不好意思,回复您晚了! 您说的内容确实是一个十分实用的功能,我们通过讨论后目前得出的结论如下: 1、对于枚举类型(Enum)、集合类型(Set)后续我们会提供选择,Enum类型可选择其中之一或为空,Set可复选或为空。需求已经纳入,我们会尽快开发,完成后通过该帖跟进。 2、对于外键,可能暂时没考虑,外键可能需要加载目标表相应的数据,对于目标表的大小还不大能预测,若很大可能会导致更多的问题。当然也不是说完全不做,可能会再考虑清楚如何做更好后再提供该功能,该功能暂时还没有排入开发计划中,请谅解!
钟隐 2019-12-01 23:10:04 0 浏览量 回答数 0

回答

根据参考资料,可以通过以下方式创建数组: 对于Java的基本类型有不同的类型IntArray,DoubleArray等等。它存储拆箱值。 它们是使用相应的构造函数和工厂函数创建的: val arrayOfZeros = IntArray(size) //equivalent in Java: new int[size] val numbersFromOne = IntArray(size) { it + 1 } val myInts = intArrayOf(1, 1, 2, 3, 5, 8, 13, 21) 第一个与Java中的相似,它只是创建一个填充有默认值的原始数组,例如Int,false对于,为零Boolean。 非基本数组由Array 类表示,其中T项类型。 T还是可以的类型Java中的原始的一种(Int,Boolean,...),但值内将等同盒装Java的Integer,Double等等。 另外,T可以像和一样为可为空和为非空。StringString? 这些以类似的方式创建: val nulls = arrayOfNulls (size) //equivalent in Java: new String[size] val strings = Array(size) { "n = $it" } val myStrings = arrayOf("foo", "bar", "baz") val boxedInts = arrayOfNulls (size) //equivalent in Java: new Integer[size] val boxedZeros = Array(size) { 0 }
保持可爱mmm 2020-02-09 11:50:33 0 浏览量 回答数 0

问题

OpenSearch如何查询query子句?

子句说明 query子句是搜索语句中不可缺少的一部分,它表示在哪个索引字段下查询什么内容,并且可以指定多个查询条件及其之间的关系(AND\OR\ANDNOT\RANK)。例如可以将...
轩墨 2019-12-01 20:57:10 1407 浏览量 回答数 0

问题

MaxCompute用户指南:SQL:内建函数:字符串函数

CHAR_MATCHCOUNT 函数声明:     bigint char_matchcount(string str1, string str2) 用途: 用于计算 str1 中有多少个字符出现在 st...
行者武松 2019-12-01 22:02:59 1587 浏览量 回答数 0

回答

什么是Referer Referer是HTTP Header的一部分,当浏览器向Web服务器发送请求时,一般会带上Referer,告诉服务器从哪个页面链接过来的。 Referer的作用 防盗链。比如,网站访问自己的图片服务器,图片服务器取到Referer来判断是不是自己的域名,如果是就继续访问,不是则拦截。 数据统计。比如,统计用户是从哪里链接过来访问的。 Referer为空 空Referer指的是HTTP请求中Referer头部的内容为空,或者HTTP请求中不包含Referer头部。如果有下面两种情况则Referer为空。 当请求并不是由链接触发产生。比如,直接把地址输入地址栏里打开页面。 从https页面上的链接访问到非加密的http页面时,在http页面上是检查不到Referer的。 在防盗链设置中,允许空Referer和不允许空Referer的区别如下。 在防盗链的白名单设置中,如果指明白名单中包含空的Referer,那么通过浏览器地址栏直接访问该资源URL是可以访问到的。 如果不指明需要包含空的Referer,那么通过浏览器直接访问也是被禁止的。 OSS防盗链 OSS防盗链是通过Referer来实现的,所以也简称为Refer或refer。 OSS防盗链配置 提示:Referer详细的介绍及配置请参见防盗链。 OSS防盗链通过在控制台或SDK设置Bucket属性来配置。 OSS防盗链配置内容包括以下两部分内容。 是否允许Referer字段为空的请求访问。 Referer字段白名单。 OSS防盗链配置中需要注意以下几点。 用户只有通过URL签名或者匿名访问Object时,才会做防盗链验证。如果请求Header中有Authorization字段时,不会做防盗链验证。 一个Bucket可以支持多个Referer参数,这些参数之间由,分隔。 Referer参数支持通配符*和?,详细解释可参考通配符说明。 用户可以设置是否允许Referer字段为空的请求访问。 白名单为空时,不会检查Referer字段是否为空(不然所有的请求都会被拒绝)。 白名单不为空,且设置了不允许Referer字段为空的规则,则只有Referer属于白名单的请求被允许,其它请求(包括Referer为空的请求)会被拒绝。 如果白名单不为空,但设置了允许Referer字段为空的规则,则Referer为空的请求和符合白名单的请求会被允许,其它请求都会被拒绝。 Bucket的三种权限(private、public-read、public-read-write)都会检查Referer字段。 通配符说明。 星号*:代替0个或多个字符。如果正在查找以AEW开头的一个文件,但不记得文件名其余部分,可以输入AEW*,查找以AEW开头的所有文件类型的文件,如AEWT.txt、AEWU.EXE、AEWI.dll等。要缩小范围可以输入AEW*.txt,查找以AEW开头,并以.txt为扩展名的文件,如AEWIP.txt、AEWDF.txt。 问号?:代替一个字符。如果输入love?,查找以love开头的一个字符结尾文件类型的文件,如lovey、lovei等。要缩小范围可以输入love?.doc,查找以love开头,任意一个字符结尾,并以.doc为扩展名的文件,如lovey.doc、loveh.doc。 典型配置说明如下。 所有请求都可以访问。 空Referer:允许Referer为空。 Referer列表:空。 带有规定的Referer请求或不带Referer的请求才能访问。 空Referer:不允许Referer为空。 Referer列表:http://.oss-cn-beijing.aliyuncs.com,http://.aliyun.com。 常见错误及排除 错误一:配置防盗链后用curl命令还是能获取到视频文件 错误原因 可能开启了CDN并且没有配置CDN中的Referer。 解决方法 检查是否开启了CDN。CDN的Referer设置不能为空,且防盗链名单需与OSS一致。 调试OSS的Referer时,请先排除CDN的影响。且优先调试OSS的Referer,再调试CDN的Referer。 错误二:当Referer配置错误时HTTP提示”403“错误且OSS提示“You are denied by bucket referer policy.”错误 错误原因 通常有以下两种主要原因。 Referer为空,请求Header中没有Referer字段或者Referer字段为空。 Referer不在规定范围或者格式错误。 解决方法 建议您清空浏览器缓存后再进行调试。如果仍然存在异常错误,则参考如下步骤进行解决。 Referer为空时,通过在OSS控制台选择 Bucket > Bucket属性 > 防盗链 中配置Referer。需要注意OSS的Referer只支持白名单,暂时不支持黑名单。 Referer不在规定范围或者格式错误时,需要确认是否配置http://或者https://,并更正Referer的配置范围,比如a.aliyun.com和b.aliyun.com,匹配于http://.aliyun.com或http://?.aliyun.com。domain.com匹配于http://domain.com,而不是http://.domain.com。 Referer报错一般是站点类应用,浏览器中可以查看Header的Referer。如Chrome浏览器,按键盘F12打开 开发者工具,在 Network 中查看相应元素的Header。 OSS返回的错误可以通过抓包获取。如抓包工具Wireshark,筛选器可以指定为host bucket-name.oss-cn-beijing.aliyuncs.com。
剑曼红尘 2020-03-26 18:53:54 0 浏览量 回答数 0

回答

1、char(n)类型     char类型时定长的类型,即当定义的是char(10),输入的是"abc"这三个字符时,它们占的空间一样是10个字节,包括7个空字节。当输入的字符长度超过指定的数时,char会截取超出的字符。而且,当存储char值时,MySQL是自动删除输入字符串末尾的空格。     char是适合存储很短的、一般固定长度的字符串。例如,char非常适合存储密码的MD5值,因为这是一个定长的值。对于非常短的列,char比varchar在存储空间上也更有效率。 2、varchar(n)类型      varchar(n)类型用于存储可变长的,长度为n个字节的可变长度且非Unicode的字符数据。n必须是介于1和8000之间的数值,存储大小为输入数据的字节的实际长度+1/2. 比如varchar(10), 然后输入abc三个字符,那么实际存储大小为3个字节。除此之外,varchar还需要使用1或2个额外字节记录字符串的长度,如果列的最大长度小于等于255字节(是定义的最长长度,不是实际长度),则使用1个字节表示长度,否则使用2个字节来表示。     所以,从空间上考虑,varcahr较合适;从效率上考虑,用char合适。二者之间需要权衡。     除了char和varchar之外,还有一种nchar、nvarchar(n),包含n个字符的可变长度为unicode字符数据。n的值必须介于1~4000之间,直接的存储大小是说输入字符个数的两倍,所输入的数据字符长度可以为零。从名字上看,多了一个n,表示存储的是unicode数据类型的字符,这是为了存储汉字用的,1个英文字母或者数字占用的字符为1个,一个汉字占用2个字符,那么对于有中英文混合的字符串,我们需要定义nvarchar类型。Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。 还有,text类型。其存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。
AA大大官 2020-03-31 13:07:28 0 浏览量 回答数 0

问题

标签模型配置

实体配置 实体关系建模是把分散的多张表,以业务形态进行组织的一种方式,即围绕着一个或多个实体(即描述的对象)的各种属性和行为的描述。整个建模是围绕着“实体”-“关系”...
反向一觉 2019-12-01 21:06:52 1418 浏览量 回答数 0

问题

OpenSearch与搜索相关的错误码有哪些?

搜索相关(6000-6999) 错误码错误说明6001查询query为空6002并不被支持的搜索key关键字6003并不被支持的搜索field关键字6004复杂查询为空6005field无效6006请求包含太...
轩墨 2019-12-01 20:57:26 1130 浏览量 回答数 0

问题

可以使用32位(void *)通用(32位OS)存储uint64_t数据吗?

使用空指针是C语言中通用数据类型的可移植方法(假设我不想使用预处理器宏或联合类型)吗?出现这个问题的原因是,因为我想将uint64_t数据存储在32位Linux发行版(&...
祖安文状元 2020-01-07 14:02:01 0 浏览量 回答数 1

问题

Job 操作

初始化 Job 任务 请求参数(InitiateJobRequest) 变量名类型描述vaultIdString待新建Job的Vault的IDarchiveIdString待下载的Archive的ID...
云栖大讲堂 2019-12-01 21:10:30 1316 浏览量 回答数 0

问题

接入图片服务之如何实现用户鉴权?

如果用户需要不经过任何授权,通过浏览器即可匿名访问图片服务来处理图片,需要在创建Bucket的时候将Bucket的权限设置为公共读。 创建Bucket 控制台:创建BucketSDK:...
青衫无名 2019-12-01 21:57:21 1667 浏览量 回答数 0

回答

使用举例 您必须替换代码中的image_id,access_key_id,access_key_secret等用户信息以及oss相关的路径。 import time from batchcompute import Cient, ClientError from batchcompute import CN_SHENZHEN as REGION from batchcompute.resources import ( JobDescription, TaskDescription, DAG, GroupDescription, ClusterDescription, ) some other codes here access_key_id = ... # your access key id access_key_secret = ... # your access key secret image_id = ... # the id of a image created before instance_type = ... # instance type client = Client(REGION, access_key_id, access_key_secret) try: # Create cluster. cluster_desc = ClusterDescription() group_desc = GroupDescription() group_desc.DesiredVMCount = 1 group_desc.InstanceType = instance_type cluster_desc.add_group('group1', group_desc) cluster_desc.Name = "BatchcomputeCluster" cluster_desc.ImageId = image_id cluster_desc.Description = "Python SDK test" cluster_id = client.create_cluster(cluster_desc).Id # Create job. job_desc = JobDescription() echo_task = TaskDescription() # Create map task. echo_task.Parameters.Command.CommandLine = "echo Batchcompute service" echo_task.Parameters.Command.PackagePath = "" echo_task.Parameters.StdoutRedirectPath = "oss://xxx/xxx/" # Better replace this path echo_task.Parameters.StderrRedirectPath = "oss://xxx/xxx/" # Better replace this path echo_task.InstanceCount = 3 echo_task.ClusterId = cluster_id # Create task dag. task_dag = DAG() task_dag.add_task(task_name="Echo", task=echo_task) # Create job description. job_desc.DAG = task_dag job_desc.Priority = 99 # 0-1000 job_desc.Name = "PythonSDKDemo" job_desc.JobFailOnInstanceFail = True job_id = client.create_job(job_desc).Id # Wait for job finished. errs = client.poll(job_id) if errs: print ("Some errors occur: %s" % '\n'.join(errs)) # Delete cluster client.delete_cluster(cluster_id) except ClientError, e: print (e.get_status_code(), e.get_code(), e.get_requestid(), e.get_msg()) 2、 类和常量 2.1 接口类型 接口类型提供了BatchCompute服务所有API接口的Python实现以及其他一些有用的辅助接口。 序号 名称 可序列化 描述 1. Client No 与BatchCompute服务交互的客户端类型 2.2 描述类型 描述类型主要作为创建资源时的参数类型或获取资源状态信息时由服务的返回类型。 序号 名称 可序列化 描述 1. JobDescription Yes 描述用户作业的类 2. DAG Yes 描述作业任务以及任务间互相之间依赖关系的类 3. TaskDescription Yes 描述任务的类 4. Parameters Yes 描述任务运行参数的类 5. Command Yes 配置任务命令行执行环境类 6. ClusterDescription Yes 描述用户集群的类 7. GroupDescription Yes 描述用户集群实例配置的类 8. Job Yes 描述给定作业当前状态信息的类 9. Task Yes 描述给定的作业任务的当前状态信息的类 10. Instance Yes 描述给定的任务实例当前状态信息的类 11. Result Yes 描述给定的任务实例运行结果的类 12. InstanceMetrics Yes 描述给定作业或任务实例统计信息的类 13. TaskMetrics Yes 描述给定作业中任务统计信息的类 14. Cluster Yes 描述给定集群状态信息的类 15. Group Yes 描述给定集群中机器组状态信息的类 16. Metrics Yes 描述给定集群作业统计信息的类 关于可序列化 描述类型均为可序列化的类型,SDK中所有可序列化的类均从内部类型 Jsonizable 继承而来。以下是关于 Jsonizable 类型及其子类的描述; 参数说明: Jsonizable 及其子类对象均可通过字典,Jsonizable 对象或者描述字典的JSON串初始化。注意,在初始化 Jsonizable 对象及其子类时,会丢弃字典或者JSON串中所有不合法的属性描述信息。 参数 类型 描述 properties dict, str, Jsonizable object 属性描述信息 通过字典初始化 Jsonizable 类: e.g. from batchcompute.resources import JobDescription A dict object. properties = { "Name": "PythonSDKDemo", "Description": "Batchcompute" } jsonizable = JobDescription(properties) print (jsonizable.Name) print (jsonizable.Description) 通过JSON字符串初始化 Jsonizable 类 e.g. from batchcompute.resources import JobDescription A string jsonized from a dict object. properties = '''{ "Name": "PythonSDKDemo", "Description": "Batchcompute" }''' jsonizable = JobDescription(properties) print (jsonizable.Name) print (jsonizable.Description) 通过相同类的对象初始化 Jsonizable 类。 e.g. form batchcompute.resources import JobDescription A JobDescription object. jsonizable1 = JobDescription() jsonizable1.Name = "PythonSDKDemo" jsonizable1.Description = "Batchcompute" jsonizable2 = JobDescription(jsonizable1) print(jsonizable2.Name) print(jsonizable2.Description) 方法说明: 序号 方法名 描述 1. update 接受一个字典对象,更新类的部分属性,不合法的属性将被丢弃 2. detail 返回一个包含类属性的字典,如果属性为空将不被包含 3. load 接受一个字符串,该字符串是一个JSON化的字典,类的属性均被更新,不合法的属性会被丢弃 4. dump 返回一个字符串,内容JSON化的字典,包含所有类属性信息,如果属性为空将不被包含 5. str 被print调用的内置函数,其内部调用了dump函数 关于类属性 可序列化的类型均具有各种属性。属性均可以通过其名称直接读取,例如,你可以通过如下代码获取作业的ID:另外属性名与Python规范PEP8中类的命名方式保持一致(区别于类方法的命名规则),遵循CamelCase的拼写规则. job is a Job object. job = ... job_id = job.Id print (job_id) 另外,可以通过字典取值的方式获取属性,例如: job is a Job object. job = ... job_id = job["Id"] print (job_id) 对于类 JobDescription, DAG, TaskDescription, 可以通过赋值的方式更改某个属性的值,例如: from batchcompute.resources import JobDescription job_desc = JobDescription() job_desc.Name = "PythonSDKDemo" 对于类 JobDescription, DAG, TaskDescription, 可以通过字典的方式对类的属性进行赋值, 例如: from batchcompute.resources import JobDescription job_desc = JobDescription() job_desc["Id"] = "PythonSDKDemo" 2.3 响应类型 序号 名称 可序列化 描述 1. CreateResponse No 创建资源成功后, Client返回的响应类 2. GetResponse No 获取资源状态信息, Client返回的响应类 3. ActionResponse No 对资源进行各种操作时由Client返回的响应类 4. ListResponse No 列举资源时,由Client返回的响应类 关于响应类 所有的响应类型 (CreateResponse, GetResponse, ActionRespnse, ListResponse)均继承自内部类型RawResponse.以下描述适用于所有RawResponse的子类。 属性说明: 属性 类型 描述 RequestId str Client的所有请求的识别码 StatusCode int Client的所有请求的状态码 e.g. ... response = client.create_job(job_desc) print (response.RequestId) print (response.StatusCode) 2.4 异常类型 非法的参数或者非法请求时会抛出异常 序号 名称 可序列化 描述 1. ClientError No 异常类 2. FieldError No 异常类 3. ValidationError No 异常类 4. JSONError No 异常类 5. ConfigError No 异常类 2.5 常量 序号 名称 可序列化 描述 1. CN_QINGDAO No 常量,BatchCompute的青岛(华北1)endpoint 2. CN_SHENZHEN No 常量,BatchCompute的深圳(华南1)endpoint 3. CN_BEIJING No 常量,BatchCompute的北京(华北2)endpoint 4. CN_HANGZHOU No 常量,BatchCompute的杭州(华东1)endpoint
1934890530796658 2020-03-30 12:05:36 0 浏览量 回答数 0

问题

表格存储的主键和属性

主键 主键是表中每一行的唯一标识。主键由 1 到 4 个主键列组成。创建表的时候,必须明确指定主键的组成、每一个主键列的名字和数据类型以及它们的顺序。主键列的数据类型只能是 String、Integer 和 Binary。...
云栖大讲堂 2019-12-01 20:53:59 1398 浏览量 回答数 0

问题

迷你书下载 精彩片段: 恶名昭著的指针究竟是什么:报错

指针——C语言的灵魂 为什么说C指针是C语言的灵魂? 买前必读: 迷你书下载 精彩片段: 恶名昭著的指针究竟是什么:报错 为什么说C指针是C语言的灵魂? 来...
kun坤 2020-06-09 15:10:04 4 浏览量 回答数 1

回答

定义 定义 描述 ContainerGroup 容器组 ImageRegistryCredential 镜像仓库登录信息 Volume 数据卷 Event 事件 Tag 容器标签 DNSConfig DNS配置信息 Container 容器 ContainerState 容器状态 VolumeMount 数据卷挂载点 EnvironmentVar 容器环境变量 ContainerPort 容器端口 SecurityContext 实例运行的安全上下文 ReadinessProbe Readiness探针 LivenessProbe Liveness探针 ContainerGroup 名称 类型 描述 RegionId String 实例所属的地域 ID ZoneId String 实例所属的可用区编号,空表示由系统选择,默认值:空 SecurityGroupId String 指定新创建实例所属于的安全组代码,同一个安全组内的实例之间可以互相访问 VSwitchId String 指定虚拟交换机 ID。当前 ECI 实例均为 VPC 实例 ContainerGroupName String 容器组名称 ContainerGroupId String 容器组 ID ImageRegistryCredentials ImageRegistryCredential[] 镜像仓库登陆信息,上限10 Volumes Volume[] 数据卷信息,上限20 RestartPolicy String 重启策略 (Always,OnFailure,Never) Cpu Float 容器组级别Cpu限制,单位:核 vCPU Memory Float 容器组级别内存限制,单位:GiB InitContainers Container[] 初始化容器列表,上限5 Containers Container[] 容器列表,上限5 Events Event[] 事件信息,上限 50 DNSConfig DNSConfig DNS配置信息 InternetIp String 公网 IP IntranetIP String 内网 IP Tags Tag[] 实例的标签键值对,上限20 Status String 返回容器组创建状态,枚举值:Pending,Running,Succeeded,Failed,Scheduling, ScheduleFailed CreationTime String 接到请求后的系统创建时间。UTC时间,RFC3339标准,例如:2018-08-02T15:00:00Z SucceededTime String 容器全部成功退出后的时间。UTC时间,RFC3339标准,例如:2018-08-02T15:00:00Z EniInstanceId String ENI 实例 ID ExpiredTime String 容器由于帐户欠费导致eci运行失败的时间。UTC时间,RFC3339标准,例如:2018-08-02T15:00:00Z FailedTime String 容器执行失败的时间。UTC时间,RFC3339标准,例如:2018-08-02T15:00:00Z ImageRegistryCredential 名称 类型 是否必须 描述 Server String 是 不带 ‘http://‘ 或 ‘https://‘ 前缀的镜像仓库地址 UserName String 是 镜像仓库用户名 Password String 是 镜像仓库密码 Volume 名称 类型 是否必须 描述 Type String 是 数据卷类型,可选值为:EmptyDirVolume、NFSVolume、ConfigFileVolume三种 Name String 是 数据卷名称 NFSVolume.Server String 否 NFS 服务器地址 NFSVolume.Path String 否 NFS 数据卷路径 NFSVolume.ReadOnly Boolean 否 默认值为 False ConfigFileVolume.ConfigFileToPath ConfigFileToPath[] 否 配置文件路径 EmptyDirVolume.Medium String 否 EmptyDirVolume的存储媒介,默认为空,使用node文件系统;支持 Memory,表示使用内存 ConfigFileToPath 名称 类型 是否必须 描述 Path String 是 相对文件路径 Content String 否 配置文件内容 (32KB) Event 仅作为返回参数 名称 类型 描述 Count Integer 事件计数 FirstTimestamp String 事件起始时间 LastTimestamp String 事件结束时间 Message String 事件消息 Name String 事件的归属对象名 Type String 事件类型,枚举值: Normal,Warning Reason String 事件名 Tag 名称 类型 是否必须 描述 Key String 是 关键字 Value String 否 数值 DNSConfig https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-config 名称 类型 描述 Nameservers String[] DNS 服务器 IP 地址列表 Searches String[] DNS 搜索域列表 Options Option[] 对象选项列表,每个对象由name和value(可选)构成 Option 名称 类型 描述 Name String 对象 name Value String 对象 value Container 名称 类型 是否必须 描述 Commands String[] 否 容器启动命令,上限20,单个String,256个字符 Args String[] 否 容器启动参数,上限10 EnvironmentVars EnvironmentVar[] 否 容器内操作系统的环境变量(Key:Value对,String),上限100。Key 是变量名,Value 是变量值 。 Image String 是 镜像 Name String 是 容器名 Cpu Float 是 CPU,单位:核 Memory Float 是 内存,单位:GiB ImagePullPolicy String 否 镜像拉取策略 VolumeMounts VolumeMount[] 否 数据卷挂载信息,上限16 CurrentState ContainerState 否 当前状态 PreviousState ContainerState 否 上一次状态 RestartCount Integer 否 重启次数 WorkingDir String 否 容器工作目录 Ports Port[] 否 暴露端口+协议,上限100 LivenessProbe LivenessProbe 否 存活探针 ReadinessProbe ReadinessProbe 否 就绪探针 SecurityContext SecurityContext 否 实例运行的安全上下文,更多信息 ContainerState 仅作为返回参数 名称 类型 描述 StartTime Timestamp 容器运行开始时间 State String 容器状态,枚举值:Waiting,Running,Terminated DetailStatus String 状态详情 FinishTime Timestamp 容器运行结束时间 ExitCode Integer 容器运行退出码 Reason String 容器状态 Reason Message String 容器状态信息 Signal Integer 容器状态信号 VolumeMount 名称 类型 是否必须 描述 Name String 是 数据卷名称,同 Volume 中的 Name MountPath String 是 挂载目录,容器的挂载目录下的内容被volume的内容直接覆盖,所以要慎用 ReadOnly Boolean 是 默认值为 False EnvironmentVar 名称 类型 是否必须 描述 Key String 是 变量名,长度[1,128],取值范围:[0-9a-zA-Z]以及下划线 ‘_’,不能以数字开头 Value String 否 变量值,长度[0,256],取值范围不限 FieldRef.FieldPath String 否 变量值引用,目前只支持”status.podIP” Port 名称 类型 描述 Port Integer 端口号 1-65535 Protocol String TCP/UDP SecurityContext 名称 类型 描述 Capability Capability cpu/memory RunAsUser Int ReadOnlyRootFilesystem Bool 目前仅支持:True Capability 名称 类型 描述 Adds String[] 枚举值,目前仅支持:NET_ADMIN ReadinessProbe 名称 类型 描述 ReadinessProbe.HttpGet.Path String HttpGet检测的路径 ReadinessProbe.HttpGet.Port Integer HttpGet检测的端口号 ReadinessProbe.HttpGet.Scheme String HTTP/HTTPS ReadinessProbe.Exec.Commands String[] 容器内检测的命令 ReadinessProbe.TcpSocket.Port Integer TcpSocket检测的端口 注:Exec、HttpGet 和 TcpSocket 三选一 ReadinessProbe.InitialDelaySeconds Integer 检查开始执行的时间,以容器启动完成为起点计算 ReadinessProbe.PeriodSeconds Integer 检查执行的周期,默认为10秒,最小为1秒 ReadinessProbe.SuccessThreshold Integer 从上次检查失败后重新认定检查成功的检查次数阈值(必须是连续成功),默认为1。 ReadinessProbe.FailureThreshold Integer 从上次检查成功后认定检查失败的检查次数阈值(必须是连续失败),默认为3 ReadinessProbe.TimeoutSeconds Integer 检查超时的时间,默认为1秒,最小为1秒 LivenessProbe 名称 类型 描述 LivenessProbe.HttpGet.Path String HttpGet检测的路径 LivenessProbe.HttpGet.Port Integer HttpGet检测的端口号 LivenessProbe.HttpGet.Scheme String HTTP/HTTPS LivenessProbe.Exec.Commands String[] 容器内检测的命令 LivenessProbe.TcpSocket.Port Integer TcpSocket检测的端口 LivenessProbe.InitialDelaySeconds Integer 检查开始执行的时间,以容器启动完成为起点计算 LivenessProbe.PeriodSeconds Integer 检查执行的周期,默认为10秒,最小为1秒 LivenessProbe.SuccessThreshold Integer 从上次检查失败后重新认定检查成功的检查次数阈值(必须是连续成功),默认为1。当前必须为1 LivenessProbe.FailureThreshold Integer 从上次检查成功后认定检查失败的检查次数阈值(必须是连续失败),默认为3 LivenessProbe.TimeoutSeconds Integer 检查超时的时间,默认为1秒,最小为1秒
1934890530796658 2020-03-20 19:18:38 0 浏览量 回答数 0

回答

常见错误处理 错误码 处理方式 1000 一般为语法或者超时引起,如果多次刷新不再出现,则是超时引起,如果仍出现,则语法有问题,请对照文档仔细检查,如分隔符、函数字段类型等 2112 排序表达式中的text_relevance(field)、fieldterm_proximity(field)等文本feature中的field必须在查询的索引包含的源字段中,否则会报错,但不影响搜索结果。 3007 对于API推送系统是有频率限制,请控制好频率重试 4003 可以先按照文档样例,试下签名结果是否一致,判断是否是签名算法问题。如果不是,请检查下参数按照字典序排序后应该是公共参数(大写字母)在前,请求参数(小写字母)在后。另外还有空格等一些编码规则,具体参考授权文档介绍 4007 一般Json字段内容中包含双引号或者不可见字符会导致格式解析失败,请转义或者过滤后重试 4010 TimeStamp参数是有过期时间的,请按照要求格式取当前时间来计算 5001 没有找到对应的用户,一般为ACCESSKEY信息不正确,或者使用区域域名错误(API域名请以应用管理-》基本信息-》API入口为准),请检查修改后重试 5008 服务内部是通过Accesskey来进行用户身份校验的,请确保AccessKey已经开启,您可以通过控制台AccessKey管理入口来创建和删除 6013 start+hit不能超过5000,否则会报错无结果。需要超过5000的请求,请查看下API文档中的SCROLL接口,看是否满足需求 6015 请及时到控制台配额管理处进行QPS峰值的调整,否则超过的请求会被丢弃 6127 除了query子句,其他子句出现的字段都必须配置为属性字段才能使用。请修改应用结构后重试 系统级别(1000-1999) 错误码 错误说明 1000 系统内部错误 1001 没有找到模版 1003 不支持的索引类型 1004 服务暂时不可用,请稍后再试 应用相关(2000-2999) 错误码 错误说明 2001 待查应用不存在 2002 应用已经存在 2003 到达创建应用总限制 2004 应用名不可用。应用名由数字、26个英文字母或下划线组成,长度不超过30位 2005 应用名称没有设定 2006 新应用名称没有设定 2007 备注不超300字 2008 摘要配置参数错误 2009 更新状态失败 2010 应用暂停中 2011 应用冻结中 2012 应用未开启 2013 删除失败,没有此应用 2014 文件上传失败 2016 区域信息没有 2017 此应用并不属于当前区域 2099 当前接口暂时不提供服务。 2101 表达式不存在 2102 表达式名称被占用 2103 到达该应用表达式总数限制 2104 表达式名不可用。表达式名由数字、26个英文字母或下划线组成,长度不超过30位 2105 表达式名称没有设定 2106 新表达式名称没有设定 2107 表达式备注不超过300字 2108 表达式备注格式错误 2109 表达式格式错误 2110 表达式长度超过限制 2111 表达式id未指定 2112 表达式错误 2113 表达式不能为空 2114 操作错误 2201 粗排配置名没有设定 2202 粗排配置名已经存在 2203 粗排配置个数超出限制 2204 粗排配置名错误。只能由数字、26个英文字母或下划线组成 2205 粗排配置名长度超出限制 2206 粗排字段必须是数值型 2207 粗排配置不存在 2208 粗排配置错误,必须包含字段 2209 粗排配置权重错误,必须是-100000到100000之间的非0数值,浮点数精度支持6位 2210 与系统默认粗排配置重名 2211 timeliness()的参数必须是INT类型 2112 排序表达式错误 2551 查询指定的下拉提示规则不存在 文档相关(3000-3999) 错误码 错误说明 3001 文档不能为空 3002 文档大小超过限制 3003 已经到最大文档数 3004 保存文档失败 3005 doc格式错误 3006 文档操作cmd不合法 3007 请求过于频繁 3008 文档总长度太长 3009 没有文档id 3011 在配置RDS或MYSQL数据源后,不支持API推送文档 3012 未找到指定资源 3013 文档推送速率超过应用配额 3014 文档推送速率触发系统限制 3015 单次推送文档个数超过系统限制 3016 文档总数超过应用配额 授权相关(4000-4999) 错误码 错误说明 4001 认证失败 4002 需要设置签名 4003 签名验证失败 4004 需要设置SignatureNonce 4005 SignatureNonce不能重复使用 4006 SignatureNonce验证失败 4007 解析JSON格式失败 4008 用户名称不能为空,请检查域名正确性 4009 需要指定用户标识 4010 时间过期 4011 demo帐号禁止执行的操作 4012 数据表不存在 4013 Timestamp格式错误 4014 需要设置Timestamp 4020 RAM子账户鉴权失败 用户相关(5000-5999) 错误码 错误说明 5001 用户不存在 5002 用户名不正确 5003 需要用户登录 5005 用户未开通OpenSearch服务,请前往阿里云官网开通 5008 用户没有启用ACCESSKEY 5100 用户没有此区域的操作权限 5004 用户未缴费 5005 用户未开通OpenSearch服务,请前往阿里云官网开通 5006 欠费冻结中 5008 用户没有启用ACCESSKEY 5009 用户已经删除 5010 ACCESSKEY 已经禁用 5011 通过邮箱获取到多个用户 5012 CODE_USER_ALIYUN_USER_ID_INVALID,错误信息为空 5013 CODE_USER_ALIYUN_BID_INVALID,错误信息为空 5014 CODE_USER_CLIENT_ID_INVALID,错误信息为空 5015 CODE_USER_ID_INVALID,错误信息为空 5100 用户没有此区域的操作权限 搜索相关(6000-6999) 错误码 错误说明 6001 查询query为空 6002 并不被支持的搜索key关键字 6003 并不被支持的搜索field关键字 6004 复杂查询为空 6005 field无效 6006 请求包含太多应用名 6007 超出多索引查询每个模板中索引总数 6008 请求串语法错误,解析失败 6009 查询子句过长 6010 无效的rerank size 6011 SignatureNonce格式错误 6013 start+hit超过系统限制 6014 因系统繁忙,请求被丢弃 6015 因流量超出配额,请求被丢弃 6016 查询hit数超过系统限制 6017 目前scroll只支持search_type为scan,也就是说设置了参数scroll,就必须设置参数search_type=scan 6018 设置了scroll参数,但没有search_type参数 6019 传入的scroll_id参数解析失败 6020 无效的scroll参数值 6021 scroll请求不支持Aggregate/Sort/Distinct,当传入这些clause时,会报错 6022 scroll_id已经过期失效了 6100 查询词为空 6101 查询的索引字段不存在 6102 Query中的数值范围错误 6103 Filter中的表达式返回值必须为bool类型 6104 Sort中的表达式返回值不能为bool类型 6105 Sort中存在相同的表达式 6106 查询query语句非法 6107 统计函数表达式的返回值不能为bool或者string类型 6108 统计中的范围必须为升序 6109 统计中的范围表达式返回值类型错误 6110 统计函数不存在 6111 不支持的统计函数 6112 Query 子句错误 6113 Filter子句错误 6114 Aggregate子句错误 6115 Sort子句错误 6116 Distinct子句错误 6117 查询中包含未知的子句 6118 语法错误 6119 Distinct子句中的dist_count值错误,应该为大于0的整数 6120 Distinct子句中的dist_times值错误,应该为大于0的整数 6121 Distinct子句中的reserved值错误,应为true/false 6122 Distinct子句缺少distinct_key 6123 Distinct子句中的grade值错误,例如为空,或非数值 6124 Distinct子句中包含distinct个数不对,个数应在(0,2] 6125 Distinct子句中的max_item_count值错误,应该为大于0的整数 6126 Distinct子句中的update_total_hit值错误,应为true/false 6127 请求中包含了未定义的attribute字段 6128 表达式中的二元操作符的两边的表达式结果类型不匹配 6129 表达式中的二元操作符的两边表达式不能同时为常量 6130 二元逻辑运算表达式类型错误,应为bool类型 6131 二元表达式中不支持string类型 6132 二元表达式中不支持数组类型 6133 位操作中的类型错误 6134 常量表达式的返回值类型错误 6300 常量表达式类型应是整数或浮点数 6301 位取反操作数类型必须为整数 6302 取负数操作数必须为数值 6303 逻辑非操作数必须为数值 6304 二元运算操作数类型错误 6305 非法的二元运算符 6306 函数参数类型错误 6307 函数未定义 6308 函数参数个数错误 6309 非法的数组操作 6310 可过滤字段不存在 6311 数组字段被错当作单值使用 6312 单值字段被错当作数组使用 6313 数组字段下标越界(小于0) 6314 不支持的字段类型 6315 索引字段参数不存在 6316 Query中没有指定索引 6317 Filter子句中只能使用一次公式 6318 公式语法解析出错 6500 搜索语法中包含不存在的字段 6501 在线系统没有索引数据 6502 用户query语法错误 6601 一个索引字段只能包含在一个规则中 6602 没有查询词,如default:’’的情况 6603 查询中的索引字段没有在查询分析规则中指定 6604 关键词没有使用引号括起来,如default:xxx,正确为default:’xxx’ 6605 双引号查询不能配置查询分析规则 6607 disable参数格式错误 6608 disable指定关闭的索引字段不存在 6609 disable指定关闭的功能列表不存在 6610 查询分析后的query为空(原query为空,或者全部是stopword) 6611 查询中没有指定索引字段 数据处理相关(7000-7999) 错误码 错误说明 7100 没有错误发生 7101 单个文档过长 7102 文档所属应用的元信息错误(clientid 或 accesskey、应用名或表名等不正确) 7103 HA3 文档格式错误: 字段解析失败 7104 JSON文档格式错误:字段解析失败 7105 JSON 文档格式错误: json非法 7106 JSON 文档格式错误: json非法 7107 不支持的编码 7108 编码转换失败 7109 fields中没有id字段 7110 fields中id定义不合法 7111 fields中包含保留字段 7201 HA3 文档格式错误: cmd 非法(cmd 非 ADD/UPDATE/DELETE) 7202 JSON 文档格式错误: cmd 非法(cmd 非 ADD/UPDATE/DELETE) 7301 主键字段不存在 7302 字段数据类型错误 7303 数组字段相关错误 7401 文档总数超出配额 7402 每日更新文档数超出配额 7403 单次导入的数据大小超出配额 7500 系统内部错误 7501 云梯Hive待同步字段的列号超出了当前数据的列数范围 7502 从Mysql中读取到的主键字段为空,请联系数据库管理员 7503 JsonKeyValueExtractor内容转换错误: Json格式非法 7504 JsonKeyValueExtractor内容转换错误: key不存在 7505 TairLDBExtractor内容转换错误: namespace非法(应为int32类型) 7506 TairLDBExtractor内容转换错误: 从Tair中读取数据失败 7507 MySql实时同步过滤条件格式错误 7508 系统内部错误: 内容转换插件初始化失败 7509 TairLDBExtractor内容转换配置错误:Tair连接失败,请检查configId 或 namespace 是否有效 7510 KVExtractor内容解析错误:KV格式无法解析 7511 OSS 数据读取失败 7512 OSS 内容长度超过限度 7513 OSS 内容解析错误 7514 系统内部错误: OSS LOG 格式不兼容 7515 过滤条件执行错误 7516 字段映射过程中源表字段缺失 7517 StringCatenateExtractor内容转换错误: 源字段不存在 7518 StringCatenateExtractor内容转换错误: 不支持多值字段 7601 任务执行错误 7602 更新app失败 7701 数据清理任务错误:指定过滤字段不存在 7801 文档格式错误 文档错误内部通知(8000-8999) 错误码 错误说明 8001 保存错误信息失败 8002 必要参数缺失 8003 应用不存在 8004 参数错误 模板相关(9000-9999) 错误码 错误说明 9001 用户名为空 9002 应用名为空 9003 模板名不可用。模板名只能由数字、26个英文字母或下划线组成 9004 模板名长度不可超过30位 9005 查询模板信息出错 9006 模板名字已存在 9007 插入模板信息出错 9008 无效的数据 9009 定义的字段数目超过系统允许的最大字段数 9010 此字段保留字段名 9011 字段已存在 9012 索引名称必须以字母开头,由数字、26个英文字母或下划线组成,长度不超过30位,多值字段类型不能为SWS_TEXT或TEXT 9013 不支持数组 9014 不支持主键 9015 未设定主键 9016 主键不唯一 9017 更新信息失败 9018 删除信息失败 9019 包含多个索引字段的搜索字段最多4个 9020 同一个STRING/TEXT类型的索引字段不能进入多个只包含一个字段的搜索字段中 9021 索引名称必须以字母开头,由数字、26个英文字母或下划线组成,长度不超过30个 9022 该表已经关联 9023 索引名不能包含多类型的字段 9100 系统内部错误 9101 该字段超过数量限制 9102 该数据源未被用到 9103 无效的外表连接 9104 最多2级关联 9105 待查模板不存在 9501 用户名为空 9502 应用名为空 9519 未指定模板 9600 系统内部错误 9902 插件字段类型错误 9999 此域名不提供本服务 数据同步相关(10000-) 错误码 错误说明 10001 没有指定的tddl group key,tddl信息获取失败 10002 获取字段失败或者表不存在 10011 连接agg失败 10012 应用里存在doc 10013 应用不是自定义结构 10110 该任务已结束 10010 部分数据源有问题,已经忽略有错误的数据 10014 数据源类型错误 10100 创建任务失败,未结束的任务已经存在 10101 没有指定应用ID 10106 没有指定应用ID 10107 没有指定应用ID 10102 ACTION无效 10112 文档数量超过限制 10201 获取配额列表失败 10202 更新配额失败 10301 参数错误:参数未提供或者格式不正确 10302 时间参数错误 10303 数据源未配置 10304 该表配额超限 10305 OSS参数错误 10306 OSS BUCKET名称无效 10307 OSS 记录类型无效 10308 OSS BUCKET日志功能未开启 10309 存在未完成的任务 10310 不是运行中的应用,无法创建任务 10311 时间范围不合法 10312 应用描述长度超过限制,最多600字 10313 OSS 内容格式不合法 10314 OSS BUCKET所在区域ACL网络不通 10315 OSS BUCKET的地址信息不合法 10330 数据源参数不合法 10350 连接ODPS服务失败 10351 ODPS 返回错误 10400 OSS前缀不合法 10450 字段不存在
保持可爱mmm 2020-03-26 22:06:37 0 浏览量 回答数 0

回答

比尔的回答很好,但是有点过时了。用于存储NULL使用一个或两个字节应用于仅 InnoDB的冗余行格式。由于MySQL 5.0.3 InnoDB使用COMPACT行格式,该格式仅使用一位存储NULL(当然,最小字节是一个字节),因此: NULL所需的空间= CEILING(N / 8)个字节,其中N是一行中NULL列的数量。 0 NULLS = 0字节 1-8 NULLS = 1个字节 9-16 NULLS = 2个字节 17-24 NULLS = 3个字节 等等... 根据有关COMPACT vs REDUNDANT的MySQL官方网站: 紧凑的行格式将行存储空间减少了约20%,但代价是增加了某些操作的CPU使用率。如果您的工作量是典型的工作量,受缓存命中率和磁盘速度的限制,那么紧凑格式可能会更快。 与空字符串或零相比,使用NULL的优势: 1 NULL需要1个字节 1个空字符串需要1个字节(假设VARCHAR) 1个零需要4个字节(假设INT) 您开始在这里看到节省的地方: 8个NULL需要1个字节 8个空字符串需要8个字节 8个零需要32个字节 另一方面,我建议对空字符串或零使用NULL,因为它们更具组织性,可移植性并且需要较少的空间。为了提高性能并节省空间,请专注于使用适当的数据类型,索引和查询,而不要使用怪异的技巧。来源:stack overflow
保持可爱mmm 2020-05-10 19:50:22 0 浏览量 回答数 0

问题

我可以强制/欺骗sp_describe_first_result_set返回is_nullable

我有两个返回相同结果模式的查询。一个具有“ group by”,因此列值是聚合函数(MAX,SUM),但是列名和基础数据类型相同。 我的问题是,当我运行s...
祖安文状元 2020-01-05 15:00:03 3 浏览量 回答数 1

问题

MaxCompute用户指南:SQL:内建函数:聚合函数

聚合函数,其输入与输出是多对一的关系,即将多条输入记录聚合成一条输出值。可以与SQL 中的 group by 语句联用。 COUNT 函数声明: bigint count([distin...
行者武松 2019-12-01 22:03:00 1503 浏览量 回答数 0

问题

《java并发编程实战》安全发布?报错

" 3.5 安全发布3.5.1 不正确的发布 public class Holder { private int n; public Holder(int n) { this.n = n; } public vo...
因为相信,所以看见。 2020-05-25 15:58:32 18 浏览量 回答数 1

回答

调用 CreateCluster 创建一个新的 Serverless Kubernetes 集群实例。 请求信息 请求行 RequestLine POST /clusters HTTP/1.1 特有请求头 RequestHead 无,请参考公共请求头部。 请求体 RequestBody { "cluster_type": "Ask", "name": "集群名称", "region_id": "地域", "zoneid": "可用区", "nat_gateway": "true", //是否创建NAT网关 "private_zone": "true", //是否开启privateZone用于服务发现 "vpc_id": "VPC ID", //不填则自动创建专有网络VPC "tags": "给集群打tag标签, 数组格式对象", "vswitch_id": "交换机ID" } 表 1. 请求体解释 名称 类型 必须 描述 cluster_type string 是 集群类型。 name string 是 集群名称, 集群名称可以使用大小写英文字母、中文、数字、中划线。 private_zone bool 是 是否开启 PrivateZone 用于服务发现,取值为 true 或者 false。请参见Serverless集群基于云解析 PrivateZone 的服务发现。 region_id string 是 集群所在地域ID。 zoneid string 是 所属地域的可用区。 vswitch_id string 否 交换机 ID,可空。若不设置,系统会自动创建交换机,系统自定创建的交换机网段为 192.168.0.0/16。 tags list 否 给集群打 tag 标签: key:标签名称。 value:标签值。 nat_gateway bool 否 是否创建 NAT 网关。取值为 true 或者 false。如果不设置,系统默认为 false。 vpc_id string 否 VPC ID,可空。如果不设置,系统会自动创建VPC,系统创建的 VPC 网段为 192.168.0.0/16。 说明 vpcId 和 vswitchid 只能同时为空或者同时都设置对应的值。 返回信息 返回行 ResponseLine HTTP/1.1 202 Accepted 特有返回头 ResponseHead 无,请参考公共返回头部。 表 2. 返回体 ResponseBody 名称 类型 描述 cluster_id string 集群实例ID。 request_id string 请求ID。 task_id string 任务ID。系统自动分配,用户查询任务状态。 示例 请求示例 POST /clusters HTTP/1.1 <公共请求头> { "cluster_type":"ASK", "name":"my-test-Kubernetes-cluster", "region_id":"cn-beijing", "tags":[], "vpcid":"vpc-2zegvl5etah5requ0****", "vswitch_ids":["vsw-2ze48rkq464rsdts1****"] } 返回示例 HTTP/1.1 202 Accepted <公共响应头> { "cluster_id": "cb95aa626a47740afbf6aa099b650****", "request_id": "687C5BAA-D103-4993-884B-C35E4314A1E1", "task_id": "T-5a54309c80282e39ea00002f", "instanceId": "cb95aa626a47740afbf6aa099b650****" }
1934890530796658 2020-03-31 21:00:55 0 浏览量 回答数 0

回答

iot.prod.CreateProductTopicFailed 创建产品的Topic类失败。 请确认入参信息正确,然后重试。 iot.prod.InvalidAliyunCommodityCode 入参AliyunCommodityCode值错误。 AliyunCommodityCode的可选值只有iothub_senior和iothub。 iot.prod.InvalidFormattedCatId 入参CategoryId(产品的设备类型)错误。 iot.prod.InvalidFormattedProductkey 入参产品ProductKey格式错误。 请核对输入的ProductKey值。 iot.prod.InvalidFormattedProductName 入参产品名称格式错误。 产品名应满足以下限制:由中文、英文字母、数字和下划线(_)组成,长度为4-30位(一个中文字符占两位)。 iot.prod.LongProductDesc 产品描述字符数超出限定值。 描述信息应在100字符以内。 iot.prod.InvalidNodeType 产品的节点类型错误。 节点类型支持的可选值: 0:设备 1:网关 iot.prod.NotExistedProduct 产品不存在。 输入的ProductKey值在当前账号下不存在。 iot.prod.NotOpenID2Service 没有开通ID²服务。 该产品在创建时没有开通ID²安全认证服务。ID²安全认证服务只能在创建产品时开通,并且,产品创建成功后,不能更改是否使用ID²认证的状态。 iot.prod.NotSeniorProduct 产品不是高级版产品。 iot.prod.NullProductKey 入参产品ProductKey不能为空。 iot.prod.NullProductName 入参产品名称不能为空。 iot.prod.ProductCountExceedMax 产品总数已超过最大限制数量。 一个阿里云账号下最多可有1,000个产品。 iot.prod.QueryDeviceCountActionError 查询产品下的设备总数失败。 请确认入参信息正确,然后重试。 iot.prod.QueryProductAbilitiesFailed 获取产品功能失败。 请确认入参信息是否正确,如Identifier值等。 iot.prod.QueryProductAbilityFailed 查询产品功能失败。 请确认入参信息是否正确,如Identifier值等。 iot.prod.QueryProductListActionError 获取产品列表数据失败。 请确认入参信息正确,然后重试。 iot.prod.UpdateProductFailed 更新产品信息失败。 请确认入参信息正确,然后重试。 设备(Device)相关错误码 以iot.device开头的错误码为设备相关错误码。 错误码 描述 iot.device.AddTopoRelationFailed 添加拓扑关系失败。 请确认入参信息正确,然后重试。 iot.device.AlreadyExistedDeviceName 设备名称已经存在。 设备名称需在产品维度唯一。 iot.device.ApplyManyDevicesFailed 申请批量创建设备失败。 请确认入参信息正确,然后重试。 iot.device.CreateDeviceFailed 创建设备失败。 请确认入参信息正确,然后重试。 iot.device.CreateDeviceTaskIsRunning 创建设备的申请任务还在执行中。 iot.device.DeviceApplyIsNotFound 申请设备的申请单不存在。 请确认输入的ApplyId值。其值需与您调用BatchCheckDeviceNames返回的ApplyId值一致。 iot.device.DeviceCountExceeded 批量申请的设备数量超过最大值。 单次调用,最多批量注册1,000 个设备。 iot.device.DeleteDeviceFailed 删除设备失败。 请确认入参信息正确,然后重试。 iot.device.DeleteDevicePropertyFailed 删除设备属性失败。 请确认入参信息正确,然后重试。 iot.device.DisableDeviceFailed 禁用设备失败。 请确认入参信息正确,然后重试。 iot.device.EnableDeviceFailed 启用设备失败。 请确认入参信息正确,然后重试。 iot.device.InactiveDevice 设备未激活,即物理设备从未连接物联网平台。 iot.device.InvalidFormattedApplyId 创建设备的申请单(ApplyId)错误。 其值需与您调用BatchCheckDeviceNames返回的ApplyId值一致。 iot.device.IncorrentDeviceApplyInfo 设备申请信息错误。 请确认入参信息,如ApplyId等。 iot.device.InvalidFormattedDeviceName 设备名称格式错误。 设备名称长度为4-32个字符,可以包含英文字母、数字和特殊字符:连字符(-)、下划线(_)、at符号(@)、点号(.)、和英文冒号(:)。 iot.device.InvalidFormattedDevicePropertyKey 设备属性标识符格式错误。 请查看相关API文档中,关于入参属性格式的描述。 iot.device.InvalidFormattedDevicePropertiesString 入参设备属性格式错误。 请查看相关API文档中,关于入参属性格式的描述。 iot.device.InvalidIoTId 设备ID错误。 请调用QueryDeviceDetail或QueryDevice查看正确的IotId值,或用ProductKey与DeviceName组合代替IotId。 iot.device.InvalidTimeBucket 指定的时间区间不合法。 请根据API文档中描述正确设置参数。 Asc为0倒序查询时,StartTime必须大于EndTime。 Asc为1正序查询时,StartTime必须小于EndTime。 iot.device.InvokeThingServiceFailed 调用设备服务失败。 请检查输入参数是否正确,如Args的参数格式和取值等。 iot.device.LongDevicePropertiesString 入参设备属性长度超过最大值。 请查看相关API文档的限制说明。 iot.device.NoneDeviceNameElement 设备名称列表为空。 iot.device.NoneDeviceProperties 没有有效的设备属性。 请核对传入的属性Identifier是否与TSL中定义的一致。 iot.device.NotExistedDevice 设备不存在。 传入的设备IotId、ProductKey或DeviceName值错误。请调用QueryDeviceDetail或QueryDevice查看正确值。 iot.device.NullApplyId 创建设备的申请ID(ApplyId)不能为空。 iot.device.NullDeviceName 设备名称不能为空。 iot.device.NullDevicePropertyKey 设备属性名称不能为空。 iot.device.NullDevicePropertiesString 入参设备属性不能为空。 iot.device.QueryDeviceApplyActionError 查询设备申请单信息出错。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceAttrDataHistoryFailed 获取设备属性数据历史记录失败。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceAttrStatusFailed 获取设备属性状态信息失败。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceEventHistoryFailed 获取设备事件调用记录失败。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceListActionError 查询设备列表失败。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceServiceHistoryFailed 获取设备服务调用记录失败。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceStatisticsFailed 查询设备统计信息失败。 请确认入参信息正确,然后重试。 iot.device.QueryDeviceStatusFailed 查询设备状态信息失败。 请确认入参信息正确,然后重试。 iot.device.QueryTopoRelationFailed 查询拓扑关系失败。 请确认入参信息是否正确。如,传入的PageSize值大于限定值50会报此错误。 iot.device.RemoveTopoRelationFailed 移除拓扑关系失败。 请确认入参信息正确,然后重试。 iot.device.SaveOrUpdateDevicePropertiesFailed 新增或者修改设备属性失败。 请确认入参信息正确,然后重试。 iot.device.SetDevicePropertyFailed 设置设备属性失败。 请检查入参Items的参数值和格式是否正确,指定的属性是否是读写型。 iot.device.TooManyDevicePropertiesPerTime 传入的属性个数超过限定值。 请参见相关API文档限制说明。 iot.device.TopoRelationCountExceeded 拓扑关系数量过多。 请参见使用限制中网关与子设备数量限制。 iot.device.VerifyDeviceFailed 验证设备失败。 请确认入参信息正确,然后重试。 设备分组(Group)相关错误码 以iot.group开头的错误码为设备分组相关错误码。 错误码 描述 iot.group.NullGroupId 入参分组ID没有赋值。 iot.group.DeleteGroupFailed 删除分组失败。 请确认入参信息正确,然后重试。 iot.group.SubGroupNotNull 分组下有子分组。 当分组下有子分组时,不能删除分组,需先删除子分组。 iot.group.InvalidGroupName 分组名称不合法。 分组名称可包含中文汉字、英文字母、数字和下划线(_)。长度范围 4 - 30 字符(一个中文汉字占二个字符)。 iot.group.GroupNameExisted 分组名称已存在。 iot.group.QueryGroupInfoFailed 查询分组详情失败。 请确认入参信息正确,然后重试。 iot.group.NotExistedGroup 分组不存在。 请确认GroupId值。 iot.group.QueryGroupCountFailed 查询分组数量失败。 请确认入参信息正确,然后重试。 iot.group.QueryGroupListFailed 查询分组列表失败。 请确认入参信息正确,然后重试。 iot.group.BindGroupRelationFailed 绑定分组关系失败。 请确认入参信息正确,然后重试。 iot.group.UpdateGroupFailed 修改分组信息失败。 请确认入参信息正确,然后重试。 iot.group.QueryGroupTreeFailed 获取分组关系结构失败。 请确认入参信息正确,然后重试。 iot.group.CreateGroupFailed 创建分组失败。 请确认入参信息正确,然后重试。 iot.group.InvalidFormattedTagString 标签格式不合法。 标签数据为JSON格式。由标签的tagKey和tagValue组成,tagKey和tagValue均不能为空。多个标签以英文逗号间隔。如,[{"tagKey":"h1","tagValue":"rr"},{"tagKey":"7h","tagValue":"rr"}]。 iot.group.TagCountExceedMax 标签数量超过最大值。 每个分组最多可有100个标签。 iot.group.GroupCountExceedMax 分组数量超过最大值。 一个分组最多可包含100个子分组。 一个设备最多可以被添加到10个分组中。 iot.group.SetGroupTagFailed 设置分组标签信息失败。 请确认入参信息正确,然后重试。 iot.group.QueryGroupTagFailed 查询分组标签信息失败。 请确认入参信息正确,然后重试。 iot.group.LongGroupDescError 分组描述字段过长。 分组描述长度限制为100字符(一个中文汉字占一个字符)。 iot.group.QueryGroupRelationFailed 查询分组关系失败。 请确认入参信息正确,然后重试。 iot.group.GroupLevelExceedingLimitError 分组层级超过限制。 分组只支持三级嵌套,即分组>子分组>子子分组。 消息相关错误码 以iot.messagebroker开头的错误码为消息相关错误码。此类错误码主要出现在调用消息通信相关API、设备影子相关API和规则引擎相关API失败时。(规则引擎相关API调用失败错误码,请见本文档下一章节。) 错误码 描述 iot.messagebroker.CreateTopicRouteFailed 创建Topic之间消息路由失败。 请确认入参信息正确,然后重试。 iot.messagebroker.CreateTopicTemplateException 创建Topic类过程发生异常。 请确认入参信息正确,然后重试。 iot.messagebroker.CreateTopicTemplateFailed 创建Topic类失败。 请确认入参信息正确,然后重试。 iot.messagebroker.DeleteTopicTemplateException 删除Topic类过程发生异常。 请确认入参信息正确,然后重试。 iot.messagebroker.DeleteTopicTemplateFailed 删除Topic类失败。 请确认入参信息正确,然后重试。 iot.messagebroker.DestTopicNameArraySizeIsLarge 同一消息源Topic配置的路由目标Topic数量超过最大限制数。 一个源Topic最多可对应100个目标Topic。 iot.messagebroker.DeleteTopicRouteFailed 删除指定Topic间的路由失败。 请确认入参信息正确,然后重试。 iot.messagebroker.DesireInfoInShadowMessageIsNotJson 设备影子中的desire信息不是JSON格式。 iot.messagebroker.DesireValueIsNullInShadowMessage 设备影子中的desire信息值为空。 iot.messagebroker.ElementKeyOrValueIsNullInDesire desire信息包含有空的属性标识符或者属性值。 iot.messagebroker.ElementKeyOrValueIsNullInReport report信息包含有空的属性标识符或者属性值。 iot.messagebroker.HALFCONN 由于设备为半连接状态导致失败。 iot.messagebroker.InvalidFormattedSrcTopicName 消息源Topic名称格式错误。 可在控制台设备详情页的Topic列表下查看设备的Topic。 iot.messagebroker.InvalidFormattedTopicName Topic格式错误。 可在控制台设备详情页的Topic列表下查看设备的Topic。 iot.messagebroker.InvalidFormattedTopicTemplateId Topic类ID格式错误。 可调用QueryProductTopic查看TopicId。 iot.messagebroker.InvalidTimeoutValue 超时时间参数设置有误。 请参见相关API文档查看时间设置方法。 iot.messagebroker.InvalidTopicTemplateOperationValue Topic类的操作权限值错误。操作权限取值: SUB:订阅。 PUB:发布。 ALL:发布和订阅。 iot.messagebroker.InvalidVersionValueInShadowMessage 设备影子中的version值错误。 iot.messagebroker.MethodValueIsNotUpdate 设备影子中的method信息值不是update。 iot.messagebroker.MessageContentIsNotBase64Encode 消息内容没有经过base64编码。 iot.messagebroker.NoneElementInDesire desire信息中没有属性。 iot.messagebroker.NoneElementInReport report信息中没有属性。 iot.messagebroker.NoneElementDestTopicNameInArray 目标Topic列表中没有元素。 iot.messagebroker.NotFoundDesireInShadowMessage 设备影子的state信息中没有desire信息。 iot.messagebroker.NotFoundMethodInShadowMessage 设备影子没有method信息。 iot.messagebroker.NotFoundReportInShadowMessage 设备影子中没有report信息。 iot.messagebroker.NotFoundStateInShadowMessage 设备影子中没有state信息。 iot.messagebroker.NotFoundVersionOrNullVersionValue 缺少version信息或者version值为空。 iot.messagebroker.NotMatchedProductKeyWithSrcTopicOwner 消息源Topic对应的产品ID不属于当前用户。 iot.messagebroker.NullMessageContent 消息内容不能为空。 iot.messagebroker.NullShadowMessage 设备影子内容不能为空。 iot.messagebroker.NullSrcTopicName 消息源Topic名称不能为空。 iot.messagebroker.NullTopicName Topic不能为空。 iot.messagebroker.NullTopicTemplateId Topic类ID不能为空。 iot.messagebroker.NullTopicTemplateOperation Topic类的操作权限不能为空。 iot.messagebroker.OFFLINE 由于设备离线导致失败。 iot.messagebroker.PublishMessageException 发送消息过程出现异常。 请确认入参信息正确,然后重试。 iot.messagebroker.PublishMessageFailed 发送消息失败。 请确认入参信息正确,然后重试。 iot.messagebroker.QueryDeviceShadowActionError 查询设备影子失败。 请确认入参信息正确,然后重试。 iot.messagebroker.QueryProductTopicListActionError 获取Topic类列表失败。 请确认入参信息正确,然后重试。 iot.messageborker.QueryTopicReverseRouteTableListActionError 获取消息反向路由列表(即消息源Topic列表)失败。 请确认入参信息正确,然后重试。 iot.messageborker.QueryTopicRouteTableListActionError 获取消息路由列表失败。 请确认入参信息正确,然后重试。 iot.messagebroker.QueryTopicTemplateActionError 查询Topic类失败。 请确认入参信息正确,然后重试。 iot.messagebroker.QueryTopicTemplateException 获取Topic类过程发生异常。 请确认入参信息正确,然后重试。 iot.messagebroker.RateLimit 由于限流导致失败。 请参见使用限制。 iot.messagebroker.ReportInShadowMessageIsNotJson 设备影子中的state信息中的report信息不是JSON格式。 iot.messagebroker.RrpcException RRPC发送消息过程出现异常。 请确认入参信息正确,然后重试。 iot.messagebroker.RrpcFailed RRPC发送消息失败。 请确认入参信息正确,然后重试。 iot.messagebroker.ShadowMessageIsNotJson 设备影子不是JSON格式。 iot.messagebroker.ShadowMessageLengthIsLarge 设备影子的长度超过最大限制。 设备影子文档的大小限制16 KB。 iot.messagebroker.TIMEOUT 由于超时导致失败。 iot.messagebroker.TooManyElementInDesire desire信息中包含的属性总数超过最大限定数。 设备影子JSON文档的属性数量限制为128。 iot.messagebroker.TooManyElementInReport report信息包含的属性总数超过限定最大数。 设备影子JSON文档的属性数量限制为128。 iot.messagebroker.TopicAlreadyFound 同一产品下Topic类名称重复。 iot.messagebroker.TopicTemplateCountExceedMax 产品的Topic类数量超过最大值。 一个产品最多可以定义50个Topic类。 iot.messagebroker.TopicTemplateIsNotFound Topic类不存在。 可调用QueryProductTopic查看产品的Topic类。 iot.messagebroker.UpdateDeviceShadowMessageFailed 更新设备影子失败。 请确认入参信息正确,然后重试。 iot.messagebroker.UpdateTopicTemplateException 更新Topic类过程发生异常。 请确认入参信息正确,然后重试。 iot.messagebroker.UpdateTopicTemplateFailed 更新Topic类失败。 请确认入参信息正确,然后重试。 规则相关错误码 以iot.rule和iot.ruleng开头的错误码,及少量iot.messagebroker开头的错误码,是规则引擎相关错误码。 提示出现异常或失败时,请确认入参信息正确,然后重试。 错误码 描述 iot.rule.CreateRuleException 创建规则过程发生异常。 请确认入参信息正确,然后重试。 iot.rule.DeleteRuleFailed 删除规则失败。 请确认入参信息正确,然后重试。 iot.rule.IncorrentRuleActionId 规则动作ID错误。 可调用ListRuleActions查看规则动作ID。 iot.rule.IncorrentRuleActionType 规则动作类型错误。 规则动作类型参数Type支持可选值: DATAHUB:DataHub ONS:消息队列(RokectMQ) MNS:消息服务 FC:函数计算 OTS:表格存储 说明 数据格式为二进制的规则(即规则的DataType参数是BINARY)不支持转发数据至OTS(表格存储)。 REPUBLISH:另一个物联网平台Topic。 iot.rule.IncorrentRuleId 规则ID错误。 iot.rule.NullForwardDestForRule 转发数据目的地不能为空。 Configuration中的具体配置方法,请参见CreateRuleAction。 iot.rule.NullSqlForRule 规则的SQL语句不能为空。 iot.rule.NotFoundRule 规则不存在。 请输入正确的规则ID (RuleId)。可调用ListRule查看账号下所有规则的RuleId。 iot.rule.NotFoundRuleAction 规则动作不存在。 请输入正确的规则动作ID (ActionId)。可调用ListRuleActions查看某个规则下的所有ActionId。 iot.rule.ParseRuleActionConfigError 无法正常解析规则动作的配置。 请确认入参信息正确,然后重试。 iot.rule.QueryRuleActionListError 查询规则动作列表失败。 请确认入参信息正确,然后重试。 iot.rule.QueryRulePageActionError 分页获取规则列表失败。 请确认入参信息正确,然后重试。 iot.rule.RuleActionIsAlreadyCreated 已存在相同的规则动作。 iot.rule.RuleCountExceedMax 规则总数超过最大限制数。 单账号最多可以设置1000条规则。 iot.rule.RuleNameIsAlreadyExisted 规则名称已经存在。 iot.rule.StartRuleFailed 启动规则失败。 请确认入参信息正确,然后重试。 iot.rule.StopRuleFailed 停止规则失败。 请确认入参信息正确,然后重试。 iot.rule.TooManyRuleAction 规则动作数量超过最大限制。 一条规则中转发数据的操作不能超过10个。 iot.rule.UpdateRuleFailed 更新规则失败。 请确认入参信息正确,然后重试。 iot.ruleng.CreateRuleActionFailed 创建规则动作失败。 请确认入参信息正确,然后重试。 iot.ruleng.DeleteRuleActionFailed 删除规则动作失败。 请确认入参信息正确,然后重试。 iot.ruleng.IncorrectType 应用规则的Topic类型错误。 TopicType支持的可选值: 0:系统Topic 1:自定义Topic 2:设备状态消息Topic iot.ruleng.IncorrectSysTopic 错误的系统Topic。 可在控制台设备详情页的Topic列表页签下查看正确的Topic。 iot.ruleng.InvalidRamRole 非法的RAM角色。 请登录RAM控制台查看角色信息。 iot.ruleng.QueryRuleActionFailed 获取规则动作失败。 请确认入参信息正确,然后重试。 iot.ruleng.RuleActionConfigurationIsNotJson 规则动作配置不是JSON格式。 参数Configuration的值必须是正确的JSON格式。具体请参见CreateRuleAction。 iot.ruleng.RuleAlreadyIsStarted 规则是已启动状态。 iot.ruleng.NullRamRoleArn roleArn不能为空。 iot.ruleng.NullRamRoleName roleName不能为空。 iot.ruleng.NullRuleActionConfig 规则动作配置(参数Configuration)不能为空。 iot.ruleng.NullRuleActionType 规则动作类型(参数Type)不能为空。 iot.messagebroker.IncorrectRuleSql 规则的SQL配置错误。 请根据CreateRule说明配置SQL。 iot.messagebroker.QueryRuleConfigActionException 获取规则配置信息过程出现异常。 请确认入参信息正确,然后重试。 以下表格分别列举消息转发目标设置失败的特有错误码。 表 1. 目标为REPUBLISH(另一个IoT Topic)的错误码 错误码 描述 iot.messagebroker.InvalidFormattedTopicName Topic格式错误。 可在控制台设备详情页的Topic列表页签下查看正确的Topic格式。 iot.prod.NotExistedProduct 产品不存在。 请确认输入的ProductKey正确,并该产品属于当前阿里云账号。 iot.common.QueryProductActionError 查询产品失败。 请确认入参信息正确,然后重试。 iot.ruleng.IncorrectSysTopic 系统Topic错误。 可在控制台设备详情页的Topic列表页签下查看正确的Topic。 iot.messagebroker.NullTopicName Topic名称不能为空。 表 2. 目标为DATAHUB(DataHub)的错误码 错误码 描述 iot.ruleng.IncorrectRegionName regionName值错误。 iot.ruleng.NullProjectOfDatahub DataHub的projectName不能为空。 iot.ruleng.NullTopicInDatahubProject DataHub产品下的project中topicName不能为空。 iot.ruleng.EmptySchemaNameOfTopic 目标DataHub Topic的Schema的名称name值不能为空。 iot.ruleng.EmptySchemaTypeOfTopic 目标DataHub Topic的Schema的类型type值不能为空。 iot.ruleng.EmptySchemaValueOfTopic 目标DataHub Topic的Schema值value不能为空。 iot.ruleng.NullOrEmptySchemaOfTopic 目标DataHub Topic的Schema不能为空。 iot.ruleng.NotFoundProjectInDataHub DataHub中不存在此项目(project)。 请在DataHub中确认项目名称是否正确。 iot.ruleng.IncorrectSchemaValueOfTopic 目标DataHub Topic的Schema值错误。 表 3. 目标为OTS(表格存储)的错误码 错误码 描述 iot.ruleng.NullOtsInstanceName 表格存储的实例名称不能为空。 iot.ruleng.NullTableNameInOtsInstance 表格存储中实例的表名不能为空。 iot.ruleng.NullPrimaryKeyInOtsTable 表格存储中表的主键不能为空。 iot.ruleng.NullPrimaryKeyNameInOts 主键的名称不能为空。 iot.ruleng.NullPrimaryKeyValueInOts 主键的值不能为空。 iot.ruleng.IncorrectPrimaryKeyValueInOtsTable 表格存储中主键值错误。 请在表格存储中,查看您创建数据表时定义的主键。 表 4. 目标为MNS(消息服务)的错误码 错误码 描述 iot.ruleng.NullTopicNameInMns 消息服务中的主题不能为空。 iot.ruleng.NotFoundTopicInMns 消息服务中不存在此主题。 请在消息服务中,确认主题(Topic)名称。 iot.ruleng.QueryMnsTopicListActionError 获取消息服务主题列表失败。 请确认入参信息正确,然后重试。 表 5. 目标为FC(函数计算)的错误码 错误码 描述 iot.ruleng.NullServiceNameInFc 函数计算服务名称为空。 iot.ruleng.NullFunctionNameInFc 函数计算函数名称为空。 iot.ruleng.NotFoundServiceInFc 函数计算服务不存在。 请在函数计算中,确认正确的服务名称。 表 6. 目标为ONS(消息队列)的错误码 错误码 描述 iot.messagebroker.NullTopicName 消息队列中接收消息的Topic不能为空。 数据开发API相关错误码 错误码 描述 iot.dap.noServeJobExit 数据开发服务API对应的任务不存在。 iot.dap.serveApiPathRepetition 服务API接口地址重复,即传入ApiPath已存在。 iot.dap.serveApiInvalidParam 调用服务API的参数检查不通过。 iot.dap.serveApiPublishStatusError 请先通过测试后,再发布任务。 iot.dap.serveApiDeleteStatusError 已发布的任务不可删除。 iot.dap.serveApiPublishedNotEditable 已发布的任务不可编辑。 iot.dap.folderHasServeApiPublished 存在已发布的服务API,不可删除文件夹。 iot.dap.serveApiNoPublished 服务API不在发布状态,无法回滚。 iot.dap.duplicateTableNameError 资源表名称重复。 iot.dap.serveApiAlreadyPublished 服务API已发布。 iot.dap.serveApiPathIsEmpty 服务API接口地址不能为空。 iot.dap.serveApiSqlTemplateError SQL模板信息异常,请校验并更新后,再尝试调用服务。 iot.dap.serveApiSqlInvokeParamError SQL参数错误,类型与值不匹配。 iot.dap.syncStartPipelineError 任务启动失败。 iot.dap.methodTimeout 接口调用超时。
保持可爱mmm 2020-03-27 15:53:19 0 浏览量 回答数 0

问题

人工智能图像类API参考数据格式是什么?

图片格式说明 目前图片支持如下格式: Windows bitmaps - *.bmpJPEG 文件 - .jpeg, .jpg, *.jpeJPEG 2000 文件 - *.jp2Portable Network Grap...
nicenelly 2019-12-01 21:04:23 1104 浏览量 回答数 0

问题

Python-SDK之如何实现出错处理?

在程序运行过程中,如果遇到错误,Python SDK会抛出相应的异常。 一共有三类异常:ClientError、RequestError和ServerError,它们都是OssErro...
青衫无名 2019-12-01 21:41:08 1329 浏览量 回答数 0

问题

Kubernetes API 参考  集群 API 列表  创建Kubernetes集群

创建一个新的 Kubernetes 集群实例,并新建指定数量的节点。 请求信息 请求行 RequestLinePOST /clusters HTTP/1.1 特有请求头 RequestHead 无,请参...
青蛙跳 2019-12-01 21:37:34 708 浏览量 回答数 0

问题

PHP MySQL 创建数据库和表

     数据库存有一个或多个表。      创建数据库 CREATE DATABASE 语句用于在 MySQL 中创建数据库。 语法 CREATE DATABASE database_name 为了让 PHP 执行上...
ethnicity 2019-12-01 22:08:21 8427 浏览量 回答数 0

回答

本文主要介绍Java中的自动拆箱与自动装箱的有关知识。 基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型。它们是我们编程中使用最频繁的类型。 Java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化。 Java基本类型共有八种,基本类型可以分为三类: 字符类型char 布尔类型boolean 数值类型byte、short、int、long、float、double。 数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。 Java中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。 实际上,Java中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。 基本数据类型有什么好处 我们都知道在Java语言中,new一个对象是存储在堆里的,我们通过栈中的引用来使用这些对象;所以,对象本身来说是比较消耗资源的。 对于经常用到的类型,如int等,如果我们每次使用这种变量的时候都需要new一个Java对象的话,就会比较笨重。所以,和C++一样,Java提供了基本数据类型,这种数据的变量不需要使用new创建,他们不会在堆上创建,而是直接在栈内存中存储,因此会更加高效。 整型的取值范围 Java中的整型主要包含byte、short、int和long这四种,表示的数字范围也是从小到大的,之所以表示范围不同主要和他们存储数据时所占的字节数有关。 先来个简答的科普,1字节=8位(bit)。java中的整型属于有符号数。 先来看计算中8bit可以表示的数字: 最小值:10000000 (-128)(-2^7) 最大值:01111111(127)(2^7-1) 整型的这几个类型中, byte:byte用1个字节来存储,范围为-128(-2^7)到127(2^7-1),在变量初始化的时候,byte类型的默认值为0。 short:short用2个字节存储,范围为-32,768 (-2^15)到32,767 (2^15-1),在变量初始化的时候,short类型的默认值为0,一般情况下,因为Java本身转型的原因,可以直接写为0。 int:int用4个字节存储,范围为-2,147,483,648 (-2^31)到2,147,483,647 (2^31-1),在变量初始化的时候,int类型的默认值为0。 long:long用8个字节存储,范围为-9,223,372,036,854,775,808 (-2^63)到9,223,372,036, 854,775,807 (2^63-1),在变量初始化的时候,long类型的默认值为0L或0l,也可直接写为0。 超出范围怎么办 上面说过了,整型中,每个类型都有一定的表示范围,但是,在程序中有些计算会导致超出表示范围,即溢出。如以下代码: int i = Integer.MAX_VALUE; int j = Integer.MAX_VALUE; int k = i + j; System.out.println("i (" + i + ") + j (" + j + ") = k (" + k + ")"); 输出结果:i (2147483647) + j (2147483647) = k (-2) **这就是发生了溢出,溢出的时候并不会抛异常,也没有任何提示。**所以,在程序中,使用同类型的数据进行运算的时候,一定要注意数据溢出的问题。 包装类型 Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。 包装类均位于java.lang包,包装类和基本数据类型的对应关系如下表所示 基本数据类型包装类byteBytebooleanBooleanshortShortcharCharacterintIntegerlongLongfloatFloatdoubleDouble 在这八个类名中,除了Integer和Character类以后,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写即可。 为什么需要包装类 很多人会有疑问,既然Java中为了提高效率,提供了八种基本数据类型,为什么还要提供包装类呢? 这个问题,其实前面已经有了答案,因为Java是一种面向对象语言,很多地方都需要使用对象而不是基本数据类型。比如,在集合类中,我们是无法将int 、double等类型放进去的。因为集合的容器要求元素是Object类型。 为了让基本类型也具有对象的特征,就出现了包装类型,它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。 拆箱与装箱 那么,有了基本数据类型和包装类,肯定有些时候要在他们之间进行转换。比如把一个基本数据类型的int转换成一个包装类型的Integer对象。 我们认为包装类是对基本类型的包装,所以,把基本数据类型转换成包装类的过程就是打包装,英文对应于boxing,中文翻译为装箱。 反之,把包装类转换成基本数据类型的过程就是拆包装,英文对应于unboxing,中文翻译为拆箱。 在Java SE5之前,要进行装箱,可以通过以下代码: Integer i = new Integer(10); 自动拆箱与自动装箱 在Java SE5中,为了减少开发人员的工作,Java提供了自动拆箱与自动装箱功能。 自动装箱: 就是将基本数据类型自动转换成对应的包装类。 自动拆箱:就是将包装类自动转换成对应的基本数据类型。 Integer i =10; //自动装箱 int b= i; //自动拆箱 Integer i=10 可以替代 Integer i = new Integer(10);,这就是因为Java帮我们提供了自动装箱的功能,不需要开发者手动去new一个Integer对象。 自动装箱与自动拆箱的实现原理 既然Java提供了自动拆装箱的能力,那么,我们就来看一下,到底是什么原理,Java是如何实现的自动拆装箱功能。 我们有以下自动拆装箱的代码: public static void main(String[]args){ Integer integer=1; //装箱 int i=integer; //拆箱 } 对以上代码进行反编译后可以得到以下代码: public static void main(String[]args){ Integer integer=Integer.valueOf(1); int i=integer.intValue(); } 从上面反编译后的代码可以看出,int的自动装箱都是通过Integer.valueOf()方法来实现的,Integer的自动拆箱都是通过integer.intValue来实现的。如果读者感兴趣,可以试着将八种类型都反编译一遍 ,你会发现以下规律: 自动装箱都是通过包装类的valueOf()方法来实现的.自动拆箱都是通过包装类对象的xxxValue()来实现的。 哪些地方会自动拆装箱 我们了解过原理之后,在来看一下,什么情况下,Java会帮我们进行自动拆装箱。前面提到的变量的初始化和赋值的场景就不介绍了,那是最简单的也最容易理解的。 我们主要来看一下,那些可能被忽略的场景。 场景一、将基本数据类型放入集合类 我们知道,Java中的集合类只能接收对象类型,那么以下代码为什么会不报错呢? List<Integer> li = new ArrayList<>(); for (int i = 1; i < 50; i ++){ li.add(i); } 将上面代码进行反编译,可以得到以下代码: List<Integer> li = new ArrayList<>(); for (int i = 1; i < 50; i += 2){ li.add(Integer.valueOf(i)); } 以上,我们可以得出结论,当我们把基本数据类型放入集合类中的时候,会进行自动装箱。 场景二、包装类型和基本类型的大小比较 有没有人想过,当我们对Integer对象与基本类型进行大小比较的时候,实际上比较的是什么内容呢?看以下代码: Integer a=1; System.out.println(a==1?"等于":"不等于"); Boolean bool=false; System.out.println(bool?"真":"假"); 对以上代码进行反编译,得到以下代码: Integer a=1; System.out.println(a.intValue()==1?"等于":"不等于"); Boolean bool=false; System.out.println(bool.booleanValue?"真":"假"); 可以看到,包装类与基本数据类型进行比较运算,是先将包装类进行拆箱成基本数据类型,然后进行比较的。 场景三、包装类型的运算 有没有人想过,当我们对Integer对象进行四则运算的时候,是如何进行的呢?看以下代码: Integer i = 10; Integer j = 20; System.out.println(i+j); 反编译后代码如下: Integer i = Integer.valueOf(10); Integer j = Integer.valueOf(20); System.out.println(i.intValue() + j.intValue()); 我们发现,两个包装类型之间的运算,会被自动拆箱成基本类型进行。 场景四、三目运算符的使用 这是很多人不知道的一个场景,作者也是一次线上的血淋淋的Bug发生后才了解到的一种案例。看一个简单的三目运算符的代码: boolean flag = true; Integer i = 0; int j = 1; int k = flag ? i : j; 很多人不知道,其实在int k = flag ? i : j;这一行,会发生自动拆箱。反编译后代码如下: boolean flag = true; Integer i = Integer.valueOf(0); int j = 1; int k = flag ? i.intValue() : j; System.out.println(k); 这其实是三目运算符的语法规范。当第二,第三位操作数分别为基本类型和对象时,其中的对象就会拆箱为基本类型进行操作。 因为例子中,flag ? i : j;片段中,第二段的i是一个包装类型的对象,而第三段的j是一个基本类型,所以会对包装类进行自动拆箱。如果这个时候i的值为null,那么就会发生NPE。(自动拆箱导致空指针异常) 场景五、函数参数与返回值 这个比较容易理解,直接上代码了: //自动拆箱 public int getNum1(Integer num) { return num; } //自动装箱 public Integer getNum2(int num) { return num; } 自动拆装箱与缓存 Java SE的自动拆装箱还提供了一个和缓存有关的功能,我们先来看以下代码,猜测一下输出结果: public static void main(String... strings) { Integer integer1 = 3; Integer integer2 = 3; if (integer1 == integer2) System.out.println("integer1 == integer2"); else System.out.println("integer1 != integer2"); Integer integer3 = 300; Integer integer4 = 300; if (integer3 == integer4) System.out.println("integer3 == integer4"); else System.out.println("integer3 != integer4"); } 我们普遍认为上面的两个判断的结果都是false。虽然比较的值是相等的,但是由于比较的是对象,而对象的引用不一样,所以会认为两个if判断都是false的。在Java中,==比较的是对象应用,而equals比较的是值。所以,在这个例子中,不同的对象有不同的引用,所以在进行比较的时候都将返回false。奇怪的是,这里两个类似的if条件判断返回不同的布尔值。 上面这段代码真正的输出结果: integer1 == integer2 integer3 != integer4 原因就和Integer中的缓存机制有关。在Java 5中,在Integer的操作上引入了一个新功能来节省内存和提高性能。整型对象通过使用相同的对象引用实现了缓存和重用。 适用于整数值区间-128 至 +127。 只适用于自动装箱。使用构造函数创建对象不适用。 具体的代码实现可以阅读Java中整型的缓存机制一文,这里不再阐述。 我们只需要知道,当需要进行自动装箱时,如果数字在-128至127之间时,会直接使用缓存中的对象,而不是重新创建一个对象。 其中的javadoc详细的说明了缓存支持-128到127之间的自动装箱过程。最大值127可以通过-XX:AutoBoxCacheMax=size修改。 实际上这个功能在Java 5中引入的时候,范围是固定的-128 至 +127。后来在Java 6中,可以通过java.lang.Integer.IntegerCache.high设置最大值。 这使我们可以根据应用程序的实际情况灵活地调整来提高性能。到底是什么原因选择这个-128到127范围呢?因为这个范围的数字是最被广泛使用的。 在程序中,第一次使用Integer的时候也需要一定的额外时间来初始化这个缓存。 在Boxing Conversion部分的Java语言规范(JLS)规定如下: 如果一个变量p的值是: -128至127之间的整数(§3.10.1) true 和 false的布尔值 (§3.10.3) ‘\u0000’至 ‘\u007f’之间的字符(§3.10.4) 范围内的时,将p包装成a和b两个对象时,可以直接使用a==b判断a和b的值是否相等。 自动拆装箱带来的问题 当然,自动拆装箱是一个很好的功能,大大节省了开发人员的精力,不再需要关心到底什么时候需要拆装箱。但是,他也会引入一些问题。 包装对象的数值比较,不能简单的使用==,虽然-128到127之间的数字可以,但是这个范围之外还是需要使用equals比较。 前面提到,有些场景会进行自动拆装箱,同时也说过,由于自动拆箱,如果包装类对象为null,那么自动拆箱时就有可能抛出NPE。 如果一个for循环中有大量拆装箱操作,会浪费很多资源。 参考资料 Java的自动拆装箱
montos 2020-06-01 21:24:01 0 浏览量 回答数 0

回答

调用CreateCluster创建一个新的Kubernetes集群实例,并新建指定数量的节点。 请求信息 请求行RequestLine POST /clusters HTTP/1.1 特有请求头RequestHead 无,请参考公共请求头部。 请求体RequestBody 说明 创建集群时,请求参数需要正确组合,否则会导致集群创建失败。在容器服务控制台创建集群界面,提供了生成集群创建OpenAPI参数功能,可以为您提供准确的参数组合。请参见生成 OpenAPI 参数。 { "disable_rollback": "失败是否回滚", "name": "集群名称", "timeout_mins": "集群创建超时时间", "cluster_type": "集群类型,Kubernetes", "region_id": "地域", "vpcid": "VPC ID", "master_vswitch_ids": "master节点交换机ID。填写3个vswitchid, 尽量是分别在3个不同az, 保证高可用", "master_instance_types": "master节点实例类型。填写3个实例规格", "master_count": "master实例个数,支持3|5", "container_cidr": "容器POD CIDR", "service_cidr": "服务CIDR", "ssh_flags": "是否开放公网SSH登录", "cloud_monitor_flags": "是否安装云监控插件", "login_password": "节点SSH登录密码,和key_pair二选一", "key_pair": "keypair名称,和login_password 二选一", "master_instance_charge_type": "Master实例付费类型,PostPaid|PrePaid", "master_period_unit": "包年包月单位,Month,Year,只有在PrePaid下生效", "master_period": "包年包月时长,只有在PrePaid下生效", "master_auto_renew": "Master节点是否自动续费", "master_auto_renew_period": "Master节点续费周期", "master_system_disk_category": "Master系统盘类型", "master_system_disk_size": "Master节点系统盘大小", "master_data_disk(已弃用)": "Master节点是否挂载数据盘", "master_data_disks": "Master节点数据盘配置", "master_system_disk_snapshot_policy_id": "Master节点系统盘快照策略ID", "worker_instance_charge_type": "Worker节点付费类型PrePaid|PostPaid", "worker_period_unit": "包年包月单位,Month,Year,只有在PrePaid下生效", "worker_period": "包年包月时长,只有在PrePaid下生效", "worker_auto_renew": "Worker节点自动续费true|false", "worker_auto_renew_period": "Worker节点续费周期", "worker_instance_types": "Worker实例规格多实例规格参数", "worker_vswitch_ids": "一台或多台虚拟交换机 ID,N 的取值范围为 [1, 5]", "worker_system_disk_category": "Worker系统盘类型", "worker_system_disk_size": "Worker节点系统盘大小", "worker_data_disk(已弃用)": "Worker节点是否挂载数据盘", "worker_data_disks": "Worker节点数据盘配置", "worker_system_disk_snapshot_policy_id": "Worker节点系统盘快照策略ID", "num_of_nodes": "Worker节点数", "snat_entry": "是否配置SNATEntry", "endpoint_public_access": "是否公网暴露集群endpoint", "cpu_policy": "static|none", "node_port_range": "节点端口范围,默认30000-65535", "proxy_mode": "网络模式, 可选值iptables|ipvs", "addons": "选装addon, 数组格式对象", "tags": "给集群打tag标签, 数组格式对象", "security_group_id": "安全组ID", "auto_snapshot_policy_id": "自动快照策略ID", "taints": "给节点添加taint, 数组格式对象", "deletion_protection":"是否开启集群删除保护,防止通过控制台或api误删除集群", "os_type":"运行pod的主机的操作系统类型,例如:linux,Windows等", "platform":"运行pod的主机的平台架构", "runtime":"容器运行时,默认为docker", } 表 1. 请求体解释 名称 类型 必须 描述 cluster_type string 是 集群类型。 key_pair string 是 keypair名称。和login_password二选一。 login_password string 是 SSH登录密码。密码规则为8 - 30 个字符,且至少同时包含三项(大小写字母、数字和特殊符号)。和key_pair 二选一。 master_instance_charge_type string 否 Master节点付费类型,可选值为: PrePaid:预付费 PostPaid:按量付费 默认为按量付费。 master_instance_types list 是 Master节点ECS规格类型代码。更多详细信息,参见实例规格族。 master_system_disk_category string 是 Master节点系统盘类型,取值范围是: cloud_efficiency:高效云盘。 cloud_ssd:SSD云盘。 master_system_disk_size int 是 Master节点系统盘大小,单位为GiB。 master_vswitch_ids list 是 Master节点交换机ID列表,交换机个数取值范围为1~3。为确保集群的高可用性,推荐您选择3个交换机,且分布在不同的可用区。 num_of_nodes int 是 Worker节点数。范围是[0,100]。 name string 是 集群名称, 集群名称可以使用大小写英文字母、中文、数字、中划线。 region_id string 是 集群所在地域ID。 snat_entry bool 是 是否为网络配置SNAT。 当已有VPC能访问公网环境时,设置为 false。 当已有VPC不能访问公网环境时: 设置为true,表示配置SNAT,此时可以访问公网环境。 设置为false,表示不配置SNAT,此时不能访问公网环境。 worker_instance_types list 是 Worker 节点 ECS 规格类型代码。更多详细信息,参见实例规格族。 worker_system_disk_category string 是 Worker节点系统盘类型。 worker_system_disk_size int 是 Worker节点系统盘大小,单位为GiB。 worker_vswitch_ids list 是 Worker节点的虚拟交换机 ID。 addons list 否 Kubernetes集群的addon插件的组合。 addons的参数: name:必填,addon插件的名称。 version:可选,取值为空时默认取最新版本。 config:可选,取值为空时表示无需配置。 网络插件:包含Flannel和Terway网络插件,二选一。 日志服务:可选,如果不开启日志服务时,将无法使用集群审计功能。 Ingress:默认开启安装Ingress组件。 container_cidr string 否 容器网段,不能和VPC网段冲突。当选择系统自动创建VPC时,默认使用172.16.0.0/16网段。 cloud_monitor_flags bool 否 是否安装云监控插件: true:表示安装。 false:表示不安装。。 cpu_policy string 否 CPU策略。集群版本为1.12.6及以上版本支持static 和 none两种策略。默认为none。 disable_rollback bool 否 失败是否回滚: true:表示失败不回滚。 false:表示失败回滚。 默认为true,如果选择失败回滚,则会释放创建过程中所生产的资源,不推荐使用false。 master_auto_renew bool 否 Master节点是否自动续费,当master_instance_charge_type取值为PrePaid时才生效,可选值为: true:自动续费。 false:不自动续费。 master_auto_renew_period int 否 自动续费周期,当选择预付费和自动续费时才生效,且为必选值。PeriodUnit=Month时,取值为{“1”, “2”, “3”, “6”, “12”}。 master_count int 否 Master实例个数,可选值3或者5。默认值为3。 master_data_disk(已弃用) bool 否 Master节点是否挂载数据盘,可选择为: true:挂载数据盘 false:不挂载数据盘,默认为false master_data_disks list 否 Master数据盘类型、大小等配置的组合。该参数只有在挂载Master节点数据盘时有效,包含以下参数: category:数据盘类型。取值范围: cloud:普通云盘 cloud_efficiency:高效云盘 cloud_ssd:SSD云盘 size:数据盘大小,单位为GiB。 encrypted: master_period int 否 包年包月时长,当master_instance_charge_type取值为PrePaid时才生效且为必选值,取值范围: PeriodUnit=Month时,Period取值:{ “1”, “2”, “3”,“6”,“12”}。 master_period_unit string 否 当指定为PrePaid的时候需要指定周期。Month:以月为计时单位。 node_port_range string 否 节点服务端口。取值范围为[30000,65535]。 proxy_mode string 否 kube-proxy 代理模式,支持 iptables 和 IPVS两种模式。 默认为 iptables 。 endpoint_public_access bool 否 是否开启公网API Server: true:默认为True,表示开放公网API Server。 false:若设置为false, 则不会创建公网的API Server,仅创建私网的API Server。 security_group_id string 否 指定集群ECS实例所属于的安全组ID。 service_cidr string 否 服务网段,不能和VPC网段以及容器网段冲突。当选择系统自动创建VPC时,默认使用172.19.0.0/20网段。 ssh_flags bool 否 是否开放公网SSH登录: true:表示开放。 false:表示不开放。 tags list 否 给集群打tag标签: key:标签名称。 value:标签值。 taints list 否 用于给节点做污点标记,通常用于 Pods 的调度策略。与之相对应的概念为:容忍(tolerance),若 Pods 上有相对应的 tolerance 标记,则可以容忍节点上的污点,并调度到该节点。 kubernetes_version string 否 Kubernetes集群版本,默认最新版。ACK支持的KubernetesK8s版本:v1.16.6,v1.14.6和v1.12.6。 timeout_mins int 否 集群资源栈创建超时时间,以分钟为单位,默认值 60。 vpcid string 否 VPC ID,可空。如果不设置,系统会自动创建VPC,系统创建的VPC网段为192.168.0.0/16。 说明 VpcId 和 vswitchid 只能同时为空或者同时都设置对应的值。 worker_auto_renew bool 否 是否开启Worker节点自动续费,可选值为: true:自动续费。 false:不自动续费。 worker_auto_renew_period int 否 自动续费周期,当选择预付费和自动续费时才生效,且为必选值: PeriodUnit=Month时,取值{“1”, “2”, “3”, “6”, “12”}。 worker_data_disk(已弃用) string 否 是否挂载数据盘,可选择为: true:表示worker节点挂载数据盘。 false:表示worker节点不挂载数据盘。 worker_data_disks list 否 Worker数据盘类型、大小等配置的组合。该参数只有在挂载Worker节点数据盘时有效,包含以下参数: category:数据盘类型。取值范围: cloud:普通云盘。 cloud_efficiency:高效云盘。 cloud_ssd:SSD云盘。 size:数据盘大小,单位为GiB。 encrypted:是否对数据盘加密,true|false。 worker_instance_charge_type string 否 Worker节点付费类型,可选值为: PrePaid:预付费。 PostPaid:按量付费。 默认为按量付费。 worker_period int 否 包年包月时长,当worker_instance_charge_type取值为PrePaid时才生效且为必选值,取值范围:PeriodUnit=Month时,Period取值:{ “1”, “2”, “3”, “6”, “12”}。 worker_period_unit string 否 当指定为PrePaid的时候需要指定周期。Month:以月为计时单位。 deletion_protection bool 否 是否开启集群删除保护,防止通过控制台或api误删除集群。 os_type string 否 运行pod的主机的操作系统类型,例如:linux,Windows等。 platform string 否 运行pod的主机的平台架构。 runtime json 否 容器运行时,一般为docker,包括2个信息:name和version。 node_cidr_mask string 否 节点网络的网络前缀。node_cidr_mask通过cidr限制一个节点上能运行容器网络的Pod数量。例如node_cidr_mask是24的话,对应的容器数量是256,25对应的就是128。计算方式:2^(node_cidr_mask的值-24)-1。 返回信息 返回行 ResponseLine HTTP/1.1 202 Accepted 特有返回头 ResponseHead 无,请参考公共返回头部。 表 2. 返回体 ResponseBody 名称 类型 描述 cluster_id string 集群实例ID。 request_id string 请求ID。 task_id string 任务ID。系统自动分配,用户查询任务状态。 示例 请求示例 POST /clusters HTTP/1.1 <公共请求头> { "cluster_type":"Kubernetes", "name":"my-test-Kubernetes-cluster", "region_id":"cn-beijing", "disable_rollback":true, "timeout_mins":60, "kubernetes_version":"1.12.6-aliyun.1", "snat_entry":true, "endpoint_public_access":false, "cloud_monitor_flags":false, "node_cidr_mask":"25", "proxy_mode":"iptables", "tags":[], "addons": [{"name": "flannel"},{"name": "aliyun-log-controller","config": "{"sls_project_name":"k8s-log-c64f6eab6a1764d3dbee3dc2b9e41****"}"},{"name": "nginx-ingress-controller", "config": "{"IngressSlbNetworkType":"internet"}"}], "node_port_range":"30000-32767", "login_password":"test****", "cpu_policy":"none", "master_count":3, "master_vswitch_ids":["vsw-2ze48rkq464rsdts****","vsw-2ze48rkq464rsdts1****","vsw-2ze48rkq464rsdts1****"], "master_instance_types":["ecs.sn1.medium","ecs.sn1.medium","ecs.sn1.medium"], "master_system_disk_category":"cloud_efficiency", "master_system_disk_size":40, "worker_instance_types":["ecs.sn2.3xlarge"], "num_of_nodes":3, "worker_system_disk_category":"cloud_efficiency", "worker_system_disk_size":120, "vpcid":"vpc-2zegvl5etah5requ0****", "worker_vswitch_ids":["vsw-2ze48rkq464rsdts****"], "container_cidr":"172.20.XX.XX/16", "service_cidr":"172.21.XX.XX/20", "worker_data_disks": [{"category": "cloud_ssd", "size": 500}], "master_data_disks": [{"category": "cloud_ssd", "size": 500}], "taints":[{"key": "special", "value": "true", "effect": "NoSchedule"}] } 返回示例 HTTP/1.1 202 Accepted <公共响应头> { "cluster_id": "cb95aa626a47740afbf6aa099b650****", "request_id": "687C5BAA-D103-4993-884B-C35E4314A1E1", "task_id": "T-5a54309c80282e39ea00002f" }
1934890530796658 2020-04-01 11:01:33 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT