我正在学习有关Spring Boot和JPA,Spring Data Rest,H2数据库的知识,并且找到了一个教程。我试图理解它,这是一个简单的例子,但我不明白。为什么没有必要放置@Repository或@Component加入AlienRepo类?
回购对象被注入到AlienController类中,从以前的教程中我知道您需要使用@Component或@Repository。我认为使用此批注是强制性的。
控制器:
package com.dgs.springbootjpa.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.dgs.springbootjpa.dao.AlienRepo;
import com.dgs.springbootjpa.model.Alien;
@Controller
public class AlienController {
@Autowired
AlienRepo repo;
@RequestMapping("/")
public String home() {
return "home.jsp";
}
@RequestMapping("/addAlien")
public String addAlien(Alien alien) {
repo.save(alien);
return "home.jsp";
}
}
Run Code Online (Sandbox Code Playgroud)
POJO:
package com.dgs.springbootjpa.model;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Alien {
@Id
private int aid;
private String aname;
public int getAid() {
return aid; …Run Code Online (Sandbox Code Playgroud) 我试图了解reduce()方法如何与并行流完全配合,但我不明白为什么以下代码不返回这些字符串的串联。
这是代码:
public class App {
public static void main(String[] args) {
String[] grades = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"};
StringBuilder concat = Arrays.stream(grades).parallel()
.reduce(new StringBuilder(),
(sb, s) -> sb.append(s),
(sb1, sb2) -> sb1.append(sb2));
System.out.println(concat);
}
}
Run Code Online (Sandbox Code Playgroud)
该代码仅适用于顺序流,但对于并行流,它不会返回串联。每次输出都不一样。有人可以解释一下那里发生了什么吗?
我开始学习 Kubernetes,并在 Windows 7 上安装了 minikube 和 kubectl。
之后我使用命令创建了一个 pod:
kubectl run firstpod --image=nginx
Run Code Online (Sandbox Code Playgroud)
一切都很好:
[![在此处输入图像描述][1]][1]
现在我想使用此命令进入 pod 内部:kubectl exec -it firstpod -- /bin/bash但它不起作用,并且出现此错误:
OCI runtime exec failed: exec failed: container_linux.go:380: starting container
process caused: exec: "C:/Program Files/Git/usr/bin/bash.exe": stat C:/Program
Files/Git/usr/bin/bash.exe: no such file or directory: unknown
command terminated with exit code 126
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
另一个问题是关于这个firstpodPod 的。使用此命令kubectl describe pod firstpod我可以查看有关 pod 的信息:
Name: firstpod
Namespace: default
Priority: 0
Node: minikube/192.168.99.100
Start Time: Mon, 08 Nov …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Angular和Spring Boot应用程序,我对Angular很新.我已经制作了一些组件,一个用于登录的组件和一个用于注册的组件,我也做了一些验证等等.现在,我想做的是当用户注册成功时用户被重定向到登录页面而且我也想要显示这样的信息:"注册成功!请登录!" 我知道如何将用户重定向到登录页面,但我不知道如何为用户显示此消息.
注册ts
import { Component, OnInit, ViewChild } from '@angular/core';
import { NgForm } from '@angular/forms';
import { User } from '../model/user.model';
import { UserDataService } from '../service/data/user-data.service';
import { Router } from '@angular/router';
@Component({
selector: 'app-register',
templateUrl: './register.component.html',
styleUrls: ['./register.component.css']
})
export class RegisterComponent implements OnInit {
invalidRegister = false;
errorMessage = '';
pass1 = '';
pass2 = '';
userName: string;
emailAddress: string;
user: User;
@ViewChild('f') signupForm: NgForm;
constructor(
private userDataService: UserDataService,
private router: Router) { } …Run Code Online (Sandbox Code Playgroud) 我正在学习队列集合,我不明白为什么在使用PriorityQueue时我需要实现Comparable接口?我在数组/列表的自定义排序中使用了Comparable和Comparator接口.但是,当我不想对它进行排序时,为什么我需要为PriorityQueue实现...
在下面的示例中,我看到如果我没有实现Comparable接口,我就无法在PriorityQueue中添加元素.
对我来说很大的误解,在我运行此代码之后,列表没有按ID排序?我问这个问题是因为我看到compareTo()方法被覆盖了,当我想对列表进行排序时我使用这个方法.
我记得当我为列表完成自定义排序时,我已经使用了exaclty这个代码.列表按id排序.为什么在这种情况下队列没有排序?
抱歉我的英语语法.任何反馈将是apreciated!
import java.util.PriorityQueue;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<Book> queue = new PriorityQueue<>();
//Creating Books
Book b1=new Book(121,"Let us C","Yashwant Kanetkar","BPB",8);
Book b2=new Book(233,"Operating System","Galvin","Wiley",6);
Book b3=new Book(101,"Data Communications & Networking","Forouzan","Mc Graw Hill",4);
Book b4=new Book(319,"Learn Java","Yanis Orhan","HEX",3);
Book b5=new Book(191,"Linux","Hadgy","Haman",7);
Book b6=new Book(287,"Python Programming","Tarzan","GEN",5);
//Adding Books to the queue
queue.add(b1);
queue.add(b2);
queue.add(b3);
queue.add(b4);
queue.add(b5);
queue.add(b6);
System.out.println("Traversing the queue elements:");
//Traversing queue elements
for(Book b : queue) {
System.out.println(b.id+" …Run Code Online (Sandbox Code Playgroud) 我正在学习 Spring Boot,我发现您不需要为某些依赖项指定版本,但您需要为其他依赖项指定版本。这个依赖的版本从哪里来?
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.dgs</groupId>
<artifactId>n-tier-and-jackson</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>n-tier-and-jackson</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<paypal.rest.easy.version>2.3.3-RELEASE</paypal.rest.easy.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>com.paypal.springboot</groupId>
<artifactId>resteasy-spring-boot-starter</artifactId>
<version>${paypal.rest.easy.version}</version>
</dependency>
...
Run Code Online (Sandbox Code Playgroud)
例如,在此代码中,您不需要指定 spring-boot-starter-jersey 的版本,但需要指定resteasy-spring-boot-starter 的版本。spring-boot-starter-jersey 的版本来自哪里?谢谢你!
我正在使用 MapStruct 将值从源映射到目标类。源类有一个 String 属性,目标类有一个 java.util.Date 属性。源属性是这样的:“yyyy-mm-dd”。我想将此 String 属性转换为 Date 属性。我如何使用 MapStruct 做到这一点?谢谢!
我正在使用 java 流,但遇到了问题。我有这个代码:
clients.stream()
.map(Client::getDescription)
.map(x -> x.substring(x.lastIndexOf("_v")))
.map(x -> x.substring(2))
.mapToInt(Integer::parseInt)
.max()
.getAsInt();
Run Code Online (Sandbox Code Playgroud)
每个客户端的描述可能是“John_abc_v1”、“Bill_crce_v2”、“Joe_ghhj_V3”……我得到了最大值,在这种情况下是 3……但问题是 v 可以是小写或大写,而我没有知道如何解决,所以这行不工作 .map(x -> x.substring(x.lastIndexOf("_v"))),我得到String index out of range -1的时候“V”是大写的。我该如何解决?任何反馈都将受到赞赏。
我正在学习 Java 中的多线程,我有一个简短的问题。我有一个同步块或方法和 2 个(或更多)线程。而且我只有一个只有一个核心的CPU,因此当CPU决定从一个线程切换到另一个线程时,2个线程将按顺序工作。
public synchronized void doSomething() {
// do something
}
Run Code Online (Sandbox Code Playgroud)
因此,一次只有一个线程会执行此方法,因为它是同步的。另一个线程被阻塞,在第一个线程完成执行之前无法执行该方法。
我认为有两种情况,CPU可以在thread1完成doSomething()的执行之前将执行从thread1切换到thread2。如果CPU这样做,则意味着线程1将停止执行doSomething()并让它未完成,线程2将看到doSomething()被锁定,因为线程1执行了它。之后我认为CPU会切换回thread1并继续执行doSomething()。在 CPU 切换回线程 2 之前,线程 1 可能会再次开始执行 doSomething() 。
第二种情况,线程1执行doSomething(),线程2在线程1执行该方法的整个期间被阻塞。当线程 1 完成 doSomething() 的执行后,CPU 将切换到线程 2,该线程将开始执行 doSOthing(),因为此时该方法尚未锁定。
有人可以向我解释什么是正确的情况吗?
我想将日期格式从 更改"20230523154325"为2023-05-23T15:43:25+0000".
我有这段代码,但不幸的是结果是这样的:"2023-05-23T15:43:25+0300"。
所以我不想拥有,我想最后+0300拥有。+0000所以,这部分应该是完全相同的2023-05-23T15:43:25,而不是+0300应该是+0000。+0000把这个放在最后很重要。任何反馈将不胜感激!
public static void main(String[] args) {
String oldDate = "20230523154325";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
Date newDateFormat = null;
try {
newDateFormat = sdf.parse(oldDate);
} catch (ParseException e) {
throw new RuntimeException(e);
}
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
System.out.println("The date is " + sdf1.format(newDateFormat));
}
Run Code Online (Sandbox Code Playgroud) java ×8
date ×2
java-8 ×2
java-stream ×2
spring-boot ×2
string ×2
angular ×1
arrays ×1
collections ×1
comparable ×1
containers ×1
cpu ×1
datetime ×1
dependencies ×1
docker ×1
javascript ×1
kubernetes ×1
list ×1
locking ×1
mapstruct ×1
maven ×1
queue ×1
spring ×1
spring-mvc ×1
synchronized ×1
typescript ×1
utc ×1