在这个奇怪的例子中,有人创建了一个新类型,它实际上只是一个字符串:
type CustomType string
const (
Foobar CustomType = "somestring"
)
func SomeFunction() string {
return Foobar
}
Run Code Online (Sandbox Code Playgroud)
但是,此代码无法编译:
不能在返回参数中使用Foobar(类型CustomType)作为类型字符串
你如何修复SomeFunction,以便它能够返回Foobar("somestring")的字符串值?
我见过很多伟大的C#示例其中演示了如何在CIDR标记提供的IPv4地址转换(如192.168.0.1/25)到他们的相关范围(192.168.0.1 - 192.168.0.126).我的程序需要能够这样做(计算我本地子网中的所有地址),但我也想支持IPv6.
如果我的C#程序有我所有的典型IPCONFIG信息(IPv4地址,子网掩码,IPv6地址,链路本地V6地址,默认网关) - 我怎么会去生成所有IPv6的列表在我的本地子网地址,将它们输出到控制台?
假设我有一个字符串:
$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不再匹配正则表达式模式.如何使模式匹配两种格式的字符串?(即我应该总是有一个"第一"和"第二"匹配,如果提供的话,只有一个"第三"匹配).
在C#中,假设您有一个表示为字符串值的IP地址范围:
"192.168.1.1-192.168.2.30"
并且您还有一个表示为字符串值的IP地址,如:
"192.168.1.150"
确定地址范围是否包含单个IP地址的最优雅方法是什么?
在 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 的示例。但我有一些关于如何最好地使这个例子适应我的需要的问题......
我不知道能够“Get()”它的 pod 的确切/全名,这就是为什么“kubectl wait”是完美的,因为它允许我使用选择器找到 pod。我认为我应该使用 client-go 库来执行 CoreV1().Pods().List() 调用而不是 Get() 以便允许我使用选择器找到我想要的 pod?
此外,pod 可能不会立即存在,可能仅在 1 分钟左右后创建,这是“kubectl wait”为我处理的。在代码中,我是否需要循环/睡眠并继续执行 List() 直到 pod 存在?
与 #2 类似的问题...一旦 List() 返回 pod 名称,golang 中“等待”该 pod 处于“就绪”状态的最佳方法是什么?如果可以避免的话,我不想对睡眠进行任何丑陋的民意调查......那么有没有更好的选择使用 golang 'wait' 包或类似的?你有什么建议吗?
我遵循了类似于以下内容的 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”策略?
我见过类似的问题,但我想澄清一下......
假设一个基本的 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将被传递const到DoSomething并且这是可以的,因为data函数不会以任何方式修改...但我习惯于看到参数&指定const以确保它们通过引用传递,例如
void DoSomething(const SomeData& data);
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎更有效率。如果我们省略&,那么不是data按值传递给DoSomething?我不确定为什么当const您可以通过引用传递并避免复制发生时,最好按值传递参数?
我正在尝试编组一个类似于以下内容的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#的EventLogReader来检索特定操作通道中记录的所有ETW事件,使用与此页面上的示例类似的代码:
http://msdn.microsoft.com/en-us/library/bb671197(v=vs.90).aspx
我需要做的就是修改logname字符串,而不是指向我感兴趣的操作通道(例如"Microsoft-Windows-RemoteAssistance/Operational"),然后我看到输出到控制台的所有事件.
但是,我必须继续轮询/检查频道以查看是否有任何新事件,这并不理想.每当新事件记录到频道时,我希望找到一种订阅(或以其他方式接收回调/通知)的方法.我确信必须有一种方法可以在回调中接收事件,但我在MSDN上找不到任何明显的东西.
有谁知道如何从C#中做到这一点?
c# ×4
string ×3
go ×2
kubernetes ×2
arrays ×1
c++ ×1
client-go ×1
constants ×1
contains ×1
etw ×1
events ×1
ip-address ×1
ipv6 ×1
kubectl ×1
marshalling ×1
nginx ×1
optional ×1
parameters ×1
powershell ×1
range ×1
reference ×1
regex ×1
subnet ×1
subscribe ×1
subscription ×1