XPU-17通信生产实习-智能音箱项目-DAY2

HTTP协议简介

http

HTTP (Hypertext Transfer Protocol,超文本传输协议)是-种能够获取如HTML这样的网络资源的通讯协议。它是在Web.上进行数据交换的基础,是一-种客户端-服务器 (C/S) 协议,由像浏览器这样的客户端发出的消息叫做请求(requests) ,被服务端响应的消息叫做响应(responses)。 -个完整的Web文档通常是由不同的子文档拼接而成的,像是文本.布局描述、图片、视频、脚本等等。

统一资源标识符URI

统一资源标识符(网址)描述了一 台特定服务器上某资源的特定位置. RFC 3986

[[协议名://用户名]]:密码@服务器地址:服务器端口号/路径?查询字符串#片段ID

客户端请求消息

客户端发送一个HTTP请求到服务 器的请求消息包括以下格式:请求行(request line) .请求头部(header) .空行和请求数据四个部分组成。

服务器响应消息

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b6kcWYe0-1593707571350)(C:\Users\Savio\AppData\Roaming\Typora\typora-user-images\image-20200701180717723.png)]

请求方法

HTTP支持几种不同的请求命令,这些命令被称为HTTP方法(method) 。每条HTTP请求报文都包含一
个方法,这个方法会告诉服务器要执行什么操作。
方法 描述
GET 请求指定的页面信息,并返回实体主体。
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件) .数据被包含在请求体中。
POST 请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。

响应头信息

HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。

应答头 说明
Allow 服务器支持哪些请求方法(如GET. POST等) .
Content-Encoding 文档的编码(Encode) 方法。只有在解码之后才可以得到Content Type头指定的内容类型。

Content-Length 表示内容长度。
Content-Type 表示后面的文档属于什么MIME类型。
Date 当前的GMT时间。

状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
常见的HTTP状态码:
200-请求成功
301 -资源(网页等)被永久转移到其它URL
404-请求的资源(网页等)不存在
500 -内部服务器错误

分类
分类描述
1信息,服务器收到请求,需要请求者继续执行操作
2成功,操作被成功接收并处理
3重定向,需要进一步的操作以完成请求
4客户端错误,请求包含语法错误或无法完成请求
5服务器错误,服务器在处理请求的过程中发生了错误

内容类型

Content-Type,内容类型,一般是指网页中存在的Content-Type, 用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。
文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Type)
.* (二进制流,不知道下载文件类型) applicationloctet-stream .tif image/iff
.001 application/-001 .301 application/x-301
.323 text/h323 .906 application/x-906
.907 drawing/907 .a11 application/x-a11
.acp audio/x-mei-aac .ai application/postscript
.aif audilaiff .aifc audio/aiff

.aiff audilaiff .anv application/x-anv

RESTful API

表现层状态转换(Representational State Transfer,缩写: REST) 是Roy Thomas Fielding博士于2000年在他的博士论文中提出来的一种互联网软件架构风格。用开发网站的方式实现远程接口调用,网站即软件。REST通常基 于使用HTTP, URI, 和XML以及HTML这些现有的广泛流行的协议和标准。
特点:
●资源是由URI来指定。
●对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
●通过操作资源的表现形式来操作资源。
●资源的表现形式则是XML或者JSON,客户端软件可以是浏览器或者手机APP,甚至是其他服务。

REST API例子

一个简单的网络商店应用,列举所有商品:
GET http://www.store.com/products
呈现某-件商品:
GET http://www.store.com/products/12345
下单购买:
POST htt://www.store.com/orders


REST API的优点

可更高效利用缓存来提高响应速度
通讯本身的无状态性可以让不同的服务器的处理一 系列请求中的不同请求,展性
浏览器即可作为客户端,简化软件需求
相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
不需要额外的资源发现机制
在软件技术演进中的长期的兼容性更好

什么是JSON

JSON指的是JavaScript对象表示法(JavaScript object Notation)。
JSON是轻量级的文本数据交换格式。
JSON独立于语言: JSON使用Javascript语法来描述数据对象, 但是JSON仍然独立于语言器和JSON库支持许多不同的编程语言。
JSON具有自我描述性,更易理解。
https://ww.json.org/ison-zh.html

JSON语法

JSON语法是JavaScript对象表示语法的子集。
数据在名称/值对中
数据由逗号分隔
大括号保存对象
中括号保存数组
名称/值对包括字段名称(在双引号中),后面写一个冒号, 然后是值。
JSON值可以是:
数字(整数浮点数科学计数法)
字符串(在双引号中)
逻辑值(true 或false)
数组(在中括号中)
对象(在大括号中)
null

调用web服务器接口

安装C语言编译环境

sudo apt install build-essential man-db

编译

cc main.c -o hello

运行编译后的可执行文件

./hello

编译libcurl程序

cc main.c -o hello -lcurl
#include 
int main(void)
{
printf("Hello world\n");
return 0;
}

其他同学的教程

作业提交教程

以个人代码库smart_spearker为例

1.Fork班级的代码库到自己的主页;
2.执行git clone <副本代码库的地址>将副本代码库克隆到本地;
3.执行ls查看克隆到本地的工作目录;
4.执行cd smart_speaker将路径切换到smart_speaker目录下;
5.执行git init将Git仓库初始化;
6.执行mkdir 41703020202在工作目录下创建以自己学号命名的文件夹;
7.将完成的作业放进学号文件夹内;
8.执行git add 41703020202/将学号文件夹以及其中的文件上传到暂存区;
9.执行git status查看当前工作区状态;
10.执行git commit -m "提交日志"将文件提交到代码库;
11.执行git push将本地代码库中的文件提交到远程代码库;
12.登录远程代码库,用户名为个人空间地址;

编译libcurl程序

1.可执行sudo apt install build-essential man-db安装C语言编译环境;
2.可执行cc <文件名>编译代码;
3.可执行./a.out运行并输出代码结果;
4.可执行cat main.c查看代码的具体内容;
5.可执行cc <文件名> -o <输出文件名> -lcurl编译代码并指定输出文件的名字,链接curl库,不指定则默认为a.out;

疫情信息获取

1.可执行sudo apt install libcurl4-openssl-dev安装libcurl4-openssl-dev;
2.可执行sudo apt install curl安装crul;
3.可执行curl -X -GET "https://coronavirus-tracker-api.herokuapp.com/v2/latest"获取网址报文;
4.可执行git clone https://github.com/DaveGamble/cJSON.git克隆JSON库到目录cJSON;
5.可执行git checkout v1.7.13 .恢复1.7.13版本的库;
6.可执行cp cJSON.c cJSON.h …/smart_speaker将两文件复制到上一级目录的指定目录中;

20200701课程实现所需目录的安装

sudo apt install build-essential
sudo apt install man-db
sudo apt install curl
sudo apt install libcurl4-openssl-dev

##虚拟机操作界面
login as: yiyi
[email protected]'s password:
Linux debian 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Jun 30 13:53:27 2020 from 192.168.51.7

yiyi@debian:~$ sudo apt install build-essential man-db
[sudo] yiyi 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
man-db 已经是最新版 (2.8.5-2)。
将会同时安装下列软件:
  binutils binutils-common binutils-x86-64-linux-gnu cpp cpp-8 dirmngr
  dpkg-dev fakeroot g++ g++-8 gcc gcc-8 gnupg gnupg-l10n gnupg-utils gpg
  gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan5 libassuan0
  libatomic1 libbinutils libc-dev-bin libc6-dev libcc1-0 libdpkg-perl
  libfakeroot libfile-fcntllock-perl libgcc-8-dev libgomp1 libisl19 libitm1
  libksba8 liblsan0 libmpc3 libmpfr6 libmpx2 libnpth0 libquadmath0
  libstdc++-8-dev libtsan0 libubsan1 linux-libc-dev make manpages manpages-dev
  pinentry-curses
建议安装:
  binutils-doc cpp-doc gcc-8-locales dbus-user-session pinentry-gnome3 tor
  debian-keyring g++-multilib g++-8-multilib gcc-8-doc libstdc++6-8-dbg
  gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-8-multilib
  libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan5-dbg
  liblsan0-dbg libtsan0-dbg libubsan1-dbg libmpx2-dbg libquadmath0-dbg
  parcimonie xloadimage scdaemon glibc-doc bzr libstdc++-8-doc make-doc
  pinentry-doc
下列【新】软件包将被安装:
  binutils binutils-common binutils-x86-64-linux-gnu build-essential cpp cpp-8
  dirmngr dpkg-dev fakeroot g++ g++-8 gcc gcc-8 gnupg gnupg-l10n gnupg-utils
  gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm
  libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl
  libasan5 libassuan0 libatomic1 libbinutils libc-dev-bin libc6-dev libcc1-0
  libdpkg-perl libfakeroot libfile-fcntllock-perl libgcc-8-dev libgomp1
  libisl19 libitm1 libksba8 liblsan0 libmpc3 libmpfr6 libmpx2 libnpth0
  libquadmath0 libstdc++-8-dev libtsan0 libubsan1 linux-libc-dev make manpages
  manpages-dev pinentry-curses
升级了 0 个软件包,新安装了 54 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 57.7 MB 的归档。
解压缩后会消耗 202 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://security.debian.org/debian-security buster/updates/main amd64 linux-libc-dev amd64 4.19.118-2+deb10u1 [1,354 kB]
获取:2 http://mirrors.ustc.edu.cn/debian buster/main amd64 manpages all 4.16-2 [1,295 kB]
获取:3 http://mirrors.ustc.edu.cn/debian buster/main amd64 binutils-common amd64 2.31.1-16 [2,073 kB]
获取:4 http://mirrors.ustc.edu.cn/debian buster/main amd64 libbinutils amd64 2.31.1-16 [478 kB]
获取:5 http://mirrors.ustc.edu.cn/debian buster/main amd64 binutils-x86-64-linux-gnu amd64 2.31.1-16 [1,823 kB]
获取:6 http://mirrors.ustc.edu.cn/debian buster/main amd64 binutils amd64 2.31.1-16 [56.8 kB]
获取:7 http://mirrors.ustc.edu.cn/debian buster/main amd64 libc-dev-bin amd64 2.28-10 [275 kB]
获取:8 http://mirrors.ustc.edu.cn/debian buster/main amd64 libc6-dev amd64 2.28-10 [2,691 kB]
获取:9 http://mirrors.ustc.edu.cn/debian buster/main amd64 libisl19 amd64 0.20-2 [587 kB]
获取:10 http://mirrors.ustc.edu.cn/debian buster/main amd64 libmpfr6 amd64 4.0.2-1 [775 kB]
获取:11 http://mirrors.ustc.edu.cn/debian buster/main amd64 libmpc3 amd64 1.1.0-1 [41.3 kB]
获取:12 http://mirrors.ustc.edu.cn/debian buster/main amd64 cpp-8 amd64 8.3.0-6 [8,914 kB]
获取:13 http://mirrors.ustc.edu.cn/debian buster/main amd64 cpp amd64 4:8.3.0-1 [19.4 kB]
获取:14 http://mirrors.ustc.edu.cn/debian buster/main amd64 libcc1-0 amd64 8.3.0-6 [46.6 kB]
获取:15 http://mirrors.ustc.edu.cn/debian buster/main amd64 libgomp1 amd64 8.3.0-6 [75.8 kB]
获取:16 http://mirrors.ustc.edu.cn/debian buster/main amd64 libitm1 amd64 8.3.0-6 [27.7 kB]
获取:17 http://mirrors.ustc.edu.cn/debian buster/main amd64 libatomic1 amd64 8.3.0-6 [9,032 B]
获取:18 http://mirrors.ustc.edu.cn/debian buster/main amd64 libasan5 amd64 8.3.0-6 [362 kB]
获取:19 http://mirrors.ustc.edu.cn/debian buster/main amd64 liblsan0 amd64 8.3.0-6 [131 kB]
获取:20 http://mirrors.ustc.edu.cn/debian buster/main amd64 libtsan0 amd64 8.3.0-6 [283 kB]
获取:21 http://mirrors.ustc.edu.cn/debian buster/main amd64 libubsan1 amd64 8.3.0-6 [120 kB]
获取:22 http://mirrors.ustc.edu.cn/debian buster/main amd64 libmpx2 amd64 8.3.0-6 [11.4 kB]
获取:23 http://mirrors.ustc.edu.cn/debian buster/main amd64 libquadmath0 amd64 8.3.0-6 [133 kB]
获取:24 http://mirrors.ustc.edu.cn/debian buster/main amd64 libgcc-8-dev amd64 8.3.0-6 [2,298 kB]
获取:25 http://mirrors.ustc.edu.cn/debian buster/main amd64 gcc-8 amd64 8.3.0-6 [9,452 kB]
获取:26 http://mirrors.ustc.edu.cn/debian buster/main amd64 gcc amd64 4:8.3.0-1 [5,196 B]
获取:27 http://mirrors.ustc.edu.cn/debian buster/main amd64 libstdc++-8-dev amd64 8.3.0-6 [1,532 kB]
获取:28 http://mirrors.ustc.edu.cn/debian buster/main amd64 g++-8 amd64 8.3.0-6 [9,752 kB]
获取:29 http://mirrors.ustc.edu.cn/debian buster/main amd64 g++ amd64 4:8.3.0-1 [1,644 B]
获取:30 http://mirrors.ustc.edu.cn/debian buster/main amd64 make amd64 4.2.1-1.2 [341 kB]
获取:31 http://mirrors.ustc.edu.cn/debian buster/main amd64 libdpkg-perl all 1.19.7 [1,414 kB]
获取:32 http://mirrors.ustc.edu.cn/debian buster/main amd64 dpkg-dev all 1.19.7 [1,773 kB]
获取:33 http://mirrors.ustc.edu.cn/debian buster/main amd64 build-essential amd64 12.6 [7,576 B]
获取:34 http://mirrors.ustc.edu.cn/debian buster/main amd64 libassuan0 amd64 2.5.2-1 [49.4 kB]
获取:35 http://mirrors.ustc.edu.cn/debian buster/main amd64 gpgconf amd64 2.2.12-1+deb10u1 [510 kB]
获取:36 http://mirrors.ustc.edu.cn/debian buster/main amd64 libksba8 amd64 1.3.5-2 [99.7 kB]
获取:37 http://mirrors.ustc.edu.cn/debian buster/main amd64 libnpth0 amd64 1.6-1 [18.4 kB]
获取:38 http://mirrors.ustc.edu.cn/debian buster/main amd64 dirmngr amd64 2.2.12-1+deb10u1 [712 kB]
获取:39 http://mirrors.ustc.edu.cn/debian buster/main amd64 libfakeroot amd64 1.23-1 [45.9 kB]
获取:40 http://mirrors.ustc.edu.cn/debian buster/main amd64 fakeroot amd64 1.23-1 [85.8 kB]
获取:41 http://mirrors.ustc.edu.cn/debian buster/main amd64 gnupg-l10n all 2.2.12-1+deb10u1 [1,010 kB]
获取:42 http://mirrors.ustc.edu.cn/debian buster/main amd64 gnupg-utils amd64 2.2.12-1+deb10u1 [861 kB]
获取:43 http://mirrors.ustc.edu.cn/debian buster/main amd64 gpg amd64 2.2.12-1+deb10u1 [865 kB]
获取:44 http://mirrors.ustc.edu.cn/debian buster/main amd64 pinentry-curses amd64 1.1.0-2 [64.5 kB]
获取:45 http://mirrors.ustc.edu.cn/debian buster/main amd64 gpg-agent amd64 2.2.12-1+deb10u1 [617 kB]
获取:46 http://mirrors.ustc.edu.cn/debian buster/main amd64 gpg-wks-client amd64 2.2.12-1+deb10u1 [485 kB]
获取:47 http://mirrors.ustc.edu.cn/debian buster/main amd64 gpg-wks-server amd64 2.2.12-1+deb10u1 [478 kB]
获取:48 http://mirrors.ustc.edu.cn/debian buster/main amd64 gpgsm amd64 2.2.12-1+deb10u1 [604 kB]
获取:49 http://mirrors.ustc.edu.cn/debian buster/main amd64 gnupg all 2.2.12-1+deb10u1 [715 kB]
获取:50 http://mirrors.ustc.edu.cn/debian buster/main amd64 libalgorithm-diff-perl all 1.19.03-2 [47.9 kB]
获取:51 http://mirrors.ustc.edu.cn/debian buster/main amd64 libalgorithm-diff-xs-perl amd64 0.04-5+b1 [11.8 kB]
获取:52 http://mirrors.ustc.edu.cn/debian buster/main amd64 libalgorithm-merge-perl all 0.08-3 [12.7 kB]
获取:53 http://mirrors.ustc.edu.cn/debian buster/main amd64 libfile-fcntllock-perl amd64 0.22-3+b5 [35.4 kB]
获取:54 http://mirrors.ustc.edu.cn/debian buster/main amd64 manpages-dev all 4.16-2 [2,232 kB]
已下载 57.7 MB,耗时 2分 37秒 (368 kB/s)
正在从软件包中解出模板:100%
正在选中未选择的软件包 manpages。
(正在读取数据库 ... 系统当前共安装有 28313 个文件和目录。)
准备解压 .../00-manpages_4.16-2_all.deb  ...
正在解压 manpages (4.16-2) ...
正在选中未选择的软件包 binutils-common:amd64。
准备解压 .../01-binutils-common_2.31.1-16_amd64.deb  ...
正在解压 binutils-common:amd64 (2.31.1-16) ...
正在选中未选择的软件包 libbinutils:amd64。
准备解压 .../02-libbinutils_2.31.1-16_amd64.deb  ...
正在解压 libbinutils:amd64 (2.31.1-16) ...
正在选中未选择的软件包 binutils-x86-64-linux-gnu。
准备解压 .../03-binutils-x86-64-linux-gnu_2.31.1-16_amd64.deb  ...
正在解压 binutils-x86-64-linux-gnu (2.31.1-16) ...
正在选中未选择的软件包 binutils。
准备解压 .../04-binutils_2.31.1-16_amd64.deb  ...
正在解压 binutils (2.31.1-16) ...
正在选中未选择的软件包 libc-dev-bin。
准备解压 .../05-libc-dev-bin_2.28-10_amd64.deb  ...
正在解压 libc-dev-bin (2.28-10) ...
正在选中未选择的软件包 linux-libc-dev:amd64。
准备解压 .../06-linux-libc-dev_4.19.118-2+deb10u1_amd64.deb  ...
正在解压 linux-libc-dev:amd64 (4.19.118-2+deb10u1) ...
正在选中未选择的软件包 libc6-dev:amd64。
准备解压 .../07-libc6-dev_2.28-10_amd64.deb  ...
正在解压 libc6-dev:amd64 (2.28-10) ...
正在选中未选择的软件包 libisl19:amd64。
准备解压 .../08-libisl19_0.20-2_amd64.deb  ...
正在解压 libisl19:amd64 (0.20-2) ...
正在选中未选择的软件包 libmpfr6:amd64。
准备解压 .../09-libmpfr6_4.0.2-1_amd64.deb  ...
正在解压 libmpfr6:amd64 (4.0.2-1) ...
正在选中未选择的软件包 libmpc3:amd64。
准备解压 .../10-libmpc3_1.1.0-1_amd64.deb  ...
正在解压 libmpc3:amd64 (1.1.0-1) ...
正在选中未选择的软件包 cpp-8。
准备解压 .../11-cpp-8_8.3.0-6_amd64.deb  ...
正在解压 cpp-8 (8.3.0-6) ...
正在选中未选择的软件包 cpp。
准备解压 .../12-cpp_4%3a8.3.0-1_amd64.deb  ...
正在解压 cpp (4:8.3.0-1) ...
正在选中未选择的软件包 libcc1-0:amd64。
准备解压 .../13-libcc1-0_8.3.0-6_amd64.deb  ...
正在解压 libcc1-0:amd64 (8.3.0-6) ...
正在选中未选择的软件包 libgomp1:amd64。
准备解压 .../14-libgomp1_8.3.0-6_amd64.deb  ...
正在解压 libgomp1:amd64 (8.3.0-6) ...
正在选中未选择的软件包 libitm1:amd64。
准备解压 .../15-libitm1_8.3.0-6_amd64.deb  ...
正在解压 libitm1:amd64 (8.3.0-6) ...
正在选中未选择的软件包 libatomic1:amd64。
准备解压 .../16-libatomic1_8.3.0-6_amd64.deb  ...
正在解压 libatomic1:amd64 (8.3.0-6) ...
正在选中未选择的软件包 libasan5:amd64。
准备解压 .../17-libasan5_8.3.0-6_amd64.deb  ...
正在解压 libasan5:amd64 (8.3.0-6) ...
正在选中未选择的软件包 liblsan0:amd64。
准备解压 .../18-liblsan0_8.3.0-6_amd64.deb  ...
正在解压 liblsan0:amd64 (8.3.0-6) ...
正在选中未选择的软件包 libtsan0:amd64。
准备解压 .../19-libtsan0_8.3.0-6_amd64.deb  ...
正在解压 libtsan0:amd64 (8.3.0-6) ...
正在选中未选择的软件包 libubsan1:amd64。
准备解压 .../20-libubsan1_8.3.0-6_amd64.deb  ...
正在解压 libubsan1:amd64 (8.3.0-6) ...
正在选中未选择的软件包 libmpx2:amd64。
准备解压 .../21-libmpx2_8.3.0-6_amd64.deb  ...
正在解压 libmpx2:amd64 (8.3.0-6) ...
正在选中未选择的软件包 libquadmath0:amd64。
准备解压 .../22-libquadmath0_8.3.0-6_amd64.deb  ...
正在解压 libquadmath0:amd64 (8.3.0-6) ...
正在选中未选择的软件包 libgcc-8-dev:amd64。
准备解压 .../23-libgcc-8-dev_8.3.0-6_amd64.deb  ...
正在解压 libgcc-8-dev:amd64 (8.3.0-6) ...
正在选中未选择的软件包 gcc-8。
准备解压 .../24-gcc-8_8.3.0-6_amd64.deb  ...
正在解压 gcc-8 (8.3.0-6) ...
正在选中未选择的软件包 gcc。
准备解压 .../25-gcc_4%3a8.3.0-1_amd64.deb  ...
正在解压 gcc (4:8.3.0-1) ...
正在选中未选择的软件包 libstdc++-8-dev:amd64。
准备解压 .../26-libstdc++-8-dev_8.3.0-6_amd64.deb  ...
正在解压 libstdc++-8-dev:amd64 (8.3.0-6) ...
正在选中未选择的软件包 g++-8。
准备解压 .../27-g++-8_8.3.0-6_amd64.deb  ...
正在解压 g++-8 (8.3.0-6) ...
正在选中未选择的软件包 g++。
准备解压 .../28-g++_4%3a8.3.0-1_amd64.deb  ...
正在解压 g++ (4:8.3.0-1) ...
正在选中未选择的软件包 make。
准备解压 .../29-make_4.2.1-1.2_amd64.deb  ...
正在解压 make (4.2.1-1.2) ...
正在选中未选择的软件包 libdpkg-perl。
准备解压 .../30-libdpkg-perl_1.19.7_all.deb  ...
正在解压 libdpkg-perl (1.19.7) ...
正在选中未选择的软件包 dpkg-dev。
准备解压 .../31-dpkg-dev_1.19.7_all.deb  ...
正在解压 dpkg-dev (1.19.7) ...
正在选中未选择的软件包 build-essential。
准备解压 .../32-build-essential_12.6_amd64.deb  ...
正在解压 build-essential (12.6) ...
正在选中未选择的软件包 libassuan0:amd64。
准备解压 .../33-libassuan0_2.5.2-1_amd64.deb  ...
正在解压 libassuan0:amd64 (2.5.2-1) ...
正在选中未选择的软件包 gpgconf。
准备解压 .../34-gpgconf_2.2.12-1+deb10u1_amd64.deb  ...
正在解压 gpgconf (2.2.12-1+deb10u1) ...
正在选中未选择的软件包 libksba8:amd64。
准备解压 .../35-libksba8_1.3.5-2_amd64.deb  ...
正在解压 libksba8:amd64 (1.3.5-2) ...
正在选中未选择的软件包 libnpth0:amd64。
准备解压 .../36-libnpth0_1.6-1_amd64.deb  ...
正在解压 libnpth0:amd64 (1.6-1) ...
正在选中未选择的软件包 dirmngr。
准备解压 .../37-dirmngr_2.2.12-1+deb10u1_amd64.deb  ...
正在解压 dirmngr (2.2.12-1+deb10u1) ...
正在选中未选择的软件包 libfakeroot:amd64。
准备解压 .../38-libfakeroot_1.23-1_amd64.deb  ...
正在解压 libfakeroot:amd64 (1.23-1) ...
正在选中未选择的软件包 fakeroot。
准备解压 .../39-fakeroot_1.23-1_amd64.deb  ...
正在解压 fakeroot (1.23-1) ...
正在选中未选择的软件包 gnupg-l10n。
准备解压 .../40-gnupg-l10n_2.2.12-1+deb10u1_all.deb  ...
正在解压 gnupg-l10n (2.2.12-1+deb10u1) ...
正在选中未选择的软件包 gnupg-utils。
准备解压 .../41-gnupg-utils_2.2.12-1+deb10u1_amd64.deb  ...
正在解压 gnupg-utils (2.2.12-1+deb10u1) ...
正在选中未选择的软件包 gpg。
准备解压 .../42-gpg_2.2.12-1+deb10u1_amd64.deb  ...
正在解压 gpg (2.2.12-1+deb10u1) ...
正在选中未选择的软件包 pinentry-curses。
准备解压 .../43-pinentry-curses_1.1.0-2_amd64.deb  ...
正在解压 pinentry-curses (1.1.0-2) ...
正在选中未选择的软件包 gpg-agent。
准备解压 .../44-gpg-agent_2.2.12-1+deb10u1_amd64.deb  ...
正在解压 gpg-agent (2.2.12-1+deb10u1) ...
正在选中未选择的软件包 gpg-wks-client。
准备解压 .../45-gpg-wks-client_2.2.12-1+deb10u1_amd64.deb  ...
正在解压 gpg-wks-client (2.2.12-1+deb10u1) ...
正在选中未选择的软件包 gpg-wks-server。
准备解压 .../46-gpg-wks-server_2.2.12-1+deb10u1_amd64.deb  ...
正在解压 gpg-wks-server (2.2.12-1+deb10u1) ...
正在选中未选择的软件包 gpgsm。
准备解压 .../47-gpgsm_2.2.12-1+deb10u1_amd64.deb  ...
正在解压 gpgsm (2.2.12-1+deb10u1) ...
正在选中未选择的软件包 gnupg。
准备解压 .../48-gnupg_2.2.12-1+deb10u1_all.deb  ...
正在解压 gnupg (2.2.12-1+deb10u1) ...
正在选中未选择的软件包 libalgorithm-diff-perl。
准备解压 .../49-libalgorithm-diff-perl_1.19.03-2_all.deb  ...
正在解压 libalgorithm-diff-perl (1.19.03-2) ...
正在选中未选择的软件包 libalgorithm-diff-xs-perl。
准备解压 .../50-libalgorithm-diff-xs-perl_0.04-5+b1_amd64.deb  ...
正在解压 libalgorithm-diff-xs-perl (0.04-5+b1) ...
正在选中未选择的软件包 libalgorithm-merge-perl。
准备解压 .../51-libalgorithm-merge-perl_0.08-3_all.deb  ...
正在解压 libalgorithm-merge-perl (0.08-3) ...
正在选中未选择的软件包 libfile-fcntllock-perl。
准备解压 .../52-libfile-fcntllock-perl_0.22-3+b5_amd64.deb  ...
正在解压 libfile-fcntllock-perl (0.22-3+b5) ...
正在选中未选择的软件包 manpages-dev。
准备解压 .../53-manpages-dev_4.16-2_all.deb  ...
正在解压 manpages-dev (4.16-2) ...
正在设置 libksba8:amd64 (1.3.5-2) ...
正在设置 libfile-fcntllock-perl (0.22-3+b5) ...
正在设置 libalgorithm-diff-perl (1.19.03-2) ...
正在设置 manpages (4.16-2) ...
正在设置 binutils-common:amd64 (2.31.1-16) ...
正在设置 linux-libc-dev:amd64 (4.19.118-2+deb10u1) ...
正在设置 libnpth0:amd64 (1.6-1) ...
正在设置 libassuan0:amd64 (2.5.2-1) ...
正在设置 libgomp1:amd64 (8.3.0-6) ...
正在设置 libfakeroot:amd64 (1.23-1) ...
正在设置 fakeroot (1.23-1) ...
update-alternatives: 使用 /usr/bin/fakeroot-sysv 来在自动模式中提供 /usr/bin/fakeroot (fakeroot)
正在设置 libasan5:amd64 (8.3.0-6) ...
正在设置 make (4.2.1-1.2) ...
正在设置 libmpfr6:amd64 (4.0.2-1) ...
正在设置 gnupg-l10n (2.2.12-1+deb10u1) ...
正在设置 libquadmath0:amd64 (8.3.0-6) ...
正在设置 libmpc3:amd64 (1.1.0-1) ...
正在设置 libatomic1:amd64 (8.3.0-6) ...
正在设置 libdpkg-perl (1.19.7) ...
正在设置 libmpx2:amd64 (8.3.0-6) ...
正在设置 libubsan1:amd64 (8.3.0-6) ...
正在设置 libisl19:amd64 (0.20-2) ...
正在设置 gpgconf (2.2.12-1+deb10u1) ...
正在设置 libbinutils:amd64 (2.31.1-16) ...
正在设置 cpp-8 (8.3.0-6) ...
正在设置 libc-dev-bin (2.28-10) ...
正在设置 libalgorithm-diff-xs-perl (0.04-5+b1) ...
正在设置 libcc1-0:amd64 (8.3.0-6) ...
正在设置 gpg (2.2.12-1+deb10u1) ...
正在设置 liblsan0:amd64 (8.3.0-6) ...
正在设置 libitm1:amd64 (8.3.0-6) ...
正在设置 libalgorithm-merge-perl (0.08-3) ...
正在设置 gnupg-utils (2.2.12-1+deb10u1) ...
正在设置 binutils-x86-64-linux-gnu (2.31.1-16) ...
正在设置 libtsan0:amd64 (8.3.0-6) ...
正在设置 pinentry-curses (1.1.0-2) ...
正在设置 manpages-dev (4.16-2) ...
正在设置 gpg-agent (2.2.12-1+deb10u1) ...
正在设置 gpgsm (2.2.12-1+deb10u1) ...
正在设置 binutils (2.31.1-16) ...
正在设置 dpkg-dev (1.19.7) ...
正在设置 dirmngr (2.2.12-1+deb10u1) ...
正在设置 libgcc-8-dev:amd64 (8.3.0-6) ...
正在设置 gpg-wks-server (2.2.12-1+deb10u1) ...
正在设置 cpp (4:8.3.0-1) ...
正在设置 libc6-dev:amd64 (2.28-10) ...
正在设置 libstdc++-8-dev:amd64 (8.3.0-6) ...
正在设置 gcc-8 (8.3.0-6) ...
正在设置 gpg-wks-client (2.2.12-1+deb10u1) ...
正在设置 gcc (4:8.3.0-1) ...
正在设置 g++-8 (8.3.0-6) ...
正在设置 gnupg (2.2.12-1+deb10u1) ...
正在设置 g++ (4:8.3.0-1) ...
update-alternatives: 使用 /usr/bin/g++ 来在自动模式中提供 /usr/bin/c++ (c++)
正在设置 build-essential (12.6) ...
正在处理用于 man-db (2.8.5-2) 的触发器 ...
正在处理用于 libc-bin (2.28-10) 的触发器 ...
yiyi@debian:~$ ls
smart_speaker  XPU-SmartSpeaker-Lab2020.6  XPU_Smart_Speaker_Lab2020.6
yiyi@debian:~$ cd XPU-SmartSpeaker-Lab2020.6/

yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$ cat main.c
#include 
#include  //libcurl的头文件

int main(void)
{
    //以只写方式打开文件
    FILE* fp = fopen("hello.txt", "w");
    if (fp == NULL) //打开文件失败,打印错误信息并退出
    {
        perror("fopen() failed");
        return 1;
    }

    //将字符串写入文件
    fprintf(fp, "Hello world\n");

    //关闭文件
    fclose(fp);

    //初始化libcurl
    CURL* curl = curl_easy_init();
    if (curl == NULL)
    {
        perror("curl_easy_init() failed");
        return 1;
    }

    //准备HTTP请求消息,设置API地址(URI)
    curl_easy_setopt(curl, CURLOPT_URL, "https://coronavirus-tracker-api.herokuapp.com/v2/latest");

    //发送HTTP请求消息
    CURLcode error = curl_easy_perform(curl);
    if (error != CURLE_OK)
    {
        fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(error));
        curl_easy_cleanup(curl);
        return 1;
    }

    //释放libcurl申请的资源
    curl_easy_cleanup(curl);

    return 0;
}

yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$ sudo apt install curl
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会同时安装下列软件:
  libcurl4
下列【新】软件包将被安装:
  curl libcurl4
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 596 kB 的归档。
解压缩后会消耗 1,123 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.ustc.edu.cn/debian buster/main amd64 libcurl4 amd64 7.64.0-4+deb10u1 [331 kB]
获取:2 http://mirrors.ustc.edu.cn/debian buster/main amd64 curl amd64 7.64.0-4+deb10u1 [264 kB]
已下载 596 kB,耗时 1秒 (746 kB/s)
正在选中未选择的软件包 libcurl4:amd64。
(正在读取数据库 ... 系统当前共安装有 34445 个文件和目录。)
准备解压 .../libcurl4_7.64.0-4+deb10u1_amd64.deb  ...
正在解压 libcurl4:amd64 (7.64.0-4+deb10u1) ...
正在选中未选择的软件包 curl。
准备解压 .../curl_7.64.0-4+deb10u1_amd64.deb  ...
正在解压 curl (7.64.0-4+deb10u1) ...
正在设置 libcurl4:amd64 (7.64.0-4+deb10u1) ...
正在设置 curl (7.64.0-4+deb10u1) ...
正在处理用于 man-db (2.8.5-2) 的触发器 ...
正在处理用于 libc-bin (2.28-10) 的触发器 ...
yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$ curl -X GET "http://coronavirus-tracker-api.herokuapp.com/v2/latest"
{"latest":{"confirmed":10302151,"deaths":505505,"recovered":0}}yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$

yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$ sudo apt install libcurl4-openssl-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
建议安装:
  libcurl4-doc libidn11-dev libkrb5-dev libldap2-dev librtmp-dev libssh2-1-dev
  libssl-dev pkg-config zlib1g-dev
下列【新】软件包将被安装:
  libcurl4-openssl-dev
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 419 kB 的归档。
解压缩后会消耗 1,521 kB 的额外空间。
获取:1 http://mirrors.ustc.edu.cn/debian buster/main amd64 libcurl4-openssl-dev amd64 7.64.0-4+deb10u1 [419 kB]
已下载 419 kB,耗时 1秒 (306 kB/s)
正在选中未选择的软件包 libcurl4-openssl-dev:amd64。
(正在读取数据库 ... 系统当前共安装有 34460 个文件和目录。)
准备解压 .../libcurl4-openssl-dev_7.64.0-4+deb10u1_amd64.deb  ...
正在解压 libcurl4-openssl-dev:amd64 (7.64.0-4+deb10u1) ...
正在设置 libcurl4-openssl-dev:amd64 (7.64.0-4+deb10u1) ...
正在处理用于 man-db (2.8.5-2) 的触发器 ...
yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$

yiyi@debian:~$ ls
smart_speaker  XPU-SmartSpeaker-Lab2020.6  XPU_Smart_Speaker_Lab2020.6
yiyi@debian:~$ cd XPU-SmartSpeaker-Lab2020.6/
yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$ ls
hello.c  LICENSE  main.c  notes

yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$ curl -X -GET "https://coronavirus-tracker-api.herokuapp.com/v2/latest"

<!DOCTYPE html>
        <html>
          <head>
                <meta name="viewport" content="width=device-width, initial-scale=1">
                <meta charset="utf-8">
                <title>Application Error</title>
                <style media="screen">
                  html,body,iframe {
                        margin: 0;
                        padding: 0;
                  }
                  html,body {
                        height: 100%;
                        overflow: hidden;
                  }
                  iframe {
                        width: 100%;
                        height: 100%;
                        border: 0;
                  }
                </style>
          </head>
          <body>
                <iframe src="//www.herokucdn.com/error-pages/application-error.html"></iframe>
          </body>
        </html>yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$
        
yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$ cd


20200701课程实现情况

###***\*作业提交\****
yiyi@debian:~$ mkdir 41703030304
yiyi@debian:~$ ls
41703030304    XPU-SmartSpeaker-Lab2020.6
smart_speaker  XPU_Smart_Speaker_Lab2020.6
yiyi@debian:~$ cd 41703030304/
yiyi@debian:~/41703030304$ git init
已初始化空的 Git 仓库于 /home/yiyi/41703030304/.git/

yiyi@debian:~/41703030304$ ls
yiyi@debian:~/41703030304$ cd
yiyi@debian:~$ ls
41703030304    XPU-SmartSpeaker-Lab2020.6
smart_speaker  XPU_Smart_Speaker_Lab2020.6
yiyi@debian:~$ cd XPU-SmartSpeaker-Lab2020.6/
yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$ ls
笔记.md  cJSON.c  cJSON.h  hello.c  LICENSE  main.c  notes
##下载cJSON
yiyi@debian:~$ git clone https://github.com/DaveGamble/cJSON.git
正克隆到 'cJSON'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 4422 (delta 2), reused 3 (delta 0), pack-reused 4413
接收对象中: 100% (4422/4422), 2.41 MiB | 9.00 KiB/s, 完成.
处理 delta 中: 100% (2944/2944), 完成.
yiyi@debian:~$ ls
41703030304  smart_speaker               XPU_Smart_Speaker_Lab2020.6
cJSON        XPU-SmartSpeaker-Lab2020.6
yiyi@debian:~$ cd cJSON/
#修改到cJSONv1.7.13
yiyi@debian:~/cJSON$ git tag
v0.0.0
v1.0.0
v1.0.1
v1.0.2
v1.1.0
v1.2.0
v1.2.1
v1.3.0
v1.3.1
v1.3.2
v1.4.0
v1.4.1
v1.4.2
v1.4.3
v1.4.4
v1.4.5
v1.4.6
v1.4.7
v1.5.0
v1.5.1
v1.5.2
v1.5.3
v1.5.4
v1.5.5
v1.5.6
v1.5.7
v1.5.8
v1.5.9
v1.6.0
v1.7.0
v1.7.1
v1.7.10
v1.7.11
v1.7.12
v1.7.13
v1.7.2
v1.7.3
v1.7.4
v1.7.5
v1.7.6
v1.7.7
v1.7.8
v1.7.9
yiyi@debian:~/cJSON$ git checkout v1.7.13 .
yiyi@debian:~/cJSON$ cp cJSON.c cJSON.h ../41703030304/
yiyi@debian:~/cJSON$ cd ../41703030304/
yiyi@debian:~/41703030304$ cd

yiyi@debian:~$ curl -X -GET "https://coronavirus-tracker-api.herokuapp.com/v2/latest"
<!DOCTYPE html>
        <html>
          <head>
                <meta name="viewport" content="width=device-width, initial-scale=1">
                <meta charset="utf-8">
                <title>Application Error</title>
                <style media="screen">
                  html,body,iframe {
                        margin: 0;
                        padding: 0;
                  }
                  html,body {
                        height: 100%;
                        overflow: hidden;
                  }
                  iframe {
                        width: 100%;
                        height: 100%;
                        border: 0;
                  }
                </style>
          </head>
          <body>
                <iframe src="//www.herokucdn.com/error-pages/application-error.html"></iframe>
          </body>
        </html>yiyi@debian:~$
yiyi@debian:~$

yiyi@debian:~$ git clone https://gitee.com/liuyixiao_xpu/XPU-SmartSpeaker-Lab2020.6.git
fatal: 目标路径 'XPU-SmartSpeaker-Lab2020.6' 已经存在,并且不是一个空目录。

#删除一个文件夹及其子目录的所有文件
yiyi@debian:~$ rm -rf XPU-SmartSpeaker-Lab2020.6/
#克隆个人码云克隆华清远见的库
yiyi@debian:~$ git clone https://gitee.com/liuyixiao_xpu/XPU-SmartSpeaker-Lab2020.6.git
正克隆到 'XPU-SmartSpeaker-Lab2020.6'...
remote: Enumerating objects: 50, done.
remote: Counting objects: 100% (50/50), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 50 (delta 8), reused 0 (delta 0), pack-reused 0
展开对象中: 100% (50/50), 完成.

yiyi@debian:~$
yiyi@debian:~$ ls
41703030304  smart_speaker               XPU_Smart_Speaker_Lab2020.6
cJSON        XPU-SmartSpeaker-Lab2020.6
yiyi@debian:~$ cd XPU-SmartSpeaker-Lab2020.6/
yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$ ls
cJSON.c  cJSON.h  LICENSE  main.c  notes
#把/XPU-SmartSpeaker-Lab2020.6$ cp main.c复制到../41703030304/
yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$ cp main.c  ../41703030304/
yiyi@debian:~/XPU-SmartSpeaker-Lab2020.6$ cd

yiyi@debian:~$ cd 41703030304/
yiyi@debian:~/41703030304$ ls
cJSON.c  cJSON.h  main.c
yiyi@debian:~/41703030304$

yiyi@debian:~$
##编译
yiyi@debian:~/41703030304$ cc main.c cJSON.c -o main -lcurl
yiyi@debian:~/41703030304$ ls
cJSON.c  cJSON.h  main  main.c
yiyi@debian:~/41703030304$
##运行编译文件
yiyi@debian:~/41703030304$ ./main
确诊人数: 10475826
死亡人数: 511253
yiyi@debian:~/41703030304$

##查看main.c
yiyi@debian:~/41703030304$ cat main.c
#include 
#include  //malloc使用的头文件
#include  //libcurl的头文件
#include "cJSON.h" //cJSON的头文件

int main(void)
{
    //以只写方式打开文件
    FILE* fp = fopen("hello.txt", "w");
    if (fp == NULL) //打开文件失败,打印错误信息并退出
    {
        perror("fopen() failed");
        return 1;
    }

    //初始化libcurl
    CURL* curl = curl_easy_init();
    if (curl == NULL)
    {
        perror("curl_easy_init() failed");
        return 1;
    }

    //准备HTTP请求消息,设置API地址(URI)
    curl_easy_setopt(curl, CURLOPT_URL, "https://coronavirus-tracker-api.herokuapp.com/v2/latest");
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);

    //发送HTTP请求消息
    CURLcode error = curl_easy_perform(curl);
    if (error != CURLE_OK)
    {
        fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(error));
        curl_easy_cleanup(curl);
        return 1;
    }

    //释放libcurl申请的资源
    curl_easy_cleanup(curl);

    //关闭文件
    fclose(fp);

    //以只读方式打开文件
    fp = fopen("hello.txt", "r");
    if (fp == NULL) //打开文件失败,打印错误信息并退出
    {
        perror("fopen() failed");
        return 1;
    }

    //将文件指针定位到文件末尾
    fseek(fp, 0, SEEK_END);
    //获取文件指针的当前位置,即文件的大小
    long size = ftell(fp);
    //将文件指针重新定位到文件头
    fseek(fp, 0, SEEK_SET);

    //分配文件大小相同的内存空间
    char* jsonstr = malloc(size);

    //将文件中的内容读取到内存中
    fread(jsonstr, 1, size, fp);

    fclose(fp);

    //解析JSON字符串
    cJSON* json = cJSON_Parse(jsonstr);

    cJSON* latest = cJSON_GetObjectItemCaseSensitive(json, "latest");

    cJSON* comfirmed = cJSON_GetObjectItemCaseSensitive(latest, "confirmed");

    cJSON* deaths = cJSON_GetObjectItemCaseSensitive(latest, "deaths");

    printf("确诊人数: %d\n", comfirmed->valueint);
    printf("死亡人数: %d\n", deaths->valueint);

    //释放json数据结构占用的内存
    cJSON_free(json);

    return 0;
}

上传到码云

##不知道什么原因不能直接上传新目录到码云
yiyi@debian:~/41703030304$ git push https://gitee.com/liuyixiao_xpu/lyx41703030304.git
fatal: 当前分支 master 没有对应的上游分支。
为推送当前分支并建立与远程上游的跟踪,使用

    git push --set-upstream https://gitee.com/liuyixiao_xpu/lyx41703030304.git master

yiyi@debian:~/41703030304$ git push --set-upstream https://gitee.com/liuyixiao_xpu/lyx41703030304.git master
Username for 'https://gitee.com': liuyixiao_xpu
Password for 'https://[email protected]':
To https://gitee.com/liuyixiao_xpu/lyx41703030304.git
 ! [rejected]        master -> master (fetch first)
error: 推送一些引用到 'https://gitee.com/liuyixiao_xpu/lyx41703030304.git' 失败
提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
提示:(如 'git pull ...')。
提示:详见 'git push --help' 中的 'Note about fast-forwards' 小节。


###在码云上新建一个lyx41703030304的git并克隆到本地
yiyi@debian:~/41703030304$ cd
yiyi@debian:~$ git clone https://gitee.com/liuyixiao_xpu/lyx41703030304.git
正克隆到 'lyx41703030304'...
Username for 'https://gitee.com': 18191030078
Password for 'https://[email protected]':
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
展开对象中: 100% (4/4), 完成.
yiyi@debian:~$ ls
41703030304  lyx41703030304  XPU-SmartSpeaker-Lab2020.6
cJSON        smart_speaker   XPU_Smart_Speaker_Lab2020.6

###将41703030304目录及其子目录下的文件拷贝到lyx41703030304中
yiyi@debian:~$ cp -r 41703030304 lyx41703030304
yiyi@debian:~$ cd lyx41703030304/
yiyi@debian:~/lyx41703030304$ ls
41703030304  README.en.md  README.md

###查看工作区状态
yiyi@debian:~/lyx41703030304$ git status
位于分支 master
您的分支与上游分支 'origin/master' 一致。

未跟踪的文件:
  (使用 "git add <文件>..." 以包含要提交的内容)

        41703030304/

提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

###将文件修改保存到暂存区
yiyi@debian:~/lyx41703030304$ git add 41703030304/

###查看工作区状态
yiyi@debian:~/lyx41703030304$ git status
位于分支 master
您的分支与上游分支 'origin/master' 一致。

要提交的变更:
  (使用 "git reset HEAD <文件>..." 以取消暂存)

        新文件:   41703030304/cJSON.c
        新文件:   41703030304/cJSON.h
        新文件:   41703030304/hello.txt
        新文件:   41703030304/main
        新文件:   41703030304/main.c

###将暂存区的修改提交到代码库
yiyi@debian:~/lyx41703030304$ git commit -m "20200701实习代码"
[master afc77ed] 20200701实习代码
 5 files changed, 3450 insertions(+)
 create mode 100644 41703030304/cJSON.c
 create mode 100644 41703030304/cJSON.h
 create mode 100644 41703030304/hello.txt
 create mode 100755 41703030304/main
 create mode 100644 41703030304/main.c
 
###查看工作区状态
yiyi@debian:~/lyx41703030304$ git status
位于分支 master
您的分支领先 'origin/master' 共 1 个提交。
  (使用 "git push" 来发布您的本地提交)

无文件要提交,干净的工作区

### 查看提交历史记录
yiyi@debian:~/lyx41703030304$ git log
commit afc77ed79e679aaac90b88124bf1b76d6e5f88a8 (HEAD -> master)
Author: 刘懿宵 <[email protected]>
Date:   Wed Jul 1 23:25:30 2020 +0800

    20200701实习代码

commit b222ef156181a0ee602520b2bf5ddbd09d4b24b9 (origin/master, origin/HEAD)
Author: 刘懿宵 <[email protected]>
Date:   Wed Jul 1 23:15:02 2020 +0800

    Initial commit
    
###同步本地代码库到远程
yiyi@debian:~/lyx41703030304$ git push
Username for 'https://gitee.com': liuyixiao_xpu
Password for 'https://[email protected]':
枚举对象: 9, 完成.
对象计数中: 100% (9/9), 完成.
压缩对象中: 100% (8/8), 完成.
写入对象中: 100% (8/8), 35.32 KiB | 5.04 MiB/s, 完成.
总共 8 (差异 0),复用 0 (差异 0)
remote: Powered by GITEE.COM [GNK-5.0]
To https://gitee.com/liuyixiao_xpu/lyx41703030304.git
   b222ef1..afc77ed  master -> master
yiyi@debian:~/lyx41703030304$

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pWNRG70n-1593707571354)(C:\Users\Savio\AppData\Roaming\Typora\typora-user-images\image-20200701232920866.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-khtEYdrW-1593707571357)(C:\Users\Savio\AppData\Roaming\Typora\typora-user-images\image-20200701232927090.png)]

你可能感兴趣的:(linux,实习日志)