在python中你可以计算一个简单的循环,让我们说它600!
是一个非常大的数字,但python可以在很短的一秒钟内轻松处理它.即使它超过200
数字长.另一方面,在java中你必须使用64位文字(长数据类型).所以机器将返回0.
有没有办法克服这个?
我们的许多代码都是遗留的,但我们正在转向"大数据"后端,我正在尝试传播新的API调用,鼓励使用最新的Spring库等.我们的一个问题是应用层ID代.由于我不理解的原因,更高的权限需要顺序BigInteger.我会让它们随机重新生成并重新尝试失败的插入但我完成了否决.
磕磕绊绊地说,我处于一个需要增加并在线程中获得BigInteger并以安全和高效的方式执行的位置.我之前从未使用过AtomicReference,但它看起来非常接近完美的应用程序.现在我们有一个同步代码块,这会严重损害我们的性能.
这是正确的方法吗?语法示例?
我应该提一下这个模块的工作方式,它使用存储过程命中数据库以获取要使用的一系列值.一次只有几万个,所以它只发生在20分钟一次.这使得各种服务器不会相互踩踏,但它也增加了必须将BigInteger设置为任意后续值的皱纹.当然,这也需要线程安全.
PS我仍然认为我的随机生成想法比处理所有这些线程的东西更好.一个BigInteger是一个非常大的数字,两次产生相同的几率的几率必须接近零.
在检查Java BigDecimal
类的源代码时,我很惊讶它没有被声明为final class
:
类BigDecimal
Run Code Online (Sandbox Code Playgroud)public class BigDecimal extends Number implements Comparable<BigDecimal>
不可变的,任意精度的带符号十进制数.
(来自Oracle Docs)
是否有特定原因或开发人员忘记添加该关键字?不将不可变类声明为final是不错的做法?
同样的情况也适用BigInteger
,但不是String
宣布为最终的.
已经阅读了如何通过以下步骤使类成为不可变的
AM不确定我是否清楚地了解私有构造函数和工厂方法在不变性方面的效用.如果我让类最终,基本上是关闭任何其他类扩展它的所有路径.如何陈述更复杂的方法
我在Singleton模式中看到了私有构造函数,工厂方法,这是有道理的.但是当我们谈论对象不变性时,当我们提到私有构造函数和静态工厂方法时,我们是否也限制了对象构造/实例化?