您能否详细说明如何获得默认系统时区和给定时区的正确纪元时间(以毫秒为单位).
1. TimeZone:GMT + 3
2.以下代码段:
import java.time.*;
public class Main {
public static void main(String[] args) {
System.out.println(LocalDateTime
.now()
.atZone(ZoneOffset.UTC)
.toInstant()
.toEpochMilli()
);
System.out.println(LocalDateTime
.now()
.atZone(ZoneOffset.of("+3"))
.toInstant()
.toEpochMilli()
);
System.out.println(System.currentTimeMillis());
}
}
Run Code Online (Sandbox Code Playgroud)
3.输出:
1444158955508
1444148155508
1444148155508
Run Code Online (Sandbox Code Playgroud)
4.用于System.currentTimeMillis()的 JavaDoc,它告诉返回的值将是当前时间与1970年1月1日UTC午夜之间的差值(以毫秒为单位).
LocalDateTime
at 的输出GMT+3
是相同的System.currentTimeMillis()
,虽然System.currentTimeMillis()
提到的文件UTC
?LocalDateTime
at 的输出UTC
不同System.currentTimeMillis()
,虽然System.currentTimeMillis()
提到的文件UTC
?我想了解在标准hadoop map-reduce和spark中收集作业执行统计数据的最佳实践是什么.
1. hdfs中的许多文件(每个导演,即dataset1,dataset2等,是来自第3点的数据集的名称)
/user/tester/dataset1/part-0000*.avro
/user/tester/dataset2/part-0000*.avro
/user/tester/dataset3/part-0000*.avro
/user/tester/dataset4/part-0000*.avro
Run Code Online (Sandbox Code Playgroud)
2.每个文件包含一个具有~1000个属性的avro记录
| id | attr_1 | attr_2 | attr_3 | ... | attr_N |
----------------------------------------------------
| 1 | val_1_1 | val_1_2 | val_1_3 | ... | val_1_N |
| 2 | val_2_1 | val_2_2 | val_2_3 | ... | val_2_N |
| 3 | val_M_1 | val_M_2 | val_M_3 | ....| val_M_N |
Run Code Online (Sandbox Code Playgroud)
3.有一个配置文件,其中包含哪些属性/列以及从哪个数据集中获取以及如何过滤出给定数据集的信息
<datasets>
<dataset>
<id>dataset1</id>
<attributes>
<attribute>attr_1</attribute>
<attribute>attr_3</attribute>
</attributes>
<filter>attr_1 gt 50 and attr_3 eq 100</filter>
</dataset>
<dataset>
<id>dataset2</id> …
Run Code Online (Sandbox Code Playgroud) 我必须使用相互身份验证从java调用安全的WCF服务.一切正常,但我无法发送大小超过48680字节的消息.因此,48680字节消息成功发送,但48681字节 - 不是,并且java应用程序因读取超时异常而失败,尽管WCF的配额设置允许更大的消息.
那可能是什么问题呢?
编辑
源代码:
package foo.bar;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
import javax.net.ssl.*;
import java.io.*;
import java.net.URL;
import java.security.KeyStore;
public class ReadTimedOutTest {
@Test
public void testReadTimedOut() throws Exception {
URL url = new URL("https://services/endpoint/");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
setUpSSL(connection);
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("SOAPAction", "http://namespace/2012/01/service/Operation");
connection.setRequestProperty("Accept", "*/*");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
connection.setConnectTimeout(10 * 1000);
connection.setReadTimeout(10 * 1000);
connection.setInstanceFollowRedirects(true);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
InputStream is = ReadTimedOutTest.class.getResourceAsStream("payload.failure.xml");
try {
IOUtils.copy(is, bos);
} finally {
is.close(); …
Run Code Online (Sandbox Code Playgroud) 我必须通过ServletOutputStream发送blob的二进制流.
我使用以下技术和软件:Oracle 11,WebSphere 7,Springframework 2.5.5,Hibernate 3.3.SP1.
有两个Oracle数据库.第一个包含用于描述我必须传输的文档的表,第二个包含文档的内容.
我还在Spring中为WebSphere和JtaTransactionManager配置了对XA数据源的支持.
我在一次交易中获得了对文档和内容本身的引用.
JDBC规范告诉我们LOB是事务对象,便携式应用程序应该在事务中使用这些对象.
我有以下问题:
@Transactional
public InputStream getContent(Long docId) {
Blob blob = getBlob(...);
return blob.getBinaryStream();
}
public ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) {
Long docId = ServlerRequestUtils.getRequiredLongParameter(req);
InputStream is = service.getContent(docId);
copy(is, resp.getOutputStream());
return null;
}
Run Code Online (Sandbox Code Playgroud)
如果BLOB的内容足够大并且应用程序服务器中有预先配置的事务超时,那么如何将BLOB的二进制流传输给最终用户是不合法的?我是否必须手动处理事务并将超时设置为零(事务永远不会超时)?
在这种情况下,将BLOB的二进制流传输给最终用户的最佳方法是什么?