小编Dav*_*eUK的帖子

在Go中将自定义类型转换为字符串

在这个奇怪的例子中,有人创建了一个新类型,它实际上只是一个字符串:

type CustomType string

const (
        Foobar CustomType = "somestring"
)

func SomeFunction() string {
        return Foobar
}
Run Code Online (Sandbox Code Playgroud)

但是,此代码无法编译:

不能在返回参数中使用Foobar(类型CustomType)作为类型字符串

你如何修复SomeFunction,以便它能够返回Foobar("somestring")的字符串值?

string type-conversion go

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

计算子网内的所有地址...用于IPv6

我见过很多伟大的C#示例其中演示了如何在CIDR标记提供的IPv4地址转换(如192.168.0.1/25)到他们的相关范围(192.168.0.1 - 192.168.0.126).我的程序需要能够这样做(计算我本地子网中的所有地址),但我也想支持IPv6.

如果我的C#程序有我所有的典型IPCONFIG信息(IPv4地址,子网掩码,IPv6地址,链路本地V6地址,默认网关) - 我怎么会去生成所有IPv6的列表在我的本地子网地址,将它们输出到控制台?

c# ipv6 subnet

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

Powershell Regex - 可选的命名组匹配

假设我有一个字符串:

$string1 = "Hello_World:How, are, you:-all -is -well"
Run Code Online (Sandbox Code Playgroud)

我想使用正则表达式来匹配冒号分隔的字符串部分到命名组.例如:

$pattern = "(?<first>.*)\:(?<second>.*)\:(?<third>.*)"
Run Code Online (Sandbox Code Playgroud)

这个$模式会成功匹配$ string1,我最终会得到以下匹配:

first=Hello_World
second=How, are, you
third=-all -is -well
Run Code Online (Sandbox Code Playgroud)

这很好,但是有一个问题.$ string1可能缺少第三部分,例如:

$string1 = "Hello_World:How, are, you"
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个$ string1不再匹配正则表达式模式.如何使模式匹配两种格式的字符串?(即我应该总是有一个"第一"和"第二"匹配,如果提供的话,只有一个"第三"匹配).

regex powershell optional

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

C# - 确定IP地址范围是否包含特定地址

在C#中,假设您有一个表示为字符串值的IP地址范围:

"192.168.1.1-192.168.2.30"

并且您还有一个表示为字符串值的IP地址,如:

"192.168.1.150"

确定地址范围是否包含单个IP地址的最优雅方法是什么?

c# string contains ip-address range

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

使用 client-go 模拟“kubectl wait”以等待 Pod 准备就绪

在 bash 脚本中,我通常使用“kubectl wait”来阻止,直到某个 pod 资源准备就绪,例如类似于以下内容:

kubectl wait --for=condition=Ready --timeout=2m -n mynamespace pod -l myselector
Run Code Online (Sandbox Code Playgroud)

这很有效,因为很多时候我不知道需要等待的 pod 的确切名称,而“kubectl wait”允许我根据选择器找到 pod,然后阻塞直到它准备好。

现在我需要在 golang 代码中做类似的事情。我见过使用client-go库进行身份验证并按名称“获取”特定 pod 的示例。但我有一些关于如何最好地使这个例子适应我的需要的问题......

  1. 我不知道能够“Get()”它的 pod 的确切/全名,这就是为什么“kubectl wait”是完美的,因为它允许我使用选择器找到 pod。我认为我应该使用 client-go 库来执行 CoreV1().Pods().List() 调用而不是 Get() 以便允许我使用选择器找到我想要的 pod?

  2. 此外,pod 可能不会立即存在,可能仅在 1 分钟左右后创建,这是“kubectl wait”为我处理的。在代码中,我是否需要循环/睡眠并继续执行 List() 直到 pod 存在?

  3. 与 #2 类似的问题...一旦 List() 返回 pod 名称,golang 中“等待”该 pod 处于“就绪”状态的最佳方法是什么?如果可以避免的话,我不想对睡眠进行任何丑陋的民意调查......那么有没有更好的选择使用 golang 'wait' 包或类似的?你有什么建议吗?

go kubernetes client-go

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

如何使用 kubectl 删除网络策略?

我遵循了类似于以下内容的 Kubernetes 教程: https: //kubernetes.io/docs/tasks/administer-cluster/declare-network-policy/,它创建了一些基本的网络策略,如下所示:

root@server:~# kubectl get netpol -n policy-demo
NAME           POD-SELECTOR   AGE
access-nginx   run=nginx      49m
default-deny   <none>         50m
Run Code Online (Sandbox Code Playgroud)

我看到我可以使用“kubectl delete ns policy-demo”之类的命令删除整个命名空间(包括 pod),但如果我只想删除单个策略(或编辑甚至)。

我如何使用 kubectl 删除上面的“access-nginx”策略?

nginx kubernetes kubectl

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

C++ 什么时候通过值传递 const 结构参数与通过引用传递 const 结构参数有意义?

我见过类似的问题,但我想澄清一下......

假设一个基本的 C++ 类:

class MyClass
{
public:
    struct SomeData
    {
        std::wstring name;
        std::vector<int> someValues;
    };

    void DoSomething(const SomeData data);
}
Run Code Online (Sandbox Code Playgroud)

我知道这data将被传递constDoSomething并且这是可以的,因为data函数不会以任何方式修改...但我习惯于看到参数&指定const以确保它们通过引用传递,例如

void DoSomething(const SomeData& data);
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎更有效率。如果我们省略&,那么不是data按值传递给DoSomething?我不确定为什么当const您可以通过引用传递并避免复制发生时,最好按值传递参数?

c++ parameters reference constants

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

C# - 如何编组LPWSTR数组?

我正在尝试编组一个类似于以下内容的c ++结构:

typedef struct _SOME_STRUCT
{
     DWORD count;
     LPWSTR *items;
}
Run Code Online (Sandbox Code Playgroud)

"items"是LPWSTR的数组(确切的数字由"count"表示).在C#中,我将结构表示为:

[StructLayoutAttribute(LayoutKind.Sequential)]
internal struct SOME_STRUCT
{    
     internal uint count;
     internal IntPtr items;
}
Run Code Online (Sandbox Code Playgroud)

然后在我的代码中,我正在做这样的事情(其中mystruct的类型为SOME_STRUCT):

if (mystruct.count > 0)
{
    for (int x = 0; x < mystruct.count; x++)
    {
        IntPtr ptr = new IntPtr(mystruct.items.ToInt64() + IntPtr.Size * x);
        string item = Marshal.PtrToStringAnsi(Marshal.ReadIntPtr(ptr));
    }
}
Run Code Online (Sandbox Code Playgroud)

计数是正确的,但字符串项出现乱码.我确信我必须做一些愚蠢的事情,因为我之前已经使用过其他类型的数组...而不是LPWSTR.

c# arrays string marshalling

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

C# - 订阅ETW活动频道?

我可以使用C#的EventLogReader来检索特定操作通道中记录的所有ETW事件,使用与此页面上的示例类似的代码:

http://msdn.microsoft.com/en-us/library/bb671197(v=vs.90).aspx

我需要做的就是修改logname字符串,而不是指向我感兴趣的操作通道(例如"Microsoft-Windows-RemoteAssistance/Operational"),然后我看到输出到控制台的所有事件.

但是,我必须继续轮询/检查频道以查看是否有任何新事件,这并不理想.每当新事件记录到频道时,我希望找到一种订阅(或以其他方式接收回调/通知)的方法.我确信必须有一种方法可以在回调中接收事件,但我在MSDN上找不到任何明显的东西.

有谁知道如何从C#中做到这一点?

c# events etw subscription subscribe

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