- 博客(37)
- 收藏
- 关注
原创 数据结构之单链表
数据结构数据(data)是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素(data element)是数据的基本单元,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项(data item)组成。数据项是数据的不可分割的最小单位。数据对象(data object)是性质相同的数据元素的集合,是数据的一个子集。 数据结...
2018-04-13 12:32:56 466
原创 基类指针与派生类指针的互相转换
C++基类指针和派生类指针之间的转换方法讲解函数重载、函数隐藏、函数覆盖函数重载只会发生在同作用域中(或同一个类中),函数名称相同,但参数类型或参数个数不同。 函数重载不能通过函数的返回类型来区分,因为在函数返回之前我们并不知道函数的返回类型。函数隐藏和函数覆盖只会发生在基类和派生类之间。函数隐藏是指派生类中函数与基类中的函数同名,但是这个函数在基类中并没有被定义为虚函...
2019-12-15 17:15:43 1750 1
原创 变量释放
关于C++中局部变量和全局变量的存储位置及内存回收机制Posted on2018-04-10 16:26moisiet 阅读(1736) 评论(0)编辑收藏局部变量,参数变量存放在栈中,当离开作用范围后,分配的内存在作用范围外会被系统自动回收。new出来的内存空间存放在堆中,不受作用域管理,不会被系统自动回收,只有在使用delete删除或者整个程序结束后才会释放内存。...
2019-12-15 15:01:09 569
原创 懒汉式单例用法
2.2.1 有缺陷的懒汉式懒汉式(Lazy-Initialization)的方法是直到使用时才实例化对象,也就说直到调用get_instance() 方法的时候才 new 一个单例的对象。好处是如果被调用就不会占用内存。#include <iostream>// version1:// with problems below:// 1. thread is not sa...
2019-12-15 14:35:56 495
转载 如何理解内网和外网
如何理解内网和外网 内网和外网的区别划分内网和外网的重要依据主要是判断它是不是与广阔的外界相连。 此时我们可以说,局域网就是内网,internet就是外网,当然,内网和外网不是绝对的概念,而是相对的,比如你在一个单位上班,你们单位有个庞大的局域网,你办公室的几台电脑组成小的局域网,那么可以说单位的大局域网是外网,而办公室的小局域网是内网。很好理解对吧我们再来看看内网的疑惑...
2018-10-08 19:36:08 425
原创 C语言--函数
函数(Function)0.引言算法的结构化设计标准函数(库函数)和自定义函数程序从main函数开始,在main函数结束main函数可以调用其他函数,但是其他函数不能调用main函数,main函数是系统调用的。———————————————————————————————————————————————————————————————————————————————————...
2018-08-11 16:03:35 3944
原创 C语言指针
指针1.引言int a;a = 100;int b = a;在C语言里面,同一个变量a,有两层含义1) 左值:代表该变量的存储单元地址2) 右值:代表该变量的值————————————————————————————————————————————————————————————————————————————————————————————————2.指针概念...
2018-08-11 16:00:05 360
原创 数据结构之图
1.定义:图是一种非线性数据结构,形式化描述为Graph = {V,R};其中,V={Vi|Vi属于datatype,i=0,1,2,……n-1}是图中元素Vi(称为顶点vertex)的集合,当n=0时,V为空集。R = {<Vi,Vj> | Vi,Vj,属于V,且Vi,Vj之间存在路径,0<=i,j<=n-1}是顶点之间的关系集,<Vi,Vj>为顶...
2018-08-11 15:54:29 502
原创 队列
队列:栈先进后出,队列先进先出队列:#include<stdio.h>#include<stdlib.h>typedef char ElementType;typedef struct node{ElementType data;struct node *next;}Node; typedef struct list...
2018-08-11 15:52:47 109
原创 栈
栈:栈先进后出,队列先进先出 创建栈:#include<stdio.h>#include<stdlib.h>typedef int ElementType;#define MAX 1024typedef struct stack{ElementType data[MAX];int top;...
2018-08-11 15:51:57 127
原创 树(数据结构)
一:定义:1)有且只有一个称为根的节点;2)有若干个互不相交的子树,这些子树本身也是一颗树;通俗一点讲,树由节点和边组成,每个节点只有一个父节点,但是可以有多个子节点,但有一个节点除外,这个节点没有父节点,此节点称为根节点。 专业术语:节点:父节点:子节点:子孙节点:堂兄弟:深度:从根节点到最底层节点的层数(根节点为第一层,其子节点为第二层……)...
2018-08-11 15:50:47 230
原创 shell编程(2)
Shell编程一定要注意空格的格式,不然会出错 4、测试语句 (1)、字符串相等: == 、=不等: !=字符串是否为空: test -z "" zero 字符串的长度是否为0,如果0就是空字符串是否为非空: test -n "abcd" 这个表示是非空。 命令执行的返回值:如果成立的话,返回0,表示为真。 (2)、数值大...
2018-08-11 15:43:41 245
原创 shell编程
linux命令有内部命令和外部命令之分。内部命令实际上是shell程序的一部分,其中包含的是一些比较简练的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以它们包含的程序量也会很大,在系统加载时并不随系统一起被加载到内...
2018-08-11 15:41:43 270
原创 数据库小项目之通讯录
通讯录: #include<stdio.h>//注意函数不要嵌套,最好模块化;#include<string.h>#include<sqlite3.h>sqlite3 *ppdb;char * errmsg;char sql[32];int ret; int callback(void * a,int argc,char**a...
2018-08-11 15:38:08 672
原创 数据库
数据库 E-R模型1、什么是数据库?数据库是数据的仓库。 (1)、与普通的“数据仓库”不同的是,数据库依据“数据结构”来组织数据,因为“数据结构”,所以我们看到的数据是比较“条理化”的(比如不会跟以前的普通文件存储式存储成一个文件那么不条理化,我们的数据库分成一个个库,分成一个个表,分成一条条记录,(2)、这些记录是多么分明)也因为其“数据结构”式,所以有极高的...
2018-08-11 15:36:10 578
原创 服务器 多客户端
CS架构:第一种:实现一个服务端,多个客户端,能实现客户端与服务端的交互:tcp-fork Server:#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include <arpa/ine...
2018-08-08 22:43:26 946
原创 unix域
服务器和客户端之间要实现通讯,先规定好一个协议。 要重视协议这个东西,日后开发肯定会用到,有时间好好学一下; 1、UNIX域?TCP/IP协议,可以用于不同计算机之间的通讯,使用对应的IP和端口来找到对方,其实是一种进程间通讯,那能否在同一个电脑上面不同进程间进行通讯?答案肯定是可以的,UNIX域是一个结合了套接字和管道通讯的一种进程间通讯的方式。它也有UDP/TCP的通讯的...
2018-08-08 22:42:12 1015
原创 UDP
UDP的通讯方式服务器来说: (1)新建socket #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int socket(int domain, int type, int protocol);第一个参数...
2018-08-08 22:41:21 191
原创 网络编程TCP
TCP的通讯。 服务器:(1)、建立套接字:socket。建立点对点的通讯。 #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int socket(int domain, int type,...
2018-08-08 22:39:38 188
原创 消息队列和信号(进程间通信)
消息队列1、消息队列是什么?消息队列是在内核空间内部的一个链表。通过Linux内核在各个进程间传递消息。要获取对应的消息队列,每一个消息队列都有一个唯一的表示符来区分。 2、怎么样使用消息队列进行进程间通讯? 1)先产生一个标示符SYNOPSIS #include <sys/types.h> #inclu...
2018-08-08 22:34:06 1274
原创 线程间通讯《互斥锁,读写锁》
1、互斥锁为了保护共享资源,使我们线程可以单独使用这个共享资源,使用之前先上锁,那其他进程要使用的时候,就需要等待到这个线程用完之后,需要开锁。 互斥锁的使用:帮助文档默认没有安装,我们需要手动安装:sudo apt-get install manpages-posix-dev 声明这个互斥锁:pthread_mutex_t m;初始化这个互斥锁:...
2018-08-08 22:32:05 197
原创 7.27线程
如何使用Makefile:vi Makefile目标:依赖Tab 命令pthread:pthread.ogcc pthread.c -o pthread -lpthreadsem:sem.cgcc sem.c -o sem 直接执行make这个命令就可以编译这两个文件; 1、线程的概念:1、线程是比进程更小的活动单元,他是进程种一个执...
2018-08-08 22:29:02 149
原创 共享内存,信号量和线程的建立
重点理解Ipc对象:对于ipc对象一般创建两个进程进行相同的操作是为了有相同的key值,能对相同的ipc对象进行操作1、IPC对象包含了:共享内存、信号量、消息队列查看IPC对象的命令:ipcs -aIPC对象存在于内核,它创建了之后是否还存在内核跟我们进程是否运行没有关系,只跟我们有没有显式删除它有关系我们可以通过函数的方式去删除它,也可以通过命令的方式删除它。命令...
2018-08-08 22:26:53 272
原创 进程
fork的调用(很重要,要理解多进程的调度) pid_t fork(void);返回值:如果失败返回-1, 同时errno被设置。如果成功: 父进程返回 子进程的pid (>0) 子进程返回 0 注意:进程自身的pid号和返回的pid号是两回事,自身pid是1002但是由于为子进程返回的也只能是0; 思考题:pid1 = fork...
2018-08-08 22:24:16 174
原创 进程间通讯(IPC)(有信号捕捉函数)
1、IPC(Internal Processes Communication)进程间通讯--->实际上数据的交换。 通过全局变量的方式实现不了进程间通讯因为进程内存空间,都是相互独立的,不能通过这种方式去互相访问。 进程间通讯的方式:1、内存映射,内存共享。 2、通过读写文件的方式。这种效率比较低。3、信号。4、消息队列。5、信号量。6、...
2018-08-08 22:21:26 645
转载 C++面试题精髓
C++面试题精髓1.、为什么构造函数不能声明为虚函数?解析:因为虚函数采用的是虚调用的方法,虚调用是指允许在只知道部分信息的情况下的工作机制,特别允许我们调用一个只知道接口而不知道其对象的准确类型的函数。但是如果我们要调用构造函数创建对象时,必须要知道对象的准确类型,因此构造函数不能为虚函数。 2.C++中哪些函数不能被声明为虚函数?解析:普通函数(非成员函数),...
2018-08-05 14:31:33 1020
转载 面试题资料
2015.Raysharp嵌入式试题 1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制...
2018-08-05 14:26:02 791
转载 华为笔试题
1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用2.引...
2018-08-05 14:22:47 259
原创 bmp图片分析显示
1、显示器,显示最小的单位:像素点(开发板的分辨率是800X480) 怎么样去表示每一个像素点?比如说只有一个位,来显示,那只能显示白色和黑色,比如说有 8bit -> 1Byte 有2^8种情况,位数越大,所能表示的颜色就越多 三原色( ARGB ) 8:8:8:8 每一个像素点有32位来表示 ABGR char buf[4];int siz...
2018-08-05 14:21:28 2047
原创 JPEG图片的显示
弄清楚编译,运行程序时候的路径是否合理,地方是否恰当,涉及到符号链接的不能在share目录下面进行;1、JPEG 是一个图片的格式也是一种压缩的算法 经过某一种的算法处理ARGB <=========================> BMP/JPEG/PNG libjpeg的库 什么是库? 就是一些函数,这些经过了封装-> so(linux下...
2018-08-05 14:20:07 3277
原创 数码相册项目的实现
本人因为此阶段精力有限,没有时间去整理代码格式,还请见谅。//功能;自动左右切换,每一秒切换一次;(自动切换)#include<stdio.h>#include <sys/types.h>#include <dirent.h>#include<sys/stat.h>#include<unistd.h>#incl...
2018-08-05 14:15:05 835
原创 文件属性及其目录操作
1、文件属性的操作我们可以使用这几个函数获取到文件状态信息SYNOPSIS #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int stat(const char *path, struct stat *...
2018-08-05 14:11:12 454
原创 系统IO
系统IO: 不带缓冲的IO,其是基于标准IO所设计的! 1、打开/关闭函数 头文件: #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 函数原型: int open(const c...
2018-08-05 14:07:10 684
原创 文件IO
文件IO 思考:数据以什么样的方式存放在电脑中?二进制!在带有操作系统的计算机中数据操作是以什么为单位?都是以文件的形式!文件?:在存储介质上数据的集合就是文件 存储介质是硬盘(外存)内存是用来执行指令或者计算的! Linux的文件IO:Linux提供了两种文件IO的方式:第一种:是带缓冲区的IO,第二种是不带缓冲区的IO,分别称之为标准I...
2018-08-05 14:06:01 177
转载 7中排序算法学习总结(图解+程序代码)
7中排序算法学习总结(图解+程序代码)2017年06月08日 17:08:49阅读数:335//二分法排序(二分法查找)#include <stdio.h>void chaxu(int a[],int x,int n){int i,k,mid,p=0,q=n-1;while(p<=q){mid=(p+q)/2;if(x>=a[mi...
2018-08-05 14:03:22 314
原创 数据结构之循环链表
循环链表#include<stdio.h>#include<stdlib.h>typedef struct stu{ int data; struct stu *next; }node;node *plst(){ node *head,*tail,*p; head=tail=p=NULL; int x; char f; while(1) { scanf("%c",&...
2018-04-13 12:40:03 211
原创 数据结构之双链表
双链表#include<stdio.h>#include<stdlib.h>typedef int ElementType;typedef struct node{ ElementType data; struct node *prev;//注意双链表结构体要加这个 struct node *next;}Node; Node *CreateList(void){ Node ...
2018-04-13 12:36:17 175
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人