自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c++成员函数和友元函数的使用及区别

目录为什么使用成员函数和友元函数成员函数的使用友元友元函数和类的成员函数的区别为什么使用成员函数和友元函数这个问题至关重要,直接影响着后面的理解:程序数据: 数据是程序的信息,会受到程序函数的影响。封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数据封装引申出了另一个重要的 OOP 概念,即 数据隐藏 。数据封装 是一种把数据和操作数据的函数捆绑在一起的机制, 数据抽象 是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制。C++

2022-01-25 22:38:14 1529

原创 linuxshell编程之环境变量和shell变量

目录本地变量环境变量将变量导出到子进程位置变量参数本地变量本地变量在用户现在的 shell生命期的脚本中使用。如果在shell中启动另一个进程或退出,此值将无效。这个方法的优点就是用户不能对其他的 shell或进程设置此变量有效。格式$ variable-name(变量名)=value(所赋的值)或 $ { variable -name =value }注:使用变量时,如果用花括号将之括起来,可以防止 shell误解变量值。变量设置时的不同模式:[外链图片转存失败,源站可能有防盗链

2021-01-16 12:41:13 329

原创 C++引用和运算符重载

目录创建引用变量将函数作为引用参数将引用用于结构引用应用于类对象引用应用于运算符重载何时使用引用参数为什么引入运算符重载?重载运算符的定义和使用重载限制创建引用变量C++和C都用&符号来表示变量的地址。C++给&符号赋予了另一个含义,将其用来声明引用。例如:int rats int & rodents=rats // make rodents an alias for rats(给rats取一个别名)&不是地址操作符,而是类型标识符的一部分,将rodents的类

2020-11-28 17:31:22 5083 2

原创 数据库SQLyog之多表查询

创建表我们先创建三个表,之后的查询均以这三个表为例[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NbltapwW-1601602301029)(en-resource://database/1787:1)]根据如图所示的字段及属性建立三张表,建立过程省略。注意sno,cno,在每张表中的格式要一致,就是我们所说的学号和课程号是固定的,一个学生只能有一个学号,一个课程只能有一个课程号。插入后的数据格式如下(可以自行改变):course:score表:stude

2020-10-02 09:45:51 2993

原创 LINUX下的C编程(Emacs、GCC、Gdb、Makefile)

目录文本编辑器Gcc编译器Gdb调试器的使用Makef工程管理器文本编辑器Linux 系统提供了一个完整的编辑器家族系列,如 Ed、Ex、Vi 和 Emacs 等。按功能它们可以分为两大类:行编辑器(Ed、Ex)和全屏幕编辑器(Vi、Emacs)。行编辑器每次只能对一行进行操作,使用起来很不方便。而全屏幕编辑器可以对整个屏幕进行编辑,用户编辑的文件直接显示在屏幕上,从而克服了行编辑的那种不直观的操作方式,便于用户学习和使用,具有强大的功能。vi编辑器的使用(vim)命令格式:vi 文件路径

2020-09-26 16:46:00 507

原创 数据库之表的基本操作操作(SQLyog)

目录表的创建表中字段的修改表中数据的基本操作插入数据更新数据删除表中数据表的创建分别创建bank表、admin表、customer表、cus_remarks表、deposite表命令格式:CREATE TABLE [IF NOT EXISTS] `表名`( '字段名' 列类型 [属性] [索引] [注释], '字段名' 列类型 [属性] [索引] [注释], ...... '字段名' 列类型 [属性] [索引] [注释] )

2020-09-23 17:00:36 2929 1

原创 LINUX和UNIXshell编程之find和xargs

目录为什么使用findfind命令选项使用find的name选项使用find的perm选项使用find的user、nouser选项使用find的group和nogroup选项使用find按照更改时间查找文件find命令之type选项find 命令之size选项find之depth选项find之mount选项find使用exec或ok来执行shell命令find使用xargs为什么使用find有时可能需要在系统中查找具有某一特征的文件 (例如文件权限、文件属主、文件长度、文件类型等等)。这样做可能有很多原

2020-09-17 09:10:38 181

原创 计算机网络之数据链路层基础概念详解

数据链路层思想相关概念术语数据链路层在网络中的地位我们知道,两个主机之间的数据 传输,总是在一段一段的链路上传送的,也就是说,在两个相邻结点之间(主机和路由器之 间或两个路由器之间)传送数据是直接传送的(点对点)。这时就需要使用专门的链路层的 协议。在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧 (framing),在两个相邻结点间的链路上“透明”地传送帧(frame)中的数据。每一帧包括数据 和必要的控制信息(如同步信息、地址信息、差错控制等)。H2发送数据时,从协议的

2020-09-14 15:16:32 3099 2

原创 LINUX/UNIXshell编程之文件权限和文件安全

目录文件属性权限修改符号模式进行修改绝对模式suid和guidchown和chgrpumask硬链接和符号链接Hard Link (实体链接, 硬式连结或实际连结)Symbolic Link (符号链接,亦即是快捷方式)文件属性使用ls -l查看文件总用量 12 ls -l-rw-rw-r--. 1 adminxu adminxu 51 5月 28 13:23 commonfile-rw-rw-r--. 1 adminxu adminxu 650 1月 26 2005 regular_

2020-09-05 10:16:30 171

原创 C语言指针和数组详讲

目录一维数组数组名下标引用数组和指针多维数组多维数组存储顺序多维数组数组名与下标作为函数参数的数组检测及练习一维数组数组名int a;int b[10]在c中,在几乎所有使用数组名的表达式中,数组名的值是一个指针常量,也就是数组第1个元素的地址(要注意数组名在这里指的是一个地址)。它的类型取决于数组元素的类型:如果它们是int类型, 那么数组名的类型就是“指向int的常量指针”;如果它们是其他类型,那么数组名的类型就是“指 向其他类型的常量指针”。同时,还要注意这并不代表数组就等同于指针,数组有

2020-08-23 18:36:14 304

原创 计算机网络分层协议及各层功能

目录什么是协议协议分层协议分层模型TCP/IP协议各层功能报文,报文段,数据报,帧什么是协议我们先以人类活动来进行类比例如,当你想要向某人询问一天的时间时,将怎样做? 图1-2中显示了一种典型的交互过程。人类协议(或者至少说是好的行为方式)要求一方首先 进行问候(图1-2中的第一个“你好”),以开始与另一个人的通信。对这个“你好”的典型响 应是返回一个“你好”报文。此人用一个热情的“你好”进行响应,这隐含着能够继续向那 人询问时间了。对最初的“你好”的不同响应(例如,“不要烦我! ”,或“我不会

2020-08-23 01:43:00 4395

原创 51单片机DS18B20温度传感器原理及实验

目录DS18B20简介外部结构内部结构数据温度的读取实验程序实现附DS18B20简介DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线(单总线)”接口的温度传感器。与传统的热敏电阻等测温元件相比,它是一种新型的体积小、适用电压宽、与微处理器接口简单的数字化温度传感器。特点1、适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电。2、独特的单线接口方式,DS18B20 在与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。3、D

2020-08-19 19:53:05 16387 1

原创 C语言递归(栈与递归)

为什么引入递归一个比较浅显点的可能认为递归是无限循环而已,自己用循环完全可以代替。递归之所以现在还存在是因为递归可以产生无限循环体,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来解递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归递归函数递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归三个要素函数功能:明确递归函数的功能有助于理解为什么使用递归执行以及递归过程结束条件:这个

2020-08-19 18:27:24 2530 2

原创 51单片机EEPROM-IIC概念及实验

目录I2C介绍I2C 内部结构I2C 协议层(I2C实现原理)总线的寻址方式数据传输软件模拟I2C典型信号模拟实验内容程序实现附录:I2C介绍I2C(Inter-Integrated Circuit)总线是由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I2C 总线只有两根双向信号线。一根是数据线 SDA,另一根是时钟线 SCL。由于其管脚

2020-08-12 15:24:03 1332

原创 C语言常见易混易犯错误(C语言陷阱与缺陷前三章基础内容总结)

目录概览C语言陷阱与缺陷之词法陷阱=不同于==词法分析中的“贪心法”字符与字符串C语言陷阱与缺陷之语法陷阱运算符优先级问题作为语句结束标志的分号switch语句悬挂else引发的问题C语言陷阱与缺陷之语义陷阱指针和数组非数组的指针(字符串数组的使用及动态分配)作为参数的数组声明指针混淆边界问题概览C语言陷阱与缺陷之词法陷阱=不同于==比较运算误写为赋值运算while(c=' '|| c=='/t'||c=='/n')c=getc(f);如上例代码,原来应该为c==’ '为判断,但是改为

2020-08-05 23:14:40 438

原创 51单片机定时器中断实验

附:中断基本概念定时器相关内容CPU时序的有关知识①振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)。②状态周期:2 个振荡周期为 1 个状态周期,用 S 表示。振荡周期又称 S 周期或时钟周期。③机器周期:1 个机器周期含 6 个状态周期,12 个振荡周期。即机器周期=6个状态周期=12个震荡周期。④指令周期:完成 1 条指令所占用的全部时间,它以机器周期为单位。外接晶振为 12MHz 时,51 单片机相关周期的具体值为:振荡周期=1/12us;状态周期=1/6

2020-08-04 10:52:08 5193

原创 51单片机外部中断点亮LED灯

中断基本概念外部中断软件设计原理中断发生的三个条件①中断源有中断请求;②此中断源的中断允许位为 1;③CPU 开中断(即 EA=1)。比如我们配置外部中断 0,对应的配置程序如下:EA=1;//打开总中断开关EX0=1;//开外部中断 0IT0=0/1;//设置外部中断的触发方式(下降沿触发)如果要配置的是外部中断 1,只需将 EX0 改为 EX1,IT0 改为 IT1在编写程序时通常我们会将外部中断的配置放到一个自定义函数内便于管理维护。如下伪代码所示:void Int0In

2020-08-02 15:44:14 12979 1

原创 51单片机中断基本概念

问题引入在了解基本概念之前,先看三个问题:1.你想使用的中断是哪个?2.你所希望的触发条件是什么?3.你希望在中断之后做什么?可以边看边思考,文章最后给出答案中断概念为什么引入中断?中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。中断系统特点:①分时操作。CPU 可以分时为多个 I/O 设备服务,提高了计算机的利用率;②实时响应。CPU 能够及时处理应用系统的随机事件,系统的实时性大大增强;③可靠

2020-07-31 10:11:47 7855 1

原创 51单片机直流电机实验

直流电机实验直流电机5v直流电机为例:轴长:8mm轴径:2mm电压:1-6v参考电流:0.35-0.4A(电流无正负之分,两端加上直流电即可工作)3v 转速:17000-18000 转每分钟外观实物图如下:ULN2003简介1.ULN2003 是一个单片高电压、高电流的达林顿晶体管阵列集成电路。它是由7 对 NPN 达林顿管组成的,它的高电压输出特性和阴极箝位二极管可以转换感应负载。单个达林顿对的集电极电流是 500mA。达林顿管并联可以承受更大的电流。此电路主要应用于继电器驱

2020-07-30 17:03:00 3030 3

原创 操作系统进程的同步与互斥及经典同步与互斥问题

这里写目录标题概览临界区临界区的引入临界区的概念进程的同步与互斥的概念解决方法经典同步与互斥问题概览临界区临界区的引入在系统当中,有些资源允许多个进程共享(磁盘),有些资源只允许进程单独使用(打印机,共享变量)。为了让进程单独使用资源而不受其他进程干扰引入了临界区的概念。临界区的概念在一段时间内只允许一个时间段使用的资源成为临界资源,每个进程访问资源的那段程序称为临界区。如图进程访问临界区的一般结构1.进入区:检查临界资源是否已经被访问,如果临界资源已经被访问,该进程不能进入。2.临界

2020-07-28 17:54:07 2766

原创 51单片机之LED点阵

LED点阵LED 点阵是由发光二极管排列组成的显示器件,在我们日常生活的电器中随处可见,被广泛应用于汽车报站器,广告屏等。通常应用较多的是 8* 8 点阵,然后使用多个 8 * 8 点阵可组成不同分辨率的 LED点阵显示屏,比如 16* 16 点阵可以使用 4 个 8* 8 点阵构成。因此理解了 8* 8LED点阵的工作原理,其他分辨率的 LED 点阵显示屏都是一样的。这里以 8* 8LED 点阵来做介绍。发光原理8* 8 点阵共由 64 个发光二极管组成,且每个发光二极管是放置在行线和列线的交

2020-07-24 17:08:25 5237 1

原创 51单片机独立按键和矩阵按键实现

这里写目录标题独立按键实验矩阵按键实验独立按键实验按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时,开关断开。我们开发板上使用的按键及内部简易图如下图所示[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DuBXasxu-1595163401826)(en-resource://database/1050:1)]管脚与管脚之间(注意是距离)距离长的是导通状态,短的是接通状态。通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号如下图所

2020-07-19 20:58:15 3139

原创 数据结构之排序(C语言实现,插入,希尔,归并,快排)

文章目录排序插入排序希尔排序归并排序排序插入排序算法实现:直接插入排序是一种最简单的插入排序。插入排序:每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,知道全部插入完成。从其他文章上看到一个很好的打牌的例子。假设你有6,5,3,7,4张牌,从5开始移动,第一趟移动一次,将5置于6前(56374),第二趟从3开始移动,移动两次移动到5之前(35674),第三趟7比6大不移动,第四趟4移动3次到5之前,好了连就凑好了。可以看出,n个数就需要排n-1趟。假设一组数中,有N个

2020-07-19 10:54:21 490

转载 GITHub打不开或加载慢解决

亲测有效请先打开这篇文章:github打不开解决里面只要按照文章里面的把那三个地址记下来,除了静态地址,其他两个地址是不一样的,需要点进去上面的连接查一下,那个地址的链接点进去就会有,文章里说的很清楚,记下来就可以了。这里补充一下怎样找到hosts文件并修改。1.按照这个文件路径:C:\Windows\System32\drivers\etc2.找到后右键打开方式选择记事本形式打开3.然后界面拉到最后,复制粘贴下面内容140.82.114.3 github.com199.232.69.194

2020-07-17 09:59:11 444

原创 51单片机静态数码管和动态数码管原理及实验

数码管实验数码管多位数码管,即是两个或两个以上单个数码管并列集中在一起形成一体的数码管。当多位一体时,它们内部的公共端是独立的,而负责显示什么数字的段线全部是连接在一起的,独立的公共端可以控制多位一体中的哪一位数码管点亮,而连接在一起的段线可以控制这个能点亮数码管亮什么数字,通常我们把公共端叫做“位选线”,连接在一起的段线叫做“段选线”有了这两个线后,通过单片机及外部驱动电路就可以控制任意的数码管显示。一般一位数码管有10个引脚,二位数码管也是10个引脚,四位数码管是12个引脚。为了更方便区分段选和

2020-07-13 00:46:37 8992 1

原创 51单片机蜂鸣器

蜂鸣器实验蜂鸣器蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压) , 多谐振荡器起振, 输出1.5~5kHZ的音频信号, 阻抗匹配器推动压电蜂鸣片发声。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜

2020-07-10 23:45:01 10175 2

原创 51单片机LED点灯实验(闪烁,点亮,流水灯)

led点亮工作原理如图,二极管阳极连接电阻,二极管阴极连接单片机引脚。D0对应P20,D1对应P21,,,,,,,都通过P2孔进行控制。二极管:电源正极连接到二极管阳极,负极连接到阴极,二极管正常工作。所以,原理图中,引脚为低电平,连接的是二极管的阴极,阳极通过与电阻连接,电阻连接的是高电平,所以二极管正常工作。电阻的作用为保护二极管。程序编写#include"reg52.h"sbit LED=P2^0; /*sbit用于定义变量。LED为自定义变量。将P2.0(注意不要写成P2.0,应

2020-07-08 01:11:53 10426 2

原创 单片机GPIO基本概念

概念GPIO(general purpose intput output)是通用输入输出端口的简称,可以通过软件来控制其输入和输出。51 单片机芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、 控制以及数据采集的功能。过 GPIO 最简单的应用还属点亮 LED 灯了,只需通过软件控制 GPIO 输出高低电平即可。当然GPIO 还可以作为输入控制,比如在引脚上接入一个按键,通过电平的高低判断按键是否按下。GPIO引脚单片机型号STC89C52 或 STC89C516有40个引脚。哪些是GP

2020-07-07 23:04:13 5509

原创 操作系统进程线程基本概念梳理

主要内容进程为什么引入进程?最开始的操作系统是单道批处理的(一个程序处理完,再处理下一个程序)而IO是低速的,就会出现cpu要等待IO的情况;从而降低了实际效率。后来就引入多道批处理;而程序在执行的过程中又会因为共享资源而导致程序在执行的过程中相互限制;所有后来引入进程用来给程序提供一个抽象的概念,他能申请多道系统资源并且独立给程序提供资源,从而解决原来的程序之间因为资源共享而相互限制的问题。这样就可以提高系统资源的利用率以及系统的处理能力。引入进程模型,目的就是为了满足多道编程(程序的并发执行

2020-06-29 00:55:11 208

原创 avl树(带有平衡条件的二叉查找树)—C

文章目录二叉查找树avl树的创建代码实现(递归)代码测试二叉查找树如图为二叉查找树:1.左子树的所有节点小于根节点2.右子树的所有节点大于根节点3.左右子树均为二叉查找树关于二叉查找树的创建可以参考下面这个文章:二叉查找树的创建和基本操作—c语言引入avl树的原因:二叉查找树的特点就是能够快速查找数据,如上图,若查找2,则从左子树开始查找,若查找8,则从右子树查找。所以说,二叉查找...

2020-04-26 23:24:14 146

原创 二叉查找树的创建和基本操作—c语言

二叉查找树:1.左子树的所有节点小于根节点2.右子树的所有节点大于根节点3.左右子树均为二叉查找树思想:1.各种操作均利用递归来实现2。基本操作有创建,插入,删除,查找元素,最大值最小值这里对删除操作进行解释删除:(1)若所要删除的节点为叶子结点(没有孩子),直接删除该节点。(2)若所要删除的节点有一个孩子结点,则孩子结点代替所要删除的节点。以左孩子为例:(3)当所删节点有两个...

2020-04-22 00:01:41 896

原创 表达式二叉树构造和遍历(C)

文章目录思想代码实现思想1.将输入的中缀表达式转化为后缀表达式。2.用后缀表达式构造表达式二叉树。3.检验二叉树是否创建成功。采用的是递归遍历,三种常规遍历先中后序遍历。4.后缀表达转换:优先级±</<^<(),当a中的字符为数字时直接放入b,为运算符时根据优先级入栈(S1),优先级高的位于栈顶。()运算符较为特殊,当遇到左括号时入栈,直到遇到右括号才出栈,且出栈是括...

2020-04-06 21:13:19 935 1

原创 数据结构之循环队列(C语言实现)

#include<stdio.h>#include<stdlib.h>typedef struct QueueRecord { int Capacity; int Front; int Rear; int* array;}*Queue;int IsEmpty(Queue Q);//判断队是否为空int IsFull(Queue Q)...

2020-04-03 10:45:53 140

原创 栈的应用:中缀转后缀(逆波兰)实现简易计算器(C)

思想:1.先将字符串的中缀白表达式转化为后缀表达式,然后利用后缀表达式将数字字符串转为整型,利用后缀表达式进行计算。2.实现步骤:首先需要创建两个栈,一个栈(s1)存放字符串,一个栈(s2)存放浮点数,两个数组a,b。进行中缀转后缀的过程时,先将输入的字符串存入数组a中,从a中抽取字符,经过转换(转换过程利用栈S1)存入数组b中。进行后缀的计算时,从b中抽取字符,将数字字符转化为整型,利用栈S...

2020-03-27 17:21:47 183

原创 C语言栈的实现(链表和数组)

文章目录思想链式栈数组栈参考书籍思想思想:1、栈模型:基本操作有Push(入栈)和Pop(出栈),元素符合先进后出,即最先入栈的元素最后出栈。2、链式:主要以链表的形式构成一个栈。入栈即是采用头插法构造链表(符合先进后出),出栈只要遍历链表即可,并记录栈顶元素。最后将链表释放。3、数组:首先我们可以直接使用数组(array)构造栈,利用top(初始化为-1),元素进栈则top+1,arr...

2020-03-23 18:46:58 356

原创 链表实现基数排序(C语言)

基数排序

2020-03-21 19:00:43 860

原创 C语言神奇的指针——对指针的理解

是自己对指针的理解,希望对大家有用:指针

2020-03-11 18:21:17 219

原创 链表实现多项式相加(C语言)

参考有浙江大学的慕课:浙江大学慕课基本思路(如图):代码实现:其中排序方式使用的是冒泡排序(时间复杂度O(n^2))相对其他排序方式更容易理解,也可以使用其他排序方式。最近看了一片介绍用链表实现排序方式比较详细的博客,可以参考。链表排序#include<stdio.h>#include<stdlib.h>#define LENGTH sizeof(struc...

2020-03-11 18:09:30 3937 1

原创 数据结构链表的基本操作(c语言)

这里有一篇在知乎上写的文章,不想复制粘贴了,请谅解。链表基本操作

2020-03-11 17:39:48 161

空空如也

空空如也

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

TA关注的人

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