Tag: C#的

为什么a =(a + b) – (b = a)是交换两个整数的不好的select?

我偶然发现了这个代码,用于交换两个整数而不使用临时variables或使用按位运算符。 int main(){ int a=2,b=3; printf("a=%d,b=%d",a,b); a=(a+b)-(b=a); printf("\na=%d,b=%d",a,b); return 0; } 但是我认为这个代码在交换语句a = (a+b) – (b=a);有未定义的行为a = (a+b) – (b=a); 因为它不包含任何序列点来确定评估的顺序。 我的问题是: 这是一个可接受的解决scheme交换两个整数?

如何计算反弹angular度?

我玩了一段时间,但我根本无法弄清楚。 我制造了一个能发射导弹的坦克,当导弹击中墙壁时,我希望它们反弹,但我希望它们反弹到正确的angular度。 现在我没有任何障碍,导弹刚从我做的viewportRectangle外面反弹viewportRectangle 。 我正在寻找相当先进的解决scheme吗? 有一个相对简单的方法来做到这一点?

Python比Java / C#更慢吗?

Python比Java / C#更慢吗? 性能比较-C-java的蟒-rubyJython的JRuby的常规 这是一个优化CPython的项目: unladen-swallow

访问StackExchange.Redis时发生死锁

调用StackExchange.Redis时遇到了死锁情况。 我不知道到底发生了什么,这是非常令人沮丧的,我将不胜感激任何有助于解决或解决此问题的意见。 如果你也有这个问题,不想阅读所有这些; 我build议您尝试将PreserveAsyncOrder设置为false 。 ConnectionMultiplexer connection = …; connection.PreserveAsyncOrder = false; 这样做可能会解决这个Q&A的僵局,也可能会提高性能。 我们的设置 代码作为控制台应用程序或Azure工作者angular色运行。 它使用HttpMessageHandler公开REST API,因此入口点是asynchronous的。 代码的某些部分具有线程关联(属于并且必须由单个线程运行)。 代码的某些部分是仅asynchronous的。 我们正在进行asynchronous同步和asynchronous同步反模式。 (混合await和Wait() / Result )。 访问Redis时,我们只使用asynchronous方法。 我们使用.NET 4.5的StackExchange.Redis 1.0.450。 僵局 当应用程序/服务启动后,它会正常运行一段时间,然后突然(几乎)所有传入请求停止运行,它们从不产生响应。 所有这些请求都被locking,等待Redis的调用完成。 有趣的是,一旦发生死锁,任何对Redis的调用都将挂起,但前提是这些调用是通过在线程池中运行的传入API请求进行的。 我们还从低优先级后台线程调用Redis,并且这些调用即使在发生死锁后也能继续工作。 看起来,只有在线程池线程中调用Redis时才会发生死锁。 我不再认为这是由于这些调用是在线程池线程上进行的。 相反,任何asynchronousRedis调用没有延续,或者同步安全继续,即使在死锁情况发生后,它仍然可以继续工作。 (请参阅下面的内容) 有关 StackExchange.Redis死锁 混合引起的死锁await和Task.Result (同步asynchronous,就像我们一样)。 但是我们的代码运行时没有同步上下文,所以在这里不适用,对吧? 如何安全地混合同步和asynchronous代码? 是的,我们不应该这样做。 但是我们这样做了,我们将不得不继续这样做一段时间。 很多需要迁移到asynchronous世界的代码。 同样,我们没有同步上下文,所以这不应该造成死锁,对吧? 在任何await之前设置ConfigureAwait(false)对此没有影响。 async命令和Task.WhenAny在StackExchange.Redis中等待之后的超时exception 这是线程劫持问题。 目前情况如何? 这可能是这里的问题吗? StackExchange.Redisasynchronous调用挂起 从Marc的回答: 混合等待,等待不是一个好主意。 […]

为什么我的一系列结构占用了太多的内存?

问题: Micro Framework如何为结构数组分配内存? 带有代码复制的BitBucket存储库 。 上下文和细节 我正在使用一个固定大小的arrays来插入延迟来处理来自USB键盘的按键。 我正在使用一个struct来表示关键的向上和向下事件和延迟。 public struct QueuedEvent { public readonly EventType Type; // Byte public readonly byte KeyPressed; public readonly TinyTimeSpan Delay; // Int16 public readonly static QueuedEvent Empty = new QueuedEvent(); } public enum EventType : byte { None = 0, Delay = 1, KeyDown = 2, KeyUp = 3, […]

如何“获取”和“消费”的记忆命令不同,什么时候“消费”更可取?

C ++ 11标准定义了一个包含内存顺序的内存模型(1.7,1.10),这些顺序大体上是“顺序一致”,“获取”,“消耗”,“释放”和“放松”。 同样粗略地说,一个程序只有在没有竞争的情况下才是正确的,如果所有的行为都可以按照一个行为发生的顺序进行,那么就发生在另一个行为之前 。 一个动作X发生的方式 – 在一个动作Y 之前 ,要么是X在Y之前(在一个线程之内)被sorting,要么在X之前发生X之间的线程 。 后者的条件是什么时候给出的 X与Y同步,或 X在Y之前是依赖项sorting的。 当X是一个primefaces存储,在某些primefacesvariables上有“释放”顺序,而Y是一个在同一个variables上具有“获取”顺序的primefaces载入时,会发生同步 。 依赖性sorting – 之前发生的是类似的情况,其中Y是加载“消费”sorting(和适当的内存访问)。 同步概念扩展了前后关系,在一个线程内彼此在一个线程之间传递,而在另一个线程之前,只是通过一个被严格子集的sequenced-before被调用的进位依赖 ,遵循一套较大的规则,特别是可以用std::kill_dependency中断。 那么,“依赖sorting”这个概念的目的是什么呢? 它提供了什么优势比简单的顺序 / 同步 – 与sorting? 由于规则更严格,我认为可以更有效地实施。 你能举一个例子,从释放/获取到释放/消耗的切换是正确的,并提供了一个不平凡的优势? 何时将std::kill_dependency提供改进? 高级别的参数会很好,但是硬件特定差异的奖励点。

为什么没有std :: stou?

C ++ 11增加了一些新的string转换函数: http://en.cppreference.com/w/cpp/string/basic_string/stoul 它包括stoi(string到int),stol(string到long),stoll(string到long long),stoul(string到unsigned long),stoull(string到unsigned long long)。 值得注意的是stou(string to unsigned)函数。 有没有其他的理由,但其他的都是? 相关: 在C ++ 11中没有“sto {short,unsigned short}”函数?

新增和删除在C ++ 14中仍然有用吗?

鉴于make_unique和make_shared可用性,以及unique_ptr和shared_ptr析构函数的自动删除,在C ++ 14中使用new和delete的情况是什么(除了支持遗留代码)呢?

ASP.NET MVC的最佳存储库模式

我最近学习ASP.NET MVC(我喜欢它)。 我正在与一家公司使用dependency injection来加载每个请求中的存储库实例,我熟悉使用该存储库。 但是现在我正在写一些我自己的MVC应用程序。 我并不完全了解我公司使用的存储库的方式和原因,我正在试图确定实现数据访问的最佳方法。 我正在使用C#和entity framework(与所有最新版本)。 我看到了三种处理数据访问的一般方法。 每次访问数据时,使用语句中的常规数据库上下文。 这很简单,它工作正常。 但是,如果两个位置需要在一个请求中读取相同的数据,则必须读取两次数据。 (每个请求使用一个存储库,两个地方都使用相同的实例,我知道第二次读取只是从第一次读取返回数据。) 典型的存储库模式 。 由于我不明白的原因,这个典型的模式涉及到为数据库中使用的每个表创build一个包装类。 这对我来说似乎是错误的。 实际上,由于它们也是作为接口来实现的,所以在技术上我会为每个表创build两个包装类。 EF为我创build表格。 我不相信这种方法是有道理的。 还有一个通用的存储库模式 ,其中创build单个存储库类来为所有实体对象提供服务。 这对我来说更有意义。 但是对别人有意义吗? 链接是否是最好的方法? 我很想得到这个话题的其他人的意见。 你正在编写自己的存储库,使用上述之一,或完全不同的东西。 请分享。

我怎样才能build立一个C + +项目与多个相互依存的子目录?

我有一个C ++项目,我用目录作为更多的组织元素 – 可以使用Java中的包或PHP中的目录。 目录并不是要成为自给自足的元素,而只是组织整个项目的一种方式,不让我被来源所压倒。 我怎样才能构build我的CMakeLists.txt文件来处理这个? 制作目录库在这里似乎不太合适,因为它们都是相互依赖的,并不打算以这种方式使用。 作为一个相关的问题,我见过的CMake中的多个子目录的大多数例子(并不是很多)忽略或掩盖了设置include_directories的问题,这是我一直遇到的问题。 短的梳理我的源文件,以确定哪个文件取决于哪个和哪个目录,有没有办法将/src/下的所有目录设置为潜在的包括目录,并让CMake确定哪些是实际依赖? 这是一个示例结构: –src –top1 –mid1 –bot1 –src1.cpp –hdr1.h –bot2 –src2.cpp –hdr2.h –mid2 –bot3 –src3.cpp –src4.cpp –hdr3.h –top2 –mid3 –src5.cpp –hdr4.h 等等等等。 我怎样才能构build我的CMakeLists.txt文件来处理这种结构?