小编Voi*_*tar的帖子

C#:找到合适的对象与使用相结合是否有一个干净的模式?

我想要一个简洁安全的干净/紧凑模式rulesKey,即使抛出某些东西也会妥善处理.这似乎是不可能的using(除非可能4 using秒,但看起来如此冗长并打开额外的资源,我甚至可能不需要打开).让我感到惊讶的是,这在C++中会如此直接/轻松.有一个很好的解决方案吗?

{
    RegistryKey rulesKey = null;
    rulesKey = rulesKey ?? Registry.LocalMachine.OpenSubKey("Software\\Wow6432Node\\Company\\Internal\\Product");
    rulesKey = rulesKey ?? Registry.LocalMachine.OpenSubKey("Software\\Company\\Company\\Internal\\Product");
    rulesKey = rulesKey ?? Registry.LocalMachine.OpenSubKey("Software\\Wow6432Node\\Company\\Product");
    rulesKey = rulesKey ?? Registry.LocalMachine.OpenSubKey("Software\\Company\\Product");

    // Code using rulesKey, might throw

    rulesKey.Close();
}
Run Code Online (Sandbox Code Playgroud)

c# registry using null-coalescing-operator

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

"memcpy"式功能,支持各个位的偏移量?

我正在考虑解决这个问题,但它看起来是一项相当艰巨的任务.如果我自己拿这个,我可能会用几种不同的方式写出并选择最好的,所以我想我会问这个问题,看看是否有一个很好的图书馆可以解决这个问题,或者是否有人有想法/建议.

void OffsetMemCpy(u8* pDest, u8* pSrc, u8 srcBitOffset, size size)
{
    // Or something along these lines. srcBitOffset is 0-7, so the pSrc buffer 
    // needs to be up to one byte longer than it would need to be in memcpy.
    // Maybe explicitly providing the end of the buffer is best.
    // Also note that pSrc has NO alignment assumptions at all.
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序是时间关键的,所以我想以最小的开销来确定这一点.这是困难/复杂性的根源.在我的情况下,块可能非常小,可能是4-12个字节,因此大规模的memcpy东西(例如预取)并不重要.对于随机未对齐的src缓冲区,最好的结果是对于常量'大小'输入最快的长度,在4到12之间.

  • 应尽可能将内存移动到字大小的块中
  • 这些字大小的块的对齐很重要.pSrc是未对齐的,因此我们可能需要从前面读取几个字节,直到它对齐为止.

任何人拥有或知道类似实施的东西?或者有人想要写这篇文章,让它尽可能干净和高效吗?

编辑:似乎人们对"过于宽泛"的投票表示"接近".一些缩小的细节将是AMD64的首选架构,所以我们假设.这意味着小端等等.实现有望完全符合答案的大小,所以我不认为这太宽泛了.即使有一些方法,我也会一次要求单个实现的答案.

c c++ optimization bit-manipulation memcpy

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

有什么可以一般地反转 C++ 比较器类型的吗?

例如,如果我传入std::less,我希望它创建一个行为等于 的新比较器std::greater。用于模板。

可以启用类似语法std::map<int, int, std::invert<std::less>>的东西(除非我正在寻找的东西存在,那不是它的名字)。这存在吗?

c++ templates comparator c++-standard-library

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

此接口是否已存在于标准.NET库中?

我发现自己需要一个简单的通用接口,我写了它,但结果却是世界上最简单的接口.我想知道它是否已经存在其他名称.我只是想确保我不会重新发明已经包含在.NET框架中的东西.

interface IReceiver<T>
{
   void Receive(T obj);
}
Run Code Online (Sandbox Code Playgroud)

我无法找到.NET附带的"标准"接口的良好列表.这个界面的结构对任何人来说都很熟悉吗?我是否重新设计了已经标准的东西?

编辑:我有一个数据对象和许多对接收数据感兴趣的对象.对接收数据感兴趣的对象实现接口,因此"路由"列表和映射可以将数据发送给它们.这个想法是在路由中完全概括,路由将是数据驱动的.

.net c# interface

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

如果长度恰好为1,我怎样才能获得IEnumerable的第一个值,否则默认值为默认值?

我想要类似的东西IEnumerable.FirstOrDefault,但我希望返回默认值length != 1.有点像v.Count() == 1 ? v[0] : default.但我更愿意在不将整个枚举转换为数组的情况下完成它.获得此行为的最佳方法是什么?

c# linq generics ienumerable extension-methods

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

std :: chrono :: duration可以用秒(而不是毫秒)初始化吗?

作品: std::chrono::duration<unsigned long long> test1 = std::chrono::seconds(1);

不起作用: std::chrono::duration<unsigned long long> test2 = std::chrono::milliseconds(1);

为什么会有所不同?持续时间内部没有足够的粒度吗?

从毫秒值初始化持续时间的首选方法是什么?

c++ std c++-chrono

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

Powershell:从每个写入的文件中剥离ReadOnly时复制文件

我想要一个复制例程,它接受可能的只读文件,但复制的目标文件总是不是只读的.问题是知道写入文件的路径,以便将其更改为不可读.我不小心碰到一个没有被这个复制例程移动的文件,所以我不能只读取目标路径下的所有内容.我是否真的自己重建了每个写入的文件路径,所以我可以在其上调用set-itemproperty?

是否有任何干净的方法来实现像Copy-Item-StripReadOnly"F:\*""G:\"这样的函数,这样就不会有任何写入G的内容与readonly一起出现,而其余的G:\没有被触及?

powershell

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