小编szh*_*hem的帖子

JSR 310 :: System.currentTimeMillis()vs Instant.toEpochMilli():: TimeZone

您能否详细说明如何获得默认系统时区和给定时区的正确纪元时间(以毫秒为单位).

特定

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午夜之间的差值(以毫秒为单位).

所以为什么

  1. LocalDateTimeat 的输出GMT+3是相同的System.currentTimeMillis(),虽然System.currentTimeMillis()提到的文件UTC
  2. LocalDateTimeat 的输出UTC不同System.currentTimeMillis(),虽然System.currentTimeMillis()提到的文件UTC

java timezone datetime java-8 java-time

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

Hadoop计数器与Spark累加器(或者从hadoop mr和spark应用程序收集统计信息的最佳方式)

我想了解在标准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)

hadoop mapreduce apache-spark

7
推荐指数
0
解决办法
819
查看次数

无法发送48681字节的消息来保护来自java的wcf服务

我必须使用相互身份验证从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)

java wcf

6
推荐指数
1
解决办法
1035
查看次数

Spring MVC + Oracle LOBs + Streaming

我必须通过ServletOutputStream发送blob的二进制流.

我使用以下技术和软件:Oracle 11,WebSphere 7,Springframework 2.5.5,Hibernate 3.3.SP1.

有两个Oracle数据库.第一个包含用于描述我必须传输的文档的表,第二个包含文档的内容.

我还在Spring中为WebSphere和JtaTransactionManager配置了对XA数据源的支持.

我在一次交易中获得了对文档和内容本身的引用.

JDBC规范告诉我们LOB是事务对象,便携式应用程序应该在事务中使用这些对象.

我有以下问题:

  1. 在事务方法中检索BLOB的输入流并将其传递给顶级非事务方法是否合法?像这样的东西:

    @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)
  1. 如果BLOB的内容足够大并且应用程序服务器中有预先配置的事务超时,那么如何将BLOB的二进制流传输给最终用户是不合法的?我是否必须手动处理事务并将超时设置为零(事务永远不会超时)?

  2. 在这种情况下,将BLOB的二进制流传输给最终用户的最佳方法是什么?

java oracle streaming spring lob

5
推荐指数
1
解决办法
1970
查看次数