小编Pet*_*ikh的帖子

用于subversion复制的简明命令行(分支)

到目前为止,我看到的所有svn分支的例子都是这样的 svn cp -m 'Making test branch' svn://svnrepo/hellosite svn://svnrepo/hellosite2

所以为了分支,我需要每次都指定远程存储库的完整URL.但:

  • 工作副本与一个远程存储库相关联.甚至svn开关被认为是先进的"手术"操作.
  • 在工作副本的同一存储库中远程URL的分支总是如此(至少我从来不需要在与当前存储库完全无关的存储库中进行分支).
  • 不支持在存储库之间进行复制(对吗?).
  • 有关远程存储库的信息可用:请参阅svn info.

那么为什么我每次都要输入完整的URL?!! 或者我会错过什么?是否有一些允许引用当前远程存储库的快捷方式?就像是 svn cp -m 'Making test branch' //hellosite //hellosite2

svn command-line branch copy command-line-arguments

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

为什么在Clojure中从catch部分重现是非法的

至少已经有一个关于异常复发的问题.我的问题是为什么recurClojure编译器不接受这个

(loop []
  (try
    (catch Exception _ex
      (recur))))
Run Code Online (Sandbox Code Playgroud)

错误"只能从尾部位置重复".

根据控制流程,这recur 在尾部位置,因为代码在recur内部loop形式之后什么都不做.

clojure

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

Java尝试最终的变化

这个问题困扰了我一段时间,但我还没有找到完整的答案(例如,这个是C#在try/finally之外或之内初始化一次性资源).考虑以下两个Java代码片段:

Closeable in = new FileInputStream("data.txt");
try {
    doSomething(in);
} finally {
    in.close();
}
Run Code Online (Sandbox Code Playgroud)

和第二种变化

Closeable in = null;
try {
    in = new FileInputStream("data.txt");
    doSomething(in);
} finally {
    if (null != in) in.close();
}
Run Code Online (Sandbox Code Playgroud)

令我担心的部分是线程可能在获取资源的时刻(例如文件被打开)之间有些中断,但结果值未分配给相应的局部变量.是否还有其他情况,线程可能会在上述点之外被中断,除了:

  1. 抛出InterruptedException(例如,通过Thread#interrupt())或抛出OutOfMemoryError异常
  2. JVM退出(例如通过kill,System.exit())
  3. 硬件失败(或JVM中的错误完整列表:)

我已经读到第二种方法有点"惯用",但IMO在上面的场景中没有区别,在所有其他场景中它们都是平等的.

所以问题是:

两者有什么不同?如果我担心释放资源(特别是在多线程应用程序中),我应该更喜欢哪个?为什么?

如果有人指出我支持答案的Java/JVM规范的部分,我将不胜感激.

java resources exception finally try-catch

5
推荐指数
2
解决办法
892
查看次数