为什么7/18/2013 11:33GMT时区和我当地的时区(亚洲/加尔各答)有所不同?因为Unix时间戳是从纪元时间开始计算的滴答,1/1/1970 00:00:00 GMT所以我知道在不同时区以不同的间隔发生了纪元时间但仍然存在.经过的秒数应该相同
例如,如果我(+5:30 GMT)和我的朋友(+5:00 GMT)分别从00:00开始计算滴答,那么在18:00时,两个时区的滴答数应相同.那么为什么同样的事情不适用于Unix时间戳.
需要充分理解这个概念.
我使用Intellij Idea遇到了与Java相关的奇怪错误.
所以有这样的界面:
<T> void save(T aEntity, DbTransaction dbTransaction, Class<T> clazz);
<T> void save(Collection<T> aEntities, DbTransaction dbTransaction, Class<T> clazz);
Run Code Online (Sandbox Code Playgroud)
当我尝试编译下一个代码时:
@SuppressWarnings("unchecked")
@Override
public void save(Collection<T> aEntities, DbTransaction aDbTransaction) {
baseDao.save(aEntities, aDbTransaction, getClass((T) aEntities.toArray()[0]));
}
Run Code Online (Sandbox Code Playgroud)
我收到下一个编译错误:
reference to save is ambiguous, both method <T>save(T,DbEntityHelper.DbTransaction,java.lang.Class<T>) in xzc.dao.IBaseDao and method <T>save(java.util.Collection<T>,DbEntityHelper.DbTransaction,java.lang.Class<T>) in xzc.dao.IBaseDao match
Run Code Online (Sandbox Code Playgroud)
你有什么想法 ?提前感谢您的帮助.
在我的采访中,我问它是如何可以选择从DB最大值没有关键字MAX和TOP.
我的回答是:
select Table.Value
from Table
where Table.Value >= all( select Table.Value from Table)
Run Code Online (Sandbox Code Playgroud)
但这不是正确的.面试官说我应该只选择一个.
有任何想法吗 ?
谢谢 ;)
我必须比较XML数据.有两个来源 -
我没有看到任何简单的方法来在同一个类中转换它们并使用equals方法.
使用Web服务的类是自动生成的,WSDL根本不简单.
所以我从Web Service读取响应,读取相应的文件,将它们转换为具有相同格式的String(删除空格,\n\r \n字符等),然后使用String.equals()方法.
问题是Web服务的空标签是下一个写的:
<EmptyTag/>
Run Code Online (Sandbox Code Playgroud)
但提供的文件包含这种空标记:
<EmptyTag></EmptyTag>
Run Code Online (Sandbox Code Playgroud)
好的,有一种方法可以手动准备所有提供的文件,但我不喜欢它.谁知道,如何将空标签转换为相同的样式?如果有任何想法如何简化处理 - 欢迎你;)
UPDATE
我不解析xml.只读取文件的数据并将其转换为预期的格式.Web Service响应中的对象结构将以下一种方式转换为xml字符串:
marshaller.marshal(new JAXBElement<response_class_name>(new QName("response_class_name"),
response_class_name.class, response_object), stringWriter);
Run Code Online (Sandbox Code Playgroud) 我们在应用程序中使用固定时间段.当用户添加新的时段时,默认情况下应该是第二天的上午6:00到下午6:00.
通常情况下,它是24小时,但有一个问题:当执行夏令时更改时,该时间段的长度会发生变化.例如 :
10月27日上午6:00至10月28日上午6:00.在此期间执行从CEST到CET时区的转换.因此,这个时期包含25个小时:
From 27 October 6:00 AM to 28 October 3:00 AM - there are 21 hours
at 3:00 am the time is shifted back by 1 hour, so there are 4 hours until 28 October 6:00 AM.
Run Code Online (Sandbox Code Playgroud)
我们遇到了这个问题并尝试编写单元测试以防止它再次出现.测试在我们的计算机上成功通过,但在CI服务器上失败(它在另一个时区).
问题是:我们怎样才能独立于机器的时区设计我们的单元测试?
目前,使用Joda-Time计算小时跨度:
if ((aStartDate == null) || (aEndDate == null)) {
return 0;
}
final DateTime startDate = new DateTime(aStartDate);
final DateTime endDate = new DateTime(aEndDate);
return Hours.hoursBetween(startDate, endDate).getHours();
Run Code Online (Sandbox Code Playgroud)
在我们这边传递但在CI服务器上失败的单元测试:
Calendar calendar = Calendar.getInstance();
calendar.set(2012, Calendar.OCTOBER, 27, …Run Code Online (Sandbox Code Playgroud) 我正在阅读Thinking in Java 4th Edition.描述了transient字段序列化的奇怪解决方法:
import java.io.*;
public class SerializationTest implements Serializable {
private String firstData;
//transient field, shouldn't be serialized.
transient private String secondData;
public SerializationTest(String firstData, String test2) {
this.firstData = firstData;
this.secondData = test2;
}
/**
* Private method, same signature as in Serializable interface
*
* @param stream
* @throws IOException
*/
private void writeObject(ObjectOutputStream stream) throws IOException {
stream.defaultWriteObject();
stream.writeObject(secondData);
}
/**
* Private method, same signature as in Serializable interface …Run Code Online (Sandbox Code Playgroud) public class Test {
public static void main(String[] args) {
}
tost() {
}
}
Run Code Online (Sandbox Code Playgroud)
为什么compilator说我"Test.java:5:无效的方法声明;需要返回类型"?
我是java的新手,我正在尝试实现简单的生产者消费者问题.下面是我为测试它而编写的代码.我有3个类,主类,生产者类和消费者类.现在的问题是我的生产者正在生产数据,但我的消费者并没有消费它.有人可以解释一下为什么会发生这种情况.提前致谢.
public class ProducerConsumerWithQueue {
/**
* @param args
*/
public static void main(String[] args) {
ArrayList<String > queue = new ArrayList<String>();
Producer producer = new Producer( queue);
Consumer consumer = new Consumer( queue);
consumer.start();
producer.start();
}
}
public class Producer extends Thread{
ArrayList<String> queue;
public Producer(ArrayList<String> queue) {
this.queue = queue;
}
public void run(){
System.out.println("Producer Started");
System.out.println("Producer size "+queue.size());
for(int i=0;i<50;i++){
try {
synchronized (this) {
if(queue.size()>10){
System.out.println("Producer Waiting");
wait();
}else{
System.out.println("producing "+i);
queue.add("This is "+i);
notifyAll();
} …Run Code Online (Sandbox Code Playgroud)