首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    sendfile:Linux中的”零拷贝”

    如今几乎每个人都听说过Linux中所谓的”零拷贝”特性,然而我经常碰到没有充分理解这个问题的人们。因此,我决定写一些文章略微深入的讲述这个问题,希望能将这个有用的特性解释清楚。在本文中,将从用户空间应用程序的角度来阐述这个问题,因此有意忽略了复杂的内核实现。 什么是”零拷贝” 为了更好的理解问题的解决法,我们首先需要理解问题本身。首先我们以一个网络服务守护进程为例,考虑它在将存储在文件中的信息通过网络传送给客户这样的简单过程中,所涉及的操作。下面是其中的部分简单代阿: read(file, tmp_buf, len); write(socket, tmp_buf, len); 看起来不能更简单了。你也许认为执行这两个系统调用并未产生多少开销。实际上,这简直错的一塌糊涂。在执行这两个系统调用的过程中,目标数据至少被复制了4次,同时发生了同样多次数的用户/内核空间的切换(实际上该过程远比此处描述的要复杂,但是我希望以简单的方式描述之,以更好的理解本文的主题)。 为了更好的理解这两句代码所涉及的操作,请看图1。图的上半部展示了上下文切换,而下半部展示了复制操作。

    04

    解决CentOS 7 history命令不显示操作记录的时间和用户身份问题

    centos6 中history命令显示操作命令的时间和用户身份 [root@bdkyr ~]# history   294  2017-01-06 16:46:48  root clear   295  2017-01-06 16:46:50  root ll   296  2017-01-06 16:46:52  root cat hostname.sh    297  2017-01-06 16:46:56  root cat nginxlog_cut.sh    298  2017-01-06 16:47:29  root clear   299  2017-01-06 16:47:34  root history [root@bdkyr ~]# cat /etc/redhat-release  CentOS release 6.6 (Final) [root@bdkyr ~]# 而centos7中,history命令中不显示操作命令的时间和用户身份 [root@bdkyr data]# cat /etc/redhat-release  CentOS Linux release 7.2.1511 (Core)  [root@localhost data]# history -n 10 [root@localhost data]# history 10  1268  \  1269  history  1270  cat /etc/redhat-release   1271  clear  1272  cat /etc/redhat-release   1273  history  1274  clear  1275  cat /etc/redhat-release   1276  history -n 10  1277  history 10 [root@bdkyr data]# 解决该问题只需要在/etc/profile中添加如下变量即可: export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S  `whoami` " 然后运行source /etc/profile命令即可,注意引号中的空格 [root@bdkyr data]# history 10  1273  2017-01-05 19:40:18  root history  1274  2017-01-05 19:40:27  root clear  1275  2017-01-05 19:40:29  root cat /etc/redhat-release   1276  2017-01-05 19:40:35  root history -n 10  1277  2017-01-05 19:40:39  root history 10  1278  2017-01-05 19:41:12  root cat /etc/profile  1279  2017-01-05 19:42:16  root vim  /etc/profile  1280  2017-01-05 19:42:26  root source  /etc/profile  1281  2017-01-05 19:42:28  root history  1282  2017-01-05 19:42:42  root history 10 [root@bdkyr data]# 至此history命令输出结果格式完美解决,如果要清除历史记录,可以运用history -c,具体history用法如下: history命令的用法及参数usage: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...] 参数: n :数字,要列出最近的若干命令列表 -c :将目前的 shell 中的所有 history 内容全部消除 -a :将目前新增的 history 指令新增入 histfiles 中,若没有加 histfiles ,则预设写入 ~/.bash_history -r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中 -w :将目前的 history 记忆内容写入 histfiles

    02

    IBM:区块链让我们重新思考企业,生态和经济

    几个世纪以来,全球贸易一直是人类历史上财富创造的主要渠道,市场摩擦则是财富创造的主要障碍。近年来,商业领域已经克服了很多阻碍发展的障碍。现在出现了很多种信任机制和信任工具减少交易过程中的风险。技术创新也帮助克服了交易中的低效现象。但是,很多交易行为还是效率较低,成本较高,而且风险很大。 区块链技术—该技术能够永久且透明地保存交易记录—能够消除各行业中棘手的阻碍因素。随着阻碍交易的各种因素的消失,新的组织形式将会出现,而且产业形态和企业模式也将会出现新的变化。有了透明的标准,新的信任模式将推动生态系统进一步

    011
    领券