软件工程

针对在系统开发生命周期中工作的专业人士,学者和学生的问答


2
Knuth的基本算法的这一说法是否仍然适用?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 从某种意义上说10!(十阶乘数)表示实际可计算的事物与不可计算的事物之间的近似分界线。 这摘自Knuth的TAOCP基本算法书(1973)。这仍然是有效的声明,还是已经使计算能力过时了?


2
如何以个人身份发布到App Store
我已经编写了一个iOS应用程序,并希望将其发布到App Store。我是个人,因此不会通过公司或其他任何形式发布,仅我一个人。 以自己的名字发布免费的应用程序是否很典型?如果是这样,提交什么适当的版权信息?
10 ios  appstore 

7
临时变量与线长要求
我一直在阅读Martin Fowler的Refactoring。它通常很棒,但是Fowler的建议之一似乎引起了一些麻烦。 Fowler建议您使用查询替换临时变量,因此,不要这样做: double getPrice() { final int basePrice = _quantity * _itemPrice; final double discountFactor; if (basePrice > 1000) discountFactor = 0.95; else discountFactor = 0.98; return basePrice * discountFactor; } 您可以使用辅助方法: double basePrice() { return _quantity * _itemPrice; } double getPrice() { final double discountFactor; if (basePrice() > …

7
这是“反模式”吗,我应该停止使用它还是这个聪明的设计?
创建REST服务时,我基本上已经注视着要执行以下操作: 要求HTML 服务返回所需的网页,但没有请求的“资源”,例如。数据 网页包含向同一服务发出AJAX请求的JavaScript(不同的内容类型) 服务然后返回实际数据(JSON),然后页面将其显示 一方面,它似乎效率低下(2个请求),但后来我用了它,“性能无关紧要”,这意味着内部应用程序和网站的低流量运行非常简单且加载速度很快。 我之所以这样做,是因为该网页几乎可以是纯HTML + JavaScript的,几乎不需要服务器端的东西,尤其是不需要循环,就可以创建表和类似的东西(与之相比,我觉得这很丑陋)诸如slickgrid之类的东西),例如数据和视图的分离。 现在,在我开始使用它之前,这是个好主意还是应该停止这样做?

3
是否应该用单个javabean getter代替复杂的EL表达式?
在JSF中,如果我有一个根据多个变量有条件地进行渲染的组件,那么处理render语句的最佳方式是什么...该逻辑应存在于组件声明中还是以某种形式的帮助器类存在? 仅当动物是大象或狗并且动物没有静音时才显示文本woof。 选项1: 在视图中的实现: <h:outputText id="text" value="woof" rendered="#{animal.type == 'elephant' or animal.type == 'dog' and not(animal.mute)}"/> 或选项2: 封装形式: <h:outputText id="text" value="woof" rendered="#{animal.barkingAnimal}"/> 与实施: public class Animal { public boolean isBarkingAnimal() { return ("dog".equals(getType()) || "elephant".equals(getType())) && !isMute(); } ... 因此,两者都可以工作...但是哪种是正确的方案?
10 jsf 

1
生成Web服务的商业许可证密钥
背景 我有一个关于基于Web的软件许可的业务问题。许多网站都提供软件作为各种API的服务。一个很好的例子是Google的Custom Search API。使用Web服务的过程通常类似于: 帐户。用户创建一个帐户。 服务器。用户定义将发出API请求的服务器的IP地址。 键。用户收到所需API的公共API密钥。 指南。向用户提供了文档,该文档显示了如何使用API​​密钥进行请求。 测试。用户可以发出测试请求以验证集成功能。 帐单。用户付费激活帐户。 生产。用户将Web服务集成到他们的应用程序中。 停用。过期,超过请求限制等时,系统将停用帐户。 这些要求是与许可服务集成的补充。 问题 对于一家小型企业而言,这是很多工作。 问题 有哪些现成的开源项目可以解决此问题? 如果没有此类项目,您将如何构建可行的低成本解决方案(理想情况下,每个许可证的百分比)?也就是说,对于想要获得基于Web的服务许可的小型企业(几乎没有收入或没有收入),您将使用什么软件或现有的商业服务? 谢谢! 相关链接 Web应用程序中的许可证密钥解决方案,最佳方法是什么? API管理系统

1
轻量级文档索引,可处理少于25万条潜在记录
最近,我发现自己对文档索引引擎的局限感到恼火。我正在开发一个小型网站,需要一些相当强大的搜索功能,但是由于它们的硬件限制,我无法部署Lucene式的解决方案(例如Solr或ElasticSearch,就像我通常那样)来满足这种需求。 即便如此,尽管我需要处理一些数据库密集型的复杂数据和计算,但我并不需要处理超过25万条潜在记录。仅仅部署一个Solr或ES实例来解决这个问题似乎是一种浪费。 经过考虑,这似乎是一个相当大的问题。大多数人仅使用SQL处理搜索需求。他们只是对数据运行SQL查询,仅此而已。他们的搜索能力最终也很糟糕。 在某些系统(尤其是共享主机)上进行全面的通配符全文搜索可能会非常缓慢,并且会使数据库陷入瘫痪,特别是在您具有复杂的查询和大量联接的情况下。 您最终只能对用户的单个请求执行多个查询。您可能会通过越来越复杂的查询来解决此问题,但请参阅上一点。 全文引擎中通常缺少功能。 数据库具有需要部署为服务器的相同问题,然后出现SQLite,突然我们可以部署一个独立包含在单个文件中的数据库。我的Google搜索没有任何结果-想知道是否存在类似这样的内容用于全文索引/搜索。 在决定是否实现轻量级文档索引(例如,如对另一个问题的回答中所述)或在这些情况下继续使用SQL 时应考虑哪些因素?

4
使用数据结构的算法与使用数据库的算法之间有什么区别?
一般问题 使用数据结构的算法与使用数据库的算法之间有什么区别? 一些背景 这个问题困扰了我一段时间,而我却无法给出令人信服的答案。 目前,我正在努力加深对当然会大量涉及数据结构的算法的理解。这些是基本结构,例如袋,队列,堆栈,优先级队列和堆。 我还每天使用数据库来存储最终用户已处理和提交或程序处理过的数据。我通过DAL检索和提交数据,该DAL具有自己的数据结构,该结构是根据数据库中的表生成的。 当我可以选择使用数据库对数据进行排序以按升序/降序将其发送回给我或检索并将数据加载到我的逻辑中,在优先级队列中处理此数据并进行堆排序时,我的问题就来了所有的。或者另一种方法是使用数据库搜索记录,而不是加载记录的子集并使用诸如二进制搜索之类的方法来查找我感兴趣的一个或多个记录。 在我看来,由于通信成本很高,因此在发送数据库端之前,我将尝试在数据库端进行尽可能多的操作。这也使我想知道您何时使用严格在自己的逻辑内定义的算法和数据结构,而不是处理数据库而不是数据库的数据? 所以这是问题... 问题 数据结构和数据库之间有什么区别? 我们什么时候使用的算法仅使用您自己的逻辑而不是数据库逻辑定义的数据结构? @Harvey发表:什么时候数据库中的方法变得比您自己的逻辑中的方法效率低? @mirculixx帖子:什么使方法有效? @Harvey帖子:处理具有数据结构的数据比在数据库中处理数据更快? 澄清说明 @Grant帖子:我通常使用的数据库是关系数据库,这些问题来自于它们的使用。但是,我确实认为这些问题适用于任何持久性框架(当我说框架时,我的意思是最一般的意义)。 我知道没有特定上下文的答案很难。我正在寻找有想法的食物,建议或讨论要点,将不胜感激!

2
使用动态语言创建模拟时如何检测类型错误?
在执行TDD时会出现问题。经过几次测试通过后,某些类/模块的返回类型发生了变化。在静态类型的编程语言中,如果在其他某个类的测试中使用了先前的模拟对象,并且未对其进行修改以反映类型更改,则将发生编译错误。 但是,对于动态语言,可能无法检测到返回类型的更改,并且其他类的测试仍将通过。当然,可能会有集成测试稍后会失败,但是单元测试会错误地通过。有什么办法可以避免这种情况? 用一个简单的示例(在某些组合语言上)更新... 版本1: Calc = { doMultiply(x, y) {return x * y} } //.... more code .... // On some faraway remote code on a different file Rect = { computeArea(l, w) {return Calc.doMultipy(x*y)} } // test for Rect testComputeArea() { Calc = new Mock() Calc.expect(doMultiply, 2, 30) // …

3
Ruby和C ++中的OOP术语
我正在学校上C ++课程。由于我使用Ruby编程,因此我了解一些OOP知识。 但是在C ++中,有成员函数,成员变量和静态函数。在Ruby中,我们有实例方法,实例变量和类变量。还有更多... 他们有什么不同的原因吗?它们的OOP级别是否完全不同?还是这些生态系统在传统上存在一些差异?

3
在Java应用中使用MVC
我需要编写一个跨平台的GUI应用程序来处理(在多个线程中)并可视化大量数据。理想情况下,应用程序应该相对较快并且外观良好。 该应用程序的界面将包括一个表格小部件,一个树状小部件和一个自定义图形绘制小部件。用户将能够从这些小部件中的任何一个修改数据,并且更改应立即反映在其他小部件中。 自然,我计划使用MVC。但是,我通常使用C ++ / Qt进行所有GUI编程,并且接触Java的机会非常有限。因此,我非常感谢有关如何在Java中组织此类应用程序的任何建议。特别是我应该使用Swing还是JavaFX?您会为工作选择哪些小部件?您能推荐涵盖Java平台这些方面的任何书籍/在线教程吗? 我将不胜感激任何反馈。谢谢! (此问题最初发布在Stack Overflow上,但建议将该站点建议为一个更合适的位置)
10 java  mvc  swing  javafx 

5
在这种情况下,坚持每个测试一个断言是否愚蠢的一致性?
我有一个正在测试的课程。该类具有一个功能:apply(List<IRule> rules, List<ITarget> targets); 在一个测试中,我想确保每个目标都已通过一个规则,例如: rule1.AssertWasCalled(fnord => fnord.Test(target1)); rule1.AssertWasCalled(fnord => fnord.Test(target2)); rule1.AssertWasCalled(fnord => fnord.Test(target3)); 在我看来,将自己限制在一条断言中就等于是妖精。在这个假设中我是否正确,还是可以通过其他方式断言每个目标实际上都已经过测试?

1
为什么Core Data sqlite表列以“ Z”开头?
我正在查看Core Data生成的sqlite表,并注意到所有表列均以“ Z”开头。我意识到这是一个实现细节,但是我很好奇为什么会这样,以及是否涉及设计决策。任何人碰巧知道或猜测为什么? 这是Core Data sqlite数据库的示例架构输出: sqlite> .schema 创建表ZPOST(Z_PK整数主键,Z_ENT整数,Z_OPT整数,ZPOSTID整数,ZUSER整数,ZCREATEDAT TIMESTAMP,ZTEXT VARCHAR); 创建表ZUSER(Z_PK整数主键,Z_ENT整数,Z_OPT整数,ZUSERID整数,ZAVATARIMAGEURLSTRING VARCHAR,ZUSERNAME VARCHAR); 创建表Z_METADATA(Z_VERSION整数主键,Z_UUID VARCHAR(255),Z_PLIST BLOB); 创建表Z_PRIMARYKEY(Z_ENT INTEGER主键,Z_NAME VARCHAR,Z_SUPER INTEGER,Z_MAX INTEGER);
10 ios  sqlite 

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.