自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux内核体系结构

linux内核体系结构操作系统的工作方式操作系统中各级模块的互相关联各个模块是相互独立的操作系统的工作方式1.把操作系统从用户态切换到内核态2.实现操作系统的系统调用(操作系统的服务层)3.应用操作系统提供的底层函数,进行功能的实现4.退出后从内核态切换到用户态操作系统中各级模块的互相关联1.linux内核的整体模块:进程调度模块、内存管理模块、文件系统模块、进程间的通讯模块、驱动管理模块。2.每个模块之间的关系:- 内存管理和驱动管理模块:虚拟内存的缓存和回存;- VFS 虚拟文件

2022-03-14 16:27:44 1350

原创 c++之 钻石继承

概念两个派生类同时继承一个基类,然后又有某一个类继承两个派生类。钻石继承的问题1、产生二义性;2、继承的数据只需要一份就可以了。砖石继承会同时继承两个数据。如何解决遇到的问题继承前加上virtual关键字,变为虚继承class base{public: int age;}class son1 : virtual public parent{};//继承前加上virtual关键字class son2 : virtual public parent{};//继承前加上virtual关键

2021-09-10 11:46:58 547

原创 纯虚函数和抽象类

概念在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写内容。因此我们要将虚函数改为纯虚函数。纯虚函数的语法virtual 返回类型 函数名 (参数列表)= 0;当类中有了纯虚函数,这个类也称为抽象函数。抽象类的特点无法实例化对象;子类必须重写抽象类中的纯虚函数,否者也属于抽象类。...

2021-09-10 11:32:14 110

原创 c++学习之 多态

概念1、静态多态:编译阶段就已经给函数分配好了地址2、动态多态:程序在运行期间给函数分配地址规则1、有继承关系;2、子类重写父类中的虚构函数;3、父类指针或引用指向子类的对象;4、父类中使用virtual关键字修饰函数;...

2021-09-10 09:55:53 104

原创 c++核心编程

C++核心编程本阶段主要针对C++面向对象编程技术做详细讲解,探讨C++中的核心和精髓。1 内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程1.1 程序运行前​ 在程序编译后,生成了ex

2021-09-03 19:06:52 162

原创 SPI通讯

介绍高速、全双工、同步、串行;主从工作方式;四线控制:四线控制MOSI:主设备数据输出,从设备数据输入;MISO:主设备数据输入,从设备数据输出;SCLK:时钟信号,有主设备产生;CS :设备使能信号有主设备产生。寻址方式当主机确定要和某个设备通讯时,主机需要通过片选线,向对应的从机发送使能信号(高电平或者低电平根据从机的类型而定);通讯过程spi在进行数据传输时,先传送高位,后传输低位;一个字节传输完,无需应答即可开始下一个字节的传输;在时钟信号上升沿或者下降沿时,

2021-08-30 17:04:12 111

原创 IIC总线

介绍串行,半双工;适合低速、近距离的通讯;两个线,数据线:SDA,时钟线:SCL;多主机总线协议;IIC总线是一种多主机总线;连接在IIC总线上的分为主机和从机;主机有权发起和结束一次通讯,从机只能被主机呼叫;当总线上有多个主机同时启动时,IIC也具备总裁的功能防止错误的产生;连接在总线上的地址(7bit)是唯一的;每个器件即可作主机也可作从机;总线上发送数据的器件叫发送器,接受数据的器件叫接收器。IIC通讯的过程主机发送起始信号启动总线;主机发送一个字节的数据指明从

2021-08-30 15:16:48 393

原创 UART通讯协议

功能串行和异步;全双工的发送和接受;波形图

2021-08-30 13:38:15 76

原创 PID控制算法

PID控制算法位式PD算法增量式PID算法位式PD算法公式代码:float PD_control(const float *P_value,const float *D_value,const float *set_value,const float *mea_value){ static float current_error=0;//定义当前误差 static float last_error=0;//定义上一次误差 float u=0;//定义输出量 current_error

2021-08-30 13:12:07 157

原创 volatile的作用

看大佬见解:链接: https://blog.csdn.net/weixin_41656968/article/details/80958973.

2021-08-29 19:58:59 59

原创 const和#define的不同之处

#define定义的变量,不能用指针指向该变量。const修饰的变量可以使用指针指向该变量;define可以定义一些简单的函数,只起替换的作用,const不可以定义函数;const修饰的变量,只在该文本内有效,想要在其他文件内访问该变量,需要在变量前加上extern,这点static修饰作用有点像;define定义的变量没有数据类型,是一个立即数;define所定义的宏变量在预处理阶段的时候进行替换;...

2021-08-29 18:00:13 99

原创 const的用法

使用const定义后的变量需要初始化,以后不能修改;使用const修饰的形参,在函数内,函数不能修改形参的内容;const修饰类名变量,只能对该变量进行读操作不能进行写操作;

2021-08-29 17:48:47 64

原创 static的用法

static修饰局部变量:局部变量为动态存储,即指令执行到定义处才分配内存。使其变为静态存储方式(静态数据区),那么这个局部变量在函数执行完成之后不会被释放,而是继续保留在内存中;static修饰全局变量:编译时就分配了内存,该变量只在文本内部有效;static修饰函数:对函数的连接方式产生影响,使得函数只在本文件内部有效。使用静态函数的好处是,不用担心与其他文件的同名函数产生干扰,另外也是对函数本身的一种保护机制;static类成员变量:表示这个成员为全类所共有,对类的所有对象只有一份拷贝,可以借.

2021-08-29 17:43:21 152

原创 struct和class的区别

c++是完全兼容c的;struct可以做的事,class也可以做;c++中,struct也可以有构造函数和析构函数;c++中struct访问的是public,class可以有private和protect

2021-08-29 17:27:29 42

原创 c++中函数的重载

函数名相同,但是函数的参数不同(形参的个数、类型或顺序);编译器会根据参数的不同来选择函数,这个也叫做编译时的多态

2021-08-29 16:18:33 46

原创 extern”C” 的作用

C++代码调用C语言代码;在C++的头文件中使用;被extern "C"修饰的变量和函数是按照C语言方式进行编译和链接的;具体例子如下:#ifndef __INCvxWorksh /*防止该头文件被重复引用*/#define __INCvxWorksh#ifdef __cplusplus //告诉编译器,这部分代码按C语言的格式进行编译,而不是C++的extern "C"{#endif/*…*/#ifdef __cplusplus}#end.

2021-08-29 16:13:13 280

原创 内存的分配方式

从静态存储区域分配内存,编译时就已经分配好了,程序运行期间都存在,例如静态变量全局变量;从栈上分配内存。在执行函数时,函数的局部变量的内存在栈上创建,函数执行完之后,内存自动释放。但是栈区分配的内存有限;从堆上分配内存。使用malloc或new申请内存,使用free和delete释放内存。...

2021-08-29 15:40:05 69

原创 指针与引用的相同和区别

指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名;指针是一个实体,而引用仅是个别名;指针和引用的自增(++)运算意义不一样,指针是对内存地址的自增,引用是对值的自增;引用一旦初始化后就不可以更改,相当一个指针常量,指针可变;引用不能为空,指针可以为空;引用没有const,指针有const;引用可以使用常量引用,即const int &b=1;...

2021-08-29 15:30:20 232

转载 new和malloc的区别

new、delete是C++中独有的操作符,malloc和free是C/C++中的标准库函数;使用new创建对象在分配内存的时候会自动调用构造函数,同时也可以完成对对象的初始化。同理要记得delete也能自动调用析构函数。new返回的是指针类型,会自动计算申请内存的大小,malloc返回的是void *指针类型,需要使用强转,将其转换为特定的类型;c++允许重载new/delete操作符;new内存分配失败时,会抛出bad_alloc异常。malloc分配内存失败时返回NULL;new操作符从自.

2021-08-29 15:00:35 142

原创 c++学习之 this指针

c++学习之 this指针概念:用途概念:this指向被调用的成员函数所属的对象;this指针是隐含每一个非静态成员函数内的一种指针;this指针不需要定义用途解决名称冲突返回对象地址#include <iostream>#include <string>using namespace std;class student{public: student(int age) { this->age=age;//解决名称冲突 } s

2021-08-23 00:23:46 55

原创 c++学习之静态成员函数

c++学习之静态成员函数概念概念所有对象共享一个函数静态成员函数只能访问静态成员变量有两种访问方式,通过对象访问,通过类名访问静态成员函数也是有权限的,例如:如果静态成员函数是private权限,在类外不能访问。#include <iostream>#include <string>using namespace std;class student{public: string name; int age; int height; static vo

2021-08-22 23:49:45 281

原创 c++学习之 构造和析构

c++学习之 构造和析构构造函数析构函数应用构造函数语法:类名(){}没有返回值;函数名与类名相同;可以有参数;系统在调用对象时,会自动调用,无需手动调用,而且只会调用一次。析构函数语法:~类名()没有返回值;没有参数;程序在对象销毁前自动调用析构函数,无需手动调用,而且只会调用一次。应用#include <iostream>#include <string>using namespace std;class student{ pu

2021-08-22 23:28:33 54

原创 c++学习之 封装

c++学习之 封装开端封装访问权限继承类型开端c++面向对象的三大特性;封装、继承、多态封装封装的意义:将属性和行为封装成一个整体基本语法:class 类名{ 访问权限:属性/行为;};例子1:设计一个圆类,求周长#include <iostream>using namespace std;#define PI 3.14class yuan{//创建一个圆类 public: int m_r; double get_C(){ return 2*PI*

2021-08-22 01:22:56 75

原创 c++学习之结构体

c++学习之结构体概念结构体定义结构体数组结构指针结构体作函数参数值传递地址传递结构体中 const的使用概念用户自定义的数据类型,允许用户存储不同的数据类型。结构体定义#include <iostream>#include <string.h>struct student{ string namme; int age; int score;}int main(void){ struct student stu1; stu1.name="老王

2021-08-22 00:47:35 57

原创 c++学习之指针

c++学习之指针空指针野指针const修饰指针常量指针指针常量const即修饰指针,又修饰变量指针和数组指针和函数值传递地址传递案例---指针、数组、函数之冒泡排序空指针指针变量指向内存中为0的空间用途:初始化指针注意:空指针指向的内存是不可访问的,因为0~255之间的内存是系统占用的,所以不可访问。#include <iostream>int main(void){ int *p = NULL; system("pause");}野指针野指针:指向非法的内存空间#i

2021-08-22 00:18:50 52

原创 linux多线程编程-学习笔记

linux多线程编程进程与线程之前的区别进程线程线程的特点线程共享资源一个进程中多个线程可以共享一下资源每个线程私有的资源包括linux线程库pthread 线程库中提供了如下基本操作同步和互斥机制线程示例参考资料进程与线程之前的区别进程在linux中,资源的分配是以进程为单位的;进程有独立的地址空间;linux为每个进程创建task_struct;每个进程都参与内核调度,互不影响;线程进程在切换时开销比较大很多操作系统引入了轻量级进程LWP(也就是线程)同一进程中的线程共享相同的

2021-08-19 16:06:12 198

原创 TCP协议的客户端/服务端程序一般流程

TCP协议的客户端/服务端程序一般流程图解参考资料图解参考资料链接: https://www.bilibili.com/video/BV1iJ411S7UA?p=31&share_source=copy_web.

2021-08-19 01:17:33 532

原创 TCP三次握手建立通讯

TCP三次握手建立通讯原理图结论参考资料原理图结论在代码中的体现就是,accpet()和connect()参考资料链接: https://www.bilibili.com/video/BV1iJ411S7UA?p=27&spm_id_from=pageDriver.

2021-08-19 00:31:48 48

原创 网络 基础

网络基础网络协议协议的概念典型的协议分层模型结构网络通讯的过程IPV4协议UDP协议TCP协议网络协议协议的概念一组规则典型的协议传输层:TCP,UDP应用层:HTTP,FTP网络层:IP协议、ICMP协议、IGMP协议网络接口层:ARP协议、RARP协议分层模型结构OSI(Open System Interconnection)OSI七层模型:物、数、网、传、会、表、应TCP/IP 4层模型:网(链路层/网络接口层)、网、传、应应用层:http、ftp、nfs、ssh

2021-08-19 00:22:33 66

原创 linux网络编程笔记

linux网络编程网络套接字:socket网络字节序IP地址装换函数sockaddr数据结构socket模型创建函数分析socketbindlistenacceptconnectTCP流程分析网络套接字:socket一个文件件描述指向一个套接字(该套接字内部由内核借助两个缓冲区实现)在通讯过程中,套接字一定是成对出现的网络字节序1、小端法:(pc本地存储)高位存高地址,地位存低地址2、大端法:(网络存储)高位存低地址。低位存高地址3、htonl–>本地—>网络(ip) :192

2021-08-18 18:55:46 155

原创 安装YouCompleteMe

安装YouCompleteMe说明说明安装YouCompleteMe插件之前,需要安装插件管理器,我使用的是Plug-vim插件管理器,具体的安装教程可以看该链接链接: link.

2021-08-17 02:31:48 455

转载 linux用户安装plug-vim

linux用户安装plug-vim安装plug-vim安装插件命令参考资料安装plug-vim安装和使用起来非常容易。你只需打开终端并运行以下命令:$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim安装这之前还要安装git,使用以下命令安装gitapt install git安装插件安装插件时,需要在此文件

2021-08-17 01:57:07 561 1

原创 2021-08-13

linux文件系统介绍linux内核文件系统参考资料linux内核为了屏蔽硬件的区别,把所有的硬件设备的抽象成文件,提供统一的接口给用户。文件系统虚拟文件系统:抽象层,对文件的访问实际上是对抽象层的访问。抽象对象:封装了底层读写细节,使用c语言的多态实现具体文件系统的接口普通文件系统ext4fat32ubifs特殊文件系统进程文件系统:procfs,挂载在/proc,存放进程相关信息,任务管理器。设备文件系统:devfs,挂载在/dev。存放硬件操作接口

2021-08-13 15:03:04 57

原创 makefile的使用

makefile的使用一、makefile的三要素1、makefile三要素是2、怎么描述三要素之间的关系二、makefile项目管理三、makefile的变量、模式规则1、make变量三大类2、makefile变量的应用3、模式匹配4、默认规则四、Makefile条件分支五、Makefile常用函数1、模式替换函数一、makefile的三要素1、makefile三要素是目标、依赖和命令。2、怎么描述三要素之间的关系 1 .PHONY:targetb #.PHONY:指定ta

2021-08-13 14:26:43 556

原创 linux操作系统nfs配置

linux操作系统nfs配置1、环境准备2、安装nfs3、nfs配置4、注意事项5、参考资料1、环境准备1.服务端: Linux ubuntu 5.11.0-25-generic2. 客户端:Linux raspberrypi 5.4.51-v7l+2、安装nfs服务端:sudo apt install nfs-kernel-server客户端:系统上已经自带,不用安装3、nfs配置(1) 在服务端也就是ubuntu操作系统上输入指令vim /etc/exports,然后编辑以下内容:

2021-08-11 19:50:00 731

原创 8086CPU内部结构

介绍的内容如下8086CPU内部结构图EU和BIU的主要组成EU和BIU的功能指令执行部件(EU)的工作大致流程8086CPU内部结构图从上图可以看出,8086CPU由指令执行部件(EU)和总线接口部件(BIU)组成,这两个部件是相互独立地工作。EU和BIU的主要组成EU的组成如下:算术逻辑运算单元(ALU)标志寄存器(FR)通用寄存器组EU控制电路BIU组成如下:地址...

2020-03-23 22:54:53 5405

原创 场效应三极管及其放大电路学习笔记

场效应三极管及其放大电路1、 场效应三极管介绍2、 金属-氧化物-半导体-场效应三极管(MOS)2.2、N沟道增强型MOSFET1、 场效应三极管介绍三端放大器件有FET(场效应三极管)和BJT(双极结型晶体管),产效应三极管(FET),简称产效应管。FET主要有两种类型:金属-氧化物-半导体效应管(MOSFET)和结型场效应管(JFET)。结型FET中的结可以是一个普通的PN结;也可以是一个...

2020-03-23 15:28:58 3815

空空如也

空空如也

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

TA关注的人

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