这是
... T1 join T2 using(ID) where T2.VALUE=42 ...
Run Code Online (Sandbox Code Playgroud)
同样的
... T1 join T2 on(T1.ID=T2.ID) where T2.VALUE=42 ...
Run Code Online (Sandbox Code Playgroud)
对于所有类型的连接?
我的理解using(ID)是它只是简写on(T1.ID=T2.ID).这是真的?
现在换另一个问题:
以上是一样的
... T1 join T2 on(T1.ID=T2.ID and T2.VALUE=42) ...
Run Code Online (Sandbox Code Playgroud)
我不认为这是真的,但为什么呢?如果在where子句中,on子句中的条件如何与join相互作用?
大多数人应该知道close()也关闭任何流使用.
这允许以下代码:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(...)));
...
br.close();
Run Code Online (Sandbox Code Playgroud)
这很好,因为我们不需要引用FileInputStream并记得关闭它.
但是它也适用于FileLocks吗?
final FileInputStream fis = new FileInputStream(new File("buffer.txt"));
final FileChannel c = fis.getChannel();
final FileLock lock = c.lock(0L, Long.MAX_VALUE, true);
final BufferedReader br = new BufferedReader(new InputStreamReader(fis));
try {
while(br.ready()) {
System.out.println(br.readLine());
}
} finally {
br.close();
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这段代码并且在br.close()调用时正确释放了锁,但这样做是否安全?该可关闭的JavaDoc说,"关闭此流并释放与之关联的所有系统资源." 我可以安全地假设我正在使用锁定close()指定release()的吗?
假设您有一个,List<List<Boolean>>并且您希望以最紧凑的方式将其编码为二进制形式.
我不关心读写性能.我只是想使用最小的空间.此外,该示例在Java中,但我们不限于Java系统.每个"列表"的长度是无限的.因此,编码每个列表长度的任何解决方案本身必须编码可变长度数据类型.
与此问题相关的是可变长度整数的编码.您可以将每个List<Boolean>视为可变长度unsigned integer.
请仔细阅读问题.我们不仅限于Java系统.
编辑
我不明白为什么很多答案都谈论压缩.我本身并不是在尝试压缩,而只是编码随机的位序列.除了每个比特序列具有不同的长度并且需要保留顺序.
你可以用不同的方式思考这个问题.假设您有一个随机无符号整数列表(无界).如何在二进制文件中编码此列表?
我做了一些阅读,发现我真正想要的是通用代码
我将使用本文中描述的Elias Omega Coding的变体一个新的正整数的递归通用代码
我现在明白,较小整数的表示越小,整数就越大.通过简单地选择具有第一个整数的"大"表示的通用代码,当您需要对任意大整数进行编码时,从长远来看可以节省大量空间.
Autoboxing相当可怕.虽然我完全理解之间的差异==和.equals我不能不帮助有后续错误的地狱了我:
final List<Integer> foo = Arrays.asList(1, 1000);
final List<Integer> bar = Arrays.asList(1, 1000);
System.out.println(foo.get(0) == bar.get(0));
System.out.println(foo.get(1) == bar.get(1));
Run Code Online (Sandbox Code Playgroud)
那打印
true
false
Run Code Online (Sandbox Code Playgroud)
他们为什么这样做?它与缓存的整数有关,但如果是这样的话,为什么它们不只是缓存程序使用的所有整数?或者为什么JVM始终不会自动拆箱到原始状态?
打印虚假或真假会更好.
编辑
我不同意旧代码的破坏.通过foo.get(0) == bar.get(0)返回true,您已经破坏了代码.
通过在字节代码中将int替换为int(只要从未赋值为null),就不能在编译器级别解决这个问题.
我来自Java世界,您可以在其中隐藏变量和函数,然后使用反射对它们运行单元测试.我使用嵌套函数来隐藏类的实现细节,以便只显示公共API.我正在尝试针对这些嵌套函数编写单元测试,以确保在开发时不会破坏它们.我试过调用一个嵌套函数,如:
def outer():
def inner():
pass
outer.inner()
Run Code Online (Sandbox Code Playgroud)
这会导致错误消息:
AttributeError:'function'对象没有属性'inner'
有没有办法让我对这些嵌套函数编写单元测试?如果没有,有没有办法通过为__添加前缀来触发名称,为类变量触发函数名称?
模式对话框是邪恶的,但我一直在读"你应该删除模式对话框可能时 "
什么时候不能删除模态对话框?我的意思是,什么是真正的模态任务迫使我们使用邪恶的模态对话?
最常见的例子是"你想保存吗?" 我认为这是让用户点击保存而不是记住用户输入是神圣的概念问题.如果您刚刚自动保存并具有"撤消"功能或进行修订,那么您无需询问用户是否要保存.
为什么我们需要模态对话框?
编辑
除非他们在浏览器中编写自己的UI窗口系统,否则Web应用程序不会计入我的书中.Web应用程序没有与桌面应用程序相同的工具集.
编辑2
我的问题与标记为重复的问题略有不同.我觉得模态对话框不是最好的解决方案.提到的问题假定存在这种情况.
你知道一些实用工具或网站,我可以用英里作为输入给美国城市,州和径向距离,它会让我回到那个半径范围内的所有城市吗?
谢谢!
我有大型数据集(10 Hz数据,每24小时864k点),我需要实时绘制.这个想法是用户可以缩放和平移到非常详细的散点图.
数据不是很连续,而且有峰值.由于数据集太大,每次绘图刷新时都无法绘制每个点.
但我也不能只是绘制每一个点,否则我会错过大而短的尖峰等主要特征.
Matlab做得对.你可以给它一个864k向量的零,只需将任意一个点设置为1,它就可以用缩放和平移实时绘制.
Matlab如何做到这一点?
我的目标系统是Java,所以我将在Swing/Java2D中生成该图的视图.
第一个索引设置为null(空),但它不打印正确的输出,为什么?
//set the first index as null and the rest as "High"
String a []= {null,"High","High","High","High","High"};
//add array to arraylist
ArrayList<Object> choice = new ArrayList<Object>(Arrays.asList(a));
for(int i=0; i<choice.size(); i++){
if(i==0){
if(choice.get(0).equals(null))
System.out.println("I am empty"); //it doesn't print this output
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个Undecorated Modal JDialog,我想在用户点击模态对话框之外时设置为Visible(false).
这可能在Swing吗?
我正在做的是弹出一个文本字段的自定义编辑器,如日期选择器.有没有更简单的方法来做我想要的?
编辑
记住调用setVisible(true)时的模态块,所以你不能只说"不要使用模态对话框"
我已经尝试在对话框上集中监听器,它们在模态时不会触发.