Tag: 语言不可知的

线性时间投票algorithm。 我不明白

当我正在阅读( find数组中最常见的条目 )时,提出了Boyer和Moore的线性时间投票algorithm 。 如果您按照该网站的链接,则可以逐步解释algorithm的工作原理。 对于给定的序列, AAACCBBCCCBCC它提出了正确的解决scheme。 当我们将指针向前移动一个元素e: 如果计数器为0,我们将当前候选人设置为e,并将计数器设置为1。 如果计数器不是0,则根据e是否是当前候选者来递增或递减计数器。 当我们完成时,如果有多数,当前候选人是多数。 如果我在AAACCBB作为input的一张纸上使用这个algorithm, 那么build议的候选人将变成B ,显然是错的。 正如我所看到的,有两种可能性 作者从来没有在AAACCBBCCCBCC以外的任何其他algorithm上尝试过他们的algorithm,完全是无能的,应该当场解雇(疑问) 。 我明显错过了一些东西 ,必须禁止从Stackoverflow,并再也不允许触摸任何涉及逻辑。 注意:下面是Niek Sanders algorithm的一个C ++实现 。 我相信他正确地实现了这个想法,因此它也有同样的问题(或不是吗?)。

按位XOR(异或)是什么意思?

我试图理解二进制运算符在C#或一般,特别是^ – 排他或 。 例如: 给定一组正整数。 所有的数字偶数次出现,除了一个奇数次的数字。 在O(n)时间和恒定的空间find数字。 这可以用^完成,如下所示:对所有元素进行按位异或操作。 最后我们得到奇数的数字。 它是如何工作的? 当我做: int res = 2 ^ 3; res = 1; int res = 2 ^ 5; res = 7; int res = 2 ^ 10; res = 8; 实际上发生了什么? 什么是其他的魔法? 任何参考我可以查阅和了解更多关于他们?

编写爱好项目的规范是他们完成的唯一途径吗?

这是我想知道的。 我们3个月大的婴儿每天晚上都让我们睡觉,然后跳到我的电脑,开始编写我的爱好项目。 我有大约20个不同types的项目,从C ++游戏到Web应用程序,还有一些对开源项目的贡献。 这是一个真正的激情,已经很多年了。 然而,当我回头看时,我发现我没能完全完成我的一个爱好项目。 我一直在做原型和设置最重要的function,但随着时间的推移,而不是完成我的项目,我最终转向另一个似乎“如此之冷”的项目。 因此,我通常最终得到的是没有结局和故事的错误游戏和不完整的游戏,具有最快的PolygonDraw例程的3D引擎,但是没有实现其他任何东西等等。列表很长。 我觉得我必须写出未完成的乒乓球超过一百倍! 我被告知,补救措施是为我的爱好项目编写规范。 一方面,我写了很多规范在工作。 我知道他们是如何定义产品的路线图,并保持在计划中。 另一方面,规格和爱好项目似乎不太合适! 在我看来,构build游戏的学习曲线实际上是让游戏变得有趣的。 不是游戏本身。 因此,失去重构整个引擎的乐趣,创造最无用function的乐趣,等等… 所以问题来了:你有没有为你的爱好项目编写规范? 那么他们和那些下class的人有什么不同呢? 你如何设法完成你的爱好项目? 我会很高兴知道,当我在我的新项目上工作:钢琴奏鸣曲发电机:)

开始TDD – 挑战? 解决scheme? build议?

好吧,我知道现在已经有关于TDD入门的问题了。但是,我想我知道总体的共识就是这样做 ,但是我的头脑似乎还有以下问题: 在使用集合时,即使基于generics等,我们仍然“知道”它的工作方式,仍然会testing是否显示成功添加/删除/插入。 有些testing似乎需要永远的执行..比如在使用string输出的时候,是否有一种“更好”的方式来处理这种事情呢? (例如,在parsing之前testing对象模型,将parsing分解成小操作并在那里testing)在我看来,你应该总是testing“最终结果”,但是这可能会变化很大并且很难设置。 我没有一个testing框架来使用(工作不会支付一个),所以我可以“实践”更多。 有没有免费的商业用途? (此刻我正在使用良好的'ol Debug.Assert 🙂 可能是最大的..有时我不知道该怎么想不会发生..我的意思是,你得到你的绿灯,但我总是担心,我可能会错过一个testing..你挖深入尝试打破代码,或保持它,等待它所有后来(这将花费更多)。 所以基本上我在这里寻找的不是一个“ 只是做 ”,而是更多的“ 我做了这个,有这个问题,通过这个解决了他们 ”.. 个人经验:)

什么时候不应该使用Singleton模式? (除了显而易见的)

我很清楚你想使用Singleton来提供对某个状态或服务的全局访问权限。 Singleton模式的好处不需要列举在这个问题中。 我感兴趣的是辛格尔顿看起来像是一个不错的select,但可能会回来咬你。 一次又一次,我看到书籍和海报上的作者都说Singleton模式通常是一个非常糟糕的主意。 “四人帮”指出,在下列情况下你会想要使用Singleton: 必须只有一个类的实例,并且必须可以从知名接入点访问客户端。 当唯一的实例应该通过子类来扩展时,客户端应该能够使用扩展实例而不修改它们的代码。 这些观点虽然值得注意,但并不是我所追求的实际观点。 有没有人有一套规则或警告,你用来评估你是否真的,真的确定你想使用单身?

在并发编程的情况下,“数据种族”和“竞争条件”是否是同一事物?

我经常发现这些术语在并发编程的环境中使用。 他们是相同的还是不同的?

事件处理程序和callback之间的区别

事件处理程序和callback函数有什么区别?

“这个应用程序要求运行时以不寻常的方式终止它”的原因是什么?

有一个常见的错误是由Visual C运行时抛出: 这个应用程序已经请求运行时以不寻常的方式终止它。 请联系应用程序的支持团队获取更多信息。 这个错误信息实际上是什么意思 ? 让我用一个比喻来解释我正在问什么。 如果我看到一条消息: exception:访问冲突(0xc0000005),地址0x702be865 这种访问违规与性骚扰或者试图闯入我的计算机的人无关(不是一般失败是一个准将读我的C驱动程序的准将,或者你可能被拖入监狱执行在Windows 95中的非法操作)。 在这种情况下, 访问冲突对应于常量EXCEPTION_ACCESS_VIOLATION (在winbase.h声明,值为0xC0000005)。 这是一个可能的exception错误代码,可以在EXCEPTION_RECORD结构中返回。 代码ACCESS_VIOLATION意味着程序试图读取或写入内存中不应该存在的地址。 如果你试图从一个从未被分配过的内存地址读取数据,那么你正在做一些非常糟糕的事情 – 而这个例外告诉你。 当程序有一个指向内存的指针时, 通常是不是或者不再是有效的。 解决scheme是停止尝试访问无效的内存。 注意 :我不是问: 为什么程序x得到C0000005错误? 为什么我的代码获取访问冲突? 如何debugging访问冲突? 所以,如果我问你什么原因导致访问冲突 ,你不会告诉我检查堆栈跟踪,或者观察输出窗口,或者发布示例代码。 你会说: “试图访问无效的内存”。 回到我的问题。 以下错误是什么意思: 该应用程序已经请求运行时以不寻常的方式终止。 我(相当)确定Microsoft Visual C运行时库没有函数: void TerminateRuntime(bool UnusualWay); 所以我必须弄清楚它实际上是什么意思: 终止 visual C运行库是什么意思? (msvcrt是一个dll,你不会终止它,你只是不再使用它) 什么是终止MSVCRT 通常的方法? 有人会select以不寻常的方式终止它吗? 是不是今天的不寻常的方式,实际上是过去常用的方式? 如果我(错误地)以一种不寻常的方式终止它,我会怎样做才能以通常的方式终止它? 换句话说:什么错误是MSVCRT捕捉,隐藏在无形的错误信息后面?

计算下一次执行cron作业的时间

我有一个cron“时间定义” 1 * * * * (every hour at xx:01) 2 5 * * * (every day at 05:02) 0 4 3 * * (every third day of the month at 04:00) * 2 * * 5 (every minute between 02:00 and 02:59 on fridays) 我有一个unix时间戳。 有没有一种明显的方法来find(计算)下一次(在给定的时间戳之后)作业是否将被执行? 我正在使用PHP,但问题应该是相当语言不可知的。 [更新] “ PHP Cron Parser ”类(由Raybuild议)计算CRON作业应该执行的最后时间,而不是下一次。 为了更容易:在我的情况下,cron时间参数只是绝对的,单个数字或“*”。 […]

在一个未sorting的数组中查找2个数字等于给定的总和

我们需要在一个数组中find一对数字,其总和等于一个给定的数值。 A = {6,4,5,7,9,1,2} Sum = 10然后这些对是 – {6,4},{9,1} 我有两个解决scheme。 一个O(nlogn)解决scheme – 对2个迭代器(开始和结束)进行sorting+校验和。 一个O(n)解决scheme – 哈希arrays。 然后检查sum-hash[i]是否存在sum-hash[i] 。 但问题是,虽然第二个解决scheme是O(n)时间,但也使用O(n)空间。 所以,我想知道是否可以在O(n)时间和O(1)空间中做到这一点。 这不是功课!