小编Mar*_*unt的帖子

从具有注释@PostConstruct的类派生

如果您有一个使用@PostConstruct注释的父类,并创建一个从中派生的子类.@PostConstruct每次创建子类的实例时,是否会自动调用该方法?因为@PostConstruct每次创建父实例时都会调用该方法.

我知道在儿童班里它会super();自动呼唤我们,而我们不必打电话给它.

我只是不确定如果该@PostConstruct子类调用super();构造函数,是否自动调用注释.

java inheritance annotations java-ee

33
推荐指数
1
解决办法
9413
查看次数

Intellij Window打开最小化

在Intellij中打开一个新项目时,窗口打开极度最小化,几乎无法看到.打开时是否正确设置默认窗口大小.

我的设置Mac OSX El Capitan Intellij 2015 - 16.3.4(我在所有这些版本中都遇到过这种情况)

有关Window打开的小程度,请参见下图

在此输入图像描述

java macos intellij-idea

12
推荐指数
1
解决办法
965
查看次数

Intellij删除多个本地分支

使用Intellij IDE(我有2017.3.5版本)有一种方法可以一次删除多个本地git分支

intellij-idea

12
推荐指数
3
解决办法
4164
查看次数

使用参数化IN子句时,N1QL查询超时

使用Couchbase服务器4.1.0(和4.5),Java SDK 2.2.8(也尝试使用2.2.7,2.3.1和2.3.3),我有一个利用二级索引的查询,当我运行我的代码时它运行正常本地甚至通过AWS服务器上的CBQ(CBQ大约需要3毫秒).但是,当在AWS上运行我的应用程序时,我得到一个TimeOutException,它只有一个查询超时,其他查询不是.详情见下文.

值得注意的是我的Couchbase设置有3个桶.

示例文档:

"bucketName": {
    "userName": "User_A",
    "MessageContent": "This is a message",
    "docType": "msg",
    "ParentMsgId": "1234",
    "MsgType": "test",
    "expireTimestamp": 1454975772613,
    "publishTimestamp": 1455322362028,
    "id": "145826845",
    "urls": [],
    "subject": "this is a subject",
    "type": 1,
    "GroupId": "Group_1"
}
Run Code Online (Sandbox Code Playgroud)

二级指数:

CREATE INDEX `indexName` ON `bucketName`(`ParentMsgId`,`docType`,`publishTimestamp`) USING GSI
Run Code Online (Sandbox Code Playgroud)

从中提取的示例查询 N1qlQuery#n1ql()

{"statement":
"select count(*) as msgCount from bucketName 
where ParentMsgId is not missing and docType = 'msg' 
and ParentMsgId IN $parentId 
and publishTimestamp between $startTime and $endTime
","$endTime":1470726861816,
  "$startTime":1470640461816,
  "$parenIds":["fa11845b-9ea5-4778-95fe-e7206843c69b"]
} …
Run Code Online (Sandbox Code Playgroud)

java indexing couchbase sql++

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

帕斯卡三角算法的时间复杂度是多少?

负责解决以下问题(Pascal Triangle),看起来像这样.

[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]
Run Code Online (Sandbox Code Playgroud)

我已经成功实现了代码(见下文),但我很难搞清楚这个解决方案的时间复杂度.列表的操作次数是1 + 2 + 3 + 4 + .... + n操作次数减少到n ^ 2数学如何工作并转换为Big-O表示法?

我认为这类似于高斯公式n(n + 1)/ 2所以O(n ^ 2)但我可能错了任何帮助非常感谢

public class Solution {
    public List<List<Integer>> generate(int numRows) {
        if(numRows < 1) return new ArrayList<List<Integer>>();;
        List<List<Integer>> pyramidVal = new ArrayList<List<Integer>>();

        for(int i = 0; i < numRows; i++){
            List<Integer> tempList = new ArrayList<Integer>();
            tempList.add(1);
            for(int j = 1; j < i; j++){
                tempList.add(pyramidVal.get(i - 1).get(j) + pyramidVal.get(i - 1).get(j -1));
            }
            if(i …
Run Code Online (Sandbox Code Playgroud)

java algorithm performance time-complexity

7
推荐指数
1
解决办法
1717
查看次数

将毫秒级时间戳反序列化为java.time.Instant

我正在尝试使用Jackson读取JSON文件,并以Java的纪元毫秒形式存储其中一个字段Instant,但是反序列化的行为不符合预期。

这是我尝试读取时间戳时看到的内容:

1503115200000

杰克逊将Instant领域设置为+49601-10-28T16:00:00Z

发生这种情况是因为Jackson的默认设置是使用Instant.ofEpochSecond(Long l)而不是读取时间戳Instant.ofEpochMilli(Long l)

有没有一种方法可以将Jackson设置ObjectMapper为使用该ofEpochMilli方法呢?这是我目前拥有的ObjectMapper

ObjectMapper om = new ObjectMapper()
            .registerModule(new JavaTimeModule())
            .configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, false)
            .configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)
            .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
            .setSerializationInclusion(Include.NON_NULL);
Run Code Online (Sandbox Code Playgroud)

注意

如果我将输入JSON更改为ISO日期(例如)2017-08-19T04:00:00Z或epoch seconds(例如纪元秒),1503115200Instant字段可以正确设置。

不幸的是JSON输入必须是纪元毫秒,例如1503115200000

java serialization jackson deserialization java-time

7
推荐指数
4
解决办法
3983
查看次数

适当的单元测试技术

使用TDD当我发现自己需要测试一个常数(最终)HashMap中包含查找值(请参阅下面的原因将其进行更新CASE)

见下文

private static final Map<Integer,String> singleDigitLookup = new HashMap<Integer, String>(){{
        put(0,"Zero");put(1,"One");put(2,"Two");put(3,"Three");put(4,"Four");put(5,"Five");put(6,"Six");put(7,"Seven");
        put(8,"Eight");put(9,"Nine");
}}; 
Run Code Online (Sandbox Code Playgroud)

对于TDD,它强调一次测试一件事,所以我开始调用我的类来验证每个元素的有效性,如下所示.

测试风格1

@Test
public void whenWordIsOneThenReturn1(){
   assertEquals(1, WordToIntegerConverter.toInteger("One"));
}
Run Code Online (Sandbox Code Playgroud)

在编写第三个测试后,我认为它非常荒谬,并使用反向键值对创建了一个临时查找,并开始调用循环进行测试,如下所示.

测试风格2

@Test
    public void whenWordIsZeroThroughNineReturnIntegerConversion(){
        HashMap<Integer, String> lookup = new HashMap<Integer, String>(){{
            put(0,"Zero");put(1,"One");put(2,"Two");put(3,"Three");put(4,"Four");put(5,"Five");
            put(6,"Six");put(7,"Seven");put(8,"Eight");put(9,"Nine");
        }};
        for(int i = 0; i < 10; i++) {
            assertEquals(i, WordToIntegerConverter.toInteger(lookup.get(i)));
        }
    } 
Run Code Online (Sandbox Code Playgroud)

我的问题是这个; 使用样式1进行单元测试更好还是使用样式2更好.

我看到两者的利弊.例如,样式1非常简洁,只测试一件事并且更容易理解.风格1的缺点除了做大量的打字之外,测试套件将会爆发许多琐碎的测试.风格2的优点是单元测试较少.样式2的缺点有点复杂,并且可能测试不止一件事,但我认为它只测试常量hashmap的有效性.

更新 我收到了这个问题的大量反馈,所以让我进一步解释.它本身并不是我关心的常数,而是验证了我的代码的不同情况.这是一个练习题(练习TDD Via Katas)而不是生产代码.问题是将数字转换为单词,所以我在单元测试中关心的是确保我能够正确处理不同的数字.还有其他常量,我没有包括例如常量存储青少年数字(11,12,13 ......)和tensDigits(20,30,40 ......).在这里打个字很容易.

java tdd junit unit-testing

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

将 Jackson JsonNode 数组转换为 Java List&lt;String&gt;

我有一个 Jackson JsonNode (v2.6.3),它有一个 json 数组作为其字段之一,我希望将该数组转换为 java 列表

目前,我在第 3 行执行以下问题:

JsonNode jsonNode = getJsonPayload();
JsonNode partial = jsonNode.path("someArrayField");
List<String> z = new ObjectMapper().readValue(partial.traverse(), new TypeReference<ArrayList<String>>(){}); // <- this is the problem area
Run Code Online (Sandbox Code Playgroud)

这感觉昂贵且不合适,我本以为库会提供一个简单的调用来实现这一点。

获取列表的正确/有效方法是什么?我看到其他一些人遵循与我上面相同的模式,但答案并未被广泛接受

java json jackson

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

How to iterate over Mono&lt;List&lt;String&gt;&gt; calling Mono returning method

I'm attempting to achieve the following in the method below

  1. Get All Cars from Dealer X
  2. Create wrapper object that stores a set of all cars and another set of all manufactures 2a. Populate Cars set with the cars obtained in Step 1
  3. 对于每辆汽车,获得他们所有的独立制造商
  4. 将所有获得的制造商存储到包装对象制造商集合中
  5. 返回汽车和制造商的单声道
Mono<CarAndManufactures> requestCarAndManufactures(Request req) {
final String dealerId = buildDealerId(req.getDealerRegion(), req.getDealerId());
final CarAndManufactures CarAndManufactures = new CarAndManufactures();
return webSocketClient.getCars(dealerId) //note #getCars returns a Mono
    .map(getCarsResponse -> getCarsResponse
      .getResult()
      .stream()
      .map(Car::getId)
      .collect(toSet()))
    .map(carIds -> {
      CarAndManufactures.setCars(carIds); …
Run Code Online (Sandbox Code Playgroud)

java reactive-programming project-reactor spring-webflux

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

Pyodbc 访问同一台服务器上的多个数据库

我的任务是从同一台服务器上的两个 MS SQL 数据库获取数据,因此我可以运行一个查询,同时使用来自两个数据库的信息。我正在尝试使用 pyodbc 3.0.7 在 python 2.7 中实现这一点。我的查询如下所示:

     Select forcast.WindGust_Forecast, forcast.Forecast_Date, anoSection.SectionName, refTable.WindGust
  FROM [EO1D].[dbo].[Dashboard_Forecast] forcast
  JOIN [EO1D].[dbo].[Dashboard_AnoSections] anoSection
  ON forcast.Section_ID = anoSection.Record_ID
  JOIN [EO1D].[dbo].[Dashboard_AnoCircuits] anoCircuits
  ON anoSection.Circuit_Number = anoCircuits.Circuit_Number
  JOIN [FTSAutoCaller].[dbo].[ReferenceTable] refTable
  ON anoCircuits.StationCode = refTable.StationCode
  Where refTable.Circuit IS NOT NULL and refTable.StationCode = 'sil'
Run Code Online (Sandbox Code Playgroud)

pyodbc 的典型连接如下所示:

cnxn = pyodbc.connect('DRIVER{SQLServer};SERVER=SQLSRV01;DATABASE=DATABASE;UID=USER;PWD=PASSWORD')

这将只允许访问提供的数据库名称。

我将如何设置允许我访问两个数据库的连接,以便可以运行此查询。在我的例子中,两个数据库名称是 EO1D 和 FTSAutoCaller。

python sql database sql-server pyodbc

4
推荐指数
1
解决办法
5754
查看次数