看来,“ 过早优化 ”这个词是当天的stream行词。 出于某种原因,iphone程序员似乎认为避免过早优化作为积极的目标,而不是简单地避免分心的自然结果。 问题是,这个词已经开始被越来越多的应用于完全不合适的案例。 例如,我看到越来越多的人说,不要担心algorithm的复杂性,因为这是过早的优化(例如, 帮助对两个属性(使用NSSortDescriptor?)进行NSArraysorting )。 坦率地说,我认为这只是懒惰,令人</s>然心动的计算机科学。 但是我想到,也许考虑到algorithm的复杂性和性能正在成为组装循环展开的方式,而现在被认为是不必要的其他优化技术。 你怎么看? 我们现在在哪里决定O(n ^ n)和O(n!)复杂度algorithm是不相关的? 那么O(n)和O(n * n)呢? 你认为“过早优化”是什么? 你有意识或不自觉地避免使用哪些实用的规则? 编辑 我知道我的描述有点普遍,但我对特定的实用规则或人们用来避免“过早优化”的最佳实践感兴趣, 特别是在iphone平台上 。 回答这个问题需要你首先回答“什么是先期优化?”的问题。 由于这个定义明显变化很大,任何有意义的答案都需要作者定义这个术语。 这就是为什么我不认为这是一个CW问题。 再次,如果人们不同意,我会改变它。
我试图设置一个自动高度包含2个子元素,定位固定和绝对respecitvely的股利。 我想我的父容器有一个自动的高度,但我知道这是很难的,因为子元素从他们的位置取出页面结构。 我已经尝试设置一个高度,我的父div的工作,但与我的布局是响应,当其缩小到移动时,高度保持不变,因为内容成堆叠,所以高度需要增加与其子。 不知道这是否有道理,我没有我的实际代码在我atm,但我做了一个小提琴试图解释… http://jsfiddle.net/dPCky/
我需要存储一组实体,其中有几个专门的版本。 他们有一些共同的属性,但专门的属性包含特定于该实体的属性。 解决scheme 数据存储是关系数据库pipe理系统,这不是讨论:-)具体来说,它是Microsoft SQL Server 2005。 我可以很容易地为公共属性创build一个表格,然后为每个专业版本创build一个表格。 但是,稍后可能需要将新实体添加到解决scheme中,而我不想同时维护对象模型和数据库模式。 另一个想法是创build一个表 reading(<common properties>, extended_properties) 并使extended_properties字段成为某种扩展属性的序列化。 我在想JSON或XML。 我很可能会使用ORM框架,但我还没有决定。 无论哪种方式,来自reading的专用实体的对象表示可以从extended_properties字段暴露包含parsing的键/值对的字典{extended_property_name, value} 。 从http://msdn.microsoft.com/en-us/library/ms345117(SQL.90).aspx可以看出,XML字段与这些模式结合在一起给出了DBMS中types化XML的概念。 此外,在extended_properties字段中涉及XML内容的查询也可以考虑到这些。 我想要的是 关于我的解决schemebuild议的反馈,主要是对reading表和序列化扩展属性的build议。 另外,我认识到这是关系数据库pipe理系统与基于关键/值的商店相比的局限性之一。 但是,必须有一些build模技术来适应这一点。 任何反馈非常感谢!
我有一些PHP动力网站上的代码,它创build了一个随机哈希(使用sha1() ),我用它来匹配数据库中的logging。 碰撞的几率是多less? 我应该生成哈希,然后检查它是否在数据库中(我宁愿避免一个额外的查询)或自动插入它,基于它可能不会与另一个相撞的可能性。
我很抱歉,但我是新的存储库模式,unit testing和ORM工具。 我一直在研究unit testing和存储库模式,并得出了一些结论,我想知道我是否正确。 存储库模式有助于unit testing在控制器中被replace,例如,使用它? 因为创build上下文(在EF中)或会话(在NH中)的存根/假更难,对吗? 存储库本身没有testing? 为什么? 使用EntityFramework或NHibernate与存储库模式,如果我想testing我的存储库,我需要做集成testing? 因为如果我使用我的上下文/会话的假实现,我没有做真正的testing? 因为上下文/会话本身是存储库(我的意思是他们实现了添加,删除,编辑,GetById,GetAll,..)的真实逻辑? 与EF或NH的存储库模式就像一个包装? (不仅是一个包装,我知道这是一个域的导入概念。)
所以我有一个包有扩展JPanel的类,我想将它们dynamic地添加为标签。 一开始我使用了一个工厂,我注册了所有的类,并且工作,但现在我要加载包中的所有类而不知道它们的名字。 我已经尝试了几个东西,包括reflection库 (我觉得很困惑),我无法让他们工作。 我感谢任何帮助。 这是我的一个尝试: public static void registerTab() { String pkg = TabA.class.getPackage().getName(); String relPath = pkg.replace('.', '/'); URL resource = ClassLoader.getSystemClassLoader().getResource(relPath); if (resource == null) { throw new RuntimeException("Unexpected problem: No resource for " + relPath); } File f = new File(resource.getPath()); String[] files = f.list(); for (int i = 0; i […]
我知道这是主观的,但我想知道人们的意见,并希望在deviseSQL Server表结构时可以应用一些最佳实践。 我个人觉得,在一个固定的(最大)长度的varchar上键入一个表是一个禁止的,因为这意味着必须在任何其他使用这个作为外键的表上传播相同的固定长度。 使用一个int ,将避免必须在板上应用相同的长度,这将导致人为错误,即1个表具有varchar (10) ,另一个varchar (20) 。 这听起来像是一个噩梦初步设置,再加上意味着未来维护表是繁琐的。 例如,键入的varchar列突然变成了12个字符而不是10个。现在必须去更新所有其他表,这可能是一个非常艰巨的任务。 我错了吗? 我在这里错过了什么吗? 我想知道别人怎么看这个,如果用主键坚持int是避免维护噩梦的最好方法。
什么是提示/技巧,当你需要inheritance类inheritance关系数据库不支持inheritance? 说我有这个经典的例子: Person -> Employee -> Manager -> Team lead -> Developer -> Customer -> PrivilegedCustomer -> EnterpriseCustomer 有什么可用的技术来devise数据库? 每个的利弊? PS我已经search并发现了几个有关数据库inheritance的问题,但大多数是关于更改为本地支持它的数据库引擎。 但是,让我们说,我坚持与SQL Server 2005 …我有什么select?
我正在开发一个Rails 4应用程序,使用Active Admin gem来pipe理后端。 Active Admin反过来使用Devise进行用户authentication。 现在,当我尝试在VPS服务器上使用capistrano部署应用程序时,出现以下错误: rake aborted! Devise.secret_key was not set. Please add the following to your Devise initializer: config.secret_key = '– secret key –' 谷歌search对这个错误没有太大的作用。 任何build议,为什么它是抛出一个错误? 我应该添encryption钥来devise初始值设定项,因为我找不到在initializers/devise.rb设置这样的设定项的initializers/devise.rb吗?
我对这三个术语非常困惑。 我的理解是: 在工厂模式中,没有具体的工厂。 工厂根据参数build立新的对象。 在抽象工厂模式中,有多个具体的工厂。 客户必须明确地创build不同的混凝土工厂。 是对的吗? 其他的区别是什么? 此外,什么是工厂方法模式? 与工厂模式相同吗?