自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QProcess如何设置工作目录

【代码】QProcess如何设置工作目录。

2024-03-27 14:53:31 161

原创 GDAL创建 收集一些options

在使用GDAL创建TIFF文件时,可以为选项参数papszOptions提供以下选项:1. `COMPRESS=`

2023-07-25 16:30:53 567

原创 坐标转换tif图片用代码设置nodata 当输入的栅格背景色为白色,转出的栅格数据出现背景色黑白交叉的情况

当输入的栅格背景色为白色,转出的栅格数据出现背景色黑白交叉的情况。

2023-01-17 11:27:08 340

原创 QCombox隐藏某行

QCombox隐藏某行。

2022-10-09 16:24:39 403

原创 VS LNK2005 “public: class osg::Vec3d const_cdecl osg::BoundingBoxImpl<class osg::Vec3d>::center“报错

LNK2005报错

2022-09-30 16:09:54 131

原创 GeoTransform 六参数

GeoTransform六参数

2022-09-20 17:28:03 531

原创 double计算时,精度问题

doubel计算时,丢失精度问题

2022-09-20 11:11:34 1352

转载 html 网页 立方米m³ n次幂 乱码问题

立方米 m³

2022-06-13 16:06:34 275

原创 错误代码-MSB6006: “cmd.exe”已退出,代码为 1

头文件生成错误恢复头文件重新生成成功

2022-03-28 14:44:46 1809 1

原创 C++ 调用父类的函数

子类调用父类函数__super::函数名(参数);双下划线

2022-02-28 10:52:51 974 1

原创 OSG 文件读取 收集一些options

options语法文件读取//方法一:osg::Node* Node=osgDB::readNodeFile(文件路径, new osgDB::Options("选项内容"));//方法二:osg::ref_ptr<osgDB::Options> options = new osgDB::Options("选项内容"); osg::Node* pNode=osgDB::readNodeFile(文件路径, options));文件写入//参数1:需要存入的模型,参数2:文件保

2021-12-31 11:17:10 2533

原创 OSG ref_ptr智能指针 release get

初始化osg::ref_ptr<osg::Group>root = new osg::Group();release()使用栈区空间保存“堆区”指针,使函数结束时传递的数值成功被传递。避免值传递时返回野指针例c语言指针,return以及函数返回值语法return root.release();底层代码new 一个指针保存原指针,将原指针计数-1,返回new的指针 T* release() { T* tmp=_ptr; if (_ptr)

2021-12-27 16:59:55 1466

原创 OSG ProxyNode 代理节点

OSG ProxyNode 代理节点ProxyNode类似一棵树的一个目录,将一棵树下的所有节点重新记录在Proxynode中。通过ProxyNode可以重新实现节点的排列,可以 通过ProxyNode实现对原树进行一个“封装",可以通过调用ProxyNode实现对节点的调用。理解ProxyNode中只包含节点名(路径),可以实现与原树不同的节点排列结构,与原树的效果可以相同。语法将节点加入ProxyNode第一个参数是位置,第二个参数是地址osg不带纹理,osgb带纹理m_pPr

2021-12-20 09:45:30 1380

原创 IPC 进程间通信 匿名管道 命名管道

IPC(进程间通信):1、为什么需要通信:因为进程间都是独立的运行空间(内存空间),所。以不能进程间不能直接通信。2、通信方式:1、管道: 匿名管道: 命名管道:2、信号:3、共享内存:4、消息队列:5、Socket:匿名管道“有关系”的进程之间通信(父子进程)1、创建管道:#include <unistd.h> int pipe(int pipefd[2]);形参: pipefd[2]:存储的是文件描述符,其中pipefd[0]--读端,pipefd[1

2021-01-21 17:31:23 148

原创 进程控制 僵尸进程 孤儿进程 execv函数族

僵尸进程:子进程退出,父进程不为子进程wait(释放子进程的资源)问:为什么需要父进程来为子进程释放资源父子进程是两个不同的进程(独立的空间),父需要需要得到子进程的退出状态,所以需要父进程来释放问:如何释放父进程调用wait来释放。代码实现#include<stdio.h>#include<stdlib.h>#include <sys/types.h>#include <sys/wait.h>void main(){ int pid

2021-01-21 17:23:15 142

原创 linux 通过dup dup2 实现重定向

进程描述符:task文件描述符:就是数组下标值int open(char* path,int falg);返回值:返回最小且未被占用的文件描述符下标(文件描述符)1、在应用层,一般打开文件时,返回为3因为每个应用层的程序打时,都不可缺少键盘/屏幕/错误输出,所以init进程在运行进程时,都会为你打开"键盘/屏幕/错误输出"三个文件(一切设备皆文件)2、上述函数将文件描述符引用计数+1dup函数复制文件描述符:1、int dup(int oldfd)作用:将oldfd文件描述符复制一份放

2021-01-19 17:32:59 448

原创 进程控制 父进程子进程 fork pid

进程:正在运行的程序(分配资源:内存,CPU,IO等)程序:有限指令的集合(静态:没有执行,存放在外存)并发:多个任务“同时”执行。(处理器某一时刻最多只运行一个进程)1、进程:进程描述符:代码进程的资源struct task_struct{ int pid;//代表进程的标识};1、获取进程PID:int getpid(); 获取父进程PIDint getppid();2、创建子进程:父子进程“并发”执行 int fork();返回值: 在父进程中:返回子进程的pid

2021-01-19 17:21:40 1792

原创 linux 文件io 系统接口

文件IO:C语言:文件IOfopen(“a.txt”,“r”);---->open(“a.txt”,O_RDONLY)C++语言:IO流上述IO是各种高级语言为用户提供的接口PS:高级语言实现的接口本质是调用系统接口Linux文件IO:1、Linux文件接口:是一个操作系统,必须为用户提供操作的接口,上面语言是调用的系统的提供的文件操作接口(底层)2、操作步骤:1、打开 int open(const char *pathname, int flags, mode_t mode);

2021-01-19 09:06:31 269

原创 设计模式-工厂方法模式

工厂方法模式不再只由一个工厂类决定哪一个产品类应当被实例化,这个决定权被交给该工厂的子类来实现。当有新的产品产生时,只需要按照抽象产品角色,抽象工厂角色提供的方法生成即可。既可以不再破坏工厂的封装性在简单工厂方式(见上篇)的基础上再将工厂也纯虚函数化,由车间子类来继承工厂类,调用工厂的接口可以使用不同的造车车间工厂方法模式就是使用两个纯虚函数来将接口实现多态化并且保证工厂的封装性,在添加或删除车间时不改变工厂函数#include<iostream>using namespace st

2021-01-16 17:11:45 75

原创 设计模式-简单工厂模式

简单工厂模式:工厂类是创建产品的,它决定创建哪一种产品,就像领导决定生产哪一系列车。缺点:简单工厂模式在每次增加新的产品(车型)时,需要修改工厂类,就这违背了开放封闭原则(软件实体:(类,模块,函数)可以扩展,不可修改)使用一个虚函数来统一造车函数的名字,由于基类的指针可以指向子类,既可以调用一个接口来造不同的车工厂造车函数的返回值是car类也就是统一造车函数名的类#include<iostream>using namespace std;//简单工厂模式//基类指针可以指向子类

2021-01-16 16:59:18 93

原创 设计模式-单实例模式

设计模式:是因特定的场景而设计的一种思想单实例模式:一个类只能有一个对象(对象只能由构造器分配不能在类外实例化:将构造器封装为非公有,使用静态变量来判断只能实例一次,通过该静态方法来调用类的构造器静态成员在类外初始化,程序开始时分配空间,所有类共用此成员静态方法只能访问静态成员#include<iostream>#include<string>using namespace std;//设计模式 单例模式 仅能创建一个对象//游戏引擎class gameengi

2021-01-16 16:51:37 164 1

原创 C++ 枚举类型enum

枚举:在一定的范围内取值,从确定值开始连续取值加一,若无确定值则从零开始并且这个取值必须是枚举中的任意一个且只有一个枚举1,枚举2相当于宏 只能简单地替换 01,不属于字符串定义枚举:enum 枚举类型{枚举1=整型常量值1,枚举2=整型常量值2};PS:分号不能掉enum sex{w,m};定义枚举变量:sex s=w;sex s1=a;//报错:必须取值为枚举中的成员(w/m),不能为其他第三方,也不能赋整型值。PS:枚举成员值从确定值开始连续取整型值,若第一个枚举成员值不给

2021-01-16 16:42:35 197

原创 C++ 联合体union

联合体所有成员共享一个最大的类型空间只能使用其中一个成员与结构体的区别:结构体是给每一个成员分配空间,联合体只分配一个最大的成员空间定义联合体:只是定义一种新的类型union 类型名 { 类型 成员1; ... };定义联合体变量:类型 变量名union 类型名 变量名={只有一个值};引用成员:(指针,变量名)变量名.成员指针->成员#include<iostream>using namespace std;struct people{ ch

2021-01-16 16:34:24 244

原创 C++ 多态 虚函数

1、对象之间赋值没有关系(不是继承关系)类型对象是不能直接赋值:student lz;string a=“abc”;lz=a;//报错:运算只能识别基本类型,不能识别复杂类型具有关系:基类对象=子对象 可以赋值子对象=基类对象 不可以直接赋值2、对象拷贝复制:调用拷贝构造器(实例化对象同时赋值同类对象)student zzz=lz;//zzz调用是拷贝构造器3、对象的赋值:(若类中没有显示的定义重载赋值运算符,就会系统默认定义赋值运算符)studetn abc;lz=abc

2021-01-15 15:50:05 81

原创 C++ 继承和派生 多继承

继承与派生:基类(或父类):被继承的所有的类(人类)派生类(或子类):从基类中继承新增部分特性的类class 子类:继承方式 基类1,继承方式 基类2...{ };继承目的:实现设计与代码的重用,充分利用原有的类继承方式:1、公有继承,2私有继承,3保护继承简要版Public继承 公有->公有 私有->不可访问 保护->保护!基类中的私有成员虽然不能直接在子类中访问,但是可以通过非私有接口访问protected 继承 公有->保护

2021-01-14 11:59:09 251 1

原创 c++ 运算符重载operator

不可重载的五个运算符. :: * ?: sizeof1 . (点运算符)通常用于去对象的成员,但是->(箭头运算符),是可以重载的2 :: (域运算符)即类名+域运算符,取成员,不可以重载3 .* (点星运算符,)不可以重载,成员指针运算符".*,即成员是指针类型4 ?: (条件运算符)不可以重载5 sizeof 不可以重载运算符重载本质就是重载方法,因为运算符不能直接识别复杂类型,当运算符操作复杂类型时会调用operator运算符方法PS:运算符可以直接操作基本类型,但

2021-01-12 17:19:30 470

原创 C++ 默认形参值

调用函数要求:函数名匹配,实参和形参类型个数一致定义方法返回类型 函数名(类型 形参名=值,类型 形参名=值…)在定义函数时,可以给部分形参设定默认值 ,默认形参列表从右往左不能出现未给定默形参值默认形参的类型写在形参列表的右侧错误eg:void show(const char name[],const char addrp[]=“hubei”,char sex)错误eg:void show(const char name[]=“aa”,const char addrp[]=“hub

2021-01-12 16:47:06 827

原创 C++泛型 函数模板 template<typename T>

泛型:1、函数模板:函数体一致, 只是数据不确定int add(int a,int b) { return a+b; } //重载函数 double add(double a,double b) { return a+b; }//函数模板template<typename T>T add(T a,T b){ return a+b;}int main(){ //由实参来决定T类型 c

2021-01-12 16:25:43 1260

原创 C++构造器

构造器:(每个对象的母亲)每个对象都由构造器来生成对象1、默认无参构造器:若一旦用户定义了(有参无参)构造器,无参构造器就不会默认定义方法名: 类名();2、有参构造器:方法名: 类名(…)3、拷贝构造器:若用户不显示定义拷贝构造器,编译器会默认添加默认拷贝构造器类名 对象1=对象; //必须在实例化时或者:类名 对象1(对象);方法名: 类名(类名& p){*this=p}4、析构器:当对象被释放时,在释放之前向该对象发送该方法~类名

2021-01-12 16:18:41 695

原创 C++ const常,常变量,常指针变量,指针常变量,作类成员,常方法,常对象

Const常量不可改变,在定义时初始化Const作成员Const变量作成员变量必须初始化Const成员变量也属于对象成员Const成员变量必须显示的由构造器初始化class 类名 { public:类名():常量名(10) //初始化列表来初始化常变量}Const方法 只读不可修改可以修改(指针)指向内容。不可修改指针内容返回值 函数名(形参) constConst对象Const 类名 对象;该对象中的属性都不能通过该常对象修改,也不能访问普通方法,只访问常方

2021-01-12 15:53:57 182

原创 C++ 类内静态成员

在程序运行时分配,非静态成员在实例化时分配作用域在类内,通过发消息来引用在类外初始化,不能通过初始化列表来初始化int ::num=0;所有成员共享静态成员空间(只分配一次)非静态方法只属于对象静态成员方法属于对象和类,只能访问静态成员类内类外引用(不能破坏封装性)1、对象引用:对象.静态成员变量2、类引用:类::静态变量#include<iostream>#include<string>using namespace std;class people

2021-01-12 14:00:04 88

原创 C++ 类作成员

Class A{A():b()//初始化列表B b;}1调用b类对象成员的构造器是由A的初始化列表来决定若类A的初始化列表没有指定类b的构造器时,默认使用类b无参构造器2调用顺序先调用类成员b构造器后调用a构造器,先调用a析构器后析构类成员b代码块#include<iostream>#include<string.h>using namespace std;//声明类class score;ostream& operator<&lt

2021-01-12 10:22:42 188

原创 TCP/IP的三次握手和四次挥手 图解

建立连接时握手三次第一次握手发送方发送信息,第二次握手发送接收方确认接收,发送信息,第三次握手发送方确认接收,开始通话断开连接时挥手三次第一次挥手发送方关闭发送,第二次挥手接收方发送未发送完的内容,第三次挥手接收方通知发送方发送完成关闭发送,第四次由发送方断开连接,接收方被断开连接。...

2021-01-08 17:21:08 95

原创 C++ new malloc

相同new malloc 都是申请堆区空间不同malloc/free 是c/c++库函数,需要头文件<stdlib.h>,面向内存new/delete 是c++的关键字,需要编译器支持,面向对象语法newchar* s=new int;mallocchar* s=(char*)malloc(10);//(char*是强转)new用法//一维数组int* p=new int[4];delete p;//二维数组int(*p)[4]=new int [3][4]

2021-01-08 11:38:57 123

原创 C++ 指针 引用 取别名

取别名和引用区别C语言中取别名是给类型取名语法typedef 类型名 别名;typedef int i;c++中的引用是给变量取别名类型名& 别名=变量名;int& newname =a;引用和指针的区别1引用是某块地址的别名,不分配新的空间指针是存储所指内存的地址,大小四个字节2“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身的大小;3引用不可为空,在定义时赋初值后不可改变指针可以为空,可以改变所存储的

2021-01-08 09:03:05 856

原创 将int 的每一个字节内容输出打印

int a=67305985;char *pa=(char*)&a;printf("%d,%d,%d,%d\n",*pa,*(pa+1),*(pa+2),*(pa+3));

2020-02-20 11:09:39 1079

原创 完成string类(构造函数,拷贝,析构,重载运算符)

#include<iostream>#include<string.h>using namespace std;class mystring{public: mystring() { this->buf=new char('\0'); } ...

2020-02-20 11:06:48 134

原创 C++ 纯虚函数

抽象类:含有纯虚函数的类抽象类不可调用可以用于统一接口的名字#include<iostream>using namespace std;class base{public: virtual void call()=0;};class cat:public base{public: void call() ...

2020-02-20 10:57:28 122

原创 C++ 查看虚函数表的两种方法

利用函数指针类型进行强转利用二维指针和二维数组查看,使用方便,简单#include<iostream>using namespace std;typedef void(*pfun)(void);//pfun重命名函数指针类型class A{public: void show() { cout&...

2020-02-20 10:42:19 1044

原创 算法(赛马问题)图解

64匹马8个跑道需要多少轮才能选出最快的4匹?(无计时)①八场,每场八个,取每场前四名,淘汰每场后四匹②一场,每场第一名(a1b1c1d1e1f1g1h1)一起跑,出现全场第1名,淘汰后四名的队,剩余15匹保留第一名队的后三位(a2a3a4),第二队的前三位(b1b2b3),第三队的前两位(c1c2),第四对的第一位(d1),剩余9匹马③一场,除第一队第四位之外的八匹马再跑一遍,出现234...

2020-01-03 16:11:58 3432

空空如也

空空如也

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

TA关注的人

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