小编Tim*_*mmm的帖子

在Eclipse启动时禁用插件

我刚刚为Eclipse安装了一个插件,但结果Eclipse将不再启动.它说"有一个错误"或一些这样无意义的消息.

如何在没有加载插件的情况下启动Eclipse,以便我可以实际卸载有问题的软件?

eclipse plugins metrics startup

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

使用PostgreSQL全文搜索排名的最佳方式

这个答案后,我想知道使用PostgreSQL的内置全文搜索的最佳方法是,如果我想按等级排序,限制只匹配查询.

让我们假设一个非常简单的表.

CREATE TABLE pictures (
  id SERIAL PRIMARY KEY,
  title varchar(300),
  ...
)
Run Code Online (Sandbox Code Playgroud)

管他呢.现在我想搜索该title字段.首先我创建一个索引:

CREATE INDEX pictures_title ON pictures 
  USING gin(to_tsvector('english', title));
Run Code Online (Sandbox Code Playgroud)

现在我想搜索'small dog'.这有效:

SELECT pictures.id, 
       ts_rank_cd(
         to_tsvector('english', pictures.title), 'small dog'
       ) AS score
FROM pictures
ORDER BY score DESC
Run Code Online (Sandbox Code Playgroud)

但我真正想要的是:

SELECT pictures.id, 
       ts_rank_cd(
         to_tsvector('english', pictures.title), to_tsquery('small dog')
       ) AS score
FROM pictures 
WHERE to_tsvector('english', pictures.title) @@ to_tsquery('small dog')
ORDER BY score DESC
Run Code Online (Sandbox Code Playgroud)

或者这个(不起作用 - 不能scoreWHERE条款中使用):

SELECT …
Run Code Online (Sandbox Code Playgroud)

sql postgresql full-text-search ranking

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

严格别名,-ffast-math和SSE

考虑以下程序:

#include <iostream>
#include <cmath>
#include <cstring>
#include <xmmintrin.h>

using namespace std;

int main()
{
    // 4 float32s.
    __m128 nans;
    // Set them all to 0xffffffff which should be NaN.
    memset(&nans, 0xff, 4*4);

    // cmpord should return a mask of 0xffffffff for any non-NaNs, and 0x00000000 for NaNs.
    __m128 mask = _mm_cmpord_ps(nans, nans);
    // AND the mask with nans to zero any of the nans. The result should be 0x00000000 for every component.
    __m128 z = _mm_and_ps(mask, nans);

    cout << …
Run Code Online (Sandbox Code Playgroud)

c++ sse clang strict-aliasing fast-math

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

如何通过开发工具控制台使用ES6模块

据我了解,如果创建ES6模块,则只能从本身就是模块的代码中导入它。这意味着非模块代码(即内联Javascript)或Chrome开发工具控制台永远无法访问模块中的代码。

真的吗?有什么办法可以解决,因为这似乎是一个极端的限制。

javascript es6-modules

12
推荐指数
3
解决办法
3158
查看次数

在Clang中将uint64_t转换为字节数组并进行最佳移植

如果要转换uint64_tuint8_t[8](小尾数)。在小端架构上,您可以执行ug reinterpret_cast<>memcpy(),例如:

void from_memcpy(const std::uint64_t &x, uint8_t* bytes) {
    std::memcpy(bytes, &x, sizeof(x));
}
Run Code Online (Sandbox Code Playgroud)

这将产生有效的组装:

mov     rax, qword ptr [rdi]
mov     qword ptr [rsi], rax
ret
Run Code Online (Sandbox Code Playgroud)

但是,它不是便携式的。在一点字节序的机器上它将具有不同的行为。

要转换uint8_t[8]uint64_t一个很好的解决方案-只需执行以下操作:

mov     rax, qword ptr [rdi]
mov     qword ptr [rsi], rax
ret
Run Code Online (Sandbox Code Playgroud)

这看起来效率低下,但实际上使用Clang时,-O2它会生成与以前完全相同的程序集,如果在大型字节序计算机上进行编译,它将足够聪明以使用本机字节交换指令。例如此代码:

void to(const std::uint8_t* bytes, std::uint64_t &x) {
    x = (std::uint64_t(bytes[0]) << 8*0) |
        (std::uint64_t(bytes[1]) << 8*1) |
        (std::uint64_t(bytes[2]) << 8*2) |
        (std::uint64_t(bytes[3]) << 8*3) |
        (std::uint64_t(bytes[4]) << 8*4) …
Run Code Online (Sandbox Code Playgroud)

c++ clang endianness

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

原子向量的初始化

考虑:

void foo() {
  std::vector<std::atomic<int>> foo(10);
  ...
}
Run Code Online (Sandbox Code Playgroud)

foo的内容现在有效吗?还是我需要显式循环并初始化它们?我检查了Godbolt,它看起来还不错,但是在这一点上,标准似乎非常混乱。

所述的std ::矢量构造器表示,它插入默认插入的实例std::atomic<int>,这是初始化值经由放置new

我认为这种价值初始化的效果适用:

2)如果T是具有既不由用户提供也未删除的默认构造函数的类类型(即,它可能是具有隐式定义或默认默认构造函数的类),则将该对象初始化为零,然后将其如果具有非平凡的默认构造函数,则默认初始化;

因此在我看来,原子是零初始化的。所以问题是,是否std::atomic<int>在有效对象中对结果进行零初始化?

我猜答案是“在实践中是,但没有真正定义”?

注意:此答案同意它是零初始化的,但并没有真正说明是否意味着该对象有效。

c++ vector atomic

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

可以在Rust中推断数组长度吗?

我可以做这个:

let a: [f32; 3] = [0.0, 1.0, 2.0];
Run Code Online (Sandbox Code Playgroud)

但为什么这不起作用?

let a: [f32; _] = [0.0, 1.0, 2.0];
Run Code Online (Sandbox Code Playgroud)

在我看来,长度是多余的和微不足道的推断.有没有办法避免必须明确指定它?(而且不必附加f32到所有文字.)

rust

11
推荐指数
3
解决办法
389
查看次数

对自我的可变借用不会变为不可变

这段代码无法通过可怕的借阅检查器(游乐场):

struct Data {
    a: i32,
    b: i32,
    c: i32,
}

impl Data {
    fn reference_to_a(&mut self) -> &i32 {
        self.c = 1;
        &self.a
    }
    fn get_b(&self) -> i32 {
        self.b
    }
}

fn main() {
    let mut dat = Data{ a: 1, b: 2, c: 3 };
    let aref = dat.reference_to_a();
    println!("{}", dat.get_b());
}
Run Code Online (Sandbox Code Playgroud)

错误:

error[E0502]: cannot borrow `dat` as immutable because it is also borrowed as mutable
  --> <anon>:19:20
   |
18 |     let aref = dat.reference_to_a(); …
Run Code Online (Sandbox Code Playgroud)

rust borrow-checker

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

Rust的临时指针是否正常?

我有这样的功能:

extern {
    fn foo(layout: *const RawLayout) -> libc::uint8_t;
}

fn bar(layout: Layout) -> bool {
    unsafe {
        foo(&layout.into() as *const _) != 0
    }
}
Run Code Online (Sandbox Code Playgroud)

Layout可转换.into()的可复制类型在哪里RawLayout

我想确保我理解发生的事情,因为它不安全.据我所知,layout.into()创建一个临时的RawLayout,然后&对它进行引用,as *const _并将其转换为原始指针(*const RawLayout).然后foo()调用该函数并返回,最后RawLayout删除临时函数.

那是对的吗?还是有一些棘手的原因我不应该这样做?

rust

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

在 stripDebugDebugSymbols 步骤中找不到 arm-linux-androideabi 工具链

与这个问题类似,我得到了相同的错误,但在不同的地方:

Execution failed for task ':app:stripDebugDebugSymbols'.
> No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi
Run Code Online (Sandbox Code Playgroud)

其他各种答案建议清除构建文件夹、卸载并重新安装 NDK 等。我已经这样做了很多次,但仍然收到此错误。

我不明白的是,正在寻找arm-linux-androideabi工具链。我的目录的内容C:\Users\Tim\AppData\Local\Android\Sdk\ndk\23.0.7123448\toolchains\llvm\prebuilt\windows-x86_64\bin是:

19/02/2021  14:42         1,424,896 aarch64-linux-android-as.exe
19/02/2021  14:42               182 aarch64-linux-android21-clang
19/02/2021  14:42               186 aarch64-linux-android21-clang++
19/02/2021  14:42               435 aarch64-linux-android21-clang++.cmd
19/02/2021  14:42               431 aarch64-linux-android21-clang.cmd
19/02/2021  14:42               182 aarch64-linux-android22-clang
19/02/2021  14:42               186 aarch64-linux-android22-clang++
19/02/2021  14:42               435 aarch64-linux-android22-clang++.cmd
19/02/2021  14:42               431 aarch64-linux-android22-clang.cmd
19/02/2021  14:42               182 aarch64-linux-android23-clang
19/02/2021  14:42               186 aarch64-linux-android23-clang++
19/02/2021  14:42               435 aarch64-linux-android23-clang++.cmd
19/02/2021  14:42               431 …
Run Code Online (Sandbox Code Playgroud)

android android-ndk

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