小编Jus*_*ong的帖子

Java正则表达式:重复捕获组

项是一个或多个数字或字符串的逗号分隔列表,例如

"12"
"abc"
"12,abc,3"
Run Code Online (Sandbox Code Playgroud)

我正在尝试匹配Java中零个或多个项目的括号列表,例如

""
"(12)"
"(abc,12)"
"(abc,12),(30,asdf)"
"(qqq,pp),(abc,12),(30,asdf,2),"
Run Code Online (Sandbox Code Playgroud)

对于最后一个示例,它应分别返回以下匹配组

qqq,pp
abc,12
30,asdf,2
Run Code Online (Sandbox Code Playgroud)

我想出了以下(不正确)模式

\((.+?)\)(?:,\((.+?)\))*
Run Code Online (Sandbox Code Playgroud)

这与上一个示例仅匹配以下内容

qqq,pp
30,asdf,2
Run Code Online (Sandbox Code Playgroud)

提示?谢谢

java regex

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

使用单个log4j2 xml文件配置log4j2和log4j

我已将我的应用程序迁移到log4j 2,并且我已通过log4j2.xml进行了配置

但是,我使用的一些库依赖于log4j 1.如果我使用以下命令运行应用程序:

-Dlog4j.configurationFile=path/to/log4j2.xml
Run Code Online (Sandbox Code Playgroud)

log4j 1抱怨找不到配置文件.我正在使用log4j 2,log4j-1.2-api-2.0-rc1.jar提供的log4j 1.x桥.是否可以使用单个log4j2.xml进行配置?

我尝试过的另一种方法是将log4j和log4j2配置在一起:

-Dlog4j.configurationFile=path/to/log4j2.xml -Dlog4j.configuration=path/to/log4j.xml
Run Code Online (Sandbox Code Playgroud)

我担心的是我的日志配置文件和输出的碎片.我也担心log4j.xml和log4j2.xml之间可能存在冲突.例如,logfile error.log配置为使用log4j 1中的FileAppender和log4j 2中的RollingFileAppender.

有什么建议?

[注意]

这是我看到的错误:

log4j:WARN No appenders could be found for logger (org.apache.activemq.util.ThreadPoolUtils).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Run Code Online (Sandbox Code Playgroud)

我正在使用的log4j 2的版本是log4j 2.0 rc1.

[回答]

似乎activemq-5.8.0.jar与log4j 1捆绑在一起.解决方案只是在activemq之前加载log4j 1.x桥.

java logging log4j log4j2

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

以编程方式禁用log4j 2中的shutdown hook

可以通过配置禁用log4j2中的关闭挂钩:

<Configuration shutdownHook="disable">
Run Code Online (Sandbox Code Playgroud)

有可能以编程方式这样做吗?

shutdown-hook log4j2

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

测试indexOf返回值的最佳实践

在测试indexOf的返回值时,您通常会写什么?

if str.indexOf("a") < 0 
Run Code Online (Sandbox Code Playgroud)

VS

if str.indexOf("a") == -1
Run Code Online (Sandbox Code Playgroud)

一种方法比另一种方法更受欢迎吗?

我实际上是为任何语言中的任何函数提出这个问题,错误时返回-1.

我通常更喜欢<0方法,因为如果函数扩展为在某些其他情况下返回-2,代码仍然可以工作.

但是,我注意到== -1方法更常用.有原因吗?

javascript java

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

使用Java中的组合和接口进行设计

我为一个问题设计了以下内容:

class Animal {
 // ...
}
class Guppy extends Animal { ... }
class Pigeon extends Animal { ... }

class TailedAnimal extends Animal {
 // ...
}
class Dog extends TailedAnimal { ... }
class Cat extends TailedAnimal { ... } 

class HornedAnimal extends Animal {
 // ...
}
class Ram extends HornedAnimal { ... }

public static void main(String[] args) {
 Animal a = getSomeAnimal();
 a.doSomething();
 if (a instanceof TailedAnimal) {
  // do something
 }
 if (a …
Run Code Online (Sandbox Code Playgroud)

java inheritance composition

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

在Java中重命名Observer模式的实现方法

我在Java中使用Observable类/ Observer接口来实现观察者模式.Observer接口需要覆盖更新(Observable o,Object arg)方法.

问题是我正在观察相当数量的类,并且我的update()方法已经变得非常大:

public class Foo implements Observer {
    ....

    public void update(Observable o, Object param) {
        if (o instanceof A) {
            // large chunk of code
            ...
        } else if (o instanceof B) {
            // large chunk of code
            ...
        }
            ...
        } else if (o instanceof H) {
            ...
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

为了拆分方法,我正在考虑使用例如AObserver接口,BObserver接口来扩展Observer接口,这需要分别覆盖onAUpdate,onBUpdate .. 此方法还可以根据实现的接口轻松确定类正在观察的Observable.

class Foo implements AObserver, BObserver {
    ....

    public void onAUpdate(Observable o, Object param) {
        if (o instanceof A) {
        // large …
Run Code Online (Sandbox Code Playgroud)

java design-patterns observable observer-pattern

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

Python 3.2 中的截断除法

  1. Python 3.2 中整数除法//比浮点除法更快吗?/如果我知道我将只使用整数,我应该赞成//而不是默认吗/

  2. 如何在 Python 3.2 中获得整数截断行为?

    1/2 = 0

    -1/2 = 0

谢谢。

python division

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

在 emacs 中分割窗口时下一个缓冲区跳过缓冲区

我是一名 Emacs 新用户,正在学习如何垂直分割窗口并循环每个窗格中的缓冲区。

但是,在一个窗格中打开新文件后,next-buffer 不会在另一个窗格中循环遍历该文件,而是仅在该文件在新窗格中出现一次后才循环。这可以复制如下:

在新的 emacs 会话中打开 2 个文件 A 和 B。

使用“split-window-right”垂直分割窗口。

“next-buffer”在 PaneLeft 和 PaneRight 中循环遍历 A 和 B。

在 PaneLeft 中打开文件 C。

“next-buffer”在 PaneLeft 中循环 A、B、C。

确保 C 聚焦在 PaneLeft,然后切换到 PaneRight。“next-buffer”仅循环访问 PaneRight 中的 A 和 B。它跳过 C 可能是因为 C 已经在 PaneLeft 中可见。

切换回 PaneLeft,并确保 A 或 B 聚焦在 PaneLeft 中。

切换回 PaneRight,现在“下一个缓冲区”会循环通过 A、B 和 C,而不管 PaneLeft 中可见的内容。

这是预期的行为吗?我怎样才能让它按我的预期工作?

注意:我运行时没有任何自定义扩展,并且我的 .emacs 几乎是空的。

emacs emacs24

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

将线分割成Emacs中的字段

我有以下数据

Food $44
Transport $52
Rentals $102
...
Run Code Online (Sandbox Code Playgroud)

我想转换成以下内容

Food      $44
Transport $52
Rentals   $102
...
Run Code Online (Sandbox Code Playgroud)

Emacs中是否有内置功能可以执行此操作?我不熟悉elisp.谢谢.

emacs

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

将方法委托给Java中的子类

我有一个超类Shape,类Triangle,Square等扩展Shape.我有两个当前的问题:

  1. 我的方法Triangle extends Shape不编译.它必须返回一个Shape,而不是三角形.
  2. 我想隐藏这个方法.它应该只能从Shape超类中调用.
public class Shape {
  public static Shape createShapeFromXML(String xml) {
    String type = parse(xml);
      if (type.equals("Triangle") {
        Triangle.createShapeFromXML(xml);
      } else if (...) {
      // ...
    }
  }
}

public class Triangle extends Shape {
  public static Triangle createShapeFromXML(String xml) {
    ....
  }
}

public static void main(String[] args) {
  String xml = ...
  Shape s = Shape.createShapeFromXML(xml);
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决这些问题?

java inheritance

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

重构常用方法页眉和页脚

我在大量方法中出现了以下大量的页眉和页脚代码.是否有更清洁的方式来实现这一点?

 Session sess = factory.openSession();
 Transaction tx;
 try {
     tx = sess.beginTransaction();
     //do some work
     ...
     tx.commit();
 }
 catch (Exception e) {
     if (tx!=null) tx.rollback();
     throw e;
 }
 finally {
     sess.close();
 }
Run Code Online (Sandbox Code Playgroud)

有问题的类实际上是一个EJB 2.0 SessionBean,它看起来像:

public class PersonManagerBean implements SessionBean {
    public void addPerson(String name) {
        // boilerplate
        // dostuff
        // boilerplate
    }

    public void deletePerson(Long id) {
        // boilerplate
        // dostuff
        // boilerplate
    }
}
Run Code Online (Sandbox Code Playgroud)

java refactoring

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

将较小的数字分配给1行中的变量

这个功能有一个单行程吗?

int side = width < height ? width : height;
width = side;
height = side;
Run Code Online (Sandbox Code Playgroud)

java

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