小编use*_*993的帖子

如何使flex项目不填充flex容器的高度?

正如您在下面的代码中看到的那样,Flex容器内的左侧div伸展以满足右侧div的高度.是否有一个属性,我可以设置使其高度保持其内容所需的最小值(如height: autoFlex容器外的常用div)?

#a {
  display: flex;
}
#a > div {
  background-color: red;
  padding: 5px;
  margin: 2px;
}
#b {
  height: auto;
}
Run Code Online (Sandbox Code Playgroud)
<div id="a">
  <div id="b">left</div>
  <div>right<br>right<br>right<br>right<br>right<br></div>
</div>
Run Code Online (Sandbox Code Playgroud)

html css css3 flexbox

72
推荐指数
2
解决办法
7万
查看次数

为什么SSE有128位负载功能?

我正在寻找其他人的代码,目前正试图弄清楚为什么_mm_load_si128存在.

基本上,我尝试更换

_ra = _mm_load_si128(reinterpret_cast<__m128i*>(&cd->data[idx]));
Run Code Online (Sandbox Code Playgroud)

_ra = *reinterpret_cast<__m128i*>(&cd->data[idx]);
Run Code Online (Sandbox Code Playgroud)

它的工作原理和表现完全相同.

我认为为了方便起见,较小类型存在加载函数,因此人们不必手动将它们打包到连续内存中,但对于已经按正确顺序排列的数据,为什么要这么麻烦?

还有别的_mm_load_si128吗?或者它本质上只是一种分配价值的迂回方式?

c++ x86 sse simd intrinsics

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

有二进制SVG吗?

在我看来,在为动态数据可视化编写代码时,我最终会在不同的语言/平台上反复做同样的事情.现在,如果我有一个跨平台语言(我做)和类似SVG的二进制版本,我可以使我的代码目标,并使用/创建解释器用于我目前需要使用它的任何平台.

我不想要SVG的原因是因为明文部分对我来说太慢了.我当然可以创建我自己的中间格式,但是如果已经有各种各样的东西实现的东西那么对我来说工作就越少!

graphics svg intermediate-language

10
推荐指数
2
解决办法
3408
查看次数

试图将标志枚举解析为字符串

我有一个类"许可证",它是一堆枚举标志的集合,如下所示:

Public class License
{
    UsageType Usage { get; set; }
    PlatformType Platform { get; set; }

    public enum UsageType { read = 1, write = 2, wipe = 4, all = 7 }
    public enum PlatformType { windows = 1, linux = 2, ios = 4, all = 7 }

    etc...
}
Run Code Online (Sandbox Code Playgroud)

关键是可以将相同类别的各种标志一起进行"或"运算,以形成用户可以对所述许可证执行的操作的配置文件.现在我试图以人性化的方式显示"Usage"和"Platform"的值,例如,如果Usage == UsageType.read | UsageType.write然后它应该被解析为"读,写".

我通过测试每个标志的值并为每个标志附加enumitem.ToString()为一个字符串来成功地使用单个枚举类型.既然我有很多这些枚举和价值,我想提出一个更通用的方法.

我提出了这个(下面),但由于我不熟悉c#中的模板函数所以我不知道为什么这不起作用,但至少它应该说明我的意思:

private string parseEnum<T>(T value)
{
    string ret = "";
    foreach (var ei in (T[])Enum.GetValues(typeof(T)))
    {
        if (value.HasFlag(ei)) ret += ei.ToString() …
Run Code Online (Sandbox Code Playgroud)

c# generics enums parsing

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

在角括号后空间合法吗?

我正在构建一个用于反序列化html和xml的切片器.问题是 - 在任何一种语言中放置一个尖括号之后的空格并且仍然将其视为标记是合法的吗?例如

< div>
Run Code Online (Sandbox Code Playgroud)

或者我应该只考虑那个纯文本?

是的,我尝试在网上搜索这个,但即使浏览了w3之后,我也找不到明确的答案.

html xml

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

WebGPU 中的 storageBarrier 实际上是做什么的?

因此,我正在探索 WebGPU,并认为在其中实现基本神经网络将是一个有趣的练习。对 GPU 着色器编程和神经网络了解甚少,而且我对 WebGPU(w3.org/TR/webgpu 和 w3.org/TR/WGSL)的唯一参考是高度技术性的,这确实使它变得非常有趣。

不管怎样,不知何故,我已经把自己的方式搞乱了,以至于我实际上可以在小型网络上正确地执行前馈和反向传播,而且与我的 js cpu 实现相比,它的速度也非常快,尽管我确信我严重未充分利用硬件。

我已经到了想要尝试更大网络的地步,但在工作组和同步执行方面我有点不知所措。为了保持简单,我将把问题集中在前馈操作上:

目前,我正在调度与神经网络中最宽层相对应的线程数量。这个想法是,每个线程计算当前层中单个神经元的值,然后遇到障碍,然后每个线程一起移动到下一层,如此下去。

问题是,我只有两种设置屏障的方法 - 要么 workgroupBarrier() 要么结束执行并为下一层分派一堆新线程。

第一个的问题是它只能在工作组内工作,而且我只能在性能开始受到影响之前将工作组设置得这么大,因为据我了解,由于需要共享内存,只有单个 CU 可以在工作组上工作。如果我将工作组设置为 256x256,那么它将被切成多个块,单个 CU 必须在其余硬件闲置时进行处理。这限制了我的网络宽度,限制了单个 CU 可以容纳的线程数量,非常蹩脚。

第二个的问题非常明显 - 单独的调度速度很慢,比我测试的障碍慢得多。

现在,我根本不使用工作组共享内存,我想做的就是分派任意数量的线程并设置全局屏障。据我了解,WebGPU 没有全局屏障......除了 storageBarrier ?

即使在阅读了 w3.org 上关于它是什么的 2 句话之后,我仍然不知道它是什么,但我认为它与内存访问同步有关,而不是与全局屏障有关。我确实测试了它,结果是正确的,但是即使我从代码中消除了所有障碍,结果也是正确的,我猜这是 GPU 的 SIMT 执行风格的好处。但是,我不需要它“可能正确”,我需要保证正确,所以我需要一个全局屏障。是 storageBarrier 吗?如果不是的话那是什么?

额外问题 - 为什么工作组和派遣有 3 个维度,为什么不只有一个?

shader gpgpu webgpu wgsl

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

浏览器会在同一页面上多次加载css文件吗?

我正在asp.net上开展一个大型项目.我喜欢通过用户控件将它分开,所以我想知道在用户控件代码中而不是在母版页头中加载css是否可以?

有可能,其中一些控件会在一个页面上多次出现,因此会有重复的样式标记,浏览器会重新加载它们还是只是忽略那种情况?

html css

7
推荐指数
2
解决办法
4918
查看次数

有没有办法检查是否应用了RVO?

我讲述了一个令人沮丧的旅程的故事,我发现我从一个函数返回的无序地图实际上并不是RVO,即使我确定它是在较早的时间它是无关紧要的.

有没有办法检查RVO是否在任何给定的函数中发生?或者像一个做的列表并且不要遵循以获得我想要的结果?

c++11

7
推荐指数
2
解决办法
503
查看次数

js中能获取之前的历史状态对象吗?

当我点击后退或前进按钮并且 popstate 事件触发时,我可以获得前一个状态的状态对象吗?因为不是 e.state 提供的状态对象,而是我刚刚后退/转发的状态对象?

或者,我可以检测按下的是后退按钮还是前进按钮?

我需要这个,因为我有多个子系统,它们都需要同时使用 js 历史记录,当然,我可以在推送时保存所有子系统的状态,但是,当我弹出时,我必须将状态恢复到所有子系统这也是不需要的,因为它重置了我不需要的对象。例如

state 1 = {a:1, b:1, c:1}
push a = 2
state 2 = {a:2, b:1, c:1}
hit back button, popstate fires state 1 to me
restart a with 1, b with 1, c with 1 while I only need to restart a
Run Code Online (Sandbox Code Playgroud)

另类幻想解决方案

....
hit back button, popstate fires state 1 to me
I also get state 2 (the one I just moved away from) through some black magic
do a …
Run Code Online (Sandbox Code Playgroud)

javascript

7
推荐指数
2
解决办法
7142
查看次数

使用互斥锁阻止从关键部分外部执行

我不确定我的术语是否正确但是这里有 - 我有这个函数,多个线程用来写数据(在注释中使用伪代码来说明我想要的)

//these are initiated in the constructor
int* data; 
std::atomic<size_t> size;

void write(int value) {
    //wait here while "read_lock"
    //set "write_lock" to "write_lock" + 1
    auto slot = size.fetch_add(1, std::memory_order_acquire);
    data[slot] = value;
    //set "write_lock" to "write_lock" - 1
}
Run Code Online (Sandbox Code Playgroud)

写入的顺序并不重要,我需要的是每次写入都要转到一个唯一的插槽

虽然每隔一段时间,我需要一个线程来使用此函数读取数据

int* read() {
    //set "read_lock" to true
    //wait here while "write_lock"
    int* ret = data;
    data = new int[capacity];
    size = 0;
    //set "read_lock" to false
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

所以它基本上交换了缓冲区并返回旧缓冲区(我删除了容量逻辑以使代码片段更短)

从理论上讲,这应该导致2种操作场景:

1 - 只是一堆写入容器的线程

2 - …

c++ multithreading

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