小编Syn*_*les的帖子

你需要关闭溪流吗?

这个问题分为两部分:

InputStream i1 = new InputStream()和之间有什么区别new InputStream()
并且
是否值得它来创建所有局部变量只是关闭它们?

我知道简单的答案,第一个你可以保留变量,继续使用变量,甚至关闭输入流像一个优秀的程序员.第二个你失去了它的参考,但它看起来更简洁.这两者之间有什么记忆差异吗?速度差(毁灭性)怎么样?

现在来看一些刺激我思想的例子.首先我们使用`'new Object()`而无需抛弃它.

 public void getLongStrings() throws IOException {
        try {
            foo = FileCopyUtils.copyToString(new InputStreamReader(aBook.getInputStream()));
            bar = FileCopyUtils.copyToString(new InputStreamReader(aNovel.getInputStream()));
        }
        catch (IOException ioe) {
            //do something appropriate here;
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在为更详细的方法

public void getLongStrings() throws IOException {
        InputStream i1 = null;
        InputStream i2 = null;
        InputStreamReader isr1 = null;
        InputStreamReader isr2 = null;
        try {
            i1 = aBook.getInputStream();
            i2 = aNovel.getInputStream();
            isr1 = new InputStreamReader(i1);
            isr2 = new …
Run Code Online (Sandbox Code Playgroud)

java syntax inputstream

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

Annotation 中的多个验证选项

我的问题是这个问题的一个分支

我有一个要验证的注释(比如电话注释)。我可以使用@phone 验证器来检查电话对象是否有效。我还希望能够将此验证器放在包含电话的联系信息对象上。有没有办法对一个注释使用多个验证器,以便我可以将 @phone 用于我的电话对象和我的联系信息对象?

喜欢
@Constraint(validatedBy = {PhoneIsValid.class, PhoneIsValid2.class})
工作吗?(想法是一个验证器处理电话对象,另一个处理联系信息对象。)

annotations hibernate-validator bean-validation

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

SQL'AND'或'OR'首先出现?

我有以下查询:

SELECT * FROM MUFFIN_TYPES MT
  WHERE MT.flavor IS NULL 
    OR MT.flavor IS NOT NULL 
    AND MT.additionDate IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

没有澄清括号,这是令人困惑的.将MT.flavor IS NULL OR MT.flavor IS NOT NULL始终评估为真?或者它会评估为MT.flavor IS NULL (OR MT.flavor IS NOT NULL AND MT.additionDate IS NOT NULL)

我找不到有关此事的任何文件.我是后两种选择,但我不确定.

注意:我正在使用Oracle Pl/SQL.

sql oracle

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

lisp中的循环指针

在完成CLRS Intro to Algorithms一书并试图在常见的lisp中实现红黑二叉搜索树时,我遇到了以下问题:圆形指针:

(defstruct node (ptr nil))

(defparameter *x* (make-node))

(defparameter *y* (make-node :ptr *x*))

(setf (node-ptr *x*) *y*)
Run Code Online (Sandbox Code Playgroud)

此代码导致堆耗尽错误,可能是由于指针指向指向该指针的指针等引起的无限递归.

有没有办法防止这种无限递归发生,同时保持这里给出的指针结构?

我知道还有其他方法可以实现红黑树(例如,不使用setf),但我有兴趣在CLRS中复制命令式样式,因为常见的lisp是一种多范式语言.

PS.除了通常的左子指针和右子指针之外,CLRS中的BST还有指针.

lisp clisp sbcl common-lisp circular-reference

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