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

Java中在时间戳计算的过程中遇到的数据溢出问题

背景 今天在跑定时任务的过程中,发现有一个任务在设置数据的查询时间范围异常,出现了开始时间戳比结束时间戳大的奇怪现象,计算时间戳的代码大致如下。...中整数默认是int类型,在计算的过程中30 * 24 * 60 * 60 * 1000计算结果大于Integer.MAX_VALUE,所以出现了数据溢出,从而导致了计算结果不准确的问题。...到这里想必大家都知道原因了,这是因为java中整数的默认类型是整型int,而int的最大值是2147483647, 在代码中java是先计算右值,再赋值给long变量的。...在计算右值的过程中(int型相乘)发生溢出,然后将溢出后截断的值赋给变量,导致了结果不准确。 将代码做一下小小的改动,再看一下。...因为java的运算规则从左到右,再与最后一个long型的1000相乘之前就已经溢出,所以结果也不对,正确的方式应该如下:long a = 24856L * 24 * 60 * 60 * 1000。

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

    01 . MongoDB简介及部署配置

    # Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。...这个键的值可以是任何类型的,默认是个 ObjectId 对象 由于 ObjectId 中保存了创建的时间戳,所以你不需要为你的文档保存时间戳字段,你可以通过 getTimestamp 函数来获取文档的创建时间...BSON 有一个特殊的时间戳类型用于 MongoDB 内部使用,与普通的 日期 类型不相关。...其中: # 前32位是一个 time_t 值(与Unix新纪元相差的秒数) # 后32位是在某秒中操作的一个递增的`序数` 在单个 mongod 实例中,时间戳值通常是唯一的。...在复制集中, oplog 有一个 ts 字段。这个字段中的值使用BSON时间戳表示了操作时间。 BSON 时间戳类型主要用于 MongoDB 内部使用。

    1.8K50

    mongo常用字段类型

    每个数据类型对应一个数字,在MongoDB中可以使用$type操作符查看相应的文档的BSON类型 MongoDB无须声明数据类型,全自动匹配 每种BSON类型都具有整数和字符串标识符,如下表所示: Type...#注意:这个类型是不可以被JSON序列化的 这是MongoDB生成的类似关系型DB表主键的唯一key,具体由24个bit组成: 0-8字节是unix时间戳, 9-14字节的机器码,表示MongoDB实例所在机器的不同...19-24字节是随机数 由于ObjectId中保存了创建的时间戳,所以你不需要为你的文档保存时间戳字段, 可以通过"getTimestamp()"来获取文档的创建时间戳, 返回时间戳 --返回时间戳 mongos...:28:33.705+08:00") 3、mongo中使用大整数精度丢失问题 Mongo shell中使用大整数字面量,但默认整数字面量类型却是双精度浮点数,导致丢失精度 问题描述: 通过mongo shell...所以当我们在mongo shell中直接使用整数时,实际上它是以double表示的,而当这个整数字大约超过16位数字时,就可能发生有些整数无法精确表示的情况,只能使用一个接近能表示的整数来替代。

    7.1K30

    MongoDB数据库基础教程(二) - 数据结构类型详解

    通过下图实例,我们也可以更直观的了解Mongo中的一些概念: 数据库 一个mongodb中可以建立多个数据库。 MongoDB的默认数据库为"db",该数据库存储在data目录中。...db.createCollection(“mycoll”, {capped:true, size:100000}) 在 capped collection 中,你能添加新的对象。...这个键的值可以是任何类型的,默认是个 ObjectId 对象 由于 ObjectId 中保存了创建的时间戳,所以你不需要为你的文档保存时间戳字段,你可以通过 getTimestamp 函数来获取文档的创建时间...时间戳 BSON 有一个特殊的时间戳类型用于 MongoDB 内部使用,与普通的 日期 类型不相关。 时间戳值是一个 64 位的值。...在复制集中, oplog 有一个 ts 字段。这个字段中的值使用BSON时间戳表示了操作时间。 BSON 时间戳类型主要用于 MongoDB 内部使用。

    1K41

    mongodb存储的数据类型(redis存储数据类型)

    local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合 config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。...时间戳值是一个 64 位的值。其中: 前32位是一个 time_t 值(与Unix新纪元相差的秒数) 后32位是在某秒中操作的一个递增的序数 在单个 mongod 实例中,时间戳值通常是唯一的。...在复制集中, oplog 有一个 ts 字段。这个字段中的值使用BSON时间戳表示了操作时间。 BSON 时间戳类型主要用于 MongoDB 内部使用。...在大多数情况下的应用开发中,你可以使用 BSON 日期类型。 3.数组 数组是一组值,它既能作为有序对象(列表、栈或队列),又能作为无序对象(数据集)。...由于 ObjectId 中保存了创建的时间戳,所以你不需要为你的文档保存时间戳字段,你可以通过 getTimestamp 函数来获取文档的创建时间: 发布者:全栈程序员栈长,转载请注明出处:https:

    3.7K11

    003.MongoDB主要概念

    db.createCollection("mycoll", {capped:true, size:100000}) 在 capped collection 中,能添加新的对象。...这个键的值可以是任何类型的,默认是个 ObjectId 对象 由于 ObjectId 中保存了创建的时间戳,所以不需要为文档保存时间戳字段,可以通过 getTimestamp 函数来获取文档的创建时间:...3.4 时间戳 BSON 有一个特殊的时间戳类型用于 MongoDB 内部使用,与普通的 日期 类型不相关。 时间戳值是一个 64 位的值。...其中: 前32位是一个 time_t 值(与Unix新纪元相差的秒数) 后32位是在某秒中操作的一个递增的序数 在单个 mongod 实例中,时间戳值通常是唯一的。...在复制集中, oplog 有一个 ts 字段。这个字段中的值使用BSON时间戳表示了操作时间。 提示:BSON 时间戳类型主要用于 MongoDB 内部使用。

    1.3K30

    大数据技术之_28_电商推荐系统项目_02

    (按照商品的评分次数统计)数据结构是:productId, count     // 2、最近热门商品统计,即统计以月为单位每个商品的评分个数(需要将时间戳转换成 yyyyMM 格式后,按照商品的评分次数统计... 转化为年月格式 yyyyMM,注意:时间戳 timestamp 的单位是 秒,而日期格式化工具中 Date 需要的是 毫秒,且 format() 的结果是 字符串,需要转化为 Int 类型     spark.udf.register...数据集中任意两个商品间相似度都可以由公式计算得到,商品与商品之间的相似度在一段时间内基本是固定值。最后生成的数据保存到 MongoDB 的 ProductRecs 表中。 ?   ...如果实时推荐继续采用离线推荐中的 ALS 算法,由于 ALS 算法运行时间巨大(好几分钟甚至好十几分钟),不具有实时得到新的推荐结果的能力;并且由于算法本身的使用的是用户评分表,用户本次评分后只更新了总评分表中的一项...另外,在实时推荐中由于时间性能上要满足实时或者准实时的要求,所以算法的计算量不能太大,避免复杂、过多的计算造成用户体验的下降。鉴于此,推荐精度往往不会很高。

    4.5K21

    day120-day121-MongoDB的基础增删改查&pymongo的使用

    Boolean # 布尔值,true 或者 false (这里有坑哦~在我们大Python中 True False 首字母大写) Integer # 整数 (Int32 Int64 你们就知道有个...List哦) Object # 就是Python中的字典,这个数据类型就是字典 Null # 空数据类型 , 一个特殊的概念,None Null Timestamp # 时间戳...Date # 存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型) 3.MongoDB 语言 # 一般 cmd 的操作 # use db...# 使用db数据库 # show dbs # 查看当前服务器中写在磁盘上的数据库 # show tables # 查看数据库中的collection # db # 查看当前使用的数据库...250}}) 5.7 limit 、skip 、sort 的使用以及分页的实现 5.7.1 limit # db.user_info.find({}).limit(5) # 选取数据从当前位置选择5个

    3.1K20

    Go Mongox:轻松实现 MongoDB 时间字段自动填充

    前言在 MongoDB 的集合中,时间字段(如 创建时间 和 更新时间)通常是必不可少的。在使用 Go 语言操作 MongoDB 时,例如执行插入或更新操作,我们需要手动设置这些时间字段的值。...那么,是否可以在程序层面实现自动填充呢?目前,官方的 mongo-go-driver 并不支持自动填充时间字段,而 mongox 库提供了这一能力。...当为 int/int64 时,将会填充当前时间戳秒数。字段包含特定标签mongox:"autoCreateTime":在插入文档时,如果该字段的值为零值,则会自动设置为当前时间。...mongox:"autoUpdateTime":在插入文档时,如果该字段的值为零值或更新文档时,会自动设置为当前时间。...fmt.Println 语句都输出 true,说明所有时间字段的值都被填充。小结本文详细介绍了如何使用 mongox 库,在插入和更新数据时自动填充时间字段。

    3491110

    MongoDb简介

    这个键的值可以是任何类型的,默认是个 ObjectId 对象 由于 ObjectId 中保存了创建的时间戳,所以你不需要为你的文档保存时间戳字段,你可以通过 getTimestamp 函数来获取文档的创建时间...时间戳 BSON 有一个特殊的时间戳类型用于 MongoDB 内部使用,与普通的 日期 类型不相关。 时间戳值是一个 64 位的值。...其中: 前32位是一个 time_t 值(与Unix新纪元相差的秒数) 后32位是在某秒中操作的一个递增的序数 在单个 mongod 实例中,时间戳值通常是唯一的。...在复制集中, oplog 有一个 ts 字段。这个字段中的值使用BSON时间戳表示了操作时间。 BSON 时间戳类型主要用于 MongoDB 内部使用。...ObjectId 中存储了 4 个字节的时间戳,所以你不需要为你的文档保存时间戳字段,你可以通过 getTimestamp 函数来获取文档的创建时间: >ObjectId(""5349b4ddd2781d08c09890f4

    3.7K40

    MongoDB——基本使用及集群搭建

    使用这种数据结构的好处显而易见,关联信息可以直接内嵌在同一个文档中,不必像关系型数据库那样还需要建立多张表,并建立外键关联,因此大大提升了我们写入数据的效率(前端传回的JSON数据可以直接存入,不必转换为对象...中的一个文档(JSON)即相当于关系型数据库中的一行数据 Column Field 列/字段 Index Index Mongo同样也支持索引 Table join Mongo不支持关联查询(所有的关联都可以内嵌在一个文档...你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。 {date: new Date()} Timestamp 时间戳。记录文档修改或添加的具体时间。 Object ID 对象 ID。...基本使用 启动/连接服务 在了解了MongoDB的基本概念后,再来了解其基本的使用,这里将使用4.0.13-Linux 64 bit legacy版本作为演示版本。...():查询testColl中的所有数据 db.testColl.findOne():查询testColl中的第一条数据 db.testColl.update({name:“dark”}, {$set:{

    1K10

    MongoDB的Spring配置使用

    Spring-data对MongoDB进行了很好的支持,接下来就讲解一下关于Spring对MongoDB的配置和一些正常的使用 我下面的工程使用的是Spring的Java配置的方式和Maven构建 ①MongoDB...@ID 标示某个为ID域 @DbRef 标示某个域要引用其他的文档,这个文档有可能位于另外一个数据库中 @Field 为文档域指定自定义的元数据 @Version 标示某个属性用作版本域 若不使用...@Field注解,域名就与Java属性相同 上面之所以Item的Java类为什么没有@Document注解,是因为我们不会单独想Item持久化为文档 ③使用MongoTemplate访问MongoDB...Save(terable) 保存指定Iterable中的所有文档 save() 为给定的对象保存一条文档 上面的我们定义的四个方法都是我们自定义的方法,其方法名存在很多意义,不能随便定义 List在MongoConfig类中更改为自己理想的后缀 @EnableMongoRepositories(basePackages = "springmvc.orders.db",repositoryImplementationPostfix

    1.8K20

    【翻译】MongoDB指南引言

    在Mongo shell中,选中一个数据库使用如下命令:use db> ,例如: use myDB 创建数据库 如果待操作的数据库不存在,那么在第一次向MongoDB 存储数据时,MongoDB会创建这个数据库...聚集操作符$out 不能使用聚集管道操作符$out将结果写入固定集合 3.3.4过程 创建固定集合 在mongo shel中,使用db.createCollection()方法创建固定集合,创建固定集合的时候要指定集合的字节大小...时间戳类型是64位的值: 第一个32位是time_t的值(从UNIX新纪元来的秒数)。 第二个32位是给定时间里一些操作的递增序号。 在一个mongod实例中,时间戳的值是唯一的。...在复制功能中,oplog有一个ts字段,字段值使用DSON时间戳,它反映了操作时间。 注: BSON时间戳类型(Timestape)是供MongoDB内部使用的。...例如: 在mongo shell中,使用new Date()构建日期:var mydate1 = new Date() 在mongo shell中,使用ISODate()构建日期:var mydate2

    4.3K60

    数据实时同步之MongoDB

    local库下的一个固定集合中(下面会介绍到)。...也可以在创建 mongod 服务时,在mongo.conf中oplogSize自定义参数设置,单位是mb,如果不指定,不同操作系统上的 oplog 默认大小不同,具体为以下: For 64-bit Linux.../mongo,默认进入的collections是test,PRIMARY节点 3.oplog获取和查看 1. oplog数据结构 分析oplog中字段的含义 ts: 8字节的时间戳,由4字节unix...now: 现在的时间 3、查看oplog日志数据 这里我们一般会重视数据的变化,所以列出insert、update、delete示例 添加一条数据: db.test.insert({"name":"这是一侧测试...时间戳,监听mongodb日志,进行过滤,这里的ts尽量做到,服务停止时,存储到文件或者库,获取最新下标 FindIterable findIterable = collection.find

    2.9K20

    深入浅出mongodb(一)

    /data(这里的 data 是新建需要新建 data 文件夹,在文件夹里创建 db 文件夹) 客户端 C:\MongoDB\bin mongo 注意: 如果出现在 windows 下出现小黑窗口闪退的情况...mongoose 中,提供了 Schema 的类,我们可以在实例化的时候先定义mongoose.Schema,以免后续总是要出现丑陋的new mongoose.Schema()。...2.5 ObjectId 一个 ObjectId 其实可以分割为四部分,即当前时间戳,当前主机的hash,当前进程id,自动增加的计数器,有了这几个基本上就可以保证它的唯一性了。...当前时间戳 let id = '5f2221af6fd5e827dc5619b6'; let ts='5f2221af'; console.log(parseInt(ts,'10')); console.log...//doc是保存成功之后的文档对象 console.log(err); console.log(doc); }) UserModel.create({name:'vivo'

    4K10

    SpringMVC+MongoDB+Maven整合(微信回调Oauth授权)

    是关于人工智能的哦。 2017年第一篇自己在工作中的总结文档。土豪可以打赏哦。 https://git.oschina.net/xshuai/smplat.git 项目在GIT上面了。...-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口 --> mongo:mongo id="mongo" replica-set...POST 为用户发送信息进行处理并返回 1.2.2 WXOauthController.java Oauth授权获取用户信息的代码 2. com.bdxc.plat.vo 存放微信相关的接口基础对象...存放微信用户给公众发送信息进行处理的方法, 上一级为操作数据的service 不保存不需要关注 5.com.bdxc.plat.model.weixin 存微信的消息类型的对象,上一级为数据库的model...回调请求======================="); //微信加密签名 String signature = request.getParameter("signature"); //时间戳

    3.6K70

    尚医通-MongoDB

    5、Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。...mymongo -v /data/db:/data/db -d mongo 进入容器 docker exec -it mymongo /bin/bash 使用MongoDB客户端进行操作 mongo...Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。 Arrays 用于将数组或列表或多个值存储为一个键。 Timestamp 时间戳。...Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。 Object ID 对象 ID。用于创建文档的 ID。...Objectld使用12字节的存储空间,每个字节二位十六进制数字, 是一个24位的字符串 时间戳:时间不断变化的 机器:主机的唯_标识码。

    4K30

    Spring认证中国教育管理中心-Spring Data MongoDB教程二

    该模板提供了创建、更新、删除和查询 MongoDB 文档的便捷操作,并提供了域对象和 MongoDB 文档之间的映射。 配置后,MongoTemplate是线程安全的,可以在多个实例中重复使用。...、更新和删除文档 MongoTemplate 允许您保存、更新和删除域对象并将这些对象映射到存储在 MongoDB 中的文档。...前面的示例旨在展示保存、更新和删除操作的使用,MongoTemplate而不是展示复杂的映射功能。 前面示例中使用的查询语法在“查询文档”部分有更详细的解释。...如果可能,在 Java 类中id声明为 a的属性或字段通过使用 SpringString转换为并存储为 an 。有效的转换规则委托给 MongoDB Java 驱动程序。...查询和更新时,MongoTemplate使用与上述规则对应的转换器来保存文档,以便查询中使用的字段名称和类型可以匹配域类中的内容。

    2.7K20

    Web-第三十三天 MongoDB初级学习

    这个键的值可以是任何类型的,默认是个 ObjectId 对象 由于 ObjectId 中保存了创建的时间戳,所以你不需要为你的文档保存时间戳字段,你可以通过 getTimestamp 函数来获取文档的创建时间...时间戳 BSON 有一个特殊的时间戳类型用于 MongoDB 内部使用,与普通的 日期 类型不相关。 时间戳值是一个 64 位的值。...其中: 前32位是一个 time_t 值(与Unix新纪元相差的秒数) 后32位是在某秒中操作的一个递增的序数 在单个 mongod 实例中,时间戳值通常是唯一的。...在复制集中, oplog 有一个 ts 字段。这个字段中的值使用BSON时间戳表示了操作时间。 BSON 时间戳类型主要用于 MongoDB 内部使用。...MongoDB中你只能通过主节点将Mongo服务添加到副本集中, 判断当前运行的Mongo服务是否为主节点可以使用命令db.isMaster() 。

    2.4K20
    领券