小编Pyr*_*cal的帖子

MySQL中表连接中"using"和"on"之间的区别是什么?

这是

... 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相互作用?

mysql sql join

13
推荐指数
3
解决办法
2万
查看次数

使用Java的FileLock时,是否可以让close()自动执行lock.release()?

大多数人应该知道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()的吗?

java nio filelock

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

编码一系列随机可变长度二进制代码的最简洁方法?

假设您有一个,List<List<Boolean>>并且您希望以最紧凑的方式将其编码为二进制形式.

我不关心读写性能.我只是想使用最小的空间.此外,该示例在Java中,但我们不限于Java系统.每个"列表"的长度是无限的.因此,编码每个列表长度的任何解决方案本身必须编码可变长度数据类型.

与此问题相关的是可变长度整数的编码.您可以将每个List<Boolean>视为可变长度unsigned integer.

请仔细阅读问题.我们不仅限于Java系统.

编辑

我不明白为什么很多答案都谈论压缩.我本身并不是在尝试压缩,而只是编码随机的位序列.除了每个比特序列具有不同的长度并且需要保留顺序.

你可以用不同的方式思考这个问题.假设您有一个随机无符号整数列表(无界).如何在二进制文件中编码此列表?

研究

我做了一些阅读,发现我真正想要的是通用代码

结果

我将使用本文中描述的Elias Omega Coding的变体一个新的正整数的递归通用代码

我现在明白,较小整数的表示越小,整数就越大.通过简单地选择具有第一个整数的"大"表示的通用代码,当您需要对任意大整数进行编码时,从长远来看可以节省大量空间.

binary encoding integer variable-length space-efficiency

12
推荐指数
3
解决办法
1万
查看次数

为什么编译器/ JVM不能让autoboxing"正常工作"?

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 autoboxing caching integer

12
推荐指数
3
解决办法
2486
查看次数

对嵌套函数运行单元测试

我来自Java世界,您可以在其中隐藏变量和函数,然后使用反射对它们运行单元测试.我使用嵌套函数来隐藏类的实现细节,以便只显示公共API.我正在尝试针对这些嵌套函数编写单元测试,以确保在开发时不会破坏它们.我试过调用一个嵌套函数,如:

def outer():
    def inner():
        pass

outer.inner()
Run Code Online (Sandbox Code Playgroud)

这会导致错误消息:

AttributeError:'function'对象没有属性'inner'

有没有办法让我对这些嵌套函数编写单元测试?如果没有,有没有办法通过为__添加前缀来触发名称,为类变量触发函数名称?

python testing closures

10
推荐指数
3
解决办法
6287
查看次数

什么时候模态对话真的有必要?

模式对话框是邪恶的,但我一直在读"你应该删除模式对话框可能时 "

什么时候不能删除模态对话框?我的意思是,什么是真正的模态任务迫使我们使用邪恶的模态对话?

最常见的例子是"你想保存吗?" 我认为这是让用户点击保存而不是记住用户输入是神圣的概念问题.如果您刚刚自动保存并具有"撤消"功能或进行修订,那么您无需询问用户是否要保存.

  • "你确定你要删除?" 取消删除
  • "你确定你要退出吗?" 你为什么要问这个?你是徒劳的吗?

为什么我们需要模态对话框?

编辑

除非他们在浏览器中编写自己的UI窗口系统,否则Web应用程序不会计入我的书中.Web应用程序没有与桌面应用程序相同的工具集.

编辑2

我的问题与标记为重复的问题略有不同.我觉得模态对话框不是最好的解决方案.提到的问题假定存在这种情况.

重复:什么时候模态UI可以接受

usability user-interface modal-dialog

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

如何找到给定半径内的最近城市?

你知道一些实用工具或网站,我可以用英里作为输入给美国城市,州和径向距离,它会让我回到那个半径范围内的所有城市吗?

谢谢!

web-services geography

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

如何在所有缩放级别实时准确地绘制大数据向量?

我有大型数据集(10 Hz数据,每24小时864k点),我需要实时绘制.这个想法是用户可以缩放和平移到非常详细的散点图.

数据不是很连续,而且有峰值.由于数据集太大,每次绘图刷新时都无法绘制每个点.

但我也不能只是绘制每一个点,否则我会错过大而短的尖峰等主要特征.

Matlab做得对.你可以给它一个864k向量的零,只需将任意一个点设置为1,它就可以用缩放和平移实时绘制.

Matlab如何做到这一点?

我的目标系统是Java,所以我将在Swing/Java2D中生成该图的视图.

java matlab plot zoom large-data-volumes

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

为什么list.get(0).equals(null)不起作用?

第一个索引设置为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)

java null list arraylist

7
推荐指数
2
解决办法
4636
查看次数

如何在用户点击JDialog之外时关闭模态JDialog?

我有一个Undecorated Modal JDialog,我想在用户点击模态对话框之外时设置为Visible(false).

这可能在Swing吗?

我正在做的是弹出一个文本字段的自定义编辑器,如日期选择器.有没有更简单的方法来做我想要的?

编辑

记住调用setVisible(true)时的模态块,所以你不能只说"不要使用模态对话框"

我已经尝试在对话框上集中监听器,它们在模态时不会触发.

java swing modal-dialog jdialog

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