QT
文章平均质量分 62
月下独奏
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
简易文件系统-用Go语言从零开始设计(四) 文件系统冗余措施 一致性hash算法
一、一致性hash算法一致性Hash介绍 分布式均匀算法--hash性一致算法--hash slot上面是大致介绍,根据自身理解,其只是更随机更均匀的分配。本系统需要同一md5元数据不能分配到同一文件节点中,因此需要对其进行改造。也就是计算元数据key时,会遍历对应key中是否有相同md5值的数据,如果有则寻找下一个key对应的node,直到找到为止。本来一致性Hash能快速根据key获取信息,不用存储Key对应的文件信息,但由于本系统需求,需要存储空间记录信息。Go语言...原创 2021-02-23 18:19:14 · 733 阅读 · 0 评论 -
简易文件系统-用Go语言从零开始设计(三) 文件上传 文件下载 文件删除 文件共享
目录一、文件上传二、文件下载三、文件删除4、文件共享服务之间的通信都是用tcp,定义好数据的结构即可,在其他文章提及过一、文件上传客户端使用QT编写,在上传文件过程中会首先会查询服务器是否有相同md5值文件,有则上传文件的基本数据上传时会预先判断文件的大小,如果大于指定数值则对文件进行分割上传。如果存在相同md5值文件,服务器只需数据库查询对应文件信息将其virtualDataID复制到新文件信息,完成此次文件上传当所有文件块上传完毕后,服务器会合并数据并...原创 2021-02-23 17:52:58 · 702 阅读 · 1 评论 -
简易文件系统-用Go语言从零开始设计(一) 总体结构
简易文件系统-用Go语言从零开始设计(一) 总体结构文章目录简易文件系统-用Go语言从零开始设计(一) 总体结构文章目录前言一、总体设计结构二、数据结构1.目标2.结构介绍总结前言闲来无事,帮写一个项目,经过几天的构思编码最终完成。其中有的设计不太合理,敬请见谅。一、总体设计结构 最基本的结构,用户通过服务器来访问数据,实现了文件上传,新建文件夹,删除文件夹,共享文件,下载文件 功能。一开始设想用户可以直接读取...原创 2021-02-23 16:56:46 · 732 阅读 · 0 评论 -
QT使用GZip进行数据压缩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、编译zlib库1.下载zlib2.编译二、QT导入1.引入库2.导入zlib头文件3.QT使用zlib进行Gzip解压缩代码总结前言之前使用QT进行TCP传输数据,如果碰到大文件的传输会导致传输数据巨大。由于通信格式使用json,其不支持二进制数据的传输,所以要将二进制数据转换为base64进行传输,这样数据量会增加30%左右,因此现在将json格式后的数据使用Gzip进行压缩,节省大量流量一、编译zlib库1.原创 2021-02-16 21:17:06 · 3172 阅读 · 0 评论 -
ubuntu qt提示QMYSQL driver not loaded 的解决方法
qt编译连接MYSQL出现QMYSQL driver not loaded 基本成为普遍现象,网络上大多数解决方案是重新编译驱动,亲身证实是可行方案之一。这里给出更简单的办法,适用于ubuntu,直接安装该deb包,就可以了。ubuntu16.04和ubuntu18.04下亲测通过。其余环境未试,请先执行ldd libqsqlmysql.so命令查看是否是libmysqlclient_r.so.18 => not found,是则可以用本安装包,不是的话就不一定适用。下载地址https:.原创 2020-08-09 00:36:58 · 1306 阅读 · 0 评论 -
简易聊天系统-客户端介绍
桌面客户端由于审美观原因,抄了一个QT开源IM聊天客户端,将其tcp协议改成websocket并加上自己需要的功能。源地址如下:https://blog.youkuaiyun.com/nigoole/article/details/74188554以上为桌面端,下面是微信小程序,我将其放进之前的抢座小程序中了(之前博客有介绍)...原创 2020-05-14 12:07:33 · 504 阅读 · 1 评论 -
简易聊天系统-聊天服务
聊天负责私人聊天,群组聊天。私人聊天接受信息后保存至数据库再转发给目标用户。群组聊天当前没有离线消息保存,也就是用户登录后无法知道多少消息未读,而是直接拉取指定数量群聊天。当有成员发送后会将聊天信息存储数据库(没有缓存进redis,因为在线用户会直接发送,目前没有这个优化必要),从redis中检索所有群组在线用户并通过消息队列发送至对应网关。大致代码如下:// 处理群消息func DealGroupMsg(delivery *amqp.Delivery, transfer1 *transfer)原创 2020-05-14 11:49:47 · 1462 阅读 · 0 评论 -
简易聊天系统-用户服务
用户服务负责注册,更改密码,用户登录,添加好友,获取好友关系,下线上线通知等。添加好友需要两段处理,首先将验证请求并存入数据库,再判断好友用户是否在线,在线则直接发送请求给好友用户,否则将在用户登陆时检索请求数据库再发送好友请求。大致代码如下:// 用户处理好友请求func DealAddFriend(delivery *amqp.Delivery, transfer1 *transfer) { // Ack := false // defer func() { // deliver原创 2020-05-14 11:35:27 · 325 阅读 · 0 评论 -
简易聊天系统-消息转发服务器
消息转发服务器用来接受来自消息队列的数据,并对其进行解码、识别等,最后分好类别。比如聊天系统,会将同一个群组 同一个会话的消息转发至同一组服务(当然现在还没实现转发同一组服务),基本思想为群号 QQ号之类弄一个hash然后转发,或者监控各个服务的负载程度将新开的聊天转移至相应的聊天服务。如果识别失败,消息转发服务器并不会处理消息而是将消息保留至消息队列并提示,如果需要在线升级添加新的服务,只需要逐步升级消息转发服务即可。基本代码逻辑如下:// 处理func DealMsg(delivery am原创 2020-05-14 11:28:23 · 1038 阅读 · 0 评论 -
简易聊天系统-网关
网关负责客户端的接入,因为时间原因都使用了websocket协议,目前只做到固定网关,也就是客户端直接连接指定网关。后面优化则会有一个网关发现服务,提供http接口返回目前最佳网关。网关使用了 github.com/gorilla/websocket 提供的框架,主要负责处理客户端的连接,数据识别、转发数据。网关接受来自用户的数据并判断其类型,未登录用户不能发送非登录类型数据,确认正常数据后直接存进消息队列中。并且接受来自消息队列传来的信息,转发至对应客户端中。接受来自客户端的数据:func.原创 2020-05-14 11:19:57 · 400 阅读 · 0 评论 -
简易聊天系统-介绍
之前做了个简易聊天系统,到今天才有时间回顾大致结构如下:目前有两种版本客户端,桌面端使用C++编写,手机端使用微信小程序,整个项目两个月稳定运行。后面想将此项目放入k8s中进行自动管理。...原创 2020-05-14 11:06:06 · 821 阅读 · 0 评论 -
Mac QT5.11 C++ 使用Protobuf
最近在弄一个游戏后台,服务之间使用protobuf进行通信,但模拟客户端使用json与网关通信,为了统一格式模拟客户端使用protobuf。当然C++使用Protobuf比较麻烦,需要自行编译源码然后加入到项目中。 第一步,从github下载最新protobuf源码进行编译,地址:https://github.com/google/protobuf 下载后 ...原创 2018-08-16 00:28:29 · 1028 阅读 · 0 评论 -
QT 使用QDataStream时遇到的坑
使用QT与Go服务端进行通信,每个数据包大小都以约定好结构为 len | feature| compress| data 结果使用QDatastream进行添加数据时发现data数据开头有乱码,比如发送12345结果服务端接收为QT 发送代码如下: QByteArray socket_packdata=QString("12345").toLatin1(); bool ...原创 2018-07-20 15:35:16 · 9805 阅读 · 0 评论 -
分布式计算框架(一)介绍
大学时光飞逝,转眼就到大四。毕业设计作为在大学编写的最后一个程序必须精益求精。在刚开始选题时,我并没有想写分布式计算框架,只是想试试N皇后算法如何分布式计算,结果随着版本的迭代变成了分布式计算框架。一、综述 随着大数据时代的来临,现有计算方式已不能满足工作需求,并且CPU近几年往多核方面发展,单台电脑性能有限不足以完成复杂计算任务。分布式计算框架能很好的解决此类需要巨大计算量问题,分...原创 2018-05-24 23:53:58 · 16823 阅读 · 4 评论 -
分布式计算框架(五) 计算模块与动态链接库模板
五、计算模块与动态链接库模板 5.1、 计算模块结构 计算模块主要负责任务的计算,根据任务的信息动态调用相应的动态链接库以及函数,计算完毕后传输计算结果,计算模块类关系表如下: 类名 关系类 关系 Handle_module Setting 聚合...原创 2018-06-04 17:56:03 · 673 阅读 · 0 评论 -
QT 类与窗口之间的信号槽连接
此文章用来回忆内容 一开始本来是想用QT类直接编写窗口的控件,结果发现只能在主UI里面控制,百度以后发现需要利用信号槽,花了许多时间终于知道如何用信号槽把类与窗口连接起来。首先写出来的1.类需要继承QOBJECT,2.在类里写出信号,列如 signals: void xinxi(QString a);这个不需要写出来就当是一个激活函数。3.在窗口里原创 2016-10-14 16:13:53 · 3352 阅读 · 0 评论 -
QT tcp粘包问题
当两次发送时间过短,两次发送的数据包将会合成一个,对数据解读也就会出现错误。解决方法:对数据进行包装,分为两部分,前面一部分存储数据总共的大小,后面一部分存储数据;下面为例子void transmission::readMessage() //连接信号槽,当有数据时触发{原创 2016-12-27 23:50:06 · 2529 阅读 · 0 评论 -
QT 5.7 QWebEngineView加载网页卡的解决方法
用QT 5.7 QWebEngineView加载高德地图后发现地图一卡一卡的,严重影响体验。后来发现原来使用的是Debug,后来无意中换成了结果十分流畅,遇到同样问题的朋友可以试试。原创 2016-10-23 00:48:01 · 13297 阅读 · 17 评论 -
QT tcpsocket 在断开后重新连接程序直接崩溃
最近再写tcp程序时无意中碰到个问题,tcp客户端断开连接后再重新连接,发送数据直接报错: ASSERT: "m_buf" in file c:\users\qt\work\qt\qtbase\include\qtcore\5.9.1\qtcore\private\../../../../../src/corelib/io/qiodevice_p.h, line 116 后来定位到原创 2017-08-27 19:05:24 · 5728 阅读 · 1 评论 -
关于8皇后的分布式运算
毕业设计选的就是关于分布式运算,也不清楚算不算先这么写。选的算法是N女皇算法,随着阶层上升运算量急剧上升,是个比较不错的的算法。开始正题项目的结构为服务器端,运算节点端,管理端。大致如下图运作方式:客户端上传任务->服务器对任务进行分解->服务器检索空闲计算节点并分发任务、计算节点:接受分解过的任务,进行运算得出结果并返回给服务器。个人觉得计算节点这块难度可能就是如何使原创 2017-09-27 23:57:51 · 468 阅读 · 0 评论 -
QT 生成DLL并显示调用
转载自 http://blog.youkuaiyun.com/xiaobai_2511/article/details/51518180昨天突然想到 :接触了这么久的qt了 dll(动态链接库)还没有用过就打算事件一下 差了半天资料 感觉网上没有一片文章讲述的全面详细,于是就有个这篇博客。环境:win7+qt5.3.2开始:一、qt生成dll1.建立生成转载 2017-12-21 16:12:46 · 4077 阅读 · 1 评论 -
QT 调用DLL出问题解决方案汇总
由于毕设工程较大需要传输DLL至计算节点并调用DLL进行计算,之间遇到许多坑,现来总结一下。1.QT显示调用DLL,也就是说exe程序直接调用DLL无需在程序中引入lib之类的。之前尝试许多种,只有这种灵活性最大!typedef QStringList(*FUN1)(QString); QLibrary lib(dll_Name); if(lib.load())原创 2018-01-12 22:43:56 · 5779 阅读 · 0 评论 -
蜂鸟速递-无人机快递智能系统 QT编写(含视频)
大三工作室项目,和几位小伙伴一起做出来的。我负责客户端与服务器这块,其他小伙伴负责无人机安卓端、用户安卓端,项目实现了类似于滴滴打车的效果,写篇博客记录一下。 系统流程如下:用户下单,系统分配无人机飞至指定地点降落,用户将物品放入储存箱确认后无人机飞向目的地,无人机到达目的地后有两种确认方式。 方式1:二维码确认,将1m*1m大小的二维码铺在地上,无人机在目的地上空进行圆周运动,当...原创 2018-03-07 15:43:19 · 3949 阅读 · 6 评论 -
QT Go TCP数据传输粘包问题
使用Go语言为服务器,QT作为客户端,利用TCP进行数据传输,当两次发送间隔过近会产生粘包现象,此时就需要一个特定的数据格式用来区分两个数据的边界,我使用 特征码(int类型用来区分是否恶意)数据包大小(int)压缩标志(bool)数据(byte),但当交互时发生问题,比如QT的自定义数据格式QBytearry会在最前面加个字段用来表示自身整体大小。下面直接列出代码:GO:func IntToBy...原创 2018-04-27 13:08:11 · 713 阅读 · 0 评论 -
分布式计算框架(二)服务器模块
二、服务器模块2.1 服务器模块结构服务器模块为整个系统的核心组成部分,负责数据的处理、任务的分发负载均衡等。由于功能数量较多,因此定义一个管理类统一管理,对外只暴露简单的接口方便调用,该模块由以下几个类组成。Management:管理类,负责管理所有模块。名称类型说明mysql_set方法设置数据库信息tcpServer_init方法初始化tcp服务器localServer_init方法初始化l...原创 2018-05-25 19:09:47 · 2339 阅读 · 3 评论 -
分布式计算框架(三) 客户端模块
三、客户端模块 3.1 客户端模块结构 计算节点模块主要功能为数据管理、日志管理、配置管理、处理线程管理、进程通信管理、TCP通信管理,该模块由以下几个类组成。类名关系类 关系Mainwindowlogin聚合Mainwindowtcp_socket聚合MainwindowSetting聚合 MainWindow:交互类模块,负责数据的显示、处理。名称类型说明get_inform...原创 2018-06-04 10:38:12 · 663 阅读 · 0 评论 -
分布式计算框架(四) 计算节点模块
四、计算节点模块 4.1 计算节点模块结构 计算节点模块主要功能为数据管理、日志管理、配置管理、处理线程管理、进程通信管理、TCP通信管理。计算节点模块类关系表如下:类名关系类 关系Managementhandle_manage聚合handle_manageHandle聚合ManagementLog聚合ManagementSetting聚合Managementtcp_Sock...原创 2018-06-04 17:31:07 · 6545 阅读 · 0 评论 -
QT 5.7 QWebChannel如何调用JavaScript以及JavaScript如何调用QT中函数
文章用来回忆内容,不喜勿喷。QWebChanne与js交互下面是用来与JS交互类webconnect.h#ifndef WEBCONNECT_H#define WEBCONNECT_H#include #include class webconnect : public QObject{ Q_OBJECT原创 2016-10-23 01:00:21 · 11583 阅读 · 20 评论
分享