为什么第二个代码(带有流的代码)比第一个代码更好?
第一:
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) 我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
并引用该键,如上所示,但不推荐使用字符串作为密钥。我应该如何创建密钥秘密?
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)
与第二个示例相比,是什么让第一个示例不是功能接口?
我想计算一列的平均值。我尝试了以下方法:
@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)
正确的语法是什么?我的表的映射有什么问题?
当我创建一个关于效率和内存使用的新对象时,我想知道这两个代码片段之间有什么区别。
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) 我将 Rabbitmq 与微服务架构一起使用。我在许多用例中使用主题和直接交换,并且效果很好。但是我有一个用例,我必须从数据库中删除一条记录。当我删除记录时,需要调用其他几个服务并维护/删除引用的记录。我可以通过简单地通过直接交换调用这些服务来实现这一点,但我读到它更喜欢编排而不是编排。这意味着我应该实现发布/订阅模式(rabbitmq 中的扇出)。我的问题是,如果我在分布式系统中使用发布/订阅模式,如何确保只有一个服务实例使用发布的消息?
我使用的首选方式在“活动和片段”中注入依赖项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
它们可以按预期工作。
我有两个类,它们在 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) spring-boot ×4
java ×3
android ×1
average ×1
bottom-sheet ×1
constructor ×1
dagger-2 ×1
java-8 ×1
java-stream ×1
jjwt ×1
jpa ×1
kotlin ×1
lambda ×1
many-to-many ×1
mutation ×1
rabbitmq ×1