小编ord*_*rig的帖子

为什么在Java中将局部变量和方法参数标记为"final"?

在Java中,您可以使用final关键字限定局部变量和方法参数.

public static void foo(final int x) {
  final String qwerty = "bar"; 
}
Run Code Online (Sandbox Code Playgroud)

这样做会导致无法在方法体中重新分配x和qwerty.

这种做法使你的代码向不变性的方向推动,这通常被认为是一个加分.但是,它也会使代码混乱,"最终"出现在各处.您对Java中的局部变量和方法参数的final关键字有何看法?

java final

57
推荐指数
5
解决办法
10万
查看次数

Java中的持久数据结构

有没有人知道一个库或者至少有一些关于在Java中创建和使用持久数据结构的研究?我没有将持久性称为长期存储,而是将持久性称为不变性(参见维基百科条目).

我正在探索为持久性结构建模api的不同方法.使用构建器似乎是一个有趣的解决方案:

// create persistent instance
Person p = Builder.create(Person.class)
             .withName("Joe")
             .withAddress(Builder.create(Address.class)
                 .withCity("paris")
                 .build())
              .build();

// change persistent instance, i.e. create a new one 
Person p2 = Builder.update(p).withName("Jack");

Person p3 = Builder.update(p)
              .withAddress(Builder.update(p.address())
                .withCity("Berlin")
                .build)
            .build();
Run Code Online (Sandbox Code Playgroud)

但这仍然有点像锅炉板.有任何想法吗?

java immutability data-structures

16
推荐指数
4
解决办法
2万
查看次数

重构布尔表达式的工具

我正在寻找一个重构布尔表达式的工具.我有像这样的表情

a1 => (b1 <=> c or d) AND 
a2 => (b2 <=> c or d) AND
a2 => (b2 <=> c or d) 
Run Code Online (Sandbox Code Playgroud)

该工具应该能够简化表达式,例如在上面的例子中提取子表达式"c或d".是否有免费的计算机代数系统可以做到这一点?

目前我想手动重构表达式,用一点haskell quickcheck脚本证明等价.

refactoring boolean-logic boolean-expression

6
推荐指数
1
解决办法
2065
查看次数

CQRS中的验证和错误修正

我得到了CQRS的一般概念,但是当涉及到超越示例代码和幻灯片以处理现实世界问题时,我有一些问题.

  1. 验证

    当您需要验证涉及检查数据库中的值的命令时,您会怎么做?注册服务,我必须输入一个唯一的电子邮件地址.我听到的一个论点是用户输入重复的电子邮件地址的可能性非常小,所以只需在处理命令时处理它并向他们发送一封"抱歉"的电子邮件,或者建议他们重置密码.因此,该过程避免了为了验证而具有读取模型.但是,如何在命令处理程序中处理重复的情况?你怎么知道那是重复的?检查一个readmodel?你可能首先使用它以获得更好的可用性.

  2. 功能/修复错误的更改

    当您需要更改命令的工作方式或修复错误时会发生什么?在仅附加的哲学中,我如何处理所有旧命令和命令处理程序?我不能重命名他们_legacy并隐藏他们离开,否则我的事件反序列化将无法正常工作.有什么优雅的解决方案可以解决这个问题?

谢谢

cqrs

6
推荐指数
1
解决办法
767
查看次数

Clojure Pedestal框架中的架构模型是否与Google Wave类似?

阅读基座演示文稿(并阅读示例源代码) - 我看到了一个基于变换和操作的模型.

Pedestal是否真的使用类似于Google Wave中使用的操作转换(在这里这里看)?

clojure google-wave clojurescript operational-transform pedestal

5
推荐指数
1
解决办法
582
查看次数

在iPhone应用程序中保存对象数组的最佳方法.

我有一个带有桌面视图的iPhone程序.表视图从NSMutable Array获取其数据.我希望人们能够向该表添加数据,即向该数组添加对象.使用addObjectreloadData,我能够向数组添加对象,并重新加载表视图,以便还显示新添加的数据.但是,一旦我重新启动应用程序,就会丢失新添加的数据.我的问题是将数组存储在iPhone中的最佳方法是什么,以便在重新启动时我可以使用用户添加的数据填充表格?

谢谢

arrays iphone saving-data data-persistence ios

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

为什么不h:commandButton与c结合使用时执行动作方法:选择?

我在项目中看到了一个奇怪的问题.这是<h:commandButton/>不执行动作方法.

<c:choose>
   <c:when test="#{empty param.t}">
       // HTML
   </c:when>
   <c:when test="#{param.t eq 'normal'}">
       // HTML
       <h:form>
           <h:commandButton value="ADD" action="#{addBean.doSomething}" />
       </h:form>
   <c:when>
</c:choose>
Run Code Online (Sandbox Code Playgroud)

当我<h:form>进入第一个c:when,然后调用action方法.否则,事实并非如此.为什么?

jsf

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