我正在为我的电报频道开发简单的机器人,并且正在使用 Java 16 功能,例如记录类。问题是我无法将传入请求反序列化到记录类中。我正在使用 Jackson 和 Micronaut 来设置客户端。这是我的课程:
用户记录
public record User(
long id,
boolean isBot,
String firstName,
String userName,
boolean canJoinGroups,
boolean canReadAllGroupMessages,
boolean supportsInlineQueries) {
}
Run Code Online (Sandbox Code Playgroud)
Telegram回复记录
public record TelegramResponse<T>(T result, boolean ok) {
}
Run Code Online (Sandbox Code Playgroud)
TelegramApiClient 类
@Client("https://api.telegram.org/bot${bot.id}")
public interface TelegramApiClient {
@Get("/getMe")
TelegramResponse<User> getSelf();
}
Run Code Online (Sandbox Code Playgroud)
当我调用此方法时,我收到此错误:
16:22:52.916 [default-nioEventLoopGroup-1-2] ERROR i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: Error decoding HTTP response body: Error decoding stream for type [class com.praytic.TelegramResponse]: Can not set final java.lang.Boolean field com.praytic.User.supportsInlineQueries to java.lang.Boolean (through reference …
Run Code Online (Sandbox Code Playgroud) 我有使用 Apache Kafka 2.11-0.10.1.0 的 Java 8 应用程序。我需要使用该seek
功能来处理poll
来自分区的旧消息。但是,我No current assignment for partition
每次尝试时都会遇到异常seekByOffset
。这是我的班级,负责将seek
主题添加到指定的时间戳:
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.clients.consumer.OffsetAndTimestamp;
import org.apache.kafka.common.PartitionInfo;
import org.apache.kafka.common.TopicPartition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;
import java.time.Instant;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
* The main purpose of this class is to move fetching point for each partition of the {@link KafkaConsumer}
* to some offset which is …
Run Code Online (Sandbox Code Playgroud) 我编写了3个简单的程序来测试协程的线程性能优势.每个程序都进行了许多常见的简单计算.所有程序都是彼此分开运行的.除了执行时间,我通过Visual VM
IDE插件测量CPU使用率.
第一个程序使用1000-threaded
池进行所有计算.64326 ms
由于频繁的上下文更改,这段代码显示了最差的结果()与其他结果相比:
val executor = Executors.newFixedThreadPool(1000)
time = generateSequence {
measureTimeMillis {
val comps = mutableListOf<Future<Int>>()
for (i in 1..1_000_000) {
comps += executor.submit<Int> { computation2(); 15 }
}
comps.map { it.get() }.sum()
}
}.take(100).sum()
println("Completed in $time ms")
executor.shutdownNow()
Run Code Online (Sandbox Code Playgroud)第二个程序具有相同的逻辑,但1000-threaded
它不使用池,而是仅使用n-threaded
池(其中n
等于机器核心的数量).它显示了更好的结果(43939 ms
)并且使用更少的线程,这也是好的.
val executor2 = Executors.newFixedThreadPool(4)
time = generateSequence {
measureTimeMillis {
val comps = mutableListOf<Future<Int>>()
for (i in 1..1_000_000) {
comps += executor2.submit<Int> …
Run Code Online (Sandbox Code Playgroud)我有一个条件语句,Deferred
在这两种情况下都应该返回结果,但我不知道如何手动创建Deferred
具有预定义结果的对象。这是代码快照:
val deferredResult = if (condition) {
callSuspendFunction(params)
} else {
deferred???
}
Run Code Online (Sandbox Code Playgroud)
callSuspendFunction
返回运算结果async
。虽然我可以写类似coroutineScope { async { result } }
而不是的东西deferred???
,但它看起来确实不应该是这样。
我已经阅读了有关该gsutil cp
命令的文档,但仍然不明白如何复制文件夹以保持相同的权限。我试过这个命令:
gsutil cp gs://bucket-name/folder1/folder_to_copy gs://bucket-name/folder1/new_folder
Run Code Online (Sandbox Code Playgroud)
但它导致错误:
CommandException: No URLs matched
Run Code Online (Sandbox Code Playgroud)
虽然,当我在每个名称的末尾使用斜杠尝试它时,它没有显示任何错误:
gsutil cp gs://bucket-name/folder1/folder_to_copy/ gs://bucket-name/folder1/new_folder/
Run Code Online (Sandbox Code Playgroud)
但是,当我检查gsutil ls
. 我究竟做错了什么?
我在ubuntu wsl 中 克隆了一个项目\\wsl$\Ubuntu\home\username\project
。在 Intellij IDEA Ultimate 2020.1.3 中打开它并尝试导入为 gradle 项目,但我收到了无信息的错误消息:
问题是我应该如何在 IDEA 中打开我的项目?
编辑:
来自导入项目的日志包含此堆栈跟踪。可能这会导致问题。
org.gradle.tooling.GradleConnectionException: Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradle-6.5.1-all.zip'.
at org.gradle.tooling.internal.consumer.DistributionFactory$ZippedDistribution.getToolingImplementationClasspath(DistributionFactory.java:139)
at org.jetbrains.plugins.gradle.GradleConnectorService$DistributionWrapper.getToolingImplementationClasspath(GradleConnectorService.kt:287)
at org.gradle.tooling.internal.consumer.loader.CachingToolingImplementationLoader.create(CachingToolingImplementationLoader.java:41)
at org.gradle.tooling.internal.consumer.loader.SynchronizedToolingImplementationLoader.create(SynchronizedToolingImplementationLoader.java:44)
at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.onStartAction(LazyConsumerActionExecutor.java:147)
at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.run(LazyConsumerActionExecutor.java:129)
at org.gradle.tooling.internal.consumer.connection.CancellableConsumerActionExecutor.run(CancellableConsumerActionExecutor.java:45)
at org.gradle.tooling.internal.consumer.connection.ProgressLoggingConsumerActionExecutor.run(ProgressLoggingConsumerActionExecutor.java:61)
at org.gradle.tooling.internal.consumer.connection.RethrowingErrorsConsumerActionExecutor.run(RethrowingErrorsConsumerActionExecutor.java:38)
at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor.lambda$run$0(DefaultAsyncConsumerActionExecutor.java:62)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.io.IOException: Incorrect function
at java.base/sun.nio.ch.FileDispatcherImpl.lock0(Native Method)
at java.base/sun.nio.ch.FileDispatcherImpl.lock(FileDispatcherImpl.java:100)
at java.base/sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1161)
at java.base/java.nio.channels.FileChannel.tryLock(FileChannel.java:1165)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:55) …
Run Code Online (Sandbox Code Playgroud) 我尝试使用最新的库版本运行https://github.com/Kotlin/kotlinx.coroutines/blob/master/docs/basics.md#your-first-coroutine示例,但出现错误“延迟”功能告诉我:
挂起函数“延迟”只能从协程或另一个挂起函数调用
当我运行代码时出现此错误:
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/coroutines/jvm/internal/CoroutineImpl
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.example.MainKt.main(Main.kt:6)
Caused by: java.lang.ClassNotFoundException: kotlin.coroutines.jvm.internal.CoroutineImpl
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 13 more
Run Code Online (Sandbox Code Playgroud)
这是我的 gradle 配置:
buildscript {
ext.kotlin_version = '1.3.0'
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
kotlin {
experimental {
coroutines …
Run Code Online (Sandbox Code Playgroud) 我正在使用 spring boot 2.2.6,正如文档所述:
当
@ConfigurationProperties
使用配置属性扫描或通过 注册 bean时@EnableConfigurationProperties
,该 bean 具有常规名称:<prefix>-<fqn>
,其中<prefix>
是注释中指定的环境键前缀@ConfigurationProperties
,<fqn>
是 bean 的完全限定名称。如果注释不提供任何前缀,则仅使用 bean 的完全限定名称。上例中的 bean 名称是 acme-com.example.AcmeProperties。
但是,当我使用此 SpEL 时:@Scheduled(fixedDelayString = "#{@(mr-my.config.properties.ApplicationProperties).task.get(T(my.config.Constants).CONST).delay}")
我收到错误:
Parameter 0 of constructor in my.controllers.Controller required a bean named 'mr' that could not be found.
Action:
Consider defining a bean named 'mr' in your configuration.
Run Code Online (Sandbox Code Playgroud) 我有一个带有 JDA API 的 Kotlin 项目,需要将其部署在 Heroku 环境上。为了实现这一点,我在build.gradle
文件中创建了一个 JAR 任务。
jar {
baseName = 'discord-stats-bot'
version = 'v1'
manifest {
attributes('Main-Class': 'com.vchernogorov.discordbot.BotKt')
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
Run Code Online (Sandbox Code Playgroud)
但由于以下错误,我无法构建此 JAR 文件。
16:02:03 vchernogorov $ ./gradlew jar
:kaptGenerateStubsKotlin UP-TO-DATE
:kaptKotlin UP-TO-DATE
:compileKotlin UP-TO-DATE
:compileJava UP-TO-DATE
:copyMainKotlinClasses UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:inspectClassesForKotlinIC UP-TO-DATE
:jar
FAILURE: Build failed with an exception.
* What went wrong:
Could not expand ZIP '/Users/vchernogorov/.gradle/caches/modules-2/files-2.1/club.minnced/opus-java/1.0.4/596995aaf2f5b5091c4d251fdc11fa62680cc59e/opus-java-1.0.4.pom'.
> archive is …
Run Code Online (Sandbox Code Playgroud) 假设我有一个 POST 处理程序方法:
@PostMapping("/group/{id}")
public OutParameters findRealTimeOrder(@RequestParam String anyParam,
@RequestBody String payload,
@PathVariable("id") String groupId,
InParameters parameters) {
return service.process(parameters);
}
Run Code Online (Sandbox Code Playgroud)
这里的所有注释都有描述性文档,所以我知道它们的目的是什么,但我不知道最后一个参数是什么。它与请求有什么关系?
如何在代码中创建一个动态添加 TextViews 的 ScrollView?现在我有:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Create TextView"
/>
<ScrollView
android:id="@+id/Scroll"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
作为布局文件,这是我的 kotlin 文件:
class Abfahrtsmonitor : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.abfahrtsmonitor)
// Variable for counting text view
var counter: Int = 1;
// Set a click listener for button widget
button.setOnClickListener{
// Create a new TextView instance programmatically
val text_view: TextView = TextView(this)
// …
Run Code Online (Sandbox Code Playgroud) kotlin ×5
java ×4
gradle ×2
spring ×2
android ×1
apache-kafka ×1
benchmarking ×1
build ×1
build.gradle ×1
coroutine ×1
dependencies ×1
gsutil ×1
jackson ×1
scrollview ×1
spring-boot ×1
spring-mvc ×1