我使用Run-> Run菜单从IntelliJ IDE运行一个简单的Java程序。 它工作正常。 现在我想添加log4j日志logging。 我在我的项目根目录下添加了资源文件夹。 我在该文件夹中添加了一个log4j.properties文件。 我改变了代码来logging一些东西。 告诉IntelliJ在类path中包含资源文件夹的正确方法是什么,以便看到属性文件? 用IntelliJ 8,我可以猜得像醉猴子,并最终得到它的工作。 我现在有9个,而我完全没有成功。 我一直在尝试一个小时。 如何在某个地方的“添加到类path”选项? /烟/发泄/咆哮
我已经知道不可变类的定义,但是我需要一些例子。
Java String是不可改变的常识。 不可变的string是Java自成立以来的重要补充。 不变性允许快速访问和大量的优化,与C风格的string相比,显着减less错误,并有助于实施安全模型。 有可能创build一个可变的不使用黑客,即 java.lang.refect sun.misc.Unsafe 引导类加载器中的类 JNI(或JNA,因为它需要JNI) 但是,在普通的Java中是否可以这样做,以便随时可以修改string? 问题是如何 ?
这是我的代码: public class Main { public static void main(String[] args) { Main p = new Main(); p.start(args); } @Autowired private MyBean myBean; private void start(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("META-INF/config.xml"); System.out.println("my beans method: " + myBean.getStr()); } } @Service public class MyBean { public String getStr() { return "string"; } } <beans xmlns="http://www.springframework.org/schema/beans" […]
我需要获取行和列的二维数组的长度。 我已经成功地完成了这个,使用下面的代码: public class MyClass { public static void main(String args[]) { int[][] test; test = new int[5][10]; int row = test.length; int col = test[0].length; System.out.println(row); System.out.println(col); } } 如预期那样打印出5,10。 现在看看这一行: int col = test[0].length; 请注意,我实际上必须引用特定的行,才能获得列的长度。 对我来说,这似乎难以置信的难看。 另外,如果数组被定义为: test = new int[0][10]; 然后,代码将尝试获取长度时失败。 有没有一种不同的(更聪明的)方式来做到这一点?
我们使用GSLB进行地理分布和负载平衡。 每个服务都被分配一个固定的域名。 通过一些DNS魔术,域名parsing成最接近服务器的IP,负载最轻。 为了使负载平衡起作用,应用服务器需要遵守DNS响应中的TTL,并在caching超时时再次parsing域名。 但是,我无法想出一个在Java中这样做的方法。 该应用程序在Java 5上运行,在Linux(Centos 5)上运行。
有没有更好的方法来否定Java中的布尔值而不是简单的if-else? if (theBoolean) { theBoolean = false; } else { theBoolean = true; }
我现在在我的代码中使用ReentrantReadWriteLock来同步树状结构的访问。 这个结构很大,可以一次读取多个线程,偶尔修改一小部分,所以它似乎很适合读写的习惯用法。 我明白,在这个特定的类中,不能提高对写入锁的读取locking,因此每个Javadoc必须在获得写入locking之前释放读取locking。 我以前在非重入的上下文中成功地使用了这个模式。 然而,我发现我无法可靠地获得永久封锁的写入locking。 由于读锁是可重入的,我实际上是这样使用简单的代码 lock.getReadLock().unlock(); lock.getWriteLock().lock() 可以阻止,如果我已经获得了readlock reentntly。 每次解锁的呼叫都会减less保持计数,并且只有当保持计数达到零时locking才被释放。 编辑澄清这一点,因为我不认为我最初解释得太好 – 我知道这个类没有内置的锁升级,我不得不简单地释放读锁,并获得写锁。 我的问题是/不pipe其他线程在做什么,调用getReadLock().unlock()可能实际上并不释放这个线程的锁,如果它获得了reentrantly,在这种情况下调用getWriteLock().lock()会永久阻塞,因为这个线程仍然持有读锁,从而阻塞自己。 例如,即使在没有其他线程访问锁的情况下运行singlethreaded,该代码片段也将永远不会到达println语句: final ReadWriteLock lock = new ReentrantReadWriteLock(); lock.getReadLock().lock(); // In real code we would go call other methods that end up calling back and // thus locking again lock.getReadLock().lock(); // Now we do some stuff and realise we need to […]
有一个库将recursion转储/打印对象的属性? 我正在寻找类似于Firebug中的console.dir()函数。 我知道commons-lang ReflectionToStringBuilder,但它不recursion到一个对象。 即,如果我运行以下: public class ToString { public static void main(String [] args) { System.out.println(ReflectionToStringBuilder.toString(new Outer(), ToStringStyle.MULTI_LINE_STYLE)); } private static class Outer { private int intValue = 5; private Inner innerValue = new Inner(); } private static class Inner { private String stringValue = "foo"; } } 我收到: ToString $ Outer @ 1b67f74 […]
我想为我的Java代码(一种单线程的本地复杂algorithm)提供一些性能指标(主要是运行时)。 (所以我不想要一个macros基准测量一个JVM实现。) 随着工具,我想 分析复杂性 ,即查看我的代码如何为参数n(search深度)进行缩放。 (我已经有了参数化的junittesting) 做一些趋势分析得到警告,如果代码基地的一些改变使代码变慢。 为此,我想使用一个工具或框架 做统计 ,最佳地计算均值,标准差和置信区间。 这个非常重要。 可以参数化 (见上面的参数n)。 这也是非常重要的。 是能够产生花哨的情节会不错,但不是必需的 可以在自动化(junit)testing中用来警告我,如果我的程序慢了,但这也不是必需的,只是一个加号。 哪些工具/框架可以满足这些要求? 哪一个很适合复杂性和趋势分析,为什么?