小编ZZ *_*der的帖子

如何让Java尊重DNS缓存超时?

我们使用GSLB进行地理分布和负载平衡.为每项服务分配一个固定的域名.通过一些DNS魔术,域名被解析为最接近服务器且负载最小的IP.为了使负载平衡起作用,应用程序服务器需要遵守DNS响应中的TTL,并在缓存超时时再次解析域名.但是,我无法想出用Java做到这一点的方法.

该应用程序使用Java 5,在Linux(Centos 5)上运行.

java dns gslb

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

如何在Java中找到默认的字符集/编码?

显而易见的答案是使用,Charset.defaultCharset()但我们最近发现这可能不是正确的答案.有人告诉我,结果与java.io类在多个场合使用的真正的默认字符集不同.看起来Java保留了2套默认字符集.有没有人对这个问题有任何见解?

我们能够重现一个失败案例.这是一种用户错误,但它仍然可能暴露所有其他问题的根本原因.这是代码,

public class CharSetTest {

    public static void main(String[] args) {
        System.out.println("Default Charset=" + Charset.defaultCharset());
        System.setProperty("file.encoding", "Latin-1");
        System.out.println("file.encoding=" + System.getProperty("file.encoding"));
        System.out.println("Default Charset=" + Charset.defaultCharset());
        System.out.println("Default Charset in Use=" + getDefaultCharSet());
    }

    private static String getDefaultCharSet() {
        OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream());
        String enc = writer.getEncoding();
        return enc;
    }
}
Run Code Online (Sandbox Code Playgroud)

我们的服务器需要Latin-1中的默认字符集来处理传统协议中的一些混合编码(ANSI/Latin-1/UTF-8).所以我们所有的服务器都运行这个JVM参数,

-Dfile.encoding=ISO-8859-1
Run Code Online (Sandbox Code Playgroud)

这是Java 5的结果,

Default Charset=ISO-8859-1
file.encoding=Latin-1
Default Charset=UTF-8
Default Charset in Use=ISO8859_1
Run Code Online (Sandbox Code Playgroud)

有人试图通过在代码中设置file.encoding来更改编​​码运行时.我们都知道这不起作用.但是,这显然抛弃了defaultCharset(),但它不会影响OutputStreamWriter使用的实际默认字符集.

这是一个错误或功能吗?

编辑:接受的答案显示了问题的根本原因.基本上,您不能信任Java 5中的defaultCharset(),它不是I/O类使用的默认编码.看起来Java 6纠正了这个问题.

java encoding character-encoding

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

如何在C中声明32位整数

在任何平台上声明一个总是4字节的整数类型的最佳方法是什么?我不担心某些设备或具有16位的旧机器int.

c portability

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

谁添加"_"单个下划线查询参数?

我有一个在Apache上运行的PHP服务器,我得到了很多这样的请求,

10.1.1.211 - - [02/Sep/2010:16:14:31 -0400] "GET /request?_=1283458471913&action=get_list HTTP/1.1" 200 547 0 "http://www.example.com/request" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)" 28632 15602
Run Code Online (Sandbox Code Playgroud)

_参数被神秘地添加到请求中.我试图找出谁在做那件事.

在Apache前面运行一个NetScaler.

javascript php apache ajax http

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

CSS Selector中的多个类

我看到这样的选择器,

.class1 .class2 .class3 {
}
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

我使用了多个没有空格的类选择器.空间意味着后代,但它对课程没有意义.

css css-selectors

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

为什么Java OutputStream.write()采用整数但写入字节

我正在编写一个OutputStream,只是在OutputStream接口中注意到了这一点,

   public abstract void write(int b) throws IOException;
Run Code Online (Sandbox Code Playgroud)

这个调用会向流写一个字节,但为什么它将整数作为参数?

java io outputstream

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

C中的int总是32位吗?

这与以下问题有关,

如何在C中声明32位整数

在大多数平台上,有几个人提到int总是32位.如果这是真的,我很好奇.

你知道任何具有不同大小的int的现代平台吗?忽略具有8位或16位架构的恐龙平台.

注意: 我已经知道如何从另一个问题声明一个32位整数.这个更像是一个调查,以找出哪些平台(CPU/OS /编译器)支持其他大小的整数.

c int

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

Java:如何查找是否从基类重写了一个方法?

如何查明子类是否覆盖了某个方法?

例如,

public class Test {

static public class B {
    public String m() {return "From B";};
}

static public class B1 extends B {

}

static public class B2 extends B {
    public String m() {return "from B2";};
}

/**
 * @param args
 * @throws FileNotFoundException 
 */
public static void main(String[] args)  {

    B b1 = new B1();
    System.out.println("b1 = " + b1.m());
    B b2 = new B2();
    System.out.println("b1 = " + b2.m());
}

}
Run Code Online (Sandbox Code Playgroud)

给定B的一个实例,我怎么知道任何派生类是否有像B2这样的重写方法m()?

更新:我的问题不明确.实际上,我试图在不诉诸反思的情况下询问是否可行.这种检查是在一个紧凑的循环中完成的,它用于性能破解以节省一些CPU周期.

java methods inheritance overriding introspection

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

具有重叠的字符串连接的高效算法

我们需要通过串联在数据库中组合3列.但是,3列可能包含重叠部分,不应复制部分.例如,

  "a" + "b" + "c" => "abc"
  "abcde" + "defgh" + "ghlmn" => "abcdefghlmn"
  "abcdede" + "dedefgh" + "" => "abcdedefgh"
  "abcde" + "d" + "ghlmn" => "abcdedghlmn"
  "abcdef" + "" + "defghl" => "abcdefghl"
Run Code Online (Sandbox Code Playgroud)

我们当前的算法非常慢,因为它使用强力来识别2个字符串之间的重叠部分.有没有人知道这样做的有效算法?

假设我们有2个字符串A和B.算法需要找到最长的公共子串S,这样A以S结尾,B以S开头.

我们目前在Java中使用的强力实现作为参考,

public static String concat(String s1, String s2) {
    if (s1 == null)
        return s2;
    if (s2 == null)
        return s1;
    int len = Math.min(s1.length(), s2.length());

    // Find the index for the end of overlapping part
    int index = -1;
    for (int …
Run Code Online (Sandbox Code Playgroud)

language-agnostic string algorithm

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

不使用mod_rewrite运行没有扩展名的PHP?

使用Apache 2.2和PHP 5,在没有.php扩展名的情况下运行PHP的最佳方法是什么.例如,我有一个名为app.php的脚本,我喜欢将其作为调用

http://example.com/app

请注意,我仍然希望保留.php扩展名到文件,我没有mod_rewrite.不要使用index.php,因为它需要太多目录.

我确实找到了一种方法,将其添加到我的.htaccess中,

AddHandler server-parsed .php
SetHandler application/x-httpd-php
AddHandler application/x-httpd-php .php
Run Code Online (Sandbox Code Playgroud)

使用此页面,页面运行速度稍慢.我怀疑它在每个PHP页面上调用SSI.不知道有没有更好的方法来实现这一目标.

php apache mod-rewrite server-side-includes

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