小编jac*_*bko的帖子

为什么String中的Java hashCode()使用31作为乘数?

每Java文档中,哈希代码String对象被计算为:

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Run Code Online (Sandbox Code Playgroud)

使用int算术,其中s[i]是 字符串的第i个字符,是字符串n的长度,并^指示取幂.

为什么31用作乘数?

我知道乘数应该是一个相对较大的素数.那么为什么不是29岁,37岁,甚至97岁?

java string algorithm hash

461
推荐指数
11
解决办法
14万
查看次数

使一个空字符串值得吗?

我有一个同事发誓

//in a singleton "Constants" class
public static final String EMPTY_STRING = "";
Run Code Online (Sandbox Code Playgroud)

在整个项目中可用的常量类中.这样,我们可以写出类似的东西

if (Constants.EMPTY_STRING.equals(otherString)) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

代替

if ("".equals(otherString)) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我说是的

  1. 不值得 - 它不会保存堆/堆栈/字符串池中的任何空间,
  2. 丑陋
  3. 滥用常数类.

谁是这里的白痴?

java string

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

如何在MATLAB中保存更改的图像?

我想将图像读入MATLAB,在其上绘制一个矩形,然后保存图像.

另外,我只是在学习MATLAB - 请保持温和.看起来它应该很简单,但我似乎无法做到.

im = imread('image.tif');
imshow(im);
rectangle('Position', [100, 100, 10, 10]);
imwrite(im, 'image2.tif');
Run Code Online (Sandbox Code Playgroud)

即使我可以在图像上看到矩形,保存的图像也不会显示矩形.如何保存图像并显示矩形?

FWIW,我已经尝试过saveas(),但这给了我一个巨大的形象.有没有办法使用saveas()并使保存的图像正确的大小?

file-io matlab image-manipulation

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

让Java和TWAIN很好地一起玩

我正在构建一个应用程序,以便直接从TWAIN扫描程序扫描到Java小程序.我已经意识到莫雷纳JTwain,但他们花钱.我需要自由.我可以用JNI重新发明轮子,但似乎有人可能已经将其作为FOSS工具.

是否有人熟悉可以让Java applet直接从TWAIN扫描仪读取的免费工具?

java java-native-interface twain image-scanner

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

有可能是ambikeyboard?

我大约一年前切换到了dvorak键盘布局.我现在在工作和家里使用dvorak全职.

最近,我去了秘鲁度假,发现自己陷入了一个难题.网吧只有qwerty(和西班牙qwerty,在那).我被困在一个狩猎和啄食的例程,很快就变老了.

那就是说,qwerty和dvorak同时可以"流利"吗?如果没有,对于我发现自己的情况有什么好的解决方案吗?

keyboard qwerty dvorak

10
推荐指数
5
解决办法
5479
查看次数

我应该为我的注释创建一个常量类吗?

哪个更好?

  1. @SuppressWarnings("unchecked")
  2. @SuppressWarnings(AnnotationConstants.UNCHECKED)

AnnotationConstants典型的常数类在哪里......

public final class AnnotationConstants {
    private AnnotationConstants() { }

    public static final String UNCHECKED = "unchecked";

    ...
}
Run Code Online (Sandbox Code Playgroud)

我知道有很多关于常量类的一般参数 - 这正是我感兴趣的.我想知道一个专门用于注释的常量类是一个好主意还是一个坏主意.

java annotations constants

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

如何在Wink客户端注册Jackson提供商?

我正在尝试设置一个玩具应用程序(有一天可能会转向真正的应用程序).我遇到了Wink和Jackson的问题.我有两个应用程序:一个在jetty上运行wink-server,似乎提供了一些JSON数据就好了; 一个在jetty上运行wink-client并且接收JSON数据就好了.问题在于将JSON数据自动反序列化回我的Java bean.

这是我在wink客户端操作中使用的代码:

RestClient client = new RestClient();
Resource resource = client.resource("http://localhost:8081/helloworld");
User user = resource.accept(MediaType.APPLICATION_JSON).get(User.class);
Run Code Online (Sandbox Code Playgroud)

这是我尝试运行Struts操作时收到的错误:

java.lang.RuntimeException: No javax.ws.rs.ext.MessageBodyReader found for type class my.package.structure.User and media type application/json. Verify that all entity providers are correctly registered.
org.apache.wink.client.internal.handlers.ClientResponseImpl.readEntity(ClientResponseImpl.java:123)
org.apache.wink.client.internal.handlers.ClientResponseImpl.getEntity(ClientResponseImpl.java:65)
org.apache.wink.client.internal.handlers.ClientResponseImpl.getEntity(ClientResponseImpl.java:52)
org.apache.wink.client.internal.ResourceImpl.invoke(ResourceImpl.java:186)
org.apache.wink.client.internal.ResourceImpl.get(ResourceImpl.java:294)
my.package.structure.action.HelloWorldAction.execute(HelloWorldAction.java:29)
...
Run Code Online (Sandbox Code Playgroud)

如果我用下面的代码替换第一个代码片段中的最后一行,一切都运行正常,花花公子.

String message = resource.accept(MediaType.APPLICATION_JSON).get(String.class);
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(message, User.class);
Run Code Online (Sandbox Code Playgroud)

很明显,数据很好,但问题似乎在于JacksonJsonProvider类没有在Wink客户端注册.我已经看到很多方法用Wink服务器注册提供程序,但不是Wink客户端.

是否可以使第一个代码段正常运行?如果是这样,怎么样?

(顺便说一句,另一个问题可能是我在我的User类上缺少注释.现在没有任何注释.也许我需要一些......)

java json jax-rs jackson apache-wink

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