小编Jas*_*n S的帖子

Eclipse 3.7,3.8和4.2有什么区别?

Eclipse Indigo是3.7,Eclipse Juno是4.2,但3.8M1刚刚发布.什么是3.8,这与3.7有什么不同?我迫不及待地等待Java 7的支持,我很困惑是否应该使用3.8M1或等待3.7.1

java eclipse eclipse-indigo eclipse-juno

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

Ant中"path"taskelement的文档在哪里?

我必须在这里遗漏一些明显的东西......我找到了这个<property> 任务的在线文档,但我找不到<path>任务,例如:

<path id="client.classpath">
   <fileset dir="${libDir}">
       <include name="*.jar"/>
   </fileset>
</path>
Run Code Online (Sandbox Code Playgroud)

记录在哪里<path>

ant documentation

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

从多个线程进行Java日志记录的最佳实践?

我想要一个由管理数据的几个任务生成的诊断日志.这些任务可能在多个线程中.每个任务都需要将一个元素(可能带有子元素)写入日志; 进去快点出去.如果这是一个单任务的情况,我会使用XMLStreamWriter,因为它似乎是简单/功能的最佳匹配,而不必在内存中保存一个膨胀的XML文档.

但这不是一个单任务的情况,我不确定如何最好地确保这是"线程安全",其中"线程安全"在这个应用程序中意味着每个日志元素应该正确和连续地写入日志(一个后另一个,不以任何方式交错).

有什么建议?我有一个模糊的直觉,即要使用的方法是使用一个日志元素队列(每个元素都可以快速生成:我的应用程序忙于执行对性能敏感的实际工作),并且有一个单独的线程来处理日志元素并将它们发送到文件,以便日志记录不会中断生产者.

日志记录不一定必须是XML,但我确实希望它是结构化的和机器可读的.

编辑:我把"threadsafe"放在引号中.Log4j似乎是一个显而易见的选择(对我来说很新但对社区来说很老),为什么重新发明轮子...

java logging multithreading

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

用Java解码URI查询字符串

我需要解码包含查询字符串的URI; 预期的输入/输出行为类似于以下内容:

abstract class URIParser
{       
    /** example input: 
      * something?alias=pos&FirstName=Foo+A%26B%3DC&LastName=Bar */
    URIParser(String input) { ... }
    /** should return "something" for the example input */
    public String getPath(); 
    /** should return a map 
      * {alias: "pos", FirstName: "Foo+A&B=C", LastName: "Bar"} */
    public Map<String,String> getQuery();
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用java.net.URI,但它似乎解码了查询字符串所以在上面的例子中我留下了"alias = pos&FirstName = Foo + A&B = C&LastName = Bar"所以有一个歧义"是& "是查询分隔符,或者是查询组件中的字符.

编辑:我刚刚尝试了URI.getRawQuery()并且它没有进行编码,所以我可以用a分割查询字符串&,但是我该怎么办?Javascript有decodeURIComponent,我似乎无法在Java中找到相应的方法.

有什么建议?我宁愿不使用任何新库.

java decoding query-string

26
推荐指数
3
解决办法
7万
查看次数

java:获取数组组件的类

如果我有

public <T> doSomething(T[] array)
{
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能T.classarray

如果我这样做array.getClass(),那就T[].class取而代之.

java arrays generics

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

Java泛型:Collections.max()签名和Comparator

我理解集合的get和put原则:如果一个方法接受一个集合,它将写入一个类型T,参数必须是Collection<? super T>,而如果它将读取一个类型T,参数必须是Collection<? extends T>.

但有人可以解释Collections.max()签名:

public static <T> T max(Collection<? extends T> coll,
                    Comparator<? super T> comp)
Run Code Online (Sandbox Code Playgroud)

特别是为什么它Comparator<? super T>而不是Comparator<? extends T>

java generics comparator

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

为什么getClass()不能作为静态方法使用?

在静态上下文中,为什么不能调用静态版本getClass()(而不是必须使用my.package.name.MyClassName.class)?

是不是编译器足够智能,以确定何时使用对象方法+何时使用静态方法?


注意清楚:

我不是说,一个static getClass()应该使用替代的非静态方法getClass()(这是一种明显的-如果SpecialFoo是的子类Foo,那么getClass()一个Foo可以返回Foo.classSpecialFoo.class或别的东西,它有在运行时确定).

我说我想知道为什么不存在两个版本getClass(),一个是静态方法,只适用于静态上下文,以及常规的非静态方法getClass().如果不可能,那就不可能了,那就是答案.如果它可能但是还没有完成,那么这是一个历史选择,也许这是一个很好的理由.这就是我想知道的.

宣布这将是伟大的

final static Logger logger = LoggerFactory.getLogger(getClass());
Run Code Online (Sandbox Code Playgroud)

代替

final static Logger logger = LoggerFactory.getLogger(my.package.name.MyClass.class);
Run Code Online (Sandbox Code Playgroud)

前者可以从一个类逐字复制到下一个类,而后者则要求您在每个文件中复制类名.

java static

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

java数组线程安全

一个线程从数组的一个索引读取是否有任何并发​​问题,而另一个线程写入数组的另一个索引,只要索引不同?

例如(这个例子不一定推荐用于实际用途,仅用于说明我的观点)

 class Test1
 {
     static final private int N = 4096;
     final private int[] x = new int[N];
     final private AtomicInteger nwritten = new AtomicInteger(0);
     // invariant: 
     // all values x[i] where 0 <= i < nwritten.get() are immutable

     // read() is not synchronized since we want it to be fast
     int read(int index) {
         if (index >= nwritten.get())
             throw new IllegalArgumentException();
         return x[index];
     }
     // write() is synchronized to handle multiple writers
     // (using compare-and-set techniques to avoid …
Run Code Online (Sandbox Code Playgroud)

java arrays concurrency

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

MATLAB中未知长度的矩阵?

我正在尝试设置一个可变长度的零矩阵,其中有两列我可以输出while循环的结果(目的是使用它来存储来自Euler方法的步骤数据和调整后的时间步长).长度将由循环的迭代次数确定.

我想知道是否有一种方法可以在我运行循环时执行此操作,或者是否需要将其设置为开始,以及如何执行此操作.

matlab matrix variable-length

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

Java泛型+ Builder模式

我如何在start()下面打电话?

package com.example.test;

class Bar {}

public class Foo<K>
{
    final private int count;
    final private K key;

    Foo(Builder<K> b)
    {
        this.count = b.count;
        this.key = b.key;
    }

    public static class Builder<K2>
    {
        int count;
        K2 key;

        private Builder() {}
        static public <K3> Builder<K3> start() { return new Builder<K3>(); }
        public Builder<K2> setCount(int count) { this.count = count; return this; }
        public Builder<K2> setKey(K2 key) { this.key = key; return this; }
        public Foo<K2> build() { return new …
Run Code Online (Sandbox Code Playgroud)

java generics builder

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