小编wal*_*lyk的帖子

在 Ruby 中为 Diffie-Hellman 生成大素数

我正在为我的一个大学课程的项目编写一个用 ruby​​ 进行的 diffie-hellman 密钥交换的实现。我需要生成至少 500 位长度的大(安全)素数。有任何想法吗?我应该使用 OpenSSL 库吗?如果是这样,您会推荐哪些功能?

ruby cryptography diffie-hellman

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

通过KGDB调试模块

我想调试我的内核模块.对于我试图把一个断点do_one_initcallkernel/ module.c我之前init_module被调用,但它显示

无法访问地址0x802010a0的内存

以下是Makefile我使用的:

obj-m := hello.o

KDIR=/lib/modules/$(shell uname -r)/build
PWD=$(shell pwd)

EXTRA_CFLAGS += -g

all:
        make -C $(KDIR) M=$(PWD) modules

clean:
        make -C $(KDIR) M=$(PWD) clean
Run Code Online (Sandbox Code Playgroud)

请告诉我可能是什么问题.

debugging kernel-module

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

根据第二列的公共数据检索第一列的行

说我有这样的输入:

1st column ---------2nd column
23 ---------------------- 0080
23 ---------------------- 0010
23 ---------------------- 0080
25 ---------------------- 0010
25 ---------------------- 0010
34 ---------------------- 0080
27 ---------------------- 0010
27 ---------------------- 0080
Run Code Online (Sandbox Code Playgroud)

我想检索第一列的所有行,其中第二列中包含0080和0010数据.结果将是这样的:

1st column--------- 2nd column
23 ---------------------- 0080
23 ---------------------- 0010
23 ---------------------- 0080
27 ---------------------- 0010
27 ---------------------- 0080
Run Code Online (Sandbox Code Playgroud)

从结果我们可以看出第一列不包括25,因为25在第二列中只有0010,而在第二列中仅有0080的34相同.

我尝试使用嵌套查询,但它变得非常慢,因为我的表非常大(包含大约30,000多行).我正在寻找更快的大数据表智能技术.

sql sql-server

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

将 Arduino F() 宏与字符串数组一起使用

我正在研究一个 Arduino 项目,该项目将随机报价打印到 LCD 屏幕。大约有一百种不同的引用,但其中超过 10 种会使 SRAM 过载。

我已经研究过它,似乎我需要使用PROGMEMF()将字符串存储在闪存而不是 SRAM 中,但我无法弄清楚要存储的语法,然后检索它们。当前程序看起来像这样(删除不相关部分的伪代码):

String quotes[] = {"quote 1", "quote2", "quote3", ... "quoteN"};
String currentQuote;    

void setup() {
  currentQuote = quotes[0];
}

void loop() {
  if (condition)
      currentQuote = quotes[random(N)];
}
Run Code Online (Sandbox Code Playgroud)

如何将字符串数组存储在闪存中,然后在需要时检索单个元素?

memory string macros arduino

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

c ++类访问关键字"信号"是什么意思?

我遇到了类似于此的声明(根据NDA更改了名称):

class Foo
{
    int  bar;

 public:
    explicit Foo (Fu *parent = NULL);

 private:
    void somefunc (String);

 signals:        // ??? what does this do ???
    void windowClosed();
};
Run Code Online (Sandbox Code Playgroud)

这是由g ++ 4.4.7(从大约2012年)成功编译的.此外,vim将其识别为类似的关键字,publicprivate以棕色突出显示.(DIS)similiarly,Vim使用绿色突出关键字namespace,class,void,int,double,float,char,unsigned,等.

在#1代码格式化并没有突出signals像它上面publicprivate!

事实证明谷歌很难(很多噪音),但我没有发现任何提及它,甚至没有提到它.我还查看了g ++文档的增强功能部分.

这个代码库很大(2300万行),古老(〜1998),并且有明显的重音.例如,相同的类定义private slots:在两个成员函数之前具有类访问权限.所以有可能会有一些#define混淆或欺骗,但我找不到它grep.g ++可能已被更改,但其--version输出并不表示修改.

c++ qt class keyword

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

C++虚函数执行效率

我试图更好地了解虚函数的性能,这里是一个示例代码:

struct Foo {
    virtual void function1();
    virtual void function2() { function1(); }
};

struct Bar : Foo {
    virtual void function1();
}

Bar b;
Foo &f = b;

b.function2();
b.function1();
f.function2();

对于代码示例的最后三行中的三个调用中的每一个,是否所有这些调用都必须在虚拟表中查找函数指针?必须为f对象执行多少次查找.曾经可以被编译器内联?

谢谢

c++ virtual function

4
推荐指数
2
解决办法
1266
查看次数

如何在x86程序集中调用fgets?

根据文档fgets(),该函数有三个参数:

  • char* - 一个保存输入的字符串
  • int - 一个整数,表示要读取的最大字符数
  • FILE* - FILE *要读取的流的a

我可以轻松调用该函数.我只push将三个参数放到堆栈上,调用函数,并增加ESP12.

我的问题是参数#3.什么应该作为FILE *标准输入传递?在C中,我可以使用stdin,但我不知道x86程序集中的等价物是什么.


更新:我在Linux上使用NASM.

linux file-io assembly nasm

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

如何避免管道破裂?

我尝试用c语言开发一个聊天应用程序。我使用套接字和select(). 但是如果我在客户端之前关闭服务器,客户端会收到一条消息“Broken Pipe”。我使用了 select(),但我不知道如何避免它?

c sockets

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

%ld 格式转换以实现可移植性

我有一个代码库,旨在在没有警告的情况下进行编译,并在多种架构上运行而不会出现任何故障,所有 x86:MSDOS、Windows 32 控制台模式、Windows 32 GUI 模式、Linux 32 和 Linux 64。

\n\n

在添加对 Linux 64 的支持之前,这很容易。几乎所有数据都被声明为intBYTE、WORD 和 DWORD 的类型定义:

\n\n
typedef unsigned char   BYTE;\ntypedef unsigned short  WORD;\ntypedef unsigned long   DWORD;\n
Run Code Online (Sandbox Code Playgroud)\n\n

添加 64 位 gcc 支持后,DWORD 需要进行一些调整才能保持 32 位值,因为它表示存储的数据:

\n\n
// to compile DWORDs as 32 bits on 64-bit machines:\n#if __x86_64__\n typedef unsigned int    DWORD;\n#else\n typedef unsigned long   DWORD;\n#endif\n
Run Code Online (Sandbox Code Playgroud)\n\n

这在所有环境下都运行良好:

\n\n
DWORD   data;\nprintf ("%lu", data);\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,gcc -Wall现在抱怨格式转换:

\n\n
warning: format \xe2\x80\x98%ld\xe2\x80\x99 expects argument of …
Run Code Online (Sandbox Code Playgroud)

c++ x86 printf 16-bit 32bit-64bit

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

toupper 返回整数而不是字符

对于以下函数

void display()
{
    for (int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 8; j++)
        {
            if (board[i][j] < 84 && (i+j)%2 == 0)
                SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 0x70);
            else if (board[i][j] < 84 && (i+j)%2 == 1)
                SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 0xc0);
            else if (board[i][j] > 97 && (i+j)%2 == 0)
                SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 0x7c);
            else if (board[i][j] > 97 && (i+j)%2 == 1)
                SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 0xc7);
            cout …
Run Code Online (Sandbox Code Playgroud)

c++ toupper

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