小编evi*_*ing的帖子

我可以假设按位与运算是 O(1) 吗?如果是为什么?

我的处理器只能对 8 位或 16 位无符号整数进行算术运算。

1) 这意味着该处理器的字长是 16 位,对吗?

对单词的操作是 O(1)。

这样做的原因与处理器如何工作的实际电路级实现有关,对吗?

如果我将两个单词相加,结果是一个超过 16 位的数字,我可以说明以下内容吗?

1) 处理器可以添加数字,但只会报告 16 个最低有效数字。

2) 还要报告超过 16 位,处理器必须有软件,允许这些操作大数字(不适合一个字的数字)。

最后,

假设我有一个单词 w,它是一个 16 位数字,我想要八个最低有效数字。我可以做 w & 0xFF。这个操作的时间复杂度是多少?这是 O(1) 也是因为处理器的电路级实现吗?

algorithm big-o time-complexity bitwise-and

5
推荐指数
1
解决办法
2304
查看次数

运行本地Web服务器意味着什么?

我可以在Ruby on Rails/JS/HTML/CSS上编程和开发,以创建一个完整的堆栈应用程序.但是,我对HTTP请求/响应周期的理解存在漏洞.以下几点是否正确?

  • 如果我创建一个Rails应用程序,并在命令行类型上rails server我得到一个本地服务器,我可以请求.如果我打开浏览器,键入localhost:3000,然后按回车键,我正在向本地服务器发出HTTP请求.
  • Rails默认使用一个名为WEBrick的Web服务器,不过还有其他像Thin,Puma和Unicorn.这些都是软件,它们是Web服务器的原因是软件实现了处理HTTP请求的功能.
  • 当我运行本地Web服务器时,这意味着我的计算机正在运行其中一个侦听HTTP请求的软件.

以上是什么意思"运行本地Web服务器"?

  • 我已经看到了"运行本地Web服务器"的其他方法示例.其中一个是npm install -g http-server在项目目录中运行,然后导航到localhost:8080.这也只是开始运行并接受端口8080上的HTTP请求的软件吗?
  • 在Ruby命令行上,安装rack gem : gem install rack. 然后在一个新的Ruby文件中,我们require 'rack'启动一个Web服务器:

Rack::Server.start({ app: MySimpleApp, port: 3000 })

然后,我们可以定义MySimpleApp符合机架的Web应用程序(响应call方法的对象):

class MySimpleApp
  def self.call
    (...)
  end
end
Run Code Online (Sandbox Code Playgroud)

所以现在当我们在浏览器中导航到localhost:3000时,会执行MySimpleApp.机架只是运行它的默认WEBrick服务器吗?以上命令是否只是运行本地Web服务器并定义HTTP请求进入时要执行的操作(执行MySimpleApp)?

ruby webserver ruby-on-rails http

5
推荐指数
1
解决办法
1050
查看次数

在 Jest 中编写手动模拟时,如何输入调用 genMockFromModule 的结果?

这是我的目录的orders外观。我想测试一个使用orders/helpers手动 Jest 模拟的函数。

orders
  __mocks__
    helpers.ts
  __tests__
    orders.ts
  helpers.ts
  orders.ts
Run Code Online (Sandbox Code Playgroud)

我正在orders/helpers.ts导出一个简单的函数:

export const addIdToOrder = (order: Omit<NewOrderState, 'id'>): Order =>
  ({
    ...order,
    id: v4(),
  } as Order);
Run Code Online (Sandbox Code Playgroud)

我可以如下orders/__tests__/orders.ts模拟该模块orders/helpers

const MOCK_ID = 'test-id-1234';
// mock addIdToOrder so we can have a deterministic id in tests
jest.mock('../helpers', () => ({
  __esModule: true,
  addIdToOrder: (order: Omit<NewOrderState, 'id'>): Order =>
    ({
      ...order,
      id: MOCK_ID,
    } as Order),
}));
Run Code Online (Sandbox Code Playgroud)

但是,现在我需要添加另一个测试文件,它还需要从 模拟这个函数orders/helper,所以我添加orders/__mocks__/helpers并尝试在那里定义模拟。这是我到目前为止所拥有的: …

typescript reactjs jestjs

5
推荐指数
1
解决办法
925
查看次数

为什么当主JS线程每隔50ms接收一次来自Web worker的消息并简单地用console.logs记录时,堆内存就会无限增加?

问题:每隔50毫秒简单地将消息从Web工作者发送到主线程,并通过控制台记录消息,这导致无限制地增加了堆内存的使用。

我为这个问题创建了一个示例github回购,您可以用它来重现这个问题。

这是该项目中内容的描述:

  • 一个server.js运行非常简单的websocket服务器的文件,该服务器在连接时仅每50毫秒就开始发送消息。消息是一个大数据对象,具有从正态分布中采样的一堆数字(其中有6000个)。

  • index.html加载脚本的文件main.js

  • main.js从文件加载Web工作者worker.js,并向其发送消息,告知该文件连接到Websocket服务器,该服务器每50毫秒生成一次数据。

  • worker.js接收到第一条消息后,将连接到Websocket服务器,并开始每50毫秒接收一条带有数字的消息。它通过转换数据来处理消息,然后将其发送到main.js

  • main.js 收到数据后,只需console.logs即可。

如果使用此设置打开了devtools并配置了该应用程序,您将看到堆使用情况像阶梯一样在视觉上上升:每当主线程处理来自Web Worker的消息时,堆就会增加。偶尔会有垃圾回收,但只会部分减少使用量。

这是内存配置文件的屏幕截图

这是没有控制台日志时的内存配置文件的屏幕截图在main.js文件中,即,当主线程从Web Worker接收消息但对它完全不执行任何操作时,甚至没有控制台记录它。看起来应该看起来像,没有内存问题和垃圾回收处理的事情。

当主线程中有控制台日志时,为什么堆无限制地上升?

javascript

5
推荐指数
1
解决办法
43
查看次数

为什么使用splat运算符创建哈希?

我正在关注RubyMonk教程.有一个部分涉及splat运算符,以及如何将它与Hash一起使用.这是有效的代码:

puts Hash[4, 8]
puts Hash[ [[4, 8], [15, 16]] ]
Run Code Online (Sandbox Code Playgroud)

但后来它说你也可以使用:

ary = [[4, 8], [15, 16], [23, 42]]
puts Hash[*ary.flatten]
Run Code Online (Sandbox Code Playgroud)

为什么有人会使用最后一种形式创建哈希,而不是Hash[ary]直接做?

ruby

4
推荐指数
1
解决办法
255
查看次数

为什么react-modal需要prop contentLabel?

我开始在我的react-modal组件上收到此警告:

警告:propType失败:contentLabel未指定必需的prop Modal.

它不会阻止模态正常工作,我只是在开发工具控制台中看到警告.我可以通过指定一些随机字符串来传递这个prop,但我不明白它实际上用于什么,以及为什么它是必需的.

reactjs react-modal

4
推荐指数
1
解决办法
1744
查看次数

当我没有在原始类型定义中定义类型类约束时,为什么要添加它?

在序幕中,我正在检查某些类型。

*> let kessel :: (Ord a, Num b) => a -> b -> a; kessel = undefined
*> :t kessel 1 2
kessel 1 2 :: (Num a, Ord a) => a
Run Code Online (Sandbox Code Playgroud)

我不明白为什么Num a将包括在内作为类型的约束kessel 1 2。它不在kessel的原始类型定义中。为什么会出现在其中:t kessel 1 2

haskell

4
推荐指数
1
解决办法
63
查看次数

拒绝 WebRTC 报价的正确方法是什么?

在 WebRTC 中,事情发生的顺序似乎非常明确。在本地,我getUserMedia用来获取本地流,并将流保存到变量中。我创建了一个RTCPeerConnection对象,pc我将其命名为,然后将本地流添加到其中。我向 中添加了一个onaddstream事件处理程序pc,以便可以将远程用户的流保存到一个变量中,并最终将其设置为srcHTML 元素的属性,例如audio. 我还在onicecandidatemypc上设置了事件处理程序来处理冰候选者。

此时,有一个RTCPeerConnection,但还没有远程用户“连接”。这是“提议/答案”开始的地方。假设我正在使用 websockets 发送信号,并且我收到一个报价,这是一条名为“报价”的消息,包含一个 SDP 对象。我如何拒绝它以及如何在两个端点上处理它?

例如,我可以发送一条消息“拒绝”,该消息将转发给其他用户。我的 RTCPeerConnection 仍然存在,也许我希望能够接收其他调用。按原样,我不需要对我的 RTCPeerConnection 做任何事情,对吗?发送报价的其他用户是否必须执行任何操作?他是否必须关闭那个特定的 RTCPeerConnection?我不这么认为,因为他所做的只是创建一个 SDP 对象,然后在 WebRTC 之外,通过 websockets 将对象发送给另一个用户。他确实添加了使用setLocalDescription虽然。当报价被拒绝时,他需要对此做些什么吗?

当我创建报价并将其发送给其他用户时,如果我永远不会得到答复,我是否可以只向第三个用户发送报价,然后如果他发送答复,我就与他联系了?

我没有找到任何关于 RTCPeerConnection 生命周期的信息。

javascript webrtc

3
推荐指数
1
解决办法
1520
查看次数

React Native 项目中的 node_modules 目录位于哪里?

在一个使用 npm 模块的简单 JavaScript 应用程序中,我有一个 package.json,运行后npm install我会得到一个 node_modules 文件夹。

这在 React Native 中是如何工作的,React Native 项目中的 node_modules 目录在哪里?

npm react-native

2
推荐指数
1
解决办法
5714
查看次数

在 React/Redux 应用程序中存储 RTCPeerConnection 对象的最佳位置在哪里?

RTCPeerConnection 是一个具有某些方法的对象,这些方法在调用时会改变对象(例如,setLocalDescription、addIceCandidate)。这些方法是根据从 WebRTC 连接的另一端接收到的信号调用的(比如当您收到报价或冰候选时)。

因此,这个对象似乎不太适合在 redux 存储中,因为开发人员最初无法控制突变,并且在 redux reducer 中,您不能只创建 RTCPeerConnection 的副本作为这将消除您之前的 webRTC 会话。

但是,在使用 React 的 WebRTC 应用程序中,可能不同的组件需要访问 RTCPeerConnection 对象(例如,它可能是在应用程序中的顶级组件的挂载上实例化的,但随后在某些 UI 组件中,例如在接受调用的树,您想调用 RTCPeerConnection 上的一个方法来创建对收到的 webRTC 报价的答复。或者可能是深层嵌套的组件需要发起调用)。是否唯一的解决方案是将对象作为道具向下传递到组件树?有没有办法将 redux 与这样的复杂对象一起使用?

更新:考虑下面关于使用中间件处理 socket.io 的答案,让我重新定义我原来的问题:如果我有一个 RTCPeerConnection 对象作为顶级组件中的状态,来构建处理调度调用的中间件是否有意义最终必须以某种方式接收对原始 RTCPeerConnection 的引用以进行方法调用,例如setRemoteDescription

webrtc reactjs redux

2
推荐指数
1
解决办法
705
查看次数