我已经读过,当哈希密码,许多程序员推荐使用BCryptalgorithm。 我在C#编程,想知道是否有人知道BCrypt的一个很好的实现? 我find了这个页面 ,但是我真的不知道它是否是假的。 select密码散列scheme时应该注意什么? BCrypt是一个“好”的实现?
信号量和自旋锁之间的基本区别是什么? 我们什么时候使用旋转locking的信号?
我有一个多个类,每个都有不同的成员variables,在构造函数中被初始化。 这里是一个例子: struct Person { Person(const char *name, int age) : name(name), age(age) { } private: const char *name; int age; }; 每个都有一个关联的print<>()函数。 template <> void print<Person>(const Person &person) { std::cout << "name=" << name << "\n"; std::cout << "age=" << age << "\n"; } 这个代码很容易出错,因为参数列表被复制到四个地方。 如何重写代码以避免重复? 我想使用预处理器和/或模板。 例如,我可以使用X-args预处理器技术 – 像这样? #define ARGUMENTS \ ARG(const […]
我正在写这样的代码,做一些快速和肮脏的时间: var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 1000; i++) { b = DoStuff(s); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); 当然,有一种方法可以把这个时间代码称为一个奇怪的.NET 3.0 lambda,而不是(上帝禁止)剪切和粘贴它几次,并用DoSomethingElse(s)代替DoStuff(s) ? 我知道这可以作为Delegate完成,但我想知道lambda的方式。
有人知道一个全function的C ++重构工具,可以与大型代码库(大约100.000行)可靠地工作吗? 在过去的几年中,我尝试了一次又一次的寻找:SlickEdit,Eclipse CDT。 他们都没有用。 总结 :我花时间评估了“Visual Assist X”以及“C ++重构”。 两者都有一些令人印象深刻的特征,但都不是很完美。 如果不进行手动修改,提取大块代码通常是不会令人满意的,因此不会付账。 “视觉辅助X”具有很好的function,比如更完整的自动补偿等等。但是它会导致太多的闪烁,并在某些点上变慢。 因此,我认为答案是:“不,C ++没有生产就绪的重构工具” UPDATE 2015年3月至于hdoghmens回复今天我试过Resharper的C + +。 他的链接https://www.jetbrains.com/resharper/并没有提到有关C ++的任何信息。 但是我发现一年多以前宣布的Resharper C ++在这里: https://www.jetbrains.com/resharper/features/cpp.html 我使用20MB的代码基于VC2010试了一下。 testing1:提取方法:导致Resharperexception。 没有源代码改变。 testing2:不同来源的提取方法:工作正常 testing3:改变提取function的签名:结果在破碎的C ++代码: bool myclass::do_work123(<unknown long Color>int& Filled*&, long, int&) 也许这就是为什么C ++没有在主页上列出。 我认为这个问题的答案仍然是“否” 。
我是一个networking游戏开发者,我遇到了一个随机数的问题。 假设一名玩家有20%的几率用他的剑命中。 这意味着,五分之一的命中应该是至关重要的。 问题是我得到了非常糟糕的现实生活中的结果 – 有时玩家会在5次命中中得到3次暴击,有时候15次都没有。 战斗时间相当短(3-10次),所以获得良好的随机分配很重要。 目前我使用PHP mt_rand() ,但是我们只是把我们的代码移到C ++中,所以我想在我们游戏的新引擎中解决这个问题。 我不知道解决scheme是一些统一的随机生成器,或者也许记住以前的随机状态来强制适当的分配。
你能向我解释一下吗? 什么是谓语代表? 我们应该在哪里使用谓词? 任何使用谓词的最佳实践? 描述性的源代码将不胜感激, 感谢所有答复!
我们需要在C中实现一个简单的状态机。 标准的switch语句是最好的方法吗? 我们有一个现状(州)和过渡的触发器。 switch(state) { case STATE_1: state = DoState1(transition); break; case STATE_2: state = DoState2(transition); break; } … DoState2(int transition) { // Do State Work … if(transition == FROM_STATE_2) { // New state when doing STATE 2 -> STATE 2 } if(transition == FROM_STATE_1) { // New State when moving STATE 1 -> STATE […]
我有一个大的C#解决scheme文件(~100个项目),我正在努力提高生成时间。 我认为“复制本地”在许多情况下对我们来说是浪费的,但我想知道最佳实践。 在我们的.sln中,取决于程序集B的应用程序A取决于程序集C.在我们的例子中,有几十个“B”和一些“C”。 由于这些都包含在.sln中,我们正在使用项目引用。 所有程序集目前都build立到$(SolutionDir)/ Debug(或Release)。 默认情况下,Visual Studio将这些项目引用标记为“Copy Local”,导致每构build一个“B”,每个“C”被复制到$(SolutionDir)/ Debug中一次。 这似乎是浪费。 如果我只是closures“复制本地”,会出现什么问题? 其他大系统的人做什么? 跟进: 很多的反应表明把构build分解成更小的.sln文件…在上面的例子中,我将首先构build基础类“C”,然后是大部分模块“B”,然后是一些应用程序“一个”。 在这个模型中,我需要从B引用非项目引用。我遇到的问题是“debugging”或“释放”被烘焙到提示path中,并且构build了“B”版本的Release版本。针对“C”的debugging版本。 对于那些将构build分解成多个.sln文件的人,你如何解决这个问题?
似乎很多项目慢慢需要做matrix运算,陷入了先构build一些向量类并慢慢增加function的陷阱,直到被抓住build立一个半自定义的线性代数库,并依赖于它。 我想避免这种情况,而不是build立在一些切线相关的库(例如OpenCV,OpenSceneGraph)上。 那里常用的matrixmath/线性代数库是什么,为什么会决定使用另一个呢? 有什么会因为某种原因被build议不要使用? 我特别在几何/时间上下文*(2,3,4 Dim)*中使用它,但将来可能会使用更高维的数据。 我正在寻找关于API,速度,内存使用,宽度/完整性,狭窄/特定性,可扩展性和/或成熟度/稳定性的差异。 更新 我结束了使用Eigen3,我非常满意。