小编use*_*r_x的帖子

通过getter和setter更新pojos的通用方法

假设我有不同类型的吸气剂和固定剂POJO.我想写一些通用算法,只需通过lambdas定义getter和setter,就可以将数据从一个更新到另一个.我试图以这种方式创建它

private static final Map<Function<Entity, Object>, BiConsumer<Entity, Object>> ACCESSORS = new HashMap
        <Function<Entity, Object>, BiConsumer<Entity, Object>>() {{
    put(Entity::getAreaCode, Entity::setAreaCode);
}});
Run Code Online (Sandbox Code Playgroud)

然后我遍历所有应用目标实体的条目,如果getter的结果不为null,那么我想为其他实体应用相应的setter.

但它不起作用,因为Object不能转换为String.而且我想将它用于不同的类型,不仅是字符串,还有整数等...

是否可以通过一些简单的方法解决而无需创建特殊转换器并将其与每个条目相关联?

java generics lambda java-8 method-reference

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

ReentrantLock与CPU级别同步?

"ReentrantLock"和"synchronized"之间在CPU级别上的实现有何不同?或者他们使用相同的"CAS"方法?

java concurrency

7
推荐指数
2
解决办法
1774
查看次数

Scala:如何忽略'SSLHandshakeException'

有了这样的代码:

val html = Source.fromURL("https://scans.io/json")
Run Code Online (Sandbox Code Playgroud)

获得例外:

Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886)
...
Run Code Online (Sandbox Code Playgroud)

我可以找到如何修复Java但不知道 - 如何在Scala中修复它?

ssl scala sslhandshakeexception

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

春季指标中的@Timed注释

@Timed在String Boot rest控制器上使用批注,并且工作正常。控制器的方法调用服务的方法,该方法也用注释@Timed

但是,此后续Service Bean中方法的注释不起作用(我在中看不到结果/metrics)。为什么会这样呢?可以解决吗?

java spring metrics spring-boot micrometer

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

Java 8 Stream:迭代,处理和计数

以这种方式处理和统计处理数据是否可以?

long count = userDao.findApprovedWithoutData().parallelStream().filter(u -> {
    Data d = dataDao.findInfoByEmail(u.getEmail());
    boolean ret = false;
    if (d != null) {
        String result = "";
        result += getFieldValue(d::getName, ". \n");
        result += getFieldValue(d::getOrganization, ". \n");
        result += getFieldValue(d::getAddress, ". \n");
        if(!result.isEmpty()) {
            u.setData(d.getInfo());
            userDao.update(u);
            ret = true;
        }
    }
    return ret;
}).count();
Run Code Online (Sandbox Code Playgroud)

因此,简而言之:迭代不完整的记录,如果数据存在则更新并计算这些记录数?

java side-effects java-8 java-stream

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

ConcurrenLinkedtHashmap迭代器提供的元素顺序取决于密钥大小?

我发现了(iterator?)ConcurrentLinkedHashMap的奇怪行为.如果key很长,则通过迭代entrySet/keySet获得的元素是奇怪/意外的顺序.如果钥匙短,一切都好.

以下代码:

    public static void main(String[] args) {
    ConcurrentLinkedHashMap<String, String> map =
            new ConcurrentLinkedHashMap.Builder<String, String>().maximumWeightedCapacity(1000).build();
    for (int i = 0; i < 5; i++) {
        map.put(i + "", i + "");
    }
    print(map);
    map.clear(); 
    // NOW AGAIN THE SAME, BUT WITH LONG KEY
    for (int i = 0; i < 5; i++) {
        map.put(i + "aaaaaaaaaaaaaaaaaaaaaaaaaa" +
                "aaaaaaaaaaaaaaaaaaaaaaaaaa" +
                "aaaaaaaaaaaaaaaaaaaaaaaaaa", i + "");
    }
    print(map);
}

private static void print(ConcurrentLinkedHashMap<String, String> a) {
    Iterator iterator = a.entrySet().iterator();
    while (iterator.hasNext()) { …
Run Code Online (Sandbox Code Playgroud)

java guava

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

可以使用流"地图"进行此类处理吗?

这可以通过Stream | Map完成,这样我就不需要将结果放在外部HashMap中,而是使用.collect(Collectors.toMap(...))收集结果; ?

Map<ReportType, Long> rep = new HashMap<>(); // result is here
Arrays.stream(rTypes).forEach(r -> rep.put(r.reportType, r.calcValue()));
Run Code Online (Sandbox Code Playgroud)

在哪里r.calcValue()计算新结果,然后放在地图中.

java dictionary java-8 java-stream

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

余弦90度的值

使用java.lang.Math函数。有人可以解释为什么cos(90)= 6.1的值吗?

    for (int i = 0; i < 91; i++) {
        System.out.println(i  + " = " + cos(toRadians(i)));
    }
Run Code Online (Sandbox Code Playgroud)

输出为:

0 = 1.0
1 = 0.9998476951563913
2 = 0.9993908270190958
...
89 = 0.0174524064372836
90 = 6.123233995736766E-17
Run Code Online (Sandbox Code Playgroud)

java math trigonometry

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