小编ng.*_*bie的帖子

javascript - 为什么有同步和异步模块的规范?

我刚刚读完这篇关于 Javascript 模块的文章。我可以理解CommonJS模块是同步加载的,而AMD模块是异步加载的。

我不明白的是,如果我以 CommonJS 格式编写它,模块如何变得神奇地同步,或者如果我以AMD 格式编写它,它如何变得神奇地异步。我的意思是 javascript 甚至没有defineorrequire关键字。它们只是规范而不是库。

我的意思是模块加载的行为取决于模块加载器,而不是模块的结构。如果是这样的话,为什么要遵循不同类型模块的编码模式呢?

我是否正确地假设 NodeJS 世界中的所有库都是同步加载的,无论它们以什么格式编写。并且浏览器空间中的所有模块都是异步加载的。

如果我的上述假设是正确的,那么为什么还有 UMD 规范?我的意思是,如果脚本根据其所在的环境进行加载,那么为什么要制定通用模块加载规范呢?

有人可以帮我解决这个困惑吗?

javascript asynchronous node.js

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

仅当乘积小于等于 k ​​时,通过将相邻元素相乘来最小化数组元素

我最近在一次在线评估中遇到了这个问题。

arr = [2,6,2,4] 
k = 15
Run Code Online (Sandbox Code Playgroud)

仅当两个相邻元素的乘积小于 时,才需要通过相乘来最小化数组元素k

例子:

(2,6,2,4)
(2*6,2*4) --> since 12 and 8 are less than k which is 15
(12,8)
Run Code Online (Sandbox Code Playgroud)

还可以遵循以下模式:

(2,6,2,4)
(2,6*2,4) 
(2,12,4) --> no . of  elements is 3 which is more than 2 thus non-optimal.
Run Code Online (Sandbox Code Playgroud)

我已经被这个问题困扰好几天了。

我尝试解决矩阵链乘法问题,但无法取得任何进展。主要区别在于,在 MCM 问题中,所有矩阵都可以相互相乘。不存在两个矩阵不能相乘的情况。

有什么提示吗?

arrays algorithm dynamic-programming min

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

参数如何传递给 Linux 系统调用?通过寄存器还是堆栈?

我试图通过阅读Robert Love 的 Linux Kernel Development来了解 Linux 内核的内部结构。

在第 74 页上,他说将参数传递给 a 的最简单方法syscall是通过:

不知何故,用户空间必须在陷阱期间将参数传递给内核。最简单的方法是通过传递系统调用号的相同方式:参数存储在寄存器中。在 x86-32 上,寄存器 ebx、ecx、edx、esi 和 edi 按顺序包含前五个参数。

现在这让我感到困扰,原因有很多:

  1. 所有系统调用都使用该asmlinkage选项定义。这意味着参数总是在堆栈上而不是寄存器上找到。那么寄存器的所有这些业务是什么?
  2. 有可能在执行系统调用之前将值复制到内核堆栈上。我不知道为什么这会很有效,但它可能是一种可能性。

c linux interrupt system-calls linux-kernel

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

带有单个过滤器的奇数和偶数?

我最近遇到了一个面试问题,要求我从List. 唯一的问题是我不能使用如下 2 个过滤器

List<Integer> nums = Arrays.asList(1,2,3,4,5);
        
List<Integer> odd = nums.stream().filter(n -> n%2 != 0).collect(Collectors.toList());
        
List<Integer> even = nums.stream().filter(n -> n%2 == 0).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

我说这是不可能的,因为最终collect方法只能返回 1 个列表。

我错过了什么?

java java-8 java-stream

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

Python strptime无法解析日期

当我尝试运行以下代码时,即使按照我所知的日期遵循指定的格式字符串,我仍会遇到值错误。

try:
  datetime.datetime.strptime('23-Jan-2017 15:30:00', '%d-%B-%Y %H:%M:%S')
except ValueError as e:
  print('Not mathcing')
  traceback.print_exc()
Run Code Online (Sandbox Code Playgroud)

我要去哪里错了?日期和格式与给定的格式字符串匹配,那么我在做什么错呢?

python strptime

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

asmlinkage 是堆栈还是寄存器?

在大多数语言中,C 包括堆栈用于函数调用。这就是如果您在递归时不小心会收到“堆栈溢出”错误的原因。(不是双关语)。

如果这是真的,那么asmlinkageGCC 指令有什么特别之处。

它说,来自#kernelnewbies

asmlinkage 标签是我们应该注意的关于这个简单函数的另一件事。这是一些 gcc 魔法的 #define,它告诉编译器该函数不应期望在寄存器中找到它的任何参数(一种常见的优化),而只能在 CPU 的堆栈上。

我的意思是我不认为寄存器用于正常的函数调用

更奇怪的是,当你了解到它是在 x86 上使用 GCC regparm 函数属性实现的。

regparm的文档如下:

在 x86-32 目标上,如果参数在寄存器 EAX、EDX 和 ECX 中而不是在堆栈中是整数类型,则 regparm 属性会导致编译器将第一个参数传递给 number。

这基本上与asmlinkage正在尝试做的相反。

那么会发生什么?它们是在堆栈上还是在寄存器上。

我哪里错了?

信息不是很清楚。

linux x86 gcc linux-kernel function-attributes

0
推荐指数
1
解决办法
98
查看次数

仅在 Intellij 调试器中检测到 Mockito 未完成的存根异常

仅当我尝试通过 IntelliJ 调试器调试测试时才会出现此问题。当我只是简单地运行测试时,这种情况不会发生。

CustomerChoiceRepository 是一个普通的 Spring Boot JPA 存储库,此处使用@Mock.

在此输入图像描述

当此行在调试器中执行时,我在变量的监视部分中收到以下错误:

在此输入图像描述

整个错误信息是:

Method threw 'org.mockito.exceptions.misusing.UnfinishedStubbingException' exception. Cannot evaluate com.item.repository.jpa.CustomerChoiceRepository$MockitoMock$1318657964.toString()
Run Code Online (Sandbox Code Playgroud)

同样,这仅在 IntelliJ 调试器中检测到,因此当我调试它时测试才会失败。

所以我的问题是:这里发生了什么?

这是一个错误吗?这是我无法理解的事情,因为我不太了解 Mockito 的内部结构吗?

debugging stub intellij-idea mockito spring-boot

0
推荐指数
1
解决办法
2230
查看次数