小编Joa*_*uer的帖子

PostMethod setRequestBody(String)已弃用 - 为什么?

我正在使用Apache Commons HttpClient PostMethod 3.1.

在PostMethod类中,还有三种设置POST方法请求体的方法:

setRequestBody(InputStream body)
setRequestBody(String body)
setRequestBody(NameValuePair[] parametersBody);
Run Code Online (Sandbox Code Playgroud)

NameValuePair API

不推荐使用前两种方法.有人知道为什么吗?因为如果我想将XML放到请求体中,NameValuePair对我没有帮助.

有人知道解决方法或解决方案吗?

java request apache-commons-httpclient

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

等价方法的传递性

equals(object)方法的契约指定了要遵循的4个属性:自反,对称,传递和一致.虽然我理解不遵循Reflexive,Symmetric和Consistent的危险,并且肯定会同意其传递的好处,但我想知道如果违反Transitive属性会带来什么伤害?

具体来说,哪个Java库(或各种第三方库)需要依赖equals才能传递才能正常工作?根据我的理解,如果其他3个属性得到很好的实现,Collections框架将会起作用.

java

32
推荐指数
2
解决办法
6254
查看次数

为什么ScheduledThreadPoolExecutor只接受固定数量的线程?

我可以想象一些任务计划花费很长时间,并ScheduledThreadPoolExecutor为其他需要运行的任务创建额外的线程,直到达到最大线程数.

但似乎我只能为池指定固定数量的线程,为什么会这样呢?

java threadpool

31
推荐指数
2
解决办法
7911
查看次数

switch表达式不能是float,double或boolean

为什么不switch表达允许long,float,doubleboolean在Java中值?为什么只允许 int(和那些自动升级的int)允许?

java switch-statement

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

Java中的抽象方法

我想写一个抽象方法,但编译器持续给出了这个错误:

抽象方法不能有一个体

我有这样的方法:

public abstract boolean isChanged() {
    return smt else...
}
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

java methods abstract

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

何时使用pathParams或QueryParams

关于何时应该使用URL的路径参数而不是应该使用查询参数时,是否有经验法则?

说我有一个表发票与字段公司(PK),InvoiceNo(PK),Invoiceline,invoiceValue,noOfLines,salesPerson

我目前的想法是你的网址应该是这样的

/Invoice/
Run Code Online (Sandbox Code Playgroud)

哪个会显示所有发票

/Invoice/{company}
Run Code Online (Sandbox Code Playgroud)

这将显示公司的所有发票.

/Invoice/{company}/{InvoiceNo}
Run Code Online (Sandbox Code Playgroud)

显示特定发票和

/Invoice/{company}/{InvoiceNo}?invoiceLineNo=23
Run Code Online (Sandbox Code Playgroud)

仅显示第23行.

我想的方式是主键字段应该是路径的一部分,你要过滤的任何其他字段都是查询参数的一部分.

这听起来像是区分两者的合理方式吗?

java rest jax-rs

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

我应该处理超过MAX_PATH的文件吗?

刚做了一个有趣的案例.

我的软件报告了由于路径长于MAX_PATH而导致的故障.

该路径只是我的文档中的一个普通旧文档,例如:

C:\Documents and Settings\Bill\Some Stupid FOlder Name\A really ridiculously long file thats really very very very..........very long.pdf
Run Code Online (Sandbox Code Playgroud)

总长度为269个字符(MAX_PATH == 260).

用户没有使用外部硬盘或类似的东西.这是Windows托管驱动器上的文件.

所以我的问题是这个.我应该关心吗?

我不是说可以我对付长的路径,我问应该 I.是的,我知道一些的Win32 API的"\?\"的Unicode劈,但似乎这个技巧是不是没有风险(如它正在改变API解析路径的行为方式),并且所有API都不支持.

所以,无论如何,让我只说出我的立场/断言:

  1. 首先可能是用户能够打破此限制的唯一方法是,如果她使用的应用程序使用特殊的Unicode黑客攻击.这是一个PDF文件,所以她使用的PDF工具可能使用这个hack.
  2. 我尝试重现这个(通过使用unicode hack)并进行实验.我发现虽然文件出现在资源管理器中,但我无能为力.我无法打开它,我无法选择"属性"(Windows 7).其他常见的应用程序无法打开文件(例如IE,Firefox,记事本).资源管理器也不会让我创建太长的文件/目录 - 它只是拒绝.同上命令行工具cmd.exe.

基本上,人们可以这样看待它:一个胭脂工具允许用户创建一个许多Windows无法访问的文件(例如Explorer).我可以认为我不应该处理这个问题.

(顺便说一下,这不是对最短路径长度的批准投票:我认为260个字符是一个笑话,我只是说如果Windows shell和一些API无法处理> 260那么我为什么要这样做?).

那么,这是一个公平的观点吗?我应该说"不是我的问题"吗?

更新:刚刚让另一个用户遇到同样的问题.这次是一个mp3文件.我错过了什么吗?这些用户如何创建违反MAX_PATH规则的文件?

winapi max-path

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

动态获取当前行号

Java中有没有办法通过反射或一些很棒的API动态获取当前行号?就像异常发生时一样,行号在堆栈跟踪中打印出来,如下所示:

at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348)
Run Code Online (Sandbox Code Playgroud)

现在有没有办法在下面的代码中打印或记录?

log.error("Error in: " + this.getClass.getName() + "at line #"+ this.getClass.getActualLine());
Run Code Online (Sandbox Code Playgroud)

你可能会问,我为什么不简单地打印行号?好吧,因为代码可能会在特定的log.error()方法调用之前被删除或添加.

java reflection

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

在实现无限循环时,使用while(1)vs for(;;)vs goto(在C中)是否存在差异?

在实现无限循环时,使用while(1)vs for(;;)vs 会有区别goto吗?

谢谢,陈兹

c loops for-loop goto while-loop

28
推荐指数
3
解决办法
9037
查看次数

HashSet,Vector,LinkedList的最大大小

什么是最大尺寸HashSet,Vector,LinkedList?我知道ArrayList可以存储超过3277000个数字.

但是列表的大小取决于内存(堆)大小.如果达到最大值,JDK会抛出一个OutOfMemoryError.

但我不知道元素数量的限制HashSet,VectorLinkedList.

java collections

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