自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 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 21

原创 k3s离线部署

3台Centos7虚拟机 ip 分别为192.168.0.117 192.168.0.118 192.168.0.119,并且三台虚拟机主机名必须不同!!!1 下载k3s资源包https://github.com/rancher/k3s/releases离线包bin包k3s安装脚本,https://get.k3s.io2. 关闭防火墙systemctl stop firewalld.servicesystemctl disable firewalld.serv...

2020-07-29 21:35:50 52

原创 简易聊天系统-客户端介绍

桌面客户端由于审美观原因,抄了一个QT开源IM聊天客户端,将其tcp协议改成websocket并加上自己需要的功能。源地址如下:https://blog.csdn.net/nigoole/article/details/74188554以上为桌面端,下面是微信小程序,我将其放进之前的抢座小程序中了(之前博客有介绍)...

2020-05-14 12:07:33 105 1

原创 简易聊天系统-聊天服务

聊天负责私人聊天,群组聊天。私人聊天接受信息后保存至数据库再转发给目标用户。群组聊天当前没有离线消息保存,也就是用户登录后无法知道多少消息未读,而是直接拉取指定数量群聊天。当有成员发送后会将聊天信息存储数据库(没有缓存进redis,因为在线用户会直接发送,目前没有这个优化必要),从redis中检索所有群组在线用户并通过消息队列发送至对应网关。大致代码如下:// 处理群消息func DealGroupMsg(delivery *amqp.Delivery, transfer1 *transfer)

2020-05-14 11:49:47 100

原创 简易聊天系统-群组服务

群组服务负责群组日常管理,申请进群,创建群,获取群成员,与用户服务类似。基本代码如下:func DealMsg(delivery *amqp.Delivery) { var json = jsoniter.ConfigCompatibleWithStandardLibrary var transfer1 transfer err := json.Unmarshal(delivery.Body, &transfer1) Type := transfer1.Data.Type if

2020-05-14 11:40:48 80

原创 简易聊天系统-用户服务

用户服务负责注册,更改密码,用户登录,添加好友,获取好友关系,下线上线通知等。添加好友需要两段处理,首先将验证请求并存入数据库,再判断好友用户是否在线,在线则直接发送请求给好友用户,否则将在用户登陆时检索请求数据库再发送好友请求。大致代码如下:// 用户处理好友请求func DealAddFriend(delivery *amqp.Delivery, transfer1 *transfer) { // Ack := false // defer func() { // deliver

2020-05-14 11:35:27 60

原创 简易聊天系统-消息转发服务器

消息转发服务器用来接受来自消息队列的数据,并对其进行解码、识别等,最后分好类别。比如聊天系统,会将同一个群组 同一个会话的消息转发至同一组服务(当然现在还没实现转发同一组服务),基本思想为群号 QQ号之类弄一个hash然后转发,或者监控各个服务的负载程度将新开的聊天转移至相应的聊天服务。如果识别失败,消息转发服务器并不会处理消息而是将消息保留至消息队列并提示,如果需要在线升级添加新的服务,只需要逐步升级消息转发服务即可。基本代码逻辑如下:// 处理func DealMsg(delivery am

2020-05-14 11:28:23 220

原创 简易聊天系统-网关

网关负责客户端的接入,因为时间原因都使用了websocket协议,目前只做到固定网关,也就是客户端直接连接指定网关。后面优化则会有一个网关发现服务,提供http接口返回目前最佳网关。网关使用了 github.com/gorilla/websocket 提供的框架,主要负责处理客户端的连接,数据识别、转发数据。网关接受来自用户的数据并判断其类型,未登录用户不能发送非登录类型数据,确认正常数据后直接存进消息队列中。并且接受来自消息队列传来的信息,转发至对应客户端中。接受来自客户端的数据:func.

2020-05-14 11:19:57 100

原创 简易聊天系统-介绍

之前做了个简易聊天系统,到今天才有时间回顾大致结构如下:目前有两种版本客户端,桌面端使用C++编写,手机端使用微信小程序,整个项目两个月稳定运行。后面想将此项目放入k8s中进行自动管理。...

2020-05-14 11:06:06 186

原创 大学自习室简易抢座小程序

用户端使用微信小程序,从某个模板扒皮下来。服务端使用GO gin框架。大致结构小程序提交抢座任务,服务器每天定时抢座。1.遇到过座位服务器响应过慢,解决办法就是简化步骤,将耗时的步骤尽量提前进行。2.单个服务器性能有限,解决办法多台服务器同时抢座,并使用消息队列用来分配任务。3.座位服务器有速率限制,超过请求次数则会封号,解决办法:找到临界值调整请求次数。用了半...

2019-12-29 14:27:59 227

原创 跑得快算法分析(多叉树深度递归)

由于跑得快牌数量较少,可以考虑使用枚举所有组合,并获取其最大权值出牌基本思路:类似于多叉树,每一个数节点为一个出牌组合,例如 3445566778,这种情况下最好的组合为34567 45678 较次一点为 44 55 66 77 3 8在考虑生成子节点时,考虑 对子 顺子 连对 三带 剩下的则为单张,单张不能与其它牌组合, 由于跑得快第一要点为手上的牌越少越好,因此拿到出牌权限时因该先...

2019-09-12 22:55:59 1013 2

原创 数据一定要备份。。

  去年爬小说信息储存在mysql中,最近手抖清空表,想恢复结果发现没有定期对mysql备份,也没有开启日志,以目前的实力不足以恢复数据,一个字“惨”!!   还好不是重要的数据,这里记录一下,时刻提醒自己一定要备份!!备份!!备份!!    ...

2019-01-05 00:03:29 125

原创 微信小程序使用Protobuf

  网上大部分小程序使用protobuf的都是微信小游戏的解决方案,弄了半天终于整理出微信小程序使用Protobuf的可行方案。找的方案不是动态解析,而是根据.proto文件生成json文件再手动生成js文件,过程比较复杂。  1.  github 项目  https://github.com/Zhang19910325/protoBufferForWechat   这个项目是关键,将其wei...

2018-12-19 19:33:33 3814 8

原创 自动2048游戏

    前段时间公司开发了2048小游戏,看见排行榜都是几万分数,奈何手残就编写了个程序来自动刷,使用脚本语言编写。    思路为识别各个数字的颜色获取数字位置,再计算上向左右最大分数,选其最大分数移动,结果测试最大分数也就6000左右。    后来发现2048也是需要策略的,便从github选择了2048ai,https://github.com/xwjdsh/2048-ai  Go版本...

2018-11-14 10:38:12 1262

原创 房间类游戏后台框架(五)—消息队列与测试效果

   大致结构已介绍完毕,剩下就是谈谈消息队列的坑和测试。   最先设计并没有消息队列,只是单纯的大厅作为中心点,到后来需要可动态扩展,如果各个服务器数量增加每个服务器需要与剩下的服务器进行连接,如果服务器个数N个以上单个服务器需要维持N-1个连接,耗费系统资源。如果有消息中转服务器,则每个服务器只需要维持一个连接并降低编码难度。    开始是手撸一个基于grpc双向流的服务器,性能还行但...

2018-10-22 17:08:31 941 3

原创 房间类游戏后台框架(四)—游戏服务器

游戏服务器概述:  游戏服务器装载着游戏对外服务,对于房间类游戏其功能包括房间的创建、进入房间、离开房间、开始游戏、结束游戏。由于不同游戏对应的逻辑不通,如果需要代码共用,则可将房间的操作分离出来做成一个共用库。只有游戏开始后和游戏结束之间的逻辑不同,因此可以像回调函数一样,当传入的信息游戏框架无法识别则可调用我们设置的回调函数。或者同时需要框架处理和游戏逻辑处理。这样就很好的分离两者,降低编...

2018-10-22 16:48:38 1524

原创 房间类游戏后台框架(三)—大厅服务器

  大厅服务器概述  大厅服务器负责玩家进入游戏的接入、发送公告等功能。当玩家登陆完毕、游戏结束后将会进入大厅服务器。  大厅服务器需求公告 对玩家进行匹配 创建房间 加入房间  大厅服务器结构  大厅服务器流程        大厅服务器细节    由于使用了Redis当作全局内存,其实游戏大厅只是一个使用Redis进行业务操作的模块。在线匹配功能后期可以划...

2018-10-22 16:23:37 3381

原创 房间类游戏后台框架(二)—网关

    网关概述   网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打...

2018-10-22 15:54:46 943

原创 房间类游戏后台框架(一)—介绍

  闲来无事用GO语言写了个简易的房间类游戏后台框架,目前实现基本房间功能,并放了贪吃蛇游戏进去,可实现多人在线贪吃蛇。由于没有前端,导致项目难以继续下去。整个项目大概完成75%,基本目标也都实现,看以后是否有前端加入再继续编写。  (一)系统结构             设计的思路就是高可扩展,只要当前负载已达到上限,只需要整体扩容或者部分扩容即可,整个扩容过程用户没有感知。最终目标...

2018-10-22 15:10:29 2254

原创 文本相似度(小说去重)

之前写了爬虫爬取小说,总文件大概70G。但如果换小说网站进行爬取会重复爬取同样的小说,产生不必要的空间浪费。 由于不同网站对小说命名不同,例如:小说名 斗罗大陆.txt,在小说网A命名为斗罗大陆,小说B<斗罗大陆>,小说C 斗罗大陆全集什么的。 如果从小说名来判断会有很多麻烦,并且有的小说网站小说名和小说内容严重不符,因此根据小说名来判断被否决。 随着研究的深入,发现一...

2018-10-15 17:19:46 1361 2

原创 【Softether】使用Softether 实现不同内网之间互连(外地连接公司、家庭内网)。

很多情况下,我们需要远程办公,但是有很多内部资料只有在公司的局域网内才可以访问,或者我们需要远程连接到公司的电脑,这些情况在正常情况下我们是不可能实现的,但是我们通过Softether,就可以轻松的实现。准备一台拥有公网ip的服务器(阿里云、腾讯云)一台提供公司、家庭局域网的电脑服务器系统为Centos 7,提供内网电脑系统windows。安装部署首先需要下载对应的软件 去https:...

2018-09-27 17:27:47 16649 5

原创 Nsq与RabbitMq

         自己写了个游戏服务器项目,各个服务之间需要通信手撸了一个基于grpc双向流的消息转发服务,但可靠性、扩展性较低。于是准备选择消息队列替代消息转发服务。         由于项目使用的是go语言因此第一选择使用Nsq,Nsq资源较少但是还是搭建并使用,但在测试时发现延迟居高不下,尝试调了参数但是还是不行,内网情况下将消息放入Nsq消息队列到取出消息总共花了100Ms-200Ms...

2018-09-20 23:29:50 1957 2

转载 Docker 安装redis并挂载配置与文件

首先去redis获取对应版本的配置文件redis.conf将 bind 127.0.0.1注释,daemonize yes注释掉,如果需要redis密码则找到 requirepass  并填上你的密码并建立好对应文件夹, usr/redis. usr/redis/data,将redis.conf放入 usr/redis中最后 docker run -d --privileged=t...

2018-08-23 15:17:09 6141

原创 阿里云 1H2G T5实例 与 腾讯云 1H2G 标准2实例 测试对比

  最近阿里云又出了个2H4G一年只要260元的活动,看上去挺不错但发现是T5实例  30%基线性能。  仔细的看了下t5实例的说明,以1H2G T5实例说明,此实例提供 10%cpu,也就是正常情况下。如果你CPu利用率大于10%,那么扣你的Cpu积分,当你积分为0时会限制Cpu利用率为10%,这时就卡的不要不要的。  如果你Cpu利用率小于10%,那么就给你涨积分,获得积分=10%-当...

2018-08-22 10:47:56 1471

原创 Mac QT5.11 C++ 使用Protobuf

     最近在弄一个游戏后台,服务之间使用protobuf进行通信,但模拟客户端使用json与网关通信,为了统一格式模拟客户端使用protobuf。当然C++使用Protobuf比较麻烦,需要自行编译源码然后加入到项目中。     第一步,从github下载最新protobuf源码进行编译,地址:https://github.com/google/protobuf     下载后  ...

2018-08-16 00:28:29 522

原创 grpc-go,双向流模式中服务器主动关闭stream

在grpc的编码中发现客户端stream流有方法。CloseSend() error客户端如果想主动关闭连接直接调用此方法即可关闭,但是服务端对应的ServerStream没有关闭的方法,最后Google一下发现github grpc 项目中有对应的解答:https://github.com/grpc/grpc-go/issues/444很简单服务端只需要跳出循环即可断开连接,下面贴出我的...

2018-08-09 20:39:36 4237 3

原创 Grpc 双向流模式的使用

Grpc介绍: gRPC (https://grpc.io) 是一个由Google开发的高性能、开源、跨多种编程语言和通用的远程过程调用协议(RPC) 框架,用于客户端和服务器端之间的通信,使用HTTP/2协议并将 ProtoBuf (https://developers.google.com/protocol-buffers)作为序列化工具。Grpc几种通信方式:gRPC主要有4种请求/...

2018-08-02 19:12:11 10093

原创 Go 使用Grpc 与 ETCD clientV3 出现 panic: http: multiple registrations for /debug/requests

  做项目时使用了Grpc与登陆服务器进行通信,ETCD用来服务的发现。结果刚运行直接崩溃,百思不得其解。经过GOOGLE发现问题所在:https://stackoverflow.com/questions/47938005/panic-http-multiple-registrations-for-debug-requests I found the reason. It's becau...

2018-07-26 21:36:46 2112

原创 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 4436

原创 kubernetes 安装遇到的坑 (1)

闲来无事学学kubernetes ,结果发现坑挺多的。。     1.跟着教材直接安装,结果发现写yaml有的时候会因为没有对齐导致启动时报错,这个时候就需要仔细看yaml内容了。   2.yaml终于搞定,结果发现RC启动了但是pods没有自动生成,参考别人的解决方法:解决办法是编辑/etc/kubernetes/apiserver 去除 KUBE_ADMISSION_CONTROL 中的 Se...

2018-06-30 18:30:23 1657 4

原创 分布式计算框架(五) 计算模块与动态链接库模板

五、计算模块与动态链接库模板 5.1、 计算模块结构 计算模块主要负责任务的计算,根据任务的信息动态调用相应的动态链接库以及函数,计算完毕后传输计算结果,计算模块类关系表如下: 类名 关系类 关系 Handle_module Setting 聚合...

2018-06-04 17:56:03 277

原创 分布式计算框架(四) 计算节点模块

四、计算节点模块    4.1 计算节点模块结构      计算节点模块主要功能为数据管理、日志管理、配置管理、处理线程管理、进程通信管理、TCP通信管理。计算节点模块类关系表如下:类名关系类    关系Managementhandle_manage聚合handle_manageHandle聚合ManagementLog聚合ManagementSetting聚合Managementtcp_Sock...

2018-06-04 17:31:07 2684

原创 分布式计算框架(三) 客户端模块

三、客户端模块    3.1 客户端模块结构    计算节点模块主要功能为数据管理、日志管理、配置管理、处理线程管理、进程通信管理、TCP通信管理,该模块由以下几个类组成。类名关系类    关系Mainwindowlogin聚合Mainwindowtcp_socket聚合MainwindowSetting聚合 MainWindow:交互类模块,负责数据的显示、处理。名称类型说明get_inform...

2018-06-04 10:38:12 338

原创 分布式计算框架(二)服务器模块

二、服务器模块2.1 服务器模块结构服务器模块为整个系统的核心组成部分,负责数据的处理、任务的分发负载均衡等。由于功能数量较多,因此定义一个管理类统一管理,对外只暴露简单的接口方便调用,该模块由以下几个类组成。Management:管理类,负责管理所有模块。名称类型说明mysql_set方法设置数据库信息tcpServer_init方法初始化tcp服务器localServer_init方法初始化l...

2018-05-25 19:09:47 848 3

原创 分布式计算框架(一)介绍

    大学时光飞逝,转眼就到大四。毕业设计作为在大学编写的最后一个程序必须精益求精。在刚开始选题时,我并没有想写分布式计算框架,只是想试试N皇后算法如何分布式计算,结果随着版本的迭代变成了分布式计算框架。一、综述    随着大数据时代的来临,现有计算方式已不能满足工作需求,并且CPU近几年往多核方面发展,单台电脑性能有限不足以完成复杂计算任务。分布式计算框架能很好的解决此类需要巨大计算量问题,分...

2018-05-24 23:53:58 9431 3

原创 QT Go TCP数据传输粘包问题

使用Go语言为服务器,QT作为客户端,利用TCP进行数据传输,当两次发送间隔过近会产生粘包现象,此时就需要一个特定的数据格式用来区分两个数据的边界,我使用 特征码(int类型用来区分是否恶意)数据包大小(int)压缩标志(bool)数据(byte),但当交互时发生问题,比如QT的自定义数据格式QBytearry会在最前面加个字段用来表示自身整体大小。下面直接列出代码:GO:func IntToBy...

2018-04-27 13:08:11 363

原创 蜂鸟速递-无人机快递智能系统 QT编写(含视频)

大三工作室项目,和几位小伙伴一起做出来的。我负责客户端与服务器这块,其他小伙伴负责无人机安卓端、用户安卓端,项目实现了类似于滴滴打车的效果,写篇博客记录一下。 系统流程如下:用户下单,系统分配无人机飞至指定地点降落,用户将物品放入储存箱确认后无人机飞向目的地,无人机到达目的地后有两种确认方式。 方式1:二维码确认,将1m*1m大小的二维码铺在地上,无人机在目的地上空进行圆周运动,当...

2018-03-07 15:43:19 1623 3

原创 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 3044

转载 QT 生成DLL并显示调用

转载自 http://blog.csdn.net/xiaobai_2511/article/details/51518180昨天突然想到 :接触了这么久的qt了  dll(动态链接库)还没有用过就打算事件一下  差了半天资料 感觉网上没有一片文章讲述的全面详细,于是就有个这篇博客。环境:win7+qt5.3.2开始:一、qt生成dll1.建立生成

2017-12-21 16:12:46 2554

原创 关于8皇后的分布式运算

毕业设计选的就是关于分布式运算,也不清楚算不算先这么写。选的算法是N女皇算法,随着阶层上升运算量急剧上升,是个比较不错的的算法。开始正题项目的结构为服务器端,运算节点端,管理端。大致如下图运作方式:客户端上传任务->服务器对任务进行分解->服务器检索空闲计算节点并分发任务、计算节点:接受分解过的任务,进行运算得出结果并返回给服务器。个人觉得计算节点这块难度可能就是如何使

2017-09-27 23:57:51 305

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