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

网站建设验收单意见怎么写搜索引擎优化关键字

网站建设验收单意见怎么写,搜索引擎优化关键字,网站建设是否需形成无形资产,wordpress接入qq登陆【Spring连载】使用Spring Data访问 MongoDB----对象映射之JSON Schema 一、生成Schema二、加密字段三、JSON Schema类型 从3.6版本开始#xff0c;MongoDB支持根据提供的 JSON Schema验证documents的集合。在创建集合时#xff0c;可以定义schema本身以及验证操作和级别MongoDB支持根据提供的 JSON Schema验证documents的集合。在创建集合时可以定义schema本身以及验证操作和级别如下例所示 例1示例JSON schema {type: object, --------1 required: [ firstname, lastname ], --------2 properties: { --------3 firstname: { --------4 type: string,enum: [ luke, han ]},address: { --------5 type: object,properties: {postCode: { type: string, minLength: 4, maxLength: 5 }}}} }1. JSON schema documents总是从根描述整个document。schema是一个schema对象本身它可以包含描述属性和子文档的嵌入schema对象。 2. required是一个属性用于描述文档中需要哪些属性。可以选择性地指定它以及其他schema约束。请参阅MongoDB关于[可用关键字](https://www.mongodb.com/docs/manual/reference/operator/query/jsonSchema/#available-keywords)的文档。 3. properties与描述对象类型的schema对象相关。它包含特定于属性的schema约束。 4. firstname为document中的firstname字段指定约束。这里它是一个基于字符串的属性元素声明可能的字段值。 5. address是一个子文档在其postCode字段中定义值的schema。你可以通过指定schema document(即通过使用Document API解析或构建document对象)或使用Spring Data的JSON schema实用程序在org.springframework.data.mongodb.core.schema中构建它来提供schema。MongoJsonSchema是所有JSON模式相关操作的入口点。下面的示例展示了如何使用MongoJsonSchema.builder()来创建JSON schema: 例2创建JSON schema MongoJsonSchema.builder() --------1.required(lastname) --------2.properties(required(string(firstname).possibleValues(luke, han)), --------3object(address).properties(string(postCode).minLength(4).maxLength(5))).build(); --------41. 获取一个schema生成器以使用fluent API配置schema。 2. 如图所示直接配置所需属性或如第3步所示提供更多详细信息。 3. 配置所需的String类型的firstname字段只允许使用luke和han值。属性可以是类型化的也可以是非类型化的。使用JsonSchemaProperty的静态导入使语法稍微紧凑一点并获取string(…)等入口点。 4. 生成schema对象。通过gateway接口上的静态方法已经有一些预定义的强类型schema对象(JsonSchemaObject和JsonSchemaProperty)可用。但是你可能需要构建自定义属性验证规则这些规则可以通过builder API创建如下面的示例所示: // birthdate : { bsonType: date } JsonSchemaProperty.named(birthdate).ofType(Type.dateType());// birthdate : { bsonType: date, description, Must be a date } JsonSchemaProperty.named(birthdate).with(JsonSchemaObject.of(Type.dateType()).description(Must be a date));CollectionOptions为集合提供了schema支持的入口点如下面的示例所示: 使用$jsonSchema创建集合 MongoJsonSchema schema MongoJsonSchema.builder().required(firstname, lastname).build();template.createCollection(Person.class, CollectionOptions.empty().schema(schema));一、生成Schema 建立一个schema可能是一项耗时的任务如果想快速构建schema可以使用JsonSchemaCreator。 JsonSchemaCreator及其默认实现生成映射基础设施提供的MongoJsonSchema域外类型元数据。这意味着要考虑带注解的属性以及潜在的自定义转换。 例4从域类型生成Json Schema public class Person {private final String firstname; --------1private final int age; --------2private Species species; --------3private Address address; --------4private Field(fieldTypeSCRIPT) String theForce; --------5private Transient Boolean useTheForce; --------6public Person(String firstname, int age) { --------12 this.firstname firstname;this.age age;}// gettter / setter omitted }MongoJsonSchema schema MongoJsonSchemaCreator.create(mongoOperations.getConverter()).createSchemaFor(Person.class);template.createCollection(Person.class, CollectionOptions.empty().schema(schema));{type : object,required : [age], --------2 properties : {firstname : { type : string },--------1 age : { bsonType : int } --------2 species : { --------3 type : string,enum : [HUMAN, WOOKIE, UNKNOWN]}address : { --------4 type : objectproperties : {postCode : { type: string }}},theForce : { type : javascript} --------5} }1. 简单对象属性被认为是常规属性。 2. 原始类型被认为是必需的属性 3. 枚举被限制为可能的值。 4. 对象类型属性被检查并表示为嵌套文档。 5. 由转换器转换为代码的字符串类型属性。 6. 在生成schema时忽略Transient属性。_id属性使用可以转换为ObjectId的类型如String映射到{ type : ‘object’ }除非有更具体的信息可以通过MongoId注解获得。 表1特殊Schema生成规则 JavaSchema TypeNotesObjecttype : objectwith properties if metadata available.Collectiontype : array-Maptype : object-Enumtype : stringwith enum property holding the possible enumeration values.arraytype : arraysimple type array unless it’s a byte[]byte[]bsonType : binData- 上面的示例演示了如何从非常精确的类型源派生schema。在域模型中使用多态元素可能导致Object和泛型T类型的模式表示不准确它们很可能表示为{ type : ‘object’ }而没有进一步的说明。MongoJsonSchemaCreator.property(…)允许定义额外的细节比如在呈现schema时应该考虑的嵌套文档类型。 例5为属性指定其他类型 class Root {Object value; }class A {String aValue; }class B {String bValue; } MongoJsonSchemaCreator.create().property(value).withTypes(A.class, B.class) --------1{type : object,properties : {value : {type : object,properties : { --------1 aValue : { type : string },bValue : { type : string }}}} }1. 给定类型的属性被合并到一个元素中。MongoDB的schema-free方法允许在一个集合中存储不同结构的文档。它们可以被建模为具有公共基类。无论选择哪种方法MongoJsonSchemaCreator.merge(…)都可以帮助满足将多个schema合并为一个schema的需要。 例6将多个Schemas合并到单个Schema定义中 abstract class Root {String rootValue; }class A extends Root {String aValue; }class B extends Root {String bValue; }MongoJsonSchemaCreator.mergedSchemaFor(A.class, B.class) --------1{type : object,properties : { --------1rootValue : { type : string },aValue : { type : string },bValue : { type : string }}} }1. 给定类型的属性(及其继承的属性)被组合到一个schema中。具有相同名称的属性需要引用相同的JSON schema才能进行组合。下面的示例展示了由于数据类型不匹配而无法自动合并的定义。在这种情况下一个ConflictResolutionFunction必须提供给MongoJsonSchemaCreator。 class A extends Root {String value; }class B extends Root {Integer value; }二、加密字段 MongoDB 4.2字段级加密允许直接加密单个属性。 设置JSON Schema时可以将属性封装在加密的属性中如下例所示。 例7通过Json Schema进行客户端字段级加密 MongoJsonSchema schema MongoJsonSchema.builder().properties(encrypted(string(ssn)).algorithm(AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic).keyId(*key0_id)).build();如果不想手动定义加密字段可以利用Encrypted注解如下面的代码片段所示。 例8通过Json Schema进行客户端字段级加密 Document Encrypted(keyId xKVup8B1QCkHaVRxqag, algorithm AEAD_AES_256_CBC_HMAC_SHA_512-Random) --------1 static class Patient {Id String id;String name;Encrypted --------2String bloodType;Encrypted(algorithm AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic) --------3Integer ssn; }1. 将为encryptMetadata设置默认的加密设置。 2. 使用默认加密设置的加密字段。 3. Encrypted字段覆盖默认加密算法。Encrypted注解支持通过SpEL表达式解析keyIds。为此需要提供额外的环境元数据(通过MappingContext)。 Document Encrypted(keyId #{mongocrypt.keyId(#target)}) static class Patient {Id String id;String name;Encrypted(algorithm AEAD_AES_256_CBC_HMAC_SHA_512-Random)String bloodType;Encrypted(algorithm AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic)Integer ssn; }MongoJsonSchemaCreator schemaCreator MongoJsonSchemaCreator.create(mappingContext); MongoJsonSchema patientSchema schemaCreator.filter(MongoJsonSchemaCreator.encryptedOnly()).createSchemaFor(Patient.class);mongocrypt.keyId函数是通过EvaluationContextExtension定义的如下面的代码片段所示。提供自定义扩展提供了计算keyIds的最灵活的方法。 public class EncryptionExtension implements EvaluationContextExtension {Overridepublic String getExtensionId() {return mongocrypt;}Overridepublic MapString, Function getFunctions() {return Collections.singletonMap(keyId, new Function(getMethod(computeKeyId, String.class), this));}public String computeKeyId(String target) {// ... lookup via target element name} }三、JSON Schema类型
http://www.hkea.cn/news/14366023/

相关文章:

  • 新余网站建设哈尔滨最新政策
  • 滨州建设局网站站群建站
  • 给网站平台做推广叫什么自己建网站怎样建
  • 做网站cpa哪个网站做职客比较好 比较正规
  • 一级做爰片a视频网站4wordpress 子目录 404
  • 网站怎么做效果更好深圳沙井做公司网站
  • 与做机器人有关的网站网站界面友好
  • 中国建设银行悦生活网站网站没备案能百度推广吗
  • 文登做网站的公司学校网站建设方案图片
  • app生成器手机版百度首页排名优化多少钱
  • 免费申请网站永久域名公众号网站怎么做的
  • 做淘宝网站报告大学 两学一做专题网站
  • 达州市做网站怎样打造营销型网站建设
  • 做最好的美食分享网站wordpress安装出现eof
  • 网站建设 电话咨询专业高端网站设计首选
  • 网站清理通知深圳网络推广解决方案
  • 免费在线响应式网站自助建站苏州 做网站
  • 做证券考试的网站app免费下载安装官方
  • 安徽网站建设电话wordpress支持手机版吗
  • 苏州住房建设局网站网站建设 蜀美网络
  • 高端网站设计开发汽车4s店网站模板
  • 公司logo设计多少钱seo实战密码第三版pdf下载
  • 沃尔玛公司网站建设案例分析网页制作背景图片设置
  • 如何做关于网站推广的培训WordPress安装aplayer
  • 网站终端制作js 网站校验
  • 公司手机网站模板制作网站搭建网站项目怎么样
  • 怎么做盗版视频网站中国互联网协会是做什么的
  • 成品网站w灬源码999交友个人网页设计概述
  • 资源下载站 wordpress徐州营销网站建设报价
  • 什么网站可以做简历互动型网站模板