问题列表 - 第318049页

使用 MinGW-w64 是否会破坏长双打?

我刚刚开始从 C++ 转向学习 C,并且刚刚尝试了大量的变量类型。我正在使用 MingGW-w64 工具集和 GCC 编译器。该版本据称使用 UCRT 运行时而不是 MSVCRT。我听说长双精度数与使用 MSVCRT 的双精度数相同,但 UCRT 似乎对长双精度数使用 128 位,对双精度数使用 64 位。然而,我在长双打方面遇到了一个非常奇怪的问题。根据 Google 的说法,我使用正确的“%Lg”作为 printf 。我尝试过“%llf”、“%Lf”和“%Le”,但它们都返回相同的结果。我首先将 PI 定义为,#define M_PI 3.1415926535897932384626433832795028841971693993751L因为“math.h”似乎没有定义 M_PI。将其转换为 double 似乎会返回正确的值,但 long double 值非常小。这是怎么回事?我意识到双倍就足够了,但我只是想知道问题是什么。我意识到我不需要为定义创建 const 变量。我只是在胡闹。

我能找到的唯一提到的是,MinGW 中的 long double 被破坏了,但那是针对 MSVCRT 版本,而不是 UCRT。

#include <stdio.h>
#include <math.h>

#define M_PI 3.1415926535897932384626433832795028841971693993751L

int main(void) {

    const long double PI = M_PI;

    printf("Size of double: %d\n", (int)sizeof(double));
    printf("Size of long double: %d\n", (int)sizeof(long double));

    printf("PI == %.6Lg\n", PI);

    return 0;

} …
Run Code Online (Sandbox Code Playgroud)

c printf x86-64 long-double mingw-w64

8
推荐指数
0
解决办法
124
查看次数

枚举可以用作打字稿中的类型吗?

我曾经使用枚举作为类型,因为以下代码是有效的:

enum Test {
    A,
    B,
}
let a: Test = Test.A
Run Code Online (Sandbox Code Playgroud)

但是,当我使用它作为 React 状态的类型时,IDE 会抛出错误:类型 FetchState 无法分配给类型 SetStateAction<FetchState.NULL>。

这是我所做的:

const [ state, setState ]: [ FetchState, React.Dispatch<FetchState> ] = useState(FetchState.NULL)
Run Code Online (Sandbox Code Playgroud)

我想确定一下是我的理解有误还是代码有问题。

enums types typescript reactjs

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

为什么 Java 21 虚拟线程需要的内存比平台线程少?

我确实知道平台线程很昂贵,因为它需要更多内存并且容易发生 CPU 上下文切换。

但是,在虚拟线程的情况下,少数平台线程可以服务难以想象的大量虚拟线程,虚拟线程是否仍然需要内存空间来钝化上下文/堆栈,然后将其附加到载体线程?

它对记忆有何影响?

为什么自旋 10000 个虚拟线程不会因内存不足而消亡,而 10000 个平台线程则会因内存不足而消亡?

他们都需要相同的堆栈吗?以及需要维护应用程序相关信息的上下文,对吧?

内存中是否存在仅适用于平台线程的额外开销,这就是我们说虚拟线程在内存中“更轻”的原因?如果是的话,是什么造成了这种差异?

java multithreading project-loom virtual-threads java-21

5
推荐指数
2
解决办法
246
查看次数

如何在不使用循环的情况下对两个多维数组应用函数?

我有两个多维数组,我想迭代特定维度并应用函数。如果我的输入是一维数组,我可以使用 mapply,但在这里我需要指定两个输入的边距或维度。

请参阅下面的简单示例:

输入

array_a <- array(runif(60), dim = c(5,4,3))
array_b <- array(runif(60), dim = c(5,4,3))
Run Code Online (Sandbox Code Playgroud)

假设我想在第三维上应用一个函数,该函数接受两个二维数组作为输入:

my_fun <- function(input_1, input_2){
  return(colSums(input_1 * input_2))
}
Run Code Online (Sandbox Code Playgroud)

我可以用循环轻松地做到这一点:

output <- array(NA, dim = c(3, 4))
for( i in 1:3){
  output[i,] <- my_fun(array_a[,,i], array_b[,,i])
}
Run Code Online (Sandbox Code Playgroud)

但有没有一种方法可以对其进行矢量化而不使用循环?

r

5
推荐指数
2
解决办法
105
查看次数

如何替换 Counter 以仅使用 numpy 代码

我有这个代码:

from collections import Counter
import numpy as np

def make_data(N):
    np.random.seed(40)
    g = np.random.randint(-3, 4, (N, N))
    return g


N = 100
g = make_data(N)
n = g.shape[0]

sum_dist = Counter()
for i in range(n):
    for j in range(n):
        dist = i**2 + j**2
        sum_dist[dist] += g[i, j]

sorted_dists = sorted(sum_dist.keys())
for i in range(1, len(sorted_dists)):
    sum_dist[sorted_dists[i]] += sum_dist[sorted_dists[i-1]]

# print(sum_dist)
print(max(sum_dist, key=sum_dist.get))
Run Code Online (Sandbox Code Playgroud)

输出为 7921。

我想将其转换为仅 numpy 代码并摆脱 Counter。我怎样才能做到这一点?

python numpy

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

Eclipse 中数组的可为空性

建议在 Eclipse 4.30 中使用以下代码:

    public void doSomething(@NonNull SomeType[] pArray) {
       // Whatever
    }
Run Code Online (Sandbox Code Playgroud)

如果我启用可空性检查(首选项/Java 编译器/“错误/警告”/空分析/启用基于注释的空分析),那么我会注意到以下内容:

编译器将参数类型视为“SomeType 元素的数组,所有元素均非空”,或者换句话说,@NonNull SomeType 的数组。(如果你不相信我,将 SomeType 更改为 byte,并注意错误消息,因为 byte 是原始类型,所以 @NonNull byte 没有任何意义。)

这一切都很好。但是,我想告诉编译器,数组本身是非空的。有没有可能表达这一点?(假设@NonNull (SomeType[]) pArray。)

谢谢!

java

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

DateTime 对象文化在管道函数之间丢失

我有两个功能get-foo:

Function get-foo{[PSCustomObject]@{Title = 'Some Title' ; CreationTime = [datetime]::Parse('31/01/2023')}}
Run Code Online (Sandbox Code Playgroud)

和set-foo:

Function set-foo{  
    [CmdletBinding()]
    Param(
        [Parameter(ValueFromPipelineByPropertyName)]
        [string]$Title,

        [Parameter(ValueFromPipelineByPropertyName)]
        [string]$CreationTime

    )
    Begin{
        ([cultureinfo]::CurrentCulture).Name
    }
    Process{
        $CreationTime
    }
}
Run Code Online (Sandbox Code Playgroud)

get-foo输出一个en-gb日期,正是我想要的日期格式:

[cultureinfo]::CurrentCulture = 'en-GB' ; get-foo

Title      CreationTime
-----      ------------
Some Title 31/01/2023 00:00:00
Run Code Online (Sandbox Code Playgroud)

当我通过管道传递get-foo到时set-foo,它将[dateTime]对象转换为美国日期:

get-foo|set-foo

# en-GB
# 01/31/2023 00:00:00
Run Code Online (Sandbox Code Playgroud)

我尝试通过更改以下行来修复它set-foo:

...
[Parameter(ValueFromPipelineByPropertyName)]
        [string]$CreationTime = [datetime]::Parse($CreationTime)  # [datetime]::Parse() respects the sessions culture
        #[string]$CreationTime
...
Run Code Online (Sandbox Code Playgroud)

现在我收到一个错误:

get-foo|set-foo
#ERROR: …
Run Code Online (Sandbox Code Playgroud)

powershell

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

为什么 void() 合法而 void{} 不合法?

今天晚上在制作模板时,我发现了一些令人惊讶的事情。当满足一组特定条件时,所讨论的模板用于std::invoke调用函数,否则在记录错误消息后返回默认构造的返回类型。这一直运行良好,直到我需要将模板应用到返回 的函数void。在与比我更有知识的人交谈后,他指出使用括号而不是大括号来构造返回类型将与 void 兼容。

果然,这适用于我能够使用的任何编译器,但它在更深层次上困扰着我。在下面的代码中R()给出了默认构造的外观,但我怀疑这确实是函数式转换的异常情况(例如。void()),这解释了为什么使用R{}(例如。void{})被大多数(但不是全部)认为是非法的编译器。

周围是否有任何语言律师可以验证上述内容,或提供有关实现以下模板的最惯用方法的建议,而无需使用概念创建两个版本?(我目前的目标是 C++20)。

template<typename F, typename... Args,
         typename R = std::invoke_result_t<F, Args...>>
auto call(F&& f, Args&&... args)
{
    if (some_runtime_condition) [[unlikely]] {
        // log an error message
        return R(); // R{} is invalid for functions returning void
    }

    return std::invoke(std::forward<F>(f), std::forward<Args>(args...));
}
Run Code Online (Sandbox Code Playgroud)

https://godbolt.org/z/fos4T6Wfj

蒂亚!

c++ language-lawyer c++20

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

如何强制孩子拥有某种属性

正如标题所说,我有一个像这样的反应FC:

const Test = (props: { 
    children: React.ReactElement<{ slot: "content" }> 
}) => {
    return <></>
}
Run Code Online (Sandbox Code Playgroud)

现在,传递一个没有 slot 属性的子元素,没有任何 ts 错误

const test = (
    <Test>
        <span>some content</span>
    </Test>
)
Run Code Online (Sandbox Code Playgroud)

我知道 span 标签将被推断为 JSX.Element,但是有什么方法可以让我收到 ts 错误,指出 span 没有 slot 属性

typescript reactjs

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

使用 Python 和 Selenium 抓取时清空 pdf

我在尝试使用 Python 中的 Selenium 从网页打印 PDF 时遇到问题。有问题的网页是 https://jamabandi.nic.in/land%20records/NakalRecord。我尝试从每个下拉列表中选择第一条记录,然后单击“Nakal”按钮生成 PDF。

但是,即使网页上存在表格,生成的 PDF 始终为空。我尝试过手动打印到 PDF 操作和使用 Selenium 自动打印,但在这两种情况下,生成的 PDF 都是空的。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

service = Service()
options = webdriver.ChromeOptions()
# Set up preferences for printing to PDF
settings = {
    "recentDestinations": [{"id": "Save as PDF", "origin": "local", "account": ""}],
    "selectedDestinationId": "Save as PDF",
    "version": 2
}
prefs = {
    'printing.print_preview_sticky_settings.appState': json.dumps(settings),
    'printing.print_to_file': True,
    'printing.print_to_file.path': '/Users/jatin/Downloads/output.pdf'  # Specify the desired output path
}
chrome_options.add_experimental_option('prefs', prefs)

import urllib.request …
Run Code Online (Sandbox Code Playgroud)

python webdriver web-scraping pandas selenium-chromedriver

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