小编H.P*_*ter的帖子

我在查看 <unistd.h> 中定义的 read() 函数代码时遇到问题

我现在试图通过研究实际的代码实现来了解 read(2) 函数的工作原理,首先,我尝试了解它是如何在 #include 头文件中定义的。

在该文件中,我发现了这个:

ssize_t  read(int, void *, size_t) __DARWIN_ALIAS_C(read);
Run Code Online (Sandbox Code Playgroud)

然后,我用谷歌搜索找到了实际的 read() 函数声明。

和,

https://github.com/lattera/glibc/blob/master/io/read.c

我找到了这个。在这段代码中,

/* Read NBYTES into BUF from FD.  Return the number read or -1.  */
ssize_t
__libc_read (int fd, void *buf, size_t nbytes)
{
  if (nbytes == 0)
    return 0;
  if (fd < 0)
    {
      __set_errno (EBADF);
      return -1;
    }
  if (buf == NULL)
    {
      __set_errno (EINVAL);
      return -1;
    }

  __set_errno (ENOSYS);
  return -1;
}
Run Code Online (Sandbox Code Playgroud)

现在这是我的问题。

  1. __libc_之前是什么read?为什么需要它?当用户调用read(2)时,如何调用这个函数?

  2. 在我看来,这段代码与从文件描述符读取缓冲区无关,而是只有处理可能的错误的代码: fd < …

c unix posix system-calls unistd.h

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

HBase:次要压缩和主要压缩之间的区别

我无法理解为什么主要压缩与次要压缩不同。据我所知,次要压缩是将一些 HFile 合并为一个或多个 HFile。

我认为主要压缩除了处理已删除的行之外几乎做了同样的事情。

所以,我不知道为什么主要压缩会恢复 HBase 的数据局部性(当它在 HDFS 上使用时)。

换句话说,为什么小压缩不能恢复数据局部性,尽管对我来说,小压缩和大压缩都只是将 HFile 合并成少量的 HFile。

为什么只有主要压缩才能显着提高读取性能?我认为小压缩也有助于读取性能的提高。

请帮助我理解。

先感谢您。

hbase hdfs

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

标签 统计

c ×1

hbase ×1

hdfs ×1

posix ×1

system-calls ×1

unistd.h ×1

unix ×1