小编Fra*_*ois的帖子

HTTP 406和415错误代码

我正在编写一个只接受json的Web服务,并且只输出json.

因此,如果请求任何其他格式,我需要返回适当的状态代码.

看来我有两个选择:

  1. 406 - 不可接受
  2. 415 - 不支持的媒体类型

如果有人能够启发我关于两个代码的语义,那将是很棒的.

web-services http http-headers

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

杰克逊:如果财产遗失会怎样?

如果我使用注释构造函数参数@JsonProperty但Json没有指定该属性会发生什么.构造函数得到什么价值?

如何区分具有空值的属性与JSON中不存在的属性?

java jackson

59
推荐指数
3
解决办法
7万
查看次数

如何确保hashCode()与equals()一致?

当覆盖java.lang.Object的equals()函数时,javadocs建议,

通常需要在重写此方法时覆盖hashCode方法,以便维护hashCode方法的常规协定,该方法声明相等的对象必须具有相等的哈希代码.

hashCode()方法必须为每个对象返回一个唯一的整数(这在基于内存位置比较对象时很容易,只需返回对象的唯一整数地址)

应该如何覆盖hashCode()方法,以便它仅基于该对象的特性为每个对象返回一个唯一的整数


public class People{
   public String name;
   public int age;

   public int hashCode(){
      // How to get a unique integer based on name and age?
   }
}
/*******************************/
public class App{
   public static void main( String args[] ){
       People mike = new People();
       People melissa = new People();
       mike.name = "mike";
       mike.age = 23;
       melissa.name = "melissa";
       melissa.age = 24;
       System.out.println( mike.hasCode() );  // output?
       System.out.println( melissa.hashCode(); // output?
   }
}
Run Code Online (Sandbox Code Playgroud)

java equals object hashcode

23
推荐指数
3
解决办法
7073
查看次数

将数据保存到JSF中的会话

我是J(2)EE和Web应用程序开发世界的新手,但我很快就在我身边学习并学习了很多东西.每一天都是我新发现的奇妙之旅.

我目前正在开发一个项目,我在Glassfish v2上使用Visual JSF Woodstock.我对JSF也很陌生.

有时我需要在请求之间保存一些对象(例如MyObject).从我到目前为止所阅读和理解的内容来看,我需要使用会话来在不同请求之间保存这些对象.到现在为止还挺好.

究竟如何做到这一点是我担心的地方.我知道在JSP中你可以使用session.setAttribute("myObj", myObject)使用cookie或url重写或隐藏的表单变量来保存客户端对象.

另一方面,在JSF中,我使用Session scoped bean,比如说SessionBean1,并将对象保存为SessionBean1属性(例如SessionBean1.setSomeOjb(myObj)).这是正确的方法吗?

我猜这样做会导致服务器端的内存利用率增加,因为每个请求都会创建会话范围bean的新实例,SessionBean1加上SessionBean1中保存的myObject实例使用的内存.

我已经读过你可以使用FacesContext.getExternalContext().getSession/getSessionMap()哪个会在客户端保存会话变量.

那么您建议我使用哪种方法 - 会话范围bean或会话映射来保存对象以便在会话请求之间进行访问?

谢谢.

jsf session-variables session-state

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

哪些参数代表JVM内存选项中的内容?

有很多JVM参数影响JVM的内存使用情况,如 -Xms, -Xmx, -Xns, -XX:MaxPermSize...

  • 他们在做什么?
  • 还有吗?
  • 我有哪一个时,我得到了什么错误,以增加(例如OutOfMemoryError,StackOverflowError...)?

我找不到一个好的备忘单 - 让我们在这里创建一个.

java jvm jvm-arguments

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

您如何以编程方式为多播发现机制配置hazelcast?

您如何以编程方式为多播发现机制配置hazelcast?


细节:

文档仅提供TCP/IP的示例并且已过时:它使用不再存在的Config.setPort().

我的配置看起来像这样,但发现不起作用(即我得到输出"Members: 1":

        Config cfg = new Config();                  
        NetworkConfig network = cfg.getNetworkConfig();
        network.setPort(PORT_NUMBER);

        JoinConfig join = network.getJoin();
        join.getTcpIpConfig().setEnabled(false);
        join.getAwsConfig().setEnabled(false);
        join.getMulticastConfig().setEnabled(true);

        join.getMulticastConfig().setMulticastGroup(MULTICAST_ADDRESS);
        join.getMulticastConfig().setMulticastPort(PORT_NUMBER);
        join.getMulticastConfig().setMulticastTimeoutSeconds(200);

        HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
        System.out.println("Members: "+hazelInst.getCluster().getMembers().size());
Run Code Online (Sandbox Code Playgroud)

更新1,考虑到asimarslan的答案

如果我偶然发现MulticastTimeout,我要么得到"Members: 1"或者

2013年12月5日下午8:50:42 com.hazelcast.nio.ReadHandler警告:[192.168.0.9]:4446 [dev] hz._hzInstance_1_dev.IO.thread-in-0关闭套接字到端点地址[192.168.0.7] :4446,原因:java.io.EOFException:远程套接字已关闭!2013年12月5日下午8:57:24 com.hazelcast.instance.Node严重:[192.168.0.9]:4446 [dev]无法加入群集,关闭!com.hazelcast.core.HazelcastException:300秒内无法加入!


更新2,采取pveentjer关于使用tcp/ip的答案

如果我将配置更改为以下内容,我仍然只能获得1个成员:

Config cfg = new Config();                  
NetworkConfig network = cfg.getNetworkConfig();
network.setPort(PORT_NUMBER);

JoinConfig join = network.getJoin();

join.getMulticastConfig().setEnabled(false);
join.getTcpIpConfig().addMember("192.168.0.1").addMember("192.168.0.2").
addMember("192.168.0.3").addMember("192.168.0.4").
addMember("192.168.0.5").addMember("192.168.0.6").
addMember("192.168.0.7").addMember("192.168.0.8").
addMember("192.168.0.9").addMember("192.168.0.10").
addMember("192.168.0.11").setRequiredMember(null).setEnabled(true);

//this sets the allowed connections to the cluster? necessary for …
Run Code Online (Sandbox Code Playgroud)

java configuration multicast hazelcast

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

允许HTTPS包装器的自签名证书

基本上我有这个:

function request($url) {
    return file_get_contents($url, false, stream_context_create(array(
        "ssl" => array(
            "verify_peer" => true,
            "allow_self_signed" => false,
        )
    )));
}

request("https://[A]");
request("https://[B]");
Run Code Online (Sandbox Code Playgroud)

其中[A]是具有"真实"证书的服务器上的某个URL,而[B]是仅具有自签名证书的URL.

使用[A]它工作正常,[B]我得到这个:

file_get_contents(): Failed to enable crypto
Run Code Online (Sandbox Code Playgroud)

这是一个相当不幸的错误消息应该是"服务器证书验证失败",但很好......

现在我想:"好吧,[B]是我的测试系统 - 我不关心证书"并将上下文改为:

"verify_peer" => false,
"allow_self_signed" => true,
Run Code Online (Sandbox Code Playgroud)

它现在应该接受任何服务器证书,甚至我的自签名证书.但它仍然是相同的行为 - [A]有效,[B]没有.为什么?


顺便说一句:我知道它适用于卷曲延伸,但我想在没有它的情况下击败它.

php https certificate self-signed

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

pthread线程对象重置其状态

最近使用扩展pthreads工作,我发现了一个异常现象.我有一个内部状态的简单对象:

class Sum {
    private $value = 0;
    public function add($inc)  { $this->value += $inc; }
    public function getValue() { return $this->value; }
}
Run Code Online (Sandbox Code Playgroud)

现在我创建了一个Thread类,它对这个对象做了一些事情:

class MyThread extends Thread {
    private $sum;

    public function __construct(Sum $sum) {
        $this->sum = $sum;
    }

    public function run(){
        for ($i=0; $i < 10; $i++) {
            $this->sum->add(5);
            echo $this->sum->getValue() . " ";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的main函数中,我创建了一个Sum对象,将其注入到线程中并启动它:

$sum = new Sum();
$thread = new MyThread($sum);
$thread->start();
$thread->join();
echo $sum->getValue();
Run Code Online (Sandbox Code Playgroud)

我期望结果是50,因为线程必须将值增加10倍.但是我得到了0! …

php multithreading pthreads shared-memory

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

为什么Object.equals()的实现不使用hashCode()?

或者"为什么Sun/Oracle人员每次都强迫我们覆盖equals()和hashCode()?"

每个人都知道,如果你覆盖一个对象的equals()或hashCode(),你也必须覆盖另一个,因为这两者之间有一个契约:

请注意,每当重写此方法[ie equals()]时,通常需要覆盖hashCode方法,以便维护hashCode方法的常规协定,该方法声明相等对象必须具有相等的哈希代码.- Object.equals()的API文档

为什么不在Object类中实现这种方式:

public boolean equals(Object obj) {
    return this.hashCode() == obj.hashCode()
}
Run Code Online (Sandbox Code Playgroud)

如果他们这样做,它将使世界其他地方免于必须实施这两种方法.仅覆盖hashCode()就足够了.

我猜这些家伙有充分的理由不这样做.我只是看不到它 - 请为我清楚这一点.

java equals

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

LinkedIn API上的未知身份验证方案

我正在使用OAuth 1.0a for LinkedIn API.目前,我已经实现了一些获取配置文件和连接的调用,它们似乎都运行正常.但是为了发送消息,oauth库会抛出以下异常:

{
  "errorCode": 0,
  "message": "Unknown authentication scheme",
  "requestId": "I2Y0MFJ8ME",
  "status": 401,
  "timestamp": 1378376573339
}
Run Code Online (Sandbox Code Playgroud)

我正在使用PHP PECL OAuth.我正在初始化$ oauth对象,如下所示:

$oauth = new OAuth(API_KEY, API_SECRET, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_FORM);
$oauth->setToken(ACCESS_TOKEN, SECRET);
Run Code Online (Sandbox Code Playgroud)

并使其余的呼叫如下:

$url = 'https://api.linkedin.com/v1/people/~/mailbox?format=json';
$content_type = array('Content-Type' => 'application/json');
$oauth->fetch($url, $message, OAUTH_HTTP_METHOD_POST, $content_type);
Run Code Online (Sandbox Code Playgroud)

和$ message看起来像这样:

$message = Array
(
    [recipients] => Array
        (
            [0] => z2222117O
        )

    [subject] => this is my title
    [body] => this is my body
    [format] => json
    [id] => EAS123123
)
Run Code Online (Sandbox Code Playgroud)

看起来请求没有任何问题.我按照LinkedIn消息传递文档 …

oauth pecl linkedin linkedin-jsapi

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