自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 man手册各章节的意义

man手册分成很多section,使用man时可以指定不同的section来浏览,各个section意义如下:1 - commands2 - system calls3 - library calls4 - special files5 - file formats and convertions6 - games for linux7 - macro packages and conventions8 - system management commands9 - 其他解释一下:1是

2021-09-01 20:26:14 561

原创 LINUX内核

Linux内核功能内存管理操作系统内核功能管理设备实际的物理内存,还可以创建和管理虚拟内存(Swap);通过硬盘的存储空间来创建虚拟内存,叫内存交换空间(Swap space)Swap功能:当有数据放在物理内存里面,但是这些数据又不常被CPU调用,那就将这些数据暂时丢到硬盘的Swap交换空间当中,而将物理内存空间释放出来给真正需要的程序去使用,当需要使用Swap space的数据时候,内核再将Swap中的页面换回来继续使用,如此循环。软件程序(进程)管理负责创建和销毁进程,内核创建的第一个进程(i

2021-08-23 19:18:32 199

原创 ARM———第二天

1、什么是汇编指令汇编指令:是机器指令的助记符,经过编译后会得到一串01010组成的机器码,可以由cpu读取执行伪指令:本质上不是指令,只是和指令一起写在代码中,是指导编译过程的,是编译系统提供的,不会生成对应的机器码2、数据搬移指令(指令格式)mov r0, #1 @将立即数1赋值给r0mov r1,r0 @将r0的值赋值给r1mov r2, r0, lsl #1 @将r0的值左移1位赋值给r2mov r3, r2, lsr #2 @将r2的值右移两位赋值给r3mvn r

2021-08-13 09:23:50 298

原创 ARM———第一天

1.为什么学习ARM?嵌入式:操作硬件的软件嵌入式系统分两大类:1.应用程序+硬件2.应用程序+操作系统+硬件ARM是学习嵌入式的入门,也是学习系统移植和驱动的基础2.学习目标用c语言控制硬件工作1.应用程序如何启动起来2.应用程序在哪里编辑和编译的,又是如何运行到板子上的3.硬件的工作原理4.会查看原理图和芯片手册1.预备知识0:低电平 1:高电平二极管:单向导通,一般用作开关三极管:电流放大,小电流控制大电流,开关场效应管:电压放大门电路:计算机的硬件组成部分

2021-08-10 17:05:03 2380 7

原创 数据结构第六天————图、以及算法

数据结构1. 逻辑思维 --> 编辑能力2. 封装接口3. 模块化编程 --> .h .c .c复习树二叉树二叉排序树 二叉搜索树特点:中序遍历的结果是从小到大有序。今天的内容1. 二叉树的层次遍历代码截图2. 图a. 概念:非线性结构,可能有环,可能是有方向的。b. 图的分类有向图和无向图 //连通图和非连通图c. 图的表示方式V={v0,v1,v2…}; //顶点R={<v0,v3><v0,v5>…} //有向图或者R=

2021-07-02 18:22:59 154

原创 数据结构第五天————项目(电子词典)

复习栈FILO顺序栈只能在一端操作的顺序表,建议在表尾进行入栈和出栈链式栈只能在一端操作的链表,建议在表头进行入栈和出栈队列FIFO顺序队列入队和出队分别在两端操作的顺序表顺序表:表头入队,需要移动元素;表尾出队,很方便。改进办法:方案1:空间只用一次,例如:讲义中二叉树的层次遍历struct queue{data_t data[SIZE];int rear; //表示入队的下标int front;//表示出队的下标};方案2:空间重复利用,即:循环顺序队列struct

2021-07-01 19:07:51 452

原创 数据结构第三天————栈,队列

单向循环链表特点:链表 + 尾结点指向头结点注意:在单向不循环链表的基础上修改判断尾结点的条件。 p->pNext == NULL ==> p->pNext == pList笔试题:合并两个已知尾结点的单向循环链表。LIST * mergeList(LIST *pT1,LIST * pT2){ if( NULL == pT1) { return pT2; } if( NULL == pT2) { return pT1; } if( NULL == pT

2021-07-01 19:00:40 100

原创 数据结构第二天————链表

复习数据结构逻辑结构–线性结构–顺序表+链表顺序表 (数组)应用特点地址连续 大小固定 紧凑存储 前驱 后继 访问方便删除和插入的时候,需要移动元素操作创建顺序表增加、插入删除查询修改销毁顺序表今天的内容链表==特点 ==地址可以不连续 大小不固定删除和插入的时候,不需要移动元素,比较方便访问不方便,只能从头结点开始访问术语单向链表中任意一个结点,只有一个指针域,存放下一个结点的地址。双向链表中任意一个结点,有两个指针域,分别存放下一个结点的地址和前一个结点

2021-07-01 18:57:38 90

原创 数据结构第一天——————顺序表

数据结构的课程安排1. 顺序表2. 链表3. 栈、队列4. 树、图5. 算法6. 项目数据结构培养的内容1. 习惯: 画图–>伪代码–>代码–>运行测试2. 思维: 逻辑思维 编程思想3. 能力: 封装接口 调用接口线性结构如果当前结点有前驱,那么,它的前驱有且仅有一个。如果当前结点有后继,那么,它的后继有且仅有一个。例:数组中有五个元素,现在找到了下标为2的那个元素前驱: 下标为2-1后继: 下标为2+1包含:顺序结构和链式结构顺序表特点 *****

2021-07-01 18:53:22 173

原创 进程第三天———进程间的通信方式

信号:同步:发送方发送数据,等待接受方响应之后才发下一个数据包的通讯方式异步:发送方发送数据,不等待接送方发回相应,接着发送下一个数据包的通讯方式1.特点:信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式2.基本概念:发送信号:产生信号的方式有很多种,(1).一个进程可以给一个进程发送一个特定信号, kill -9 进程ID号(2).内核可以向用户进程发送信号 管道断裂 alarm(2)(3).组合键ctrl + c— SIGINT ctrl+z ----SIGSTOP

2021-07-01 18:41:08 90

原创 进程第二天————进程的通信方式

进程:进程的概念特点进程类型:交互类型批处理进程守护进程进程状态运行态 :进程正在运行,或者准备运行(就绪态)等待态可中断不可中断停止态死亡态Here are the different values that the s, stat and state output specifiers (header “STAT” or “S”) willdisplay to describe the state of a process:D uninterruptible slee

2021-07-01 18:37:37 316

原创 进程第一天————进程

进程和线程进程process:概念、性质、分类、创建、退出、通信IPC、同步线程thread:概念、通信、同步semaphore和互斥mutex笔试和面试进程和线程概念、性质工作中进程和线程的通信、同步、互斥今天的内容进程process:进程的引进是为了实现并发任务。 == 概念:***** ==进程是程序运行的一次过程。进程是操作系统分配资源的最小单位。(内存资源)//进程是一段具有独立功能的程序在某个数据集合上的一次运行的过程。== 进程和程序的关系==1. 进程是动

2021-07-01 18:25:41 83

原创 第二天————文件IO

文件IO文件IO的特点:1.文件IO是POXIC(可移植操作系统接口)定义的一组函数2.不提供缓冲机制,每次读写都会引起系统调用3.文件描述符,是一个非负整数,文件描述符是0开始的标准IO默认打开3个文件stdin 标准输入 0stdout 标准输出 1stderr 标准出错 24.Linux下,标准IO基于文件IO实现文件的打开和关闭#include <sys/types.h>#include &

2021-06-19 16:25:59 190

原创 第一天————标准IO文件

IO文件为什么要学习IO公交车坠湖,飞机去哪里,黑匣子,黑匣子当中记录失事前所有的数据,数据: (1).疲劳驾驶(2).超速(3).叉车失灵等等.保存到硬盘当中.内存:一般掉电就消失了硬盘: 以文件的形式保存在硬盘中Linux一切皆文件:普通文件d 目录文件l 链接文件s socket文件p 管道文件c 字符设备文件b 块设备文件标准IO和文件IO区别:标准IO:1.标准IO是由ANSIC(ANSI美国国家标准协会及国际标

2021-06-19 15:49:26 96

原创 linux c第五天————c语言复习,结构体

C语言复习结构体:结构体类型定义学生: 属性:struct 结构体名{姓名: char name[20]; “字符串” 属性1;身高: int height; 整数 属性2;三门成绩: float scores[3]; 浮点数数组 属性3};定义一个学生的数据类型struct student{char name[20];int height;float scores[3];};表示定义了一个数据类型

2021-06-16 18:55:37 136

原创 linux c第四天———gcc、gdb、指针、大小端存储

1、gcc的编译流程1、预处理处理所有以#开头的指令,比如#include #define #ifdef。。。。。进行了符号替换gcc -E 1.c -o 1.i2、编译检查有无语法错误,如果没有语法错误,就编译为汇编代码,如果有语法错误,就报错gcc -S 1.c -o 1.s3、汇编将汇编代码变成二进制代码gcc -c 1.c -o 1.o4、链接一个工程中有很多.c文件,前面三步完成之后所有的.c都会变成.o,链接就是将所有的.o合并成一个可执行的二进制文件动态链接:在

2021-06-16 13:46:49 435

原创 linux c第三天———shell编程

shell编程1、shell脚本的概念编译型语言就是需要编译器进行编译之后,才能运行解释型的语言不需要编译,只要具有可执行的权限就可以运行shell脚本:将shell命令通过加入控制语句组织起来批量交给shell进行解释2、shell编程的基本过程3、shell变量3.1自定义变量1.变量的定义,通常用大写COUNT=12、调用echo COUNT或者COUNT 或者COUNT或者{COUNT}3、删除变量unset COUNT3.2位置变量(命令行参数)跟c语言中的

2021-06-11 18:09:26 163

原创 linux c第二天———shell命令

1、介绍shell1、什么是shellList item当用户在终端输入shell命令的时候,实际上是将这个命令交给了shell,然后shell告诉内核去执行对应的应用程序,所以shell是用户通过shell命令和内核进行交互的一个中间层当我们打开终端时,终端上打印出来的提示语句就是shell程序打印出来的,也就是当打开一个新的终端时,就会运行一个shell程序,我们用户就可以输入shell命令了所以:Shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统

2021-06-10 16:57:05 148

原创 linux c第一天————嵌入式,linux操作系统

嵌入式设备:通过软件来控制硬件工作的设备两类:有操作系统 没有操作系统(单片机开发)嵌入式为什么要学习linux操作系统?因为linux开源免费,可以对其进行修改,修改成适合不同的嵌入式设备的系统,可以定制,大部分嵌入式系统都使用的linux系统为什么linux系统使用命令行?定位不同,因为windows更多的是普通的家庭用户在使用,操作要傻瓜化,鼠标点点就可以,linux它的诞生之初是用来做企业服务器的,操作的都是专业人士,没有必须再安装桌面软件,浪费系统资源1、介绍linux操作系统1

2021-06-09 18:44:06 236 1

原创 第十天———清空函数和枚举

清空函数:memset---->按照字节进行清空建议:使用memset清空字符串头文件:#include <string.h>函数原型:void *memset(void *s, int c, size_t n);功能:用来清空一片空间参数:参数1:所需清空空间的起始地址参数2:所需清空的字符(0或者\0’)参数3:所需清空空间的字节数(可以通过sizeof这个运算符去测)返回值:清空空间之后的首地址==枚举:==是一个常量,和宏非常相像,但是枚举数据基本数据类型

2021-06-09 18:42:30 149

原创 第九天————传参问题和函数指针,指针函数

(1)一维数组的传参:void func(char *pStr);void func(char pStr[]);注意:数组作为参数传参时,会被退化成一个指针来使用。(2)二维数组的传参:void func(int M,int N,char (*pStr)[N]);void func(int M,int N,char pStr[][N]);(3)main函数传参:#include <stdio.h>23 int main(int argc,const char argv

2021-06-08 17:46:21 123 1

原创 第八天———函数;GDB调试段错误

段错误的原因:(1)访问了不该访问的空间(空指针或者野指针)(2)越界(3)修改了常量区的内容针对段错误处理方法:GDB调试:流程:(1)生成带有调试信息的文件gcc -g test.c -o test(2)进入该文件中gdb test(3)设置断点b 行号/函数名(4)让程序运行起来r(5)单步调试:n (不进入子函数,但是函数调用的整个结果会被显示出来)/ s (此时子函数会进入,进入子函数内部进行每一行单步调试)(6)如果看到(segementation def

2021-06-08 17:44:17 406 1

原创 第七天——指针和二维数组

打印数组元素值的方式:(一维数组)arr[i]*(arr+i)*(arr++) //errori[arr]*(p+i)*(p++)p[i]***1,指针和二维数组:***总结:对于int arr[2][3]的数组来说,arr[0][0]的类型是int ,arr[0]的类型是int *(因为arr[0] == &arr[0][0])又因为arr == &arr[0] ,为什么arr不是int **?(1)因为arr+1移动了12个字节(一维数组的的大小),如果是int

2021-06-03 18:33:58 148

原创 第六天————二级指针,选择排序

1,二级指针:二维数组?—》数组的数组二级指针?—》指针的指针概念:二级指针存储的是一级指针的地址(定义意味着有空间有空间就会有地址)格式:定义一级指针的格式:存储类型 数据类型 * 指针变量名; 定义二级指针的格式: 存储类型 数据类型 **指针变量名; 分析: 存储类型:二级指针自身的存储类型 数据类型**:二级指针的数据类型 数据类型*:二级指针所指向的类型 指针变量名:见名知义总结:(1)什么时候需要定义一个二级指针出来?-

2021-06-03 08:55:48 310

原创 第五天————数组,指针

数组整形数组:输入输出均需要通过循环来完成字符数组:本质就是一个字符串:通过整体去操作:gets,puts, scanf,printf字符串处理相关的函数:-----》注意:针对字符串来说strlen:strcpy:strncpy:strcat:strncat:strcmp:strncmp:memset:strlen:头文件:#include <string.h>函数原型:size_t strlen(const char *s);功能:求一个字符串的长度(注

2021-06-01 11:21:44 148

原创 第四天————1、循环 2、break,continue 3、数组 4、字符串处理相关的函数

1、循环2、break,continue3、数组(一维:整形 & 字符)4、字符串处理相关的函数循环:三大循环—》for while do_while当需要重复做某件事情时,需要通过循环来做!(1)for :格式:for(表达式1;表达式2;表达式3){循环体//代码的实现过程}分析: 表达式1:赋初值,可以省略(基于己经被初始化过了),但是;不可以省略 表达式2:条件判断,不建议省略,(省略之后就会陷入死循环) 表达式3:条件更新,可

2021-05-31 17:16:17 79

原创 第三天————运算符 ,输入输出函数 ,控住语句

1,运算符2,输入输出函数3,控住语句1,运算符包括:算术运算符,逻辑运算符,关系运算符,sizeof运算符,三目运算符,逗号运算符,位运算符,赋值运算符(1)算术运算符:+ - * / % ++ - -%:运算对象必须为整形++:规则:++在前,先自加(给旧值自加),再赋值(将自加之后的新值赋值给表达式)++在后,先赋值(将旧值赋值给表达式),再自加(给旧值自加)–:规则:–在前,先自减(给旧值自减),再赋值(将自减之后的新值赋值给表达式)–在后,先赋值(将旧值赋值给表达式),再

2021-05-27 18:18:06 114

原创 第二天————计算机的基本结构 ,程序 ,数据类型

1,计算机的基本结构2,什么是程序3,程序的设计步骤4,C库5,计算机的数据表示6,数据类型7,常量8,变量9,数据类型的转换1、计算机的基本结构(1)输入输出设备:键盘,鼠标,显示屏,扫描仪。。。。(2)CPU处理器:包含:算术逻辑运算器和控制器CPU处理器称为计算机的大脑,控制的是计算机的执行算术逻辑运算器:算术运算和逻辑运算,任何复杂的运算最终都会被展开成算术运算或者逻辑运算来执行控制器:对于内存中的命令的读取以及执行(3)存储器:外存:硬盘,存储的是程序以及一些不着急

2021-05-26 17:47:53 206

原创 第一天————linux命令,vim使用,gcc编译过程

第一天:(1)编程环境的介绍(2)基于Linux的shell命令(3)vim编辑器的使用(4)gcc编译器(1)编程环境的介绍虚拟机:虚拟出来的一台电脑。通过软件模拟出来的一台电脑(硬件环境),里面支持操作系统,硬盘以及内存,是一个可以运行的操作系统共享了真机的一部分硬盘和内存,在真机中运行的程序可以完全由虚拟机来运行。操作系统:Ubuntu系统(linux操作系统的发行版本)真机:操作系统:windows系统为什么使用Linux系统?-----》便于软件开发优点:(1)可.

2021-05-25 17:36:01 219

原创 进制转换和位操作(详细,通俗,易懂)

13.进制转换13.1.明确:计算机中数字都是在内存中,并且数字都是以二进制的形式存储13.2.明确:计算机中对数字的表示形式有四种:2进制表示,8进制表示,10进制表示,16进制表示不管是哪种形式,都是对同一个内存中存储的数字的不同表示形式而已也就是内存的中的数字不会随着进制的不同而改变!类似:人(数字):在家(2进制)在学校(8进制)在公司(10进制)在那种地方(16进制)人不管在哪里,人的长相不会变!8,10,16进制给程序员看,好看2进制给计算机看,计算机只认2进制13.3

2021-05-17 13:54:20 3095

原创 设计模式(二)——工厂模式(简单工厂模式)(附代码)

一、什么是工厂模式?是最常用的设计模式之一这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。二、工厂模式简图三、实例:我们将实现输入对象名字,程序将根据对象姓名进行查找,查找完成在屏幕打印对象执行的动作,同时打印对象的姓名和年龄,若查找失败,则打印“no find name”首先建立个5个.c文件和1个.h文件。如下:1、Animal.h该.h文件主要用于 类声明 以及几

2021-05-14 10:51:43 120

原创 设计模式(一)设计模式?类和对象?

一、什么是设计模式?设计模式最早是建筑设计领域引入到计算机科学中来的。是代码设计经验的总结,稳定,拓展性更强、一系列编程思想,代码更容易被他人理解、保证代码可靠性、程序的重用性。现有的设计模式共23种。注:算法不是设计模式,因为算法致力于解决问题而非设计问题。设计模式通常描述了一组相互紧密作用的类与对象二、什么是类和对象?类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。(C语言

2021-05-14 10:17:34 524

原创 linux常考知识点(四)——循环相关

一、说出下列两个循环的优缺点,并说明原因答:左侧程序优点:程序简洁缺点:多执行了N-1次逻辑判断,并且打断了循环“循环流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。右侧程序优点:循环的效率高缺点:程序不简洁二、语句for( ;1 ;)有什么问题?它是什么意思?答:死循环,和while(1)相同。三、do……while和while……do有什么区别?答:前一个循环一遍再判断,后一个判断以后再循环。四、嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。while(1

2021-05-13 19:44:28 62

原创 linux·常考知识点(三)宏定义函数

宏函数编写一、用宏定义写出swap(x,y),即交换两数== #define swap(x, y) (x)=(x)+(y);(y)=(x)–(y);(x)=(x)–(y);==二、写一个“标准”宏,这个宏输入两个参数并返回较小的一个。#define Min(X, Y) ((X)>(Y)?(Y):(X))//结尾没有;三、用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)U

2021-05-13 19:39:29 652

原创 linux常考知识点(二)C语言关键字

一、static 关键字的作用答:作用域方面:1.限制变量的作用域(static全局变量);2.设置变量的存储域(static局部变量)。static 最主要功能是隐藏,其次因为 static 变量存放在静态存储区,具备持久性和默认值为 0①隐藏作用,可以在不同的文件中定义同名变量和同名函数。②对于变量来说,保持变量持久,静态数据区的变量会在程序刚刚运行时就完成初始化,也是唯一一次初始化;储存在静态数据区,静态存储区只有两种变量(全局变量和 static 静态变量)。③默认初始化为 0x00

2021-05-13 19:17:26 198

原创 linux常考知识点(一)liunx文件的权限

liunx下查看文件权限ls -l如果是想查看单个文件权限:ls -l xxx.xxx (xxx.xxx是文件名)一共有十位,其中:最前面那个 - 代表的是类型( - 代表的是文件,d 代表的是文件夹)除去最前面的类型符,后面3位一组第一组三个 rwx 代表的是所有者(user)拥有的权限第二组三个 rw- 代表的是组群(group)拥有的权限第三组三个 rw- 代表的是其他人(other)拥有的权限rwx分别代表:r 表示文件可以被读(read),可以用4代表。w 表示文件可以被写(w

2021-05-13 18:59:18 130

原创 嵌入式笔试——笔试题目

单选(15题)第一题栈简介栈由操作系统(编译器)自动分配释放 ,用于存放函数的参数值、局部变量等,其操作方式类似于数据结构中的栈。堆简介堆由开发人员分配和释放,容易产生内存碎片(不连续的无法利用的地址空间)。 若开发人员不释放,程序结束时由 OS(操作系统) 回收,分配方式类似于链表。堆与栈区别堆与栈实际上是操作系统对进程占用的内存空间的两种管理方式,主要有如下几种区别:(1)管理方式不同。栈由操作系统自动分配释放,无需我们手动控制;堆的申请和释放工作由程序员控制,容易产生内存泄漏;(2

2021-05-13 18:53:14 3621

原创 Liunx常考基础知识(二)—Linux 进程和线程的区别

进程:进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述。进程才是程序(那些指令和数据)的真正运行实例。典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中

2021-05-13 16:45:23 276

原创 Liunx常考基础知识(一)—liunx系统常用指令,gcc的基本用法

一、文件1、Ls :显示当前文件的所有内容。2、Cd :切换当前目录。3、Pwd :显示当前工作路径。4、Tree :显示文件和目录(由根目录开始的树形结构)。5、 Mkdir :创建目录。6、Rm :删除文件。7、Rmdir :删除目录。8、Cp :复制文件/mul.9、Touch :创建一个文件夹。二、其他1、find :文件寻找 例子:find test 寻找当前目录下的test2、Mount :挂载文件系统3、Useradd :创建一个新用户4、Cat :在命令行中显示文

2021-05-13 16:31:50 137

原创 strstr函数(字符串处理函数)

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回石头人第一次出现的地址;否则,返回NULL#include <stdio.h> #include <string.h>int main(void) { char *str1 = "Borland International", *str2 = "nation", *ptr; ptr = strstr(str1, str2); printf("The

2021-04-17 18:40:57 323

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除