目录

1、老师告诉我分母不能是0。

2、switch 为什么一定要加break?

3、Java8 的stream 和 limit


记录最近遇到的一些坑点,分享给常在河边走的你。

1、老师告诉我分母不能是0。

场景:项目有个功能是竞猜功能,竞猜需要的金币是根据公式:

M+ N*0.5/ diffDays。M是根据玩家等级策划配置的值,N是某一天到当前时间的收入总和,diffDays 是收入的天数。

在测试的时候,测试的同学发现在玩家有14亿的金币仍然不能竞猜,这很奇怪。经过调试发现diffDays 为0,为什么除0不报错呐?老师告诉我的不对吗?

难受。

原因:double类型数据直接除0,0会向上转型为double,变为0.0,0.0在内存不是0,而是一个不精确的数,可能是0.000000000001或其它,所以一个正数除以0.0结果就得很大很大。所以返回了Long的最大值。

2、switch 为什么一定要加break?

场景:在写一个gm命令的时候将一个功能的gm全部定义进了一个协议内,通过case 进行区分操作,想当然的一位 {} 就是语句的结束,出现了多个case同时执行的情况。代码如下

探索一下为什么?想要知道为什么一切还要从源头说起:字节码

可以看到switch case 被编译成Lookupswitch ,两个case 被编译为L2,L3 ,并且自动添加了default L4。

接下来看下加入break 会做什么?

加入break 之后,在L2 之后补上了L5,GOTO L4 ,L4 直接执行了18行,也就是程序的结束,不再执行下面的case。

除了Lookupswitch 还有 tableswitch ,具体的区别 你知道吗?下期再说哦。

3、Java8 的stream 和 limit

场景:最近有个功能是记录竞技场的前三名的玩家信息,但是只保留近5个赛季的,多余的则删除。写出了以下的代码:

运行的结果是:

妈耶:完全不是我设想的5个赛季,蛋疼。分析下原因:Java8 的写了不少了,但是有些函数还是有些想当然了。因为这个集合里有season 有多个数据,在最后进行limit 的时候取5个,最终只取到了8和9,怎么解决呐?解决重复数据当然用distinct。

总结:搬砖不易,还是需要注意细节。你遇到过哪些坑,可以留言分享,记得点赞分享。

1.浮点数的0 不是0,2.switch不能忘记break,3.limit 是在所有数据中进行筛选。

浮点数的0不是0,怀疑人生了相关推荐

  1. 浮点数除0和余0、定义

    面试遇到的浮点数除0和余0.定义的选择题,小结一下 首先看代码 double a = 9.1; double b = 0.0; double e = 5.0; double e2 = 5; doubl ...

  2. 从0.1加0.2不等于0.3谈Python浮点数的前世今生

    文章目录 1. 0.1加0.2不等于0.3? 2. 为什么要使用浮点数? 3. 浮点数的二进制和十进制是怎样转换的? 4. 如何实现0.1加0.2等于0.3? 1. 0.1加0.2不等于0.3? 什么 ...

  3. 整数运算和浮点数运算中除数为0的区别

    整数运算和浮点数运算中除数为0的区别: 整数中除数为0:int d4 = 1 / 0: ​ 报错:Exception in thread "main" java.lang.Arit ...

  4. 刚刚用华为鸿蒙跑了个“hello world”!跑通后,我特么开始怀疑人生....

    作者:一个俗人 来源:https://my.oschina.net/u/169565/blog/4557279 本文仅作学术分享 最近华为鸿蒙OS 2.0正式开源!关于鸿蒙的教程其实网上也已经有一些尝 ...

  5. Access denied for user(这个几乎让我怀疑人生的异常)

    昨天一时兴起,打算根据自己的某些想法,业余时间写一个简单的项目,用以巩固那些重要的知识,以及练手一些即将学习的技术. 然而才一开始,便有一盆冷水迎面而来,在搭建整个框架环境的时候竟然就被卡住了!主要是 ...

  6. 菜鸟第一次挑战apk逆向,结果整得怀疑人生,终于知道android apk加密的重要性...

    最近准备从x86上转移到linux上, 于是乎弄了个手游来玩, 正巧朋友推荐了一个修改软件,类似于八门神器.CE,用于搜索修改游戏数据,于是抱着好奇的心理初步研究了下该软件的原理: 研究了下软件, 搜 ...

  7. 程序员们,曾经是否有个bug让你开始怀疑人生

    点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 来源:Android开发中文站 https://mp.weixin.qq.com/s/d4 ...

  8. 985毕业工作一年,腾讯试水一面连环50问,瞬间表示怀疑人生了.

    背景 985毕业至今刚好一年,我曾做过两三个月的测试感觉不是很合适,后面选择从事后端开发,还挺香.现在已经进入秋招的提前批了,想着去大厂试试水,就去了腾讯,整个一面下来我整个人都傻了,表示怀疑人生.. ...

  9. Bugku-杂项-怀疑人生;红绿灯

    怀疑人生 看见这种东西,直接fore most得到隐藏文件 然后打开之后发现一个压缩文件,发现有密码,直接用字典破解 没想到居然是password,直接解压,得到一个txt文件 里面是一段base64 ...

最新文章

  1. Several ports (8005, 80, 8009) required by Tomcat v6.0 Server at localhost are already in use
  2. VLC播放器如何录制rtsp流生成视频文件?
  3. 表情转html,PHP转换emoji表情为HTML字符实体
  4. Failed to get response from /vue-cli-version-marker
  5. 黑暗的富士康服务器被黑厂商用户名密码被泄
  6. 电脑网络基础知识:ipconfig/all命令及nslookupDns查询命令
  7. 大端模式 小端模式学习笔记
  8. 现网问题排查实战:Jstat,Jstack,Jmap
  9. Javascript特效:获取选中内容分享至微博
  10. python计算矩阵的散度_数据集相似度度量之KLJS散度
  11. 在原有产品的基础上建立软件产品线的方式
  12. 为macbook双系统的windows装驱动
  13. [论文笔记] Google Spanner Distributed Database
  14. 虚幻浏览器插件 加载透明网页
  15. 哪些期货公司开户手续费更低?
  16. 用AI玩55款经典游戏是什么体验?
  17. 遇到jQuery 中的 slideUp ,slideToggle和 slideDown 动画重复执行
  18. 常见面试问题总结目录
  19. 线性布局html,线性布局中的layout_weight属性
  20. Python+Vue计算机毕业设计高考填报志愿综合参考系统1kc8i(源码+程序+LW+部署)

热门文章

  1. Classifying Relations via Long Short Term Memory Networks along Shortest Dependency Paths
  2. ICTCLAS2013(NLPIR汉语分词系统) Java版本的使用方法
  3. 吴用问道 flash软件
  4. Unity如何接入本地推送 Mobile Notifications
  5. tensorflow1.X版本中打印训练好模型各个节点名,并保存在txt,根据输入输出节点保存‘.pb’文件
  6. “蓝桥杯”练习系统——历届试题
  7. linux bugfree安装教程,Linux系统下安装bugfree操作方法
  8. 美国计算机试题,USACO美国计算机竞赛
  9. 2-2 SPU和SKU详解及MyBatisPlus自动生成
  10. 采用QT进行OpenGL开发(二)绘制立方体