相关疑难解决方法(0)

我需要一个解决Java在计算和存储大数字方面的限制的解决方案

在python中你可以计算一个简单的循环,让我们说它600!是一个非常大的数字,但python可以在很短的一秒钟内轻松处理它.即使它超过200数字长.另一方面,在java中你必须使用64位文字(长数据类型).所以机器将返回0.
有没有办法克服这个?

java

26
推荐指数
1
解决办法
832
查看次数

复制构造函数和防御性复制

什么是复制构造函数

有人可以分享一个小例子,有助于理解防御性复制原则吗?

java defensive-programming

14
推荐指数
3
解决办法
1万
查看次数

可以以线程安全的方式安全地增加BigInteger,也许使用AtomicReference,没有锁定?

我们的许多代码都是遗留的,但我们正在转向"大数据"后端,我正在尝试传播新的API调用,鼓励使用最新的Spring库等.我们的一个问题是应用层ID代.由于我不理解的原因,更高的权限需要顺序BigInteger.我会让它们随机重新生成并重新尝试失败的插入但我完成了否决.

磕磕绊绊地说,我处于一个需要增加并在线程中获得BigInteger并以安全和高效的方式执行的位置.我之前从未使用过AtomicReference,但它看起来非常接近完美的应用程序.现在我们有一个同步代码块,这会严重损害我们的性能.

这是正确的方法吗?语法示例?

我应该提一下这个模块的工作方式,它使用存储过程命中数据库以获取要使用的一系列值.一次只有几万个,所以它只发生在20分钟一次.这使得各种服务器不会相互踩踏,但它也增加了必须将BigInteger设置为任意后续值的皱纹.当然,这也需要线程安全.

PS我仍然认为我的随机生成想法比处理所有这些线程的东西更好.一个BigInteger是一个非常大的数字,两次产生相同的几率的几率必须接近零.

java increment biginteger atomicreference

12
推荐指数
2
解决办法
8529
查看次数

为什么Java的BigDecimal类没有被声明为final?

在检查Java BigDecimal类的源代码时,我很惊讶它没有被声明为final class:

类BigDecimal

public class BigDecimal
extends Number
implements Comparable<BigDecimal>
Run Code Online (Sandbox Code Playgroud)

不可变的,任意精度的带符号十进制数.

(来自Oracle Docs)

是否有特定原因或开发人员忘记添加该关键字?不将不可变类声明为final是不错的做法?

同样的情况也适用BigInteger,但不是String宣布为最终的.

java final immutability

10
推荐指数
1
解决办法
3435
查看次数

不可变类/对象,私有构造函数,工厂方法

已经阅读了如何通过以下步骤使类成为不可变的

  1. 不要提供"setter"方法 - 修改字段引用的字段或对象的方法.
  2. 使所有字段成为最终和私有.
  3. 不允许子类重写方法.最简单的方法是将类声明为final.更复杂的方法是使构造函数私有并在工厂方法中构造实例.
  4. 如果实例字段包含对可变对象的引用,则不允许更改这些对象:
    a.不要提供修改可变对象的方法.
    湾 不要共享对可变对象的引用.永远不要存储对传递给构造函数的外部可变对象的引用; 如有必要,创建副本并存储对副本的引用.同样,必要时创建内部可变对象的副本,以避免在方法中返回原始对象.

AM不确定我是否清楚地了解私有构造函数和工厂方法在不变性方面的效用.如果我让类最终,基本上是关闭任何其他类扩展它的所有路径.如何陈述更复杂的方法

我在Singleton模式中看到了私有构造函数,工厂方法,这是有道理的.但是当我们谈论对象不变性时,当我们提到私有构造函数和静态工厂方法时,我们是否也限制了对象构造/实例化?

java singleton immutability

9
推荐指数
1
解决办法
4962
查看次数

不使用final就停止继承

除了将其声明为final或者将其构造函数声明为private之外,还有其他方法可以阻止类的继承吗?

java inheritance

8
推荐指数
4
解决办法
1万
查看次数