【Linux】:使用git命令行 || 在github创建项目 || Linux第一个小程序——进度条(进阶版本)

在这里插入图片描述
在本章开始之前还是先给大家分享一张图片
在这里插入图片描述
这是C++的笔试题 感兴趣的同学可以去试一试 有难度的哟 也可以直接在牛客网直接搜索这几道题目哈
好了今天我们正式进入我们的正题部分

🕖1.使用git命令行

安装git

yum install git

在这里插入图片描述
在这里插入图片描述

🕠2.在github创建项目

使用 Github 创建项目
注册账号
创建项目
♨️1. 登陆成功后, 进入个人主页, 点击左下方的 New repository 按钮新建项目
在这里插入图片描述
2. 然后跳转到的新页面中输入项目名称(注意, 名称不能重复, 系统会自动校验. 校验过程可能会花费几秒钟). 校验
完毕后, 点击下方的 Create repository 按钮确认创建
在这里插入图片描述
3. 在创建好的项目页面中复制项目的链接, 以备接下来进行下载
在这里插入图片描述
下载项目到本地
创建好一个放置代码的目录

git clone [url]

这里的 url 就是刚刚建立好的 项目 的链接.
三板斧第一招: git add
将代码放到刚才下载好的目录中

git add [文件名]

将需要用 git 管理的文件告知 git
三板斧第二招: git commit
提交改动到本地

git commit .

最后的 “.” 表示当前目录
提交的时候应该注明提交日志, 描述改动的详细内容.
三板斧第三招: git push
同步到远端服务器上

git push

需要填入用户名密码. 同步成功后, 刷新 Github 页面就能看到代码改动了.
配置免密码提交
点击链接查看

🕤3.Linux第一个小程序——进度条

#include <stdio.h>
int main()
{
printf("hello Makefile!");
fflush(stdout);
sleep(3);
return 0;
}

进度条代码

#include <unistd.h>
#include <string.h>
int main()
{
int i = 0;
char bar[102];
memset(bar, 0 ,sizeof(bar));
const char *lable="|/-\\";
while(i <= 100 ){
printf("[%-100s][%d%%][%c]\r", bar, i, lable[i%4]);
fflush(stdout);
bar[i++] = '#';
usleep(10000);
}
printf("\n");
return 0;
}

在这里插入图片描述
当然这只是简单的版本 简单的版本我们昨天已经介绍过了 今天我们讲一下进阶版本的代码 大家仔细看 有一点复杂
下面是模拟下载进度的代码 这里需要注意几个细节 srand函数大家可以去Cplusplus官网去找一下 这是个时间戳的意思 只能生成依次 我在这里^1023的意思就只是为了让随机数更加随机一些 然后我们才能正常地使用我们的rand函数 后面的rate是浮点需要*100.0与之匹配

#include "processbar.h"
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
#define FILESIZE 1024*1024*1024
//模拟一种场景,表示一种下载的任务
void download(callback_t cb) // 回调函数的形式
{
    srand(time(NULL)^1023);
    int total = FILESIZE;
    while(total){
        usleep(10000); //下载动作
        int one = rand()%(1024*1024*10);
        total -= one;
        if(total < 0) total = 0;
        // 当前的进度是多少?
        int download = FILESIZE - total;
        double rate = (download*1.0/(FILESIZE))*100.0; // 0 23.4 35.6, 56.6
        cb(rate);
        //process_flush(rate);
        //printf("download: %f\n", rate); // rate出来了,应该让进度条刷新
    }
}
int main()
{
    //process();
    download(process_flush);
    return 0;
}

在这里插入图片描述

在这里插入图片描述
这个时候我们的进度条有了之后需要做什么呢或者说的我们还需要思考什么呢?
请问大家我们旋转的光标如何不受下载进度的控制呢?
来看下面代码

#include "processbar.h"
#include <string.h>
#include <unistd.h>

const char *lable="|/-\\";

//version 1
void process()
{
//    const int n = 101;
//    char buffer[n]; // 这块是编译不过的
    char buffer[NUM];
    memset(buffer, '\0', sizeof(buffer));
    int cnt = 0;
    int n = strlen(lable);
    buffer[0] = Head;
    while(cnt <= 100)
    {
        printf("[%-100s][%3d%%][%c]\r", buffer, cnt, lable[cnt%n]);
        fflush(stdout);
        buffer[cnt++] = Body;
        if(cnt < 100) buffer[cnt] = Head;
        usleep(50000);
    }

    printf("\n");
}

//version 2: 进度是多少,你进度条能知道吗?另外,什么进度?依附于其他应用的,比如下载
char buffer[NUM] = {0};
void process_flush(double rate)
{
    static int cnt = 0;
    int n = strlen(lable);
    if(rate <= 1.0) buffer[0] = Head;
    printf("[\033[4;32;44m%-100s\033[0m][%.1f%%][%c]\r", buffer, rate, lable[cnt%n]);
    fflush(stdout);

    buffer[(int)rate] = Body;
    if((int)rate+1 < 100) buffer[(int)(rate+1)] = Head;
    if(rate>=100.0) printf("\n");

    cnt++;
    cnt%=n;

进度条不受下载进度的影响 那么我们这时候就在代码的最后两行加上我的上述代码就可以完美解决
这就是不受进度条影响光标自动旋转的代码

#pragma once

#include <stdio.h>

#define NUM 103
#define Body '='
#define Head '>'

typedef void (*callback_t)(double);

//version 1
void process();
//version 2
void process_flush(double rate);

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【微服务】一体化智慧工地管理平台源码

智慧工地系统是一种利用人工智能和物联网技术来监测和管理建筑工地的系统。它可以通过感知设备、数据处理和分析、智能控制等技术手段&#xff0c;实现对工地施工、设备状态、人员安全等方面的实时监控和管理。 一、智慧工地让工程施工智能化 1、内容全面&#xff0c;多维度数…

在直播系统中使用SRT协议传输视频

目录 1、简述 2、NDI、RTSP协议的优缺点 3、SRT协议简介 4、SRT协议链接地址URL格式 &#xff08;1&#xff09;listener&#xff1a; &#xff08;2&#xff09;caller&#xff1a; 5、手机发送SRT实时音视频 6、OBS中的设置 7、在vMix中的设置 8、写在最后 1、简述 …

前端框架Vue学习 ——(六)Vue组件库Element

文章目录 Element 介绍快速入门常见组件表格分页Dialog 对话框组件表单 Container 布局容器 Element 介绍 Element&#xff1a;是饿了么团队研发的&#xff0c;一套为开发者、 设计师和产品经理准备的基于Vue 2.0的桌面端组件库。 组件&#xff1a;组成网页的部件&#xff0c;…

VR全景如何助力乡村振兴,乡村发展在哪些方面用到VR全景技术

引言&#xff1a; 乡村振兴是当今中国发展的重要战略&#xff0c;也是推动农村经济社会全面发展的关键举措。在这一过程中&#xff0c;虚拟现实&#xff08;VR&#xff09;全景技术正逐渐崭露头角&#xff0c;为乡村振兴提供了机遇。 一&#xff0e;VR全景技术的概念和应用 1…

Leetcode刷题详解——括号生成

1. 题目链接&#xff1a;22. 括号生成 2. 题目描述&#xff1a; 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["((()))","(()…

Linux DataEase数据可视化分析工具结合cpolar实现远程访问

文章目录 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 前言 DataEase 是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务…

MapReduce性能优化之小文件问题和数据倾斜问题解决方案

文章目录 MapReduce性能优化小文件问题生成SequenceFileMapFile案例 &#xff1a;使用SequenceFile实现小文件的存储和计算 数据倾斜问题实际案例 MapReduce性能优化 针对MapReduce的案例我们并没有讲太多&#xff0c;主要是因为在实际工作中真正需要我们去写MapReduce代码的场…

DeepLearning - 余弦退火热重启学习率 CosineAnnealingWarmRestartsLR

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/134249925 CosineAnnealingWarmRestartsLR&#xff0c;即 余弦退火热重启学习率&#xff0c;周期性修改学习率的下降和上升&#xff0c;间隔幅度逐…

苹果Mac电脑fcpx视频剪辑:Final Cut Pro中文最新 for mac

Final Cut Pro是苹果公司开发的一款专业视频剪辑软件&#xff0c;它为原生64位软件&#xff0c;基于Cocoa编写&#xff0c;支持多路多核心处理器&#xff0c;支持GPU加速&#xff0c;支持后台渲染。Final Cut Pro在Mac OS平台上运行&#xff0c;适用于进行后期制作。 Final Cu…

c语言实现http下载功能,显示进度条和下载速率

#include <stdio.h>//printf #include <string.h>//字符串处理 #include <sys/socket.h>//套接字 #include <arpa/inet.h>//ip地址处理 #include <fcntl.h>//open系统调用 #include <unistd.h>//write系统调用 #include <netdb.h>//…

java版小程序商城免费搭建-直播商城平台规划及常见的营销模式有哪些?电商源码/小程序/三级分销

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

【机器学习2】模型评估

模型评估主要分为离线评估和在线评估两个阶段。 针对分类、 排序、 回归、序列预测等不同类型的机器学习问题&#xff0c; 评估指标的选择也有所不同。 1 评估指标 1.1准确率 准确率是指分类正确的样本占总样本个数的比例 但是准确率存在明显的问题&#xff0c;比如当负样本…

深度学习(CNN+RNN)笔记2

文章目录 第五课&#xff1a;序列模型(Sequence Models)第一周&#xff1a;循环神经网络&#xff08;Recurrent Neural Networks&#xff09;【序列模型、语言模型序列生成、对新序列采样。RNN、GRU、LSTM、双向RNN、深度RNN】第二周&#xff1a;自然语言处理与词嵌入&#xff…

easyConnect虚拟网卡未安装,导致连接失败(虚拟网卡安装失败)

前言 使用easyConnect&#xff0c;但是一直连接失败&#xff0c;看到提示错误 虚拟网卡未安装&#xff0c;请确保虚拟网卡安装成功 我的错误原因是因为我自己装过VM虚拟机&#xff0c;用过虚拟网卡然后产生的虚拟网卡冲突 解决方式 1.打开网络设置2.选择你的网络&#xff08…

OpenAI首席科学家:ChatGPT已经出现意识,人类未来将与AI融合

OpenAI首席科学家在最近的专访中抛出了很多惊人言论。在他看来&#xff0c;ChatGPT背后的神经网络已经产生了意识&#xff0c;而且未来人类会与人工智能融合起来&#xff0c;出现新的形态。而他现在工作的重点&#xff0c;已经不是去创建那个必然会出现的通用人工智能&#xff…

从零开始搭建React+TypeScript+webpack开发环境-使用iconfont构建图标库

创建iconfont项目 进入iconfont官网&#xff0c;完成注册流程&#xff0c;即可创建项目。 无法访问iconfont可尝试将电脑dns改为阿里云镜像223.5.5.5和223.6.6.6 添加图标 在图标库里选择图标&#xff0c;加入购物车 将图标添加到之前创建的项目中 生成代码 将代码配置到项目…

Modbus转Profinet网关在暖通空调系统中应用案例

在过去&#xff0c;空调系统一般采用传统的控制方式&#xff0c;通常需要使用独立的控制模块和传感器来监测和控制温度、湿度等参数。这种传统的控制方式不仅复杂&#xff0c;而且容易出现故障和误差&#xff0c;给用户的使用和维护带来了一定的困扰。 然而&#xff0c;通过P…

Linux 实现原理 — NUMA 多核架构中的多线程调度开销与性能优化

前言 NOTE&#xff1a;本文中所指 “线程” 均为可执行调度单元 Kernel Thread。 NUMA 体系结构 NUMA&#xff08;Non-Uniform Memory Access&#xff0c;非一致性存储器访问&#xff09;的设计理念是将 CPU 和 Main Memory 进行分区自治&#xff08;Local NUMA node&#x…

立冬将至,别忘记吃饺子!Don‘t forget to eat dumplings

立冬通常是每年的11月7日或8日。每年这个时候&#xff0c;河水就开始结冰。“Winter Begins” arrives on November 7 or November 8 each year. At this time of the year, some rivers in China start to freeze. 立冬是冬季的第一个节气&#xff0c;进入这一时节&#xff0…

电机应用-直流有刷电机

目录 直流有刷电机 工作原理 直流有刷减速电机的重要参数 电路原理与分析 驱动芯片分析 L298N驱动芯片 直流有刷减速电机控制实现 控制速度原理 硬件设计 L298N 野火直流有刷电机驱动板-MOS管搭建板 软件设计1&#xff1a;两个直流有刷减速电机按键控制 开发设计 …