自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式简述

所谓设计模式,是一套被反复使用、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性。设计模式使代码编制真正工程化。模式:在一定环境中解决某一问题的方案,包括三个基本元素--问题,解决方案和环境(固定套路)。 设计模式的分类创建型模式通常和对象的创建有关,涉及到对象实例化的方式。(共5种模式)1,工厂方法模式(Factory...

2018-08-16 21:14:14 589

转载 TCP协议三次握手和四次挥手

1、三次握手(1)三次握手的详述首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。  最初两端的TCP进程都处于CLOSED关闭状态,A主动打开连接,而B被动打开连接。(A、B关闭状态CLOSED——B收听状态LISTEN——A同步已...

2018-08-10 16:59:53 170

转载 系统调用和库函数

一. 概念系统调用(英语:system call),指运行在用户空间的应用程序向操作系统内核请求某些服务的调用过程。 系统调用提供了用户程序与操作系统之间的接口。一般来说,系统调用都在内核态执行。由于系统调用不考虑平台差异性,由内核直接提供,因而移植性较差(几乎无移植性)。库函数(library function),是由用户或组织自己开发的,具有一定功能的函数集合,一般具有较好平台移植性,...

2018-08-09 20:17:35 248

转载 内核的整体架构简介(Linux)

1.注:本文和其它的“Linux内核分析”文章都基于如下约定:  a) 内核版本为Linux 3.10.29(该版本是一个long term的版本,会被Linux社区持续维护至少2年),可以从下面的链接获取:https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.29.tar.xz b) 鉴于嵌入式系统大多使用ARM处理器,因此涉及到体系...

2018-08-08 10:37:16 200

原创 10.STL标准模板库(下)

算法 算法部分主要由头文件<algorithm>,<numeric>和<functional>组成。 <algorithm>是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等等。 <numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和...

2018-08-07 21:16:14 176

原创 9.STL标准模板库(上)

STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传...

2018-08-06 15:32:07 107

转载 进程中的信号量对于与线程中的互斥量(互斥锁)

信号量与互斥锁 信号量与普通整型变量的区别:①信号量(semaphore)是非负整型变量,除了初始化之外,它只能通过两个标准原子操作:wait(semap) , signal(semap) ; 来进行访问;②操作也被成为PV原语(P来源于Dutch proberen”测试”,V来源于Dutch verhogen”增加”),而普通整型变量则可以在任何语句块中被访问;信号量与互斥锁之间的...

2018-08-05 21:25:48 387

原创 8.异常与文件

类型转换C语言中的强制类型转换是不推荐的,因为任何类型都能强制转换,这就可能导致出现很多问题,所以c++提供了四个关键字来进行类型转换。static_cast<T>(expr)——用于基本类型间的转换,但不能用于基本类型指针间的转换——用于有继承关系类对象之间的转换和类指针间的转换 reinterpret_cast<T>(expr) ——用于指针类型...

2018-08-04 10:41:02 193

转载 select函数

select函数:  系统提供select函数来实现多路复用输入/输出模型。原型:  #include <sys/time.h>  #include <unistd.h>  select函数:  系统提供select函数来实现多路复用输入/输出模型。原型:  #include <sys/time.h>  #include <un...

2018-08-03 21:31:24 3930

转载 虚函数表介绍

多态是由虚函数实现的,而虚函数主要是通过虚函数表(V-Table)来实现的。如果一个类中包含虚函数(virtual修饰的函数),那么这个类就会包含一张虚函数表,虚函数表存储的每一项是一个虚函数的地址。如下图:这个类的每一个对象都会包含一个虚指针(虚指针存在于对象实例地址的最前面,保证虚函数表有最高的性能),这个虚指针指向虚函数表。注:对象不包含虚函数表,只有虚指针,类才包含虚函数表...

2018-08-02 09:59:36 478

转载 c++中 .h 和 .hpp 文件

hpp文件是将cpp文件混入h头文件中,在hpp文件内,实现与定义都包含在了同一个文件中,所以,该类的调用者只需要include这个hpp文件即可,无需再将cpp文件加到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不在生成单独的obj文件,采用hpp文件将大幅度减少调用project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll文件,所以非常适合用来编写公开...

2018-08-01 21:01:59 1351

原创 7.函数模板和类模板

   C++提供了函数模板(function template)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。 1)C++提供两种模板机制:函数模...

2018-08-01 20:53:47 235

原创 6.多态

如果子类定义了与父类中原型相同的函数会发生什么——函数重写 在子类中定义与父类中原型相同的函数函数重写只发生在父类与子类之间 重载与重写区别:重载:同一个作用域;      子类无法重载父类函数,父类同名函数将被覆盖;      重载是在编译期间根据参数类型和个数决定;重写:发生于父类、子类之间;      父类和子类函数有相同的函数原型;      使用virtual关...

2018-07-30 20:53:26 169

原创 5.继承和派生

继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。被继承的类称为父类或基类,继承的类称为子类或派生类。 派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。 以下是两种典型的使用继承的场景:1) 当你创建的新类与现有的类相似,只是多出若干成员变量或成员函数时,可以使用继...

2018-07-29 10:21:27 176

原创 4.运算符重载

什么是运算符重载所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是”一名多用”,运算符也可以重载。1为什么会用运算符重载机制      用复数类举例      Complex c3 = c1 + c2;     原因 Complex是用户自定义类型,编译器根本不知道如何进行加减      编...

2018-07-27 10:15:31 236

原创 Linux开发工具介绍

vi编辑器是Linux系统上常用的文本编辑器vim 是vi的改进版本,增加了很多扩展功能,使之更适合编辑各种程序语言的源代码。vim官方:vim不是文字处理软件,而是程序开发工具 Vi/vim命令模式的分类一般模式(打开vi时默认进入一般模式)    可以移动光标,可以删除文字,可以复制粘贴(通过命令)    命令输入完毕就执行,不需要回车确认。执行完毕后还在一般模式下。   ...

2018-07-26 15:25:14 2484

原创 3.类和对象(下)

1.对象的初始化列表1)对象初始化列表出现原因(1).必须这样做:如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,没有默认构造函数。这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数,如果没有初始化列表,那么他将无法完成第一步,就会报错。 (2)、类成员中若有const修饰,必须在对象初始化的时候,给const ...

2018-07-25 14:28:32 110

原创 2.类和对象(上)

1.什么是面向对象?面向对象是将系统看成通过交互作用来完成特定功能的对象的集合。每个对象用自己的方法来管理数据。也就是说只有对象内部的代码能够操作对象内部的数据。2.面向对象的四大特点:抽象、封装、继承、多态(1) 抽象是人们认识事物的一种方法,抓住事物本质,而不在意内部的具体细节或具体实现。(2) 封装是指按照信息屏蔽的原则,把对象的属性和操作结合在一起,构成一个独立的对象。封装...

2018-07-24 21:21:51 137

原创 Linux常用命令

Linux命令格式:命令名称    选项    参数短选项:-单个字符    例如:ls -a /home      ls -l /home  短选项可以合并:   ls -al /home 或者 ls -a-l /home长选项:- -单个单词  例如:man - -help    长选项不可合并。Linux常用命令:1.用户管理类命令:(1)useradd H    (2)us...

2018-07-19 17:37:30 104

原创 Linux系统

Linux系统结构操作系统内核(kernel):实现操作系统额核心功能:内存管理、进程管理、文件系统管理和设备管理等。系统调用(system call):类似C语言的函数,约两百多个。系统调用是操作系统额最小功能单位,但功能过于简单,使用繁琐。库函数(library):是由系统建立具有一定功能的函数的集合。作用是将系统调用组合成某些常用的功能。Shell(命令解释器——interp...

2018-07-19 17:11:54 152

原创 1.从C语言到C++

C++是C语言的超集,绝大部分C语言程序用C++编译器编译是没问题的。而C和C++的区别在于C是面向过程的语言,C++是面向对象的语言。C++顾名思义就是C plus plus,是在C语言的基础上的加强,这其中就有很多C语言所没有的内容了:1.命名空间(namespace)是C++中为了解决在中大型软件编程中多个程序员编程过程中出现的命名重复问题,让每一位程序员使用不同的命名空间,这样...

2018-07-19 15:38:07 234

空空如也

空空如也

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

TA关注的人

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