Questions tagged «language-agnostic»

将此标签用于独立于任何特定编程语言的编程问题。

4
有人实际上有效地实施了斐波那契堆吗?
你们中有没有人实施过斐波那契堆?几年前,我这样做了,但是比使用基于数组的BinHeaps要慢几个数量级。 那时,我认为这是一门宝贵的课程,说明研究并不总是像它声称的那样好。但是,许多研究论文声称其算法基于使用斐波那契堆的运行时间。 您是否曾经设法产生有效的实施方案?还是您使用的数据集如此之大,以至于斐波那契堆更有效?如果是这样,一些细节将不胜感激。

9
把猫扔出窗户
想象一下,您在猫的高楼大厦中。猫可以从低矮的窗户掉下来,但如果从高处摔落会死。您如何用最少的尝试次数找出猫可以存活的最长下落? 显然,如果您只有一只猫,则只能进行线性搜索。首先从一楼扔猫。如果它仍然存在,请从第二个开始扔掉。最终,从地板f掉下来的猫会死。然后,您知道f-1楼是最大安全楼。 但是,如果您有不止一只猫怎么办?现在,您可以尝试某种对数搜索。假设该建筑物有100层,而您有两只相同的猫。如果您将第一只猫扔出50层而死,那么您只需线性搜索50层。如果您第一次尝试选择较低的楼层,您甚至可以做得更好。假设您选择一次解决20层楼的问题,而第一个致命楼层是#50。在这种情况下,您的第一只猫将在20和40楼的飞行中幸存下来,然后从60楼死亡。您只需要分别检查41到49楼。总共进行了12次尝试,这比尝试使用二进制消除法所需的50次尝试要好得多。 通常,对于带有2只猫的n层建筑物,什么是最佳策略,哪一种是最坏情况的复杂性?n层和m只猫怎么办? 假设所有猫都是同等的:它们都将存活或死于从给定窗户掉落的猫。同样,每一次尝试都是独立的:如果一只猫摔倒幸存下来,那就完全没有伤害了。 这不是家庭作业,尽管我可能已经解决了一次学校作业。今天,这只是一个异想天开的问题,我不记得了。如果有人知道此问题或解决方案算法的名称,则奖励积分。


30
最喜欢的(聪明的)防御性编程最佳实践
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 如果您必须选择最喜欢的(聪明的)技术进行防御性编码,它们将是什么?尽管我当前使用的语言是Java和Objective-C(具有C ++背景),但是可以使用任何语言进行回答。除了我们这里70%以上的人已经知道的防御技术外,这里还将重点介绍巧妙的防御技术。因此,现在该深入了解您的绝招了。 换句话说,除了这个无趣的示例,请尝试思考其他问题: if(5 == x) 代替 if(x == 5):避免意外分配 以下是一些有趣的最佳防御性编程实践的示例(特定于语言的示例在Java中): -锁定变量,直到您知道需要更改它们为止 也就是说,您可以声明所有变量,final直到知道需要进行更改为止,此时可以删除final。一个普遍未知的事实是,这对于方法参数也有效: public void foo(final int arg) { /* Stuff Here */ } -发生不良情况时,请留下大量证据 发生异常时,您可以执行许多操作:显然,将其记录下来并执行一些清理工作只是其中的一部分。但是您也可以留下一些证据(例如,在调试器中将变量设置为“ UNABLE TO LOAD FILE”或99999等哨兵值将很有用,以防您碰巧遇到异常catch-block)。 -关于一致性:细节决定成败 与您正在使用的其他库保持一致。例如,在Java中,如果要创建一种提取一系列值的方法,则将下限包括在内,将上限值排除在外。这将使其与String.substring(start, end)以相同方式运行的方法保持一致。在Sun JDK中,您会发现所有这些类型的方法都具有这种行为,因为它会进行各种操作,包括与数组一致的元素迭代,其中索引的范围是从零(包括)到数组的长度(不包括)。 那么,您最喜欢的防御方法是什么? 更新:如果您还没有的话,请随时鸣叫。在选择正式答案之前,我有机会获得更多回应。

30
“解析”的反义词是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我有一个函数parseQuery,它将SQL查询解析为该查询的抽象表示。 我将要编写一个函数,该函数采用查询的抽象表示形式并返回SQL查询字符串。 我应该怎么称呼第二个功能?

6
私人与受保护-可见性良好做法关注
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我一直在寻找,我知道理论上的区别。 public-任何类/函数都可以访问该方法/属性。 protected-仅此类和任何子类可以访问该方法/属性。 私有 -只有此类可以访问方法/属性。它甚至不会被继承。 很好,问题是,它们之间的实际区别是什么?什么private时候使用protected?什么时候使用?在这方面是否有标准或可接受的良好实践? 到目前为止,为了保留继承和多态的概念,我使用public应从外部访问的所有内容(例如构造函数和主类功能),以及protected内部方法(逻辑,辅助方法等)。我在正确的轨道上吗? (请注意,这个问题是给我的,但也供将来参考,因为我还没有看到像这样的问题)。

8
Amazon Recommendation功能如何工作?
亚马逊推荐技术的屏幕背后是什么技术?我认为,亚马逊的推荐目前是市场上最好的,但是它们如何为我们提供这样的相关推荐呢? 最近,我们参与了类似的推荐类项目,但是肯定希望从技术角度了解Amazon推荐技术的来龙去脉。 任何输入将不胜感激。 更新: 该专利说明了如何进行个性化推荐,但这不是技术性的问题,因此,如果可以提供一些见解,那将是非常好的。 根据Dave的评论,亲和力分析构成了此类推荐引擎的基础。另外,这里还有一些有关该主题的好读物 揭秘市场篮子分析 市场篮分析 亲和力分析 建议阅读: 数据挖掘:概念和技术

12
是否有任何语言具有一元布尔切换运算符?
因此,这更多是一个理论问题。C ++和直接基于它的语言(Java,C#,PHP)具有快捷方式运算符,用于将大多数二进制运算符的结果分配给第一个操作数,例如 a += 3; // for a = a + 3 a *= 3; // for a = a * 3; a <<= 3; // for a = a << 3; 但是当我想切换一个布尔表达式时,我总是发现自己在写类似 a = !a; 当a一个长表达式像时,这会很烦人。 this.dataSource.trackedObject.currentValue.booleanFlag = !this.dataSource.trackedObject.currentValue.booleanFlag; (是的,我知道得墨meter耳定律)。 所以我想知道,有没有用一元布尔切换操作员的语言,让我来简化a = !a而不需要重复表达的a,例如 !=a; // or a!!; 假设我们的语言具有适当的布尔类型(如boolC ++),a并且具有该类型(因此没有C样式int …

10
设计模式:抽象工厂与工厂方法
注意:问题在帖子末尾。 我已经阅读了有关Abstract Factory vs Factory Method的其他stackoverflow线程。我了解每种模式的意图。但是,我对该定义不清楚。 Factory Method定义了一个用于创建对象的接口,但是让子类决定要实例化的对象。工厂方法使类将实例化延迟到子类。 相比之下,抽象工厂提供了一个接口,用于创建相关或相关对象的族,而无需指定其具体类。 - 约翰·费米内拉 该抽象工厂看起来非常相似的工厂方法。我画了一些UML类来说明我的观点。 注意: 该图来自www.yuml.com,因此它们的方向不完全正确。但它是免费的服务:)。 这些图可能并不完美。我仍在学习GoF设计模式。 工厂方法: 抽象工厂(仅1个成员): 抽象工厂(更多成员): 问题: 如果抽象工厂只有一个创作者和一个产品,那么它仍然是抽象工厂模式吗?(用于创建家族的界面) 可以从接口创建Factory Method具体创建器,还是必须从类创建它?(类将实例化延迟到子类) 如果抽象工厂只能有一个创建者和一个产品,那么抽象工厂和工厂方法之间的唯一区别是前者的创建者是一个接口,后者的创建者是一个类吗?

9
哈希密码和加密密码之间的区别
当前对该问题的最高投票指出: 另一个与安全性无关的安全性问题虽然完整,但完全无法解决哈希散列密码和加密密码之间的区别。最常见于程序员试图提供不安全的“提醒我密码”功能的代码中。 到底有什么区别?我总是给人以哈希是一种加密形式的印象。海报所指的不安全功能是什么?

8
2个角度之间的最小差异
给定围绕坐标的-PI-> PI范围内的2个角度,它们之间2个角度中的最小角度值是多少? 考虑到PI和-PI之间的差异不是2 PI,而是零。 例: 想象一个圆,有2条线从中心出来,这些线之间有2个角度,它们在内侧形成的角度也称为较小的角度,而在外侧形成的角度也称为较大的角度。将两个角度相加时,将形成一个完整的圆。考虑到每个角度都可以在一定范围内,考虑到翻转,较小的角度值是多少


19
为功率计生成红色和绿色之间的颜色?
我正在编写Java游戏,并且想实现一个功率计,以了解您要射击某些东西的难度。 我需要编写一个整数,该整数的取值范围为0-100,并且根据该数字的高低,它将返回绿色(功率标度为0)和红色(功率标度为100)之间的颜色。 与音量控制的工作方式类似: 我需要对颜色的红色,绿色和蓝色分量执行什么操作才能生成绿色和红色之间的颜色? 因此,我可以说,getColor(80)它将返回橙色(R,G,B中的值),或者getColor(10)将返回更绿色/黄色RGB的值。 我知道我需要增加一种新颜色的R,G,B值的分量,但是我不知道随着颜色从绿色到红色的变化,具体是上升还是下降。 进展: 我最终使用了HSV / HSB颜色空间,因为我更喜欢渐变色(中间没有深褐色)。 我使用的功能是: public Color getColor(double power) { double H = power * 0.4; // Hue (note 0.4 = Green, see huge chart below) double S = 0.9; // Saturation double B = 0.9; // Brightness return Color.getHSBColor((float)H, (float)S, (float)B); } 其中“幂”是介于0.0和1.0之间的数字。0.0将返回亮红色,1.0将返回亮绿色。 …

3
观察者设计模式与“听众”
在我看来,GOF中描述的Observer设计模式与各种工具包中的Listeners确实是同一回事。概念之间是否有区别,或者侦听器和观察者确实是同一回事。 (我并不是在寻找任何特定的计算机语言实现,我只是想从设计的角度理解差异(如果有的话)。是的,我知道SOF中类似问题的答案有几个,但它们都是基于问题的有关特定语言的特定问题-我在寻找设计答案,而不是语言答案。)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.