Linux 命名管道

sparkdev 2019-06-12 13:06:00 阅读数:16 评论数:0 收藏数:0

前文中笔者介绍了管道,本文接着介绍命名管道。文中演示所用环境为 Ubuntu 18.04 desktop。

命名管道(named pipe)又被称为先进先出队列(FIFO),是一种特殊的管道,存在于文件系统中。命名管道与管道非常类似,但是又有自身的显著特征:

  • 命名管道可以用于任何两个进程间的通信,而不限于同源的两个进程。
  • 命名管道作为一种特殊的文件存放在文件系统中,而不是像管道那样存放在内核中。当进程对命名管道的使用结束后,命名管道依然存在于文件系统中,除非对其进行删除操作,否则该命名管道不会自行消失。

和管道一样,命名管道也只能用于数据的单向传输,如果要用命名管道实现两个进程间数据的双向传输,建议使用两个单向的命名管道。

创建命名管道

在命令行上创建命名管道
可以通过命令行命令 mkfifo 或 mknod 创建命名管道:

$ mkfifo /tmp/testp
$ mknod /tmp/testp p

可以通过 ls 命令查看命名管道的文件属性:

输出中的第一个字符为 p,表示这个文件的类型为管道。最后的 | 符号是有 ls 命令的 -F 选项添加的,也表示这个一个管道。

在程序中创建命名管道
在程序中创建命名管道,可以使用 mkfifo 函数,其签名如下:

#include <sys/types.h>
#include <sys/stat.h>

int mkfifo(const char *pathname, mode_t mode);

参数 pathname 是一个字符串指针,用于存放命名管道的文件路径。参数 mode 用于表示指定所创建文件的权限。该函数调用成功时返回 0;调用失败时返回 -1。
mkfifo 函数是一个专门用来创建命名管道的函数,而另外一个函数 mknod 却可以兼职创建命名文件,其函数签名如下:

#include <sys/types.h>
#include <sys/stat.h>

int mknod(char *pathname, mode_t mode, dev_t dev);

创建命名管道只是 mknod 函数的功能之一,它的前两个参数和 mkfifo 函数相同。在创建命名管道时,为第三个参数 dev 传递 0 就可以了。该函数调用成功时返回 0;调用失败时返回 -1。

在程序中使用命名管道

下面的 demo 模拟一个生产者进程和消费者进程,二者通过命名管道传输数据。生产者的代码如下:

#include <limits.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>

#define FIFO_NAME "/tmp/testp"
#define BUFFER_SIZE 4096
#define TEN_MEG (1024 * 1024 * 10)

int main(void)
{
    int pipe_fd;
    int res;
    int open_mode = O_WRONLY;
    int bytes_sent = ;
    char buffer[BUFFER_SIZE + ];

    if(access(FIFO_NAME, F_OK) == -)
    {
        res = mkfifo(FIFO_NAME, );
        if(res != )
        {
            fprintf(stderr, "Could not create fifo %s\n", FIFO_NAME);
            exit(EXIT_FAILURE);
        }
    }

    printf("Process %d opening FIFO O_WRONLY\n", getpid());
    pipe_fd = open(FIFO_NAME, open_mode);
    printf("Process %d opened fd %d\n", getpid(), pipe_fd);

    if(pipe_fd != -)
    {
        while(bytes_sent < TEN_MEG)
        {
            res = write(pipe_fd, buffer, BUFFER_SIZE);
            if(res == -)
            {
                fprintf(stderr, "Write error on pipe\n");
                exit(EXIT_FAILURE);
            }
            bytes_sent += res;
        }
        (void)close(pipe_fd);
    }
    else
    {
        exit(EXIT_FAILURE);
    }
    printf("Process %d finished\n", getpid());
    exit(EXIT_SUCCESS);
}

把上面的代码保存到文件 namedpipedemo.c 中。
消费者的代码如下:

#include <limits.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>

#define FIFO_NAME "/tmp/testp"
#define BUFFER_SIZE 4096

int main(void)
{
    int pipe_fd;
    int res;
    int open_mode = O_RDONLY;
    int bytes_read = ;
    char buffer[BUFFER_SIZE + ];

    memset(buffer, '\0', sizeof(buffer));

    printf("Process %d opening FIFO O_RDONLY\n", getpid());
    pipe_fd = open(FIFO_NAME, open_mode);
    printf("Process %d opened fd %d\n", getpid(), pipe_fd);

    if(pipe_fd != -)
    {
        do
        {
            res = read(pipe_fd, buffer, BUFFER_SIZE);
            bytes_read += res;
        } while (res > );
        (void)close(pipe_fd);
    }
    else
    {
        exit(EXIT_FAILURE);
    }
    printf("Process %d finished, %d bytes read\n", getpid(), bytes_read);
    exit(EXIT_SUCCESS);
}

把上面的代码保存到文件 namedpipedemo2.c 中。并分别编译这两个程序:

$ gcc -Wall namedpipedemo.c -o pipe1
$ gcc -Wall namedpipedemo2.c -o pipe2

先在一个终端中执行生产者:

然后在另一个终端中执行消费者:

结果是二者完成数据传输后都返回了:

删除命名管道

删除命名管道和删除一个普通文件没有什么区别:

$ rm /tmp/testp

这就可以了!

参考:
《Linux 程序设计》
《Linux 环境下 C 编程指南》


版权声明:本文为[sparkdev]原创文章
转载请带上:http://copyfuture.com/blogs-details/201906121309542893y8us6q7ytih16y
或:https://www.cnblogs.com/sparkdev/p/11008978.html


  1. 汉献帝最记恨的人不是董卓和曹操,而是此人,在他这过的生不如死
  2. 他曾是清朝“太子”,却将妻子杀死,与继母有私情,被封铁帽子王
  3. 超实用的 Nginx 极简教程,覆盖了常用场景
  4. 数据库设计时,是否应该设置外键
  5. 从0开始的Python学习016异常
  6. NBA最伟大的球员:迈克尔乔丹还是勒布朗詹姆斯?
  7. 美国小伙远赴中国看《复联4》,电影开场后他失声痛哭
  8. MVC Scaffolding SmartCode-Engine 更新
  9. 暖心时刻 《Apex 英雄》玩家自发捐助莫桑比克洪灾
  10. 学习大数据挖掘,大数据的主要来源有哪些平台?
  11. 相差40岁的婚姻就值8个月?
  12. 版本控制工具——Git常用操作(下)
  13. [WPF自定义控件库]以Button为例谈谈如何模仿Aero2主题
  14. 亚历山大如果没走错路,直接杀进中国,中国能挡住马其顿方阵吗?
  15. 宇宙大爆炸之前是怎样的?可能存在一个“倒退宇宙”
  16. JavaScript是如何工作的:编写自己的Web开发框架 + React及其虚拟DOM原理
  17. Tampermonkey还你一个干净整洁的上网体验
  18. 净利润大降,腾讯果然还是个投资公司
  19. [深度概念]·华山论剑-卷积神经网络发展史
  20. 李云龙与楚云飞互赠的FN手枪和佐官刀哪个更有价值
  21. 从一开始连败遭白眼到如今众神归位,joker点评WE表现:教科书!
  22. 2018中国游客出境游大数据出炉 出发城市成都排NO.4
  23. 做人可以低调,但耳环还是夸张的好!
  24. python学习之美多商城(九):用户模块--用户中心个人信息、邮件验证、celery异步实现发送邮件
  25. 微服务架构之「 访问安全 」
  26. 大富豪仿蓝月棋牌短信和修改图片教程
  27. 诞生了马云和贝索斯的电商,正让变数成为新零售的主旋律
  28. 克里米亚对俄罗斯和乌克兰意味着什么?两国为何争夺其归属权?
  29. 欧冠八强战曼联再遇巴萨,一起回顾两队的恩怨情仇!
  30. Spring拓展接口之FactoryBean,我们来看看其源码实现
  31. Java开发人员必须掌握的两个Linux魔法工具(四)
  32. 孙俪推荐的《儿童时代》图画书2019年刊持续火爆预定中
  33. 试戴今年表展朗格最复杂的腕表
  34. 对比C罗梅西欧冠数据:梅西当世有球最厉害,C罗当世无球最强!
  35. 杰出雇主探访——遇见汇桔网
  36. Lumen框架—升级改造之路-仓储层
  37. 从源码角度深度分析JVM虚拟机监控工具
  38. python之asyncio
  39. 2D图形如何运动模拟出3D效果
  40. 中国智能手机江湖众生相:谁能笑到最后?
  41. NBA又伤一人!考辛斯扭伤右脚踝,科尔不愿透露伤情情况!
  42. 霸气侧漏的句子,社会高冷,网红都喜欢!
  43. 湖南一个市很奇特,属于县级区域,却有一个正厅级单位
  44. 一起学Android之Dialog
  45. F8开发大会即将开幕:三个移动聊天工具将成今年主角
  46. 12部最强美国剧情电影,见证美国电影发展历程,没有任何续集!
  47. 【MQ】消息队列及常见MQ比较
  48. Wolsey“强整数规划模型”经典案例之一单源固定费用网络流问题
  49. 朱元璋为何非要杀沈万三?只因他犯了一个禁忌,是个帝王都不能忍
  50. 福山雅治被曝将离婚,当初宣布结婚时网络瘫痪,为何如今要离婚
  51. 野马结局法则:教你控制情绪
  52. 为什么说胃癌是“穷癌”呢?如何预防?
  53. 日系车销量最好的是丰田,但论质量最好,它第一个不同意
  54. Ubuntu安装新版本nodejs的5种姿势
  55. 世界最大直升机米-26为何那么强?来自乌克兰的发动机功不可没
  56. 知消 | 美国零售商大举进军自有品牌;麦德龙启动出售中国业务进程
  57. 朱邦凌:科创板应敢于吸纳大型科技公司上市
  58. 为什么软件公司宁愿花15k招一个应届生,也不愿给老程序员加5K工资
  59. 在项目中部署SpringSecurity---登录、退出功能
  60. 中国疾病负担报告显示:不健康饮食最影响国人健康!
  61. 6.6万起售,全球十佳变速箱,这台紧凑级SUV考虑过合资的活路吗?
  62. 辽宁输了,郭士强笑了!广东赢了,杜峰怒了!辽宁季后赛战力如何
  63. 50个Demo展示HTML5无穷的魅力
  64. NASA局长揭示美国雄心:看好月球价值数万亿美元资源
  65. 679 怎样杀死害虫
  66. 这些家庭出生的孩子,长大很难过的幸福
  67. 这疙瘩汤宝宝吃一次就惦记上了,鲜嫩水灵,好做又百搭~
  68. 让生命窒息的氧气—大氧化事件
  69. 遮住脸,绝色还是绝色
  70. centos7 下安装redis-4.0.2
  71. RM牌橘子味糖果“好吃不贵”
  72. 吉利牵手电信,无人驾驶时代的另类选择
  73. 超高性能管线式HTTP请求(实践·原理·实现)
  74. 你知道这些太阳的神奇事实吗?提前让孩子贮备宇宙知识丰富大脑。
  75. 以狗命名的军用飞机 - 答案 (1)
  76. 加杠杆猛冲业绩后,宝龙今年要控负债了
  77. 网站通信协议升级到HTTPS&HTTP2
  78. Django路由
  79. 心脏病、冠心病、心肌缺血、心绞痛、心肌梗死医生告诉您有啥区别
  80. 7000元网贷3个月变成50万, “714高炮” 要钱更要命
  81. TCP-IP详解笔记6
  82. 2018 形势、影响与心态
  83. 周恩来与日本田中首相“冒死”访华
  84. JDK的安装和环境配置
  85. 我的公司培训讲义(1):.NET开发规范教程
  86. 徐峥我认出来了,却没认出赵丽颖,当年这部剧真是卧虎藏龙
  87. 2D横版沙盒游戏《破烂星球》3月21日登陆Switch!
  88. Windows服务使用log4net记录日志
  89. 同余|欧拉定理|费马小定理|扩展欧拉定理|扩展欧几里得算法
  90. 这家放弃追赶风口的 AI 公司,是如何思考「边缘计算」的?
  91. 华为发布nova 4e,带来了3200万前置美颜
  92. 对话富途李华:选择美股IPO纠结很久 希望提升美国业务
  93. 苏-57单机强悍还是体系优势
  94. 什么是汽车平台化,对消费者有什么好处?
  95. 从深圳望族到香港“新界王”,这个家族的故事比电影精彩
  96. 解决“为硬件保留的内存”过大,优化电脑反应速度。
  97. 主流自媒体平台优势与运营方法
  98. 河南浚县出土1件唐代文物,竟让瓦岗寨好汉的英雄形象集体崩塌
  99. 程序员求职,却被问起当年高考分数,结果遭拒,还有这操作?
  100. 服用降尿酸药物可以停药吗?什么情况下停药,来看看医生怎么说

  1. 前端笔记之NodeJS(一)初识NodeJS&内置模块&特点(1713)
  2. Python开发:部分第三方库无法在线安装解决方法(1519)
  3. Matlab 2019a 安装包下载以及安装和激活(1421)
  4. React 与 React-Native 使用同一个 meteor 后台(1338)
  5. Delphi 开发微信公众平台 (二) 用户管理(1292)
  6. C#读取excel文件提示未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序(1146)
  7. [深度应用]·实战掌握Dlib人脸识别开发教程(1113)
  8. 币安称 4000 万美元比特币被盗(1057)
  9. 《跃迁-成为高手的技术》之联机学习(1052)
  10. 独家 | 寒武纪二代芯片发布在即,提前解密如何挑战英伟达!(982)
  11. 使用 C 语言实现一个 HTTP GET 连接(971)
  12. WebGL three.js学习笔记 纹理贴图模拟太阳系运转(965)
  13. 【译】.NET Core 是 .NET 的未来(861)
  14. Sublime Text3 最新版3207 安装及破解(804)
  15. 科学家在太平洋水域发现奇特的“砷呼吸”微生物(762)
  16. 小米有品员工签军令状,自动放弃年终奖!(740)
  17. 微软宣布 .NET 5 计划,支持跨平台、移动开发(740)
  18. 【预警通告】Weblogic反序列化远程代码执行漏洞(737)
  19. layui的table参数条件缓存问题(728)
  20. 75条笑死人的知乎神回复,用60行代码就爬完了(721)
  21. Linux学习(三):XShell连接虚拟机+开通22端口(713)
  22. Visual Studio 2019 正式发布,重磅更新,支持live share(692)
  23. 【预警通告】Apache Tomcat远程代码执行漏洞CVE-2019-0232(674)
  24. SQL简介及MySQL的安装目录详解(649)
  25. 10亿元巨贪山西吕梁原副市长张中生二审维持死刑判决(638)
  26. 5月13日公告精读丨一字跌停后,这只300亿市值的白马股出来澄清了(617)
  27. Vue之路由(603)
  28. css-博客样式初体验(562)
  29. 如果想转行学习WEB前端,这样学也许更加利于找工作(557)
  30. 2019年程序员最值得学习的思维利器——任务分解(555)
  31. 彭博社:苹果A13芯片即将产量 新iPhone"浴霸"无疑(539)
  32. 声明与定义的区别(521)
  33. MongoDB创建数据库和删除数据库05-14学习笔记(493)
  34. PJzhang:Lucifer1993的struts-scan漏洞全量检测工具(492)
  35. 吴奇隆当爹!前妻马雅舒开心复出拍戏,颜值吸睛气质超赞(490)
  36. K8s集群安装--最新版 Kubernetes 1.14.1(490)
  37. 【威胁通告】Oracle全系产品2019年4月关键补丁更新(483)
  38. 英媒:阿里将允许外国零售商在阿里平台上销售商品(475)
  39. Confluence SSRF及远程代码执行漏洞处置手册(470)
  40. 舍命生子产妇吴梦丈夫怒斥:没抢肺源不是精神分裂,网友断章取义(469)
  41. Visual Studio 2019 正式发布(460)
  42. 短视频内容重复,如何伪原创处理(456)
  43. [翻译] Visual Studio 2019: 极速编码. 智能工作. 创造未来.(438)
  44. 机器学习 ML.NET 发布 1.0 RC(435)
  45. 美方拟升级关税措施?中方:反制!(433)
  46. 刘强东身边的CXO还有谁“幸存”(430)
  47. 香饽饽!米兰双雄均有意荷兰小将贝尔赫韦因(429)
  48. 阿里巴巴2018年纳税516亿元 同比增40%(427)
  49. 绿盟科技互联网安全威胁周报NSFOCUS-19-13(407)
  50. 告诉你去越南芽庄必带回的好东西(405)
  51. 宝宝多大可以自己吃饭?错过孩子独立吃饭黄金期,等着后悔吧(404)
  52. 娶不起老婆就来这6个国家,菲律宾的女孩是首选,一定别娶韩国女(398)
  53. 小米手机卖不动了?(387)
  54. 针对django2.2报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9737: ill....(386)
  55. 太奇葩!买100元债只给1.63元购物券和1.11元现金?网友炸锅:得买多少债券才能换一双鞋(385)
  56. 马光远:全球货币政策进入摇摆期,包括房价的资产价格何去何从(384)
  57. 我司使用了六年的分布式锁(382)
  58. 雷军清华演讲实录:小米9年的创新、变革与未来(379)
  59. 积分一样却选手下败将出战国际赛,《最强大脑》云队选手被坑了?(374)
  60. F#周报2019年第14期(371)
  61. Spring Boot 2.1.5 正式发布,1.5.x 即将结束使命!(368)
  62. Webpack 4教程 - 第八部分 使用prefetch和preload进行动态加载(368)
  63. 报告显示:一季度中国家庭总资产缩水而消费支出增加(341)
  64. 《最强大脑》要垮?桑洁魏坤琳出轨细节被扒,戚薇才是神助攻(337)
  65. 直认与老公感情淡了!27岁TVB上位女星:我们不是好熟(336)
  66. 他联系叙恐怖分子“卖军火”,称能搞到2000枚导弹,关键时刻中国警察出手(335)
  67. 谁是苏小明饭局爆粗偷拍者?知情人称另有其人(325)
  68. 苹果应用商店被判垄断?然而并没有(324)
  69. Oracle甲骨文大规模裁员,你背离时代就会被淘汰(324)
  70. 日本明仁天皇退位,日本“平成”年代结束(316)
  71. 华电教授孙玉兵被指与昔日同学共同学术造假,多所高校调查(309)
  72. 迪玛希好惨!昨晚《歌手》为声入人心男团帮帮唱,却再被指控侵权(307)
  73. linux系统安装cdcfordb2udb(306)
  74. 女友被曝插足许志安郑秀文婚姻 知情人透露马国明已下定决心分手(306)
  75. 智慧停车场系统开发建设解决方案(302)
  76. F#周报2019年第15期(298)
  77. shopify网站转化率优化之结账页checkout优化(288)
  78. 杜敬谦死因疑曝光!或因他这一特殊的训练方式,泳迷高呼孙杨退役(286)
  79. 真实!这部8.5分的缉毒剧,毒贩公然贿赂警察:80万,把我放出去(283)
  80. 威廉王子出轨凯特王妃闺蜜? 外媒称婚外情致兄弟反目(283)
  81. spring-cloud-sleuth+zipkin源码探究(280)
  82. 深度学习python的配置(Windows)(279)
  83. 许志安出轨视频系蓄谋偷拍?司机被曝收40万装红外摄像头(278)
  84. 赌命生子九个月后,吴梦离世:前半辈子任性了,我用生命买单(278)
  85. NodeJs之邮件(email)发送(277)
  86. 视觉中国深夜道歉:全面配合监管部门彻底积极整改(276)
  87. 新更新kb4493472导致无法正常开机(264)
  88. 她做个半永久眉毛就被说整容了?(262)
  89. 韦杰落网,金诚集团终局(262)
  90. 美国各州18年人均GDP排名(附中国各省市区人均GDP排名)(260)
  91. Google AI 系统 DeepMind 高中数学考试不及格(257)
  92. 阿里 EasyExcel 使用及避坑(257)
  93. 机器学习基石笔记:01 The Learning Problem(256)
  94. 华为推出方舟编译器 称可提升安卓系统效率(253)
  95. 张丹峰出轨最新锤来了!毕滢的朋友圈简直刷新下限啊!(252)
  96. 山东庆云民企3000亩土地被贱卖 国企接盘拟转性(250)
  97. 【硬盘版】下载利器IDM+优特(uTorrent)BT下载器类(249)
  98. 如何设置使chrome新标签页中打开链接自动跳转到新标签页?(248)
  99. 不要996!程序员创建955.WLB不加班公司名单,GitHub周榜第二(246)
  100. 河南汝州农商行“百万丢款案”调查,两级法院现“判决书打架”(242)

  1. Pycharm 新建模板默认添加编码格式-作者-时间等信息
  2. ES6中常用的小技巧,用了事半功倍哦
  3. Python 从入门到进阶之路(六)
  4. Java中的反射机制和动态代理
  5. 英特尔推创业扶持计划:“攫取”以色列AI和自动驾驶人才
  6. 支付类系统数据处理和数据中台的数据处理方式有什么不同?
  7. 机器视觉中的光源
  8. 想让自己的项目6666,可是 Chrome 不答应!
  9. 未来简史:从智人到神人
  10. AMD、Intel注意了 俄罗斯国产处理器能跑X86游戏了
  11. selenium2library关键字
  12. 《Graph Attention Network》阅读笔记
  13. 面试总结 - 大三第 16 周总结
  14. Intel、高通等在美游说以期不断供
  15. 小白到大神,你需要了解的 sqlite 最佳实践
  16. 5种处理Vue异常的方法
  17. 浅谈 Attention 机制的理解
  18. 看完此文,妈妈还会担心你docker入不了门?
  19. 北电90级:最勤奋的黄磊和最懒的姜武居然在同一个班
  20. Java 8 Collectors to Map
  21. Spring AOP中@Aspect 面向切面注解使用详解
  22. 文件操作的相关
  23. 我科学家首次提出新型远程量子密钥分发协议
  24. 精读《Optional chaining》
  25. CentsOS原生RabbitMQ安装过程
  26. 大数据技术之_31_Java 面试题_01_JavaSE 面试题 + SSM 面试题 + Java 高级面试题 + Java 项目面试题
  27. 零基础如何学习好python爬虫?分哪几个阶段?
  28. 可见光驱动生物质可制备氢气和原柴油
  29. Redis删除特定前缀key的优雅实现
  30. AWS云创建EC2与使用注意事项-踩坑记录
  31. 新行星“猎手”瞄准半人马座阿尔法星
  32. 传杨天真和张艺兴闹掰,杨天真发两人跳舞视频辟谣
  33. 万亿数据下Hadoop的核心竞争力
  34. AI也“偏见”!或应鼓励女性参与AI研发
  35. [Vue 牛刀小试]:第十三章 - Vue Router 基础使用再探(命名路由、命名视图、路由传参)
  36. 上周热点回顾(6.10-6.16)
  37. 屠呦呦团队放“大招”:“青蒿素抗药性”等研究获新突破
  38. Spring拓展接口之BeanPostProcessor,我们来看看它的底层实现
  39. 高通骁龙865曝光:支持LPDDR5X和UFS 3.0 有两个版本
  40. 一线|前百度副总裁顾国栋加入蛋壳公寓任COO 负责线下团队
  41. 周一不睡觉,也要把pandas groupy 肝完,你该这么学,No.8
  42. LeetCode.927-独特邮箱地址(Unique Email Addresses)
  43. Anaconda 恢复清华大学开源软件镜像,近期服务上线
  44. Consul初探-服务注册和发现
  45. 企业讨债9年打赢官司也没用:法院领导是对方亲兄弟
  46. 台积电或在明年一季度开始为苹果生产5纳米芯片
  47. 日本JDI纾困案生变:夏普表示愿伸援
  48. 曹大谈内存重排
  49. 滴滴接入第三方出行服务商,试水聚合平台
  50. 中国AI芯“觉醒”的五年
  51. 统计学习方法20190616学习第一章第1,2节统计学习
  52. 命令行高效操作Git,看这篇就够了
  53. 曾猛删合照,父亲节晒与张丹峰合影!这对父子也走出毕滢风波了?
  54. 唐嫣走路一半遭鸟屎砸中 超近画面笑翻网友
  55. kubernetes调度之pod优先级和资源抢占
  56. .NET Core 3.0 Preview 6中对ASP.NET Core和Blazor的更新
  57. 库克斯坦福演讲:科技公司应为"做坏事"担责任
  58. 一周全球公司十大要闻:波音连续第二个月没收到商业飞机订单
  59. 特斯拉上海厂:建筑基本完工 开始安装生产线
  60. 存储卡革命启动!microSD已然媲美SSD
  61. 警告!2020年2月1月起:不支持TCP和UDP协议的DNS服务器将被关停
  62. 近百起涉民营医院骗保案:伪造病历、虚假住院,有的涉案千万
  63. 企业存储快速增长势头到头了:2019 年 Q1 下降 0.6%
  64. 天文学家探测到银河系与另一个星系相撞的信号
  65. 升维打击,设计之道
  66. 北电1990级:除了黄磊和姜武,他们也是你眼熟的演员
  67. 四象限分析法分析你是否适合做管理
  68. 韩国瑜22日台中造势 国民党市议员全力相挺
  69. 苏贞昌笑高雄“20例”登革热 游淑慧:看看“万例”前朝
  70. 退休女环保局长涉黑落马,该区一周“打伞”11人
  71. 杨幂雪莉冷白皮之战,杨洋尼坤合照,网友心痛神颜不再
  72. 微服务架构:自动扩展简介
  73. 浏览器缓存
  74. 深入理解Java虚拟机(自动内存管理机制)
  75. Jenkins自动化部署入门(一)
  76. jvm(2)---类加载机制
  77. Java8的Stream API使用
  78. Spring的web.xml文件配置
  79. vscode源码分析【二】程序的启动逻辑
  80. kubernetes ingress(一) 简介
  81. 寻觅Azure上的Athena和BigQuery(一):落寞的ADLA
  82. 实验十二:SWING界面设计
  83. 死磕 java同步系列之CountDownLatch源码解析
  84. 容器中Java 程序OOMKilled原因浅析
  85. 舍友聚会
  86. 串口通信
  87. 数据结构与算法---排序算法(Sort Algorithm)
  88. 笔记-JavaWeb学习之旅17
  89. 物理隔离下的数据交换平台难点解析与实践(一)
  90. jvm(1)---java内存模型
  91. F#周报2019年第24期
  92. 机器学习经典算法之决策树
  93. 你知道Object中有哪些方法及其作用吗?
  94. coreml之通过URL加载模型
  95. 中移核心网 5G 大单:华为、中兴、爱立信、诺基亚中标
  96. 三道博弈论入门题
  97. eclipse JDT Plug-in Developer Guide
  98. 《漫画算法》笔记-上篇
  99. 计算机网络-自定向下方法之运输层
  100. 5.Linux系统的vim