- 博客(42)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 gdb常用命令
1、gdb 直接运行gdb,后续输入开启调试2、gdb 程序 //以某个程序启动gdb,后续可通过设置程序启动参数再开启调试(run简写 r)3、gdb attach pid 添加正在运行的进程到gdb调试 然后输入继续 (continue 简写 c)kill 停止程序quit 退出gdb //简写q。
2024-08-15 22:21:50 716
原创 Qt报错:error: error adding symbols: DSO missing from command line
Qt写spice测试程序的时候出现下面的错误,主要看第二条这种错误是由于编译器没有找到相应的链接库造成的,所以只需要在qt的项目文件(.pro) 中添加报错显示的链接库就ok了, 如:
2021-06-29 11:11:33 2618 2
原创 QML | 自定义圆形图片按钮
import QtQuick 2.12import QtQuick.Controls 2.12//自定义圆形图片按钮Rectangle { id:roundButton width: 30 height: width radius: width / 2 property url imageUrlHover: "" property url imageUrlNormal: "" // 图片路径 property color backco.
2021-06-01 15:59:42 1052
原创 QML | 实现一个转圈等待控件
//RotatingWait.qmlimport QtQuick 2.7import QtGraphicalEffects 1.0Item { Rectangle { id: rect width: parent.width height: parent.height color: Qt.rgba(0, 0, 0, 0) radius: width / 2 border.width: wi...
2021-05-26 10:01:41 1386
原创 Visual Studio 2019专业版密匙
收集到的一些vs2019专业版密匙,总有一个适合你 (ps:我用的第一个)NYWVH-HT4XC-R2WYW-9Y3CM-X4V3YBF8Y8-GN2QH-T84XB-QVY3B-RC4DF
2021-04-14 11:42:35 16793 6
原创 C++ | int和string的相互转化
int转string1.使用标准库中的to_string()函数string str = "This is " + to_string(888);cout << str<< endl; //输出 This is 888该函数原型有下面九种,可以将整型、浮点型等转换为stringstring to_string (int val);string to_string (long val);string to_string (long long val...
2021-04-02 09:51:01 197
原创 C++实现简单的String类
class MString{public: MString(const char* str = NULL); MString(const MString& str); //拷贝构造 ~MString(); MString& operator=(const MString &str); //赋值private: char* m_data; int m_length;};MString::MString(const char* str){ if (str.
2021-03-23 22:29:05 130
原创 实现strcpy()函数
strcpy()的简单实现,不考虑内存重叠的情况char* strcpy(char* dst, const char* src){ if(dst == NULL || src == NULL) return NULL; char* ret = dst; while((*dst++ = *src++) != '\0'); return ret;}上述实现中,当dst和src的内存存在重叠的情况下,会导致内存崩溃如:char ...
2021-03-23 16:03:17 190
原创 记一次WPS C++面试(一、二面)
1、new、malloc2、const、static3、memset初始化C++对象需要注意的地方4、class、struct struct继承、虚函数5、虚函数的实现机制6、C++用过的类型转换:static_cast、const_cast、dynamic_cast7、常用STL容器,vector、list、map vector、list差异,实现、迭代器失效、优化、 map实现,红黑树左旋右旋 是否线程安全,为什么8、堆栈溢出的原因和解决办法9、智能指针,...
2020-10-13 08:48:56 497
原创 C++ | 子类对象调用父类函数
在C++中子类对象调用父类函数可通过域操作符(::)来实现,表明所调用函数的作用域。//test.cc#include <iostream>using namespace std;class A{public: virtual void func() { cout <<" this is A" << endl; }};class B : public A{public: virtual void func() { cout &l
2020-09-24 09:04:04 17330
原创 在main()函数之前执行的函数
1、全局变量和静态变量的构造函数、赋值函数 全局变量和静态变量的初始化就是 在main函数之前执行的、而对其初始化需要调用的就是其构造函数和赋值函数2、若想要普通函数在在main()之前执行需要加 __attribute__((constructor)) 修饰,如void void __attribute__((constructor)) func(){ std::cout << "before main " << endl }相同的,想让函数在main...
2020-09-22 14:49:02 2172
原创 FFMPEG+SDL播放音频流
SDL播放音频和视频一样,需要先解码,再播放;但音频的播放不同于视频,他需要调用扬声器,播放音频不像视频一样给一帧数据播放一帧,音频是扬声器将缓冲区的数据播放完之后再向程序拿取数据。SDL播放音频流程:1)初始化SDL:SDL_Init()2)设置音频空间参数,并定义填充缓存区的回调函数:设置SDL_AudioSpec参数3)打开音频设备:SDL_OpenAudio()4)播放:SDL_PauseAudio(0) //0表示播放,1表示暂停5)退出SDL:SDL_Quit()...
2020-09-15 20:05:44 834
原创 音频重采样-libswresample
头文件<libswresample/swresample.h>功能:1)采样频率转换:对音频的采样频率转换,如将采样率从44.1K转换到48K,注意从高采样频率到低采样频率的音频转换是一个有损的过程。2)声道格式转换:对音频的声道格式转换,将立体声转换为单声道。3)样本格式转换:对音频的样本格式转换,还包括Packed和Planar包装格式之间相互转换。音频重采样步骤: 1)创建重采样过程的上下文环境,SwrContext结构体 2)设置参数(通道数、采样率、采样...
2020-09-15 00:04:00 1019
原创 FFMPEG编码实现:pcm编码为acc
本程序流程:1、创建输出码流的上下文AVFormatContext,并初始化2、打开输出文件:avio_open2()3、创建新流:avformat_new_stream() //用于保存音频流信息,一个完整的视频文件包含多个流信息:视频流、音频流、字幕流等4、创建编码器上下文并设置编码参数5、查找编码器并打开编码器6、写入文件头信息:avformat_write_header()7、打开输入文件8、循环读取输入文件的yuv值,并进行编码;编码成功写入文件:av_write_frame...
2020-09-14 23:17:37 1172
原创 std::move()
std::move() 是C++11的新特性,作用是 将参数转换成右值, 相当于一个类型转换 static_cast<T&&>(value)对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝;可以避免不必要的内存拷贝使用move()后原参数的的值为空函数原型template <typename T>typename remove_reference<T>::type&& move(T&
2020-09-07 14:41:25 483
原创 FFMPEG编码实现:将YUV文件编码为H264
一般编码流程:1、创建编码器上下文并设置编码器参数(编码格式、时间基、编码器类型、最大最小质量、宽高等等)2、寻找编码器3、打开编码器3、获取原始YUV或RGB数据4、编码:avcodec_send_frame()、avcodec_receive_packet()5、输出:保存为文件或封装为其他格式(mp4、flv、avi等)本程序(将YUV文件编码为H264)流程:1、创建输出码流的上下文AVFormatContext,并初始化2、打开输出文件:avio_open2()3、创建新流:
2020-09-07 14:35:55 1639
原创 FFMPEG + SDL播放视频流
SDL播放视频流程:相关函数的说明可以看SDL视频播放API由于SDL只能播放YUV和RGB格式的像素帧,所以对于MP4、mkv、avi、flv等封装格式的视频文件来说必须对其解码成YUV或RGB,才能用SDL播放,FFMPEG解码成YUVdemo/* SDL 播放视频流*/#define SDL_MAIN_HANDLED#include <iostream>#include <cstdio>using namespace std;extern "..
2020-09-05 10:53:55 350
原创 SDL播放视频及相关API
SDL播放视频流程初始化:SDL_Init(): 初始化SDL。SDL_CreateWindow(): 创建窗口(Window)。SDL_CreateRenderer(): 基于窗口创建渲染器(Render)。SDL_CreateTexture(): 创建纹理(Texture)。循环渲染数据:SDL_UpdateTexture(): 设置纹理的数据。SDL_RenderCopy(): 纹理复制给渲染器。SDL_RenderPresent(): 显示。函数调用流程图:int SDLCA
2020-09-03 17:15:13 264
原创 C++关键字之explicit
explicit关键字的作用就是防止类构造函数的隐式自动转换。explicit只能用于修饰只有一个参数的类构造函数,它的作用是表明该构造函数是显示的, 而非隐式的,跟它相对应的另一个关键字是implicit,意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式)。在C++中, 如果的构造函数只有一个参数时, 那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象.如果类构造函数参数大于或等于两个时,是不会产生隐式转换的,当除了第一个参数以外的其他参..
2020-09-02 13:45:26 282
原创 图像格式转换-libswscale
libswscale 是一个主要用于处理图片像素数据的类库。可以完成图片像素格式的转换,图片的拉伸,图像的滤波等工作。主要使用下面三个函数实现对图片的操作:sws_getContext()/sws_getCachedContext():初始化一个SwsContextsws_scale():处理图像数据sws_freeContext():释放一个SwsContext1、sws_getContextstruct SwsContext *sws_getContext( int src
2020-09-02 10:17:44 657
原创 基于 ffmpeg 的解码实现
视频文件的封装格式#include <iostream>#include <cstdio>using namespace std;extern "C"{#include <libavcodec/avcodec.h>#include <libavformat/avformat.h>#include <libswscale/swscale.h>#include "libavutil/imgutils.h"...
2020-09-02 09:02:12 641
原创 Git 常用命令
git clone 代码地址 将代码克隆到本地git log 查看所有提交日志git log -5 查看最近5个提交日志git log --grep=key 或 git log --grep key 按关键字key查找日志(区分大小写)git log --author=jh 显示提交者“jh”的所有提交日志git log file 查看文件file所有修改历史git show commit 查看commit的修改内容 git sho...
2020-07-29 09:28:56 194
原创 ubuntu 配置 Git
1、安装 Gitsudo apt-get install git使用上面的命令安装Git, 在安装前可以用 git version 命令查看git是否已经安装过2、配置Git环境git config --global user.name "name"git config --global user.email "email"设置你的用户名和邮箱,在提交代码的时候会显示出来。上面的命令中双引号里面分别写自己的用户名和邮箱地址。我的设置如下:现在就可以使用git clone 命.
2020-07-28 14:40:20 316
原创 waiting for unattended-upgr to exit / Could not get lock /var/lib/dpkg/lock-frontend
unbuntu更新或执行apt时出现waiting for unattended-upgr to exit说明apt正在被占用或是之前使用且异常退出,删除下面几个lock文件就ok了1、sudo rm /var/lib/apt/lists/lock2、sudo rm /var/cache/apt/archives/lock3、sudo rm /var/lib/dpkg/lock如果删除上面lock文件还是不行,可以执行下面命令查看和apt相关的进程ps afx|grep apt.
2020-07-22 14:18:19 4539
原创 库函数调用和系统调用的区别
简单地说库函数调用是编程语言或者程序的一部分,而系统调用是操作系统的一部分库函数调用: 1、调用函数库中的程序 2、与用户程序相联系 3、在用户地址空间执行 4、运行时间属于“用户”时间 5、是过程调用,开销较小系统调用:系统调用通常用于底层文件访问,例如在驱动程序中对设备文件的直接访问。系统调用是操作系统相关的,因此一般没有跨操作系统的可移植性。常见接口...
2019-07-31 16:20:35 666
原创 C++校招面试常问问题(三)——操作系统和网络编程
操作系统 进程和线程的区别: 进程是操作系统资源分配的最小单位;线程是任务调度的最小单位(线程也叫做轻量级进程) 每个进程都有独立的内存空间;线程则共享所属进程的空间和资源(所以进程间切换消耗比线程大) 每个进程包含一个或多个线程;线程则是所属进程中的不同执行路线 进程通信 管道:用于父子(兄弟)进程间通信,半双工有名管道...
2019-07-16 22:09:54 358
原创 C++校招面试常问问题(二)——数据结构/算法
数据结构/算法 链表 链表的插入删除,单链表和双向链表反转链表(逆序输出链表)、链表是否有环、取链表的最后k个数 hash表 hash表的原理解决冲突的策略:开放地址法、链表法、建立公共溢出区hash表相关的算法题(大数据 查找)//建立一个简单的hash表typedef struct node{ int value; struct ...
2019-07-16 10:43:50 546
原创 C++校招面试常问问题(一)——C++基础
C++基础 static的作用 改变作用域(隐藏)和生命周期修饰全局变量:只在本文件中可见(可使用),其他文件不可见,使其他文件中可出现同名全局变量防止混淆 修饰局部变量:说明变量是静态的,程序开始时就创建,结束时才释放(正常局部变量是跳出作用域就被释放) 修饰函数:只在本文件中可见(可调用),其他文件不可见,使其他文件中可出现同名函数防止混淆 修饰类成员变...
2019-07-14 21:00:51 580
原创 Qt on android 蓝牙开发(控制小车)
因为要做一个用蓝牙控制小车的app,就用着QT搞了下,网上关于QT蓝牙开发的资料比较少,我在这里记录下过程希望对看到了人有所帮助首先在项目文件里添加QT += bluetooth这样就可以用QT关于蓝牙的一系列类了,接下来在添加头文件#include <QtBluetooth/qbluetoothglobal.h>#include <Qt...
2018-05-23 21:34:00 1611 3
原创 qt程序运行时的错误error:undefined reference to `_imp___ZN10QTcpSocketD1Ev‘
出现的错误: undefined reference to `_imp___ZN10QTcpSocketD1Ev' undefined reference to `_imp___ZN10QTcpSocketC1EP7QObject' undefined reference to `_imp___ZN10QTcpSocketD1Ev' undefined ref...
2018-04-24 21:20:00 1757
原创 QT 实现在QLabel上画图
QT之所以不能再任意控件上绘图是因为QT的事件过滤器把控件的绘图事件给过滤了。在paintevent()函数中,通常需要设置QPainter对象,创建QPainter对象的同时需要指定绘图设备,即继承自QPainterDevice的子类作为绘图设备,绘制出来的图形将在这个设备上进行显示,Qt一共提供了4个这样的类,分别是QPixmap,QBitmap,QImage,和QPicture...
2018-04-12 20:49:00 372
原创 linux文件访问权限(像rw-r--rw-是什么意思)
Linux的文件访问权限分为读、写、执行三种r:可读(4)w:可写(2)对目录来说则可新建文件x:可执行(1)对目录来说则可进入该目录可用 ls -l 查看文件像上图的-rw-r--rw- 其中的第一个字符表示的是文件类型(- 表示普通文件,d 表示目录文件,c: 为字符串设备,若路由器等设备b: 块设备,硬盘、光驱等)后面的九个字符就是表示的文件权限了...
2018-03-18 19:04:00 4874
原创 mysql安装及常见问题
下载了MySQL的压缩包,开始配置的时候遇到一大堆问题,下面记录下,也希望对遇到同样问题的你有帮助开始将压缩包解压到指定文件夹,然后建立一个txt文件命名为my.ini,写入下面的内容[mysql]# 设置mysql客户端默认字符集default-character-set=utf8 [mysqld]#设置3306端口port = 3306 # 设置m...
2017-10-19 21:31:00 114
原创 建立可打印中文的数据库
一般的数据库的字符型数据的编码都是latinl,这是不支持中文的而支持中文的字符编码是utf-8和gbk要想让数据库里的表可以显示中文就必须在建立数据库的时候指定字符编码1 create database bb charset=utf8;或者1 1 create database bb charset=gbk; 这里创建了一个叫bb的数据库,注意这里的ut...
2017-09-21 21:38:00 114
原创 QT生成随机数
QT生成随机数和C语言差距不大,C语言用srand()和rand(),QT是用Qsrand()和qrand();QT生成随机数的格式是:qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));qrand();这里因为有QTime()所以要加头文件#include<QTime>,而qsrand和qrand这两个函数则在#inc...
2017-09-15 19:57:00 178
原创 C语言的一些输出格式
%e printf()的一种输出格式 科学表示的一种浮点数 1.24==1.240000e+000 1240000==1.240000e+006 指数不得超过3位数 0.00124==1.240000e-003%g printf()的一个输出格式类型,它表示以%f,%e中较短的输出宽度输出单、双...
2017-09-10 22:02:00 420
原创 C语言 左值、右值
左值就是在赋值中可以放在赋值操作符两边的值右值则是只可以放在赋值操作符右边的值++i是直接给i变量加1,然后返回i本身,因为i是变量,所以可以被赋值,因此是左值表达式i++现产生一个临时变量,记录i的值,而后给i加1,接着返回临时变量,然后临时变量不存在了,所以,不能再被赋值,因此是右值表达式...
2017-09-10 22:01:00 133
原创 c语言清屏、等待、随机函数
清屏函数#include<conio.h>system("CLS");或system(cls);等待函数#include<windows.h>Sleep(5000);//等待5秒,Sleep()以毫秒为单位随机数函数#include <time.h> ...
2017-09-10 21:59:00 313
原创 c语言一个显示星号的函数(隐藏密码)
显示星号void star(char p[]) //显示星号{ int j; while((p[j] = getch())!='\r') { if(p[j] !='\b') { printf("*"); j++; } else { printf("\b \b"); j--; } } p[j]='\0';...
2017-09-10 21:56:00 407
图片添加能防截图拍照的盲水印
2022-12-02
qt 禁用系统热键但不影响键盘事件的响应
2022-06-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人