自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zy1024的博客

千里之行,始于足下

  • 博客(99)
  • 资源 (6)
  • 收藏
  • 关注

原创 软件开发必会技能:简单工厂模式、工厂方法模式、抽象工厂模式,这一篇就够了

工厂模式一般分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。一、简单工厂模式简单工厂模式,工厂类是创建产品的,它决定创建哪一种产品。举个例子,在上下位机通信应用程序中,一般都会要求软件支持多种连接方式,网口、串口等。这时我们去设计软件的话第一想到的是简单工厂模式,由工厂决定创建哪种连接方式,且同一时间只能创建一种连接模式。#include <QCoreApplication>#include <QDebug>// 通信设备接口类class Device{pu

2021-12-11 16:19:46 2833

原创 Hp-Socket高性能网络库介绍零--整体结构

一、目录结构介绍--DOC:目录下是官方提供的文档,包括Development Guide--DotNet:.net项目的开发步骤,可以直接通过nuget部署HPsocket.net--Linux:Linux的工程,包括android build--MacOS:mac环境的开发步骤--Windows:Windows的工程,最常用的开发环境--Bin:编译好的dll和lib--Demo:官方提供的使用示例,包括PUSH模型示例、 PULL模型示例、 PACK模型示例、 性能测.

2021-03-31 18:26:00 6463 4

原创 vs2010下配置HPSocket教程,详细截图附入门demo源码

HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 A...

2019-07-05 16:11:47 5524

原创 pyqtgraph入门简介,pyqtgraph和matplotlib、pyqwt5的比较

PyQtGraph被大量应用于Qt GUI平台(通过PyQt或PySide),因为它的高性能图形和numpy可用于大量数据处理。特别注意的是,pyqtgraph使用了Qt的GraphicsView框架,它本身是一个功能强大的图形系统;我们将最优化和简化的语句应用到这个框架中,以最小的工作量实现数据可视化。

2022-10-10 11:24:31 2520 1

原创 git 常用操作

一、detaced head处于游离状态1.创建一个临时分支(在游离状态下提交commit会产生新的ID,比如fd72b0b,应以新的ID为准)git branch temp fd72b0b2.切换到需要合并的分支(例如master)git checkout master3.切换了分支之后我们需要将temp合并到检出的分支(master)git merge tmp4.最后我们只需要push对应的master分支中提交的信息。删除刚刚创建的临时分支git branch -d tmp二、

2022-05-31 11:02:14 1433

原创 利用QWidget的隐藏属性实现简单折叠对话框的效果

很多软件和用户交互的窗口都有折叠功能。打开折叠区域可以显示更多的信息。比如下图非常容易实现,添加一个checkable的按钮;然后通过按钮是否被按下属性控制扩展区域的隐藏和显示;最后加入合适的布局即可。Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){ ui->setupUi(this); extension = new QWidget; QVBoxLayou

2022-05-12 15:15:15 1086

原创 在vs中开发QT时使能控制台输出的方法

在vs中开发QT时使能控制台输出的方法用VS开发QT应用程序时出现需要看调试信息,我们第一想到的是qDebug(),但是如果是在release环境下,或者不能直接看到qDebug控制台的情况下,该怎么看到调试信息呢?我们想到系统标准输出,标准输入和标准错误,分别对应stdout, stdin, stderr。我们可以用fprintf(stderr," stderr test\n");fprintf(stdout," stderr test\n");方法一解决方法: 工程->属性-&gt

2021-11-29 11:35:01 2469

原创 Qt中菜单的使用

Qt中菜单的使用在桌面应用程序开发中,主窗口的布局从上往下一般都会有菜单栏,工具栏,主操作区,状态栏等四大块。本篇主要说明菜单栏的使用方法。一、介绍Qt中要建立菜单,有三个类很重要:QMenuBar,QMenu,QAction** QMenuBar **: 就是所有窗口的菜单栏,在此基础上添加不同的QMenu和QActionQMenu: 菜单栏里面菜单,可以显示文本和图标,但是并不负责执行操作,就是我们能看到的最外面的菜单,鼠标点击的时候会弹出菜单项,在点击对应的菜单项才会有需要执行的操作。Q

2021-10-29 19:01:29 2183

原创 Qt Undo Framework学习,实现撤销、重做功能

0. 引言在交互应用程序中撤销和重做(Undo/Redo)能力是很重要的。像常见的软件Office,AutoCAD等,有了撤销功能,用户体验更舒服。一般都会使用Command模式来实现这一功能。1. Qt undo/redo框架特性基于Command设计模式支持命令压缩和命令合成mergeWith2. Qt Undo框架包含的类QtUndoCommand - 用于修改document的对象的基类QtUndoStack - QtUndoCommand对象的堆栈QtUndoGrou

2021-09-26 19:37:39 3144 1

原创 Qt Model/View结构原理之QAbstractTableModel基本使用,详细代码

一、Model/View基本原理GUI应用程序开发中往往少不了列表框,表格,树形结构等表现形式的应用。当然Qt中也提供了相应的视图类QListView,QTableView, QTreeView,这些类使用模型/视图Model/View架构来管理数据之间的关系及其呈现给用户的方式。这种体系结构引入的功能分离为开发人员提供了更大的灵活性来定制数据项的表示,并提供了一个标准模型接口,允许在现有的视图中使用广泛的数据源。Data:是实际数据,可以数据库的一个数据表或SQL查询结果,内存中的StringLis

2021-08-31 18:45:32 5556 1

原创 QSignalMapper的用法

QSignalMapper的用法定义QSignalMapper这个类用的不是很多,但是我们也要理解下,大概知道它的用法。从名字理解应该是信号的映射。Qt助手的解释如下:The QSignalMapper class bundles signals from identifiable senders.意思就是打包来自可识别发送发的信号。QsignalMapper类收集一组信号,并且重新在发送出信号,在发送的信号是经过包装的,使用发送对象相对应的整数、字符串或小部件作为参数。意思是可以简化我们的代

2021-08-21 15:20:36 517 1

原创 ubuntu下Qt编程qmake的使用详解

qmake介绍一个Qt应用程序的编译大概需要执行3步: qmake -project、qmake、make。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FbJxc1oH-1629351132660)(C:\Users\jc\AppData\Roaming\Typora\typora-user-images\image-20210819131724642.png)]其中qmake是Qt提供的编译工具,qmake有两个作用:根据源文件生成平台无关的.pro文件在根据

2021-08-19 13:33:18 2862 1

原创 qt creator插入代码块快速注释snippets代码片段的功能

定义任何开发IDE中,一般都提供snippets代码片段的功能,就是为了方便快捷的插入格式一致的代码段或者注释段。步骤qt creator 添加头文件,源文件的注释功能。在qt creator的"工具"->“选项”->“Snippets”,添加hfile,cppfile作为触发条件。hfile一般是对头文件的注释,头文件的注释一般包括license和头文件信息的描述,参考如下/*** This file is part of the QtWidgets module of t

2021-08-18 10:03:53 1914 1

原创 手动实现std::shared_ptr源码

一、Shared_ptr 定义从c++11开始,std给我们提供4中智能指针auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,其中最常用的为unique_ptr、shared_ptr,今天我们看下如何用代码实现shared_ptr的基本功能。首先share_ptr也是一个类。可以实现多个指针指向同一对象(引用计数),有以下3个特性。每使用一次,内部引用计数加1;每析构一次,内部引用计数减1,;引用计数减为0时,自动释放原生指针所指向的内存。二

2021-08-13 16:58:36 1051 2

原创 ubuntu18.04下pycharm IDE安装并添加桌面快捷方式

ubuntu18.04下pycharm IDE安装1.jet brains官网下载社区版本即可,https://www.jetbrains.com/pycharm/download2.复制到虚拟机环境ubuntu的目录下,解压 tar -xzvf pycharm-community-2021.23.安装,cd到bin目录下,网上说运行pycharm.sh是安装步骤,但是可能是因为我下载的社区版,运行pycharm.sh直接就启动了,可能现在社区版就是绿色免安装的了。tips:python3.6

2021-08-13 14:43:06 549

原创 vmware虚拟机中ubuntu18安装跨平台开发环境qt creator

安装步骤qt官网或者清华源镜像地址,都可以的。建议还是清华源镜像,网速比较快。https://www.qt.io/downloadhttps://mirrors.tuna.tsinghua.edu.cn/找到以下路径:Index of /qt/official_releases/online_installers/,下载qt-unified-linux-x64-online.run拷贝到ubuntu下:chmod +x赋予可执行权限chmod +x qt-unified-linux

2021-08-09 18:11:56 2999

原创 C++11函数模板function,bind使用

一、定义std::function是函数模板类(是一个类);std::bind是函数模板(是一个函数);类模板 std::function 是通用多态函数封装器。std::function 的实例能存储、复制及调用任何可调用 (Callable) 目标,其中包括:函数、 lambda 表达式、 bind 表达式或其他函数对象,还有指向成员函数指针和指向数据成员指针。它也是对 C++ 中现有的可调用实体的一种类型安全的包裹(相对来说,函数指针的调用不是类型安全的)二、std::function,

2021-08-06 16:22:41 389

原创 C++11智能指针unique_ptr用法介绍

一、概述C++ 标准模板库 STL(Standard Template Library) 一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,其中 auto_ptr 是 C++98 提出的,C++11 已将其摒弃,并提出了 unique_ptr 替代 auto_ptr。虽然 auto_ptr 已被摒弃,但在实际项目中仍可使用,但建议使用更加安全的 unique_ptr,后文会详细叙述。shared_ptr 和 weak_ptr 则是 C+11

2021-08-06 00:08:32 460

原创 C++11智能指针shared_ptr用法介绍

一、概述C++ 标准模板库 STL(Standard Template Library) 一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,其中 auto_ptr 是 C++98 提出的,C++11 已将其摒弃,并提出了 unique_ptr 替代 auto_ptr。虽然 auto_ptr 已被摒弃,但在实际项目中仍可使用,但建议使用更加安全的 unique_ptr,后文会详细叙述。shared_ptr 和 weak_ptr 则是 C+11

2021-08-05 18:03:46 373

原创 Qt C++混合编程 (2) Qt通过QWebEngineView与JS交互

C++调用js很简单 m_view->page()->runJavaScript(QString("showPie(%1)").arg(sHtml));js调用C++函数//和Qt交互部分new QWebChannel(qt.webChannelTransport, function(channel) { window.bridge = channel.objects.bridge_name; })//开始调用C++中函数 if(br.

2021-08-04 17:32:27 5895 2

原创 Qt C++混合编程 (1) Qt通过QWebengineView显示web页面

一、 背景QWebkit 5.5之前浏览器开发使用的QWebkit;Qt 5.5同时支持QWebkit 和QWebEngine;Qt 5.6之后不再支持QWebkit,只支持QWebEngine,QWebEngine基于chrome内核,功能更加完善。我们现在开发一般都是基于QWebEngine。在windows平台下 ,Qt 的 QWebEngine 只支持 msvc ,不支持 mingw,说是因为谷歌chrome 团队不喜欢mingw。既然谷歌放弃了mingW,QT也就放弃了。二、QWebEn

2021-08-03 20:55:38 4044

原创 最详细的Qt多线程的三种方法之二QtRunnable::run()+QThreadPool

一、简介QRunnable这是一个轻量级的抽象类,用于开始一个另外线程的任务。这种任务是运行过后就丢弃的。由于这个类是抽象类,我们需要继承QRunnable,然后重写其纯虚函数QRunnable::run(),用法同Qthread类似。二、使用方法通过调用QThreadPool::start(runable)函数,我们将一个Qrunable对象放入QThreadPool的执行队列。一旦有线程可用,线程池将会选择一个QRunnable对象,然后在那个线程开始执行。2.1 实例化QRunnable方

2021-08-02 17:20:09 2585

原创 最详细的Qt多线程的三种方法之三QtConcurrent::run()+QThreadPool

一、简介QtConcurrent这是一个高级 API,构建于QThreadPool之上,它提供更高层次的函数接口(APIs),使所写的程序,可根据计算机的CPU核数,自动调整运行的线程数量。通常用于处理大多数通用的并行计算模式。注意,QtConcurrent是一个命名空间而不是一个类,因此其中的所有函数都是命名空间内的全局函数。二、使用方法1. 添加concurrent从Qt4.4之后,QtConcurrent从core模块中独立出来,作为单独的模块。所以先要在.pro中添加 QT += con

2021-08-02 16:48:04 5167 9

原创 最详细的Qt多线程的三种方法之一QThread

一、多线程目的QThread类提供了一个与平台无关的管理线程的方法。在Qt中建立线程的主要目的就是为了用线程来处理那些耗时的后台操作,比如大量运算,复制大文件,网络传输等。二、Qt多线程使用方法使用Qt框架开发应用程序时,使用QThread类可以方便快捷地创建管理多线程。而多线程之间的通信也可使用Qt特有的“信号-槽”机制实现。QThread的使用方法有如下两种:1. 继承QThread类2. QObject::moveToThread()2.1 继承QThread方法第一种方法很简

2021-07-30 17:36:42 4685 2

原创 Qt信号槽中connect五个重载函数详细说明,连接类型Qt::DirectConnection,Qt::QueuedConnection,附详细代码

想说在前面的两句话。信号槽是 Qt 框架引以为豪的机制之一。熟练使用和理解信号槽,能够设计出解耦的非常漂亮的程序,有利于增强我们的程序设计能力。信号与槽是Qt学习的重点,但不是难点。本篇介绍Qt5中信号槽中connect函数的使用方法,以及connect第五个参数Qt::ConnectionType的使用。1. QObject::connect函数Qt中信号与槽与经典的观察者模式非常相似,首先我们复习下观察者模式,有一个报纸类Newspaper,有一个订阅者类Subscriber。Sub

2021-07-30 11:04:53 4979

原创 如何把本地已有Qt C++项目和gitee码云远程仓库相关联

把本地项目文件夹和gitee远程仓库相关联1步骤1.1 git init在本地工程目录下右键,选择git bash here,调出git控制台,输入git init命令创建.git文件[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JbJZMWXf-1622535709417)(./assets/1.png)]1.2 添加.gitignore.gitignore的主要作用是忽略git add .添加所有文件时的过滤。手写也可以,肯定不全。我有两种方法:1)拷贝别的同

2021-06-01 16:22:08 1343

原创 linux下socket演示程序

linux下socket演示程序

2021-05-14 18:39:11 87 1

原创 Window下socket演示程序

Window下socket演示程序

2021-05-14 18:38:37 114

原创 套接字有哪些类型?socket有哪些类型?

这个世界上有很多种套接字(socket),比如 DARPA Internet 地址(Internet 套接字)、本地节点的路径名(Unix套接字)、CCITT X.25地址(X.25 套接字)等。但本教程只讲第一种套接字——Internet 套接字,它是最具代表性的,也是最经典最常用的。以后我们提及套接字,指的都是 Internet 套接字。根据数据的传输方式,可以将 Internet 套接字分成两种类型。通过 socket() 函数创建连接时,必须告诉它使用哪种数据传输方式。Internet 套接字其

2021-05-14 18:37:04 515

原创 socket是什么?套接字是什么?

什么是 socket?socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。我们把插头插到插座上就能从电网获得电力供应,同样,为了与远程计算机进行数据传输,需要连接到因特网,而 socket 就是用来连接到因特网的工具。socket 的典型应用就是 Web 服务器和浏览器:浏览器获取用户输入的 URL,向服务器发起请求,服务器分析接收

2021-05-14 18:33:07 331

转载 使用vscode开始Markdown写作之旅

本文适用于以下对象——从没用过Markdown的打算开始用Markdown的日常使用Windows平台的Markdown的介绍大家可以参考上一篇文章;本文的目的,则是引导大家开始Markdown的写作。1. 下载和安装vscode1.1. 下载随便找个搜索引擎,搜vscode,不出意外,第一个结果应该就是vscode的官方网站,长这样——我相信你既然决定开始使用Markdown了,下载安装个软件应该难不倒你……吧?需要注意的是,安装的时候,下面这两个可选项建议勾上——有什么用呢?勾了

2021-05-14 13:26:25 419

原创 Hp-socket高性能网络库九--linux下编译和安装

Hp-socket高性能网络库九--linux下编译和安装

2021-04-01 16:39:15 965

原创 Hp-socket高性能网络库八--udp组件和参数配置

Hp-socket高性能网络库八--udp组件和参数配置

2021-04-01 16:38:42 872

原创 Hp-socket高性能网络库七--http组件Cookie管理

Hp-socket高性能网络库七--http组件Cookie管理

2021-04-01 16:37:34 343

原创 Hp-socket高性能网络库六--http组件和监听器事件

Hp-socket高性能网络库六--http组件和监听器事件

2021-04-01 16:36:50 449

原创 Hp-socket高性能网络库四--ssl组件运行环境、握手介绍

Hp-socket高性能网络库四–ssl组件和运行环境

2021-04-01 16:34:28 1533

原创 Hp-socket高性能网络库三--tcp组件pack接收模型

Hp-socket高性能网络库二–tcp组件pack接收模型

2021-04-01 16:33:58 2735

原创 Hp-Socket高性能网络库一--tcp组件push接收模型

一、tcp传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。二、tcp网络通信程序中需要考虑的问题一般tcp形式网络通信程序中都会有以下问题需要考虑:1.收发缓冲区的设计2.阻塞、非阻塞socket的选取3.select/IOCP完成端口模型(win)4.断包,粘包处理5.心跳包设计6.客户端短信重连7.清除无效的死链8.shutdown和优雅关闭9.等等。。。本篇我们主

2021-04-01 15:01:28 2103 1

原创 Hp-socket高性能网络库二--tcp组件pull接收模型

本篇vs2019开发环境,纯C语言编写,对新手非常友好。二、开发步骤2.1 新建项目工程打开vs2019新建c++空项目TcpServer_push,我们选取hp-socket最原生的push接收模型,对push、pull、pack不清楚的可以查看上一篇《Hp-Socket高性能网络库介绍一》,里面有详细描述三者的区别。2.2添加hp-socket头文件和lib,dll文件到项目中2.2.1添加头文件复制ldcsaa-HP-Socket-master\HP-Socket\Windows\Inc

2021-04-01 09:32:30 1739 1

原创 Openssl 之内存分配

用户在使用内存时,容易犯的错误就是内存泄露。当用户调用内存分配和释放函数时,查找内存泄露比较麻烦。 openssl 提供了内置的内存分配/释放函数。如果用户完全调用 openssl 的内存分配和释放函数,可以方便的找到内存泄露点。 openssl 分配内存时,在其内部维护一个内存分配哈希表,用于存放已经分配但未释放的内存信息。当用户申请内存分配时,在哈希表中添加此项信息,内存释放时删除该信息。当用户通过 openssl函数查找内存泄露点时,只需查询该哈希表即可。用户通过 openssl 回调函数还能处理

2021-03-30 16:00:03 220

HPSocketDemo1.rar

今天我把我使用的关于HPSocket部分有关记录下来以备忘。目前最新版本5.7.1,我下载的是5.6.1版本。 1.首先下载HP-Socket-master开发包,里面有所有关于HPSocket相关的文档和DEMO,很全。 2.打开vs2010,新建Win32控制台应用程序,名字HpSocketDemo1; 将HP-Socket-master\Windows目录下Common,Src两个文件夹拷贝到工程目录下; 拷贝HP-Socket-master\Windows\Demo\Global文件夹至工程目录下,如下

2020-09-23

CefMFCDemo.rar

libcef3在vs2017下的配置,window和js交互实现,超详细。因为libcef.dll太大,所以没放到代码中中,大家可以对照教程进行libcef自己编译。

2020-04-07

OpenCVCam.rar

选择版本的opencv2.4.9+vs2010,都比较老,但这并不影响功能。主要实现摄像头的打开关闭操作,并实现简单的纸张检测算法。主要用于高拍仪文档识别、扫描等场景。

2020-03-26

CowBoyDemo.rar

本demo程序我们主要介绍CowBoy.Sockets的源码结构,及搭建一个简单的网络服务器的过程。可以看到搭建Tcp的网络服务主要用到源码Tcp目录下的Framing 和 Server部分,这里我们采用APM方式。

2020-03-24

HPSocketDemo1.rar

今天我把我使用的关于HPSocket部分有关记录下来以备忘。目前最新版本5.7.1,我下载的是5.6.1版本。 1.首先下载HP-Socket-master开发包,里面有所有关于HPSocket相关的文档和DEMO,很全。 2.打开vs2010,新建Win32控制台应用程序,名字HpSocketDemo1; 将HP-Socket-master\Windows目录下Common,Src两个文件夹拷贝到工程目录下; 拷贝HP-Socket-master\Windows\Demo\Global文件夹至工程目录下,如下

2020-03-24

zlib_demo.tar

centos7下安装配置zlib,zlib版本1.2.11,并实现简单的压缩文件,解压缩文件操作的demo,demo的开发环境CLion

2020-03-20

空空如也

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

TA关注的人

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