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

Java:如何更优雅处理

来源 | lrwinx 作者 | https://lrwinx.github.io/ 导语 在笔者几年开发经验中,经常看到项目中存在到处判断情况,这些判断,会让人觉得摸不着头绪,它出现很有可能当前业务逻辑并没有关系...有时候,更可怕是系统因为这些情况,会抛出指针异常,导致业务系统发生问题。 此篇文章,我总结了几种关于处理手法,希望对读者有帮助。...尤其是对接口抽象,它在设计开发中占很大比重,我们在开发时希望尽量面向接口编程。...这种方式可以在调用者调用接口时候看到接口定义,但是,这种方式是”弱提示”! 如果调用者忽略了注释,有可能就对业务系统产生了风险,这个风险有可能导致一个亿!...除非接口文档注释上加以说明。 那如何约束入参呢?

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

MySQL 中NULL区别?

01 小木故事 作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中NULL。那你知道它们有什么区别吗? 学不动了,也不想知道它们有什么区别。...前些天我好朋友小木去应聘工作,他面试完回来和我聊天回味了一道他面试题。 ---- 面试官:你有用过MySQL吗? 小木:有! 面试官:那你能大概说一下Mysql中 NULL区别吗?...02 NULL NULL也就是在字段中存储NULL也就是字段中存储空字符(’’)。...4、在进行count()统计某列记录数时候,如果采用NULL,会别系统自动忽略掉,但是是会进行统计到其中。 5、MySql中如果某一列中含有NULL,那么包含该列索引就无效了。...6:实际到底是使用NULL还是(’’),根据实际业务来进行区分。个人建议在实际开发中如果没有特殊业务场景,可以直接使用。 以上就是我对此问题整理思考,希望可以在面试中帮助到你。

2.4K10

mysql (null)空字符()区别

空字符('')(null)表面上看都是,其实存在一些差异: 定义: (NULL)长度是NULL,不确定占用了多少存储空间,但是占用存储空间 空字符串('')长度是0,是不占用空间 通俗讲...(NULL)就像是一个装满空气杯子,含有东西。 二者虽然看起来都是、透明,但是有着本质区别。...区别: 在进行count()统计某列时候,如果用null系统会自动忽略掉,但是空字符会进行统计。 不过count(*)会被优化,直接返回总行数,包括null。...(null)并不会被当成有效去统计。 同理,sum()求和时候,null也不会被统计进来,这样就能理解, 为什么null计算时候结果为,而sum()求和时候结果正常了。...在设置字段时候,可以给字段设置为 not null ,因为 not null 这个概念默认是不冲突

2.9K30

小白学习MySQL - TIMESTAMP类型字段默认属性影响

,可能会注意到,日志中记录SQL语句显示createtimeupdatetime都只声明了TIMESTAMP类型,缺少了原始建表语句中NULLDEFAULT属性,这会有什么影响?...timestamp 列 cannot be null》这篇文章其实介绍过,MySQL中有个explicit_defaults_for_timestamp变量,他决定了MySQL是否为TIMESTAMP列默认...给这样列分配一个NULL是允许,并将该列设置为current timestamp。...虽然原始建表语句中TIMESTAMP类型字段包含了NULLDEFAULT属性,但是根据同步软件错误提示,很明显,不知道什么原因,他在执行时候忽略了这两个属性,导致真实执行语句是, create...另外,多说一点,原始语句中createtimeupdatetime列都指定了默认,但还是设置NULL属性,这其实就有些矛盾了,或者说是设计上不严谨,从规范设计开发角度,还是应该避免, create

4.6K40

返回函数LastnonBlank第2参数使用方法

函数LastnonBlank第2参数使用方法 LastnonBlank(,) 参数 描述 column 列名或者具有单列表,单列表逻辑判断 expression...如果我们第二参数只写一个常数,则等同于返回列表最大,主要差异表现在汇总合计上。 有2张表,一张是余额表,另外一张是日历表,并做关系链接。 ? ? 我们来看下3种写法,返回不同结果。...解释:带常数LastnonBlank度量值,不会显示汇总,因为只返回日期列里最大。因为LastnonBlank是根据ACISS大小来返回最后一个,也就是返回ACISS最大。...第1个度量,既然知道第2参数是常数,也就是返回最大,日历筛选时候,因为汇总时候是没有指定,所以返回为空白。 第2个度量,是在日历表上进行筛选后进行返回最后日期,所以返回也不带有汇总。...第3个度量因为返回是相关表,也就是原表日期,所以返回时候也就有了汇总一栏。 如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身工作效率。

2K10

技术分享 | MySQL TIMESTAMP 类型字段默认属性影响

,可能会注意到,日志中记录 SQL 语句显示 createtime updatetime 都只声明了 TIMESTAMP 类型,缺少了原始建表语句中 NULL DEFAULT 属性,这会有什么影响...timestamp 列 cannot be null》这篇文章其实介绍过,MySQL 中有个 explicit_defaults_for_timestamp 变量,他决定了 MySQL 是否为 TIMESTAMP 列默认...给这样列分配一个 NULL 是允许,并将该列设置为 current timestamp 。...虽然原始建表语句中 TIMESTAMP 类型字段包含了 NULL DEFAULT 属性,但是根据同步软件错误提示,很明显,不知道什么原因,他在执行时候忽略了这两个属性,导致真实执行语句是:...另外,多说一点,原始语句中 createtime updatetime 列都指定了默认,但还是设置 NULL 属性,这其实就有些矛盾了,或者说是设计上不严谨,从规范设计开发角度,还是应该避免

4.9K20

postgresql 如何处理NULL 与 替换问题

最近一直在研究关于POSTGRESQL 开发方面的一些技巧问题,本期是关于在开发中一些关于NULL 处理问题。...在业务开发中,经常会遇到输入为NULL 但是实际上我们需要代入默认问题,而通常处理方法是,在字段加入默认设置,让不输入情况下,替换NULL同时还具备另一个字段类型转换功能。...1 默认取代NULL 2 处理程序可选字段情况 3 数据转换类型转换 下面我们看看如何进行实际中相关事例 事例1 程序中在需要两个字段进行计算后,得出结果进行展示,比如买一送一,或买一送二...实际上,如果在设计表时候,给这个字段默认为1 ,也可以解决这个问题,但是如果早期未做处理,上线后数据量较大,也可以用coalesce 来解决这个问题,并且使用这个函数是灵活,后面NULL 可以替代也是你可以随意指定...COALESCE可以与其他条件逻辑(如CASE)结合使用,这基于特定条件或标准对NULL进行更复杂处理。通过利用COALESCE灵活性并将其与条件逻辑相结合,您可以实现更复杂数据转换替换。

1.2K40

Excel公式:提取行中第一个

标签:Excel公式,INDEX函数,MATCH函数 有时候,工作表行中数据可能并不在第1个单元格,而我们可能会要获得行中第一个单元格中数据,如下图1所示。...图1 可以使用INDEX函数/MATCH函数组合来解决这个问题,如果找不到的话,再加上IFERROR函数来进行错误处理。...在单元格H4中输入公式: =IFERROR(INDEX(C4:G4,0,MATCH("*",C4:G4,0)),"") 然后向下拖拉复制公式至数据单元格末尾。...公式中,使用通配符“*”来匹配第一个找到文本,第二个参数C4:G4指定查找单元格区域,第三个参数零(0)表示精确匹配。 最后,IFERROR函数在找不到单元格时,指定返回。...这里没有使用很复杂公式,也没有使用数组公式,只是使用了常用INDEX函数MATCH函数组合来解决。公式很简单,只是要想到使用通配符(“*”)来匹配文本。

3.4K40

【TypeScript 演化史 -- 10】更好检查 混合类

上已经收录,更多往期高赞文章分类,也整理了很多我文档,教程资料。欢迎Star完善,大家面试可以参照考点复习,希望我们一起有点东西。...如果 instanceof 运算符右操作数是可。 如果一元运算符+,-,~,++或者--操作数是可。 来看看如果咱们不小心,可表达式操作数就会坑下咱们情况。...只要不再将max与undefined 进行比较,就可以了 混合类 TypeScript 一个目的是支持不同框架库中使用通用 JS 模式。...class Timestamped extends Base { timestamp = Date.now(); }; } 现在已经介绍了两个类型别名mixin函数声明,接下来看看如何在另一个类中使用...如何所示,咱们如何在 User 类中使用混合 Activatable: const ActivatableUser = Activatable(User); // 实例化新"ActivatableUser

2.7K20

C++奇迹之旅:内联函数auto关键推导指针

修饰,否则编译器会忽略inline特性。...(关于迭代器这个问题,以后会讲,现在提一下,没办法讲清楚,现在大家了解一下就可以了) 指针nullptr(C++11) C++98中指针 在良好C/C++编程习惯中,声明一个变量时最好给该变量一个合适初始...不论采取何种定义,在使用指针时,都不可避免会遇到一些麻烦,比如: void f(int) { cout << "f(int)" << endl; } void f(int*) { cout...在使用nullptr表示指针时,不需要包含头文件,因为nullptr是C++11作为新关键字引入。 2....在C++11中,sizeof(nullptr) 与 sizeof((void*)0)所占字节数相同。 3. 为了提高代码健壮性,在后续表示指针时建议最好使用nullptr

12910

字符串、集合如何判断?看看成年人正确操作

在平时开发中,基本上都会用到字符串判断集合判断处理,还记得在刚干开发时候,写代码在现在看起来是真的有点Hello World,那么这次分享两个非常常用方法,字符串判断集合判断...字符串判断 你有没见过下面的代码,要是没见过你就不配是一个程序员,我还写过呢!现在回过头来看感觉自己当年真的是太年轻了。...第二种,isNotBlank 这个方法也是用来判断字符串是否为。...集合判断 再来看一段当年传奇之作 public static void main(String[] args) { List list = new ArrayList...} sb.deleteCharAt(sb.length() - 1); return sb.toString(); } /** * 创建一个集合

1.3K20

关于索引讨论(r3笔记第80天)

在日常工作中,总是有特殊身份,对于它处理有时候也是比较纠结。 有时候创建索引时候会因为出现一些奇怪结果。 有时候一个简单查询因为却走不了索引。 有时候却因为而能走索引。...,我们来看看在索引中一些细节。...至于为什么可以成功插入id,name列为行,是因为对于oracle来说,(null,null)(null,null)是不同,null总是介于一种很模糊状态。...,null统计结果是包含了Null空串。...此外,在平时工作中,如果需要对某个表创建索引,就需要考虑null情况,为了使得索引能够正常启用,我们需要索引列中至少有一列存在约束。

71060

SQL 中 NULL :定义、测试处理数据,以及 SQL UPDATE 语句使用

SQL NULL 什么是 NULL ? NULL 是指字段没有情况。如果表中字段是可选,那么可以插入新记录或更新记录而不向该字段添加值。此时,该字段将保存为 NULL 。...需要注意是,NULL 与零或包含空格字段不同。具有 NULL 字段是在记录创建期间留空字段。 如何测试 NULL ? 使用比较运算符(如=、)无法测试 NULL 。...IS NOT NULL 运算符 IS NOT NULL 运算符用于测试 NULL )。...IS NOT NULL; 这是关于 SQL NULL 基本介绍示例。...使用 IS NULL IS NOT NULL 运算符可以有效地处理数据库中情况。 SQL UPDATE 语句 UPDATE 语句用于修改表中现有记录。

40020

. - 在有总bps限速条件下,单个channelbps不能为,也不能为正数

- 在有总bps限速条件下,单个channelbps不能为,也不能为正数 三、定位原因 很明显,error信息里面也说了,DataX配置有问题,单个channelbps不能为,也不能为正数...如果设置了总bps限速,那单个channelbps不能为,也不能为正数。 channel数量=总bps限速/单个channelbps。...如果设置了总tps限速,那单个channeltps不能为,也不能为正数。 channel数量=总tps限速/单个channeltps。...如果bps限速tps限速没有设置,那channel数量默认都是Integer.MAX_VALUE。 如果bps限速tps限速都设置了,那谁比较小,以哪个为主。...如果bps限速tps限速都没有设置,那才读取直接设置,也就是说,直接设置优先级最低。 如果都没有设置,那直接抛异常,也就是说,必须设置Job运行速度。

1.1K30

【TypeScript 演化史 — 第十章】更好检查 混合类

如果-,*,**,/,%,>,>>>, &, | 或 ^运算符任何一个操作数是可。 如果 ,=或 in 运算符任何一个操作数是可。...如果 instanceof 运算符右操作数是可。 如果一元运算符+,-,~,++或者--操作数是可。 来看看如果咱们不小心,可表达式操作数就会坑下咱们情况。...只要不再将max与undefined 进行比较,就可以了 混合类 TypeScript 一个目的是支持不同框架库中使用通用 JS 模式。...class Timestamped extends Base { timestamp = Date.now(); }; } 现在已经介绍了两个类型别名mixin函数声明,接下来看看如何在另一个类中使用...如何所示,咱们如何在 User 类中使用混合 Activatable: const ActivatableUser = Activatable(User); // 实例化新"ActivatableUser

2.6K10

select count(*)、count(1)、count(主键列)count(包含列)有何区别?

下班路上看见网上有人问一个问题: oracle 10g以后count(*)count(列)性能方面有什么区别?...首先,准备测试数据,11g库表bisalid1列是主键(确保id1列为),id2列包含, ?...前三个均为表数据总量,第四个SQL结果是99999,仅包含记录数据量,说明若使用count(允许列),则统计是非记录总数,记录不会统计,这可能业务上用意不同。...其实这无论id2是否包含,使用count(id2)均会使用全表扫描,因此即使语义上使用count(id2)前三个SQL一致,这种执行计划效率也是最低,这张测试表字段设置和数据量不很夸张,因此不很明显...,另一方面不会统计,因此有可能业务上需求就会有冲突,因此使用count统计总量时候,要根据实际业务需求,来选择合适方法,避免语义不同。

3.3K30
领券