小编the*_*aba的帖子

为什么kotlin允许声明变量与方法中的参数同名?

为什么kotlin允许声明变量与方法中的参数同名?有没有办法访问'隐藏'参数呢?

例:

fun main(args: Array<String>) {
    val args = Any()
}
Run Code Online (Sandbox Code Playgroud)

kotlin

9
推荐指数
2
解决办法
4206
查看次数

为什么Java的排序实现在排序之前将列表转换为数组?

在JDK 1.8中,该java.util.List#sort(Comparator)方法的第一个语句如下:

Object[] a = this.toArray();
Run Code Online (Sandbox Code Playgroud)

将列表复制到数组中,对其进行排序,并将列表中的每个节点重置为数组中的排序值是很昂贵的.

在排序时,似乎不可能将值复制到临时数组ArrayList.我对吗?如果没有,是什么引导了该方法的创造者?

java arrays sorting list java-8

8
推荐指数
3
解决办法
899
查看次数

一种在java stream api中指定Collector初始容量的优雅方法

我试图找到一种在java stream api中设置收集器初始容量的好方法.最简单的例子是:

data.stream()
        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

我只想将一个带有list大小的int传递给collector,以便不调整内部数组的大小.第一个意图是这样做:

data.stream()
        .collect(Collectors.toList(data.size()));
Run Code Online (Sandbox Code Playgroud)

但不幸的是,toList没有重载以使用参数.我发现了一个解决方案,但它闻起来:

 data.stream()
        .collect(Collectors.toCollection(() -> new ArrayList<>(data.size())));
Run Code Online (Sandbox Code Playgroud)

有没有办法表达它更简单?

java-8 collectors

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

如何配置spring的RestTemplate以允许http2请求?

Spring的RestTemplate http客户端(或任何其他客户端)中是否有任何选项允许发送HTTP2.0请求?

java spring http2

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

如何在golang中返回int或nil?

我是一名java开发人员,我正在学习Go.我正在为LIFO堆栈编写简单的'pop'操作.问题是当堆栈中没有值时返回值.在java中,我能够在正例中返回一个包装器(Integer),在没有值时返回null.从我的角度来看这很自然.

我怎样才能在Go中做类似的事情?原语是否有任何结构包装器?我是否需要返回两个值(第二个将指示错误代码)?或者我需要抛出异常吗?

以下是它现在的样子:

func (s *stack) Pop() (int, bool)  {
    if s.size == 0 {
        return 0, true
    }
    s.size--
    val := s.stack[s.size]
    return val, false
}
Run Code Online (Sandbox Code Playgroud)

这是好风格吗?

go

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

有没有方便的方法来使用Angular 5 HttpClient升级协议?

我正在开发角度5应用程序,现在已经搜索了很多关于如何使用此框架升级协议.我想使用http 2.出于这些目的,我正在手工发送这样的标题:

'Connection': 'Upgrade, HTTP2-Settings',
'Upgrade': 'h2c',
'HTTP2-Settings': 'base64EncodedSettings'
Run Code Online (Sandbox Code Playgroud)

不幸的是,在服务器端,我无法看到连接和升级的值.有什么我做错了吗?

这里有几个代码示例:

private getHeaders() {
    return {
      headers: new HttpHeaders(
        {
          'Authorization': localStorage.getItem(AuthorizationService.authTokenKey),
          'Content-Type': 'application/json',
          'Accept': 'application/json',
          'Connection': 'Upgrade, HTTP2-Settings',
          'Upgrade': 'h2c',
          'HTTP2-Settings': 'base64EncodedSettings'
        }
      )
    }
  }
Run Code Online (Sandbox Code Playgroud)

呼叫本身:

this.http.post(`some_url`, body, this.getHeaders())
Run Code Online (Sandbox Code Playgroud)

实际上,角度HttpClient正在做什么 - 它会删除Upgrade标题并覆盖Connection保持活动状态.

怎么避免呢?

http2 angular

5
推荐指数
0
解决办法
513
查看次数

如何使用委托'by'获取Kotlin中委托实例的引用?

有没有办法在Kotlin中获取对委托对象的引用?这是一个例子:

interface A {
    fun test()
}
class B: A {
    override fun test() {
        println("test")
    }
}
class C: A by B() {
    override fun test() {
        // ??? how to get a reference to B's test() method? 
    }
}
Run Code Online (Sandbox Code Playgroud)

kotlin

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

如何使用 KTOR 库配置 ssl?

我正在寻找一种为 Ktor 应用程序配置 https 的方法。

我在那里找到了官方文档:https : //ktor.io/servers/self-signed-certificate.html 这里解释了如何在 HOCON 配置文件中添加指向证书的链接。

是否可以在没有配置文件的情况下配置 ssl?

这是我的代码库:

http = embeddedServer(Netty, port = listenPort, configure = {
                connectionGroupSize = 1
                workerGroupSize = 5
            }){
                if(sslCertificate != null) {
                    install(HttpsRedirect) {
                        sslPort = 443
                    }
                }

                install(StatusPages) {
                    exception<NotFoundError> { cause ->
                        logger.error("NotFoundError:", cause.message)
                        call.respondText(cause.message ?: "",
                                ContentType.Text.Plain, HttpStatusCode.NotFound){}
                    }
                    exception<BadFormatError> { cause ->
                        logger.error("BadFormatError:", cause.message)
                        call.respondText(cause.message ?: "",
                                ContentType.Text.Plain, HttpStatusCode.BadRequest){}
                    }
                    exception<UserMistake> { cause ->
                        logger.error("UserMistake:", cause.message)
                        call.respondText(cause.message ?: "",
                                ContentType.Text.Plain, HttpStatusCode.BadRequest){}
                    } …
Run Code Online (Sandbox Code Playgroud)

kotlin ktor

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

java 中发生了什么变化,因此合成方法被删除了?

我尝试用谷歌搜索,但没有找到有关下一个的任何详细信息:

在 11 之前的 java 中,我们有编译器添加的合成方法,用于绑定外部类和内部类的私有字段。听起来很合乎逻辑,因为编译后内部类包含到外部类的链接以访问它。因此,为了访问私有成员,创建了一种合成吸气剂。

问题是:java-11+如何处理呢?合成方法被删除。他们如何实现私有化?

java

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

为什么Kotlin的map-filter-reduce比大型输入上的Java Stream操作慢?

几天前,我创建了一个简单的基准测试(没有jmh和所有其他专门的东西,只是为了粗略测量).

我发现,对于同样简单的任务(遍历1000万个数字,对它们进行平方,仅过滤偶数并减少它们的总和),Java的工作速度要快得多.这是代码:

科特林:

fun test() {
    println((0 .. 10_000_000L).map { it * it }
                              .filter { it % 2 == 0L }
                              .reduce { sum, it -> sum + it })
}
Run Code Online (Sandbox Code Playgroud)

Java的:

public void test() {
    System.out.println(LongStream.range(0, 10_000_000)
                                 .map(it -> it * it)
                                 .filter(it -> it % 2 == 0)
                                 .reduce((sum, it) -> sum + it)
                                 .getAsLong());
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Java版本1.8.0_144和Kotlin版本1.2.

在我的硬件上平均需要85毫秒的Java和4,470毫秒的Kotlin执行相应的功能.Kotlin工作速度慢了52倍.

我怀疑Java编译器会产生优化的字节码,但我没想到会看到如此巨大的差异.我想知道我做错了什么?我怎样才能迫使Kotlin更快地工作?我喜欢它,因为它的语法,但52次是一个很大的区别.我只是编写了类似Java 8的代码,而不是普通的旧迭代版本(我相信,它会比给定版本快得多).

java kotlin

4
推荐指数
1
解决办法
2180
查看次数

标签 统计

java ×4

kotlin ×4

http2 ×2

java-8 ×2

angular ×1

arrays ×1

collectors ×1

go ×1

ktor ×1

list ×1

sorting ×1

spring ×1