自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

正弦定理的博客

虽然我很笨,但我努力不差

  • 博客(55)
  • 问答 (1)
  • 收藏
  • 关注

原创 Window和Ubuntu下——VScode安装

Windows 与 ubuntu linux 下 Vscode安装教程Vscode官方网站:[Vscode官网](https://code.visualstudio.com/)一、Windows系统安装VsCode(1)下载安装包(2)点击安装,一直next即可(3)需要安装对应的插件,方便使用二、ubuntu Linux环境下安装(1)下载安装包(2)移动到ubuntu下(3)打开FileZilla(4)安装Vscode(5)设置快捷方式三、插件和解决问题Vscode官方网站:Vscode官网一、Wi

2021-08-02 16:48:32 697 1

原创 Linux IPC对象——共享内存

IPC对象学习——共享内存(1)描述(2)特点(3)共享内存使用步奏1.shmget函数创建共享内存2.shmat 映射3.shmdt 撤销映射4.shmctl 删除共享内存对象(1)描述(1)IPC对象包括: 共享内存、消息队列、信号灯集(2)每个IPC对象都有唯一的ID值——key(3)IPC对象创建后,直到进程结束,系统会默认释放(在服务器上可能不行),当然人为撤销最好(4)每个 IPC 对象都有对应的 key值 ,当key为 0 时,表示为 私有的共享内存,否则key 和 ID 对应相同

2021-06-08 20:53:02 467 1

原创 安卓初学——界面按钮响应

安卓学习——采用onClickListener监听器,界面按钮响应(一)定义监听,绑定组件(二)通过匿名内部类,把组件和事件绑定(三)采用view 对象调用onClick(四)在当前Activity实现监听接口(一)定义监听,绑定组件自定义一个类,用来筛选监听的指令class MyClickedHandle implements View.OnClickListener{ public void onClick(View v) { switch(v.getId()) {

2021-05-19 20:28:57 387 2

原创 Linux学习——动态库的创建

Linux——创建动态库一.动态库特点:二.生成动态库(共享库)(1)生成目标文件 .o(2)创建共享库,以command为例(3)给共享库创建链接(4)编译测试(5)让系统找到库的方法1.方法二:2.方法三:一.动态库特点:二.生成动态库(共享库)例子文件:test.c:#include <stdio.h>#include "mydemo.h"int main(){ printf("Test begin : \n"); hello();

2021-03-28 21:45:51 777 2

原创 Linux学习——静态库制作

Linux——静态库制作一.静态库的特点:二.静态库制作格式和指令:三.简单制作静态库——Demo(1)目标封装函数(2)调用测试文件(3)将函数文件生成 .o 文件(4)编译生成静态库(5)编译测试(6)缺点一.静态库的特点:二.静态库制作格式和指令:ar crs libhello.c helloar crs lib + 文件名 + .a 文件名.o注意:格式一定是 以 lib开头 ,最后 .a 结尾,中间夹带的名字由自己取 ,最后使用函数文件 .o 生成静态库查看库里头封装的函

2021-03-28 12:00:29 378

原创 Linux——Makefile学习

Linux——MakeFile学习及Demo一.简单概念(1)Makefile:(2)结构:二.Demo一.简单概念(1)Makefile:(2)结构:target(目标): File(文件名)<TAB键> + command(命令)二.Demo

2021-03-26 23:06:35 209

原创 Shell脚本——函数语法学习

Shell脚本——函数语法一、函数形态二.函数的调用(1)形式一Demo: (去/etc/passwd 下 查询命令)(2)形式二Demo: (去/etc/passwd 下 查询命令)三.全局变量和局部变量一、函数形态在shell脚本函数中,函数的位置可以比较自由,但是函数的名字必须是连贯的字符串,也就是不能中间用空格隔开shell脚本中是没有数据的类型的,所以函数也是没有具体类型grep_fun(){ .......}二.函数的调用(1)形式一如函数grep_fun()

2021-03-16 15:31:08 296

原创 Shell脚本学习——基础语法阶段二

Shell脚本学习——基础语法阶段二一.条件语句(如C语言中的 if else)二.选择语句 case三.循环语句 for 和 while(1)while循环(2)for循环一.条件语句(如C语言中的 if else)在 Shell脚本中 if else嵌套的原理和C语言相似if [ 条件 ] then elsefi #一个if结尾不能少了fiDemo:#!/bin/bashecho "Please Input you Data"read dataif [ $data

2021-03-16 15:05:25 146

原创 Shell脚本学习——基本语法阶段一

Shell脚本学习——基本语法阶段一一.输入read(1)demo1(2)demo2二.在 bash 和 sh 中不换行的区别三.基本运算方法(和C语言基本差不多)四.test语句(1)测试操作符如:(2)测试字符串:(3)测试整数在 Shell 脚本中没有数据类型,所以赋值一个变量是,无论输入多少都会看作是一个字符串数据一.输入read(1)demo1在 Shell 中 只读一个数时,无论输入多少个数,在 Shell脚本中都会看作是 一整串字符串#!/bin/bashecho "Inp

2021-03-13 21:08:51 245

原创 Ubantu——Linux文件解压和压缩

Linux文件压缩和解压指令一.gzip和gunzip二.tar命令三.tar解压和查看一.gzip和gunzip例如:二.tar命令使用区别如下:三.tar解压和查看tar -xvf 加上要解压的文件名字

2021-03-13 11:03:34 154

原创 Ubantu下Linux动态IP和静态IP配置方法

Ubantu——Linux动态Ip和静态Ip配置方法一.动态Ip配置二.网络配置文件(1)进入网络配置文件(2)静态Ip和动态Ip的修改(3)修改inerfaces文件后需要进入DNS文件添加域名Ip三.重启网络,让其配置生效四.使用nslookup看使用DNS 的Ip地址查看网络命令:ifconfig一.动态Ip配置动态IP作用过程:二.网络配置文件(1)进入网络配置文件(2)静态Ip和动态Ip的修改(3)修改inerfaces文件后需要进入DNS文件添加域名Ip添加

2021-03-13 10:51:36 183

原创 数据结构——无向图创建邻接表以及深度遍历、广度遍历(C语言版)

数据结构——无向图创建邻接表以及深度遍历、广度遍历一、邻接表概念二、创建邻接表一、邻接表概念在无向图中,顶点存储在顶点表中,以一个顶点为标记,指向边链表,两者组合在一起,称为 邻接表对无向图的每个顶点vi建立一个单链表,第i个单链表中的结点表示依附于顶点vi的边(对于有向图则是以顶点vi为尾的弧)。这个单链表就称为顶点vi的边表(对于有向图则称为出边表)边表的头指针和顶点的数据信息采用顺序存储(称为顶点表)邻接表中存在两种结点:顶点表结点和边表结点顶点表结点由顶点域(data)和指向第一条

2020-12-22 20:55:12 13767 8

原创 数据结构—无向图创建邻接矩阵、深度优先遍历和广度优先遍历(C语言版)

无向图创建邻接矩阵、深度优先遍历和广度优先遍历一、概念解析:(1)无向图:(2)邻接矩阵:二、创建邻接矩阵:三、深度遍历、广度遍历(1)深度遍历概念:(2)广度遍历概念:四、实例展示一、概念解析:(1)无向图:假设图G由两个集合V和E组成,记为G={V , E}。其中V是顶点的有限集合,E是连接V中两个不同顶点的边的有限集合。如果E中的顶点对是有序的,即E中的每条边都是有方向的,则称G是有向图。如果顶点对是无序的,则称G是无向图(2)邻接矩阵:邻接矩阵主要由:二维数组 实现如图转

2020-12-19 17:25:49 46549 8

原创 数据结构——计算节点个数和二叉树高度(C语言版)

数据结构——计算节点个数、二叉树高度一、计算各种节点(1)计算总节点:(2)计算单分支节点:(3)计算双分支节点:二、计算二叉树高度代码实现:一、计算各种节点二叉树结构体如下:// 二叉树结构体 typedef struct TreeLink{ int Data; struct TreeLink *LChild; struct TreeLink *RChild;}T_LINK,*TLINK; (1)计算总节点:让根节点指针开始,进行二叉树的遍历,遍历树节点中不为NULL下,及存

2020-12-12 23:27:09 4433 3

原创 数据结构——二叉树根节点到特定节点路径(C语言版)

二叉树——根节点到特定节点路径查找一、思路二、代码实现一、思路使用二叉链表创建的二叉树,这里我的思路是用链栈来存放找寻二叉树特定节点中,用来存放节点元素个人思路:创建链栈,遍历二叉树并把路径中节点元素存放到栈中(如下图所示):L 为一开始创建的链栈头指针flag = 1,作为标记符,表示还没在一条路径中,找到要找的特定节点元素二、代码实现思路理解不了,可以结合运行结果图,加上自己画图理解,运行结果在最下方#include<stdio.h>#include<s

2020-12-10 21:09:43 7175 10

原创 数据结构——二叉树先序、中序、后序及层次四种遍历(C语言版)

数据结构——二叉树先序、中序、后序三种遍历二叉树先序、中序、后序三种遍历三、代码展示:二叉树先序、中序、后序三种遍历先序遍历:3 2 2 3 8 6 5 4中序遍历:2 2 3 3 4 5 6 8后序遍历: 2 3 2 4 5 6 8 3三种遍历不同之处在,输出数据放在不同之处三、代码展示:#include<stdio.h>#include<stdlib.h>typedef struct Tree{ int

2020-12-09 17:08:48 350788 449

原创 数据结构——二叉链表创建二叉树(C语言版)

数据结构——二叉链表创建二叉树一、思想(先序思想创建):二、创建二叉树(1)传一级参数方法一、思想(先序思想创建):第一步先创建根节点,然后创建根节点左子树,开始递归创建左子树,直到递归创建到的节点下不继续创建左子树,也就是当下递归到的节点下的左子树指向NULL,结束本次左子树递归,返回这个节点的上一个节点,开始创建右子树,然后又开始以当下这个节点,继续递归创建左子树,左子树递归创建完,就递归创建右子树,直到递归结束返回到上一级指针节点(也就是根节点下),此时根节点左边子树创建完毕,开始创建右边子树,

2020-12-08 15:36:21 61881 15

原创 数据结构学习——链表(C语言版)

数据结构学习——链表的简单解析一、何为链表(1)概念:(2)特点:二、链表的简单实现(1)头插法:(2)尾插法(3)模拟学生管理系统:一、何为链表(1)概念:链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(

2020-11-29 17:08:08 915

原创 数据结构学习——顺序栈和链式栈的简单实现和解析(C语言版)

数据结构——栈的简单解析和实现一、概念二、入栈(push)三、出栈(pop)四、顺序栈简单实现(1)进栈操作(2)出栈操作一、概念本篇所讲解的栈和队列属于逻辑结构上的划分。逻辑结构分为线性结构、非线性结构线性结构:有且仅有一个开始节点和一个终端节点,每个节点最多只有一个直接前驱和一个直接后继。代表结构:栈、队列非线性结构:一个节点可能有多个直接前驱和多个直接后继。代表结构:树、图堆栈(英语:stack)又称为栈或堆叠,是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称

2020-11-26 21:26:49 1222 6

原创 数据结构学习——链式队列解析(C语言版)

数据结构——链队列解析过程和简单代码实现:一、简单概念:动图展示:(1)入队:(2)出队:二、顺序队列:思路步奏:(1)入队操作:(2)出队操作:简单实现代码:三、链式队列(1)声明(2)入队操作:(3)出队操作:(4)检查队列是否为空:全部代码:一、简单概念:队列,又称为伫列(queue),是先进先出(FIFO,First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作队列的操作方式和

2020-11-26 21:07:08 1510 2

原创 51单片机(V51)学习——串口通讯

串口通讯一、串口通讯的概念和用到的寄存器二、简单使用(1)不使用倍增下:(2)用倍增下:一、串口通讯的概念和用到的寄存器二、简单使用头文件:/********************************************************************* * * bstv51.h * **************************************************************

2020-10-03 22:33:30 5371

原创 51单片机(V51)学习——外部中断和定时器中断

51单片机(V51)学习——外部中断和定时器中断简单使用一、外部中断(下降沿开启和低电平开启)(1)外部中断概念:(2)下降沿演示:(3)低电平中断二、定时器中断(1)概念:(2)简单使用一、外部中断(下降沿开启和低电平开启)(1)外部中断概念:要用到的寄存器:EA、EX0、IT0(2)下降沿演示:#include<reg52.h>void main(){ P1 = 0X0F; // 0000 1111 让前面4个灯熄灭,后面4个灯亮起 P3 = 0X0F;

2020-09-29 22:10:00 2559

原创 51单片机(V51)———独立按键、4x4矩阵按键

独立按键、4x4矩阵按键一、独立按键(1)独立按键1.0(2)独立按键2.0二、4X4矩阵按键(1)所用到的位移概念:![在这里插入图片描述](https://img-blog.csdnimg.cn/20200928201835352.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoaW5lc2Vrb2Jl,size_16,color_FFFFF

2020-09-28 20:28:22 1664

原创 51单片机(V51)————静态数码管和动态数码管

51单片机(V51)————静态数码管和动态数码管一、静态数码管二、动态数码管一、静态数码管静态显示的连接方式、静态显示的优缺点(优点:不需要动态刷新;缺点:占用IO口线多)动态显示的连接方式(所有位数码管的段选线并联在一起,由 位选线控制是哪一位数码管有效)、动态显示的优缺点(缺点:需要动态刷新;优点:占用IO口线少)#include<reg52.h>sbit DUAN = P2^6;sbit WEI = P2^7;void main(){ P0 = 0x7d

2020-09-27 11:36:10 2170

原创 51单片机(V51)学习——流水灯、蜂鸣器

V51单片机学习——流水灯和蜂鸣器一、三种流水灯模式(1)板子(2)制作流水灯二、蜂鸣器+流水灯一、三种流水灯模式(1)板子(2)制作流水灯1、间断性开关法#include<reg52.h>// 初始化灯引脚sbit LED1=P1^0;sbit LED2=P1^1;sbit LED3=P1^2;sbit LED4=P1^3;sbit LED5=P1^4;sbit LED6=P1^5;sbit LED7=P1^6;sbit LED8=P1^7;#define O

2020-09-26 21:22:59 1903

原创 fread、fwrite、fopen函数的简单使用和open、read、write区别解析

fread、fwrite、fopen函数的简单使用和open、read、write区别解析一、fread、fwrite、fopen和read、write、open的区别解析:1、fopen和open区别:(1)来源:(2)移植性:(3)缓冲文件系统:(4)非缓冲文件系统:(5)主要区别:2、read/write和fread/fwrite区别:(1)fread是带缓冲的,read不带缓冲(2)其他:二、fread、fwrite、fopen解析(1)函数原型:(2)代码演示:(3)读写用在结构体上:一、fre

2020-09-19 22:34:40 964

原创 C语言练习——双链表下学生成绩管理系统

双链表实现学生成绩管理系统学生和班级结构体初始化学生:班级:学生链表创建(这里以尾插法为例子!):班级链表创建:输入数据到链表中:求班级里头最高分:求班级里头最低分:求班级平均分:输入班级人数和每个班学生人数:主函数部分:代码演示:学生和班级结构体初始化学生:struct Student{ int math; // 数学 int chinese; // 语文 int english; // 英语 int StudentID;

2020-09-10 22:47:12 935

原创 Linux系统学习笔记——ftp项目

服务端server.c#include<stdio.h>#include<string.h>#include<sys/types.h> /* See NOTES */#include<sys/socket.h>#include<stdlib.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#in

2020-08-25 20:53:18 310 1

原创 树莓派语音+红外模块实现智能家居实践

树莓派+红外+语音模块练习:1、硬件工具有如下:(1)树莓派 3B :(2)语音模块(3)红外模块(某宝购的,需要的可去某宝买)(4)VeMose板(5)本次以空调作为例子:2、需要用到的软件平台:(1)arduino开发环境(2)树莓派系统(3)串口助手调式3、红外解码过程:(1)连接红外设备(连接TTL串口):将TTL串口USB插入电脑,打开串口调试助手,设置好波特率和端口号,安装更新好USB驱动!!!(2)通过串口助手获取红外码(这里以格力空调为例)将获取的红外码,复制重新发送,检查是否为相对应的开关

2020-08-18 22:59:19 2721 14

原创 超声波测距原理、代码实现

超声波测距原理图 :代码实现:时间结构体解析: timevalfloat Measure(){ struct timeval t1; //超声波测距结构体,系统自带 struct timeval t2; long start; // 刚开始接受信号 long end; // 最后接受信号 float distance; digitalWrite(Trig,LOW); // 让超声波一开始信号平稳

2020-08-16 22:36:27 5227 1

原创 Linux系统学习——shell编程入门篇学习

Linux 系统学习——shell编程入门学习一、介绍:1. shell是一个作为用户和linux系统间接口的程序,允许用户向操作系统输入需要执行的命令2、执行脚本:1、./文件名 2、sh 文件名 3、#source 文件名3、在shell上 # 为注释4、每个shell程序需要写在 #!/bin/sh 开始 ,相当于头文件 ,这是对shell声明简单书写 :#!/bin/sh //必须要带上这个 shell 声明A="hello" // 这里不能 A = "hello" , 带有

2020-08-12 16:35:38 546 1

原创 基于树莓派arm架构——智能感应垃圾桶项目

以树莓派arm架构以超声波测距+蜂鸣器+舵机 实现开盖、关盖#include<stdio.h>#include<wiringPi.h> // 调用WiringPi库#include<sys/time.h> // 超声波测距头文件#include<softPwm.h> //调用PWM库#define Echo 5 //超声波端口#define Trig 4 //超声波端口#define BEEP 21 //蜂鸣器#define DU

2020-08-09 23:31:10 1130 1

原创 Source Insight 4.0——如何使用,方便阅读代码

Source Insight 4.0是一款很方便在代码量大的时候,用来观看代码的软件可以从网上下载到中文破解版,或者英文破解版 使用1、在目标代码录中建立一个文件夹,用来存放Source Insight工程文件 :点击刚建好的文件SI 进去,把文件夹路径拷贝下来:2、在Source Insight 中 建立工程 project ——new project :再次点击OK:3、添加目录代码文件:4、查询文件小窗口(此时如果右边没有出现小窗口,我们可以自行打开):View——Pa

2020-08-09 22:01:57 637

原创 树莓派学习——博通BCM2835芯片手册导读、IO口驱动代码调试和测试学习

一、树莓派寄存器介绍:GPFSEL0 GPIO Function Select 0: 功能选择 输入/输出GPSET0 GPIO Pin Output Set 0 : 输出0GPSET1 GPIO Pin Output Set 1 : 输出10 = No effect1 = Set GPIO pin nGPCLR0 GPIO Pin Output Clear 0: 清零0 = No effect1 = Clear GPIO pin nGPCLR1 GP

2020-08-07 23:39:05 3124 5

原创 关于位运算理解——按位或、按位与、异或

位运算理解:一、按位与运算符( & )二、按位或运算符( | )三、异或运算符(^)一、按位与运算符( & )参加运算的两个数,按二进制位进行“与”运算运算规则:只有两个数的二进制同时为1,结果才为1,否则为0(负数按补码形式参加按位与运算)即 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1例:3 &5 即 00000011 & 00000101 = 00000001 ,所以 3 & 5 的

2020-08-06 22:38:08 1767

原创 Linux系统学习——实现cp指令拷贝

Linux下实现cp指令的功能:头文件可以通过使用 man 手册查询#include<stdio.h>#include <sys/types.h>#include <unistd.h>#include <sys/stat.h>#include <fcntl.h>#include<stdlib.h>#include<string.h>int main(int argc, char **argv){

2020-08-05 22:53:43 229

原创 树莓派Linux——内核源码配置、编译操作

先装好树莓派linux 编译工具,可翻看博文1 编译:ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbsj4 :表示 你装ubuntu设置的配置cpu 线程情况2. 编译成功后,看到源码树目录多了vmlinux,失败则无此文件成功后,目标zImage镜像arch/arm/boot底下3.打包打包zImage成树莓派可用的xxx.img在~/SYSTEM/linux-

2020-08-05 17:07:54 892

原创 树莓派——文件系统解析

文件系统学习1. 什么是文件系统?2. 文件系统(文件管理系统的方法)的种类有哪些?3. 什么是分区?windowsLinux4. 什么是文件系统目录结构?5.什么虚拟文件系统Virtual File System ?6.虚拟文件系统有什么作用?1. 什么是文件系统?常规认知: 根目录文件系统是操作系统用于明确存储设备组织文件的方法。以上说的方法:就是文件管理系统(程序),简称文件系统2. 文件系统(文件管理系统的方法)的种类有哪些?FAT VFAT NTFS EXT1/2/3/4 HF

2020-08-05 16:43:33 1031

原创 树莓派arm架构——微机总线地址、物理地址、虚拟地址介绍

可以使用:cat /proc/cpuinfo 查看树莓派配置参数arm架构图 :虚拟地址 与物理之间 存在一种 算法(页表) 来计算两者地址大小

2020-08-05 16:37:10 818

原创 树莓派arm架构驱动学习——字符驱动pin4

驱动学习初步一、驱动pin4初步框架代码:pin4driver.c调试打开驱动:pin4test.c二、编译生成驱动:这里以我自己虚拟机为例1、进入linux包对应驱动类型下编译:2、编译驱动,生成 pin4driver.ko 文件3、将 pin4driver.ko 发送到树莓派上4、树莓派上加载驱动(在 /dev 上)5、查看目录有哪些驱动6、在linux下用arm编译 pin4test.c7、把 pin4test 发送到树莓派8、运行不了驱动的问题由于我们平时看的页面属于应用层,内核执行的驱动,结果是

2020-08-04 23:41:58 437

空空如也

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

TA关注的人

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