以下Groovy代码
lines = ['0','1','2','3','4','5']
println lines[1..lines.size()-1]
println lines[1..-1]
println lines[1..<lines.size()-1]
println lines[1..<-1]
println lines[1..<-2]
println lines[1..-2]
Run Code Online (Sandbox Code Playgroud)
产生这个输出:
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, 3, 4]
[1, 0]
[1, 2, 3, 4, 5]
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
由于-1是列表中最后一个元素的索引,前两个是有意义的(Groovy中的范围包括end元素,而不是像Java中的其他地方一样省略它:-()
第3行是所需的输出(没有第一个和最后一个元素的列表).
我很担心输出#4:为什么我得到[1, 0]的1..-1?
另外[1, 2, 3, 4, 5]对于范围1..<-2似乎是错误的.
为什么会这样?
想象一下,我有一个Disposable类实现的类型:
class FactoryImpl implements Disposable {}
Run Code Online (Sandbox Code Playgroud)
我可以将这个类绑定为单例:
bind(Factory.class)
.to(FactoryImpl.class)
.in(Singleton.class);
Run Code Online (Sandbox Code Playgroud)
或者作为一个热切的单身人士:
bind(Factory.class)
.to(FactoryImpl.class)
.asEagerSingleton();
Run Code Online (Sandbox Code Playgroud)
请注意,实现具有类型,而不是接口.
我怎样才能找到Guice实际创建的所有单例以及实现该类型的单例Disposable?
请注意,我不想盲目地调用get()提供程序以避免创建我不需要的东西(特别是因为我正在销毁单例,因此创建新的单例可能会导致问题).
这与诸如如何从Guice Injector获取所有单例实例的问题相反?只有工作,然后界面包含您需要的键.
[编辑]这是我有多远.这段代码是否正确?
首先,我需要我的界面.
public interface Disposable {
public void dispose();
}
Run Code Online (Sandbox Code Playgroud)
魔术发生在这里:
import java.util.Collections;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.beust.jcommander.internal.Lists;
import com.google.inject.AbstractModule;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.google.inject.Singleton;
import com.google.inject.TypeLiteral;
import com.google.inject.spi.InjectionListener;
import com.google.inject.spi.TypeEncounter;
import com.google.inject.spi.TypeListener;
import com.google.inject.util.Modules;
/** Support for disposable beans. */
@Singleton
public class …Run Code Online (Sandbox Code Playgroud) 我需要记录我目前正在处理的软件.该软件由几种编程语言和脚本组成,让我思考.如果新的开发人员出现并且需要修复某些东西,他们可能会知道Java,但可能不是bash脚本.如果有一个程序可以帮助理解什么,那将是很好的
for f in "$@" ; do
Run Code Online (Sandbox Code Playgroud)
手段.我正在考虑创建一个静态HTML页面的代码加上语法高亮显示的内容,如果你将鼠标悬停在某些内容上(例如"for"),它会显示一个带有解释的弹出窗口:
for启动一个循环,迭代后面的所有值in.在循环中,您可以通过变量访问每个值$f.循环体位于do和之间done
这样的事情已经存在吗?
[编辑]这只是一个例子.你会得到其他帮助f,in,"$@",;和do,行的,即每一个元素应加以解释.未知元素(如命令名称)应链接到Google.因此,即使您遗漏了一些细节,也可以了解它的作用.
[编辑2]我知道你不能写一个能理解其他程序功能的程序.我正在寻找的是一个简单的工具,它将执行"扩展语法突出显示",因为它将为表达式着色并简要说明它的含义(加上可能是一些深入参考的链接).
这适用于知道如何编程但可能以前没有看过一些模糊构造的人.说
echo "Error" 1>&2
Run Code Online (Sandbox Code Playgroud)
每个bash程序员都知道这意味着什么,但Java开发人员可能会1>&2因为他们可以猜到echo== 而感到困惑System.out.println.一个简单的"重定向stdout到stderr"将清除事情并立即给出"AHA!" 这使他们能够保持目前的思路.
我不完全确定这是否适用于stackoverflow,所以请纠正我,如果没有.
即说我们有内容的t.py:
class A(object):
pass
print("A:", A)
class B(object):
print("From B: A:", A)
class OuterClass(object):
class AA(object):
pass
print("AA:", AA)
class BB(object):
print("From BB: AA:", AA)
Run Code Online (Sandbox Code Playgroud)
现在我们执行它: $ python3 t.py
A: <class '__main__.A'>
From B: A: <class '__main__.A'>
AA: <class '__main__.AA'>
From BB: AA:
Traceback (most recent call last):
File "t.py", line 9, in <module>
class OuterClass(object):
File "t.py", line 14, in OuterClass
class BB(object):
File "t.py", line 15, in BB
print "From BB: AA:", AA
NameError: name 'AA' is …Run Code Online (Sandbox Code Playgroud) 我正在使用Java创建一些大文件(数据库导出),我需要将它们放在我们的SharePoint服务器上.现在,我正在用IE做这个,但我也想自动化这一步.
我搜索了网页,我发现了一些使用SOAP的提示,但我还没有真正看到所有这些.有人能为我提供一些示例代码或配方,我需要做什么吗?
请注意:SharePoint服务器要求进行NT域身份验证.我甚至无法使用Firefox登录:(
编辑
我收到此错误:
Exception during request processing:
Caused by javax.servlet.ServletException with message:
"Parameter count exceeded allowed maximum: 512"
Run Code Online (Sandbox Code Playgroud)
对帖子中传递的参数数量似乎有限制.
我怎么能在JBoss中扩展这个限制?
有时,当我按下F3Java编辑器中的Type 时,我在状态栏中收到此消息:
无法在编辑器中打开当前文本选择
当我将选择复制到剪贴板并用于Ctrl+Shift+T打开"打开类型"对话框时,我可以粘贴该值,它将显示类型,我可以打开它.类型在类路径上(没有编译错误).
在同一项目中的其他Java编辑器中,F3/Ctrl-Click可以正常工作.
在"破碎"编辑器中,它仅适用于内部字段和方法.对于内部字段,它仅适用于定义字段的位置.所有使用场地的地方都已死亡.但是,"Mark Occurrences"仍有效.
我怎么摆脱它?
到目前为止,我尝试过:
这种情况发生在安装了m2e 1.3.1的Eclipse 3.7.2上.
请包括nanos,否则它将是微不足道的:
long diff = Math.abs(t1.getTime () - t2.getTime ());
Run Code Online (Sandbox Code Playgroud)
[编辑]我想要最精确的结果,所以没有双打; 只有整数/长整数.此外,结果必须是积极的.伪代码:
Timestamp result = abs (t1 - t2);
Run Code Online (Sandbox Code Playgroud)
例子:
t1 = (time=1001, nanos=1000000), t2 = (time=999, nanos=999000000)
-> diff = (time=2, nanos=2000000)
Run Code Online (Sandbox Code Playgroud)
是的,java.sql.Timestamp中的毫秒数在时间和纳米标准中重复,因此1001毫秒表示1秒(1000)和1毫米,它在time部分和nanos部分中因为1毫秒= 1000000纳秒).这比它看起来更加狡猾.
我建议不要在没有实际测试代码或准备好工作代码示例的情况下发布答案:)