- 博客(126)
- 资源 (9)
- 问答 (1)
- 收藏
- 关注
原创 c++/c语言(高质量程序设计指南林锐建议总结)
第四章C++/C程序设计入门. 4.1 在使用运算符&&的表达式中,要尽量把最可能为false中的子表达式放在 &&的左边;同样在使用运算符“||”的表达式中,要尽量把最可能为true的表达式放在“||”的左边。因为c++/c对逻辑表达式的判断采取“突然死亡法”(猝死法); ***4.2*** 在if/else中,要尽量把为true的概率较高的条件的条件判断置...
2020-03-28 20:29:57 1152
原创 makefile必看
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一...
2020-03-11 11:42:54 232
原创 JS基础知识篇1
JS的的变量名是严格区分大小写的,所有的变量都是由var声明,在JS中变量可以不试先声明,而在使用时根据变量的实际作用来确定其所属的数据类型,但是建议在使用变量前就对其声明,因为声明变量最大的好处就是能及时发现代码中的错误。变量是指程序中给一个已经命名额存储单元,他的主要作用就是为数据操作提供存放信息的容器,对于变量的使用首先必须明确其命名规则、声明方法其作用域。(3)单引号定界的字符串可以含有双引号。变量的作用域,分为全局变量和局部变量。(2)双引号括起来的一个或多个字符。(4)双引号定界的字符串。...
2022-07-17 14:00:18 236 1
原创 玩转Qt样式表
抛出问题:怎么才能使用样式表。Qt style类似于CSS,使用方法。菜鸟:(1)直接用Qt的设计师填写相关样式,不在过多阐述。(2)setStyleSheet(“”)这个函数可以设置样式表setStyleSheet 注意事项:样式表一行写不下可以这样写。使用这个函数之前的样式就已经覆盖。this->setStyleSheet("QPushButton{color:#FFFFFF;}" "QPushButton:hover{color:red;}" "")使用这个函
2022-05-12 21:32:56 283
原创 Effective C++ 55个做法
声明:本内容来自该书籍。1.让自己习惯C++1. 视C++为一个语言联邦2. 尽量以const、enum、inline 替换#define3. 尽可能使用const4. 这里写自定义目录标题2.析构、构造、赋值运算5.了解C++默默编写并调用哪些函数6.若不想使用编译器自动生成的函数,就该明确拒绝7.为多态基类声明virtual析构函数8.别让异常逃离析构函数9.绝不在构造和析构过程中调用virtual函数10.领operator= 返回一个reference to *this1
2022-05-04 20:00:31 167
原创 深入理解信号与槽
信号和槽机制是Qt编程的基础1.信号和槽原理信号与槽是Qt对象间通信的一种机制,是Qt的核心特性,也是Qt与其他应用框架最显著的区别。在GUI编程中,当我们操作控件时,我们希望其他控件能知道作出反应,或者任何对象都可以和其他对象通信,简单来说,就是点击最大化,调用了MAX()这函数。在有些较老的GUI框架中,实现这种通信是采用回调函数。回调函数是C语言函数的一种应用,但是回调函数存在两个缺陷。我们不能保证持有回调函数的业务处理函数会使用正确的参数来调用回调函数的指针。回调函数使得业务处理函数和
2022-05-04 20:00:03 684
原创 测试人员一般流程
入门级初级测试人员测试执行流程(1)测试在开发阶段进入测试用例的编写工作(2)如果通过测试用例评审会议,开发将提供系统测试版本包的版本路线(3)进入测试执行阶段,我们需要先对开发版本进行冒烟测试。冒烟测试的定义是将测试用例内最主要、最基础的功能及业务点罗列出来,用作冒烟测试用例。当开发提供的测试版本通过冒烟测试时,正式进入整体执行阶段。如果冒烟测试不通过,则将测试版本打回,开发修改bug后再次提交版本至冒烟测试通过为止。(4)冒烟测试通过后正式进入整体测试阶段。大多数情况下,测试人员会进行系
2022-03-04 22:34:21 256 1
原创 Qt 多线程知识点整理
先来分析下进程和线程的区别(1)进程与单个程序类似,可以由操作系统直接执行(2)线程是一个进程的子集,一个进程可以包含多个线程(3)通常情况下,不同的进程彼此是无关的,而不同的线程共享内存和资源(注意可以通过操作系统提供的手段实现彼此间的交互)应用举例:1)进度条,工作剩余的百分比,完成搜索所用的耗时等2)计算机视觉中的视频或者摄像机处理,需要及时的正确读取处理显示视频最好的办法就是将实际的任务跟GUI分解到不同的任务中。1.Qt中的多线程一般来说Qt有两种不同的多线程处理。基于QTh
2022-02-27 20:43:13 2604
原创 Qt内存泄露工具Heob安装使用
官方heob链接Qt heob官方文档heob官方下载链接个人资源免费下载,可以直接去下载1.安装Qt界面工具包含需要把heob path的路径进行引入。2.使用使用debug运行程序,出现cmd窗口关闭程序,生成测试报告,leaks.xml文件并且在Qt creator 中可以看到相关信息...
2022-02-25 17:13:11 4728 10
原创 jforg和nexus安装
1 制品仓库产品Artifactory是一款二进制存储管理工具,用来管理构建构建工具(如:gradle)等所依赖的二进制仓库,以方便管理第三方库和发布目标版本库,从而提高软件开发效率。它提供大量的插件以利于和不同工具之间的整合,内部使用权限管理更加安全,并支持高并发等等特性。优点:功能全面,方便集成缺点:收费,而且很贵。免费的版本功能阉割严重,目前开源可用的只有几个,开源并不支持conanNexus也是一款二进制存储管理工具,与Artifactory相比,免费。可以集成jekins、conan等
2022-02-21 23:40:41 810
原创 conan安装使用
1.安装python建议3版本以上,自行下载安装2.pip安装conan 或者可以指定临时的源pip install conan -i http://mirrors.aliyun.com/pypi/simple/ //阿里云镜像3.添加远程库默认conan会添加一个远程库:conan-center:可以添加库conan remote add vomma http://192.168.1.119:8081/repository/vomma/4.设置远程库的账号密码conan use
2022-02-21 23:22:33 3455
原创 Qt QTreeWidget 子项显示图片
子项添加一个widget ,widget中使用水平布局,在widget中增加两个按钮,使用lambda表达式创建信号和槽。ui->setupUi(this); QTreeWidgetItem *item = new QTreeWidgetItem(ui->treeWidget); QTreeWidgetItem *itemchild = new QTreeWidgetItem(item); QWidget *widget = new QWidget(); QH
2021-11-17 17:28:17 1600
原创 github入门与实践
以下为github入门与实践的总结.1.换行符处理:在windows中是以CRLF(carriage return +line feed)换行。MAC或者LInux中是以LF(Line Feed)换行的,git会自动转换这些换行符。2.git安装初始设置(1)设置姓名和邮箱地址git config --global user.name "name"git config --global user.email "email@example.com"(2)提高命令的可读性将color.ui设置
2021-11-13 21:08:21 750
转载 常见排序算法
堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。桶排序是计数排序的升级版。插入排序通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入 ,如此重复,直至完成序列排序。(2)统计数组中每个值为i的元素出现的次数,存入数组C的第i项。
2021-10-08 14:59:43 71
原创 线性结构、树结构、图结构
1.数组和顺序表2.单链表3.循环链表4.双向链表5.队列和栈6.树结构的特性7.二叉树的遍历8.哈夫曼树和哈夫曼编码9.二叉树排序10.图结构的特性11.图的遍历
2021-10-08 14:56:00 861
原创 面向对象、模板与泛型编程
面向对象、模板与泛型编程1.面向对象基本概念2.类的声明3.构造函数和析构函数4.函数重载5.运算符重载6.继承7.虚继承8.多态与虚函数9.模板10. 顺序容器11.容器适配器12.关联容器13.智能指针...
2021-10-08 14:47:41 141
原创 指针和引用
指针和引用1.指针以及应用2.指针常量与常量指针3.指针数组与数组指针4.指向指针的指针5.函数指针6.this指针7.空指针和野指针8.引用
2021-10-08 14:37:24 36
原创 C++知识复习(一)
C++程序设计基础1.程序的编译和执行2.变量3.条件语句和循环语句4.宏定义和内联5.sizeof的使用6.内存分配7.位运算8.main函数
2021-10-08 14:31:33 53
原创 对yuv文件使用OpenGLShader播放
一、相关知识着色器语言GLSL1.顶点着色器是针对每一个顶点执行一次,用于确定地顶点的位置。片元着色器是针对每个片元执行一次,用于确定每个片元的颜色2.语法基本与C相同3.完美的支持向量和矩阵操作4.GLSL提供了大量的内置函数来提供丰富的扩展功能。5.它是通过限定符操作来管理输入输出类型。二、代码:首先创建widget,创建类并选择基类为openGLWidget。#include "XVideo.h"#include <QDebug>#include <QTimer
2021-04-06 21:29:30 190
原创 像素尺寸更改和音频重采样
#include <iostream>#include <thread>extern "C"{#include "libavformat/avformat.h"#include "libavcodec/avcodec.h"#include "libswscale/swscale.h"#include "libswresample/swresample.h"}using namespace std;#pragma comment(lib,"avformat.lib")
2021-04-06 11:15:12 103
原创 音视频上下文配置及avcodec_send_packet和avcodec_receive_frame完成音视频解码
#include <iostream>#include <thread>extern "C"{#include "libavformat/avformat.h"#include "libavcodec/avcodec.h"}using namespace std;#pragma comment(lib,"avformat.lib")#pragma comment(lib,"avutil.lib")#pragma comment(lib,"avcodec.lib")
2021-04-06 10:26:06 497
原创 AVFormatContext、AV_read_frame、av_seek_frame
一、AVFormatContext 结构体描述了一个媒体文件或媒体流的构成和基本信息int avformat_open_input(AVFormatContext **ps, const char *url, //URL of the stream to open AVInputFormat *fmt, AVDictionary **options );int re=avformat_open_input(&ic, path, 0 ,0);
2021-04-06 09:10:38 307
原创 使用Qt通过pcm读取音频
一、QAudioOutput的常见函数QIODevice* start(); //开始 void stop(); //停止 void reset(); //重置 void suspend(); //暂停 void resume(); //恢复 int bufferSize() const; //缓冲大小 int bytesFree() const; //缓冲目前有多少数据 int periodSize() const; //内部硬件一次能播放多少
2021-04-06 09:05:27 894
原创 ffmpeg的基本知识
一、什么是Mpeg-4MPEG-4是MPEG格式的一个压缩标准。MPEG-4标准主要应用于视像电话(Video Phone),视像电子邮件(Video Email)和电子新闻(ElectronicNews)等,其传输速率要求较低,在4800-64000bits/sec之间,分辨率为176X144。MPEG-4利用很窄的带宽,通过帧重建技术,压缩和传输数据,以求以最少的数据获得最佳的图像质量。常见的封装格式...
2021-03-30 10:04:39 1085
原创 Qt5编译mysql驱动
设备环境Qt5.12.5 mysql 5.7安装过程不再多讲,常见问题也能找到点击此处编译结果出现次错误,想了半天的错误,结果lib已经编译出来了,拷贝到相应的目录就可以使用。
2020-12-25 10:15:28 200
原创 双击文件实现自动关联
实现的目的:通过点击自己自定义的文件,打开自己编写的系统。要解决问题的步骤分成两步。第一步: 要实现的步骤必须要先修改注册表,这样你才能 双击文件实现文件与系统 的关联。第二步: 假如你已经修改注册表已经成功,你双击文件是会向程序的main函数传递两个参数argv[0]、argv[1]。 第一个参数 为程序的exe文件路径,第二个为你双击文件的路径。因此你可以在你所写的程序中通过argv[1]来打开文件。总结:通过修改注册表,在获得argv[1]参数来实现我们需要实现的功能。第一步注册表修改详细步
2020-10-24 17:28:19 712
原创 mysql整理
1.创建数据库显示数据库show databases;删除数据库drop databases;创建数据库create database home;创建数据库专用用户grant all privileges on 数据库名 *To 用户名@localhost identified by 密码2.创建表登录数据库mysql -u root -p 指定使用数据库use home显示正在使用的数据库select database();创建新表creat
2020-09-29 10:06:47 49
原创 redis基本知识
1.首先准备一台安装好的redis环境的机器。2.字符串的创建、查询和修改创建字符串set key value查询字符串key *读取字符串get key如果key存在则不添加set key value NX修改key里的值set key在字符串后追加字符串append key value提示:value是中文时会自动编程uniocde,key则无所谓。内容有空格需要使用双引号括起来。字符串可以保存数字对value进行数字操作
2020-09-26 10:30:44 75
转载 linux下redis安装
下载地址:http://redis.io/download,下载最新稳定版本。本教程使用的最新文档版本为 2.8.17,下载并安装:$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz$ tar xzf redis-2.8.17.tar.gz$ cd redis-2.8.17$ makemake完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cl
2020-09-26 08:51:57 42
原创 c++设计模式对象性能(六)
对象性能模式面向对象很好的解决了“抽象”的问题,但是必不可免地要付出一定的代价。对于通常情况来讲,面向对象的成本都可以忽略不计。但是某些情况,买你想对象所带来的成本必须谨慎处理。典型模式SingletonFlyweightSingleton单件模式动机(Motivation)在软件系统中,经常有这样一些特殊的类,必须保证他们在西戎中只存在一个实例,才能确保他们的逻辑正确性,以及良好的效率。...
2020-09-21 19:22:32 68
原创 wine5.0安装软件中文无法显示,出现方块
第一步:可以打开终端查看下wine下的fonts是否有内容。第二步:把windows下的fonts文件复制过来。为了方便我已经上传到云盘。直接拷贝复制。重启电脑,完成。
2020-09-21 10:11:07 565
原创 C++设计模式对象创建模式(五)
对象创建模式通过“对象创建”’模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。他是接口抽象之后的第一步工作。典型模式Factory MethodAbstract FactoryPrototypeBuilderFactory Method工厂方法动机(Motivation)在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。如何应对这种变化?如何绕过常规的对象创建方法
2020-09-13 20:13:32 134 1
原创 C++设计模式单一职责模式(四)
单一职责模式:在软件组件的设计中,如果责任划分不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。典型模式DecoratorBridge...
2020-09-13 19:24:22 117
原创 C++设计模式组件协同(三)
GOF分类从目的来看:创建型(Creational)模式,将对象的创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击。结构型(Structural)模式:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击。行为型(Behavioral)模式:通过类继承或者对象来划分类与对象间的职责,从而应对需求变化为多个交互对象带来的冲击。从范围来看类模式处理与子类的静态关系对象模式处理对象间的动态关系从封装变化角度对模式分类组件
2020-09-13 16:38:42 217
原创 c++设计模式面向对象设计原则(二)
面向对象设计原则面向对象设计最大的优势在于抵御变化!什么认识下什么是面向对象理解隔离变化从宏观层面来看,面向对象的构建方式更能适应软件的变化,能将变化所带来的影响减为最小。各司其职从微观层面来看,面向对象的方式更强调各个类的“责任”由于需求变化导致的新增类型不应该影响原来类型的实现——是所谓各负其责。对象是什么从语言实现层面来看,对象封装了代码和数据从规格层面来看,对象是一系列可被使用的公共接口。从概念层面讲,对象是某种拥有责任的抽象。面向对象设计的原则依赖倒置原则(DIP)
2020-09-13 11:15:32 108
原创 C++设计模式(一)
设计模式实现的目标理解松耦合设计思想掌握面向对象设计原则掌握重构技法改善设计掌握GOF核心设计模式什么是设计模式每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。——Christopher Alexander对于程序员来说,要有底层思维和抽象思维。底层思维:向下,如何把握机器底层从微观理解对象构造。主要有以下四点:语言构造 、编译转换、内存模型、运行时机制。抽象思维:向上,如何将我们的周围世界抽象为程
2020-09-13 08:57:34 150
原创 C++中const的基本用法
首先来个常见的面试题const与define的区别?1.编译器处理不同2.存储方式不同3.类型和安全检查不同4.定义域不同5.是否可以做函数参数6.定义后能否取消宏定义可以通过#undef来使之前的宏定义失效const常量定义后将在定义域内永久有效关于const的基本使用用法1.常对象形式:类名 const 对象名[(实参表)] 或者 const 类名 对象名 [(实参表)]注意: 1)常对象成员必须有初值,定义之时必须进行初始化不能在改变。 2)该对象只能
2020-09-07 23:12:27 91
原创 Docker入门(新手进阶)
入门简单需要掌握三个部分容器数据卷、Dockfile、Docker网络。容器数据卷(volume)什么是容器数据卷?因为下载的镜像都是只读的,当使用时会产生一些数据文件,在镜像栈顶部添加一个读写层,容器关闭或重启,这些数据不受影响;volume是存在于一个或多个容器中的特定文件或文件夹,这个目录以独立于联合文件系统的形式在宿主机中存在,并为数据的共享与持久化提供以下便利。...
2020-09-07 23:08:21 94
cicd自动化,使用官方提供脚本文件生成compile_commands.json,供clang工具使用
2022-02-22
GdbPlugins.zip
2020-09-01
用c写的中国象棋,dev就能运行.cpp
2020-05-23
算法设计与分析ch1.rar
2020-05-01
gdb调试二维数组输出不对的问题
2020-05-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人