自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

欢迎来到我的空间

不积跬步无以至千里,愿与君共勉!

  • 博客(193)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 网络的基本概念

网络模型OSI层模型、TCP/IP的层模型如下所示:TCP/IP:传输控制协议/网络协议OSI:开放式系统互联TCP/IP各层对应的协议如下所示:由模型可知:IP协议:对应于网络层,是网络层的协议,TCP协议:对应于传输层,是传输层的协议,主要解决数据如何在网络中传输。HTTP协议:对应于应用层,是应用层的协议,主要解决如何包装数据。So

2018-01-29 15:40:38 262

原创 C++11 thread 及互斥锁、条件变量

启动的格式:#include //包含头文件void fucntion();//定义一个线程执行的函数thread t1(fucntion);//线程启动这个函数//一创建就自动运行,主线程非阻塞void factorial(int n,char b,..);//带参数的函数,参数的个数顺延thread t2(factorial,5,'a

2018-01-25 21:25:24 3711

原创 C++进程、线程、多线程概念及线程的优缺点

进程:进程是一个正在执行的程序,是向CPU申请资源的,进程之间数据相互独立,一个进程至少有一个线程。线程:线程是进程中的单一的顺序控制流程也可以叫做最小控制单元,线程是进程中执行单元,开启一个线程比开启一个进程更加节省资源。 多线程:多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任

2018-01-25 21:24:39 4365

原创 堆和栈的主要区别

1申请方式和回收方式      stack:   由系统自动分配。  例如,声明在函数中一个局部变量 int b;  系统自动在栈中为b开辟空间      heap:    需要程序员自己申请,并指明大小,在c中malloc函数      如p1   =   (char   *)malloc(10);      在C++中用new运算符      如p2   =

2018-01-23 21:03:20 285 1

原创 程序的内存分配即一个由C/C++编译的程序占用的内存分为以下几个部分

一个由C/C++编译到程序占用的内存分为以下几个部分:1、栈区(stack)——由编译器自动分配释放,在不需要的时候自动清除。用于存放函数的参数、局部变量等。操作方式类似数据结构中的栈(后进先出)。2、堆区(heap)——一般由程序员分配释放,若程序员分配后不释放,程序结束后可能由OS回收。不同于数据结构中的堆,分配方式有些类似链表。3、全局区(静态区)——全局变量和静态变量存

2018-01-23 20:13:24 736

原创 static 全局变量、局部变量、函数与普通全局变量、局部变量、函数区别

全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不

2018-01-23 19:57:51 530

原创 关键字static的作用

static关键字至少有下列n个作用:(1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;(2)限制变量的作用域,在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;(3)限制函数的作用域,在模块内的static函数只可被这一模块内的其它函数调用,这个函数

2018-01-23 19:35:43 251

原创 C++ 异常处理详解

捕获异常:捕获异常的语法为:try{// 可能抛出异常的语句}catch(异常类型){// 处理异常的语句}try 和 catch 都是C++中的关键字,后跟语句块,不能省略“{ }”。try 中包含可能会抛出异常的语句,一旦有异常抛出就会被捕获。从“try”的意思可以看出,它只是“尝试”捕获异常,如果没有异常抛出,那就什么也不捕获。catc

2017-12-13 20:57:58 744

原创 C++ String类 详解

string类的构造函数:string(const char *s);    //用c字符串s初始化string(int n,char c);     //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常 ;

2017-12-13 20:52:15 308

原创 C++ 模板

函数模板:所谓函数模板,实际上是建立一个通用函数,它所用到的数据的类型(包括返回值类型、形参类型、局部变量类型)可以不具体指定,而是用一个虚拟的类型来代替(实际上是用一个标识符来占位),等发生函数调用时再根据传入的实参来逆推出真正的类型。这个通用函数就称为函数模板(Function Template)。例://template 模板关键字 返回值类型 函数名 参数列表

2017-12-12 21:29:17 190

原创 C++运算符重载

运算符重载的概念和语法:运算符也是一种函数,所以运算符重载和函数重载一样,同一个运算符可以有不同的功能。运算符重载的格式为:返回值类型 operator 运算符名称 (形参表列){//TODO:}C++运算符重载的规则:1) 并不是所有的运算符都可以重载。能够重载的运算符包括:+ - * / % ^ & | ~ ! = += -

2017-12-11 21:20:45 275

原创 纯虚函数和抽象类

纯虚函数:在C++中,可以将虚函数声明为纯虚函数,语法格式为:virtual 返回值类型 函数名 (函数参数) = 0;纯虚函数没有函数体,只有函数声明,在虚函数声明的结尾加上=0,表明此函数为纯虚函数。最后的=0并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”。抽象类:包含纯虚函数的类称为

2017-12-11 21:17:50 381

原创 浅谈C++多态

什么是多态:多态性即“一个接口,多种方法”,分为静态的多态和动态的多态。静态的多态在编译期间实现,例如函数的重载。动态的多态在程序执行的期间通过虚函数来实现。并且只有在基类指针指向派生类,而且派生类的虚函数遮蔽基类的虚函数(函数原型相同),这个时候调用虚函数(子类的)才能体现多态。几点要求:(1)只需要在虚函数的声明处加上 virtual 关键字,函数定

2017-12-11 21:16:39 180

原创 引用

引用(Reference)是 C++ 相对于C语言的又一个扩充。引用可以看做是数据的一个别名,通过这个别名和原来的名字都能够找到这份数据。引用类似于 Windows 中的快捷方式,一个可执行程序可以有多个快捷方式,通过这些快捷方式和可执行程序本身都能够运行程序;引用还类似于人的绰号(笔名),使用绰号(笔名)和本名都能表示一个人。定义方式:引用的定义方式类似于指针,只是用

2017-11-22 21:50:42 350

原创 友元函数和友元类

一个类中可以有 public、protected、private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员。现在,我们来介绍一种例外情况——友元(friend)。借助友元(friend),可以使得其他类中的成员函数以及全局范围内的函数访问当前类的 private 成员。友元函数:在当前类以外定义的、不属于

2017-11-22 21:48:46 275

原创 const 关键字

在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量、成员函数以及对象。const 成员变量:const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字。初始化 const 成员变量只有一种方法,就是通过参数初始化表。const 成员函数:const 成员

2017-11-22 21:48:16 230

原创 static 静态成员变量和静态成员函数

static静态成员变量:对象的内存中包含了成员变量,不同的对象占用不同的内存,这使得不同对象的成员变量相互独立,它们的值不受其他对象的影响。有时候我们希望在多个对象之间共享数据,对象 a 改变了某份数据后对象 b 可以检测到。在C++中,我们可以使用静态成员变量来实现多个对象共享数据的目标。静态成员变量是一种特殊的成员变量,它被关键字static修饰。

2017-11-22 21:47:52 282

原创 this指针

this定义:this 是 C++ 中的一个关键字,也是一个 const 指针,它指向当前对象,通过它可以访问当前对象的所有成员。例如:void Student::setname(char *name){this->name = name;}void Student::setage(int age){this->age = age;}

2017-11-22 21:47:02 322

原创 构造函数和析构函数

构造函数(Constructor)定义:在C++中,有一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户显式调用(用户也不能调用),而是在创建对象时自动执行。这种特殊的成员函数就是构造函数(Constructor)。构造函数的规则:(1)构造函数没有返回值,因为没有变量来接收返回值,即使有也毫无用处,这意味着:(a)不管是声明还是定义,函数名前面

2017-11-22 21:45:49 356 1

原创 类和对象

类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。与结构体一样,类只是一种复杂数据类型的声明(有别于普通数据类型在于类这种数据类型,是一个包含成员变量和成员函数的集合),不占用内存空间(所以在定义类时不能对成员变量进行初始化,因为没有地方存储数据)。而对象是类

2017-11-22 21:44:06 270

原创 浅谈C++内联函数

定义:内联函数(Inline Function)指在函数调用处直接嵌入函数体的函数。即在编译时将函数调用处用函数体替换,类似于C语言中的宏展开,又称内嵌函数或者内置函数。指定方式:在函数定义处(不是声明处)增加 inline 关键字。类体内部定义的函数默认就是内联函数。在类体中定义的成员函数会自动成为内联函数,在类体外定义的不会(如果想让其成为内联函

2017-11-21 22:15:17 480

原创 C 和 C++的比较

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)即C是面向过程的。C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制及C++是面向过程的。所以C与C++的最大区别在于它们的用于解决问题的

2017-11-21 22:12:06 601

原创 C++继承详解

继承概念: 是一个很简单很直观的概念,与现实世界中的继承类似。可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。被继承的类称为父类或基类,继承的类称为子类或派生类。派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。使用的场景: 1) 当你创建的新类与现有的类相似,只是多出若干成员变量或成

2017-11-19 22:50:32 498

转载 GLIBCXX_3.4.9' not found - 解决办法

在RHEL5中安装交叉编译器arm-linux-gcc 4.4.3,然后编译mini2440内核出错: /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.9' not found: 在RHEL5中安装交叉编译器arm-linux-gcc 4.4.3,然后编译mini2440内核出错: /usr/lib/libstdc++.so.6: versionG

2017-11-18 21:42:06 919

原创 C++学习笔记 ---- 重载

与返回值类型无关: void show(int){} int show(int){} 错误,同一个函数至少要两个函数;只有一个函数,调用形参不同做类型转换不是重载

2017-11-18 13:36:53 193

原创 文件编程

#include <stdio.h>#include <string.h>int main(){ FILE *file = fopen("./text1", "a+"); if (NULL == file) { perror("fopen"); fclose(file); return 1; } char* s

2017-11-08 16:04:35 249

原创 实现组合的递归算法

#include <stdio.h>#define true 1#define false 0int num[10]; int visit[10]; void dfs_creat(int index) { int i; if(index == 3) //组合的数的个数 { for (i = 0; i < 3; i++) {

2017-11-07 21:46:54 884

原创 实现全排列的递归算法

#include <stdio.h>#define true 1#define false 0int num[10]; //c++直接定义为 bool visit[10] int visit[10]; void dfs(int index) { int i; if(index == 3) { int i; //存放在

2017-11-07 21:22:30 383

原创 struct和typedef struct

在C中定义一个结构体类型要用typedef:    typedef struct Student    {    int a;    }Stu;   声明变量的时候:    Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明)     这里的Stu实际上就是struct Student的别名。Stu==struct Student    另外

2017-11-07 17:06:25 250

原创 修改IP地址失败的解决方法

当Windows操作以太网属性下,修改IP地址不能成功时,可以尝试下面这个方法:第一步:找到Windows下命令控制符,右击 以管理员身份运行 第二步:进入后,输入netsh interface ip set address “以太网” static 192.168.1.129 255.255.255.0(IP地址以192.168.1.129为例) 第三步:输入完后,按下回车键即可。

2017-10-29 14:14:43 10686 2

原创 ARM学习笔记--LCD显示

LCD概述:    LCD(Liquid Crystal Display),即液晶显示器,是一种采用了液晶控制透光度技术来实现色彩的显示器。LCD有多种类型,比如STN、TFT、LTPS TFT、OLED等。    CPU或显卡发出的图像数据是TTL信号,LCD本身接收的也是TTL信号。由于TTL信号在高速率的长距离传输时性能不佳,抗干扰能力也比较差,后来又提出了多种接口,比如LVDS、T

2017-10-29 13:52:18 3284

原创 并行串行通信方式图解

串行数据是各数据位按顺序进行,并行是各数据位同时传送

2017-10-28 15:43:32 1516

原创 ARM学习笔记---中断

中断优先级由高到低51单片机:INT0(P3.2)、TIMER0、INT1(P3.3)、TIMER1、串口中断(P3.0、P3.1)52单片机:TIMER2外部中断下降沿触发内部定时器:TMOD寄存器(M1M0)M1 M0 方式0 0 0 13位0 1 1 16位1 0 2 8 auto1 1 3 两个8位串口{RI->while(RI!)T

2017-10-28 15:28:06 433

原创 ARM学习笔记---串口

串口中断 接收标志RI 发送标志TI4 种串口方式->配置波特率控制器之间发送数据:设置好波特率1.起始位2.数据位3.校验位4.停止位bit 位波特率: 4800bit/s、9600bit/s、115200bit/s ......字节 = 4800/10 (8数据位+起始位+停止位=10)通信方式: UART(串口)、IIC、485

2017-10-28 15:24:48 481

原创 ARM中一些常见英文缩写解释

MSB:最高有效位; LSB:最低有效位; AHB:先进的高性能总线; VPB:连接片内外设功能的VLSI外设总线; EMC:外部存储器控制器; MAM:存储器加速模块; VIC:向量中断控制器; SPI:全双工串行接口; CAN:控制器局域网,一种串行通讯协议; PWM:脉宽调制器; ETM:嵌入式跟踪宏; CPSR:当前程序状态寄存器; SPSR:程序保护状态寄存器;

2017-09-24 21:44:13 1909

原创 通过分频器和乘法器来实现对频率的减倍和倍增效果

通过分屏器实现频率的减倍(可用计数器实现)实现频率的倍增(乘法器)

2017-09-24 21:36:49 1098

原创 嵌入式硬件系统相关知识学习笔记

几个专业名词 app 应用程序 API 应用程序接口 RTOS 实时操作系统 Peripherals 外设 Flash 存储器(闪存) bit 字长 Byte 字节 1 Byte = 8 bit看门狗电路的工作原理? CPU 一直给 WD(Watch

2017-09-24 21:14:55 365

原创 ARM学习笔记(一)

占空比: 高电平占一个周期的百分比串口中的GND作用: 1.保证在同一个电压 2.防止电流回流RTC 即实时时钟 单片机芯片为: 1302通讯协议: UART、IIC、SPI、485 等等ARM的优点: 1、引脚多(IC度高即集成度高) 2、主频高 3、内存大(装操作系统)

2017-09-10 16:35:12 344

原创 关于编译错误--提领指向不完全类型的指针

对于结构体来说虽然所有的变量默认都是公有的,但是,如果想访问里面的成员变量,必须有包含对其结构的定义,否则出现如上的错误,c编译器将无法识别结构里面的变量。一般想操作结构体里的成员变量,都是通过调用结构体中定义的函数接口,来取得结构体中的值,如果想直接访问,在头文件或源文件中加入结构体的定义就行了。

2017-08-12 20:01:47 1209

原创 网络编程服务器与客户端实现代码详解

网络编程服务器客户端代码详解

2017-08-11 20:25:20 777

基于51单片机12864液晶屏的贪吃蛇游戏

基于51单片机12864液晶屏的贪吃蛇游戏,通过红外遥控器控制,可以上下左右移动、暂停、背景音乐、多种难易程度和游戏地图供你选择、华丽滴菜单等,单片机型号为STC15F60S2,内含项目源代码、自己设计的15系列单片机原理图、PCB、项目文档以及项目演示视频照片等。

2018-03-19

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

TA关注的人

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