小编sup*_*ods的帖子

了解电子邮件标头:x-beenthere和x字段

我想更多地了解电子邮件标题.

在查看其中一封电子邮件后,我发现该字段在标题中有此条目"x-BeenThere".这是什么意思?

另外我注意到一些"x"字段看起来像是自定义设置字段,这是一些电子邮件的情况吗?

先感谢您.

email header

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

装配说明:AAA

我正在看伪代码:BCD指令的隐藏能力.以下是该网站内容的片段:

那么,让我们来看看AAA的作用.这是伪代码等价物(来自英特尔):

   IF ((AL AND 0FH) > 9) OR (AF = 1)
    THEN
            AL = (AL + 6) AND 0FH;
            AH = (AH + 1);
            AF = 1;
            CF = 1;
    ELSE
            AF = 0;
            CF = 0;
    FI;enter code here
Run Code Online (Sandbox Code Playgroud)

对于像这样的典型英特尔文档兼容用途,这是正确的:

    mov     al,6
    add     al,9    ;al=15=0Fh
    aaa             ;al=21=15h  =>  it's in decimal!
Run Code Online (Sandbox Code Playgroud)

上面的算法似乎没有在代码中给出结果,所以我假设这里省略了一些步骤.评论说明如下:"al = 21 = 15h =>它是十进制的!".

我对代码的解释如下:

  • 在add指令之后,存储在AL寄存器中的值将为15(0Fh).
  • 由于它大于10,因此将向该值添加6,并且使用0Fh进行AND运算,这将导致1s值存储在AL寄存器中("AL =(AL + 6)AND 0FH;").AL寄存器的值现在应为05h.
  • 算法在AH寄存器中加一个,我假设是寄存器,因为我们对AL寄存器进行了ANDed和归零4位("AH =(AH + 1);").

但是,在运行"AH =(AH + 1);"行之前,没有提到存储在AH寄存器中的值.如果它被初始化为零,它只适用于20以下的数字.现在我们假设它被初始化为零,我希望结果存储为AH = 1和AL = 5,但评论说"; …

x86 assembly bcd x86-16 80286

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

在释放内存之前转换为void*(C编程)

我遇到了这段代码,并想知道为什么它void *在释放之前已经被转换了?

free((void *)array1[i]);
Run Code Online (Sandbox Code Playgroud)

free在一些文章中看到过没有使用过的东西,所以我想知道你为什么要void *在释放内存时施展?

以下是他们分配和释放内存的方式:

#include <stdlib.h>

int **array1 = malloc(nrows * sizeof(int *));
for(i = 0; i < nrows; i++)
    array1[i] = malloc(ncolumns * sizeof(int));

for(i = 0; i < nrows; i++)
    free((void *)array1[i]);
free((void *)array1);
Run Code Online (Sandbox Code Playgroud)

参考这个,一些gcc版本可能会发出警告,但总的来说这是不必要的.

c free casting void-pointers

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

x86寄存器:MBR/MDR和指令寄存器

根据我的阅读,IA-32架构有10个32位和6个16位寄存器.

32位寄存器如下:

  • 数据寄存器 - EAX,EBX,ECX,EDX
  • 指针寄存器 - EIP,ESP,EBP
  • 索引寄存器 - ESI,EDI
  • 控制寄存器 - EFLAG(EIP也被归类为控制寄存器)

16位寄存器如下:

  • 代码段:它包含要执行的所有指令.
  • 数据段:它包含数据,常量和工作区域.
  • 堆栈段:它包含过程或子例程的数据和返回地址.
  • 额外细分(ES).指向额外数据的指针.
  • F段(FS).指向更多额外数据的指针.
  • G段(GS).指向更多额外数据的指针.

但是,我找不到有关当前指令寄存器(CIR)或存储器缓冲寄存器(MBR)/存储器数据寄存器(MBR)的任何信息.这些寄存器是否被称为其他东西?这些寄存器是32位吗?

我假设它们是32位的,并且在这种架构下最常用的指令长度不超过4个字节.从观察来看,许多指令似乎都在4个字节以下,例如:

  • 推动EBP(55)
  • MOV EBP,ESP(8B EC)
  • LEA(8D 44 38 02)

对于更长的指令,CPU将使用前缀代码和其他可选代码.较长的指令需要多个周期才能完成,这取决于指令长度.

我是否正确,因为有问题的寄存器长度为32位?IA-32架构中是否还有其他寄存器,我也应该注意这些寄存器?

cpu x86 cpu-architecture cpu-registers

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

我什么时候应该使用 pool.end()

当我pool.end()在查询后使用时,收到错误消息“无法读取未定义的属性‘行’”。在我看来,我不应该pool.end在查询完成后使用。那么我应该什么时候使用pool.end()呢?

下面是我的代码片段:

const pool = new Pool({
    user: process.env.PGUSER,
    host: process.env.PGHOST,
    database: process.env.PGDATABASE,
    password: process.env.PGPASSWORD,
    port: process.env.PGPORT
})

// Display schedule on home page
app.get('/', (req, res) => {
    const displaySchedule = `SELECT * FROM schedule`;

    pool.query(displaySchedule, (err, results) => {
        if(err) { 
            throw err; 
        }
        else {
            res.render('index', {schedules: results.rows});
        }
    })

    //pool.end();
});
Run Code Online (Sandbox Code Playgroud)

postgresql node.js

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