Java 8 在这里。我需要在两个 POJO 列表中搜索一个字符串,并希望正确使用 Stream/Optional API。
如果名称出现在第一个列表 (" lunches") 中,那么我想返回一个包含它的可选项。否则,如果名称出现在第二个列表 (" dinners") 中,那么我想返回一个包含它的可选项。否则,Optional.empty()如果该名称不存在于任一列表中,我想返回。迄今为止我最好的尝试:
public class Restaurant {
private String id;
private String name;
private List<Food> lunches;
private List<Food> dinners;
public Optional<Food> findFoodByName(String name) {
return Optional.of(lunches.stream()
.filter(food -> food.getName()
.equalsIgnoreCase(name))
.findFirst())
.orElse(dinners.stream()
.filter(food -> food.getName()
.equalsIgnoreCase(name))
.findFirst());
// .orElse(null); TODO: how to return empty optional if neither in 'lunches' nor 'dinners'?
}
}
Run Code Online (Sandbox Code Playgroud)
谁能帮我在这里越过终点线?
我有一个 Java 8/Spring Boot/Maven 应用程序,可以在我的 IntelliJ IDE 中运行。当我单击绿色箭头(下方右上角)时,会显示一个控制台,一切都会正常启动,我可以在浏览器中使用该应用程序,通过curl 访问端点等。
我现在正在尝试让调试器工作。当我停止应用程序,然后通过单击调试器(上面的屏幕截图中播放图标旁边的绿色错误图标)重新启动它时,应用程序再次启动,没有任何问题。问题是,我设置的断点(在运行之前)没有执行!这意味着当应用程序遇到一行设置了断点的代码时,该过程不会暂停,并且我没有看到 IntelliJ 挂在该代码行(等待我采取行动),就像我在其他项目中习惯的那样。
例如,上面的SpringApplication.run(...)方法上设置了一个断点。但是当我在调试模式下启动它时,它只是启动并且永远不会在那一行停止!
这是我对该项目的编辑配置设置:
有什么看起来不对劲吗?我是否需要设置一些不同/特殊的东西才能进行调试?提前致谢。
Java 8 在这里。我正在尝试获取当前Date(现在),为其添加一天,并获得一个Date代表明天的新实例,该实例没有时间组件(只有年、月和日)。我最好的尝试:
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date tomorrow = calendar.getTime();
Run Code Online (Sandbox Code Playgroud)
但是当我打印时tomorrow,它包含一个时间组件(例如Sat Jun 02 14:04:59 EDT 2018:),而我只希望它包含小时/月/分钟/等的归零值(所以:)Sat Jun 02 00:00:00 EDT 2018。我怎样才能做到这一点?归根结底,我只想要一个Date代表明天日期的实例,所以在伪代码中:
Date now = new Date(); // 2018-06-01
Date tomorrow = now.plus(1, DAY); // 2018-06-02
Run Code Online (Sandbox Code Playgroud) 请注意:我创建了这个GitHub项目来帮助您准确地解决问题.
Java 8和Gradle 4.6在这里.如果您通过gradle init --type java-libraryGradle Checkstyle插件创建一个新的Java Gradle项目,并将该插件配置为使用Google的Checkstyle XML,它将立即失败:
plugins {
id 'java-library'
}
apply plugin: 'checkstyle'
dependencies {
testCompile(
'junit:junit:4.12'
)
}
repositories {
jcenter()
mavenCentral()
}
checkstyle {
// Go to the Google Checks link above and paste its
// contents into checkstyle.xml
config = rootProject.resources.text.fromFile('buildConfig/checkstyle/checkstyle.xml')
}
Run Code Online (Sandbox Code Playgroud)
使用该配置,运行./gradle clean build产生:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':checkstyleMain'.
> Unable to …Run Code Online (Sandbox Code Playgroud) 我有以下 Pyhton3/Boto3 脚本,它连接到 AWS DynamoDB 表并尝试通过循环遍历其所有记录来设置 19 天的 TTL:
#!/usr/bin/env python3
import boto3
import sys
from datetime import datetime, timedelta
from boto3.dynamodb.conditions import Key, Attr
client = boto3.resource('dynamodb')
ttl = 19 # The TTL in number of DAYS
myTable = client.Table('MyTable')
pe = "logId, id, created"
delCount = 0
try:
response = integrationLogTable.scan(
ProjectionExpression=pe,
)
while 'LastEvaluatedKey' in response:
response = integrationLogTable.scan(
ProjectionExpression=pe,
ExclusiveStartKey=response['LastEvaluatedKey']
)
for i in response['Items']:
# ???
except ClientError as e:
print(e.response['Error']['Message'])
Run Code Online (Sandbox Code Playgroud)
我正在努力解决如何将 19 天的 TTL …
我有一个使用 ActiveMQ 的应用程序,通常,我通过使用 AMQ 的 Web UI 将消息发送到我的软件正在使用的队列来测试它。
我想对此进行半自动化,并希望 AMQ 的命令行能够通过在命令调用中将该消息作为文本提供,或者理想情况下从文件中读取它来将消息发送到特定队列。
例子:
./activemq-send queue="my-queue" messageFile="~/someMessage.xml"
Run Code Online (Sandbox Code Playgroud)
或者:
./activemq-send queue="my-queue" message="<someXml>...</someXml>"
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
请注意:我在这里创建了这个 GitHub 项目,可以用来完美地重现我所看到的问题。
Java 8尝试通过gradle-launch4j Gradle 插件使用Launch4J来构建 Windows 本机 EXE 应用程序。我正在 Mac 上开发 Java Swing 应用程序,但该应用程序必须在 Windows 10 上作为 Windows EXE 运行。我还使用 ShadowJar 构建我的独立“胖罐子”。
我可以构建我的(Swing)应用程序的 fat jar,然后通过java -jar build/lib/myapp.jar. 启动和运行都没有问题。
这是我的 Launch4J Gradle 配置:
launch4j {
mainClassName = 'com.example.windows.hello.HelloWindowsApp'
icon = "${projectDir}/icon.ico"
jdkPreference = 'jdkOnly'
initialHeapSize = 128
jreMinVersion = '1.8.0'
jreMaxVersion = '1.8.9'
maxHeapSize = 512
stayAlive = false
bundledJre64Bit = true
bundledJrePath = '../hello-windows/jre8'
}
Run Code Online (Sandbox Code Playgroud)
当我运行时./gradle clean build …
我正在加入一个新团队,并已成为他们在 GitHub 中的组织的成员,这(至少在 Web UI 中)使我能够完全读取他们的存储库。所以我尝试在本地克隆一个存储库:
git clone https://github.com/<THEIR_ORG>/<THEIR_REPO>.git(其中克隆 URL 是从我的剪贴板粘贴的,我已经验证了几次它是正确的)。这是我所看到的:$ git clone https://github.com/<THEIR_ORG>/<THEIR_REPO>.git
Cloning into '<THEIR_REPO>'...
remote: Repository not found.
fatal: repository 'https://github.com/<THEIR_ORG>/<THEIR_REPO>.git/' not found
Run Code Online (Sandbox Code Playgroud)
这是该组织下的私人仓库。奇怪的是它甚至没有提示我输入用户名或密码,这表明我以某种方式将本地 git 配置为自动发送与有效的 org/repo 用户名不匹配的用户名,因此它自动让我失败。
我有几个 GitHub 帐户(用于工作和娱乐),在过去的几年里我一直使用这台笔记本电脑来处理所有这些帐户。
所以我问:为什么 git 不提示我输入用户名/密码?我怎样才能强制它提示我?
作为记录,我检查了我的~/.gitconfig文件,内容是:
[core]
excludesfile = /Users/myuser/.gitignore_global
[difftool "sourcetree"]
cmd = opendiff \"$LOCAL\" \"$REMOTE\"
path =
[mergetool "sourcetree"]
cmd = /Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" …Run Code Online (Sandbox Code Playgroud) 如何kubectl列出集群中所有已安装的操作员?例如运行:
kubectl apply -f https://raw.githubusercontent.com/reactive-tech/kubegres/v1.9/kubegres.yaml
Run Code Online (Sandbox Code Playgroud)
安装Kubegres(Postgres 集群提供程序)操作符,但是我如何在操作符列表中实际看到它。同样重要的是,如何通过从集群中卸载操作员kubectl,或者这是不可能的?
我正在尝试将 AAB 上传到 Google Play 控制台,并且需要使用与 Google Play 预期匹配的上传密钥。
我使用 Android Studio 为我生成了一个新的密钥库 ( myapp.jks)。它要求我提供所有域名(DN;OU 等)信息,我假设它使用 OpenSSL 在后台生成自签名证书(?)。
当我用来keytool检查 JKS 内的密钥时(在 Android Studio 生成它之后),我看到它的指纹以1F. 到目前为止,一切都很好。
然后,我使用此密钥库文件签署我的 AAB,并尝试将其上传到我准备好的版本。当我这样做时,我收到错误:
它期望使用以 开头的 SHA1 指纹签名的密钥85,但(正确地)看到我的 AAB 是使用以 开头的 SH1 指纹签名的1F。果然,如果我进入菜单Setup >> App Signing,我会看到 Google Play 期望的上传密钥证书具有以 开头的指纹85。
因此,我将提供一个以 开头的 SHA1 指纹密钥1F,这是 Android Studio 为我创建的 JKS。
但我的 Google Play 应用程序帐户需要一个 SHA1 指纹以85.
我在此应用程序签名屏幕上看到“下载证书”链接,但仅下载上传证书,而不下载上传密钥。
那么,我到底如何获得上传密钥(以 …