小编cod*_*eme的帖子

为什么我们需要在编码时避免突变?什么是突变?

为什么第二个代码(带有流的代码)比第一个代码更好?

第一:

public static void main(String [] args) {
   List<Integer> values = Arrays.asList(1,2,3,4,5,6);
   int total = 0;
   for(int e : values) {
       total += e * 2;

   }
Run Code Online (Sandbox Code Playgroud)

第二:

   System.out.println(total);
   System.out.println(
           values.stream()
           .map(e-> e*2)
           .reduce(0, (c, e)-> c + e)); 
Run Code Online (Sandbox Code Playgroud)

java lambda mutation java-8 java-stream

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

如何创建用于签署 JWT 令牌的 Spring 安全密钥?

implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.10.6'用作依赖项。

我想创建一个 JWT 令牌,如下所示:

@Value("${jwt.token.secret}")
private Key secret;

JwtToken.builder().value(Jwts.builder()
                .setClaims(createClaims(account))
                .setSubject(subject.toString())
                .setIssuedAt(Date.from(createdDateTime))
                .setExpiration(Date.from(expirationDateTime))
                .signWith(secret)
                .compact()).expiration(expirationDateTime.toString()).build()
Run Code Online (Sandbox Code Playgroud)

我曾经在 中提供一个字符串application.properties并引用该键,如上所示,但不推荐使用字符串作为密钥。我应该如何创建密钥秘密?

spring-security spring-boot jjwt

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

如果功能接口扩展了另一个接口,它仍然是一个功能接口吗?

Raoul-Gabriel Urma、Mario Fusco 和 Alan Mycroft 在《Java 8 in Action》一书中指出:

public interface Adder{
    int add(int a, int b);
}
public interface SmartAdder extends Adder{
    int add(double a, double b);
}
Run Code Online (Sandbox Code Playgroud)

SmartAdder 不是函数式接口,因为它指定了两个称为 add 的抽象方法(一个是从 Adder 继承的)。

在书中的另一个类似示例中,以下接口称为功能接口。

public interface ActionListener extends EventListener {
     void actionPerformed(ActionEvent e);
}
Run Code Online (Sandbox Code Playgroud)

与第二个示例相比,是什么让第一个示例不是功能接口?

java functional-interface

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

如何使用 JPA 计算列的平均值?

我想计算一列的平均值。我尝试了以下方法:

@Query("SELECT AVG(e.rating) FROM user_rating e WHERE e.route_uid = ?1")
fun averageOfRateings(routeId: UUID): Long
Run Code Online (Sandbox Code Playgroud)

该查询在 Sql 中有效,但是当我在 Spring Boot 中运行代码时出现以下错误。

Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException:
user_rating is not mapped [SELECT AVG(e.rating) FROM user_rating e WHERE e.route_uid = ?1] 
Run Code Online (Sandbox Code Playgroud)

正确的语法是什么?我的表的映射有什么问题?

average spring-data-jpa spring-boot

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

为属性创建构造函数与仅创建属性并使用默认构造函数

当我创建一个关于效率和内存使用的新对象时,我想知道这两个代码片段之间有什么区别。

private Node head;
private int size;

public MyLinkedList(){
    head  = new Node(0,null);
    size = 0;
}
Run Code Online (Sandbox Code Playgroud)

对比

private Node head= new Node(0,null);
private int size = 0;

public MyLinkedList(){

}  
Run Code Online (Sandbox Code Playgroud)

java constructor

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

如何确保只有一个消费者实际消费了已发布的消息?

我将 Rabbitmq 与微服务架构一起使用。我在许多用例中使用主题和直接交换,并且效果很好。但是我有一个用例,我必须从数据库中删除一条记录。当我删除记录时,需要调用其他几个服务并维护/删除引用的记录。我可以通过简单地通过直接交换调用这些服务来实现这一点,但我读到它更喜欢编排而不是编排。这意味着我应该实现发布/订阅模式(rabbitmq 中的扇出)。我的问题是,如果我在分布式系统中使用发布/订阅模式,如何确保只有一个服务实例使用发布的消息?

distributed-system publish-subscribe rabbitmq spring-boot

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

如何使用Dagger2将ViewModel注入BottomSheetDialogFragment中?

我使用的首选方式在“活动和片段”中注入依赖项AndroidInjection.inject(this)。我有推荐的ViewmodelFactory注入viewmodel。我的注射工作在“活动和片段”中。但是我遇到了BottomSheetDialogFragment的问题,因为不允许我将BottomSheetDialogFragment指定为this。所以我@Inject lateinit var viewModelFactory: ViewModelFactory没有初始化。我相信注入应该是可能的,因为BottomSheetDialogFragment应该是Fragment类的子类,但看起来并非如此。我使用的android.x相信也会引起问题。Dagger还不支持它吗?

我应该以哪种方式实现ViewModelFactory注入?

更新:当我尝试用注入片段时AndroidInjection.inject(this)androidx.fragment.app.Fragment只有不能使用android.app.Fragement。我扩展了Fragments,DaggerFragment它们可以按预期工作。

android dagger-2 bottom-sheet

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

如何在 Kotlin 中使用 JPA ManyToMany 双向关系

我有两个类,它们在 Spring Boot 应用程序中具有双向多对多关系。当我想获取我的实体时,它们开始递归循环,并且我收到一个 stackoverflow 异常。这是我的实现。

@Entity
@Table(name = "route")
data class Route(

        @Column(name = "uid")
        @Type(type = "pg-uuid")
        @Id
        var uid: UUID,
        var image: String,
        @Column(name = "rate_id")
        var rate_id: UUID,
        @ManyToMany(cascade = [CascadeType.ALL], fetch = FetchType.LAZY)
        @JoinTable(name = "ach",
                joinColumns = [JoinColumn(name = "route_id", referencedColumnName = "uid")],
                inverseJoinColumns = [JoinColumn(name = "athlete_id", referencedColumnName = "uid")])
        var athletes: List<Athlete> = mutableListOf())

@Entity
@Table(name = "athlete")
data class Athlete(

        @Column(name = "uid")
        @Type(type = "pg-uuid")
        @Id
        var uid: UUID,
        var …
Run Code Online (Sandbox Code Playgroud)

many-to-many jpa kotlin spring-boot

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