小编Old*_*eon的帖子

一些Java 7警告 - 如何删除它们

我终于试图摆脱Java 7所产生的所有新编译器警告.我这两个人离开了,我无法理解.有没有办法摆脱它们而不压制它们?

构造一般类型的对象数组(我可以在数组中创建一个?):

  static final int N = 10;
//warning: [unchecked] unchecked conversion
  static final Set<Widget>[] queued = new ConcurrentSkipListSet[N];
//required: Set<Widget>[]
//found:    ConcurrentSkipListSet[]
Run Code Online (Sandbox Code Playgroud)

通用varargs(似乎几乎发生在我接受泛型类型的varargs的地方):

class Foo<T> {
//warning: [unchecked] Possible heap pollution from parameterized vararg type T
  public void add(T... entries) {
//where T is a type-variable:
//T extends Object declared in class Foo
Run Code Online (Sandbox Code Playgroud)

顺便说一句:我已经:

  // Add many entries to the list.
  public void add(List<T> entries) {
    // ...
  }

  // Add a number of entries.
  public void add(T... …
Run Code Online (Sandbox Code Playgroud)

java netbeans compiler-warnings

6
推荐指数
2
解决办法
986
查看次数

'bigInteger`的`bitCount()`和`bitLength()`有什么区别?

的描述比特计数()位长度()是非常模糊的:

public int bitCount()

返回此BigInteger的二进制补码表示中与其符号位不同的位数.在BigIntegers上实现位向量样式集时,此方法很有用.

返回:此BigInteger的二进制补码表示中的位数与其符号位不同.


public int bitLength()

返回此BigInteger的最小二进制补码表示中的位数,不包括符号位.对于正BigIntegers,这相当于普通二进制表示中的位数.(计算(ceil(log2(this <0?-this:this + 1))).)

返回:此BigInteger的最小二进制补码表示中的位数,不包括符号位.

这两种方法之间的真正区别是什么?我何时应该使用哪种方法?

bitCount偶尔会用一个正整数来计算设置位的数量,但我很少使用bitLength,通常在我的意思是bitCount因为描述之间的差异太微妙,我不能立即理解.

Google Attractor: Java BigInteger bitCount vs bitLength

java

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

帮助Java SAX解析器了解错误的xml

我正在解析从网站返回的XML,但遗憾的是它的格式有些不正确。我得到像这样的XML:

<tag attrib="Buy two for &pound;1" />
Run Code Online (Sandbox Code Playgroud)

我被告知这是无效的,因为&pound;它是HTML字符,而不是XML字符,并且绝对不能出现在属性中。

假设我无法告诉网站遵守规则,该怎么办?我正在考虑使用a FilterInputStream过滤到达的数据,然后再到达SAX解析器,但这似乎是最重要的。

java parsing sax

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

声明的成本是多少

如果我一次只使用一个Statement,那么将它与我的一起缓存是值得的Connection.我已经缓存了连接,所以我几乎可以免费缓存语句.

基本上我想我是在询问创建语句是否有任何成本/开销.我完全理解创建预准备语句的好处.我在Connection.createStatement()这里专门谈论.

java sql jdbc

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

通道复用器

注意 - Go 新手。

我编写了一个多路复用器,它将组通道的输出合并为一个。乐于接受建设性的批评。

func Mux(channels []chan big.Int) chan big.Int {
    // Count down as each channel closes. When hits zero - close ch.
    n := len(channels)
    // The channel to output to.
    ch := make(chan big.Int, n)

    // Make one go per channel.
    for _, c := range channels {
        go func() {
            // Pump it.
            for x := range c {
                ch <- x
            }
            // It closed.
            n -= 1
            // Close output if …
Run Code Online (Sandbox Code Playgroud)

channel go

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

何时从MDC中删除

我最近发现了在记录时使用MDC的魔力.它完美地运作.

我有以下方法:

public static final String MDC_CLIENT="client";
public static final String MDC_SESSION="session";
public static final String MDC_DEVICE="device";

// Called for every request.
public static void request(final HttpServletRequest request) {
  // The MDC is a thread-local storage accessable from the log formatter.
  MDC.put(MDC_CLIENT, String.format("%s:%s", request.getRemoteHost(), request.getRemotePort()));
  HttpSession session = request.getSession();
  MDC.put(MDC_SESSION, session.getId());
  MDC.put(MDC_DEVICE, (String)session.getAttribute("device"));
  // Also record the context.
  setContext(session.getServletContext());
}
Run Code Online (Sandbox Code Playgroud)

这被称为每个jsp中的第一个动作.这使我能够很好地跟踪日志中会话的详细信息.

但是 - 我怎么知道remove这些地图条目的时间?我应该注意哪些事件才能让我整理地图?

我在Tomcat下托管.如果它重新使用线程,那么我不会泄漏内存,因为它们本质上是线程本地的,所以每次put都会覆盖put上次使用线程时的旧内存.如果它没有 - 或者我托管在其他东西之下 - 我本质上可能永远地增长地图 - 或者至少在主机重新启动之前.

我认为我的问题的本质是 …

java tomcat servlets log4j mdc

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

用于更新Word文档中所有字段的宏

多年来我构建了一个vba宏,它应该更新word文档中的所有字段.

我在发布文档以供审阅之前调用此宏,以确保所有页眉和页脚等都正确.

目前 - 它看起来像这样:

Sub UpdateAllFields()
'
' UpdateAllFields Macro
'
'
    Dim doc As Document ' Pointer to Active Document
    Dim wnd As Window ' Pointer to Document's Window
    Dim lngMain As Long ' Main Pane Type Holder
    Dim lngSplit As Long ' Split Type Holder
    Dim lngActPane As Long ' ActivePane Number
    Dim rngStory As Range ' Range Objwct for Looping through Stories
    Dim TOC As TableOfContents ' Table of Contents Object
    Dim TOA As TableOfAuthorities 'Table …
Run Code Online (Sandbox Code Playgroud)

vba ms-word word-vba

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

 (C2) 来自哪里

出于某种原因,一段代码将空格替换为\u00A0- 即不间断空格。然后使用此代码来清理URL(是的,我知道这很糟糕 - 在很多方面)。奇怪的是,当这些显示在我的测试 jsp 中时,会Â出现一个流氓- 为什么?

示例 JSP 来演示该问题。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
    <%
      String[] parameters = request.getParameterValues("p");
      if (parameters == null || parameters.length == 0) {
        parameters = new String[]{""};
      }
    %>
  </head>
  <body>
    <h1>Hello World!</h1>
    <a href='index.jsp?p=<%="Hello\u00A0there"%>'>A Link</a>
    <p><%=parameters[0]%></p>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

为什么参数显示为Hello there?哪里c2来的?

添加

顺便说一句:的十六进制parameter48 65 6c 6c 6f c2 a0 74 68 …

java url jsp

5
推荐指数
2
解决办法
2376
查看次数

多态对象的 JSON 消费者

我正在解析 JSON,并且无法使用一种可以具有三种形式之一的结构。就我而言,它可以是零维、一维或二维。有什么方法可以即时检查 JSON 以确定它是哪一个?或者也许无论如何都要消费它,然后弄清楚它是什么。

这些结构看起来像这样,可以嵌入到其他结构中。

"details":{
    "Product":"A zero-dimensional Product"
},

"details":{
    "Product":"A one-dimensional Product",
    "Dimensions": [ "Size" ],
    "Labels": [ "XS", "S", "M", "L" ]
},

"details":{
    "Product":"A two-dimensional Product",
    "Dimensions": [ "Size", "Fit" ],
    "Labels": [[ "XS", "S", "M", "L" ],[ "26", "28", "30", "32" ]]
}
Run Code Online (Sandbox Code Playgroud)

我可能正在寻找的是 Jackson 将始终与之匹配的通用类。

有点像翻译:

{
"SomeField": "SomeValue",
...
 "details":{
  ...
 }
}
Run Code Online (Sandbox Code Playgroud)

进入:

class MyClass {
  String SomeField;
  ...
  AClass details;
}
Run Code Online (Sandbox Code Playgroud)

是否有AClass我可以定义的类可以作为任何 JSON 结构或数组的通用接收者?

java json pojo jackson

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

是否有一个巨大的整数库

我正在寻找一个Java库,可以处理真正庞大的数字或建议如何自己实现这个.我们正在谈论超越BigInteger.例如,2 ^ 39614081257132168796771974655 + 1怎么样.

显然,从理论上讲,我可以使用a TreeSet<BigInteger>,每位一个条目并完成所有数学老派,但我正在寻找能够使用内置数学硬件实际使用这些数字进行实际数学运算的东西.我不希望任何事情真的很快,但我非常想接近.

设置位的数量可能非常小 - 我代表G2多项式.

有谁知道那里有什么?

我怀疑包的功能必须是一个setBit(BigInteger i).

添加

感谢Apfloat的建议.可悲的是,以下是不可能的.它抱怨第二个参数必须是a long.

    Apint two = new Apint(2);
    Apint big = new Apint("39614081257132168796771974655");
    ApintMath.pow(two, big);
Run Code Online (Sandbox Code Playgroud)

请注意,我也愿意接受有关如何自己完成此操作的建议.

添加 - 尝试重新打开.

请参阅user2246674的帖子,提醒我们这些数字是多么惊人 - 我可以向你保证,我们不是在谈论一些普通的数学图书馆,我们正在谈论一些严肃Math.pow(age-of-the-universe,atoms-in_the_galaxy)的数字 - 我们当然不是在寻找纯粹的自以为是的答案.

java integer-overflow biginteger polynomial-math

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