小编clo*_*eet的帖子

我如何找出我正在运行的git版本?

我正在尝试按照一些教程来学习如何使用Git,但有些说明适用于特定版本.

有没有我可以使用的命令找出我安装的版本?

git

133
推荐指数
4
解决办法
10万
查看次数

用于强制执行数组内容的JSON模式

大家好,提前谢谢.

我试图创建一个JSON模式来强制数组包含一个A和B对象和NC对象,其中A和B是C对象,N是包含在0和无穷大之间的整数.

因此:

[A, B] [A, B, C1] [A, B, C1, .., CN]

但是都是有效的:

[A] [A, C1] [A, C1, .., CN]

无效的.

为清楚起见,A和B必须存在.C对象是可选的,但您可以拥有任意数量的对象.

C对象模式:


{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "C Object",

  "type": "object",
  "required": ["id", "name"],

  "properties": {
    "id": {
      "type": "integer"
    },
    "name": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
Run Code Online (Sandbox Code Playgroud)

所以C对象是任何有效的JSON对象,只包含属性"id"和"name",其中"id"是一个整数,"name"是一个字符串.

A和B对象模式:


{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "A Object",

  "type": "object",
  "required": ["id", "name"],

  "properties": {
    "id": {
      "type": "integer"
    },
    "name": {
      "type": "string",
      "enum": …
Run Code Online (Sandbox Code Playgroud)

arrays validation schema json jsonschema

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

合作页面之间的跨域,交叉标签通信

假设我有两个选项卡,每个选项卡都在不同的域上加载了一个网页.两个选项卡中的页面想要进行通信.

我能看到的最简单的解决方案就是这个 (我在搜索重复项时发现的一个密切相关的问题的答案),其中一个或两个页面加载一个中间页面iFrame,它代理事件postMessage()localStorage事件.但是,这确实需要在某处托管此页面,以及客户端的额外请求.

是否有任何技术可以不需要专门的"代理页面"由其中一个域提供服务?(即可以通过没有支持服务器的JavaScript库实现?)

javascript postmessage cross-domain local-storage

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

使用字节表示对浮点值进行排序

如果有一个8字节的数据部分并写入一个双精度浮点值,在什么条件下通过数字比较和字典的字典排序比较一致?

目前的理论:积极的,大端的

我相信如果数字是正数,并且表示是big-endian,那么浮点值的数字排序将匹配字节的字典顺序.

这个想法是它首先对指数进行排序,然后对尾数进行排序.即使是"非规范化"的IEEE表示也不应该引起任何问题.

这是真的?

(我正在使用Node的Buffer :: writeDoubleBE,但这不重要.)

跟进

我认为一个简单的修改可以将其扩展为负数:XOR所有正数0x8000...和负数0xffff....这应该翻转两者上的符号位(首先是负数),然后反转负数的排序.有没有人看到这个问题?

sorting floating-point ieee-754

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

LLVM/Clang 生成看似无用的指令

如果我写这段代码:

void loop1(int N, double* R, double* A, double* B) {
    for (int i = 0; i < N; i += 1) {
        R[i] = A[i] + B[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

Clang ( -O3) 生成以下 x64 ASM 作为循环展开版本的一部分 ( Compiler Explorer ):

.LBB0_14:
    movupd  xmm0, xmmword ptr [rdx + 8*rax]
    movupd  xmm1, xmmword ptr [rdx + 8*rax + 16]
    movupd  xmm2, xmmword ptr [rcx + 8*rax]
    addpd   xmm2, xmm0
    movupd  xmm0, xmmword ptr [rcx + 8*rax + 16]
    addpd   xmm0, …
Run Code Online (Sandbox Code Playgroud)

c assembly compilation x86-64 llvm-clang

5
推荐指数
0
解决办法
160
查看次数

为什么没有内联这个C ++包装器类?

编辑 -我的构建系统有问题。我仍在弄清楚到底是什么,但是gcc产生了奇怪的结果(即使它是一个.cpp文件),但是一旦使用,g++它就会按预期工作。


对于我一直遇到的问题,这是一个非常减少的测试用例,其中使用数字包装器类(我认为应该内联)使我的程序慢10倍。

这与优化级别无关(使用-O0和尝试-O3)。

我在包装器类中缺少一些细节吗?


C ++

我有以下程序,其中定义了一个包装a double并提供+操作符的类:

#include <cstdio>
#include <cstdlib>

#define INLINE __attribute__((always_inline)) inline

struct alignas(8) WrappedDouble {
    double value;

    INLINE friend const WrappedDouble operator+(const WrappedDouble& left, const WrappedDouble& right) {
        return {left.value + right.value};
    };
};

#define doubleType WrappedDouble // either "double" or "WrappedDouble"

int main() {
    int N = 100000000;
    doubleType* arr = (doubleType*)malloc(sizeof(doubleType)*N);
    for (int i = 1; i < N; …
Run Code Online (Sandbox Code Playgroud)

c++ performance assembly compilation c++11

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