首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

阿里华为等大厂架构师如何解决空指针问题

对程序来说,null就是指针没有任何指向,而结合业务逻辑情况就复杂得多,需考虑: DTO字段的null到底意味着什么?是客户端没传给这个字段? 既然空指针很讨厌,那么DTO的字段要设默认值?...NPE原因 DTO字段null的含义 JSON到DTO的反序列化过程,null的描述有歧义: 客户端不传某个属性传null,该属性DTO中都是null。...然后,由于DTO已经巧妙使用了Optional来区分客户端不传值和传null值,那么业务逻辑实现上就可以按照客户端的意图来分别实现逻辑。...对于年龄,我们认为如果客户端希望更新年龄就必须传一个有效的年龄,年龄不存在重置操作,可以使用Optional的orElseThrow方法值为空的时候抛出IllegalArgumentException...为测试使用Optional是否可以有效区分JSON没传属性还是传了null,JSON设个null的age,结果是正确得到了年龄不能为空的错误提示: curl -H "Content-Type:application

1.1K30

Python基础知识点梳理 推荐收藏

标识符不能是Python的关键字和保留字 也不建议使用Python的函数名作为标识符,因为这样会导致函数被覆盖 命名规范: Python中注意遵循两种命名规范: 1)....(str) 字符串用来表示一段文本信息,字符串是程序中使用的最多的数据类型 Python字符串需要使用引号引起来 引号可以是双引号,也可以是单引号,但是注意不要混着用 s = 'hello'...可以使用三重引号来表示一个字符串 ''' ''' 三重引号可以换行,并且会保留字符串的格式, 举例: s = '''锄禾日当午, 汗滴禾下土, 谁知盘中餐, 粒粒皆辛苦''' print(s)运行结果...: 转义字符 可以使用 \ 作为转义字符,通过转义字符,可以字符串使用一些特殊的内容 例子: \' 表示' \" 表示" \t 表示制表符 \n 表示换行符 \\ 表示反斜杠 \uxxxx 表示Unicode...id Python可以对两个字符串进行大于(等于)小于(等于)的运算, 当对字符串进行比较时,实际上比较的是字符串的Unicode编码 比较两个字符串的Unicode编码时,是逐位比较的 利用该特性可以字符串按照字母顺序进行排序

59210
您找到你想要的搜索结果了吗?
是的
没有找到

python0072_整数类型_int_integer_整型变量

字符串在内存的地址 就是 变量的id除了字符串 还有什么变量类型?...存储位置 i_age 在内存的地址 id(i_age)​添加图片注释,不超过 140 字(可选)第一句的赋值过程 在内存中分配一块空间 存储 整数 分配空间的位置 id(i_age)然后把分配空间地址给...匹配、显示之类的目的两种类型之间 可以相互转化?...具体存的 是 整型数字类的 对象这个 int型的对象 电脑内存 里面什么样子 呢?...二进制 在打印输出的时候 使用十进制 这符合 我们的生活习惯因为 我们有 十 个手指头但是计算机用的是 二进制 binary​添加图片注释,不超过 140 字(可选)电脑存储和运算的时候 使用二进制

15120

【翻译】Kotlin致简代码之路

我们应该分解子程序并给他们取一个可描述性的名称。这样的话,我们的代码就会变得像一个故事。而且,我们应该从主要逻辑辨别出细节。 Kotlin 可以我们做到这点?不行,因为这些规则是无关于语言的。...表达式 流程控制结构作为表达式 Kotlin ,流程控制结构体是表达式而不是语句。我们刚才已经看到 when 表达式实践了。...如果你的变量必须是可以修改的,你可以使用 var 。但是请你使用 var 之前三思。 val id = 1 id = 2 // 编译错误!... Kotlin 我们可以这样使用数据类: data class DesignData( val id: Int, val fileName: String,...任何时候可读性和简单性原则比起使用 Kotlin 那些有趣的特性来说更加重要。 总结 我们可以使用 Kotlin 写出更加简洁的代码?是的,毫无疑问!

1.4K30

Python回顾与整理3:数字

(3)整型         末尾加上字母“L”“l”,但建议写成大写 需要注意的是,现在,Python的标准整型整型其实区分已经不明确了,已经不需要考虑是使用标准整型整型了,因为一旦有数据溢出的情况...,Python将会自动为我们转换为整型,即整型整型会慢慢统一。...(关于浮点数的表示方法以及计算机的处理,可以参考计算机组成原理的相关书籍) 下面是一些合法的表示方法: >>> 0.0 0.0 >>> -777. -777.0 >>> 96e3 * 1.0 96000.0...需要注意的是,Python2.2以前,这些转换函数只是作为Python的内建函数使用,但在之后,由于Python的类和类型进行了统一,所以这些内建函数实为工厂函数(《Python回顾与整理2:Python...,默认base为10: >>> int('123') 123 >>> int('123', 8) 83 >>> int('123', 16) 291  当然也可以指定为0,说明把原来的字符串作为一个整型

1.2K10

超越 DTO:探索 Java Record

目前,我们有几个示例用例,如下所示: MapStruct Jakarta JSONB Spring 值对象不可变类型 领域驱动设计(DDD),值对象用于表示来自问题领域上下文的概念。...关键在于,当你需要创建一个值对象不可变类型时,可以使用 Record。 不可变实体 等等,你是说不可变实体?这可能?这可能不太常见,但确实是可以的,比如当一个实体持有历史转变点数据。...} 为了方便创建对象,或者当你需要创建更复杂的对象时,可以使用方法工厂构建器。...我们已经介绍了许多种模式,接下来,我们将进入另一种代码设计模式。 状态的实现 某些情况下,我们需要在代码实现流状态。状态设计模式电子商务中有一个应用场景,即对于订单,我们需要维护其时序流。...Record 不只是 DTO 那么简单。本文中,我们探讨了一些用例,如值对象、不可变实体和状态的实现。 我们可以并发场景、CQRS、事件驱动架构利用不可变类。

42220

C++反射调用.NET(二) 定义数据接口 绑定委托方法 使用SOD DTO 对象 将.NET对象转换到C++结构体为何不使用序列化的问题

反射调用返回复杂对象的.NET方法 定义数据接口 上一篇C++反射调用.NET(一)我们简单的介绍了如何使用C++/CLI并且初步使用了反射调用.NET程序集的简单方法,今天我们看看如何在C++...所以这里涉及到2个问题: 1,从Object对象取出数据; 2,将数据转换并且赋值给C++本地数据结构 对于第一个问题,我们可以反射DTO对象的属性,然后跟本地数据接口一一对应,但是,本来我们已经反射调用方法了...("ID"); 将.NET对象转换到C++结构体 示例我们定义了一个CppUserInfo结构体: struct CppUserInfo { int ID; //wstring....NET与C++的相互转换,基本上就能够使用.NET的DTO对象了,因为其它数字类型只要类型兼容,是可以直接使用的,比如int类型。...为何不使用序列化的问题 进行分布式跨平台调用的时候,序列化常常作为一个有效手段被大量使用,但是我们的应用有几个特点: 1,没有分布式,进程内进行不同语言平台调用; 2,不知道反序列化的类型,因为C+

2.9K70

Spring认证中国教育管理中心-Spring Data R2DBC框架教程三

使用上表的关键字可以与删除匹配行的派生查询结合使用delete…Byremove…By创建派生查询。...实体的 ID 必须使用 Spring Data 的@Id注解进行注解。 当您的数据库具有用于 ID 列的自动增量列时,生成的值将其插入数据库后设置实体。...以下示例(我们本章前面也使用过)是一个封闭投影: 例 67....动态投影 到目前为止,我们已经使用投影类型作为集合的返回类型元素类型。但是,您可能希望选择调用时使用的类型(这使其成为动态的)。要应用动态投影,请使用如下例所示的查询方法: 示例 74....直接使用 DTO 类型,您的查询方法可以从不限于域模型的更动态的投影受益。

2.3K30

造轮子之设置管理

前面我们基础设施基本搭建完毕,后面可以做一些稍微复杂点的功能了,接下来就来实现一个设置管理。 设置管理一般用做一些系统设置之类的,如邮箱配置等,面向使用人员。...而不需要修改我们的配置文件,修改配置文件的方式就偏向于技术人员了。 话不多说,开造。 设计结构 设置管理需要2个表,一个是设置组表,比如什么邮箱设置是一个分组,公众号设置是一个分组。.../// Int, /// /// 整型 /// ...只需一行代码将SettingProvider加入到WheelServiceBase和WheelControllerBase,后续就可以很方便的获取设置,不需要频繁构造器注入: public ISettingProvider...SettingProvider => LazyGetService(); 测试 启动程序,测试一下获取设置值,这里可以看到,我们通过SettingProvider成功读取了设置

20930

基于 CPython 解释器,为你深度解

前言 本次分析基于 CPython 解释器,python3.x版本 python2时代,整型有 int 类型和 long 整型整型不存在溢出问题,即可以存放任意大小的整数。...python3后,统一使用整型。这也是吸引科研人员的一部分了,适合大数据运算,不会溢出,也不会有其他语言那样还分短整型整型整型...因此python就降低其他行业的学习门槛了。...不溢出的整型的可行性 尽管 C 语言中,整型所表示的大小是有范围的,但是 python 代码是保存到文本文件的,也就是说,python代码并不是一下子就转化成 C 语言的整型的,我们需要重新定义一种数据结构来表示和存储我们新的...整型的 ob_digit 中元素理论上可以保存的int类型有 32 位,但是我们只保存 15位,这样元素之间的乘积就可以只用 int 类型保存即可, 对乘积结果做位移操作就能得到尾部和进位 carry...有了这种存放方式,在内存空间允许的情况下,我们可以存放任意大小的数字了。 ? 整型的运算 加法与乘法运算都可以使用我们小学的竖式计算方法,例如对于加法运算: ?

93510

深入浅出Android Support Annotation(什么是android.support.annotation.NonNull的拓展)

原文如下: Android Support Library19.1版本,Android工具小组引入了几个很酷的注解类型,供开发者工程中使用。...资源类型注解 是否曾经传递了错误的资源整型值给函数,还能够愉快的得到本来想要的整型?资源类型注解可以帮助我们准确实现这一点。...在下面的代码我们的sayHello函数预期接受一个字符串类型的id,并使用@StringRes注解修饰: 1 2...而我们传递了一个样式资源id给它,这时IDE将提示警告 类似的,我们把警告的地方使用一个字符串资源id代替警告就消失了: 1 sayHello(...IceCreamFlavourManager.setFlavour时,IDE将报错如下: IDE甚至会提示我们可以使用的有效的取值 我们可以指定整型作为标志位,也就是说这些整型可以使用’|’或者

63820

Spring认证中国教育管理中心-Spring Data JPA 参考文档五

1") List findByLastname(String lastname); } 为了避免@Query注释的查询字符串声明实际的实体名称,您可以使用该#{#entityName}...为避免具体接口上重复自定义查询方法的定义,可以@Query通用存储库接口的注解的查询字符串使用实体名称表达式,如下例所示: 示例 68.存储库查询方法中使用 SpEL 表达式 - entityName...在这些 SpEL 表达式,实体名称不可用,但参数可用。可以通过名称索引访问它们,如下例所示。 示例 69.存储库查询方法中使用 SpEL 表达式 - 访问参数。...您可以实体上使用该注释来配置结果查询的获取计划。获取的类型(FetchLoad)可以通过使用注释type上的属性进行配置@EntityGraph。...作为一种解决方法,您可以使用命名查询ResultSetMapping Hibernate 特定的ResultTransformer 动态投影 到目前为止,我们已经使用投影类型作为集合的返回类型元素类型

1.6K20

介绍一种找bug的方法

把那段长长的代码几个关键的部分分开来执行,看哪一段会报错,这样就可以更加精准的定位问题,从而可以快速的解决问题。...我们把这段代码可以拆成以下几部分: df[df["city_id"] == 1] 运行上面的代码,会把df表city_id等于1的全部数据取出来。...列的第一个值从时间类型转换为字符串类型 str(df[df["city_id"] == 1]["Stime"][0])[11:13] 再运行上面的这段代码,会把字符串第11:13位置的字符获取出来...int(str(df[df["city_id"] == 1]["Stime"][0])[11:13]) 再运行上面的代码,会把取出来的字符串转化为整型。...掌握了分段执行,让你能够看到一段代码报错以外不再慌张,也不需要再去求助别人,自己也可以游刃有余的解决问题。 你还可以看: Python的这几种报错你遇到过

57710

#6 Python数据类型及运算

64位系统:整数的位数就是64位,寻址范围为:-263 ~ 263-1 ,即-9223372036854775808 ~ 9223372036854775807 整形(long) Python,...浮点型(float) 上面两种数据类型都是整数,但在实际并不可能全是整数,还有小数啊,于是浮点型便应运而生,说白了浮点型就是小数,并且可以使用科学计数,计算机,科学计数的倍数10用e代替,如:5.21x105...列表(list) 对于列表,萌新可能会很陌生,你可以暂时把它理解为一维数组,列表的Python使用次数也是相当多的,是除字符串以外必须掌握的一种数据类型。...] 可以看到,被一对方括号括起来的数据就是列表,刘表里面可以又其他数据类型,上面的列表包括:字符串整型。...:字符串整型

53110

DDD-CQRS能解什么问题

,不应该直接间接的修改对象的状态 阻抗:现在有些方法查询的时候进行了懒删除 CQRS期望解决的问题 类似懒删除这种导致的数据不一致,难以排查的问题 使用同一个领域对象来进行数据读写可能会遇到资源竞争的情况...与目前的DDD区别 领域对象我们不再是使用一套领域对象了,领域对象主要针对的是写。读直接是DTO 比如上面提到的brand聚合就不会无限扩大了。...落地 事件溯源目前比较难落地,读写分离可以尝试。 遵循聚合根的定义,必须与对象的组合区分开,对象组合考虑用DTO或者其他 我们再来回顾下聚合根。...其次,聚合在技术上有非常高的价值,可以指导详细设计。 聚合由根实体,值对象和实体组成。 如何创建好的聚合? 边界内的内容具有一致性:一个事务只修改一个聚合实例。...即使一定要包含,可以考虑将其创建为值对象。 聚合之间的关联通过ID,而不是对象引用 聚合内强一致性,聚合之间最终一致性 为了查询,领域聚合根无限扩大 组合领域对象是领域

99110

Python黑帽编程2.2 数值类型

Python黑帽编程2.2 数值类型 数值类型,说白了就是处理各种各样的数字,Python的数值类型包括整型整型、布尔、双精度浮点、十进制浮点和复数,这些类型很多方面与传统的C类型有很大的区别...2.2.1 标准整型整型 标准整型等价于C的有符号整型(long),与系统的最大整型一致(如32位机器上的整型是32位,64位机器上的整型是64位),可以表示的整数范围在[-sys.maxint...图2 整型整型的超集,可以表示无限大的整数(实际上只受限于机器的虚拟内存大小)。整型字面值的后面带有字母“L”“l”(推荐使用大写的“L”)。...图4 下面我们看看bool类型作为只有0和1取值的特殊整型的特性。...双精度浮点型使用的是底和指数的表示方法,小数表示上精度有限,会导致计算不准确,decimal采用十进制表示方法,看上去可以表示任意精度。 下面我们看一下十进制浮点的例子。

2K90

MongoDB入门实战教程(5)

前面我们学习了MongoDB的基本查询命令操作,作为后端开发的我们大部分场景都是应用程序中和MongoDB进行交互,因此本篇我们来学习一下如何在ASP.NET Core中集成MongoDB。...因此,一般我们会给文档的日期类型加上如下所示的注解,将它转换为本地时间传输: [BsonDateTimeOptions(Kind = DateTimeKind.Local)] 实际应用我们会给实体类创建一些...DTO,然后应用层进行DTO向DO的转换。...当然,我们可以使用 约定大于配置 的方式,统一采用实体类的名字 作为默认的 集合名,示例如下: _books = mongoDatabase.GetCollection(typeof(Book...作为单一实例注入,这是因为 BookService 直接依赖于 MongoClient,而根据官方Mongo Client重用准则,我们应该使用单一实例服务IoC容器中注入MongoClient。

1.2K10

WEB功能测试说明

3)字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度。 4、中文字符处理:能够输入、英文的系统输入中文,看会否出现乱码出错。...5、信息反复:一些须要命名,且名字应该唯一的信息输入反复的名字ID,看系统有没有处理,会否 报错,重名包含是否区分大写和小写,以及输入内容的前后输入空格,系统是否作出正确处理。...19、空格检查:输入信息项,输入一个连串空格。查看系统怎样处理。如对于要求输入整型、 符点型变量的项,输入空格,既不是空值,又不是标准输入。...20、输入法半角全角检查:输入信息项,输入半角全角的信息,查看系统怎样处理。 如对于要 求输入符点型数据的项,输入全角的小数点(“。”“.”。如4.5)。...即大于128的Ascii相应的字符解密时无法解析,尝试使用“uvwxyz”等一些码值较大的字符作为 password。同一时候。password尽可能的

1.2K41

·FMDB:第三方数据库处理框架·用法示例篇(附源码Demo)

关于学习使用FMDB,除了笔者整理的官方文档翻译版,更重要的是实践和代码练习。...而关于FMDatabaseQueue,官方文档说:如果你想在多线程执行多个查询更新,你应该使用该类。这是线程安全的。 然而,你看完还是不知道FMDatabaseQueue是什么。...字面Queue意义上,它只是个队列?那还需要自己另外建一个DataBase?其实FMDatabaseQueue这个类的对象已经把一个数据库和有关事务操作的方法封装在一起了。...其中,有两种风格,一种executeUpdate方法后面直接写上字符串的字面量语法。另一种执行方法的后面基于SQL字符串初始化一个NSString对象。...但对于也仅仅对于SELECT查询操作,可以省掉'%@'两边的''噢。DEMO代码也是这样做的。

91620
领券