小编rel*_*ood的帖子

如何监听OutOfMemoryError并退出JVM

有没有办法OutOfMemoryError为我的Java应用程序构建全局侦听器?

我想try-catch在OOM上优雅地停止JVM(不是一个选项).

java out-of-memory java-8

11
推荐指数
3
解决办法
2212
查看次数

如何从源代码手动安装 Go 包

我住在中国,无法通过命令下载和安装 GO 包(事件我使用 vpn 网络):

 go get -u <repo_url>
Run Code Online (Sandbox Code Playgroud)

但我可以访问repo_url并下载其源代码。所以我的问题是我可以将源代码放在src文件夹下并运行命令吗?:

go install 
Run Code Online (Sandbox Code Playgroud)

如果是,两种方式有什么不同?

go go-micro goa

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

Comparator.nullsLast不会避免NullPointerException

我想通过一个可空字段对对象列表进行排序.

为了避免NullPointerexception我使用Comparator.nullsLast.但例外情况仍然存在:

public class Test {

    public static void main(String[] args) {
        List<Bean> l = new ArrayList<>();
        for (int i=0;i<5;i++) {
            Bean b = new Bean("name_"+i,i);
            l.add(b);
        }
        l.get(2).setVal(null);
        System.out.println(l);
        Collections.sort(l, Comparator.nullsLast(Comparator.comparing(Bean::getVal)));
        System.out.println(l);
    }

    static class Bean{
        String name;
        Integer val;
        // omit getters & setters & constructor
    }

}
Run Code Online (Sandbox Code Playgroud)

我怎样才能对这种清单进行排序?

java collections comparator java-8 java-stream

9
推荐指数
2
解决办法
1905
查看次数

设置并发&gt; 1后,Spring Kafka将InstanceAlreadyExistsException异常

我使用的是spring-kafka,如果不设置ConcurrentKafkaListenerContainerFactory的并发性,则一切正常,当我将其设置为大于1的数字时,会出现异常:

javax.management.InstanceAlreadyExistsException:kafka.consumer:type = app-info,id = client-3

我的配置:

@Bean
public ConcurrentKafkaListenerContainerFactory<String, String> 
    kafkaListenerContainerFactory() {
    ConcurrentKafkaListenerContainerFactory<String, String> factory = new 
    ConcurrentKafkaListenerContainerFactory<String, String>();

    factory.setConcurrency(kafkaConfig.getConcurrency());

    factory.getContainerProperties().setAckMode(AckMode.MANUAL);
    factory.setConsumerFactory(consumerFactory());
    return factory;
}
Run Code Online (Sandbox Code Playgroud)

特性:

kafka.enable-auto-commit=false

kafka.client-id=client-1

kafka.concurrency=2
Run Code Online (Sandbox Code Playgroud)

java stomp apache-kafka spring-kafka

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

重新平衡后,kafka 停止使用来自新分配分区的消息

我对 kafka 很陌生(也对英语......),我面临这个问题并且无法谷歌任何解决方案。

我使用 spring-boot,spring-kafka 支持,我在本地机器上安装了 kafka_2.11-0.10.1.1(只有一个 broker 0)

s1.then 我创建主题

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 5 --topic tracking
Run Code Online (Sandbox Code Playgroud)

我的消费者配置:applitions.properties:

kafka.servers.bootstrap=localhost:9092 
kafka.topic.tracking=tracking
kafka.group.id=trackingGroup
kafka.client.id=client-1
Run Code Online (Sandbox Code Playgroud)

s2。然后我通过更改 'kafka.client.id' 并运行 spring-boot main class 来启动 3 个消费者。在 Eclipse 控制台上,我可以检查分区分配:

client-1: partitions assigned:[tracking-4, tracking-3]
client-2: partitions assigned:[tracking-2, tracking-1]
client-3: partitions assigned:[tracking-0]
Run Code Online (Sandbox Code Playgroud)

s3. 启动pruducer向topic发送20条消息,每条消息开始消费特定分区的消息

s4. 我关闭消耗 1,kafka 自动重新平衡,新分区分配:

client-1: partitions assigned:[]
client-2: partitions assigned:[tracking-2,tracking-1, tracking-0]
client-3: partitions assigned:[tracking-4,tracking-3]
Run Code Online (Sandbox Code Playgroud)

s5. 我发现分区 'tracking-3' 上的消息没有被消耗!!

问题每次都可以重现,在新分配的分区中丢失一些消息,你有什么建议吗?请帮助我,谢谢

spring apache-kafka spring-kafka

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

如何使用自定义验证规则扩展 Spring Security 的 @Preauthorize?

Spring Security 提供了一些方便的方法控制注解:

@PreAuthorize("hasRole('ADMIN')")
@PreAuthorize("hasAuthority('ROLE_ADMIN')")
@PreAuthorize("hasPermission('ADD')")
Run Code Online (Sandbox Code Playgroud)

我想用一些自定义方法来扩展它,比如

 @PreAuthorize("hasCompany('XX')") 
Run Code Online (Sandbox Code Playgroud)

其验证数据应来自 JWT 令牌。

任何人都可以帮忙吗?

spring-security jwt

3
推荐指数
1
解决办法
3896
查看次数

执行顺序与代码顺序不同

我在goland IDE中执行此代码片段,但发现输出顺序与我的预期不一样:

package main

import (
    "fmt"
    "errors"
)

func main() {

    println("===========================")
    println("---------------------------")
    r,_:= div(6,3)
    fmt.Println(r)
}

func div(x, y int) (int, error) {
    defer println("dispose...")
    if y == 0 {
        return 0, errors.New("division by zero")
    }
    return x / y, nil
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

  1. 为什么out顺序与代码顺序不同
  2. 为什么不同颜色的输出(白色和红色),我使用jetbrain的goland IDE

我无法在https://play.golang.org/p/2T5LOt7FRDn 我的本地环境中重现:windows 10 + go1.10.3 windows/amd64 + GoLand 2018.1.4

go goland

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

为什么字符串'java'无法添加到'String Pool'

以下代码让我感到困惑,任何人都可以解释为什么这两个测试表现不同?为什么第一个测试中的String比较返回false而第二个测试中的比较返回true

 public class Student {

/**
 *  Why the string "java" doesn't added to the 'String Pool' by intern() method ?
 */
@Test
public void test1() {
    String str1 = new String("ja") + new String("va");
    str1.intern();
    String str2 = "java";
    // Result:false
    System.out.println("Result:" + (str1 == str2));
}

/**
 *  Any other strings will be added to 'String Pool' as expected after intern() is invoked.
 */
@Test
public void test2() {
    String str1 = new String("ja1") …
Run Code Online (Sandbox Code Playgroud)

java java-8

-1
推荐指数
2
解决办法
198
查看次数

如何在Go中优雅地迭代日期范围

我需要迭代任何指定的日期范围,例如2017-12-21至2018-01-05。在Go中实现该功能的最佳方法是什么?

output?
20171221
20171222
20171223
...
20180104
20180105
Run Code Online (Sandbox Code Playgroud)

go

-2
推荐指数
2
解决办法
895
查看次数