- 博客(59)
- 资源 (2)
- 收藏
- 关注
原创 arm-linux实现onvif server+WS-UsernameToken令牌验证
拷贝gsoap-2.8.130_install/share/gsoap/plugin目录下的mecevp.c、mecevp.h、smdevp.c、smdevp.h、threads.c、threads.h、wsaapi.c、wsaapi.h、wsseapi.c、wsseapi.h至onvif_server目录。拷贝gsoap-2.8/gsoap目录下的dom.c、stdsoap2.c、stdsoap2.h至onvif_server目录。根据实际情况选择zlib版本,本文使用zlib 1.2.5版本。
2024-03-17 17:33:27 1392
转载 STL标准模板库
STL(标准模板库) STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了...
2018-08-08 14:40:50 283
原创 异常与文件操作
类型转换:static_cast:用于基本类型间的转换,但不能用于基本类型指针间的转换,用于有继承关系累对象间的转换和类指针间的转换。reinterpret_cast:用于指针类型间额强制转换,用于整数和指针类型间的强制转换。dynamic_cast:主要用于类层次间的转换,还可以用于类之间的交叉转换。具有类型检查的功能,比static_cast更安全。const_cast:用于去...
2018-08-08 13:39:26 282
原创 C++函数模板和类模板
C++提供了函数模板(function template)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。 1)C++提供两种模板机制:...
2018-08-08 13:18:23 315
原创 C++基础(六)
多态原理:当类中声明虚函数时,编译器会在类中生成一个虚函数表虚函数表是一个存储类成员函数指针的数据结构虚函数表是由编译器自动生成与维护的virtual成员函数会被编译器放入虚函数表中当存在虚函数时,每个对象中都有一个指向虚函数表的指针(C++编译器给父类对象、子类对象提前布局vptr指针;当进行函数调用时,C++编译器不需要区分子类对象或者父类对象,只需要再base指针中,找vptr指...
2018-08-02 10:35:06 210
原创 C++基础(五)
多态成立的三个条件:1.要有继承2.要有虚函数重写3.用父类指针(父类引用)指向子类对象静态联编和动态联编1、联编是指一个程序模块、代码之间互相关联的过程。2、静态联编(static binding),是程序的匹配、连接在编译阶段实现,也称为早期匹配。 重载函数使用静态联编。3、动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编(迟绑定)。switch 语句...
2018-08-02 10:09:29 137
原创 C++基础(四)
多继承: 一个类有多个直接基类的继承关系称为多继承 多继承声明语法class 派生类名 : 访问控制 基类名1 , 访问控制 基类名2 , … , 访问控制 基类名n { 数据成员和成员函数声明 };多继承的派生类的构造和析构:多个基类的派生类构造函数可以用初始式调用基类构造函数初始化数据成员执行顺序与单继承构造函数情况类似。多个直...
2018-07-29 10:26:49 185
原创 C++基础(三)
继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。被继承的类称为父类或基类,继承的类称为子类或派生类。以下是两种典型的使用继承的场景:1) 当你创建的新类与现有的类相似,只是多出若干成员变量或成员函数时,可以使用继承,这样不但会减少代码量,而且新类会拥有基类的所有功能。2) 当你需要创建...
2018-07-29 10:16:51 176
转载 C语言内存分配方式,常见内存错误,野指针, 避免野指针
1、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 2、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 3、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少...
2018-07-27 13:42:10 273
原创 C++基础(二)
构造函数的调用顺序和初始化列表的顺序无关,和对象的声明顺序有关。析构的顺序跟构造的是相反的。匿名对象生命周期只有其所在的一行代码(代码结束就析构)。成员函数存放在代码段,成员变量存放在堆或栈上。所有对象共享成员函数。没有成员变量的类,占字节为1。被const修饰的函数不能修改变量。不能重载的运算符: .,::,.*,?:,sizeof。能作为左值的可以引用,不能则不能用...
2018-07-27 13:36:34 125
转载 继承和封装
在 C++ 中,我们使用访问标签来定义类的抽象接口。一个类可以包含零个或多个访问标签: 使用公共标签定义的成员都可以访问该程序的所有部分。一个类型的数据抽象视图是由它的公共成员来定义的。 使用私有标签定义的成员无法访问到使用类的代码。私有部分对使用类型的代码隐藏了实现细节。 访问标签出现的频率没有限制。每个访问标签指定了紧随其后的成员定义的访问级别。指定的访问级别会一直有效,直到遇到下一个访问标签...
2018-07-25 10:11:44 159
转载 C++引用
一、引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名; 【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名 说明: (1)&在此不是求地址运算,而是起标识作用。 ...
2018-07-25 10:08:40 146
转载 C++深拷贝和浅拷贝
用一句简单的话来说就是浅拷贝,只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝(重新分配有内存),经深拷贝后的指针是指向两个不同地址的指针。因此浅拷贝释放内存的时候很容易出现因为释放两个指针而内存出错。拷贝情况: 当对象中存在指针成员时,除了在复制对象时需要考虑自定义拷贝构造函数,还应该考虑以下两种情形: 1.当函数的参数为对象时,...
2018-07-25 10:03:27 124
转载 C++构造,析构函数
(1)构造函数、析构函数与赋值函数构造函数、析构函数与赋值函数是每个类最基本的函数。它们太普通以致让人容易麻痹大意,其实这些貌似简单的函数就象没有顶盖的下水道那样危险。每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数)。对于任意一个类A,如果不想编写上述函数,C++编译器将自动为A 产生四个缺省的函数,例如:A(void...
2018-07-25 09:56:02 405
原创 C++基础(一)
::作用域限定符register 定义寄存器变量,c语言里不能取地址,c++可以。未初始化的全局变量为0,未初始化的局部变量为垃圾值。C++不支持对全局变量的重复定义。struct声明的为一种数据类型。C语言函数形参有无void不一样,没有的话可以传任意参数。C++里函数形参必须有类型,有无void都一样。C语言里三目运算符不能作为左值,c++里可以。c语言里三目运算...
2018-07-20 09:14:13 121
转载 C++与c语言区别
差不多是win98跟winXP的关系。C++是在C的基础上增加了新的理论,玩出了新的花样。所以叫C加加。 C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。 C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息...
2018-07-18 22:10:10 179
原创 linux文件操作命令
1、文件命名规则 1)除了/ 之外,所有的字符都合法。 2)有些字符最好不用,如空格符、制表符、退格符和字符@ # & ( ) - 等。 3)避免使用. 作为普通文件名的第一个字符。 4)大小写敏感。 命令格式 命令格式:命令-选项 参数 例:ls -la /etc 说明:1)当有多个选项时,可以写在一起。 2)两个特殊的目录. 和.. ,分别代表当前目录和当前目录的父目录。
2018-03-12 20:10:46 158
转载 C语言分配内存的方式及常见的内存错误
内存分配方式有几种? 静态存储区 栈 堆 的内存分配 1,从静态存储区域分配内存。(static)程序编译的时候内存已经分配好了,并且在程序的整个运行期间都存在,例如全局变量。 2,在栈上创建。在执行函数时,函数内局部变量的存储单元可以在栈上创建,函数结束时这些存储单元自动被释放。 处理器的指定集中有关于栈内存的分配运算,因此效率比较高,但是分配的内存容量有限。 3,在堆上分配内存,亦称动
2018-01-29 14:23:11 365
转载 Linux下网络编程实现UDP
一、引言 UDP是TCP/IP协议中的传输层协议的一种,本文介绍了在Linux下编写基于UDP协议的Client/Server模型的程序的方法,并给出了一个echo Client/Server例子程序。 二、UDP协议简介 UDP是一种简单的传输层协议,在RFC768中有详细描述。UDP协议是一种非连接的、不可靠的数据报文协议,完全不同于提供面向连接
2017-12-07 16:10:26 259
转载 TCP协议
一、网络通信网络是通过物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的,通过信息交换实现人与人、人与计算机、计算机与计算机之间的通信。网络通信要遵守网络协议,局域网中最常用的有三个网络协议:MICROSOFT的NETBEUI、NOVELL的IPX/SPX和TCP/IP协议。a> NetBEUI - 网络基本输入输出系统扩展用户接口。NETBEUI是为IBM开
2017-12-07 16:03:31 181
原创 进程与线程
1、简述Linux进程内存空间分为哪几个段?作用分别是什么? 答:分为5段,BSS段, 代码段, 数据段, 堆, 栈。 BSS段:用于存放未初始化的全局变量, 静态局部变量。 代码段:存放代码,常量。 数据段:存放初始化的全局变量。 堆:是由程序员管理的,申请释放由程序员管理。 栈:是由操作系统管理的,申请释放由操作系统管理。2、如何查看进程的信息
2017-12-07 15:32:25 187
原创 linux下的多线程编程
线程分类线程按照其调度者可以分为用户级线程和核心级线程两种。(1)用户级线程 用户级线程主要解决的是上下文切换的问题,它的调度算法和调度过程全部由用户自行选择决定,在运行时不需要特定的内核支持。在这里,操作系统往往会提供一个用户空间的线程库,该线程库提供了线程的创建、调度、撤销等功能,而内核仍然仅对进程进行管理。如果一个进程中的某一个线程调用了一个阻塞的系统调用,那么该进程包括该进程中的其他所有线
2017-12-01 13:36:25 146
转载 信号灯
一、信号灯概述 信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型: 二值信号灯:最简单的信号灯形式,信号灯的值只能取0或1,类似于互斥锁。 注:二值信号灯能够实现互斥锁的功能,但两者的关注内容不同。信号灯强调共享资源
2017-12-01 13:30:47 318
原创 linux进程通信方式
linux下进程间通信方式如下: 管道(Pipe)及有名管道(namedpipe): 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信; 信号(Signal): 信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义
2017-12-01 13:25:35 177
原创 linux进程控制编程
获取本进程ID: pid_t getpid(void),在程序中加入这个函数,就能在程序运行时获取本进程的ID号:printf(“pid=%d”,getpid()); 以整数形式输出a) #include
2017-11-23 18:44:29 182
原创 栈的基本知识及应用
栈的基本知识及应用 1.栈的概念和特性 栈(stack)是一种特殊的线性表。作为一个简单的例子,可以把食堂里冼净的一摞碗看作一个栈。在通常情况下,最先冼净的碗总是放在最底下,后冼净的碗总是摞在最顶上。而在使用时,却是从顶上拿取,也就是说,后冼的先取用,后摞上的先取用。好果我们把冼净的碗“摞上”称为进栈(压栈),把“取用碗”称为出栈(弹出),那么,上例的特点是:后进栈的先出栈。然而,摞起来的碗实际
2017-11-02 19:36:41 1599 1
原创 数据结构
数据结构 1.数据结构的定义: 数据在计算机中的组织。包括逻辑结构,存储结构,数据运算。 逻辑结构:与具体的计算机无关。 一、顺序表: 线性表(a1,a2…,an)有唯一的第一个和最后一个元素(n≥0)。其余的有唯一的前驱和后继。 顺序表定义:用一组地址连续的存储单元依次存放的数据元素。 在顺序表的第i个位置前插入一个数据元素,需要向后移动n - i +1个
2017-10-27 15:45:37 229
原创 结构体
1 概述 C语言允许用户自己指定这样一种数据结构,它由不同类型的数据组合成一个整体,以便引用,这些组合在一个整体中的数据是互相联系的,这样的数据结构称为结构体,它相当于其它高级语言中记录。 声明一个结构休类型的一般形式如下: struct 结构体名 {成员列表}; 结构体名,用作结构体类型的标志,它又称 结构体标记,大括号内是该结构体中的各个成员,由它们组成一个结构体,对各成员都应进行类型
2017-10-26 23:44:09 381
原创 函数
函数 定义:具有特定功能的代码段(一连串语句组合在一起,实现了某一功能) 函数分类:库函数、自定义函数 完整的函数包含3部分:声明、定义、调用 函数的构成 1.返回值类型 2.函数名(参数) 3.{函数体} 函数的定义: 返回值类型 函数名 (形式参数列表) {语句; return 返回值;} 函数的返回值 函数的返回值称为函数的值,只能通过return语句返回给主调函数。
2017-10-20 09:53:00 220
转载 数组与指针
<1>.数组名 声明中:当我们声明一个数组时,编译器将根据声明所指定的元素数量及类型为数组保留内存空间,然后再创建数组名,编译器会产生一个符号表,用来记录数组名和它的相关信息,这些信息中包含一个与数组名相关联的值,这个值是刚刚分配的数组的第一个元素的首地址(一个元素可能会占据几个地址,如整型占4个,此处是取起始地址)。现在声明一个数组:int ia[100]; 编译器此时为它分配空间,假设第一个数
2017-10-20 09:46:39 188
转载 shell编程
1、环境变量 1) 定义和取消环境变量2)重要的环境变量 PWD:当前路径 OLDPWD:上一次的路径PATH:任何在PATH中的可执行文件都可以在Linux的任何目录下直接执行HOME:当前用户的根目录,一般非根用户的HOME目录存放在/home下,根用户的HOME目录在/root下。SHELL:默认的Shell值,一般是/bin/bash,表示当前的Shell是bash Shell。
2017-10-14 12:58:43 210
原创 c语言顺序程序设计
三种基本结构可以组成各种语言程序。其实顺序程序设计就是其中一种。有条理按顺序的执行每一个步骤。 C语言的语句常用的几大类型:表达式语句函数调用语句控制语句复合语句空语句赋值语句是C语言的其中一种。通常用到的输入输出是一种系统函数体,属于函数调用语句。 printf() scanf() putchar() getchar() 属于系统函数,函数可以自定义。系统函数指存储在软件中的默认函数,也可以称之
2017-10-10 19:41:39 860
原创 c语言的数算据类型、运算符与表达式
㈠数据类型基本类型: (1)整形:int /short int/long int (2)字符型 (3)实型(浮点型):十进制小数/指数形式/单、双、长双精度型构造类型 :(1)数组类型:是一组有序数据的集合:一维数组/二维数组/多维数组 (2)结构类型:struct 结构体名{成员列表}; (3)共用体类型指针类型:就是存储单元的地址;形式:基类型 *指针变量名 &(地址符)*指针运算符(间接访问
2017-10-10 19:19:55 569
原创 c语言算法
算法(Algorithm):计算机解题的基本思想方法和步骤算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等,通常使用自然语言、结构化流程图、伪代码等来描述算法。计算机算法可分为两大类别:数值运算算法和非数值运算算法。算法的特点:①有穷性。②确定性。③有零个或多个输入。④有一个或多
2017-10-07 22:27:15 373
原创 c语言历史
C语言是目前世界上流行、使用非常广泛的高级程序设计语言。 C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。 C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。常用的编译软件有Microsoft Visual C++,Borland C++,Watc
2017-10-07 22:14:38 751
原创 linux常用的60个命令
◆ 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last; ◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln; ◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab; ◆ 网络操作命令
2017-10-06 21:16:35 257
原创 文件管理,文件安全的命令
①文件管理命令 $touch a.txt 如果a.txt不存在,生成一个新的空文档a.txt。如果a.txt存在,那么只更改该文档的时间信息。(这个命令实际上用得并不广泛,但可以帮我们创建一个空文件来实验下面操作) $ls . 是list的简写,列出当前目录下的所有文件名 $ls -l a.txt 列出文件的详细信息 $cp a.txt b.txt cp是copy的简写,用来复制文件。在工作目录下
2017-10-04 20:58:04 332
原创 文件处理命令
目录处理命令:ls 命令名称:ls 命令英文原意:list 命令所在路劲:/bin/ls 执行权限:所有用户 功能描述:显示目录文件 语法:ls 选项[-ald][文件或目录] -a 显示所有文件,包括隐藏文件 -l 详细信息显示 -d 查看目录属性 -rw-r--r-- - 文件类型(- 文件 d 目录 l软链接文件) rw- r-- r-- u g o u所有者 g所属组 o其他人 r读 w写
2017-10-04 20:42:03 181
原创 makefile命令
-C dir:在读取Makefile文件前,先切换到“dir”目录下,也就是把dir作为当前目录 -d :make执行时打印出所有的调试信息 -e :不允许在Makefile中对系统环境变量进行重新赋值 -f filename:使用指定文件作为Makefile文件 -i :忽略执行Makefile中命令时产生的错误,不退出make -h :打印出帮助信息 -k :执行命令遇到错误时,不终止make
2017-10-03 21:33:20 837
原创 gdb命令
①b(breakpoint) 进行断点设置 ②info b 查看断点情况 ③r(run) 运行程序。GDB默认从首行开始执行。如果程序中有断点,则程序会在断点行数的前一行暂停运行。 ④p(print) 查看变量值 ⑤c(continue)继续运行程序 ⑥s(step) 执行上一行程序 ⑦n(next) 执行下一行程序 GDB的调试功能很强大,但GDB的缺点是没有图形调试界面。
2017-10-02 21:56:55 182
arm-linux实现onvif server+WS-UsernameToken令牌验证
2024-03-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人