小编Joa*_*uer的帖子

这两段代码中的哪一块更好/更快/使用更少的内存?

哪一个更优或者有什么不同?

String s = methodThatReturnsString();
int i = methodThatReturnsInt();
thirdMethod(s, i);
Run Code Online (Sandbox Code Playgroud)

要么

thirdMethod(methodThatReturnsString(), methodThatReturnsInt());
Run Code Online (Sandbox Code Playgroud)

通过最优,我的意思是在内存使用等方面最优.

java optimization

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

多线程环境中的BufferedReader

如何BufferedReader通过多个线程同时读取.

java io multithreading

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

java.util.zip.ZipException:超额订阅动态位长度树

我正在使用gzip压缩字符串,然后解压缩结果,但是我得到了以下异常,为什么?

 output:
Exception in thread "main" java.util.zip.ZipException: oversubscribed dynamic bit lengths tree
 at java.util.zip.InflaterInputStream.read(Unknown Source)
 at java.util.zip.GZIPInputStream.read(Unknown Source)
 at Test.main(Test.java:25)
public class Test {
 public static void main(String[]args) throws IOException{
  String s="helloworldthisisatestandtestonlydsafsdafdsfdsafadsfdsfsdfdsfdsfdsfdsfsadfdsfdasfassdfdfdsfdsdssdfdsfdsfd";
  byte[]bs=s.getBytes();
  ByteArrayOutputStream outstream = new ByteArrayOutputStream();

  GZIPOutputStream gzipOut = new GZIPOutputStream(outstream);
  gzipOut.write(bs);
  gzipOut.finish();
  String out=outstream.toString();
  System.out.println(out);
  System.out.println(out.length());

  ByteArrayInputStream in = new ByteArrayInputStream(out.getBytes());
  GZIPInputStream gzipIn=new GZIPInputStream(in);
  byte[]uncompressed = new byte[100000];
  int len=10, offset=0, totalLen=0;
  while((len = gzipIn.read(uncompressed, offset, len)) >0){ // this line
   offset+=len;
   totalLen+=len;
  }

  String uncompressedString=new String(uncompressed,0,totalLen); …
Run Code Online (Sandbox Code Playgroud)

java gzip

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

包含多个类的Java源代码应该是什么?

如果一个Java源文件中有多个类,那么.java文件的文件名是什么?

java

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

Java HttpSession setattribute在qa上抛出非序列化异常,但在本地环境中不抛出

我保存到会话的对象是a LocalizationContext,它不可序列化,我的Tomcat是5.5.28,而qa服务器是Tomcat 5.5.30.这是来自Tomcat文档:

每当Catalina正常关闭并重新启动,或者触发应用程序重新加载时,标准的Manager实现将尝试将所有当前活动的会话序列化为通过pathname属性定位的磁盘文件.然后,当应用程序重新加载完成时,所有这些保存的会话将被反序列化并激活(假设它们在平均时间内没有过期).

为了成功恢复会话属性的状态,所有这些属性必须实现java.io.Serializable接口.您可以通过<distributable>在Web应用程序部署描述符(/WEB-INF/web.xml)中包含该元素,使Manager强制实施此限制 .

这让我觉得它应该打破我的本地,并且你永远不能在Tomcat中保存会话属性,除非它实现Serializable.

编辑:

对不起,为了更清楚,我的问题是双重的.是否所有会话属性都必须是可序列化的,如果这样做,为什么它仍然可以在我的本地环境中工作?

java session tomcat httpsession

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

访问泛型类的静态方法

我想在类上访问静态方法,但是要在泛型中传递该类.

我做了以下事情:

class Base{
  public static String getStaticName(){
    return "Base";
  }
}


class Child extends Base{
  public static String getStaticName(){
    return "Child";
  }
}

class StaticAccessor{
  public static <T extends Base>String getName(Class<T> clazz){
    return T.getStaticName();
  }
}

StaticAccessor.getName() // --> "Base"
Run Code Online (Sandbox Code Playgroud)

这将返回"基地",但我想要的是"孩子"任何人没有反思的建议吗?

java generics methods static

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

C:指针混乱

我明白这是基本的东西的一部分,但我被卡住了:-(有人可以帮帮我吗?

计划1:

#include <stdio.h>
#include <stdlib.h> 

int main()
{
 int a=1,b=2,c;
 c=(a+b)++;
}
Run Code Online (Sandbox Code Playgroud)

为什么输出错误?是否需要左值?

计划2:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
 char *p1="name";
 char *p2;

 p2=(char*)malloc(20);
 memset(p2,0,20);

 while(*p2++=*p1++);
 printf("%s\n",p2);

}
Run Code Online (Sandbox Code Playgroud)

为什么是输出,一个空字符串?如果我颠倒增量的顺序,那就是:while(++*p2=++*p1);为什么左值误差来了?

c pointers lvalue post-increment

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

Java Arraylist使用元素

我有一个ArrayListString[].

每个String[]包含两个值:值和日期.

如果我打印它,它看起来像这样:

 value | date
-------|----------
 357.0 | 2011/05/30
-234.0 | 2011/05/31
-123.0 | 2011/05/30

我想创建一个新的ArrayList,在同一日期的所有值相加.像这样:

 value | date
-------|----------
 234.0 | 2011/05/30
-234.0 | 2011/05/31

有人可以帮忙吗?

java arrays arraylist

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

尝试编译程序时出错

我正在尝试运行从Sun Java站点获取的代码(我没有复制它,查看它并编写它,因为它可以帮助我记住代码).

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class CharEx{
    FileReader inputStream = null;
        FileWriter outputStream = null;

    public static void main(String args[]) throws IOException{
        FileReader inputStream = null;
        FileWriter outputStream = null;

        try{
            inputStream = FileReader("xanadu.txt");
            outputStream = FileWriter("out.txt");
            int c;
            while ((c = inputStream.read()) != -1){
                outputStream(c);
            } 
        }
        finally{
            if(inputStream !=null){
                inputStream.close();
            }
            if(outputStream !=null){
                outputStream.close();
            }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我遇到了错误.

D:\Java>javac CharEx.java
CharEx.java:14: cannot find symbol
symbol  : method FileReader(java.lang.String)
location: class CharEx
                        inputStream = …
Run Code Online (Sandbox Code Playgroud)

java io filereader filewriter

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

删除任何非字母或数字的内容

有没有办法删除Java中的所有字母或数字?

例如,

123$32 -> 12332
1234 abcd /n -> 1234abcd
Run Code Online (Sandbox Code Playgroud)

java

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