小编Hos*_*ein的帖子

Kotlin:使用索引从列表创建地图

我有一个清单如下:

val numbers = listOf("one", "two", "three", "four")
Run Code Online (Sandbox Code Playgroud)

我想创建一个映射,以便每个索引都指向列表的每个值。

1 为“一”,2 为“二”,..

我希望结果是

Map<Int, String>
Run Code Online (Sandbox Code Playgroud)

kotlin

11
推荐指数
2
解决办法
7671
查看次数

用于字符串操作的Java 8 Streams

我想在一个字符串上执行多个任务.我需要使用分隔符("/")获取一个字符串并提取不同的子字符串,然后反转子字符串列表,最后使用另一个分隔符(".")/tmp/test/hello/world/将它们连接起来,这样就会变成:world.hello.test.tmp

使用Java 7代码如下:

String str ="/tmp/test/";
List<String> elephantList = new ArrayList<String>(Arrays.asList(str.split("/")));

StringBuilder sb = new StringBuilder();
for (int i=elephantList.size()-1; i>-1; i--) {
    String a = elephantList.get(i);
    if (a.equals(""))
    {
        elephantList.remove(i);
    }
    else
    {
        sb.append(a);
        sb.append('.');
    }
}
sb.setLength(sb.length() - 1);
System.out.println("result" + elephantList + "   " + sb.toString());
Run Code Online (Sandbox Code Playgroud)

我想知道如何使用Java 8流和它对字符串的连接功能做同样的事情

java-8 java-stream

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

如何计算余数有什么不同?

假设a = 2 ^ k int c = b%aint c = b & (a-1)?之间在性能或正确性方面存在任何差异。

c c++ performance

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

将主线程放回Netty ServerSocket

我有一个问题,关于如何在创建TCP服务器套接字时将主线程恢复到Netty中.

在下面取自代码在这里,"你好你好"永远不会被写入输出作为启动服务器,等待在这条线螺纹:f.channel().closeFuture().sync();.在这种情况下,我是否需要创建一个单独的线程来获取主线程,或者在Netty中是否有任何方法可以允许我这样做(在后台运行TCP时获取主线程)?

public void start() throws Exception {
    NioEventLoopGroup group = new NioEventLoopGroup();
    try {
        ServerBootstrap b = new ServerBootstrap();
        b.group(group)
         .channel(NioServerSocketChannel.class)
         .localAddress(new InetSocketAddress(port))
         .childHandler(new ChannelInitializer<SocketChannel>() {
             @Override
             public void initChannel(SocketChannel ch) 
                 throws Exception {
                 ch.pipeline().addLast(
                         new EchoServerHandler());
             }
         });

        ChannelFuture f = b.bind().sync();
        System.out.println(EchoServer.class.getName() + " started and listen on " + f.channel().localAddress());
        f.channel().closeFuture().sync();
    } finally {
        group.shutdownGracefully().sync();
    }
}

public static void main(String[] args) throws Exception {
    if (args.length != 1) {
        System.err.println(
                "Usage: …
Run Code Online (Sandbox Code Playgroud)

java multithreading netty

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

JNI线程模型?

当我从Java调用C/C++时,JavaVM或JNI创建的新线程是否在我的Java线程等待时运行C/C++代码?我问这个是因为我的C/C++代码在GPU上运行,我需要检查一个特定的缓冲区以获得结果.得到结果后,我需要再次调用我的Java函数.

所以我想在C++端创建一个持续检查缓冲区的线程,一旦有一些数据可用,就回调Java端.

c++ java java-native-interface multithreading jnienv

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

使用 JNI 将字节数组从 Java 传递到 C++,无需复制

我想将一个大字节 [] 从 Java 传递给 C++。我知道我可以使用 Java ByteBuffers 在 C++ 和 Java 之间共享内存,如下所示:

    ByteBuffer bb;
    bb = ByteBuffer.allocateDirect(3);
    byte[] byteArray = new byte[] { 0x01, 0x02, 0x03 };
    bb.put(byteArray);
    modifyByteBuffer(bb); //native function
Run Code Online (Sandbox Code Playgroud)

并通过以下方式在 C++ 中访问它:

uint8_t *iBuf = (uint8_t*) env->GetDirectBufferAddress(buf1);
Run Code Online (Sandbox Code Playgroud)

但是,bb.put(byteArray)操作,是一个副本。如果我使用ByteBuffer.wrap(byteArray),则无法使用env->GetDirectBufferAddress. 我如何解决这个困境并传递一个byte[]而无需复制。

c++ java java-native-interface

3
推荐指数
1
解决办法
1872
查看次数

使用 Podman 为容器分配特定 IP 地址

每次我使用 Podman 从图像创建容器时,我都会为其分配一个特定的 IP 地址。目前每次创建新容器时,IP地址从10.88.0.1开始加1

podman

3
推荐指数
1
解决办法
6906
查看次数

Python范围函数,用于Java 8中使用流的Double值

我想在Java中创建一个双精度数组,其中包含0到100之间的值,步长为0.1

在Python中,可以使用范围函数: range(0, 100, 0.1)

在Java 8中,这可以工作:

Double[] x = DoubleStream.iterate(0.1, i -> i + 0.1).limit(1000).boxed().toArray(Double[]::new);
Run Code Online (Sandbox Code Playgroud)

有什么比我更简单的了吗?

java java-8

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

Kotlin:如果 HashMap 不包含某个值,则创建 key

我有以下 HashMap:

val myHashMap: HashMap<key, ValueClass>
Run Code Online (Sandbox Code Playgroud)

在哪里:

data class ValueClass(
    var a: Long = 0,
    var b: Long = 0
)
Run Code Online (Sandbox Code Playgroud)

我想使用 myHashMap 如下:如果 myHashMap 不包含键 x,则创建一个新的 ValueClass 并将其插入到 myHashMap 中,然后 myHashMap[x].a = newValue

最干净的方法是什么?在 Java 中,我会有:

    if(!myHashMap.containsKey("x"))
    {
        map.put("x",new ValueClass());
    }
    map.get("x").a=newValue;
Run Code Online (Sandbox Code Playgroud)

kotlin

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