小编mvd*_*mvd的帖子

为什么在通过Java中的方法定义之前可以访问静态字段?

我遇到了一个有趣的事情:

static {
    System.out.println(test);     // error cannot reference a field before it is defined
    System.out.println(cheat());  // OK! 
}

private static boolean cheat() {
    return test;
}

private static boolean test = true;

public static void main(String args[]) {}
Run Code Online (Sandbox Code Playgroud)

第一种方法是错误的,你的编译器和IDE都会告诉你这是错误的.在第二种情况下,作弊是可以的,但它实际上默认字段testfalse.使用Sun JDK 6.

java

16
推荐指数
1
解决办法
1029
查看次数

如何强制mysql命令行不提示y/n?

我有一个shell脚本执行以下操作

mysql -uuser -ppass -e "DROP DATABASE IF EXISTS database"
Run Code Online (Sandbox Code Playgroud)

但是,如果您确定要这样做[Y/N],则会出现提示.我在脚本中需要这个,所以有没有办法强制它执行?--force文档中的选项说明了不停止错误.

编辑:mysql客户端实际上不会生成提示.事实证明我有mysqladmin客户端调用正在生成提示.

mysql database

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

git worktrees 与“clone --reference”

使用 git worktrees 与使用 flag 维护多个克隆相比有何优缺点--reference?我考虑的主要场景是,开发人员需要在磁盘上维护旧版本的多个 git 存储库(release/1.0、release/2.0、release/3.0),因为在单个 git 存储库上切换分支和重建成本高昂。

cd /opt/main/使用工作树,开发人员可以拥有存储库的单个克隆,并且可以使用,将任何旧版本创建为存储库的工作树git worktree add /opt/old_release_1 release/1.0。使用参考克隆,开发人员在某处维护主克隆,并使用cd /opt/old_release_1,git clone --reference /opt/main/.git ssh://git@github.com/myrepo.git为旧版本创建克隆存储库。

看起来他们都可以实现相同的目标。在速度、磁盘空间……其他方面,两者相比是否有优势?

git git-worktree

10
推荐指数
1
解决办法
3710
查看次数

如何为jar配置log4j日志记录?

我在其构建路径上有一个带有log4j.jar的项目A. 我有许多类具有以下形式的日志记录语句:

Logger _log = Logger.getLogger(A.<>.class);
...
_log.info("...");
Run Code Online (Sandbox Code Playgroud)

我将项目作为jar导出到另一个项目B.项目B已经有自己的log4j jar和它自己的.xml配置文件.我想在A中配置特定的类,以不同的"级别"登录到Console Apender.我该怎么办?

java log4j

6
推荐指数
1
解决办法
4195
查看次数

如何为开发人员审核队列轮换开发算法?

假设你有开发商A,B,C,D,E,F和他们检查彼此的工作.

如何开发一种算法来生成审核轮换,告诉每个开发人员他们每周必须审核的工作并满足以下条件:

  • 您不能连续两周审查同一个人
  • 不能有闭环(A评论B,B评论A)
  • 如果您在开始重复之前对其他开发人员进行一次审核,那就太好了.

我想我可以让奇怪的开发人员使用它,但我正在努力解决偶数问题.

sorting algorithm

6
推荐指数
1
解决办法
143
查看次数

使用PMD ant目标时找不到ruleset/basic.xml

使用pmd-5.0.1.我有一些自定义规则集:

<target name="pmd">
    <condition property="rules.file" else="${data}\pmdrules.xml,${data}\madcustompmdrules.xml">
        <isset property="rules.file"/>
    </condition>        

    <pmd rulesetfiles="${rules.file}">
        <formatter type="xml" toFile="${report.file}"/>
        <fileset dir="${src}">
            <include name="**/*.java"/>
        </fileset>
    </pmd>
</target>
Run Code Online (Sandbox Code Playgroud)

规则集引用了这样的基本规则:

<rule ref="rulesets/basic.xml/EmptySwitchStatements"/>
<rule ref="rulesets/basic.xml/JumbledIncrementer"/>
<rule ref="rulesets/basic.xml/ForLoopShouldBeWhileLoop"/>
<rule ref="rulesets/basic.xml/UnnecessaryConversionTemporary"/>
<rule ref="rulesets/basic.xml/OverrideBothEqualsAndHashcode"/>
<rule ref="rulesets/basic.xml/DoubleCheckedLocking"/>
Run Code Online (Sandbox Code Playgroud)

但是,当运行这个蚂蚁目标时,我得到:

java.lang.RuntimeException: Couldn't find the class Can't find resource rulesets/basic.xml.  Make sure the resource is a valid file or URL or is on the CLASSPATH.
Run Code Online (Sandbox Code Playgroud)

basic.xml不应该是jar文件的一部分吗?我错过了什么?

java ant pmd

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

在Windows上通过putty编写ssh脚本

我需要从windows机器编写linux机器的mysql恢复脚本.我有腻子,我知道它有ssh功能.这是我有的:

C:\Progra~1\Putty\putty.exe -ssh root@10.1.2.3 && mysql -u USER -pPASS db < /tmp/dump.sql
Run Code Online (Sandbox Code Playgroud)

编写脚本时我遇到的问题是putty打开一个新窗口并将控制转移到那里,所以任何事情都会发生

putty.exe -ssh 
Run Code Online (Sandbox Code Playgroud)

什么都不做

mysql ssh putty

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

什么是适合使用更改每个版本的外部API的Java代码的良好组织?

具体来说,我使用的是JSON RPC API.规范可能会在API的版本之间发生变化,但我总能说出我连接时的版本.我有大约30个使用可用的JSON RPC方法的包装器方法.

您是否在应该调用某些内容的方式中看到更改时插入switch语句?或者编写全新的方法以使其更易于管理,即使大多数API的功能没有改变而且您的代码不必更改?

编辑:我忘了提到我希望我的代码能够使用这个API的多个版本,即.我不能只更新我的代码以使用版本2.0,因为我可能想在提供此版本为1.8的服务的其他服务器上使用它.

java

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

ExtJS只编辑网格单元格是新的

我有一个网格:

Ext.create('Ext.grid.Panel', {
    id: 'grid',
    store: this.store,
    columns: [{
        dataIndex: 'a'
    },{
        dataIndex: 'b'
    },{
        dataIndex: 'c'
    }],
    selModel: {
        selType: 'cellmodel'
    },
    plugins: [cellEditing]
})
Run Code Online (Sandbox Code Playgroud)

其中使用cellEditting:

var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
    clicksToEdit: 1,
    listeners: {
        beforeedit: function(obj) {
                // Something goes here?
        }   
    }
});
Run Code Online (Sandbox Code Playgroud)

现在,有一些按钮可以向网格"添加行",因此记录可能是新的或旧的.

  • 如果在商店/面板中添加了行,我需要列b并且c可以编辑.
  • 如果用户正在尝试编辑在创建面板时从数据库中简单加载的现有行,我只需要列c可编辑.

我怀疑我需要向beforeedit听众添加一些内容,但我是ExtJS和javascript的新手,因此我不知道如何描述条件.

javascript extjs

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

只有在一个地方使用对象时会出现同步阻塞会发生什么?

Class A {
    private Map<Oject,Object> map;
    public void clear() {
        map.clear();
    }

    public void work() {
        synchronized (map) {
            map.put(new Object, new Object();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果线程A在work()方法的中间,这是否意味着线程B在执行clear()方法时不会阻塞?

上面的代码有什么区别?

    public void clear() {
        synchronized (map) {
            map.clear();
        }
    }
Run Code Online (Sandbox Code Playgroud)

java

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

如何使用awk挑选出"第二"值?

迄今为止专业制作的剧本

iostat -p -x 1 2| grep $1[^[:digit:]] | awk '{print $9}'
Run Code Online (Sandbox Code Playgroud)

将返回两行:

0.16
0.00
Run Code Online (Sandbox Code Playgroud)

因为iostat正在拍两个样本.但你已经知道了.我的问题是因为你和我都知道每次都会有两行,我怎么选出第二行呢?

linux bash awk

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

为什么String.replaceAll()需要这么多的转义为"字符?

如果我有字符串a"b"c",但我想得到a\"b\"c\",我自然会写

String t = "a\"b\"c\"";
t = t.replaceAll("\"", "\\\"");
Run Code Online (Sandbox Code Playgroud)

但是,这导致相同的字符串,a"b"c".正确的方法是

t.replaceAll("\"", "\\\\\"");
Run Code Online (Sandbox Code Playgroud)

为什么?

java regex

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

标签 统计

java ×6

mysql ×2

algorithm ×1

ant ×1

awk ×1

bash ×1

database ×1

extjs ×1

git ×1

git-worktree ×1

javascript ×1

linux ×1

log4j ×1

pmd ×1

putty ×1

regex ×1

sorting ×1

ssh ×1