RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-322772

Optimus1's questions

Martin Hope
Optimus1
Asked: 2022-09-27 23:56:49 +0000 UTC

FileMapping - 如何知道何时阅读?

  • 0

我试图通过 FileMapping 在两个应用程序之间传输数据 - 一切正常。

但是问题来了:当我从一个应用程序写入共享内存时,我如何在第二个应用程序中理解它,我应该什么时候读取它?例如,如果它是通过套接字进行的数据传输,那么很清楚 - 我正在执行条件发送,在传入请求的接收端触发回调,但使用 FileMapping 就不清楚了。

c++
  • 1 个回答
  • 27 Views
Martin Hope
Optimus1
Asked: 2022-09-25 17:53:20 +0000 UTC

在 Lua 中通过引用将变量传递给函数

  • 0

您能否告诉我是否可能或如果可能,如何通过引用将变量传递给函数?

像这样:

function my_func(my_int)   //Передать указатель или ссылку

my_int =555

end


function main()

my_int =5

my_func(my_int)

message(tostring(my_int))   --хочу увидеть измененное значение

end
lua
  • 1 个回答
  • 14 Views
Martin Hope
Optimus1
Asked: 2022-09-23 16:26:35 +0000 UTC

如何在谷歌浏览器中查看保存的密码?

  • 1

我忘记了我的 Google 帐户密码。登录 Gmail 和 YouTube 是自动的(密码保存在浏览器中),但密码本身不会显示。

这是我的问题:如果谷歌浏览器保存了密码,有什么方法可以查看密码吗?

google-chrome
  • 0 个回答
  • 0 Views
Martin Hope
Optimus1
Asked: 2022-09-20 00:30:20 +0000 UTC

Linux 如何移植到其他架构

  • 1

笼统地告诉我,但是 Linux 如何移植到其他架构?毕竟,Linux 最初是为 x86 编写的。

由于 Linux 似乎是用 C/C++ 编写的,所以最笼统和粗略的说法我认为 C 代码只是简单地重写了——即所有 C 函数的代码都简单地从 x86 汇编器重写为它被移植到的体系结构,并且基本上全部。

移植实际上是如何工作的?

linux
  • 0 个回答
  • 0 Views
Martin Hope
Optimus1
Asked: 2022-07-07 13:44:12 +0000 UTC

为什么 OpenGL 得到比 Vulkan 更广泛的硬件支持?[关闭]

  • -1
关闭。这个问题不可能给出客观的答案。目前不接受回复。

想改进这个问题? 重新构建问题,以便可以根据事实和引用来回答。

5 个月前关闭。

改进问题

从初学者那里寻找关于这个主题的建议和答案,我就是 - 为什么开始学习 OpenGL 或 Vulkan,在大多数情况下,一般答案是:

OpenGL 已经被移植并且现在可以工作了,甚至可以粗略地说是在一个茶壶上,而 Vulkan 是一个新的规范,还有很多尚不支持。

一切似乎都是如此,但我有一个问题,为什么会这样?仅仅因为 Vulkan 是新的,而傻瓜还没有为 Vulkan 编写驱动程序吗?

实际上,从理论上讲,对于开发人员来说,为 Vulkan 编写驱动程序似乎比为 OpenGL 编写驱动程序更容易。或者不是吗?

或者 Vulkan 规范可能不适合旧的、过时的“假人”和视频卡,因此 Vulkan 将永远无法在那里工作?

opengl vulkan
  • 1 个回答
  • 65 Views
Martin Hope
Optimus1
Asked: 2022-07-07 01:35:51 +0000 UTC

SIMD - _mm_set_epi32 - 反向设置值

  • 0

打扰一下,请告诉我为什么或为什么在设置值的_mm_set_epi32函数中-设置是否以相反的顺序进行?

__m128i _mm_set_epi32(int e3,int e2,int e1,int e0)

使用提供的值将压缩的 32 位整数设置为 dst。

Operation:
dst[31:0] := e0
dst[63:32] := e1
dst[95:64] := e2
dst[127:96] := e3

也就是说,从描述中可以看出,如果我这样做:

__m128i my_m128i =  _mm_set_epi32 (0, 1, 2, 3);

值将被输入到向量中,好像不是从左到右,就像通常在初始化时所做的那样,例如,一个数组,反之亦然。

为什么会有这样的“混乱”?

c++ c
  • 1 个回答
  • 34 Views
Martin Hope
Optimus1
Asked: 2022-07-05 23:55:40 +0000 UTC

SIMD - 掩码重置

  • 0

你能告诉我如何从另一个向量中按值重置向量的某些字节吗?

嗯,也就是说,有两个向量:

int main()
{
    __m128i my_m128i      = _mm_set_epi32(7, 6, 5, 4);

    __m128i my_m128i_mask = _mm_set_epi32(0, 1, 1, 0);
}

如何根据my_m128i_mask向量值使my_m128i向量向量的值7和4为零?

我通过乘法思考,例如将两个向量的每个 32 位相乘并自动得到零。但是在英特尔中没有找到这样的“功能”。

只找到这些:

_mm_mul_pd:将 a 和 b 中的压缩双精度(64 位)浮点元素相乘并将结果存储在 dst 中。

_mm_mul_epi32:将 a 和 b 中每个打包的 64 位元素中的 32 位最小符号整数相乘,并将有符号的 64 位结果存储在 dst 中。

将向量 __m128i 的第 4 个 32 位乘以另一个向量 __m128i 的第 4 个 32 位的“函数”是什么,我没有找到。

也许还有另一种方法可以将掩码归零?

c++
  • 1 个回答
  • 32 Views
Martin Hope
Optimus1
Asked: 2022-07-04 03:21:13 +0000 UTC

这个 SIMD 指令有什么作用?

  • 1

抱歉,但我无法从描述中理解此 SIMD 指令的作用:https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=7350 ,4869 ,514,6791,5444,5393,5260,101,152,101,6929,7101,121,7350,7332,1941&text=_mm_cvtepu8_epi32

mm_cvtepu8_epi32:

__m128i _mm_cvtepu8_epi32 (__m128i a)

零将 a 中的压缩无符号 8 位整数扩展为压缩 32 位整数,并将结果存储在 dst 中。

Zero 将 a 中压缩的 8 位无符号整数扩展为压缩的 32 位整数,并将结果存储在 dst 中。

也就是说,它将 __m128i 向量作为输入并返回相同的 __m128i 向量。它是什么样的?

将压缩的 8 位整数扩展为压缩的 32 位整数是什么意思?我就是想不通。__m128i 16 个字节,因为它们是 - 所以它们保留在输出中。

c++ c
  • 1 个回答
  • 51 Views
Martin Hope
Optimus1
Asked: 2022-07-04 00:45:23 +0000 UTC

SIMD - 如何从相同类型的2个向量中添加值

  • 0

请告诉我如何从相同类型的向量中添加值,但这些值本身被这些向量中不同数量的字节占用。

这是一个例子:

int main()
{
    //--------------------------------------------------------------
    int my_int_sequence[16] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };


    __m128i my_int_sequence_m128i_1 = _mm_loadu_si128((__m128i*) & my_int_sequence[0]);
    __m128i my_int_sequence_m128i_2 = _mm_loadu_si128((__m128i*) & my_int_sequence[4]);
    __m128i my_int_sequence_m128i_3 = _mm_loadu_si128((__m128i*) & my_int_sequence[8]);
    __m128i my_int_sequence_m128i_4 = _mm_loadu_si128((__m128i*) & my_int_sequence[12]);
    //--------------------------------------------------------------



    //-----------------------------------------------------------------------
    char my_char_mask[16] = { 1,0,1,1,0,1,0,1,1,1,0,1,0,1,0,1 };

    __m128i my_char_mask_my_m128i = _mm_loadu_si128((__m128i*) &my_char_mask[0]);
    //-----------------------------------------------------------------------

}

也就是说,我在 my_int_sequence 数组中有一个 int 值数组——并且由于所有 16 个 int 值都无法放入一个 __m128i 向量中,因此我将这些值 4 个值加载到第 4 个 __m128i 向量中。

我还有一个 16 字节的数组,我也将它加载到 my_char_mask_my_m128i 向量中。

现在我想添加到 my_int_sequence_m128i_x 向量的每个 4 字节值,就好像来自 my_char_mask_my_m128i 向量的相应一字节值一样。

问题显然是我需要把不同的维度加起来。可能吗?

也许我需要向量 my_char_mask_my_m128i 的每个字节 - 如何将其转换为 4 个字节?

c++ c
  • 1 个回答
  • 51 Views
Martin Hope
Optimus1
Asked: 2022-07-02 01:26:59 +0000 UTC

SIMD指令加载到寄存器中[关闭]

  • 0
关闭 这个问题是题外话。目前不接受回复。

该问题是由不再复制的问题或错字引起的。虽然类似的问题可能与本网站相关,但该问题的解决方案不太可能帮助未来的访问者。通常可以通过在发布问题之前编写和研究一个最小程序来重现问题来避免此类问题。

5 个月前关闭。

改进问题

我试图至少在最原始的层面上理解如何使用 SIMD。我发现这篇文章:https ://woboq.com/blog/utf-8-processing-using-simd.html

有一个简单的代码和解释,但我想不通:

int fromUtf8(const char *src, int len, unsigned short *dst) 
{

//Мы будем обрабатывать ввод по 16 байт за раз, поэтому длина должна быть не менее 16.

    while(len >= 16) 
    {
 
    //Загрузить 128 бит в векторный регистр. Мы используем встроенный 'loadu', где «u» означает не выровненный. Загрузка выровненных данных намного быстрее, но здесь мы не знаем, выровнен ли источник.

        __m128i chunk = _mm_loadu_si128(reinterpret_cast<const __m128i*>(src));
 

//Определить, является ли это ASCII, проверив, установлен ли старший бит одного байта:

        if (!_mm_movemask_epi8(chunk)) 
        {
              //....
        }

}

在这段代码中,我无法理解 - auto 文章写道,fromUtf8 函数需要一个指向 char * 的指针,其中有 16 位或 2 个字节。

但是现在文章 auto 使用了 _mm_loadu_si128 SIMD 函数,它将 128 位或 16 字节加载到寄存器中 - 根据指定的 src 源,但 src 只有 2 个字节长。

有可能这样做吗?_mm_loadu_si128 不会将垃圾加载到寄存器中,这将在 src 源中的 2 个字节之后?

c++ c
  • 1 个回答
  • 50 Views
Martin Hope
Optimus1
Asked: 2022-07-08 16:51:20 +0000 UTC

std::deque - 元素访问

  • 1

请告诉我,std::deque 有一个“.at”方法——它提供对元素的访问。

“at”和迭代器访问之间有区别吗?

这是一个例子:

std::deque<int>::iterator deq_iterator = my_deq.begin();

    for (int i = 0; i < my_deq.size(); i++)
    {
        std::cout << *deq_iterator << std::endl;
    
        deq_iterator++;
    }

...

for (int i = 0; i < my_deq.size(); i++)
{
    std::cout << my_deq.at(i) << std::endl;
}

然后在第一种情况下,遍历元素的循环将是高效的,也就是说,要访问下一个 i 元素,它将从前一个迭代器开始,每次循环迭代都会增加一个,而不是每次都从队列的零元素开始。

但是在使用“at”方法时是否也会这样做,或者在这种情况下,每次访问第 i 个洗脱液时都会从队列的零元素中寻找?

c++
  • 1 个回答
  • 10 Views
Martin Hope
Optimus1
Asked: 2022-06-16 02:43:34 +0000 UTC

在谷歌浏览器中查看 HTML 代码

  • 0

请告诉我为什么,当我在谷歌浏览器中单击“查看页面代码”时,它会为大多数网站显示这样的“有序”代码。

当我为 YouTube 做同样的事情时,就会出现一堆“无序”的代码。

例如:

-HABR: 哈勃

-YouTube:

YouTube

google-chrome
  • 1 个回答
  • 10 Views
Martin Hope
Optimus1
Asked: 2022-06-01 22:10:43 +0000 UTC

C ++中的结构字段遍历

  • 1

问题可能不在stackoverflow规则之内,而只是想知道在编译器中实现它会有多困难-以结构字段数量为单位确定结构大小的方法以及以a访问它们的能力环形?

只是最近在 C++ 中添加了很多东西,但他们无论如何都不会添加它 - 对我来说,这将是一个有用的功能。或者可能不是。

c++
  • 1 个回答
  • 10 Views
Martin Hope
Optimus1
Asked: 2022-05-29 03:00:08 +0000 UTC

libcurl - curl_multi_info_read - 访问错误

  • 0

请告诉我为什么访问CURLMsg结构的字段时会出现访问错误:

这是我正在使用的简单代码:

#include <iostream>
#include <string>
#include <curl.h>

int main()
{

    curl_global_init(CURL_GLOBAL_DEFAULT);


    CURL* curl;

    if (curl == CURL_OK) 
    {
        CURLcode curl_easy_setopt_status;

        curl_easy_setopt(curl, CURLOPT_URL, "https://www.cyberforum.com"); //сайт с заведомо некорректным сертификатом

        curl_easy_setopt_status = curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);  //Установка редиректа

        curl_easy_setopt_status = curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 10);   //Установка кол-ва редиректов



        curl_easy_setopt_status = curl_easy_setopt(CURL_p, CURLOPT_SSL_VERIFYPEER, 1); 
        curl_easy_setopt_status = curl_easy_setopt(CURL_p, CURLOPT_SSL_VERIFYHOST, 1); 



    //Запуск http-запроса: ------->

   

        CURLM* multi_handle;
        CURLMcode CURLMcode_;
        int still_running = 0;
    
        multi_handle = curl_multi_init();
    
        curl_multi_add_handle(multi_handle, curl);
    
        CURLMcode_ = curl_multi_perform(multi_handle, &still_running);
    
    
        CURLMsg* my_CURLMsg_multi_info_read;   //Структура возвращаемая функцией curl_multi_info_read.
        int my_msgs_in_queue_int;         
    
    
        while (still_running != 0)
        {
    
            CURLMcode_ = curl_multi_perform(multi_handle, &still_running);
    
            if (CURLMcode_ == 0)
            {
                CURLMcode_ = curl_multi_poll(multi_handle, NULL, 0, 1000, NULL);
            }
            else
            {
             break;
            }
    
    
            my_CURLMsg_multi_info_read = curl_multi_info_read(multi_handle, &my_msgs_in_queue_int); //Запрашиваю структуру CURLMsg.
    
             if (my_CURLMsg_multi_info_read != 0) //Если указатель действительный, то:
             {
                    if (my_CURLMsg_multi_info_read->msg == CURLMSG_DONE)
                    {
              //Теперь пытаюсь обратится к первому байту поля whatever:
    
              std::cout << "whatever_address:" << my_CURLMsg_multi_info_read->data.whatever <<std::endl;   //АДРЕСС НЕ НУЛЕВОЙ, то есть указатель действительный.
    
              std::cout << "whatever:" << ((char*)(*my_CURLMsg_multi_info_read).data.whatever)[0] << std::endl;  //ТУТ я терплю ОШИБКУ ДОСТУПА! Почему же так?
                    }
              }
    
        } 
    
        
    
    
        return 0;
}

CURLMSG 结构本身如下所示:

struct CURLMsg 
        {
            CURLMSG msg;       // what this message means == CURLMSG_DONE
            CURL* easy_handle; // the handle it concerns
            union 
            {
                void* whatever;    // message-specific data
                CURLcode result;   // return code for transfer
            } data;
        };

如果该字段 - 一个指向 void 的指针 - 被分配了一个地址,那么这意味着至少可以访问 1 个字节,那么我应该有,为什么会发生访问错误?

c++
  • 1 个回答
  • 10 Views
Martin Hope
Optimus1
Asked: 2022-05-12 16:19:36 +0000 UTC

Content-Type 和 charset= - 字符之间的空格是否有规定?

  • 0

请告诉我,这个sister子有一个http头:Content-Type,例如,值可以是:charset=utf-8

告诉我,charset= 和 encoding 之间可以有一个空格或两个空格吗?找不到监管与否。

http
  • 1 个回答
  • 10 Views
Martin Hope
Optimus1
Asked: 2022-05-06 00:28:48 +0000 UTC

libcurl - 是否可以查看请求标头?

  • 0

请告诉我,是否有可能在 Libcurl 中以某种方式查看请求服务器时生成的标头?

c
  • 1 个回答
  • 10 Views
Martin Hope
Optimus1
Asked: 2022-05-02 00:01:37 +0000 UTC

libcurl:curl_global_init - 线程不安全

  • 2

请告诉我,Libcurl 文档说 curl_global_init () 函数:

此函数必须在程序中至少调用一次。

和

这个函数不是线程安全的。当程序中的任何其他线程(即共享相同内存的线程)正在运行时,您不得调用它。

这个函数不是线程安全的。当程序中的任何其他线程正在运行时(即使用相同内存的线程),您不应该调用它。

我似乎分别理解了这些词,但总的意思不知何故没有达到。“当程序中的任何其他线程正在运行时,您不得调用它”是什么意思?

也就是说,如果我在代码中至少创建了一个线程,并且在这个线程中执行了任何操作,但不是 libcurl,或者通常我立即将线程置于睡眠状态,那么 curl_global_init - 不能被调用?

还有一个难以理解的时刻:

如果你还没有调用 curl_global_init,curl_easy_init会自动调用。这在多线程情况下可能是致命的,因为 curl_global_init 不是线程安全的,并且由于缺乏适当的清理可能导致资源问题。

它没有明确说明,但我是否正确理解在 curl_easy_init() 之前调用 curl_global_init() 会告诉 curl_easy_init() 不要调用 curl_global_init() ?

c++
  • 1 个回答
  • 10 Views
Martin Hope
Optimus1
Asked: 2022-04-28 02:31:57 +0000 UTC

编译器标志 - MT、MTd、MD、MDd

  • 0

请告诉我我是如何理解编译器标志的:

-MT - 告诉编译器使用静态 CRT 编译代码

-MTd - 告诉编译器在调试模式下使用静态 CRT 编译代码

-MD - 告诉编译器使用动态 CRT 编译代码

-MDd - 告诉编译器在调试模式下用动态 CRT 编译代码

我的问题是,如果 CRT 库 - Visual Studio 附带,那么理论上使用 MD 和 MDd 标志编译的代码 - 不应该在未安装 VS 的 Windows 上运行?

但事实上,在没有安装Visual Studio的Windows上,MDd调试模式下编译的exe文件没有启动,Windows写入一些文件丢失。

这是在发布时编译的代码,但仍然是动态 MD - 它开始时没有问题。

但为什么 ?

c++
  • 1 个回答
  • 10 Views
Martin Hope
Optimus1
Asked: 2022-04-26 18:07:57 +0000 UTC

构建库“共享库”时的参数 - 这是什么意思?

  • 0

你能告诉我用“shared lib”参数构建一个库是什么意思吗?也就是说,一个“共享库”——它与谁共享什么以及与谁共享?

这是否意味着库将被动态链接?像 Windows 的 .dll 吗?

c++
  • 1 个回答
  • 10 Views
Martin Hope
Optimus1
Asked: 2022-04-17 21:15:15 +0000 UTC

strtok - 据说给出了错误的结果

  • 2

我不太明白工作的结果strtok:

我从strtok拿了完整的例子

并简单地将字符串和子字符串替换为您自己的:

int main() 
{

    char str[] = "hih1ihi";
    char* pch;
    printf("Splitting string \"%s\" into tokens:\n", str);
    pch = strtok(str, "hi");
    while (pch != NULL)
    {
        printf("%s\n", pch);
        pch = strtok(NULL, "hi");
    }

}

从字符串“ hi h1i hi ”和子字符串“hi”和应用strtok- 我希望看到以下结果:

h1i

由于定界符 hi - 理论上应该被丢弃,但strtok只输出:

一

请告诉我我哪里错了?

c
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5