首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    优秀!高级Java都这样优雅处理空值

    除非接口的文档注释上加以说明。 那如何约束入参呢?...,如果当 Person 为空的时候,则返回一些 get * 的默认行为....Person是null ,则返回空对象 } 其中 getPerson() 方法,可以用来根据业务逻辑获取 Person 有可能的对象(对当前例子来讲,如果 Person 不存在,返回 Person 的的特例...Optional 作为返回值 当个实体的返回 那 Optioanl 可以做为返回值吗? 其实它是非常满足是否存在这个语义的。 你如说,你要根据 id 获取用户信息,这个用户有可能存在或者不存在。...只有当考虑它返回 null 是合理的情况下,才进行 Optional 的返回 集合实体的返回 不是所有的返回值都可以这样用的!

    1.7K30

    MongoDB 多对多关系的简单示例

    Tag: Id Name Relation: ArticleId TagId 通过表的连接,就可以查询出我们想要的各种数据 那么,如果用MongoDB的思想,该如何设计这种关系呢...有一个关键点首先要知道:MongoDB中不支持文档的连接操作,所以就不能按照sql的思路来设计 设计示例 下面给出一个简单的思路 设计两个文档,文章 和 标签,每次文章添加新标签的时候,更新文章和标签的对应关系...:"" article:["article1","article2"] size:2 } 查询示例 (1)列出所有Tag db.article.distinct("tags") 返回数据例如...: [ "tag1", "tag2", "tag3" ] (2)列出所有文章及其Tag db.article.find({}); 返回数据例如: { "_id" : ObjectId("5058878..."test title2", "tags" : [ "tag1", "tag3" ] } (3)列出某Tag下的所有文章 db.article.find({tags:{$in:["tag2"]}

    3.3K70

    pymongo的简单使用

    collection = db["users"] # 同样这两种方法都可以指定到集合,不存在会自行创建 知道了数据库和集合,下面就是对文档的操作了 # 接着上面的内容 # 插入文档 result...# 查询文档 # 大概就是两个方法,find(),find_one() # find()方法,返回值为一个对象 result = collection.find({}) # 将集合里的所有文档都查询出来...collection这个变量 # 查询出name字段为"xi"的所有文档 res = collection.find({"name":"xi"}) # 查询age字段大于20的所有文档数据 res =...collection.find({"age":{"$gt":20}}) # 查询status字段为"D",且age字段小于50的所有文档 res = collection.find({"status...":"D","age":{"$lt":50}}) # 查询status字段为"D",或者age字段小于50的所有文档 res = collection.find({"$or":[{"status":"

    77230

    「技能分享」有效处理空值的10个技巧,学不会算我输

    这天生就是容易出错的,因为开发人员必须经常检查文档,或者如果缺少文档,则返回可能的null的基础源代码。 自从JDK 8发布以来,我们有了Optional类,该类专门设计用于指示可能缺少返回值。...开发人员调用以Optional作为返回值的方法时,必须显式处理不存在该值的情况。 因此,在适用时,请使用Optional来包装您的返回类型。...类字段是一种诱人的案例,它不是为设计而设计的,而且肯定不是必需的。通过封装,您应该完全控制字段的值,包括null。...另一方面,将字段设置为显式可选可能会给您带来奇怪的问题,例如: 您应该如何为此类字段编写构造函数或设置方法? 即使在确定值存在的情况下,您也必须处理Optional。 自动映射器应如何处理这些字段?...如果是外部提供商,则依赖合同,文档,如果不确定,请发送电子邮件或致电某人以确保您的假设正确。这可能很烦人,尤其是在使用文档记录不完善的API时,但涉及到null:安全胜过抱歉! 好啦!

    1.5K30

    Redis常用命令详解

    因此,如果存在某些key,则存在某些key,则返回 2。 返回值 1 key存在 0 key不存在 2.5 ttl(pttl) ? 返回key剩余的过期时间。...设置 key 指定的哈希集中指定字段的值 如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联 如果字段在哈希集中存在,它将被重写 返回值 添加的字段数。...不存在 3. hget key field 返回 key 指定的哈希集中该字段所关联的值 返回值 bulk-string-reply:该字段所关联的值 当字段不存在或者 key 不存在时返回nil 4...hkeys key 返回 key 指定的哈希集中所有字段的名字 返回值 array-reply:哈希集中的字段列表,当 key 指定的哈希集不存在时返回空列表 hvals key 返回 key 指定的哈希集中所有字段的值...返回值 bulk-string-reply: 不使用count 参数的情况下该命令返回随机的元素,如果key不存在则返回nil.

    59110

    为何前后端总是争吵不断,来源于这 5 宗罪

    r : [], //表示此操作的返回值( result ) count : x //返回的数据条数 } 这种数据结构看起来没问题,确实也没大问题,问题就是出在s这个字段。...r : [], //表示此操作的返回值( result ) count : x //返回的数据条数 } m、r、count 可以保持不变,但是s里面必须包含所有返回状态,代表这个接口所有业务的情况,前端开发人员也就能针对每种情况进行处理...Final~ 文档最重要的部分是返回值的状态,我也建议上面的升级返回数据结构,这样就不存在任何不明朗情况。既然写了文档,就把文档写好,写明朗,这也是利人利己地方。...这意味着,工作单元中的每项任务都必须正确执行。如果有任一任务执行失败,则整个工作单元或事务就会被终止。即此前对数据所作的任何修改都将被撤销。...是否所有的情况都测试过了,如果可以请写单元测试。 是否返回数据准确明朗,响应状态码是否正常。 文档是否已经完备。

    42820

    mongodb和redis的区别

    show dbs 切换数据库 如果数据库不存在,则指向数据库,但不创建,直到插入数据或创建集合时数据库才被创建 use 数据库名称 默认的数据库为test,如果你没有创建新的数据库,集合将存放在test...如果文档的_id已经存在则修改,如果文档的_id不存在则添加 db.stu.save({_id:'20160102','name':'yk',gender:1}) db.stu.save({_id:'20160102...语法: db.集合名称.find().limit(NUMBER) 参数NUMBER表示要获取文档的条数 如果没有指定参数则显示集合中的所有文档 例1:查询2条学生信息 db.stu.find().limit...根据键获取值,如果不存在此键则返回nil GET key 根据多个键获取多个值 MGET key [key ...] redis> MSET date "2012.3.30" time "11:00 a.m...,则第二部分是频道,第三部分是现在订阅的频道的数量 如果第一部分的值为unsubscribe,则第二部分是频道,第三部分是现在订阅的频道的数量,如果为0则表示当前没有 订阅任何频道,当在Pub/Sub以外状态

    65030

    开发人员必备Redis知识点基础命令键命令string命令hash结构listset结构sorted set

    那么会返回nil del 删除指定的一批keys,如果删除中的某些key不存在,则直接忽略。 返回值:被删除的keys的数量 exists 返回key是否存在。...指定的哈希集不存在,会创建一个新的哈希集并与 key 关联 如果字段在哈希集中存在,它将被重写 返回值 integer-reply:含义如下 1如果field是一个新的字段 0如果field原来在map...或者key不存在 3. hget key field 返回 key 指定的哈希集中该字段所关联的值 返回值 bulk-string-reply:该字段所关联的值 当字段不存在或者 key 不存在时返回...hkeys key 返回 key 指定的哈希集中所有字段的名字 返回值 array-reply:哈希集中的字段列表,当 key 指定的哈希集不存在时返回空列表 hvals key 返回 key 指定的哈希集中所有字段的值...返回值 bulk-string-reply: 不使用count 参数的情况下该命令返回随机的元素,如果key不存在则返回nil.

    66260

    公司前端和后端因为接口扯起了皮,还列了 5 宗罪

    r : [], //表示此操作的返回值( result ) count : x //返回的数据条数 } 这种数据结构看起来没问题,确实也没大问题,问题就是出在s这个字段。...r : [], //表示此操作的返回值( result ) count : x //返回的数据条数 } m、r、count 可以保持不变,但是s里面必须包含所有返回状态,代表这个接口所有业务的情况,前端开发人员也就能针对每种情况进行处理...Final~ 文档最重要的部分是返回值的状态,我也建议上面的升级返回数据结构,这样就不存在任何不明朗情况。既然写了文档,就把文档写好,写明朗,这也是利人利己地方。...这意味着,工作单元中的每项任务都必须正确执行。如果有任一任务执行失败,则整个工作单元或事务就会被终止。即此前对数据所作的任何修改都将被撤销。...是否所有的情况都测试过了,如果可以请写单元测试。 是否返回数据准确明朗,响应状态码是否正常。 文档是否已经完备。

    43120

    瞧瞧别人家的Controller,那叫一个优雅

    有些金额字段,本来是正数,但如果用户传入了负数,万一接口没做校验,可能会导致一些没必要的损失。 还有些状态字段,如果不做校验,用户如果传入了系统中不存在的枚举值,就会导致保存的数据异常。...出现这种情况,可能是API网关定义了一直返回值结构,业务系统定义了另外一种返回值结构。如果是网关异常,则返回网关定义的返回值结构,如果是业务系统异常,则返回业务系统的返回值结构。...所有的API接口都必须经过API网关,API网关捕获该业务异常,然后转换成统一的异常结构返回,这样能统一返回值结构。 7. 统一封装异常 我们的API接口需要对异常进行统一处理。...不知道你有没有遇到过这种场景:有时候在API接口中,需要访问数据库,但表不存在,或者sql语句异常,就会直接把sql信息在API接口中直接返回。...接口文档中需要包含如下信息: 接口地址 请求方式,比如:post或get 请求参数和字段介绍 返回值和字段介绍 返回码和错误信息 加密或签名示例 完整的请求demo 额外的说明,比如:开通ip白名单。

    10710

    学习使用Go的反射

    A int B string } var x Foo func DoSomething(f Foo) { fmt.Println(f.A, f.B) } 但是有时你希望在运行时使用变量的在编写程序时还不存在的信息...要理解Type和Kind之间的差异可能有些棘手,但是请你以这种方式来思考。如果定义一个名为Foo的结构体,则Kind为struct,类型为Foo。...如果变量是结构体,则可以使用反射来获取结构体中的字段数,并从每个字段上获取 reflect.StructField结构体。...reflection.StructField为您提供了字段的名称,标号,类型和结构体标签。...由于Go没有泛型,因此变量的原始类型会丢失;该方法返回类型为 interface{}的值。如果创建了一个指针以便可以修改该值,则需要使用 Elem().Interface()解引用反射的指针。

    1.1K10

    ES 脚本实现

    _source.counter += params.count", 使文档字段counter的值加上参数count的值 接下来,我们从update API的入口出发,来看这个脚本最终是如何被执行的。...prepareUpdateScriptRequest方法 构造更新脚本上下文(update Context):设置可以在脚本中访问的内置字段、变量 执行脚本获取执行结果 使用结果构造更新后的文档 image...脚本interface 对于在不同类型API中执行的脚本,其执行方式也有所不同(包括返回值类型、参数等不同),ES为其都声明了相应的interface。...若不存在,则使用ScriptEngine重新编译脚本 ScriptEngine ScriptService类内部封装了用于执行不同脚本语言的执行引擎ScriptEngine,实现类包括PainlessScriptEngine...的execute方法将执行执行脚本,产生输出结果 使用可执行的脚本对象painlessScript构造ScriptImpl类(实现了SearchScript接口)对象并返回 关于painless脚本代码是如果使用

    8K42

    Elasticsearch从入门到放弃:文档CRUD要牢记

    如果使用_create的方法,则必须保证文档不存在,而使用_doc方法的话,既可以创建新的文档,也可以更新已存在的文档。 在创建文档时,还可以选择一些参数。...请求参数 if_seq_no:当文档的序列号是指定值时才更新 if_primary_term:当文档的primary term是指定值时才更新 op_type:如果设置为create则指定id的文档必须不存在...result:索引的结果,created或者updated 我们在创建文档时,如果指定的索引不存在,则ES会自动为我们创建索引。...更新文档 了解了如何创建文档之后,我们再来看看应该如何更新一个已经存在的文档。其实在创建文档时我们就提到过,使用PUT //_doc/的方法就可以更新一个已存在的文档。...realtime:如果设置为true,则请求是实时的而不是近实时。

    69020
    领券