学习1

Posted maoey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习1相关的知识,希望对你有一定的参考价值。

linux系统命令
与文件相关
touch 创建文件
cat 查看文件
cp str dest 复制文件
mv str dest 移动文件
重命名可以借助mv命令实现
rm 删除文件 文件删除很难恢复,删除要谨慎
目录相关0

mkdir dir 创建目录
-p可以创建多级目录
cd dir 进入目录
pwd 查看当前所在的目录
ls 查看当前目录下的文件
-l显示文件的详细信息(缩写ll,不是命令)
-a显示隐藏文件,在linux ,unix,mac05系统以.开头的文件默认隐藏
ctrl+h可以显示隐藏文件、
rmdir 只能删除非空目录
注意:目录就是特殊的文件,可以文件可以使用的命令,目录基本都能使用
cp -frp 复制目录
rm -rf删除非空目录
mv 对目录的操作不要任何参数
特殊目录:
/ 代表最顶级目录,也叫根目录。
~用户主目录一般在/home目录下有一个以用户名命名的目录,该用户对他有绝对的权限。
..当前目录的上一级
.当前目录


网络相关
ifconfig/ipconfig查看/设置网络参数
ping ip 测试网络是否连通
ping127.0.0.1测试网卡是否在正常工作
ping 47.101.186.215
在linux下会一直执行,Ctrl+c可以结束
在Windows下默认只执行四次,/t可以一直执行。
telnet 47.101.186.215远程登录
采用明码传输数据,安全性低
ssh 用户名@47.101.186.215
ftp 47.101.186.215
other
chmod 修改文件权限
d【文件类型】rwx【文件主人的权限】rwx【同组】r-x【其他】
chmod+/-r/w/x三种用户同时加减权限
chmod (761)mmm 文件名
m=r(4)+w(2)+w(1)
tar 压缩文件
tar -zcvf 压缩文件名.tar.gz 要压缩的文件
tar -zxvf 被解缩的文件名 -C解压到指定目录
ln 创建链接文件(快捷方式)
ln 源文件名 链接文件名 创建出的是硬链接文件(链接目标被删除,不影响链接文件的访问)
ln -s 源文件名 链接文件名 创建出软件链接文件(链接目标被删除,链接文件不能在继续使用)
目录文件只能创建软链接
man查看命令,函数的使用方法
如果函数名和命令重复,可以使用2或3来制定查看函数
q键退出
终端的使用技巧
ctrl+alt+t 快速打开终端
ctrl+shift+t新建终端标签页
tal 可以自动补全命令,文件名,路径
如果备选有多个,按两下可以下出所有备选方案
如果列出的太多,enter下一个,空格键出一页
up/down 调用出命令记录

 

 

 

vim文本编程器 可以在终端下通过接盘方式进行编写代码的一种文本编辑器
基本用途:
vim file.c 打开或创建文件.c文件
输入i进入编辑模式,可以编写或修改代码
ctrl+x编译执行代码
ctrl+z保存退出
命令行编译
gcc.code.c->a.out编译代码生成可执行文程序
./a.out 执行程序
gcc code.c&&./a.out
vim三种主要模式:正常模式(菜单模式):进入vim后的默认模式,可以阅读,修改代码,有很多快捷键
插入模式(编辑模式):主要用来编写代码
命令模式(行底模式):对vim进行设置,执行命令

 

 


三种模式的切换
正常模式 输入i,a->正常模式

插入模式 esc或者ctrl+c->正常模式
正常模式 输入:->行底模式
行底模式 esc或ctrl+c->正常模式
注意: 插入模式和行底模式不能直接转换必须经过正常模式中转
正常模式的操作
进入插入模式
i:在当前光标前面进入插入模式,输入的内容在光标之前;
a:在当前光标前面进入插入模式,输入的内容在光标之后;
I:光标跳转到行首进入插入模式
A:光标跳转到行尾进入插入模式;
o:在当前光标下一行插入空白格,然后进入插入模式
O:在当前光标上一行插入空白格,然后进入插入模式

删除代码
x:删除一个字符
dw:删除一个单词
dd:删除一整行
ndd:删除n行
复制代码
yy:复制一行
nyy:复制多行
p:粘贴光标的下一行
移动代码:
删除的代码还保留在缓冲区中,配合p键可以达到移动的效果
xp:可以快速颠倒两个字符的位置
u 撤销一次操作
ctrl+r 撤销撤销操作,反撤销
插入模式的操作:
tab/ctrl+i 自动缩进4个字符(字符数可配置)
ctrl+p/n 自动补齐
ctrl+c 返回正常模式
ctrl+z 保存退出

行底模式的操作
;%是/old/new替换
:/key 查找关键字,n向下查找,N向下查找
:>n 从光标当前行开始,n行代码向右缩进
:<n 从光标当前行开始,n行代码向左缩进
:set nonu不显示行号
:set nu显示行号
注意:set开头的命令都是对vim进行一些设置,在行底的设置都只是临时有效.
如果想持续有效需要吧命令写进配置文件。
~/.vimrc


vim手册:vimtutor

`

c语言简介
作者:丹尼斯,里奇 肯.汤姆逊 贝尔实验室
时间 1970~1973
起因:为了开发一款操作系统 BCPL->newB->C
特点:语法简单,功能强大(对硬件支持),速度快
缺点:语法检查不严格,功能库少,代码简洁(不易懂)。

 


第一个C语言
*/
/*程序员所编写的c代码不是标准都是c代码,需要一段程序翻译成标准的c代码,复制翻译的程序叫预处理器,翻译的过程叫预处理,被翻译的代码叫预处理指令,以#开头的代码都是预处理指令。
#include的功能就是导入一个辅助文件(头文件)
.h结尾的文件记录都是辅助代码,大多数都是函数的开头(函数声明),所以叫头文件
stdio.h是标准库中的头文件,stdandard in out 编写
#include<>从系统指定目录加载头文件
#include“”先从当前目录加载,如果没有再从系统指定的目录加载头文件


操作系统通过设置环境变两来指定头文件的加载目录
*/
#include<stdio.h>
/*
C语言以函数为单位管理代码,一个函数就一段具有某项功能的代码
main是程序默认的入口函数,有且只能有一个。
int是一个数据类型,他表示函数执行结束后可以有一个执行结束返回给调用者int就是表示main函数的执行结果是int
main函数的调用者就是操作系统,main的执行结束会被操作系统获取到记录日志文件中
echo $?
正数:程序出现异常
负数:程序出现错误
0:一切正常
*/
int main()
{
printf("hello,world ");
/*
printf/scanf是标准库中提供的用输入输出数据的函数,使用时要导入stdio.h
一般用来调试程序,实际做项目时不用。

C语言中以分号作为代码的结尾。
转义字符的一种,通过正常方式不能显示或表达的符号。
回到行首
制表符 相当按一下tab键
a铃响
&&
\
*/ 1 #include<stdio.h>


return 0;

}
/*
1.把一个数据返回给函数的调用者
2.提前结束函数的执行,即使下面有代码也不再执行*/
//C语言中使用大括号来划分边界


/*
gcc编译器:
把代码翻译成可执行程序,有代码变成可执行程序经过一下步骤:
gcc-E code.c 把预处理的结果显示在屏幕上
gcc-E code.c -o code.i 预处理的结果保存到文件中。
gcc-S code.i 汇编 生成.s文件(汇编代码)
gcc-c code.s 编译 生成.o目标文件(已经是二进制文件)
gcc 1.o 2.o ...链接 把若干目标文件合并成可执行文件
*/

/*
数据类型

整型:只能表示整数
signed有符号:二进制最高位用来表示正0负1
signed不加就代表
signed char 1 128~127 %hhd
signed short 2 -32768~32767 %hd
signed int 4 -2000000000~2000000000 %d
signed long 4/8 %ld
signed long long 8 %lld
unsigned无符号:所有的二进制位都用来表示数据,只能表示正数
unsigned char 1 0~255 %hhu
unsigned short 2 0~65535 % hu
unsigned int 4 0~4000000000 %u
unsigned long 4/8 %lu
unsigned long long 8 %llu

浮点型:小数点是浮动的
单精度 float 4 %f
双精度 double 8 %lf
高精度 long double 12/16 %llf


浮点型采用科学计数法:符号位+指数位+位数位
小数点后六位有效
char 字符就是符号或者图案,但在计算机中是以整数形式储存的。
需要显示时会根据ASCII表中的对应关系显示出对应的符号
‘0‘48
‘a‘65
’A‘97
’‘ 0

bool 布尔类型是1980年才流行在计算机界,而c产生在1970年,因此C语言中没有真正的布尔类类型,使用是需要导入stbdoo.h
false<=>0 turn<=>1




变量:
储存数据的容器或盒子
定义:数据类型 名字;
int num;
新定义的变量的默认值是不确定的,为了安全,一定要初始化
使用:
1.赋值 num=100;
2,参与运算 num*20-100;
变量的取名:
1.由数字,字母下划线组成
2.不能以数字开头
3.不能与关键字重名
------------------
4.不要超过30个字符
5.见名知意
变量的输出printf函数:

printf 类型 变量名
变量的输入scanf函数;
scanf 类型 地址=&变量名

1 练习:定义各类型变量,使用scanf输入变量的值,使用printf显示变量的值
2练习:已知sizeof可以计算类型的字节数,编程计算出各类型数据点的字节数

常量:
在程序运行过程中不可以修改的数据。
字面值常量:
10 默认int
3.14 默认 double
“hello” 默认 char

5u unsigned int
1 int
1lu unsigned long

被保护常量
const int num;
运算符

算数运算符:+ - * / %
/%除数不能为零 会出现:浮点数列外,(核心已转移)
10/3=3
10%3=1
关系运算符:< > >= <= == !=
计算的结果是1或者0,可以转换位逻辑真或者假
5<n<10;
在c语言中会先计算5和n的关系结果为0或1,然后0或1再与10比较永远为真,注意 :C语言中的关系与数学的运算顺序不同
==变量尽量放在右边,为了让出错时有提醒
num=100;变成赋值语句;
100=num;会有错误提醒;

自变运算符: ++/--
对变量的是自动加1或减1,只有变量才能使用
只有变量才能使用。
前自变:++num对变量立即加1或减1;
后自变:num++,变量值下一行才会加1或减1;
不建议过多使用,不同的编译器处理顺序不同
逻辑运算符:&& || !
先把要运算的对象转换逻辑值,0值转为假,非零值转为真
A&&B左右两边都为真结果才为真
A||B左右两边都为假结果才为假
!A对A的值求反
他们的运算结果可以当做if ,for,while等语句判断条件

注意:&&,||具有短路特效,但可以利用短路特性写出精简的分支结构


if(num<10){

num++;

}
num<10&&num++;
赋值运算符及扩展:= += -=*= /= %=
num+=10;
num=num+10
num*=10;
num=num*10;

三目运算符:
[1]?[2]:[3];
判断1的值为真计算2,为假则计算3,相当于简单的if/else语句
在三目运算符中不能有流程控制语句,因为他始终是一个运算符,必须要有一个运算结果
字节数运算符:siezof 不是函数,是c语言的32个关键字之一,可以计算数据类型所占的字节数并且不计算()中的表达式但会推算是是什么类型再计算结果
位运算符

类型转换:
由于各数据类型的存储格式不同,运算规则也不同,只有相同类型的数据才能在一起进行运算
自动类型:不同类型的数据必须先转换成同一种类型然后再运算(由计算机自动完成)
转换规则(以不丢失数据为基础):
1.字节少的向字节多的转
2.整型向浮点型转
3.有符号向无符号转。

 

unsigned int num=10
强制类型转换:(类型)数据
有数据丢失的风险,慎重使用。
流程控制
默认情况下,代码从上到下顺序执行,流程控制语句则可以改变这种执行顺序
分支:
if (条件表达式)
{

为真执行

}
else
{
为假执行
}
if(条件表达式1)
{
条件表达式1为真
}
else if(条件表达式2)
{
条件表达式2为真
}

else
{
1.2都为假时执行
}



练习3:输入一个整数,判断是奇数还是偶数
练习4:输入3位整数,判断是否是水仙花数
练习5:输入一个年份判断是否闰年;
练习6:输入一个月份,计算该月有多少天(忽略闰年)
switch

循环
通过反复执行一段来达到解决问题的目的。
for([1];[2];[3])
{
[4];

}

1.先执行,只执行一次
2.判断条件,为真时执行4,为假则退出
4.循环体,被反复执行的代码
3.改变循环条件,防止出现死循环
for是一种非常灵活的循环,但也容易出错,因此建议使用一个变量来引导for的运行过程,这样可以精确控制循环的次数index->i,j
gcc -std=gnu99 code.c
1.初始化循环变量,只能在c99标准中定值循环变量,此处定义的变量只能在大括号中使用
2.判断循环变量是否到达边界
3.循环变量自增或则自减1
循环嵌套:
循环语句中包换循环语句。
外层循环执行一次,内层循环从头到尾执行一次
跳转
代码编译时常见的错误
1.undefined reference to ‘main’函数拼写错误
2.程序中有游离的。。。。,使用了中文字符
3.exprcted declartion or statement at end of input 大括号不匹配
4.出现异常数据,变量未初始化,数据溢出,占位符错误
5.死循环使用ctrl+c结束

以上是关于学习1的主要内容,如果未能解决你的问题,请参考以下文章

强化学习1-1-0 强化学习介绍强化学习1-1-0 强化学习介绍

深度学习的开胃菜——常用的机器学习知识梳理

机器学习系列1-学习资料和学习路线

强化学习⚠️手把手带你走进强化学习 1⚠️ 强化学习简介

强化学习⚠️手把手带你走进强化学习 1⚠️ 强化学习简介

统计学习方法详解之第一章统计方法及监督学习概论