自编java细节(3)----之你不可能得到正确的结果

PHP hash_hmac sha256 遇到的坑 解决PHP与JAVA sha256结果不一致 在对接环信客服云验签时遇到一个坑,简单记录下 官方示例如下 第 2 步:根据Client Secret与待加密字符串计算signature 使用hmac-sha256加密,然后对其返回的原始二进制数据进行base64编码。 上述示例的计算结果为: yLgHjb8GckRpZ2uW8kb0qipODRkaFCIBNQsnZ2vhGMo= Java 代码示例: String secre... 阅读详情

我很高兴这一刻我又有了新的进展,又找到了新的好玩的东西,
先来看看下面的一段程序
public static boolean isOdd(int i){



       return i % 2 == 1;


}
你可否会考虑一下上面的方法是否总是正确,它是否会得到意想不到的结果呢??如果你认为它是正确的话,那么你的答案和我一开始的答案一样,我的初衷也是正确的,但是既然在这里摆上了一个这样的问题,那么总能说明的一个问题就是它是不正确的,但是到底是为什么呢?还要追寻到java的一个小小的细节问题上。
是的问题的根源都在这里:
这是关于java中'%'操作符的一个传说,在java中它被定义为任何时候都会满足以下的式子:
其中a是任何整数,b是任何非零整数。
(a/b)*b + (a%b) == a  ----这个式子在java的%运算中,被定义为总是返回true
这看起来可能最初并没有什么问题,但是%运算符还有另一个特性就是 它运算的结果和被除数的符号是一样的,
所以现在上面的方法的错误之处就显而易见了,当被除数是负数的时候,这个方法返回的都是-1,而不是1,所以这也是设计不到位的问题,
所以最后的结果就是在用上面的方法进行判断的时候,只要被除数是负数的情况,该方法总返回false,在被除数是正数的情况下,它有1/2的概率会返回false,所以该方法在3/4的情况下返回的都是false,这显然不是正确的。
所以要在判断的时候 时刻关注 %运算结果的符号问题, 现在我需要对上面的方法进行改装
public static boolean idOdd(int i){
   
     return a%b != 0;
}


所以以后再写方法的时候一定要准确测试你的方法在参数是整数负数或者是0的时候是否可以正确表达语义。
如果你在一个性能临界的环境中编写方法的时候可以使用这个方法
public static boolean idOdd(int i){
return (a & b) != 0;
}


最后祝福大家中秋快乐




解决C语言与JAVA c#语言 DES 结果不一致问题 应该会有朋友遇到从网上下载的C语言算法计算出来的结果与 JAVA C#标准库计算结果不一致,经我仔细分析结果如下: 1    网上看到的C语言DES算法可能 如:http://blog.youkuaiyun.com/kamaliang/article/details/6691653,或者http://bbs.youkuaiyun.com/topics/391077711,  很多网页都是复制粘贴, 其实这个DES算法是 阅读详情

相关推荐

ThinkPHP+Layui开发的ERP管理系统

ERP采购生产销售系统,一款基于ThinkPHP+Layui开发的ERP管理系统,帮助中小企业实现ERP管理规范化,此系统能为你解决五大方面的经营问题:1.采购管理 2.销售管理 3.仓库管理 4.资金管理 5.生产管理,适用于:服装鞋帽、化妆品、机械机电、家具装潢、建材行业、快销品、母婴用品、办公用品、汽配汽修、生鲜农贸、手机通讯、数码家电、医药用品、制造业、信息技术服务行业等。提供全部无加密服务端和前端源代码,独立部署,不受限制。

u011092458的博客 788

pageHelper一对多分页查询结果不正确

pageHelper使用过程中遇到的一些问题:当查询的结果包含list时查询出来的结果不对 例如:一篇文章-----一个分类------多个标签;这里的标签要用list,对应sql语句中的collection,PageInfo.getTotal()得到的结果就会以查询出来的标签的总数来算,并不是按照文章个数来算 以下这种方式不适用pageHelper分页查询 <select id="queryArticleInfo" resultMap="queryArticleInfoMap"> se

m0_47428652的博客 2136

手把手教你为高云DDR3控制器添加物理约束:从位置锁定到参数配置

本文详细介绍了在高云FPGA平台上为DDR3控制器添加物理约束的实战指南,从位置锁定到参数配置。通过解析高云DDR3控制器的架构,提供关键模块的位置约束和参数调优方法,帮助开发者解决时序不稳定、初始化失败等常见问题,实现稳定可靠的DDR3接口。

weixin_33738555的博客 272

自编java细节(1)

也是暑期時候寫的, 之前發布於 http://youngershen.com/blog 自编java细节(1) on August 13th, 2011 by youngershen | No Comments » java 是很强

hack2me---Just for fun 482

API安全攻防实战:从信息搜集到漏洞利用的完整路径

本文详细解析了API安全攻防实战的全过程,从信息搜集到漏洞利用,涵盖了渗透测试的核心技巧和工具使用。通过真实案例展示如何发现和利用API漏洞,如HTTP方法滥用、内容类型转换攻击等,并提供企业级防御策略和测试心得,帮助安全研究人员提升API安全防护能力。

weixin_30394981的博客 434

双击文件夹弹窗“找不到应用程序”,但是右键点击打开可以

此电脑、回收站、c、d、f盘、控制面板、任意文件夹等都没有办法双击打开。 右键中包含“使用filemanager打开”,是由于FileManager卸载残留导致的。 懒人专用附件 下载解压上面附件,双击导入可以清理FileManager软件残留 参考: 双击此电脑出现找不到应用程序,但是右键点击可以-其他-优快云问答https://ask.youkuaiyun.com/questions/7631439 电脑上的文件夹双击都提示找不到应用程序,但是右击打开就能打开,该怎么解决? - 知乎 (z

webmasterqpwou的博客 1万+

你可能不知道的Java小细节

1.下面代码: String p="abc"; String q="cde"; if (p==(p=q)) { System.out.println(true); } System.out.println(p); 打印结果: ced 如果改为: St...

dap769815768的博客 190

从OSGB到3DTiles:倾斜摄影数据高效转换实战指南

本文提供了将倾斜摄影OSGB数据高效转换为Web友好的3DTiles格式的完整实战指南。详细介绍了使用开源工具进行转换的步骤,包括环境搭建、核心命令、参数调优及在Cesium中加载与问题排查,旨在帮助GIS开发者和三维应用工程师打通数据到Web展示的最后一公里,实现大规模三维模型的流畅网络发布。

u0v1w2x3的博客 570

java 加密结果不一致的各个坑

java 加密结果不一致的各个坑

吃货的自我修养的博客 1968

【Python LeetCode 专题】面试经典 150 题

面试经典 150 题

一杯水果茶!足矣~ 1173

Open3D 点云数学形态学滤波(Python版本)

Open3D 点云数学形态学滤波(Python版本)

dayuhaitang1的博客 1396

java包不正确_java为什么第一行总是显示包不正确

publicclassWheel{publicstaticvoidmain(String[]args){Stringphrase[]={"ASTITCHINTIMESAVESNINE","DON'TEATYELLOWSNOW","JUSTDOIT","EVERYGOODBOYDOESFINE","IWANTMYMTV","PLAYITAG...public class Wheel{public s...

weixin_26757949的博客 490

【C语言】程序员筑基功法——《函数栈帧的创建与销毁》

汇编角度带你走进函数栈帧

StackFrame 3661

如何在Java中实现深度自编码器进行数据降维

通过将数据编码到低维空间,再从低维空间重建数据,自编码器不仅可以保留重要信息,还能去除噪音。接下来,我们将介绍自编码器的基本原理,并展示如何在Java中实现深度自编码器进行数据降维。通过本文的介绍,你应该已经了解了如何在Java中使用深度自编码器进行数据降维。深度自编码器是自编码器的一种,它由多个隐藏层组成,通常使用多层神经网络来进行编码和解码。自编码器的目标是通过训练,使得输出数据与输入数据的差异最小化,这样模型就能学习到输入数据的主要特征。接下来,我们将使用Java来构建一个简单的深度自编码器。

微赚淘客系统开发者博客 939

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

架构系列——你可能不知道的那些synchronized使用细节

目录 前言 1、synchronized锁的重入性 2、不要使用字符串常量作为锁 3、锁对象的改变问题 前言 synchronized可以为任意对象加锁,用法比较灵活,语法如下 (1)修饰代码块,作用于调用的对象; (2)修饰方法,作用于调用的对象; (3)修饰静态方法,作用于所有对象; (4)修饰类,作用于所有对象。 synchronized取得的锁都是对象锁,而不是把一段...

前方一片光明 7180

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

关于python和java中使用正则表达式,结果不一致问题

前几天在python中使用正则表达式做叠词分割字符串时,发现言叠词切割不对,通过JAVA做试验时,结果是正确的,两种语言使用通用的正则式叠词分割字符串结果不一致,经过检查python中确信使用的正则表达式是ghdq正确的,就是结果不正确,不知道是不是这个语言处理叠词分割时有缺陷? 举例如下: JAVA源代码: 01 02 03 04 05 ...

海鸥软件专栏 881

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ORA-01789: 查询块具有不正确的结果列数

Caused by: java.sql.SQLSyntaxErrorException: ORA-01789: 查询块具有不正确的结果列数 发现是sql语句用union时的 两个

好好学JAVA--Cleanliness is next to goldliness! 5万+

Java中你可能不知道的小细节

1、Java中,整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN结果。 2、移位运算符的右操作数要完成模32运算(除非左操作数是long类型,在这种情况下需要对右操作数作模64)。例如:1<<35的值等同于1<<3或8; public class Demo1 { public static void main(String[] args) { System.out.println(1<<35);//8 System.out.println(

paipaixingong的博客 432

Hive Bug系列之关联结果不正确详解

Hive是互联数据仓库中使用最频繁的工具,做为仓库的技术人员,有很大必要去深入了解它,并以认真的态度去对待工作中遇到的每个问题,每个知识点,由点及面,让我们的技术更扎实,也让我们更有底气!

xiaoluobutou的专栏 1101

Java编程中那些需要注意的细节

常言道:“细节决定成败”,编程更是如此。 近期,我参加的一个项目,让我体会更是如此。 这个项目属于推荐系统的一部分,我负责的一块是进行MapRedcue编程,计算视频之间的相似度!另一个同事就把我计算出来的结果用Sqoop导入到数据库中,供线上调用。 在导入数据的过程中,总是爆出java.lang.NumberFormatException异常,我认为是他那里的原因,他的Sqoop没有进行空

lsrmake的专栏 1809

java每次排序输出结果,java模拟全排列按序输出所有可能的结果

0前言今天在线笔试遇见了一个很有意思的编程题,特此整理记录如下:1.问题描述问题描述(大概意思是)给出一组整数(整数范围是1-9,数据不重复),要求按升序输出所有的排序可能性输入:首先输入一个n表示数据个数,然后是n个整数输出:按升序一次输出每一种结果例如:输入 :31 5 9输出1591955195919159512.问题分析根据题意不难将问题分解成:1.找出所有的排序可能性2.将所有的结果进行...

weixin_29343153的博客 489

2.3java运算需要注意的细节

由于整数类型无法存储小数部分,所以在运算结果为小数时,会直接舍弃小数部分,只保留整数部分,这种处理方式也被叫做截断取整。然而,大多数十进制小数无法精确地用二进制表示,这就导致了浮点数在存储和运算过程中会出现精度损失。由于计算机的存储空间有限,只能对其进行近似表示,这就使得在进行浮点数运算时,结果可能会出现微小的误差。在 Java 整数运算中,要时刻留意结果会舍去小数部分这一特性,依据具体需求选择合适的数据类型和运算方式。类型,这样运算时就会按照浮点数的规则进行,得到的结果就是精确的小数。

chxii的专栏 1250

不调用API,自编写算法生成随机数(java版)

先上图吧!要不图片这东西会被埋没的…… 这是执行后的结果:三次测试别图~ 不割2333333333333333333333333333333不割 不割2333333333333333333333333333333不割

xizai2012的专栏 1772

C++11中的bool变量不进行初始化,结果随机,可能是false也可能是true,所以一定要初始化

经过验证,定义一个bool型数组而不赋初值,打印出来每一个元素的值都为0

deniece1的博客 6779

java模拟全排列按序输出所有可能的结果

0前言 今天在线笔试遇见了一个很有意思的编程题,特此整理记录如下: 1.问题描述 问题描述(大概意思是) 给出一组整数(整数范围是1-9,数据不重复),要求按升序输出所有的排序可能性 输入:首先输入一个n表示数据个数,然后是n个整数 输出:按升序一次输出每一种结果 例如: 输入 : 3 1 5 9 输出 1...

Stone6762的专栏 3199

如何在Java中实现无监督学习算法:从聚类到自编码器

K-means是一种简单而经典的聚类算法,其目标是将数据点分成K个簇,使每个数据点与其所在簇的中心点之间的距离最小。自编码器是一种神经网络结构,主要用于数据的无监督学习,通过学习压缩(编码)和解压缩(解码)的过程,能够从输入数据中提取有用的低维特征。无监督学习是机器学习中的一个重要分支,它在没有标签数据的情况下,通过数据的内部结构进行学习和发现。我们将分别讨论K-means聚类算法和自编码器的实现,并附带代码示例,重点讲解如何在Java中通过常用的深度学习库和算法实现这类模型。在这个例子中,使用了。

微赚淘客系统开发者博客 1251
上一篇: 八月十五了,重新计划一下。
下一篇: 2011 09 14学习笔记
程序员迈克
博客等级 码龄16年 36粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值