软件工程

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

1
为什么CSS本身不支持变量和层次结构?
我是UI开发的新手,但是我对CSS的工作方式感到不舒服。 我的用例是我想div在页面上的特定内部应用某些特定的样式。 CSS尝试: div.class1 { font: normal 12px arial, helvetica, sans-serif; font-color: #f30; } div.class1 div.class2 { border: 1px solid #f30; } 较少尝试: @red: #f30; @font-family: arial, helvetica, sans-serif; div.class1 { font: normal 12px @font-family; font-color: @red; div.class2 { border: 1px solid @red; } 该CSS版本可诱发错误的,因为它迫使你重复#f30及div.class2每次尝试实现层次结构和可变的再利用时间。 我的问题: 为什么CSS使事情变得困难? LESS没什么特别的-只是做出了明显的改进并转换为CSS? CSS希望激发用户什么,因为它促进了这种冗余的编码风格? 我坚信CSS应该是LESS。绝对地,我忽略了一些为什么CSS会这样做的明显优势。我以为这是一个遗留问题,但是当我没有尝试使用CSS3解决这个问题时,我感到很惊讶。 …
11 coding-style  css  ui  css3 


1
Erlang在哪些方面可以防止并发编程中的竞争条件?
阅读有关Erlang的并发信息,使我想起了Akka并发工具包。两者都为您提供了预防或限制比赛条件的工具。但是您可以使用Akka工具包将可变数据的链接发送到其他进程,这仍然是不安全的。我认为Akka是一种有用的工具,但它不能防止对对象和数据的乱序访问,从而导致竞争情况,死锁和/或饥饿。它并不能阻止您以Java或C#保护您免于编写可以在C ++中编写的大多数类型的内存泄漏的方式编写不安全的代码(您仍然可以通过欺骗垃圾收集器来在Java中创建内存泄漏,但是这种情况较少而不是必须记住释放分配的每个字节)。 Erlang是否在并发编程中保证一定程度的正确性,性能和鲁棒性?我认为操作系统在访问系统资源时会提供保护(假设驱动程序编写者的工作做得很好)。ACID数据库为读取和更新提供保护。因此,这似乎是一个可解决的问题。还是通用安全解决方案会消除并发性带来的性能提升?其他语言或工具包是否提供Erlang提供(或不提供)的并发安全性? 这是@Malfist对@ user1249的回答的评论的后续问题,即哪种编程语言生成最少的难以发现的错误?。

4
返回只读对象的最佳实践
我对C#中的OOP有“最佳实践”问题(但它适用于所有语言)。 考虑使库类具有要通过属性访问器公开的对象,但是我们不希望公众(使用此库类的人)对其进行更改。 class A { // Note: List is just example, I am interested in objects in general. private List<string> _items = new List<string>() { "hello" } public List<string> Items { get { // Option A (not read-only), can be modified from outside: return _items; // Option B (sort-of read-only): …

7
通过HTTPS进行身份验证会降低我的应用程序速度吗?
我正在构建一个Web应用程序和RESTful Web服务。 我一直在阅读有关如何验证对Web服务的请求的最佳方法的各种文章。 对我而言,最好的选择似乎是使用HTTP基本身份验证。我阅读的几乎每篇文章都说,身份验证应该通过SSL或等效协议进行加密。 我不太确定这涉及什么。这是否意味着我的整个Web服务必须位于安全的服务器上?这会减慢速度吗?

2
需要解释C#规范中的部分
我正在阅读C#规范。我可以在一个段上使用澄清: C#具有统一的类型系统。所有C#类型(包括基本类型(如int和double))都从单个根对象类型继承。因此,所有类型都共享一组通用操作,并且任何类型的值都可以以一致的方式存储,传输和操作。此外,C#支持用户定义的引用类型和值类型,从而允许对象的动态分配以及轻量级结构的内联存储。 在这种情况下,“轻型结构的在线存储”是什么意思?

3
低延迟Unix / Linux
大多数低延迟/高频编程作业(基于作业规范)似乎是在unix平台上实现的。在许多规范中,他们特别要求具有“低延迟linux”类型经验的人员。 假设这并不意味着可以使用实时linux操作系统,人们是否可以在这方面提供帮助?我知道您可以设置线程的CPU亲和力,但我假设他们对此的要求远远超过此。 内核调优?(尽管我听说像solarflare这样的制造商还是会生产内核旁路网卡)? DMA或进程之间可能共享的内存呢?如果人们可以给我简短的想法,我可以去Google上进行研究。 (此问题可能需要熟悉高频交易的人员)
11 c++  c  performance  linux  latency 

3
何时传出/传出耦合好坏
我这周要参加软件模式考试,我们要学习的主题之一是传出和传出耦合。 我了解,如果封装依赖于许多其他类型,则封装的Ce(有效耦合)较高。 例如: class Car{ Engine engine; Wheel wheel; Body body; } 该类具有较高的传出联轴器,因为它取决于引擎,车轮和车身类型。 如果“ Wheel”类型依赖于其他几个包装(汽车,飞机,自行车),则Ca(费伦特耦合)会较高。 我们考试中可能出现的问题之一是,何时传出/传出耦合好坏?这在我看来很奇怪,因为从逻辑上讲,程序需要具有高传入/传入耦合的包/类。 有没有人举例说明何时/何处高传出或传入耦合好/不好? 谢谢 !

2
“ for”循环的类别
我记得有一次读了一些研究,其中进行了分析的C代码体,和调查结果,绝大多数的for循环可分为约五类,对应的功能等同物map,filter,fold,等。 我似乎再也找不到这篇文章/文章了。谁能指出我的意思?
11 research 

2
如何将工作划分到计算机网络?
想象一下一个场景:假设您有一台产生大量数据的中央计算机。此数据必须经过一些处理,不幸的是,此处理要比生成数据花费更多的时间。为了使处理赶上实时,我们插入了更多的从属计算机。 此外,我们必须考虑从站退出网络中途作业的可能性以及添加其他从站的可能性。中央计算机应确保所有工作均已完成,并确保从属设备放弃的工作已重新分配给另一个。 主要问题是:我应该使用哪种方法来实现这一目标? 但是,也许以下内容可以帮助我得出一个答案:我要尝试做的工作是否有名称或设计模式? 我需要什么知识领域才能实现使这些计算机互相交谈的目标?(例如,我所了解的数据库是否足够,还是会涉及我还不了解的套接字?) 有这种系统的例子吗?主要问题是一般性的,因此最好有一个起点/参考点。 注意我假设c + +和Windows的约束,所以朝该方向的解决方案将不胜感激。
11 c++  windows  networks 

2
Java的新发展将如何影响其与Scala和Clojure等语言的互操作性?
据我了解,Scala和Clojure都被设计为新的语言, 取决于JVM,并且 从某种意义上说,它们可以轻松地与Java代码集成,因为它们允许在Scala和Clojure代码中使用Java类。 从Java 8开始(或者在后续的Java版本中可能更强大),Java语言的语义将发生变化。 我想问一下这些变化将如何影响Java与Scala / Clojure之间的互操作性,以及将会带来什么后果。例如,由于Java 8中的lambda不是对象(请参见here),所以Scala和Clojure可能必须处理不是对象的Java值。这会是个问题吗? 我可以想到以下情形: Scala或Clojure语言将得到扩展,以适应新的Java语义(以处理新的非对象值)并支持与Java的互操作性。 Scala或Clojure语言将不会扩展。仅当新的Java功能(例如函数值)可以映射到现有概念时,这才有可能。例如,在Scala中,甚至函数都是对象,因此我猜Java函数在对Scala可见时会再次被包装到某种对象中。 Scala或Clojure语言将继续支持直至Java 6或7的互操作性,而无需关注Java的最新发展。这将要求仍旧支持Java的较早版本(至少由OpenJDK或其他项目支持),以便这些语言可以基于Java的更为保守/稳定的分支。 总结:我们可以期望Java的未来发展会对Scala和Clojure等语言产生影响,以保持与Java的互操作性吗?已经有一些(链接到)有关此主题的正在进行的讨论吗? 注意 我可以想象Scala,Clojure和其他基于JVM的语言在将其实现更新到较新版本的JVM时不会有任何重大问题(并且新的JVM功能将使此实现更加容易)。我的问题集中在Java语言的功能以及其他JVM语言是否能够/如何“看到” /使用这些新功能,而不是基于JVM的语言是否可以在最新的JVM上运行。
11 java  scala  clojure 

5
我应该只使用JSON来使用JSON吗
我正在使用PHP / MySQl后端构建一个学习博客站点。所有用户输入都使用POST请求中发送的表单进行处理。 使用JSON是否会使其更清洁或更易于维护或添加功能?还是我只是无缘无故地添加交换格式? 因此,从本质上讲,使用JSON最好地实现什么功能?
11 php  json 

3
“静态”作为关于无状态的语义线索?
我最近在Java中进行了一个中型项目的重构,以返回并添加单元测试。当我意识到模拟单例和静态模型是多么痛苦时,我终于“明白了”我一直以来一直在阅读的内容。(我是需要从经验中学习的人之一。哦。) 因此,既然我正在使用Spring创建对象并将它们连接在一起,那么我就不用去左右static关键字了。(如果我有可能要模拟它,那么它在与Math.abs()相同的意义上并不是真正的静态,对吧?)问题是,我已经习惯于使用static来表示方法不依赖在任何对象状态下。例如: //Before import com.thirdparty.ThirdPartyLibrary.Thingy; public class ThirdPartyLibraryWrapper { public static Thingy newThingy(InputType input) { new Thingy.Builder().withInput(input).alwaysFrobnicate().build(); } } //called as... ThirdPartyLibraryWrapper.newThingy(input); //After public class ThirdPartyFactory { public Thingy newThingy(InputType input) { new Thingy.Builder().withInput(input).alwaysFrobnicate().build(); } } //called as... thirdPartyFactoryInstance.newThingy(input); 因此,这就是敏感的地方。我喜欢旧方法,因为大写字母告诉我,就像Math.sin(x)一样,ThirdPartyLibraryWrapper.newThingy(x)每次都以相同的方式执行相同的操作。没有对象状态可以更改对象执行我要执行的操作的方式。这是我正在考虑的一些可能的答案。 没有其他人有这种感觉,所以我有问题。也许我只是还没有真正内部化OO的做事方式!也许我在用Java编写,但在FORTRAN或类似语言中思考。(由于我从未写过FORTRAN,这会给人留下深刻的印象。) 也许出于论证代码的目的,我正在使用静态作为不变性的一种代理。话虽这么说,有什么线索 要我在我的人一起,以保持它的到来代码知道什么是有状态的,什么不是? 如果我选择好的对象隐喻,也许应该只是免费提供?例如thingyWrapper,听起来好像它的包装状态是独立的,而包装状态Thingy本身可能是可变的。同样,thingyFactory听起来应该是不变的,但在创建时可能会选择不同的策略。


2
学习机器学习需要哪些数学技能?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我有兴趣参加有关机器学习的在线课程。就目前而言,我的数学非常基础,而我基本上是在可汗学院从零开始学习数学。在编程方面,我有相当多的经验,并且有很好的整体理解。我的问题是,我需要什么数学技能才能有效地理解和利用机器学习?

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.