
学习记录
qq_1061856980華仔
这个作者很懒,什么都没留下…
展开
-
嵌入式学习历程【2】 Linux的基本命令
在掌握Linux的命令之前,有必要先了解Linux的目录结构/: 根目录(只放目录,不存放文件)/bin 可执行的二进制目录文件(针对所有用户)/boot 存放Linux系统启动时使用的文件/dev 设备文件目录/etc 操作系统的配置文件目录/home 系统默认的用户目录,新增用户账户时,用户的家目录都在该目录下/root 系统管理员目录(区别于home)/sbi原创 2017-11-06 21:26:37 · 289 阅读 · 0 评论 -
【C++学习历程4】面向对象模型、new和delete
new与delete的用法 1、在软件开发过程中,常常需要动态地分配和撤销内存空间。在C语言中是利用库函数malloc和free来分配和撤销内存空间的。C++提供了较简便而功能较强的运算符new和delete来取代malloc和free函数。 注意: new和delete是运算符,不是函数,因此执行效率高。2、虽然为了与C语言兼容,C++仍保留malloc和free函数,但建议用户不用ma原创 2018-01-10 23:29:42 · 293 阅读 · 0 评论 -
【C++学习历程5】运算符重载
什么是运算符重载 所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是”一名多用”。运算符也可以重载。实际上,我们已经在不知不觉之中使用了运算符重载。例如,大家都已习惯于用加法运算符”+”对整数、单精度数和双精度数进行加法运算,如5+8, 5.8 +3.67等,其实计算机对整数、单精度数和双精度数的加法原创 2018-01-12 11:31:25 · 222 阅读 · 0 评论 -
【C++学习历程6】继承和派生
什么是继承 1、类之间的关系 包含关系 has-A 使用关系 use-A 继承关系 is-A继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。被继承的类称为父类或基类,继承的类称为子类或派生类。 派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。原创 2018-01-15 21:00:28 · 185 阅读 · 0 评论 -
【c++学习历程7】多态
什么是多态 多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。C++中的多态性具体体现在运行和编译两个方面。运行时多态是动态多态,其具体引用的对象在运行时才能确定。编译时多态是静态多态,在编译时就可以确定对象使用的形式。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时原创 2018-01-15 23:17:18 · 252 阅读 · 0 评论 -
【C++学习历程1】C到C++的过渡
C与C++的区别 1、C语言是面向过程编程,自顶向下、自左向右; C++是面向对象编程(概念型特点,暂时还不懂)2、 3、面向对象的编程特点 将现实世界中的事物直接映射到程序中,可直接满足用户需求 特点: *直接分析用户需求中涉及的各个实体 *在代码中描述现实世界中的实体 *在代码中关联各个实体协同工作解决问题优势: *构建的软件能够适应用户需求的不断变化原创 2018-01-05 23:21:13 · 1701 阅读 · 0 评论 -
【C++学习历程3】对象的构造和析构
一、构造函数 1、C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数。 这句话中我们可以提前出两个信息:1构造函数的函数名可以和类名相同 ;2构造函数是类的成员 。其次,构造函数在定义时可以有参数;而且没有函数返回值。 2、作用:初始化对象 3、时间:构造函数一般情况下,不需要手动调用,系统自动调用:初始化对象的时候调用二、析构函数 1、C++中的类可原创 2018-01-08 22:23:13 · 731 阅读 · 0 评论 -
写一个函数找出一个整数数组中第二大的数
如果是面试遇到这种类型的题,一定要多考虑一下了,毕竟题目不难,如果直接用排序去解题的话,面试官估计会比较失望了。因为这种类型的题,解法有很多,那么别人当然是希望得到最高效的解法了。试想如果有一万个数,如果用排序解答,是不是就浪费了大量的资源去将那些并不重要的数进行了排序。#include void find(int a[], int len){ int max, second原创 2018-01-25 23:22:18 · 5486 阅读 · 1 评论 -
【C++学习历程2】初步理解C++的类和对象
从C过渡到C++必须要先学会思维的转换,从面向过程的程序设计思想转换到面向对象的程序设计十分重要。 面向过程是“先功能后数据”的思想。而面向对象是把状态(数据)和行为(功能)捆绑在一起,形成对象。当遇到一个问题时,我们只需要将一个系统分解为一个个的对象,同时将状态和行为封装在对象中。面向对象总的来说具备三个基本特点: 封装 继承 多态什么是类 类是面向对象程序设计的核心,它实际是原创 2018-01-07 23:50:20 · 312 阅读 · 0 评论 -
【C++学习历程8】函数模板和类模板
什么是函数模板 所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。 凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。定义:template <类型形式参数表>例如:template <typenam原创 2018-01-19 20:58:06 · 227 阅读 · 0 评论 -
【C++学习历程9】异常与文件操作
类型转换什么是异常 1)异常是一种程序控制机制,与函数机制独立和互补 函数是一种以栈结构展开的上下函数衔接的程序控制系统,异常是另一种控制结构,它依附于栈结构,却可以同时设置多个异常类型作为网捕条件,从而以类型匹配在栈机制中跳跃回馈. 2)异常设计目的: 栈机制是一种高度节律性控制机制,面向对象编程却要求对象之间有方向、有目的的控制传动,从一开始,异常就是冲着改变程序控制结构,原创 2018-01-20 00:05:20 · 390 阅读 · 0 评论 -
【嵌入式学习历程14】Linux进程间通信(2)
信号 1、什么是信号量 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行进程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个进程在访问它,也就是说信号量是用来调协进程对共享资源的访问的。 信号量是一个特殊的变量,程序对原创 2017-12-07 21:51:53 · 186 阅读 · 0 评论 -
【嵌入式学习历程14】Linux进程间通信(1)
一个大型的应用系统,往往需要众多进程协作,进程间通信的重要性显而易见。**进程间通信的目的***数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间*共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。*通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。*资源共享:多个原创 2017-12-07 14:05:16 · 274 阅读 · 0 评论 -
【嵌入式学习历程15】多线程编程
什么是线程 线程是进程中执行运算的最小单位,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。线程自己基本不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。线程和进程的区别与联系 1、进程和线程的主原创 2017-12-09 22:12:41 · 2632 阅读 · 0 评论 -
【嵌入式学习历程7】 数据结构之线性表
一、什么是线性表1. 定义n个数据元素的有限序列,记作(a1, a2, …, an)ai 是表中数据元素,n 是表长度。2. 特点: 除第一个元素外,其他每一个元素有一个且仅有一个 直接前驱。 除最后一个元素外其他每一个元素有一个且仅有一个 直接后继。3.线性表包含顺序表和链表。其中顺序表是连续的,而链表是不连续的。二、顺序表的定义和特点定义 :将线原创 2017-12-02 21:08:13 · 246 阅读 · 0 评论 -
【嵌入式学习历程8】数据结构之链表
记得以前上C语言课的时候,只要提到链表,脑海里就只有两个词,一是高大上,二是难。今天让我们来看看链表到底是何方神圣。高手还请多多指教!(注:今主要讨论单链表。链表分为单链表、静态链表、循环链表和双向链表)一、定义:链表是线性表的链接存储表示二、特点:每个元素(表项)由结点(Node)构成。1. 结点可以连续,可以不连续存储2. 结点的逻辑顺序与物理顺序可以不一致3. 表原创 2017-12-02 22:55:14 · 438 阅读 · 0 评论 -
【嵌入式学习历程9】数据结构之栈
首先, 这里的栈并不是内存中用来存放数据的那个栈。栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入原创 2017-12-02 23:35:34 · 312 阅读 · 1 评论 -
【嵌入式学习历程10】数据结构之队列
前面 我们讲了栈,知道栈有顺序存储和链式存储两种方式,今天的主角--队列也是一样的。我们先来理清队列的概念:1、队列是特殊的线性表;队列仅在线性表两端进行操作;队头(Front):取出数据的一端;队尾(Rear):放入数据的一端;2、性质:先进先出(FIFO)3、顺序队列(一般采用循环队列)规定front指针指向队头元素,rear指针指向队尾元素的下一个位置原创 2017-12-03 10:55:57 · 343 阅读 · 0 评论 -
【嵌入式学习历程16】Linux网络编程(TCP篇)
什么是TCP/IP TCP/IP 实际上一个协同工作的通信家族,为网络数据通信提供通路。为讨论方便可TCP/IP 协议组大体上分为三部分: 1、Internet 协议(IP) 2、传输控制协议(TCP)和用户数据报协议(UDP) 3、处于 TCP 和 UDP 之上的一组应用协议。它们包括:TELNET,文件传送协议(FTP),域名服务(DNS)和简单的邮件传送程序(...原创 2017-12-10 22:40:54 · 1168 阅读 · 0 评论 -
【嵌入式学习历程17】Linux网络编程(UDP篇)
什么是UDP UDP即用户数据报协议,它是一种无连接的协议,因此不需要像TCP那样通过三次握手来建立一个连接。同时,一个UDP应用可同步作为应用的客户或服务器方。由于UDP协议并不需要建立一个明确的连接,因此建立UDP应用要比建立TCP应用简单的多。 UDP在数据传输过程中延迟小、数据传输效率高,适合可靠性要求不高的应用程序,或可以保障可靠性的应用程序。通常音频、视频和普通数据在传送时使用UDP原创 2017-12-13 21:58:57 · 2342 阅读 · 0 评论 -
【嵌入式学习历程11】数据结构之二叉树
树的概念 树(Tree)是n(n>=0)个结点的有限集。n=0的时候称为空树,在任意一颗非空树中:(1)有且仅有一个特定的称为根(root)的结点;(2)当n>1时,其余结点可以分为m(m>0)个互不相交的有限集T1、T2、T3…..Tm,其中,每一个集合本身又是一棵树,并且称为跟的子树。 * 结点 树的结点包含一个数据元素及若干个指向其子树的分支。 *度 结点拥有的子树称为结点的度。原创 2017-12-05 23:19:20 · 481 阅读 · 0 评论 -
【嵌入式学习历程12】Linux文件编程
Linux下皆文件,短短几个字就道出了文件系统在Linux下的重要性。在Linux操作系统中,它对一切资源的管理归根到底都是对文件的操作。 大背景 在现代操作系统中,要利用大量的程序和数据,由于内存容量有限,且不能长期保存,于是人们想出了把这些数据以文件的形式放在外存中,需要的时候再将它们调入内存,从此就有了文件系统,它负责管理外存上 的文件,并把存取、共享和保护等手段提供给用户,这样就方便了用原创 2017-12-06 20:48:57 · 275 阅读 · 0 评论 -
【嵌入式学习历程13】Linux进程控制编程
什么是进程 *标准定义:进程是可并发执行的程序,是在一个数据集合上的运行过程。 *通俗地讲:大家都知道,硬盘上的一个可执行文件经常被称为程序,在Linux系统中,当一个程序开始执行后,在开始执行到执行完毕退出这段时间里,它在内存中的部分就被成作一个进程。 *进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元; 程序与进程 *程序是放到磁盘的可执行文件 进程是指程序原创 2017-12-06 21:03:19 · 1148 阅读 · 0 评论 -
【C++学习历程10】STL标准模块库
初步理解STL STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。 STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。 **优原创 2018-01-20 13:30:41 · 301 阅读 · 0 评论