我正在编写一个只接受json的Web服务,并且只输出json.
因此,如果请求任何其他格式,我需要返回适当的状态代码.
看来我有两个选择:
如果有人能够启发我关于两个代码的语义,那将是很棒的.
如果我使用注释构造函数参数@JsonProperty
但Json没有指定该属性会发生什么.构造函数得到什么价值?
如何区分具有空值的属性与JSON中不存在的属性?
当覆盖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) 我是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或会话映射来保存对象以便在会话请求之间进行访问?
谢谢.
有很多JVM参数影响JVM的内存使用情况,如 -Xms, -Xmx, -Xns, -XX:MaxPermSize...
OutOfMemoryError
,StackOverflowError
...)?我找不到一个好的备忘单 - 让我们在这里创建一个.
您如何以编程方式为多播发现机制配置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)
如果我偶然发现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秒内无法加入!
如果我将配置更改为以下内容,我仍然只能获得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) 基本上我有这个:
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]没有.为什么?
顺便说一句:我知道它适用于卷曲延伸,但我想在没有它的情况下击败它.
最近使用扩展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
! …
或者"为什么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()就足够了.
我猜这些家伙有充分的理由不这样做.我只是看不到它 - 请为我清楚这一点.
我正在使用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消息传递文档 …
java ×5
equals ×2
php ×2
certificate ×1
hashcode ×1
hazelcast ×1
http ×1
http-headers ×1
https ×1
jackson ×1
jsf ×1
jvm ×1
linkedin ×1
multicast ×1
oauth ×1
object ×1
pecl ×1
pthreads ×1
self-signed ×1
web-services ×1