软件工程

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

2
Java AOT编译器如何工作?
有几种工具(Excelsior JET等)声称可以将Java应用程序转换为本地可执行文件(*.exe)。但是据我了解,这些工具实际上只是在创建java从外壳程序或命令行调用/执行的本机包装。 如果这种理解是不正确的,我不知道怎么可能。如果正在运行的JVM(java进程)本质上是一种高性能的解释器,则是从Java类文件中动态加载字节码,那么我看不出Java应用程序(用作JVM输入的字节码文件的集合)是怎么回事。真正转换为可执行文件。 这是因为JVM进程已经是本机可执行文件,它将字节码文件集作为输入。如果不完全重写JVM并脱离JVM规范,将这些字节码文件和JVM进程合并为一个统一的本机可执行文件似乎是不可能的。 因此,我问:这些工具实际上是如何将Java类文件“转换”为本地可执行文件的?
18 java  compiler  aot 

1
为什么使用angular发送文件如此困难?[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 4年前关闭。 我必须将文件(非常大的文件)发送到服务器。我正在研究我有什么选择以及如何做。我正在使用angular + express + nodejs。 如果使用简单形式,则可以使用multer在服务器上捕获文件,而不会出现问题。很简单。html只是一种形式,我在其中指定目标等,并且一切正常。nodejs代码也非常简单直接。 一旦我尝试使用angular,一切都会变得异常复杂。意思是,我必须使用指令,但服务器仍然有问题。正如我所说,我正在使用multer,它要求数据为“ multipart / form-data”,并且从服务器获取“错误:Multipart:未找到边界” 有很多模块可以按角度加载文件。这表明,不只一种解决方案是一个反复出现的问题。现在,我不想发布代码,因为为此我在Stack Overflow上提出了要求。我的问题更加微妙: 为什么用简单的形式可以完成什么呢?get的角度如此复杂?我并不是说这很糟糕。我的意思是“我想理解”。

1
Erlang真的是演员模型语言吗?
我在读这篇文章: http://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol2/pjm2/ 它提到: 在演员模型中,甚至一个整数也被表示为演员 维基百科确认: 演员模型采用了一切都是演员的理念。 Erlang有许多数据类型,据我所知,这些类型不是参与者。 难道不是说Erlang不是一种参与者模型语言,就像有人说Java不是一种功能语言,就是因为它缺少某些功能性编程功能吗? PS:通过扩展,这意味着Akka绝对不是演员模型,因为除了来自宿主语言的非演员数据类型之外,它甚至还允许继承的演员通过宿主语言工具扩展其行为。

2
如何在Winform应用程序中将视图与逻辑分开?
我知道有像MVC这样的模式可以将视图与逻辑分开,但是,我不知道它们在Winform应用程序中有多常见。 对于C#Winform应用程序,我可以从开始Form并逐步向其中添加UI组件,然后针对组件的事件(click,textchanged...),我调用函数,或直接在其中编写逻辑! 我知道这是一个坏习惯,但是我不知道在Visual Studio中启动此类项目的最佳方法是什么(模板,框架,起点),MVC是唯一的解决方案吗?我应该为任何项目这样做吗? 我希望获得一些入门指南或轻量级框架。
18 c#  mvc  winforms 

2
我应该将用户声明存储在JWT令牌中吗?
我在HTTP标头中使用JWT令牌来验证对资源服务器的请求。资源服务器和身份验证服务器是Azure上的两个单独的辅助角色。 我不能决定应该将请求存储在令牌中还是将请求附加到请求/响应中。Claims列表影响客户端UI元素的呈现以及对服务器上数据的访问。因此,在处理请求之前,我想确保服务器收到的声明是真实的并经过验证的。 声明示例包括:CanEditProductList,CanEditShopDescription,CanReadUserDetails。 我要为其使用JWT令牌的原因是: 更好地防止客户端对声明进行编辑(即入侵声明列表)。 无需在每个请求上查找索赔。 我不想使用JWT令牌的原因: 然后,身份验证服务器必须知道以应用程序为中心的声明列表。 令牌成为黑客入侵的单一点。 我读过几句话说,JWT令牌不用于应用程序级数据。 在我看来,两者都有缺点,但是我倾向于将这些声明包含在令牌中,并且只想由以前处理过此问题的人员来处理。 注意:我将对所有API请求使用HTTPS,因此在我看来,令牌将“足够”安全。我正在使用AngularJS,C#,Web API 2和MVC5。

16
否则块会增加代码复杂度吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 这是一个非常简化的示例。这不一定是特定于语言的问题,我想请您忽略函数编写的许多其他方式以及可以对其进行的更改。。颜色是一种独特的类型 string CanLeaveWithoutUmbrella() { if(sky.Color.Equals(Color.Blue)) { return "Yes you can"; } else { return "No you can't"; } } 我遇到的很多人,ReSharper和这个人(其评论提醒我我一直想问这个问题已经有一段时间了)建议重构代码以删除else留下的代码块: (我不记得大多数人所说的话,否则我可能不会问这个) string CanLeaveWithoutUmbrella() { if(sky.Color.Equals(Color.Blue)) { return "Yes you can"; } return "No you can't"; } 问题:不包括else块会导致复杂性增加吗? else通过说明两个模块中的代码直接相关的事实,我给人的印象更直接地表明了意图。 另外,我发现我可以防止逻辑上的细微错误,尤其是在以后对代码进行修改之后。 以我的简化示例的这种变化形式为例(or由于这是故意简化的示例,因此请忽略运算符): bool CanLeaveWithoutUmbrella() { if(sky.Color != Color.Blue) { …

6
TDD和完整的测试范围,需要指数测试用例
我正在研究一个列表比较器,以帮助根据客户的非常特定的要求对搜索结果的无序列表进行排序。需求要求使用重要性规则按以下规则排序相关性算法: 姓名完全匹配 搜索词中所有单词的名称或结果的同义词 搜索查询中某些单词的名称或结果的同义词(%降序) 说明中搜索查询的所有单词 说明中搜索查询的某些单词(降序排列) 最后修改日期降序 该比较器的自然设计选择似乎是基于2的幂的得分排名。次要重要规则的总和永远不会与重要性较高的规则的正比匹配大。这可以通过以下得分来实现: 32 16 8(基于决断百分比下降的次决胜局得分) 4 2(基于降低百分比的次决胜局得分) 1个 本着TDD的精神,我决定首先进行单元测试。对于每个唯一方案都有一个测试用例,至少要有63个唯一测试用例,而不考虑规则3和5上的辅助抢断逻辑的其他测试用例。这似乎太过分了。 实际的测试实际上会更少。根据实际规则本身,某些规则可确保较低的规则将始终为真(例如,当“所有搜索查询词都出现在说明中”时,规则“某些搜索查询词会出现在说明中”将始终为真)。写下每个测试用例的努力水平仍然值得吗?在谈论TDD中100%的测试覆盖率时,这通常是要求的测试级别吗?如果不是,那么什么是可接受的替代测试策略?

1
是否可以使用Jester for Java这样的变异测试工具替代现代产品?
“为什么您可以肯定地知道为什么您的测试很好呢?有时Jester告诉我我的测试是密闭的,但是有时发现的变化却是突然的。强烈推荐。”-肯特·贝克(Kent Beck) 但是我看到在stackoverflow中甚至没有一个名为“ Jester ” 的标签。那么,对于Jester的现代替代品是什么?除了从Cobertura和Clover等工具的代码覆盖范围中找到统计信息之外,如何确保编写的单元测试牢不可破?

5
如果不存在,那么在get中创建某些东西是不好的编码习惯吗?
因此,我有一个Web服务,该服务具有类似的功能getAccount,如果有该服务,它将在帐户中返回标识符,否则将引发异常。如果抛出的异常与获取信息相同,则客户端将始终希望创建一个帐户。 我正在为客户端创建一个便利库,该客户端将处理内部的所有webservice调用,因此他们不需要知道如何自己进行调用。 我想知道的是,如果我要创建一个getAccount(accountName)可以在帐户存在时获取该帐户的帐户,如果不创建该帐户并返回信息,那是一件不好的事情吗?我应该将其留给客户端来处理异常还是将其命名为诸如getOrCreateAccount之类的东西?有关系吗? 在get操作中创建内容是不好的做法吗?

3
在队列中,“头”是哪一端?
我一直以为队列的“头”是要读取的下一个元素,从来没有真正质疑过这种用法。因此,我写的一个用于维护队列的链接列表库使该术语变得更加合理:我们有一个list1_head宏可以检索第一个元素;在队列中使用此库时,这将是第一个要删除的元素。 但是团队中的一位新开发人员习惯于以其他方式实现队列。他将队列描述为像狗一样行为:您将其插入头部,然后将其移至尾部。这是一个足够聪明的描述,我觉得他的用法必须更广泛,而且我没有类似的令人回味的描述。 因此,我想有两个相关的问题:1,队列的“头”对您意味着什么?2,为什么我们用“头”一词来描述这个概念?

8
一个名为Class的Class?
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 这更多是一个风格问题,但这是我目前正在考虑的我的一个项目。 假设您正在创建对学校进行建模的应用程序。因此存在诸如学生,学校等实体。现在,一切都很好而且很直观,直到您上课为止,因为(在大多数语言中)Class是保留字。那么,如果这Class是一个保留关键字,那么您将如何称呼这种模拟学校课程的实体?

6
可以将JavaScript用作通用脚本语言吗?
我已经使用JavaScript和某些框架(jQuery,Prototype和一些node.js)进行客户端Web编程,但是从未在台式机上使用台式机,因为在台式机上,我大部分的脚本工作都是使用Python或Bash进行的。 但是恕我直言,如果在浏览器之外使用JavaScript,JavaScript将成为一种很棒的脚本语言。有人尝试过吗?JavaScript是否可以代替Python / Perl / Bash进行快速而肮脏的脚本编写任务?

6
我应该教我的学生阿洛卡吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 alloca在现实世界中使用得如何?在合理的时候我应该教我的学生使用alloca吗?还是我应该教他们不要使用它?来自C ++ RAII背景,不必free手动调用的想法听起来很有希望,尤其是在具有多个出口点的函数中。
18 c  teaching 

2
Google为什么在大多数应用程序中不使用GWT?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 Google创建了Google Web Toolkit(GWT),并且在构建自己的Web应用程序时不使用它。 这是否意味着GWT不适合构建动态应用程序?还是有缓存问题?还是有RPC问题?还是有其他问题阻止Google使用这项技术? EDIT:我不是在这里说Google从来没有在任何应用程序中使用过GWT,但是我想说的是,为什么他们没有广泛使用它?

6
如果团队成员错过冲刺计划怎么办?
假设一个团队成员正在休年假。他不会参加Sprint计划,但他将在迭代/ Sprint中期回来。可以说他有50%的容量,也就是说,如果他可以在下半阶段迭代中使用,我们应该: 他回来后与他进行计划会议。 在他休年假之前,即在进行短跑计划之前,与他进行一次计划会议。 不要安排他执行任何任务,也不要将他分配给非冲刺任务,例如尖刺等 在进行Sprint计划时让他的同伴代表他进行计划,缺席的人可以在他回来时添加任务,如果他不能完成所有工作,可以扩大范围。 让他与另一位开发人员坐在一起,做一段时间的配对编程。 还要别的吗.. 我有兴趣知道你在做什么。 注意:我们正在做(1),感觉不正确。
18 scrum  sprint 

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.