小编roi*_*oim的帖子

为什么Stream <T>没有实现Iterable <T>?

在Java 8中,我们有Stream <T>类,它奇怪地有一个方法

Iterator<T> iterator()
Run Code Online (Sandbox Code Playgroud)

所以你会期望它实现接口Iterable <T>,这需要完全这个方法,但事实并非如此.

当我想使用foreach循环遍历Stream时,我必须做类似的事情

public static Iterable<T> getIterable(Stream<T> s) {
    return new Iterable<T> {
        @Override
        public Iterator<T> iterator() {
            return s.iterator();
        }
    };
}

for (T element : getIterable(s)) { ... }
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?

java iterable java-8 java-stream

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

如何在Java中取消Files.copy()?

我正在使用Java NIO来复制一些东西:

Files.copy(source, target);
Run Code Online (Sandbox Code Playgroud)

但我想让用户能够取消这个(例如,如果文件太大而且需要一段时间).

我该怎么做?

java io nio

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

gitignore的类似正则表达式的shell glob模式

当我编译我的C++项目时,许多共享对象文件都是使用扩展名创建的

.so
.so.0
.so.7
.so.0.7
Run Code Online (Sandbox Code Playgroud)

我需要将所有这些添加到我的.gitignore文件中.如果这是一个正则表达式,我可以使用

\.so[\.0-9]*
Run Code Online (Sandbox Code Playgroud)

但是,文档说明了这一点.gitignore

将模式视为适合fnmatch(3)使用FNM_PATHNAME标志的shell glob

我找不到用fnmatch我发现的文件做我想做的事情.真的没办法做到这一点吗?

git glob gitignore

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

kOps 1.19 在与 AWS 集群交互时报告错误“未授权”

我正在按照 kOps 教程在 AWS 上设置集群。我能够创建一个集群

kops create cluster
kops update cluster --yes
Run Code Online (Sandbox Code Playgroud)

但是,在验证我的集群是否正确设置时

kops validate cluster
Run Code Online (Sandbox Code Playgroud)

我陷入了错误:

unexpected error during validation: error listing nodes: Unauthorized
Run Code Online (Sandbox Code Playgroud)

在许多其他 kOps 操作中也会发生同样的错误。

我检查了我的 kOps/K8s 版本,它是 1.19:

> kops version
Version 1.19.1 (git-8589b4d157a9cb05c54e320c77b0724c4dd094b2)

> kubectl version
Client Version: version.Info{Major:"1", Minor:"20" ...
Server Version: version.Info{Major:"1", Minor:"19" ...
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

amazon-ec2 nlb amazon-web-services kubernetes kops

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

kubernetes 补丁中有哪些可用的操作?

kubectl patch --help给出了一个示例,您可以在其中使用特定操作修补特定元素:

kubectl patch pod valid-pod --type='json' \
    -p='[{"op": "replace", "path": "/spec/containers/0/image",
        "value":"new image"}]'
Run Code Online (Sandbox Code Playgroud)

但是,没有枚举可能的op值。可以进行哪些操作?

kubernetes

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

OpenRead是异步的

我正在使用以下C#代码通过网络共享读取一个小文本文件:

string fileContent;
using (var stream = File.OpenRead(filePath))
using (var reader = new StreamReader(stream, FileEncoding))
{
    fileContent = await reader.ReadToEndAsync();
}
Run Code Online (Sandbox Code Playgroud)

即使文本文件非常小(小于10 KB),此操作有时需要约7秒才能运行.当发生这种情况时,我注意到大部分时间花在了上面

File.OpenRead(filePath)
Run Code Online (Sandbox Code Playgroud)

这可能是由于Windows必须解析文件共享并通过网络获取文件上的锁定.由于该方法调用不是异步的,因此阻止我当前的线程几秒钟.

是否有一种安全的方法可以异步读取磁盘中的文件,同时异步执行OpenRead?

c# file-io async-await

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

K8s Pod 拓扑传播在推出后不受尊重?

我正在尝试传播我的ingress-nginx-controller豆荚,以便:

  • 每个可用区都有相同的 Pod 数量 (+- 1)。
  • Pod 更喜欢当前运行 Pod 最少的节点。

根据此处的其他问题,我在 Pod 部署中设置了 Pod 拓扑扩展约束:

      replicas: 4
      topologySpreadConstraints:
      - labelSelector:
          matchLabels:
            app.kubernetes.io/name: ingress-nginx
        maxSkew: 1
        topologyKey: topology.kubernetes.io/zone
        whenUnsatisfiable: DoNotSchedule
      - labelSelector:
          matchLabels:
            app.kubernetes.io/name: ingress-nginx
        maxSkew: 1
        topologyKey: kubernetes.io/hostname
        whenUnsatisfiable: DoNotSchedule
Run Code Online (Sandbox Code Playgroud)

我目前有 2 个节点,每个节点位于不同的可用区:

$ kubectl get nodes --label-columns=topology.kubernetes.io/zone,kubernetes.io/hostname
NAME                            STATUS   ROLES                  AGE    VERSION   ZONE         HOSTNAME
ip-{{node1}}.compute.internal   Ready    node                   136m   v1.20.2   us-west-2a   ip-{{node1}}.compute.internal
ip-{{node2}}.compute.internal   Ready    node                   20h    v1.20.2   us-west-2b   ip-{{node2}}.compute.internal

Run Code Online (Sandbox Code Playgroud)

运行kubectl rollout restart该部署后,我在一个节点中获得 3 个 pod,在另一个节点中获得 1 …

kubernetes

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

Kubernetes 活跃度探测失败是自愿中断还是非自愿中断?

我有一个部署到 Kubernetes 的应用程序,该应用程序依赖于外部应用程序。有时,这两者之间的连接会进入无效状态,只能通过重新启动我的应用程序来修复。

为了自动重新启动,我配置了一个活动探针来验证连接。

这一直工作得很好,但是,我担心如果外部应用程序出现故障(这样连接错误不仅仅是由于无效的 Pod 状态),我的所有 Pod 将立即重新启动,并且我的应用程序将变成完全不可用。我希望它保持运行,以便不依赖于不良服务的功能可以继续。

我想知道 Pod 中断预算是否会阻止这种情况,因为它限制了由于“自愿”中断而减少的 Pod 数量。然而,K8s 文档没有说明活性探测失败是否是自愿中断。他们是吗?

kubernetes livenessprobe

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

为什么在C++中有替代令牌?

可能重复:
为什么C和C++中有有向图?
什么是C ??!??!运营商呢?!

在C++中,有[]和{}等替代令牌.

例如,以下代码编译:

%:include <stdio.h>
int main() <%
    printf("Hello World!");
}
Run Code Online (Sandbox Code Playgroud)

我想了一会儿却想不出任何适用性,这有什么合理的理由吗?

c++ ansi

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

修改IEnumerable foreach与List <T> .ForEach中的结构

这个问题具体是关于结构.

我说定义:

struct Complex
{
    public double real, imaginary;
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试:

var numbers = new[] 
{
    new Complex() { real = 1, imaginary = 1 },
    new Complex() { real = -1, imaginary = -1 } 
};

foreach ( var z in numbers )
{
    z.real += 1;
}
Run Code Online (Sandbox Code Playgroud)

我收到编译错误: Error: cannot modify members of 'complex' because it is a 'foreach iteration variable'

然而,

var numbers = new List<Complex>();
numbers.Add( new Complex() { real = 1, imaginary = 1 } …
Run Code Online (Sandbox Code Playgroud)

c# ienumerable

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

Type-2虚拟机管理程序的性能损失是否相当可观?

在我的OS课程前一段时间我记得老师说的话

Type 1虚拟机管理程序直接在硬件上运行; Type 2虚拟机管理程序在另一个操作系统上运行,例如Linux

这表明2型虚拟机管理程序下的虚拟机性能较低.

我正在做一些简单的基准测试,例如迭代for循环或使用VirtualBox(这是一个Type 2虚拟机管理程序)将字符写入文本文件,但发现性能影响最小.

再研究一下,看来在我的计算机上VirtualBox可以使用VT-x进行硬件虚拟化,即使它在我的Windows操作系统下运行.

所以出现的问题是,2型虚拟机管理程序现在真的遭受了性能损失,特别是考虑到它们可以实现硬件虚拟化吗?

如果答案是否定的,那么为什么类型1和类型2管理程序之间的区别仍然存在?

virtualization virtualbox virtual-machine

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