小编aus*_*ser的帖子

使用相等运算符比较两个类

使用相等运算符比较Class实例有哪些缺陷?

boolean compareTypes(Class<?> clazz, Class<?> rootClazz) {
    return clazz == rootClazz;
}
Run Code Online (Sandbox Code Playgroud)

java

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

Java中垃圾收集的频率是多少?

Java HotSpot™虚拟机中的内存管理文档的第6页包含以下段落:

年轻代集合相对频繁地发生并且高效且快速,因为年轻代空间通常很小并且可能包含许多不再被引用的对象.

在一些年轻一代的藏品中存活下来的物品最终会被提升或保留给老一代.参见图1.这一代通常比年轻一代更大,其占用率增长更慢.因此,老一代的收藏品很少,但需要更长的时间才能完成

有人可以在上述陈述中定义" 频繁 "和" 不常见 "的含义吗?我们在谈论微秒,毫秒,分钟,天

java garbage-collection

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

CPU使用率vs线程数

一般来说,CPU使用率与程序中的线程数之间的关系是什么.假设:

  • 多核CPU
  • 线程执行完全相同的工作(假设它们从队列中获取相同的工作项并处理它们)

optimization performance multithreading

7
推荐指数
2
解决办法
2万
查看次数

HikariPool-1 - 连接不可用,请求超时

我使用 HikariCP 2.4.7 作为连接池。启动应用程序后一切都很好,但一段时间后没有调用,getConnection()当我尝试执行getConnection()以下操作时出现此错误:

java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 42734ms.
    at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:555)
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:188)
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:147)
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:99)
    at pl.airly.database.ComplexOperations.getSensorDataFromArea(ComplexOperations.java:310)
    at pl.airly.database.ComplexOperations.getMeasurementsInAreaWithinTimeFrame(ComplexOperations.java:201)
    at pl.airly.ResponseGenerator.getResponseAdequateToRequest(ResponseGenerator.java:139)
    at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
    at …
Run Code Online (Sandbox Code Playgroud)

java database-connection connection-pooling jooq hikaricp

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

我的班级线程安全吗?如果不是为什么?

我的班级线程安全吗?如果不是为什么?

class Foo {
 boolean b = false;

 void doSomething() throws Exception {
    while (b) Thread.sleep();
 }

 void setB(boolean b) {
     this.b = b;
 }
}
Run Code Online (Sandbox Code Playgroud)

java

6
推荐指数
3
解决办法
439
查看次数

在 Kotlin 中使异步调用同步

我有一个我无法控制的 API.... 它包含一个方法,该方法执行一些工作并异步返回结果。我想在我的应用程序的某些部分同步调用这个方法。我通过添加一个ResultHandler捕获并返回结果的类来做到这一点。有没有比我在下面做的方法更好的方法?也许使用标准的 kotlin(或 Java 作为最后的手段)库方法。我的偏好是 awaitReply返回结果并删除CountdownLatch.

class Main {
    companion object {
        @JvmStatic

        fun main(args: Array<String>) {
            val result1 = Main().nonAsyncMethod1(arrayListOf(1, 2, 3, 4, 5))
            result1.elements.forEach { println(it) }
        }
    }

    class Result1(var elements: Collection<String>)

    fun asyncMethod1(x: Collection<Int>, callback: (Result1) -> Unit) {
        Thread().run {
            // do some calculation
            Thread.sleep(1000)
            callback(Result1(x.map { "\"$it\"" }.toList()))
        }
    }

    private fun nonAsyncMethod1(entities: Collection<Int>): Result1 {
        val resultHandler = ResultHandler<Result1>()

        awaitReply<Result1> {
            asyncMethod1(entities, resultHandler)
        }
        return resultHandler.getResponse()
    } …
Run Code Online (Sandbox Code Playgroud)

java kotlin

6
推荐指数
2
解决办法
6410
查看次数

传递 MethodHandles.lookup().lookupClass() 与传递 Class&lt;?&gt; 到 getLogger 方法

我最近遇到了一个声明如下的记录器:

private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
Run Code Online (Sandbox Code Playgroud)

与像这样“正常”声明相比,以这种方式声明记录器是否有优势:

`private static final Logger logger = LoggerFactory.getLogger(MyClass.class`);
Run Code Online (Sandbox Code Playgroud)

java

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

将 Java 编译为 WebAssembly

我正在尝试将 Java 编译为 WebAssembly。这可能吗?我最初的方法是采用这篇博文中描述的示例

博文中描述的方法如下:

  1. 安装GraalVM并将本机映像和 LLVM 工具链添加到安装中
  2. 使用GraalVM的javac编译一个简单的程序(生成类文件)
  3. 使用 GraalVM 的本机映像程序将类文件处理为本机二进制文件(带有使用 llvm 进行预处理的选项)
  4. 使用 LLVM IR 位代码文件编译为 WASM 二进制文件。

我进行到步骤 4,但之后我无法将 LLVM IR 位代码编译为 wasm。

我从 LLVM 收到以下错误:

LLVM ERROR: unsupported GC: compressed-pointer
Run Code Online (Sandbox Code Playgroud)

有没有人尝试过这个并成功了?

java llvm webassembly graalvm graalvm-native-image

6
推荐指数
0
解决办法
2852
查看次数

针对 JavaScript 时在 Kotlin 协程中使用 runBlocking?

有没有办法编写下面的 Kotlin 代码,使其在 JVM 和 JavaScript 上以相同的方式编译和工作?

fun <A: Any> request(request: Any): A  = runBlocking {
    suspendCoroutine<A> { cont ->
        val subscriber = { response: A ->
                cont.resume(response)
        }
        sendAsync(request, subscriber)
    }
}


fun <Q : Any, A : Any> sendAsync(request: Q, handler: (A) -> Unit) {

    // request is sent to a remote service,
    // when the result is available it is passed to handler(... /* result */)

}
Run Code Online (Sandbox Code Playgroud)

当针对 JVM 进行编译时,代码可以编译并正常工作。由于不存在函数 runBlocking,在针对 JavaScript 时会发出编译错误

kotlin kotlin-js kotlin-coroutines

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

错误 Kotlin:类型不匹配:推断类型是 T?但没有预料到什么

class MyExample {
  abstract class Field<in E, T : Any>(private val getter: (E) -> T?) {
    fun get(entity: E): T? { return getter(entity) }
  }

  interface Meta<T: Any> {
    fun getFields(): List<MyExample.Field<T, *>>
  }


  interface MetaRepository {
    fun <T : Any> getMeta(klass: KClass<T>): Meta<T>?
  }

  lateinit var metaRepository: MetaRepository

  fun <T : Any> doSomthing(entity: T?) {

    val meta = metaRepository.getMeta(entity!!::class)!!

    meta.getFields().forEach { field ->
      val fieldValue = field.get(entity) // <-- Error Kotlin: Type mismatch: inferred type is T? but Nothing …
Run Code Online (Sandbox Code Playgroud)

generics kotlin

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