问题标签 [principles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
234 浏览

c# - C# 重载 operator==:返回 bool 以外的其他内容

我正在编写一个类库来使用牛顿法求解非线性方程。我偶然发现了运算符重载,并考虑过重载 ==-Operator。类似的东西expression1 == expression2将解决方案返回为 a Constant,它基本上是一个包装类System.Double

尽管它编译得非常好并且可以工作,但我问自己是否可以合理的设计选择来重载==-Operator以返回除了两个对象相等之外的东西作为 a bool,特别是因为你还必须重载!=-Operator. 这是不好的做法,我应该只使用我的方法Equal吗?

0 投票
1 回答
25 浏览

multithreading - 程序可以在顺序一致的架构上执行的方式数

我非常不善于理解和尝试解决这个问题,假设我们有 3 个线程,每个线程都有 a、b、c 指令,我需要找到程序可以在顺序一致的架构上执行多少种不同的方式?H 我应该如何解决这个问题?

0 投票
2 回答
335 浏览

algorithm - SLAM 算法在哪里以及如何保存地图?

我是 SLAM 的新手,我敢肯定这个问题很愚蠢,但我真的很想知道这种姿势和区域数据积累在 SLAM 中是如何进行的。一旦算法初始化,它就会开始跟踪姿势(并在某处(在哪里?)写入坐标序列)并恢复地图(存储在某处(在哪里?)的点云)。我对么?然后算法迭代所有持久点以实现闭环目的?积分是否存储在某个数据库中?或者使用什么数据结构?

请帮助我澄清情况!(因为你的脑袋可能偶尔会被无人机的螺旋桨切开,这是我未来的 SLAM 驱动的!))

提前致谢!

0 投票
1 回答
44 浏览

c++ - C++ 原理与练习 - 从输入值 n 中查找素数

找到 Stroustrups 初学者书籍 Ch4Ex15 的这个答案,问题是找到前 n 个素数:

我很难理解的两件事:

  1. 为什么顶部有一段代码在int main之外,是在int main之后执行的吗?
  2. 这些语句是如何工作的(它们是双重条件吗?) bool prime (vector<int> table, int number)if (prime(table,next))

谢谢,肖恩

0 投票
0 回答
24 浏览

java - Java Swing 监听器

我知道如何使用 Java 侦听器进行编码,但我有一个理解要求:

在事件发生之前,每个侦听器中是否都有一个循环来侦听某些内容。查了源码,发现了一些java键事件监听器的实现,但是自然有很多原生函数,作为初学者看不懂。

如果你能向我解释一个像简单关键监听器这样的监听器的原理,我会很高兴。

Ps:我试图找到一个现有的解释,但我没有找到解释原理以及后台是否总是存在循环的问题。

编辑:我想知道它是如何工作的。无论是使用轮询机制(循环)还是使用中断或其他东西 

多谢

0 投票
1 回答
59 浏览

oop - SOLID - 违反开闭原则

我有以下代码片段

我认为这种方法的问题是如果行为发生变化(另一种格式类型)需要更改源代码;以及我错过的其他 SOLID 违规行为。

如何更好地实施?

0 投票
1 回答
49 浏览

c - 为什么这个布尔值没有给我正确的值?

首先,我的程序可以运行,但是b3表达式 (a boolean) 并没有像我想要的那样运行。当我选择一列火车是 DIESEL 或 ELECTRICAL 时,它给我的值不是 0 (false),而是当一些火车是 DIESEL 或 ELECTRICAL 时给我的值 1 (TRUE)。只有当两列火车都是电动的或都是柴油的时,它才会给出错误的结果。当一列火车是电动的而另一列是柴油时,它让我一直给我 1(真)。我的代码更广泛,但这些是与我所考虑的问题相关的部分。

0 投票
1 回答
189 浏览

c - 运行程序时出现“分段错误(核心转储)”

(对不起,我的英语不好顺便说一句)好吧,我正在复制这段代码的解决方案。我的代码与解决方案相同(代码没问题,做得很好),但是当我运行程序时,会出现一条消息,上面写着Segmentation fault (core dumped). 我不知道如何向您展示我的程序的捕获,但我的代码似乎没问题。当我运行程序时,它会在询问商品的体积时完成。Segmentation fault (core dumped)然后出现此消息:

0 投票
1 回答
30 浏览

c# - 模型类中的虚拟属性如何违反持久性无知原则?

我刚刚阅读(修订)一些架构原则(如此处所述https://docs.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/architectural-principles)并感到有点困惑关于persistence ignorance违反这样的原则的例子:

所以我不清楚为什么这样的要求会违反持久性无知原则。假设我们的模型类只是 C#,由 .NET 编译器编译。要加载模型实例,只需正常创建类实例(所有属性都从相应的持久数据初始化,例如:数据记录)。要保存它,只需从模型实例中读取值并将其放回持久存储(任何类型)。

实际上Entity Framework确实有启用一些很酷的功能(例如延迟加载)的要求……而且我确实看到 EF 在支持各种持久存储(数据库)方面做得很好,据我所知,这应该是相反的——称为a violation of the persistence ignorance principle

你能给我一些现实世界的例子来证明这requiring virtual properties可能违反持久性无知原则吗?如果有的话,是不是有时我们不能仅仅遵守所有的原则,我们可能不得不在遵循好的原则和拥有好的特性之间进行权衡(比如 EF ?

0 投票
1 回答
249 浏览

javascript - Node.js 如何处理传入的请求?

为了深入了解有关 Node.js 的更复杂的概念,我正在做一些研究以确保我了解有关该语言的原理及其构建的基本构建块。

就我而言,Node.js 依赖于反应器模式来处理每个传入的请求。该算法基于事件解复用器算法。第二个负责处理请求操作及其资源,然后,一旦操作完成,它将“结果”添加到事件队列中。在这个过程之后,事件循环现在负责为每个事件执行处理程序。

作为一个单线程进程,如果事件循环并行管理所有事件队列任务,我正在努力理解事件多路分解器如何处理所有传入操作......

我在Node.js 文档中找到了这个:

由于大多数现代内核都是多线程的,它们可以处理在后台执行的多个操作。当这些操作之一完成时,内核会通知 Node.js,以便可以将适当的回调添加到轮询队列中以最终执行。我们将在本主题后面更详细地解释这一点。

这是否意味着 Node 不处理 Event Demultiplexer 任务并且 Node 只是获取结果以便将其添加到事件队列中?这是否意味着 Node 不是单线程的?

我在网上找到了一些有用的图形,它们清楚地解释了每个请求所遵循的路径,但是真的很难找到一些解释线程处理每个请求的实际时间的图形。