Linux学习笔记-程序员宅基地

技术标签: linux  嵌入式  

目录

day1.计算机基础知识

疑问:

待补充知识点:

day2.认识C语言-Windows环境

疑问:

day3走进Linux世界

1.linux与Windows的区别

2.Linux文件系统的层次结构   

3.linux中文件类型

4.linux的基本命令

1)快捷键

2)提示符

3)ls 【选项】【文件】(查看文件)

4)cd (改变目录)

5)touch新建普通文件

6)mkdir创建目录

7)rmdir删除空目录(不常用)

8)rm删除文件或目录

9)cp复制

10)mv移动

5.添加共享文件夹

day4数据的表示

1.数值数据的表示,数码,基,位权,数制

2.进制,进制间转换

3.计算机中数据的单位

4.原码,反码,补码

day5数据类型

1.基本数据类型

2.数据类型转换

day6运算符

1.基本类型

2.优先级

3.额外拓展

day7vi编辑器


day1.计算机基础知识

计算机由CPU(包括运算器与控制器)、输入设备、输出设备、外部存储器(掉电不丢失)、内部存储器(掉电丢失)组成。


让计算机能够理解并执行的指令即程序。


编程语言从机器能够识别的机器语言发展为与机器语言一一对应的汇编语言,再到高级语言。

由于每种机器的机器码不一样,所以同样的功能在不同的电脑上需要不同的机器语言,因此对应的汇编语言也不一样,导致这两种编程方式的移植性不高。


相比于低级语言,高级语言的移植性更好,但为了简化编程以及提高移植性,高级语言进行了层层嵌套,导致编程效率较低。


高级语言又分为底层C语言,面向对象的C++、C#、Java等以及脚本语言Python等,越底层的语言越简单。

编译过程即将高级语言编译为机器语言的过程。

疑问:


1.学习单片机的时候了解到,寄存器分为flash、RAM跟ROM,flash为掉电不丢失用来存储数据,RAM负责处理程序掉电丢失,ROM不太记得了,具体与上述的内外部存储器有什么区别与联系;

答案参考下述链接:

RAM,ROM,Flash区别

RAM,ROM,Flash区别


2.机器语言由于机器码不一样导致移植性较差,这个机器码不一样是因为每台计算的机器码不一样,还是因为操作系统的原因或者是因为什么导致的;

答案参考下述链接:

机器语言、汇编语言、高级语言_机器语言 汇编语言 高级语言-程序员宅基地

待补充知识点:

1.计算机组成原理

day2.认识C语言-Windows环境

C语言特性:
效率高、可移植性高、灵活度高

编译型语言过程:
编写代码
源代码统一交给编译器
编译器编译为机器语言,打包成一个可执行文件
将文件交给CPU执行
优点:效率高
缺点:跨平台能力弱,不方便调试

解释型语言过程:
程序交给解释器
解释器每行代码逐一解释成机器语言,CPU一行一行执行
优点:跨平台能力强(通过更换操作系统解释器达到跨平台目的),易于调试
缺点:执行速度慢,程序有修改或BUG需要不停编译  

疑问:


代码可移植性跟跨平台能力的区别在哪?

我的理解为C语言可以通过不同的编译器将源代码编译为想要的机器语言,从而实现各个平台的移植,因此它的代码可移植性高;
解释型语言的程序文本形式存在,本身不需要编译,所以它可以在任何平台上运行,对应的每个平台解释器不一样,所以跨平台能力强。

day3走进Linux世界

1.linux与Windows的区别

linux不像Windows有驱动器符号,其所有东西都在根目录下,根目录用 / 表示

linux上的文件名区分大小写

2.Linux文件系统的层次结构   

/bin bin是二进制(binary)的缩写

/boot 存放的是系统启动时要用的程序

/dev 包含了linux系统中使用的外部设备

/etc 存放了系统管理时要用的各种配置文件和子目录

/lib 存放系统动态连接共享库

/home 普通用户的主目录,该目录下会有以普通用户用户名命名的文件夹

/root 根用户(超级用户)的主目录

。。。。。。

ps:不同用户的操作权限不同

3.linux中文件类型

Linux有七种文件类型:bcd-lsp (编程的-老色匹)

① b:块设备文件 (比如:U盘)

② c:字符设备文件(比如:键盘、鼠标、串口)

③ d:目录文件、文件夹

④ l:链接文件 (相当于windows系统下的快捷方式)

⑤ s:套接字文件(网络通讯)

⑥ p:管道文件 (进程间通信)

⑦ -:普通文件,或者更准确的说,不属于其它几种类型的文件

4.linux的基本命令

1)快捷键

ctrl + alt + t 打开一个新的终端

ctrl + shift + n 在已经打开终端的基础上,新打开一个同路径的终端

ctrl + shift + t 在已经打开终端内,新起一个同路径窗口

ctrl + l 清屏 

 输入命令 clear 清屏

 输入命令 exit 退出当前命令行终端

鼠标点击Linux虚拟机,鼠标就在Linux中。ctrl + alt,鼠标就回到了windows

2)提示符

whoami命令:查看当前登录的系统的用户名

hostname命令:显示当前系统的主机名

pwd命令用于显示用户在文件系统中的当前位置,命令执行结果显示为绝对路径名

3)ls 【选项】【文件】(查看文件)

ls -a查看所有类型文件

ls -l查看文件详细信息,ls -l 【文件名】查看某个文件详细信息

文件权限包括:r读,w写,x执行,-无权限

先后顺序分别为:属主,同组用户,其他用户

4)cd (改变目录)

cd / 返回根目录

cd ~ 返回用户主目录

cd . 原地不动

cd .. 返回上级目录

cd - 返回到上一次的工作目录

cd 回到家目录

cd 【绝对路径】

cd 【相对路径】

5)touch新建普通文件

用法:touch 【文件名】

新建的文件大小为0,如果新建的文件已存在,则内容不变,只更新文件标签的时间

6)mkdir创建目录

用法:mkdir 【选项】【目录名】

mkdir 【目录名】【目录名】。。。 同时创建多个目录

mkdir -p 【目录名】需要时创建上层目录,若这些目录存在也不报错,可用于嵌套创建目录

7)rmdir删除空目录(不常用)

用法:rmdir 【文件名】删除空目录,若目录不为空可以采用rmdir -p 【文件名】进行递归删除

8)rm删除文件或目录

用法:rm 【选项】【文件名】(可同时删除多个)

rm -f强制模式,不提示直接删除

rm -i交互模式,删除前提醒

rm -r默认rm不删除目录,添加-r可删除目录及旗下所有文件和子目录

ps:如果权限不够,可以在命令前添加sudo,获得以此超级用户的权限

9)cp复制

作用:复制一个源文件到目标文件(夹)

用法:cp 【选项】 源文件 目标文件(夹)

复制到文件夹时文件名不变,复制到文件时本质是备份文件,所以需要改名,如果命名的文件存在同名文件,则会覆盖其内容。

cp -i交互模式,复制时会提示

cp -r复制文件夹时需要加-r

cp 源文件 源文件 ... 目标文件夹 ,一次复制多个

cp *.后缀 文件夹 ,批量复制同一文件类型的文件到文件夹

10)mv移动

作用:剪切一个源文件(夹)到目标文件(夹)(源文件与目标文件(夹)需在一个路径)

用法:mv 源文件(夹)  目标文件(夹)

可以在剪切的过程中进行重命名,如:mv first.c newfirst.c,在同一路径重命名;mv first.c dir1/newfirst.c,剪切到其他文件夹并重新命名

5.添加共享文件夹

生成一个Windows系统与Linux系统共享的文件夹

day4数据的表示

1.数值数据的表示,数码,基,位权,数制

常见的数制分为:二进制,八进制,十进制,十六进制

数码为表示数的符号:

二进制:0,1

八进制:0,1,2,3,4,5,6,7

十进制:0,1,2,3,4,5,6,7,8,9

十六进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

基为数码的个数:

二进制:2

八进制:8

十进制:10

十六进制:16

位权:

每个数码所表示的数值等于该数码乘以一个与数码所在位置相关的 常数(这个常数叫位权)

123 = 1X100 + 2X10 + 3X1 = 1X10² + 2X10 + 3X1

 一个数码处在不同位置上所代表的值不同, 比如数字3在个位数位 置上表示3,十位数位置上表示30,在百位数上表示30

位权的大小是以基数为底、数码所在位置的序号为 指数的整数次幂

2.进制,进制间转换

0x开头代表十六进制
0开头代表8进制

其他进制转换为十进制用上述位权的方法即可

十进制转其他进制
方法:连续除以基,从低到高记录余数,直到商为0
83/8=10..3
10/8=1...2
1/8=0...1
转换成八进制123

二进制转八进制
000-0
001-1
010-2
011-3
100-4
101-5
110-6
111-7
每三位为一组,不够的位数补0,一一对应上述即可
如:1101001->001 101 001->151

八进制转二进制反过来即可
如246->010 100 110->10100110

二进制转十六进制则用四位数去一一对应即可
0001-1,0010-2,0011-3,0100-4,0101-5,0110-6,0111-7,1000-8,
1001-9,1010-A,1011-B,1100-C
1101-D,1110-E,1111-F

%#x输出十六进制数
%u输出无符号十进制数

3.计算机中数据的单位

最小的数据单位为比特(Bit),存储二进制的0或1。

八个最小单位为一个单元,称作字节,一个字节(Byte)为八个Bit

内存以字节为单位进行处理,每个字节都有一个地址,CPU通过访问字节的地址来访问每个字节的空间

1B=8Bit,1Kb=1024B,1M=1024Kb,1G=1024M,1T=1024G

4.原码,反码,补码

参考下述链接:

原码 补码 反码_char 198输出-程序员宅基地

day5数据类型

今天的课程是C语言基础,之前学过所以大致记一下即可

1.基本数据类型

在32为机器中基本数据类型对应的大小:
字符型char,1字节
短整型short,2字节
整型int,4字节
长整型long,4字节
更长的整型long long,8字节
单精度浮点型float,4字节
双精度浮点型double,8字节
长精度long double,12字节
布尔型_Bool,1字节
void型,4字节
指针,4字节

大写字母转小写+32
字符数字转数字+48

bool不是基本类型
_ Bool 才是基本类型
#define bool     _Bool
#define ture         1
#define flase        0
宏定义的bool

额外补充浮点型数据的知识见下面链接:

浮点型数据的存储与比较-程序员宅基地

2.数据类型转换

数据类型转换分为强制类型转换与自动类型转换,自动类型转换又包括赋值操作与二元运算

        在对变量赋值时,如果等号右边的表达式值与 左边的变量类型不同,右边的类型将转换为左 边的类型,并且如果右边的数据类型长度比左边的长,就会丢失一部分数据,导致精度降低。

        在不同数据类型之间进行二元运算时,也会发生隐士的自动类型转换 。如果参与运算的变量类型不同,会先转换成同一类型再进行计算。如果运算时发生类型转换,就会按数据长度增加的方向进行,从而保证精度不降低。并且所有浮点数参与的运算都以双精度进行,即使表达式中只有float,也会先转为double,再进行计算。

        为了确保类型转换按照开发者期望的方式进行,可以明确设置类型转换的方式,这就是强制类型转换。强制类型转换是一种运算符,在需要转换的表达式前添加小括号括起来的新类型名称。

day6运算符

C语言基础以前学过,大致记一下

1.基本类型

最基本的操作就是进行各种运算。C语言提供了丰富的运算符:

算术运算符:+、-、 * 、/、%、++、--

关系运算符:>、<、>= 、<=、==、!=、

逻辑运算符:&&(逻辑与)、||(逻辑或)、!(逻辑非)

赋值运算符:

        赋值:=

        算术复合赋值运算符:+=、-=、*=、/=、%=

        位运算复合赋值运算符:<<=、>>=、&=、|=、^=

位运算符:&、|、 ^ 、~、>>、<<

三目运算符:? :

逗号运算符:,

大小运算符:sizeof

其它运算符:  [ ] (下标引用操作符)、( ) (函数调用操作符)、(类型)(强制类型转换)&(取地址操作 符)、->(结构成员操作符)

2.优先级

3.额外拓展

  • 在写关系运算符==时,为了避免出错编译器无法发现,建议将常量写在左边,比如:

if(a == 5)错写成if(a = 5),也许会出现编译器为报警的情况,将常量写在左边即可避免该错误无法检测出。

  • 浮点型数据无法%也无法~,%与~均只能对整型使用
  • 使用^可以原地交换两个数的值
  • 与0&可以清0
  • 与1|可以置1
  • 同1^可以翻转
  • 右移运算分为算数移位跟逻辑移位,对于无符号的数是逻辑移位左边补0,对于有符号的数是算数移位左边补移位之前的最高位
  • 逻辑运算符&&跟||具有短路特性,对于&&左边为0后面的就不执行,对于||左边为1右边的就不执行。因此为了提高效率尽量将最可能为0的写在&&左边,最可能为1的写在||左边。

根据短路特性,先将a的值赋给c,为0后面的不执行,因此最后a=1,b=-1,c=0,d=4

day7vi编辑器

1.vi的三种模式

2.vi的光标命令

3.vi操作命令

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/q645753223/article/details/136834811

智能推荐

解决win10/win8/8.1 64位操作系统MT65xx preloader线刷驱动无法安装_mt65驱动-程序员宅基地

文章浏览阅读1.3w次。转载自 http://www.miui.com/thread-2003672-1-1.html 当手机在刷错包或者误修改删除系统文件后会出现无法开机或者是移动定制(联通合约机)版想刷标准版,这时就会用到线刷,首先就是安装线刷驱动。 在XP和win7上线刷是比较方便的,用那个驱动自动安装版,直接就可以安装好,完成线刷。不过现在也有好多机友换成了win8/8.1系统,再使用这个_mt65驱动

SonarQube简介及客户端集成_sonar的客户端区别-程序员宅基地

文章浏览阅读1k次。SonarQube是一个代码质量管理平台,可以扫描监测代码并给出质量评价及修改建议,通过插件机制支持25+中开发语言,可以很容易与gradle\maven\jenkins等工具进行集成,是非常流行的代码质量管控平台。通CheckStyle、findbugs等工具定位不同,SonarQube定位于平台,有完善的管理机制及强大的管理页面,并通过插件支持checkstyle及findbugs等既有的流..._sonar的客户端区别

元学习系列(六):神经图灵机详细分析_神经图灵机方法改进-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏27次。神经图灵机是LSTM、GRU的改进版本,本质上依然包含一个外部记忆结构、可对记忆进行读写操作,主要针对读写操作进行了改进,或者说提出了一种新的读写操作思路。神经图灵机之所以叫这个名字是因为它通过深度学习模型模拟了图灵机,但是我觉得如果先去介绍图灵机的概念,就会搞得很混乱,所以这里主要从神经图灵机改进了LSTM的哪些方面入手进行讲解,同时,由于模型的结构比较复杂,为了让思路更清晰,这次也会分开几..._神经图灵机方法改进

【机器学习】机器学习模型迭代方法(Python)-程序员宅基地

文章浏览阅读2.8k次。一、模型迭代方法机器学习模型在实际应用的场景,通常要根据新增的数据下进行模型的迭代,常见的模型迭代方法有以下几种:1、全量数据重新训练一个模型,直接合并历史训练数据与新增的数据,模型直接离线学习全量数据,学习得到一个全新的模型。优缺点:这也是实际最为常见的模型迭代方式,通常模型效果也是最好的,但这样模型迭代比较耗时,资源耗费比较多,实时性较差,特别是在大数据场景更为困难;2、模型融合的方法,将旧模..._模型迭代

base64图片打成Zip包上传,以及服务端解压的简单实现_base64可以装换zip吗-程序员宅基地

文章浏览阅读2.3k次。1、前言上传图片一般采用异步上传的方式,但是异步上传带来不好的地方,就如果图片有改变或者删除,图片服务器端就会造成浪费。所以有时候就会和参数同步提交。笔者喜欢base64图片一起上传,但是图片过多时就会出现数据丢失等异常。因为tomcat的post请求默认是2M的长度限制。2、解决办法有两种:① 修改tomcat的servel.xml的配置文件,设置 maxPostSize=..._base64可以装换zip吗

Opencv自然场景文本识别系统(源码&教程)_opencv自然场景实时识别文字-程序员宅基地

文章浏览阅读1k次,点赞17次,收藏22次。Opencv自然场景文本识别系统(源码&教程)_opencv自然场景实时识别文字

随便推点

ESXi 快速复制虚拟机脚本_exsi6.7快速克隆centos-程序员宅基地

文章浏览阅读1.3k次。拷贝虚拟机文件时间比较长,因为虚拟机 flat 文件很大,所以要等。脚本完成后,以复制虚拟机文件夹。将以下脚本内容写入文件。_exsi6.7快速克隆centos

好友推荐—基于关系的java和spark代码实现_本关任务:使用 spark core 知识完成 " 好友推荐 " 的程序。-程序员宅基地

文章浏览阅读2k次。本文主要实现基于二度好友的推荐。数学公式参考于:http://blog.csdn.net/qq_14950717/article/details/52197565测试数据为自己随手画的关系图把图片整理成文本信息如下:a b c d e f yb c a f gc a b dd c a e h q re f h d af e a b gg h f bh e g i di j m n ..._本关任务:使用 spark core 知识完成 " 好友推荐 " 的程序。

南京大学-高级程序设计复习总结_南京大学高级程序设计-程序员宅基地

文章浏览阅读367次。南京大学高级程序设计期末复习总结,c++面向对象编程_南京大学高级程序设计

4.朴素贝叶斯分类器实现-matlab_朴素贝叶斯 matlab训练和测试输出-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏12次。实现朴素贝叶斯分类器,并且根据李航《统计机器学习》第四章提供的数据训练与测试,结果与书中一致分别实现了朴素贝叶斯以及带有laplace平滑的朴素贝叶斯%书中例题实现朴素贝叶斯%特征1的取值集合A1=[1;2;3];%特征2的取值集合A2=[4;5;6];%S M LAValues={A1;A2};%Y的取值集合YValue=[-1;1];%数据集和T=[ 1,4,-1;..._朴素贝叶斯 matlab训练和测试输出

Markdown 文本换行_markdowntext 换行-程序员宅基地

文章浏览阅读1.6k次。Markdown 文本换行_markdowntext 换行

错误:0xC0000022 在运行 Microsoft Windows 非核心版本的计算机上,运行”slui.exe 0x2a 0xC0000022″以显示错误文本_错误: 0xc0000022 在运行 microsoft windows 非核心版本的计算机上,运行-程序员宅基地

文章浏览阅读6.7w次,点赞2次,收藏37次。win10 2016长期服务版激活错误解决方法:打开“注册表编辑器”;(Windows + R然后输入Regedit)修改SkipRearm的值为1:(在HKEY_LOCAL_MACHINE–》SOFTWARE–》Microsoft–》Windows NT–》CurrentVersion–》SoftwareProtectionPlatform里面,将SkipRearm的值修改为1)重..._错误: 0xc0000022 在运行 microsoft windows 非核心版本的计算机上,运行“slui.ex