小编Cra*_*lus的帖子

Java:实现可比较但有太多条件ifs.我该如何避免它们?

我有一个list实现的对象Comparable.

我想对这个列表进行排序,这就是我使用它的原因Comparable.

每个对象都有一个字段,weight由3个其他成员int变量组成.

具有最多的对象的compareTo返回. 最重的不仅仅是如果 1weight

weightObj1.member1 > weightObj2.member1  
weightObj1.member2 > weightObj2.member2  
weightObj1.member3 > weightObj2.member3
Run Code Online (Sandbox Code Playgroud)

但实际上有点复杂,我最终得到的代码有太多的条件ifs.

如果weightObj1.member1 > weightObj2.member1持有,那么我在乎weightObj1.member2 > weightObj2.member2.

反之亦然.

否则,如果weightObj1.member2 > weightObj2.member2持有,那么我关心weightObj1.member3 > weightObj2.member3,反之亦然.

最后,如果weightObj1.member3 > weightObj2.member3持有AND,如果满足特定条件,则weightObj1获胜,反之亦然

我想知道有这样的设计方法吗?

java design-patterns if-statement comparable comparator

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

Java:这个正则表达式出了什么问题?

我试图让文本在标签内,即<text>.我在做:

Pattern pattern = Pattern.compile("(?<=\\<).*(?=\\>)");
Run Code Online (Sandbox Code Playgroud)

我认为这说:任何字符都是之前的0次或更多次<(正面观察),然后是>(正向前瞻).

Matcher m = pattern.matcher(data);  
if (!m.matches()) continue; //Called in a for loop  
Run Code Online (Sandbox Code Playgroud)

但是例如输入没有匹配<text> some other stuff here.

我在这做错了什么?

java regex string

0
推荐指数
2
解决办法
56
查看次数

我的位向量有什么问题?

我正在尝试创建一个支持的位向量int[].
所以我有以下代码:

public class BitVector {  

  int[] vector = new int[1 << 16];  

  public void setBit(int nextInt) {  
    nextInt = nextInt & 0xFFFF;  
    int pos = nextInt / 32;  
    int offset = nextInt % 32;  
    vector[pos] |= (1 << offset);    
  }

  public int findClearedBit() {  

    for(int i = 0;  i < vector.length; i++){              
            for(int j = 0; j < 8; j++){  
                if((vector[i] & (1 << j)) == 0)   
            return i * 32 +  j;  
        }  
    }  

    return -1; …
Run Code Online (Sandbox Code Playgroud)

java algorithm bit-manipulation bit bitvector

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

按索引列排序

我不清楚以下内容:
假设我有一个表A,我已经在列上创建了一个索引X.
如果我根据列进行选择,结果将被排序,对吧?
但是,如果由于某种原因我做了一个选择后跟一个ORDER BY X(例如我不知道列被索引),SQL服务器会执行排序执行顺序访问还是会去使用索引?

sql sql-server indexing performance sql-order-by

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

为什么gf不能用于vim但是ctrl +]有效?

我有一个文件,例如a.pl有这个方法调用:

add_location(@crew);

实际定义在同一个文件中.如果我这样做:CTRL + ]光标跳转到定义.如果我这样做:gf我得到:
E447: Can't find file "add_location" in path

如果我这样做,:pwd我将获得当前的工作目录.抱怨的路径是什么?函数定义位于同一文件中.

linux vi vim ctags

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

无法弄清楚git责备的报道

我正在尝试git blame一个特定的文件.如果我理解正确,它会显示对文件和由谁做出的所有修改.
但是当我运行命令时,结果不会以有序的方式出现.我必须搜索条目以确定哪个是按日期的最后一次更改.
报告结果的顺序是什么?我怎样才能按照修改顺序得到报告?

git

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

为什么文本框在javascript创建时显示不同?

为什么在此代码中我按下时创建的文本框push与已显示的文本框不完全相同?

<html>  
<body id="bd">  
<input type="text" style="width: 30px; padding: 2px; border: 1px solid black"/>  
<input type="submit" value="Push" onclick="test()"/>   
<script type="text/javascript">   
function test() {   
    var txt = document.createElement('input');  
    txt.type = 'text';   
    txt.style = "width: 30px; padding: 2px; border: 1px solid black";   
    document.getElementById('bd').appendChild(txt);  
}  
</script>  
</body>  
</html>   
Run Code Online (Sandbox Code Playgroud)

更新:
我在@Bergi的小提琴中看到的:

在此输入图像描述

html javascript css

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

在javascript中通过class属性应用样式时是否有限制?

我试图通过javascript创建一个标签,但似乎没有应用CSS.
示例代码(在Chrome中测试):

<html>  
<head>  
<style type="text/css">  
#wrapper {  
    width:700px;  
}  
#form_groups .label {  
    float:left;  
    clear:left;  
    width:180px;  
    margin-right:3px;  
    margin-top:2px;  
    background-color:red;  
}  

#the_id {  
    background-color: #FBEF99;  
    font-family:"Lucida Console", Monaco, monospace;  
    font-size: .9em;  
    width: 300px;  
    margin-top: 2px;  
}  
</style>  
</head>  
<body>  
<input type="submit" value="Create" onclick="createForm()"/>  
<div id="wrapper">  
<form id="form_groups" action="">  
    <label class="label">Id</label>  
    <input id="the_id" type="text" value="1">     
</form>  
</div>  

<script type="text/javascript">  
function createForm () {  
    var wrapper = document.getElementById('wrapper');  
    var form = document.getElementById('form_groups');  
    wrapper.removeChild(form);       
    form = document.createElement('form');  
    form.id='form_groups';  
    var lbl = document.createElement('label');  
    lbl.textContent = …
Run Code Online (Sandbox Code Playgroud)

html javascript css

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

无论我实际拥有什么类型,如何确保转换为单个编码?

如果我在perl方法中得到一个字符串但我不知道那时它是否是特定的编码并且想要将其转换为特定的编码我该怎么做?
例如以下内容(也可以是UTF-8而不是ISO8859):

sub func {
  my $arg = @_;  
  if($arg not ISO8859) {  
     $arg = Encode::encode("ISO-8859", $arg);  
  }  
  #use $arg    
}   
Run Code Online (Sandbox Code Playgroud)

更新:
以下是否正确?(目的是无论$arg我在方法中传递的内容是什么utf8,然后我将其编码为iso8859并获得单个表示而不管输入如何)

$arg = Encode::decode("utf8", $arg);  
$arg = Encode::encode("iso-8859-1, $args);  
Run Code Online (Sandbox Code Playgroud)

的perldoc似乎是说,我需要的是覆盖

string perl encoding encode utf-8

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

如何比较两个表是否具有相同的数据?

如果我有 2 个表并想查找它们是否具有相同的数据,那么最直接的方法是什么MySQL
我已经阅读了有关执行相关子查询的信息,UNION ALL但是该查询大约有 2 页(!),并且无法真正遵循它正在执行的操作。必须有更简单的方法。
即使是例如MySQL将表数据复制到文件并执行vimdiff(我不确定这是否可能 - 是吗? - 只是大声思考)。

更新
我只对表数据感兴趣,对结构不感兴趣。这是为了澄清由于我发表的一个模棱两可的评论

mysql sql linux subquery

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

perl grep和cli grep之间的不一致

我正在做以下事情:

#!/usr/bin/perl  
use strict;  
use warnings;  

my $proc = `ps -ef|grep -c myscriptname`;  
print $proc;  
Run Code Online (Sandbox Code Playgroud)

当我在脚本中运行它时,它会打印2.

ps -ef|grep -c myscriptname在命令行上只显示:1
为什么?

同样的 my $proc = qx/ps -ef|grep -c myscriptname/

更新
要明确我运行此片段somerandomscript.pl

更新2
遵循edorqui的建议我删除-c获取:

12013 15777 15776 0 14:11 pts/6 00:00:00 sh -c ps -ef | grep myscriptname   
12013 15779 15777 0 14:11 pts/6 00:00:00 grep myscriptname Argument "12013 15777 15776 0 14:11 pts/6 00:00:00 sh -c ps..." isn't numeric in numeric gt (>) at somerandomscript.pl line …
Run Code Online (Sandbox Code Playgroud)

linux perl grep

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

Java中的位移

可能是我太累了.
为什么以下不显示相同的值?

int x = 42405;
System.out.println(x << 8);  
System.out.println((x &0x00ff) << 8);  
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,较低的位应该是清楚的

java bit-manipulation bit

-2
推荐指数
1
解决办法
3136
查看次数