Java中long的表达式问题

2023-11-17

今天在代码里发现了有个抛错,是由下面这段分片上传时定位的代码捕获的。第一想法是是不是由于包太大(6.4G)导致long的offset超限。虽然long好像没有这么短…然后查了下long的最大值Long.MAX_VALUE=2的63次方-1,而这里只是并没有超出这个值,只是超出了int的最大值Integer.MAX_VALUE= 2的31次方-1,就觉得很奇怪,所以写了个Test试了下

RandomAccessFile accessTmpFile = null;
try {
    accessTmpFile = new RandomAccessFile(tmpFile, "rw");
    //这里由于获取到的是KB为单位的,所以需要额外*1024
    long offset = xxxBO.getChunkSize() * 1024 * xxxBO.getChunkNumber();
    // 定位到该分片的偏移量
    accessTmpFile.seek(offset);
    LOGGER.debug("chunkNumber:{},offset:{}", xxxBO.getChunkNumber(), offset);
    // 写入该分片数据
    accessTmpFile.write(xxxBO.getByteStream());
} catch (Exception e) {
    throw new ……
} finally {
    // 释放
    try {
        if (accessTmpFile != null) {
            accessTmpFile.close();
        }
    } catch (IOException e) {
        ……
    }
}

测试:下面这个表达式写完之后 idea提示:Numeric overflow in expression.

public class myTest {

    public static void main(String[] args){
        long offset = 1024 * 1024 * 1024 * 6;
        System.out.println(offset);
    }

}

然后我稍微改了一下,如下。改完之后诶嘿,提示没了。然后尝试跑了下,发现虽然没有报任何错,但是跑出来的结果却是有问题的。像下面这个跑出来是-2147483648,那肯定有问题。

public class myTest {

    public static void main(String[] args){
        int num = 6;
        long offset = 1024 * 1024 * 1024 * num;
        System.out.println(offset);
    }

}

这是因为虽然offset是long类型,但是右边却默认是int类型,因此超过int类型的长度范围就有问题了。
因此需要这样改:

long offset = 1024 * 1024L * 1024 * num;

同样,最前面的代码中需要改为long offset = xxxBO.getChunkSize() * 1024L * xxxBO.getChunkNumber();

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中long的表达式问题 的相关文章

  • 在哈希图中存储字符和二进制数

    我正在尝试存储字母到二进制数的映射 这是我的映射 h 001 i 010 k 011 l 100 r 101 s 110 t 111 为此 我创建了一个哈希映射并存储了键值对 我现在想显示给定句子的相应二进制值 这是我的代码 package
  • 如何在数据库中对 (Java) 枚举进行建模(使用 SQL92)

    您好 我正在使用名为 性别 的列对实体进行建模 在应用程序代码中 性别应该是一个 Java 枚举类型 有 2 个值 男性和女性 知道作为数据类型的枚举不是通用 SQL 语言 92 的一部分 您将如何建模它 数据模型必须是可移植的 以便由多个
  • 使用 JAXB 编组 LocalDate

    我正在构建一系列链接类 我希望能够将其实例编组到 XML 以便我可以将它们保存到文件中并稍后再次读取它们 目前我使用以下代码作为测试用例 import javax xml bind annotation import javax xml b
  • java中队列的实现

    在 Java 中实现队列是一个非常常见的面试问题 我在网上冲浪 看到了许多实现 他们做了一些奇特的事情 比如实现队列接口和编写自己的addLast and removeFirst 方法 我的问题是我不能使用LinkedList 类并使用其预
  • 空 EntityManager/EJB 注入 MDB

    我有一个消息驱动 bean MDB 部署到 WebLogic 12 1 3 我尝试使用 PersistenceContext 注释将实体管理器注入 MDB 但实体管理器为空 我还尝试注入一个简单的无状态会话 bean 它也是空的 但是 Me
  • FFmpeg 不适用于 android 10,直接进入 onFailure(String message) 并显示空消息

    我在我的一个项目中使用 FFmpeg 进行视频压缩 在 Android 10 Google Pixel 3a 上 对于发送执行的任何命令 它会直接进入 onFailure String message 并显示空消息 所以我在我的应用程序 g
  • 此版本不符合 Google Play 64 位要求,添加库后仍然出现错误

    我正在 Play 商店上传一个视频编辑器应用程序 其中包含带有一些本机代码的库 所以我通过将其添加到 gradle 来使其兼容 64 位 ndk abiFilters armeabi v7a arm64 v8a x86 x86 64 添加了
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla
  • 更改 JTextPane 的大小

    我是Java新手 刚刚在StackOverflow中找到了这段代码 ResizeTextArea https stackoverflow com questions 9370561 enabling scroll bars when jte
  • 用于防止滥用的 Servlet 过滤器? (DoS、垃圾邮件等)

    我正在寻找一个 Servlet 过滤器库 它可以帮助我保护我们的 Web 服务免受未经授权的使用和 DDoS 攻击 我们的网络服务有 授权客户 因此理想情况下 过滤器将帮助检测未经授权或行为不当的客户 或检测使用同一帐户的多个人 此外 我们
  • JavaFx 中装饰且不可移动的舞台

    我想在 JavaFx 中创建一个装饰舞台 它也将不可移动 我正在从另一个控制器类创建这个阶段 我能够创造和展示舞台 但它是自由移动的 我怎样才能创建这个 非常感谢帮助和建议 我把打开新关卡的方法贴出来 private void addRec
  • Scala(或 Java)中泛型函数的特化

    是否可以在 Scala 中专门化泛型函数 或类 例如 我想编写一个将数据写入 ByteBuffer 的通用函数 def writeData T buffer ByteBuffer data T buffer put data 但由于 put
  • 如何将txt文件添加到你的android项目中? [复制]

    这个问题在这里已经有答案了 我的Android studio版本是1 5 1 显然这个 never 版本没有 txt 文件的 asset 文件夹 您打算如何将这些文件包含到您的项目中 以及如何进一步使用您内部的应用程序 谢谢你的建议 Pro
  • Java 中 static 关键字如何工作?

    我正在阅读Java教程 http docs oracle com javase tutorial index html从一开始我就有一个问题static字段或变量上的关键字 作为Java said here http docs oracle
  • C++ 中的 Java ArrayList [重复]

    这个问题在这里已经有答案了 在Java中我可以做 List
  • 为什么 RMI 注册表忽略 java.rmi.server.codebase 属性

    我正在运行 java RMI 的 Hello World 示例 1 我在空文件夹中运行注册表 motta motta laptop tmp rmiregistry 2 我启动 HTTP 服务器以在运行时检索类 下载文件夹包含客户端 服务器的
  • 如何使用 Hibernate Session.doWork(...) 进行保存点/嵌套事务?

    我正在使用 JavaEE JPA 托管事务与 Oracle DB 和 Hibernate 并且需要实现某种嵌套事务 据我所知 此类事情不受开箱即用的支持 但我应该能够为此目的使用保存点 正如建议的https stackoverflow co
  • 设计抽象类时是否应该考虑序列化问题?

    一般来说这个问题来自Eclipse建议在抽象类上添加串行版本UID 由于该类是抽象类 因此该类的实例永远不会存在 因此它们永远不会被序列化 只有派生类才会被序列化 所以我的问题是放置一个安全 SuppressWarnings serial
  • Java:基于 Web 的应用程序中的单例类实例

    我在 Web Application 中有这个 Singleton 类 public class MyDAO private static MyDAO instance private MyDAO public static MyDAO g
  • java中的回调是什么[重复]

    这个问题在这里已经有答案了 可能的重复 什么是回调函数 https stackoverflow com questions 824234 what is a callback function 我已经阅读了回调的维基百科定义 但我仍然没有明

随机推荐

  • python三位数水仙花数(附零基础学习资料)

    前言 所以直接上代码 python输入一个水仙花数 三位数 输出百位十位个位 从控制台输入一个三位数num 如果是水仙花数就打印num是水仙花数 否则打印num不是水仙花数 任务 1 定义变量num用于存放用户输入的数值 2 定义变量gw
  • TS中的泛型

    一 泛型是什么 有什么作用 当我们定义一个变量不确定类型的时候有两种解决方式 使用any 使用any定义时存在的问题 虽然 以 知道传入值的类型但是无法获取函数返回值的类型 另外也失去了ts类型保护的优势 使用泛型 泛型指的是在定义函数 接
  • 解除Discuz!X2的15分钟锁定

    第一种方法 清两个failedlogin空表 解除用户锁定 mysql gt delete from pre common failedlogin Query OK 1 row affected 0 02 sec 解除UC用户锁定 mysq
  • C/C++学习记录--double和float的区别

    单精度浮点数 float 与双精度浮点数 double 的区别如下 1 在内存中占有的字节数不同 单精度浮点数在机内占4个字节 双精度浮点数在机内占8个字节 2 有效数字位数不同 单精度浮点数有效数字8位 双精度浮点数有效数字16位 3 所
  • HertzBeat监控部署及使用

    易用友好的高性能监控告警系统 网站监测 PING连通性 端口可用性 数据库监控 API监控 自定义监控 阈值告警 告警通知 邮件微信钉钉飞书 安装部署 HertzBeat最少依赖于 关系型数据库MYSQL8 实际亲测用mysql5 7 也行
  • 用java.util.Timer定时执行任务

    用java util Timer定时执行任务 如果要在程序中定时执行任务 可以使用java util Timer这个类实现 使用Timer类需要一个继承了java util TimerTask的类 TimerTask是一个虚类 需要实现它的
  • 基于spring+struts2+hibernate实现的Java web论坛

    源码及论文下载 源码及论文下载 http www byamd xyz tag java 1 绪论 这次的实训项目是开发一个java论坛系统 而开发java论坛系统的目的是提供一个供java学习交流的平台 为Java程序员提供交流经验 探讨问
  • angular的form表单验证

    angular的form表单验证 注 基于日常工作的总结 只是基础用法 一般的情况下应该是够用了 本次总结是angular的响应式表单验证 不足之处欢迎指正 首先要在你的页面组件的ts文件中引入angular的表单模块 import For
  • ESP8266 无线wifi AT 指令操作详解

    分享一下 ESP8266 无线wifi AT 的常见指令操作详解 按照官方说明整理 如有问题请私信 再次修改 指令集分为 基础 AT 命令 Wifi 功能 AT 命令 TCP IP 工具箱 AT 命令等 指令分类 测试命令 该命令用于查询设
  • Qt关闭子线程时程序崩溃及解决

    在Qt关闭子线程时 一般使用quit 函数和wait 函数关闭子线程 但可能关闭子线程时 子线程正在接受信号工作 因此 需要在子线程工作之前使用while 工作 进行判断 同时在关闭线程的按钮中需要设置flag的布尔值 问题 点击关闭按钮的
  • Unity3D C#数学系列之点积

    文章目录 1 定义 2 几何意义 3 向量a 向量b xaxb yayb zazb 4 应用案例 4 1 求两向量的夹角 4 2 判断两向量是否垂直 4 3 判断NPC是否在攻击范围内 4 4 已知入射光线和表面法线求反射光线 5 项目 1
  • 期货反向跟单小资金适合做吗?

    反向交易得到了越来越多人的青睐 但我们对其依然停留在一个很朦胧的阶段 仿佛雾里看花 一看三不知 或许是听别人一说 或许哪里留意过 但是真正的去实践 去落地 反而不知从哪里下手了 需要做什么品种 招多少盘手 用多少资金 模拟多久 培训多久 等
  • C、C++、Qt类型转换总结

    一 C类型转换 转换格式如下 Type b Type a 二 C 类型转换 1 const cast 去掉类型的const或volatile属性 const int a 10 a 20 compile error int b const c
  • Ubunt文件压缩和解压、打包和解包

    Ubunt文件压缩和解压 打包和解包 一 压缩和解压 zip tar gz tar bz2 1 zip 优点 支持不同的操作系统平台 如Linux Windows Mac OS 缺点 支持的压缩率不是很高 压缩 zip r file nam
  • 最全Mac&Win软件分享

    由于诸多因素影响 无法再分享相关的资料 如果无法访问GitHub的话大家可以去搜一下 GitHub加速 直接搜索找到相关的解决方案即可 包含常用的所有软件以及在线工具等等 GitHub地址 other doc Tools at main c
  • 微信小程序审核需要多久?微信小程序审核时间加快至2小时!

    8月15日起 微信将上线小程序全新审核机制 为第三方服务商的代码提审铺设 快车道 以往 小程序审核更像是 单车道 同一个第三方 同一时间审核大批量的小程序 也只能一一排队等候通过 8月15日起 平台将上线第三方预检加速机制 同一时间大批量提
  • PYTHON 编写 识别图片中两个峰值的代码

    Python 编写用于识别图片中的两个峰值的代码的方法有很多种 主要可以使用 OpenCV 和 NumPy 等库来实现 具体的代码可以参考网上的一些文章 例如 https www geeksforgeeks org python detec
  • Linux高性能服务器编程 学习笔记 第二章 IP协议详解

    本章从两方面探讨IP协议 1 IP头部信息 IP头部出现在每个IP数据报中 用于指定IP通信的源端IP地址 目的端IP地址 指导IP分片和重组 指定部分通信行为 2 IP数据报的路由和转发 IP数据报的路由和转发发生在除目标机器外的所有主机
  • msvcp140.dll重新安装的解决方法

    在打开游戏或者软件的时候 电脑提示msvcp140 dll丢失无法运行需要怎么办 相信这个问题困扰着不少小伙伴 msvcp140 dll是Windows系统中非常重要的动态连接组件 是连接程序与系统的必不可少的文件 小编今天就把重新安装的解
  • Java中long的表达式问题

    今天在代码里发现了有个抛错 是由下面这段分片上传时定位的代码捕获的 第一想法是是不是由于包太大 6 4G 导致long的offset超限 虽然long好像没有这么短 然后查了下long的最大值Long MAX VALUE 2的63次方 1