有没有人能告诉我java和本机库之间的区别?我在下面的行中找到了"native library"这个词:
类型1 - 将JDBC API实现为另一个数据访问API(如ODBC)的映射的驱动程序.此类驱动程序通常依赖于本机库,这限制了它们的可移植性.JDBC-ODBC Bridge驱动程序是Type 1驱动程序的示例.
你可以在这里找到
我知道已经有类似的问题,我给了他们一个看,但我找不到一个明确的单一答案我的问题.我只是在网上调查这些函数及其与内存层的关系.特别是我发现这篇精美的文章让我对内存层有了很好的了解

似乎fflush()将数据从应用程序移动到内核文件系统缓冲区并且没关系,每个人似乎都同意这一点.令我困惑的唯一一件事就是在同一篇文章中他们假设一个回写缓存,说fsync()"数据被保存到稳定的存储层",并且在他们添加"存储本身可以将数据存储在写入中"之后-back cache,因此fsync()仍然需要使用O_DIRECT打开的文件,以便将数据保存到稳定存储"
在这里和那里阅读似乎事实就是这样fsync(),sync()让数据进入存储设备,但如果这个数据有缓存层,它只是移动到这里,而不是立即存储到永久存储,如果出现电源故障,数据甚至可能会丢失.除非我们有一个启用了障碍的文件系统,然后" sync()/ fsync()和其他一些操作将导致相应的CACHE FLUSH(ATA)或SYNCHRONIZE CACHE(SCSI)命令被发送到设备"[来自您的网站答案 ]
问题:
如果要更新的数据已经在内核缓冲区中并且我的设备在回写模式下有一个易失性缓存层,那么就像文章所说的那样,像fsync()[和sync()我想的那样]操作将数据同步到稳定的内存层跳过易变的?我认为这是通过直写缓存而不是回写缓存所发生的情况.从我读到的内容中我了解到,使用回写式缓存fsync()可以将数据发送到设备,将数据放入易失性缓存中,只有在之后才能进入永久性内存
我读过它fsync()使用文件描述符,然后使用单个文件,同时sync()导致缓冲区的完全部署,因此它适用于每个要更新的数据.并且从该页面还fsync()等待写入磁盘sync()的结束,而不等待实际写入磁盘的结束.两者之间的内存数据传输是否存在其他差异?
感谢那些愿意帮助的人
我正在尝试将 uint8_t [uint8_tlets_try[16]] 数组“翻译”为 16*8+1[null character] 元素的字符串。例如:
lets_try[0] = 10101010
lets_try[1] = 01010101
Run Code Online (Sandbox Code Playgroud)
...
我想要一个像这样的字符串:
1010101001010101...[\0]
这里的问题是:1)有没有一种快速的方法来执行这个操作?
我试图自己做;我的想法是从将单个 uint8_t 变量转换为字符串并使用循环获取完整数组开始[我还没有完成最后一部分]。最后我写了这段代码:
int main()
{
uint8_t example = 0x14;
uint8_t *pointer;
char *final_string;
pointer = &example;
final_string = convert(pointer);
puts(final_string);
return(0);
}
char *convert (uint8_t *a)
{
int buffer1[9];
char buffer2[9];
int i;
char *buffer_pointer;
buffer1[8]='\0';
for(i=0; i<=7; i++)
buffer1[7-i]=( ((*a)>>i)&(0x01) );
for(i=0; i<=7; i++)
buffer2[i] = buffer1[i] + '0';
buffer2[8] = '\0';
puts(buffer2);
buffer_pointer = buffer2;
return buffer_pointer;
}
Run Code Online (Sandbox Code Playgroud)
这里还有几个问题:
2)我不确定我是否完全理解我在网上找到的这个表达式的魔力:buffer2[i] …
我在 Nodejs 上有这段代码,我需要像 Java 一样编写,但结果不同。我认为问题出在十六进制编码上。但我不明白它是如何工作的。
Nodejs代码:
crypto.createHash('sha256').update(seed, 'hex').digest()
Run Code Online (Sandbox Code Playgroud)
Java代码:
digest = MessageDigest.getInstance("SHA-256");
byte[] encodedhash = digest.digest(seedString);
Run Code Online (Sandbox Code Playgroud)