5---Linux小程序“进度条”及缓冲区的概念(逻辑梳理,轻松理解)

一、缓冲区的解析:

1.1论点的引入:

  • 在Linux中有一个接口sleep,可以使得C/C++程序休眠一段指定的时间。他需要依赖的头文件是<unistd.h>,注意这个接口为Linux私有。

        

  • usleep接口类似sleep接口,但是单位为微秒。
  • 下面两份代码,会在不同时间节点打印hello,但是两份代码的差别微乎其微,是什么原因印象的呢?

        

1.2原因解析:默认缓冲区:

  • 在C/C++中,会针对标准输出流,为我们提供默认的缓冲区,这个缓冲区通常通常只有几KB大小。
  • printf的输出是行缓冲,就意味着输出的内容会被缓存在内存中。这种行为可以确保当你使用printf连续输出多个字符串时,它们会被一次性输出而不是一个字符一个字符地输出,从而提高效率。
  • 因此,就会导致以上第二种情况。即程序先休眠2秒,然后才会打印hello字符串。
  • 如果想要先打印hello字符串再休眠,就需要“刷新行缓冲区”。
  • 正常情况下刷新行缓冲区的方法有三种:缓冲区已满、遇到换行符'\n'、程序正常结束。
  • 像以上第一种情况就是使用'\n'刷新缓冲区的。

1.3强制刷新行缓冲区:

  • 使用fflush接口,可以强制刷新行缓冲区。这样就可以实现,先打印hello再休眠2秒的操作。

        

        

1.4对回车换行的解析:

  • ‘\n’我们称为回车换行,回车换行=回车+换行,他会刷新缓冲区。
  • ‘\r’我们称为换行,不会刷新缓冲区。

二、字符设备——显示器和键盘:

  • 通常情况下,显示器显式一个整数,是真的显式一个整形数字吗?答案是:不是!!!
  • 显示器是字符设备,他会通过函数将整形数字切割成一个个数字,然后转换为字符数字,一个个显示到显示器上。
  • 键盘也是一样,将读取到的一个个字符数字转换为整形数字后,组合,存放到整形变量中。

三、进度条实现

  • 当前版本,只完成外在不完成内在,相当于徒有其形,目的是帮助理解逻辑。

        

  • 不会放视频,截两张图给大伙看看。

        

  • 进度条每涨1%,多打印一个#再[]中,另外使用百分比显示当前进度,最后一个方括号是一个动画演示,防止进度条卡住时,我们不知道是依旧在加载还是真的卡住了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/703516.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MES系统追溯管理功能,迅速定位问题源头

一、MES系统概述 MES系统是一种实现车间生产智能化、信息化的管理系统&#xff0c;通过对生产现场的数据进行实时采集、处理和分析&#xff0c;为企业管理者提供准确、及时的生产信息。MES系统主要包括生产订单管理、物料追溯、质量管理、设备管理、物料管理、人员管理等功能模…

YOLOV8环境部署(GPU版本)

一、安装&#xff43;&#xff55;&#xff44;&#xff41;和&#xff43;&#xff55;&#xff44;&#xff4e;&#xff4e; 1、安装cuda之前先打开英伟达控制面板查看自己的显卡信息 2、“帮助”—>“系统信息”—>“组件”&#xff0c;然后看第三行的信息“Nvidia …

代码行数统计工具cloc

Release v2.00 AlDanial/cloc GitHub 代码量代码行数统计工具cloc的正确使用(windows平台亲测有效&#xff0c;本人踩过坑&#xff0c;文中提到&#xff01;)_cloc代码统计工具-CSDN博客

vue使用天地图显示不全问题解决

在vue项目中&#xff0c;使用天地图出现了地图只显示左上角的情况。如图所示&#xff1a; 解决办法&#xff1a;刷新一下容器 map.checkResize() 方法用于在地图容器大小发生变化时调整地图的大小以适应新的容器大小。 api地址&#xff1a;天地图API 解决思路&#xff1a;当整…

【永洪BI】管理系统

管理系统模块包括系统设置、认证授权、日志管理、监控预警、资源部署、VooltDB管理、数据库管理、企业应用配置、系统检查、应用管理模块。 系统设置界面&#xff1a; 可以进行清除系统缓存、配置系统主题、配置系统邮箱、配置门户主页、配置权限管理系统、配置密码策略、配置…

智能网红主播直播手机:助您轻松卖货、卖团购卷、拓客利器!

在当下快速发展的电商行业中&#xff0c;直播销售已经成为无可忽视的一大趋势。智能网红主播直播手机的出现&#xff0c;让人们无需拥有专业设备和经验&#xff0c;便可轻松参与直播销售&#xff0c;享受销售乐趣。本文将介绍智能网红主播直播手机的操作简单、易上手以及其在卖…

【全开源】国际版JAVA同城跑腿源码快递代取帮买帮送同城服务源码支持Android+IOS+H5

打造全球领先的即时配送解决方案 在数字化和智能化的浪潮中&#xff0c;即时配送服务已成为人们生活中不可或缺的一部分。随着全球化进程的加速&#xff0c;同城跑腿服务的需求也在全球范围内不断增长。为了满足这一市场需求&#xff0c;我们荣幸地推出了“国际版同城跑腿源码…

OpenHarmony标准设备应用开发实战(一)——HelloWorld

本文主要内容包括三个方面&#xff1a; 1. 应用编译环境准备&#xff1b; 2. Hello Openharmony 页面编写&#xff1b; 3. 安装应用到标准设备上面。下面就让我们从零开始学习 OpenHarmony 标准设备应用开发。 一、应用开发环境准备 1.1 下载 DevEco Studio 3.0 Beta2 版本 …

深度学习之卷积神经网络理论基础

深度学习之卷积神经网络理论基础 卷积层的操作&#xff08;Convolutional layer&#xff09; 在提出卷积层的概念之前首先引入图像识别的特点 图像识别的特点 特征具有局部性&#xff1a;老虎重要特征“王字”仅出现在头部区域特征可能出现在任何位置下采样图像&#xff0c…

在云服务器上运行StyleGAN3生成伪样本

首先是传入数据&#xff0c;这里我们不做赘述。 对于数据格式的裁剪&#xff0c;可以通过以下代码进行&#xff1a; from glob import glob from PIL import Image import os from tqdm import tqdm from tqdm.std import trangeimg_path glob(r"C:\Users\Administrato…

实验12:综合实验

1、实验目的及要求&#xff1a; 通过本次实验完成一个小型网络中配置设备。实现配置一个路由器、两个交换机和两台PC&#xff0c;以支持IPv4和IPv6连接&#xff1b;路由器和交换机必须安全管理&#xff0c;配置VLAN间路由、DHCP、以太网通道和端口安全。通过登录思科网络技术学…