小编Geo*_*rge的帖子

使用 react.js 渲染自定义 html 标签

我尝试做的一开始很容易,但是我从 webpack 得到一个(显然完全没用的)错误,我想知道如何修复它,我想要一个简单的“自定义”标签由 React 呈现,代码如下:

          let htmlTag = "h" + ele.title.importance;
          let htmlTagEnd = "/h" + ele.title.importance;
          return(
            <{htmlTag} key={elementNumber}>{ele.title.content}<{htmlTagEnd}>
          );
Run Code Online (Sandbox Code Playgroud)

基本上,我想要拥有自己的 {template} 标签,而不是拥有一个预定义的标签,我知道在这种情况下会有解决方法(例如,使用我的“重要性”值定义一个 className 并为此添加一些 css),但是为了科学起见,我想知道如何(以及是否)可以在 react/jsx 中完成此操作。

html javascript jsx ecmascript-6 reactjs

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

Golang 复制包含指针的结构

TL;DR 由于反对票和缺乏答案以及评论,我认为需要 tl;dr。

如何在 golang 中创建一个包含指针的结构,然后将其安全地按值传递给其他函数?(安全我的意思是不必担心这些函数可以取消对所述指针的引用并更改其指向的变量)。

如果您要给出的答案是“复制函数”,那么如何删除原始复制构造函数/运算符?用我的自定义复制功能覆盖它?或者以其他方式阻止人们使用它?


在 golang 中,我可以有一个包含指向动态分配变量的指针的结构。

我还可以将这些结构的实例传递给“复制”它们的函数。

但是,我无法覆盖或删除内置复制运算符。这意味着,理论上,我可以编写如下代码:

import (
        "fmt"
)

type A struct {
        a * int
}

func main() {
        var instance A
        value := 14
        instance.a = &value
        fmt.Println(*instance.a) // prints 14
        mutator(instance)
        fmt.Println(*instance.a) // prints 11 o.o
}

func mutator(instance A) {
        *instance.a = 11
        fmt.Println(*instance.a)
}
Run Code Online (Sandbox Code Playgroud)

这种类型的代码在这里显然有点荒谬。然而,假设成员字段“a”是一个复杂的结构,访问它的函数可能会尝试修改它。

一旦函数“mutator”被调用,程序员可能想要继续使用他的 A 实例并且(假设他不一定对结构进行编码或知道它的内部结构)甚至可能假设因为他传递了一个副本而不是一个指针,他的 A 实例将保持不变。

现在,有几 (3) 种流行的语言允许程序员考虑分配和操作不是 golang 的内存。我不知道 Rust 或 C,所以我将避免在 C++ 中如何解决这个问题:

a) 假设我是 AI 类的设计者,可以构建一个复制构造函数,生成以下代码:

#include <iostream>

    class …
Run Code Online (Sandbox Code Playgroud)

memory pointers go ownership

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

Scala 在编译时获取函数调用的行和文件

我想要的是一个能够从它被调用的地方打印行+文件的函数。

行为将是这样的:

log("x") //Called at line 15 of file Blax.scala
Run Code Online (Sandbox Code Playgroud)

应该打印

Blax.scala, line 15, message: x
Run Code Online (Sandbox Code Playgroud)

类似于以下 C++ 代码的东西:

    void _log(const char* message, const char* file, int line) { std::cout << file << ", " << line << ", message: " <<
message
<< "\n";}
    #define log(message) _log(message, __FILE__, __LINE__)
Run Code Online (Sandbox Code Playgroud)

这可以在 Scala 中做到吗?是否有可能以一种半可读且与未来和旧版本的编译器兼容的方式来完成?

我一直在尝试基于这里的宏部分实现类似的东西:https : //docs.scala-lang.org/overviews/macros/overview.html

但是代码非常难以阅读,而且这些文章似乎没有涵盖与我需要的内容密切相关的任何内容。

我想我的问题可以分为两三个:

a) 是否可以通过像函数一样调用宏来在 Scala 中内联任何类型的“传统”代码?

所以基本上调用blax(a)whichimpl_blax(a, "b", __C__)在编译之前扩展为。

b) 在 Scala 编译时获取当前行号和文件名的“推荐”方式是什么?

c) 如果 a 或 b 是不可能的,还有没有办法完成我想要的? …

macros jvm scala scala-2.12

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

确定类型时match和unwrap_or之间的区别

以下是我可以使用Rust 1.23.0编译的有效文件:

fn main() {
    let r = String::from("a");
    let a = Some(&r);
    let b = match a {
        Some(name) => name,
        None => "",
    };
    println!("{}", b);
}
Run Code Online (Sandbox Code Playgroud)

虽然下面的代码

fn main() {
    let r = String::from("a");
    let a = Some(&r);
    let b = a.unwrap_or("");
    println!("{}", b);
}
Run Code Online (Sandbox Code Playgroud)

错误失败:

fn main() {
    let r = String::from("a");
    let a = Some(&r);
    let b = match a {
        Some(name) => name,
        None => "",
    };
    println!("{}", b);
}
Run Code Online (Sandbox Code Playgroud)

据我所知,编译器在此处确定类型时的推理如下:

  1. 在使用a的情况下,match确定 …

generics option rust rust-result

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

如何在 __main__.py 中处理 python3 多处理

Il 提出的问题,我不明白问题的真正原因(这似乎与我在子进程之一中使用烧瓶有关)。

请忽略此内容(由于赏金而无法删除)

本质上,当将 python 库作为模块运行时,我必须启动一些进程和/或池。

然而,因为这__name__ == '__main__'始终是正确的__main__.py,这被证明是一个问题(请参阅多处理文档:https ://docs.python.org/3/library/multiprocessing.html )

我尝试了多种解决方案,范围从: pytgquabr.com:8182/58288945/using-multiprocessing-with-runpy 到基于文件的互文本,只允许main的内容运行一次,但多处理仍然表现得很奇怪(例如进程几乎死掉)一旦它们启动且没有错误日志)。

知道解决这个问题的“正确”方法是什么吗?

python-module multiprocessing python-multithreading python-3.x

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

gcc-c ++是不是优化当前x86-64处理器的原子操作

鉴于以下测试计划:

#include <atomic>
#include <iostream>

int64_t process_one() {
        int64_t a;
        //Should be atomic on my haswell
        int64_t assign = 42;
        a = assign;
        return a;
}

int64_t process_two() {
        std::atomic<int64_t> a;
        int64_t assign = 42;
        a = assign;
        return a;
}

int main() {
        auto res_one = process_one();
        auto res_two = process_two();
        std::cout << res_one << std::endl;
        std::cout << res_two << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

编译:

g++ --std=c++17 -O3 -march=native main.cpp
Run Code Online (Sandbox Code Playgroud)

代码为这两个函数生成了以下asm:

00000000004007c0 <_Z11process_onev>:
  4007c0:       b8 2a 00 00 00          mov    $0x2a,%eax …
Run Code Online (Sandbox Code Playgroud)

c++ concurrency assembly x86-64 atomic

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

Clickhouse,要数组的列值

我想做一个查询,然后将每个列的值转换为数组,我已经尝试找到一种方法来做到这一点,但直到现在它都在暗指我。

查询是一个简单的选择:

从 X 中选择 a,b,c

而不是 say 的通常结果(以默认格式):

val_a_1, val_b_1, val_c_1

----------------

val_a_2, val_b_2, val_c_2

-----------------

val_a_3, val_b_3, val_c_3
Run Code Online (Sandbox Code Playgroud)

我想为每一列获取一个数组,即:

[val_a_1, val_a_2, val_a_3], [val_b_1, val_b_2, val_b_3] , [val_c_1, val_c_2, val_c_3]
Run Code Online (Sandbox Code Playgroud)

这是可能吗 ?

sql clickhouse

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

当函数返回由模板类型和另一个模板类型组成的类型时,模板参数推导

标题很难用单词表达,但这是我试图在不可编译的代码中实现的:

template<template <typename> class Container>
Container<int> foo() {
    return Container<int>{1,2,3};
}

int main() {
    auto bar = foo<std::vector>();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

基本上我想要一个模板函数,它可以从传递给它的类型和先前已知的类型(在这种情况下int)中"组合"它的返回类型.在这种情况下,我想要一个函数,它在调用者指定的容器内返回任意数据类型.(任意地,我不是指在编译时是随机的或未确定的,而是调用者没有关于数据类型将是什么的"输入",这是在函数本身内部确定的).

这种类型的东西甚至可以通过使用std + 1z的clang或gcc来实现吗?我错过了一些非常明显的东西吗 是否存在跨越数百个角色的"1线"解决方案,我不知道?

我在这里看到了类似事物的各种例子,但它们似乎都假设函数将指针或引用作为参数并填充这些容器.

c++ templates metaprogramming template-meta-programming c++17

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

Golang将提供的文件名称传达给浏览器/客户端

我正在使用golang动态提供一些文件,以下代码处理文件的实际服务:

        data, err := ioutil.ReadFile(file.Path)
        logo.RuntimeError(err)
        http.ServeContent(w, r, file.Name, time.Now(), bytes.NewReader(data))
Run Code Online (Sandbox Code Playgroud)

在前面的代码中,"file"只是一个自定义结构,包含有关该文件的各种信息.

这段代码的唯一问题是,每当我调用特定的处理程序时,它都会导致我下载一个名为"download"的文件.我想给用户正在下载自定义名称的文件,或者更确切地说,以尽可能浏览器中性的方式表示我希望文件具有某个名称.

我认为这可能是使用w.WriteHeader可行的吗?但我一直无法找到有关如何执行此操作的任何示例或明确指导.

http file go server

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

如何将 Tokio 线程池限制为一定数量的本机线程?

将 Tokio (v 0.1.11)n线程池限制为OS 本机线程的正确方法是什么,其中n是任意数量,最好在运行时配置?

据我所知,可以使用 usingtokio_current_thread::block_on_all代替tokio::runtokio_current_thread::spawn代替在单线程模式下使用 Tokiotokio::spawn

我想要一个类似的解决方案,但对于n >= 1.

multithreading asynchronous rust mio rust-tokio

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