Linux:进度条(小程序)以及git三板斧
Linux小程序:进度条
在实现小程序前我们要弄清楚:
1.缓冲区;
2.回车与换行。
缓冲区:
分别用gcc来编译下面两个程序:
程序一:
#include <stdio.h>
int main()
{
printf("hello Makefile!\n");
sleep(3);
return 0;
}程序二:
#include <stdio.h>
int main()
{
printf("hello Makefile!\n");
sleep(3);
return 0;
}
可以看到打印程序二没有 \n ’后,没有在该打印的时候打印,反而在结束后才出现,
这说明peintf的运行结果hello Makefile被提起保存在了某个地方,当程序结束时,hello Makefile才打印出来,这个地方就是缓冲区!
回车与换行:
通过老式键盘就会发现其实Enter是包含换行和回车的意思:
回车:就是到一行的开头;
换行(' \r '):切换到当前位置的下一行;
有了以上的知识储备我们就可以开始写Linux的第一个程序了!!
进度条:
由于没有了' \n '无法刷新缓冲区,所以还需要了解一个强制刷新的函数:
头文件为:#include <unistd.h>
函数:fflush()
此时我们先来写个倒计时:

进度条,启动!!
首先需要创建makefile文件实现多文件之间的自动化构建:
makefile:
1 my-test:game.o main.o 2 gcc -o $@ $^3 main.o:main.c 4 gcc -c main.c5 game.o:game.c 6 gcc -c game.c7 8 .PHONY:clean9 clean: 10 rm -f my-test game.o main.o
game.h:
1 #include <stdio.h>2 #include <time.h>3 #include <stdlib.h>4 #include <unistd.h>5 6 #define Head '>'7 #define MAX 1028 #define CHAR '='9 10 //进度条实现 11 void Progress(double n);
game.c:
1 #include "game.h"2 //下载在进行图标3 const char*arr1="|/-\\";4 //进度条数组5 char arr2[MAX] = {};6 void Progress(double n)7 {8 //char arr1[4] = "|/-\";9 static int count = 0;10 int count1 = count % 4;11 count++;12 //下载进度未达到1%需要一个箭头表示13 if(n <= 1.0)14 arr2[0] = Head;15 //\033:表示颜色开始 [5;31;44m:表示闪烁;前景色为黄色;背景色为蓝色 \033[0m:表示清空颜色缓存16 //\r:表示回到开头17 printf("[\033[5;31;44m%-100s\033[0m][%.1f%%][%c]\r",arr2,n,arr1[count1]);18 //强制刷新缓冲区19 fflush(stdout);20 //按百分比显示进度 21 arr2[(int)n] = CHAR; 22 if(n < 99) 23 arr2[(int)n+1] = Head;24 25 }
main.c:
1 #include "game.h"2 3 void Down1()4 {5 //取随机数6 srand(time(NULL));7 //需要下载的大小8 int num = 1024 * 1024 *1024;9 int nnn = num;10 //下载未完成继续下载11 while(num)12 { 13 //休眠1000微秒14 usleep(1000);15 //本次下载的大小16 int download = rand() % (1024 * 1024);17 //还需要的下载量18 num = num - download;19 //下载完成20 if(num < 0)21 num = 0;22 int downnum = nnn - num;23 //下载占需要下载的百分比 24 double n = ((downnum * 1.0) / nnn ) * 100.0;25 Progress(n); 26 } 27 printf("\n"); 28 } 29 30 int main() 31 { 32 Down1(); 33 34 return 0; 35 }
特别注意:
进度条是建立在一个加载这类的板子上的,不是用程序写出来后自己控制进度的!需要配合一些下载场景,根据下载量的大小和下载速度来实时对进度进行同步更新!!!
使用Gitee创建项目:
首先需要在Linux安装git:
格式:yum intall git
其次需要创建一个Gitee账号:Gitee - 基于 Git 的代码托管和研发协作平台
然后创建一个仓库,如下:如果不需要裁剪文件就不需要勾选 .gitignore

在创建好的仓库页面中复制仓库的链接, 以备接下来进行同步数据:

下载仓库到本地:
将代码放到刚才下载好的目录中
格式:git clone [url]
这里的 url 就是刚刚建立好的 项目 的链接
三板斧第一项:git add
将代码放到刚才下载好的目录中
格式:git add [文件名]
将需要用 git 管理的文件告知 git
三板斧第二项:git commit
提交改动到本地
格式:git commit .最后的 "." 表示当前目录
提交的时候应该注明提交日志, 描述改动的详细内容.
三板斧第三项:git push
同步到远端服务器上
格式:git push
需要填入用户名密码. 同步成功后, 刷新 Github 页面就能看到代码改动了。
过程:
需要注意:git add .只是将文件放入暂存区,还没有放入到本地仓库中!!!
特别注意:
1.如下图中的.gitignore中包含的文件格式会进行过滤,并且是修改就会生效的!!!
2.当我们在进行多人关联一个远程仓库时,一方进行远程提交后,另一方要想远程提交必须同步远程仓库!(必须保证所有的人都能看到!),git仓库如果本地和远端仓库不同步,git会强制你进行同步!


以上就是个人学习的见解和学习过程的解析,欢迎各位大佬在评论区探讨,交流!
如果本篇对你有帮助的话,三连支持一下吧。
感谢大佬们的三连! 感谢大佬们的三连! 感谢大佬们的三连!

相关文章:
Linux:进度条(小程序)以及git三板斧
Linux小程序:进度条 在实现小程序前我们要弄清楚: 1.缓冲区; 2.回车与换行。 缓冲区: 分别用gcc来编译下面两个程序: 程序一: #include <stdio.h> int main() { printf("hello Makefil…...
CSS-表格属性(1)
边框相关属性(其他元素也能用): 属性名:border-style功能:边框风格可选值: 1.none 默认值(无边框) 2.solid 实线 3.dashed 虚线 4.dotted 点线 5.double 双实线 border-style: dashed; 属性名:…...
html在线生成二维码(附源码)
文章目录 1.设计来源1.1 主界面1.2 美化功能 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/134458927 html二维码生成(附源码),生成二…...
POS系统完整体系的介绍 Pos终端主密钥MK、DUKPT、PEK、DEK、MEK、TUSN的含义 ---安全行业基础篇7
POS系统完整体系的介绍 销售点终端(POS机)是零售和服务行业中用于处理销售和交易的关键技术。POS系统不仅涉及支付处理,还包括库存管理、顾客关系管理、数据分析等多个方面。下面是POS系统完整体系的介绍: 1. 硬件组件 终端机&…...
多普勒流速仪的功能作用是什么?
我国地域广大,各地降雨分布不均,某些城市经常会出现连续的降雨进而导致城市排水压力过大,为了提高城市应对排水过量的极端情况的出现,亟需一种方案能够对城市排水进行有效及时的监测,从而能够及时的采取应对方案。 在污…...
java 数据库 查询 select 2
Day2 组函数 以组为操作单位,一组数据得到一个结果。 在没有手动分组的前提下,整张表默认为一组数据 max(列名):获取最大值 min(列名):获取最小值 sum(列名):获取总和 avg(列名):获取平均值 count(列…...
【前端学java】复习巩固-Java中的对象比较(14)
往期回顾: 【前端学java】JAVA开发的依赖安装与环境配置 (0)【前端学 java】java的基础语法(1)【前端学java】JAVA中的packge与import(2)【前端学java】面向对象编程基础-类的使用 (…...
Sentinel 系统规则 (SystemRule)
Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 SpringbootDubboNacos 集成 Sentinel&…...
Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)
Linux 软件包管理器 yum 什么是软件包: 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通…...
剧情继续:马斯克曝出OpenAI前员工举报信,董事会与奥特曼谈判回归
丰色 发自 凹非寺 量子位 | 公众号QbitAI 经过4天的极限拉扯、反转再反转,奥特曼有可能重新回归了。 据知情人士透露,OpenAI董事会正与奥特曼进行一场“富有成效”的新谈判。 如果奥特曼回到OpenAI,他将继续担任CEO。 与此同时,…...
mysql解压版安装步骤linux
1. MySQL下载就不说了,以5.7版本举例 2. 解压安装包 tar -zxvf mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz 3. 重命名目录 mv mysql-5.7.41-linux-glibc2.12-x86_64 /usr/local/mysql 4. 创建mysql用户组和用户 groupadd mysql useradd -r -g mysql mysql …...
Program Header Table(转载)
程序头表与段表相互独立,由ELF文件头统一管理。 程序头表负责ELF文件从文件到加载后映像的映射关系,一般只有可执行文件包含。 1. segment和section segment: 程序头表项描述的对象称为segment,即elf文件加载后的数据块; 它提供…...
汽车智能座舱/智能驾驶SOC -2
第二篇(笔记)。 未来智能汽车电子电气将会是集中式架构(车载数据中心)虚拟化技术(提供车载数据中心灵活性和安全性)这个几乎是毋庸置疑的了。国际大厂也否纷纷布局超算芯片和车载数据中心平台。但是演进需…...
Vite Vue3+Element Plus框架布局
App根组件:框架布局 <template><el-container class"layout-container-demo" style"height: 98vh"><!-- 菜单栏 --><el-aside width"200px"><el-scrollbar><!-- router:是否启用 vue-router 模式。…...
【原创】为MybatisPlus增加一个逻辑删除插件,让XML中的SQL也能自动增加逻辑删除功能
前言 看到这个标题有人就要说了,D哥啊,MybatisPlus不是本来就有逻辑删除的配置吗,比如TableLogic注解,配置文件里也能添加如下配置设置逻辑删除。 mybatis-plus:mapper-locations: classpath*:mapper/*.xmlconfiguration:mapUnd…...
ABAP 长文本操作
关联表 1.STXH:长文本抬头表 2.STXL:长文本行表 3.TTXID:Text ID 表 4.TTXOB:Textobject表 5.订单中众多的文本描述,我们怎么知道其对应的【对象】&【ID】呢? 可SE38-通过查找程式:RST…...
C++:哈希表的模拟实现
文章目录 哈希哈希冲突哈希函数 解决哈希冲突闭散列:开散列 哈希 在顺序结构和平衡树中,元素的Key和存储位置之间没有必然的联系,在进行查找的时候,要不断的进行比较,时间复杂度是O(N)或O(logN) 而有没有这样一种方案…...
echarts实现如下图功能代码
这里写自定义目录标题 const option {tooltip: {trigger: axis},legend: {left: "-1px",top:15px,type: "scroll",icon:rect,data: [{name:1, textStyle:{color: theme?"#E5EAF3":#303133,fontSize:14}}, {name: 2, textStyle:{color: theme…...
Java 开源重试类 guava-retrying 使用案例
使用背景 需要重复尝试执行某些动作,guava-retrying 提供了成型的重试框架 依赖 <dependency><groupId>com.github.rholder</groupId><artifactId>guava-retrying</artifactId><version>${retrying.version}</version>…...
服务器 jupyter 文件名乱码问题
对于本台电脑,autodl服务器,上传中文文件时,从压缩包名到压缩包里的文件名先后会出现中文乱码的问题。 Xftp 首先是通过Xftp传输压缩包到Autodl服务器: 1、打开Xftp,进入软件主界面,点击右上角【文件】菜…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...




