软件工程

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

9
我了解堆栈指针是什么-但是它的作用是什么?
堆栈指针指向堆栈的顶部,该堆栈以我们所谓的“ LIFO”为基础存储数据。偷别人的比喻,就像是一堆盘子放在顶部放在盘子里。堆栈指针OTOH指向堆栈的顶部“盘”。至少对于x86如此。 但是,为什么计算机/程序“关心”堆栈指针指向的内容呢?换句话说,拥有堆栈指针并知道其指向服务的目的是什么? C程序员可以理解的解释将不胜感激。
11 stack  x86 

1
为2人团队介绍拉取请求-合并我自己的请求吗?
我正在向初级团队成员(一个合作社)介绍git。 现在,他们对添加,提交,推送和拉取的基础知识感到满意。 现在,我要介绍它们来拉取请求和分支。 如果他们开始在分支机构中执行拉取请求,我是否应该为正在进行的工作做同样的事情? 我将成为合并他们的请求请求的人。我不确定在分支机构工作对我来说是否最有意义(通常我知道这是一种很好的做法,但我对2个开发人员和一个大三的这种特定情况感到好奇),如果是的话,那意味着我将把自己的分支合并到master中。无论如何,我是否还会为我的工作/分支提出拉动请求?通常,我们使用基本的github功能分支工作流进行以下更改:https : //www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow 如果我是唯一的开发人员,是否有在自己的仓库上使用拉取请求的目的?是有用的,但不够具体。 2个人在一个项目上的工作流程似乎也更笼统 和 我应该在官方仓库或叉子上打开来自分支的拉取请求吗?似乎更多关于叉子。

5
Java包级别作用域有用吗?
我了解包范围的概念,有时甚至认为我想要它。但是,每次我认真地尝试使用它时,我发现它都不符合我认为可以满足的需求。 我的主要问题始终似乎是,我希望限制范围的东西从来不在同一包中。它们可能在概念上全部链接在一起,但是应用程序中数据的逻辑划分将它们作为较大包的单独子包。 例如,我可能有一个Mission模型,并且我只希望其他Mission工具(例如我的missionServices)使用某些方法。但是,我最终将Missions.models和Missions.services作为我的包,所以MissionModel和MissionService不在同一包范围内。似乎从来没有出现过这样的情况:程序包适当地包含了我希望具有提升的权限的内容,却又不包含我不希望拥有这些权限的许多内容;我几乎没有感觉到包范围界定方法的优势证明修改我的项目体系结构以将所有内容都放在同一包中是合理的。通常,无论是Aspect还是某种形式的控制反转,都是解决我简要考虑过的程序包作用域的任何问题的更好方法。 我很好奇,这在所有Java开发人员中通常被认为是正确的,或者只是我所做的工作的fl幸。封装范围在现实世界中使用率很高吗?在很多情况下,它被认为是很好的使用形式,还是在大多数情况下,它被视为遗留行为而很少被开发利用? 我没有问任何关于为什么包私有作用域是默认值的问题,我在问什么时候应该使用它而不考虑默认值。关于为什么默认为默认值的大多数讨论并没有真正进入包范围实际有用的时间,而只是在争论为什么不应该将其他两个常用范围设为默认值,从而使包在消除过程中获胜。另外,我的问题是关于当前的发展状况。具体来说,我们是否已经开发到其他工具和范例使得程序包作用域不那么有用的地步,而当它成为默认值的决定才有意义时。
11 java  scope 

3
在C ++中,何时应在虚拟方法声明中使用final?
我知道该final关键字用于防止虚拟方法被派生类覆盖。但是,当我真的应该在方法中使用关键字时,找不到任何有用的示例。更甚者,使用虚拟方法感觉像是一种难闻的气味,因为它不允许程序员将来扩展类。finalvirtualfinal 我的问题是下一个: 当我真的应该final在virtual方法声明中使用时,是否有任何有用的情况?
11 c++  final 

1
算法/数据结构来回答“我可以用这套配料制作什么食谱?”
形式上,令s(U,Q)= { V | V ∈ ù和V ⊆ Q },其中ü,Q,和V都表示集,和ü,更具体而言,代表一组套。举例来说,U可能是食谱中各种配方所需的一组(一组)配料,其中Q代表一组配料,我有V表示我可以用这些配料制作的配方。查询s(U,Q)对应于“这些成分我能做什么?”的问题 我正在寻找的是一个数据表示该指标ü以这样一种方式,它支持高效的查询小号(ü,Q),其中Q和全体成员ü一般会比较小到所有成员的工会ü。另外,我希望它能够有效地更新U(例如,添加或删除配方)。 我忍不住想必须很好地理解这个问题,但是我找不到它的名称或参考。有谁知道有效解决此问题的策略,或者我可以在此获得更多了解的地方? 就考虑解决方案而言,我曾想过要为集合U建立决策树。在树的每个节点上,问题“您的成分表中是否包含x?” 将要求选择x来最大化被答案消除的U成员的数量。随着U的更新,将需要重新平衡决策树以最小化找到正确结果所需的问题数量。另一个想法是用一个n维布尔“八叉树”(其中n是唯一成分的数量)表示U。 我相信“用这些成分可以制成哪些食谱?” 可以通过以下方法得到答案:将食谱中的食谱(所需的成分集)的笛卡尔乘积与一个成分具有的幂集相乘,然后对两个元素均相等的对进行过滤以得到有序对,但是这不是一个有效的解决方案,我要问的是如何优化这种操作;如何在SQL中将其组合为有效的?SQL怎么做才能使其高效? 尽管我使用的是食谱和一组配料的食谱,但我预计尽管配料的数量很多,但“食谱”和“配料”的数量将非常大(每种多达数十万)在给定的配方中,给定的配料集中的配料数量将相对较小(典型的“食谱”大约为10-50,典型的“配料”大约为100)。另外,最常见的操作将是查询s(U,Q),因此它应该是最佳的。这也意味着,需要检查每个配方或对每种成分进行操作的蛮力算法本身会很不理想。通过巧妙的缓存,

4
减少类中通过组合实现接口的样板
我有一个类:A这是一个综合了一些更小的类,的B,C和D。 B,C和D实现接口IB,IC和ID分别。 由于A支持的所有功能B,C并且D,A器具IB,IC并ID为好,但不幸的是这导致了大量的重路由在执行A 像这样: interface IB { int Foo {get;} } public class B : IB { public int Foo {get {return 5;}} } interface IC { void Bar(); } public class C : IC { public void Bar() { } } interface ID { string Bash{get; set;} } public …

2
(基本)SQL查询在语义上是否等同于高阶函数?
SQL基本上是map + fold + filter的特定于域的实例吗? 在我看来,以下SQL: SELECT name FROM fruits WHERE calories < 100 只是以下map + filter + fold操作的语法糖: var fruits = [{id : 1, name: 'orange', calories : 100}, {id : 2, name : 'banana', calories : 150}, {id : 3, name: 'apple', calories : '50'}]; fruits.map(function(fruit) { return …

2
在哪里为我的班级建立公共数据库连接
我有几个类(资源库),它们负责在数据库中保存/检索某些对象的任务。它们都需要与一个数据库建立连接。 我认为为了避免在每个类中重新定义ConnectionString和SqlConnection,将开放的连接传递给它们。那么定义/打开该连接并将其传递给类的最佳位置/时间在哪里/何时? 是否有更好的方法/模式可以访问此公共资源?
11 c#  sql  class-design 

6
用于显示X个百分比滑块的UI的算法,这些滑块的链接值始终总计为100%
我正在构建的系统包括一组UI滑块(数量有所不同),每个滑块的比例为0-100。滑块是指一个用户界面,您可以在其中抓取一个元素并将其上下拖动,就像音量控件一样。它们通过一种算法进行连接,以确保它们始终总为100。因此,当一个滑块向上移动时,其他所有滑块都向下移动,最终变为零。当一个向下移动时,其他向上移动。在任何时候,总数必须为100。因此,此处的滑块具有不同的值,但总计为100%: ----O------ 40 O---------- 0 --O-------- 20 --O-------- 20 --O-------- 20 如果第一个滑块然后从40向上移动到70,则其他滑块的值必须向下移动(拖动滑块时)。请注意,三个滑块从20更改为10,一个滑块保持在零,因为它不能降低。 -------O--- 70 O---------- 0 -O--------- 10 -O--------- 10 -O--------- 10 当然,当任何滑块达到0或100时,它都无法进一步移动,这就是我的头部开始真正受伤的地方。因此,如果滑块向高处移动,则其他滑块向低处移动,但是当其中任何一个达到零时,只有尚未达到零的其余滑块才能向低处移动。 我在这里问这个问题,因为这个问题特定于算法而不是实现。FWIW该平台是Android Java,但这并不特别相关。 我第一次刺中的方法是计算移动的滑块的百分比变化。然后,我拆分该更改并将其(沿另一个方向)应用于其他滑块值。但是,问题在于,如果使用百分比乘以,如果任何滑块滑到零,就永远不会再从零开始增加-最终结果是各个滑块卡在零上。为了避免舍入问题,我使用了范围为0-1,000,000的滑块,这似乎很有用,但是我还没有创建一种能够很好地处理所有情况的算法。
11 algorithms  gui  ui 

5
虚假值与null,未定义或空字符串
这些年来,我一直在使用jQuery。但是,最近,我发现自己对JavaScript语言有了更深入的了解。最近,我听说过“真实”和虚假的价值观。但是,我不完全理解它们。目前,我有一些看起来像这样的代码: var fields = options.fields || ['id', 'query']; 我需要确定字段是否为null,未定义或长度为0。 if ((fields === null) || (fields === undefined) || (fields.length === 0)) { ... } 我的问题是,以下内容是否相同: if (!fields) { ... }
11 javascript 

4
我应该解析服务器上的XML还是提供代理并让浏览器解析它?
我需要与第三方API交互。使用此API,我可以从最终用户的浏览器中发出GET请求,并接收XML响应。该数据将在基于浏览器的应用程序中使用,用户可以在该应用程序中进行搜索,使用它来做出决定等。主要问题是大多数浏览器已锁定跨域XML的使用,因此我不能简单地获取API中的XML。 但是,总体数据基本上分为两组。 第一组数据是公共数据,只需要经常更新一次,因此可以为服务器端的所有用户缓存数据,从而大大减少了通信量。 第二组数据是私有的,对于每个用户而言都是个体的。此数据还会在API中更频繁地更新。这导致缓存效率大大降低。 出于可伸缩性的原因,我想使服务器的负载尽可能小。 我面前有两个选择: 提供一个代理,该代理可用于将XML请求路由到第三方服务器,并直接在客户端和第三方API之间来回传递。 让服务器执行从XML到JSON的转换并去除不必要的信息。从本质上讲,这意味着为我们的服务器创建一个新的API,从而转化为来自第三方API的请求 向用户提供数据的最佳方法是什么?(不必是两个选项之一)
11 javascript  api  xml  websites  json 

3
具有相同名称但名称空间不同的多个类?
我遇到了一些代码(如果有问题,请使用C#),这些代码具有相同的名称,但名称空间不同。它们都倾向于代表相同的逻辑事物,但往往是同一对象的不同“视图”。有时,不同的名称空间是同一解决方案甚至同一dll的一部分。 我有我的想法,但是找不到关于此实践的任何明确定义,可以认为是对可用工具的明智使用或避免的模式。 关于蓝精灵命名的问题触及了这一点,但是是从另一个方向出发的。消除名称歧义可能需要一个任意且普遍的前缀,该问题希望消除。 有关此做法的指导原则是什么?
11 naming 



2
如果您知道参数是可能需要或可能不需要的东西,是否有任何理由不使用Optional作为方法参数?
使用Java 8,我看到了越来越多有关Option / Optional用法的文章。我了解他们试图代表的意思,并且看到许多将它们用作回报的示例。但是我看不到它们在没有默认/可选参数语法的语言中被用作方法/函数参数。 Optional如果您知道该参数是可能需要或不需要的东西,是否有任何理由不用作方法参数?这是我想到的一个示例: Optional<Customer> lookupCustomer(String firstName, Optional<String> middleName, String lastName)

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.