自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (3)
  • 收藏
  • 关注

原创 windows10 编译pytorch源码

之前gtx1660显卡在高价位卖了,现在只能凑合用gtx650爷爷级显卡。但是使用yolov5时出现PyTorch no longer supports this GPU because it is too old

2021-06-17 16:46:30 1171 1

原创 简易文件系统-用Go语言从零开始设计(四) 文件系统冗余措施 一致性hash算法

一、一致性hash算法一致性Hash介绍 分布式均匀算法--hash性一致算法--hash slot上面是大致介绍,根据自身理解,其只是更随机更均匀的分配。本系统需要同一md5元数据不能分配到同一文件节点中,因此需要对其进行改造。也就是计算元数据key时,会遍历对应key中是否有相同md5值的数据,如果有则寻找下一个key对应的node,直到找到为止。本来一致性Hash能快速根据key获取信息,不用存储Key对应的文件信息,但由于本系统需求,需要存储空间记录信息。Go语言...

2021-02-23 18:19:14 582

原创 简易文件系统-用Go语言从零开始设计(三) 文件上传 文件下载 文件删除 文件共享

目录一、文件上传二、文件下载三、文件删除4、文件共享服务之间的通信都是用tcp,定义好数据的结构即可,在其他文章提及过一、文件上传客户端使用QT编写,在上传文件过程中会首先会查询服务器是否有相同md5值文件,有则上传文件的基本数据上传时会预先判断文件的大小,如果大于指定数值则对文件进行分割上传。如果存在相同md5值文件,服务器只需数据库查询对应文件信息将其virtualDataID复制到新文件信息,完成此次文件上传当所有文件块上传完毕后,服务器会合并数据并...

2021-02-23 17:52:58 550 1

原创 简易文件系统-用Go语言从零开始设计(二) 文件目录功能

目录一、文件结构二、查看文件夹三、创建文件夹四、重命名文件夹 删除文件夹一、文件结构文件结构使用多叉树,新建文件夹只是在数据库记录是一个虚拟的概念,新建文件夹则上传数据并记录在数据库中,并让对应的文件夹的子节点放入该文件。在服务器代码中文件夹的结构和多叉树的构建如下:type File struct { FileId string FileMd5 string `json:"Md5" form:"Md5"` F...

2021-02-23 17:23:30 535

原创 简易文件系统-用Go语言从零开始设计(一) 总体结构

简易文件系统-用Go语言从零开始设计(一) 总体结构文章目录简易文件系统-用Go语言从零开始设计(一) 总体结构文章目录前言一、总体设计结构二、数据结构1.目标2.结构介绍总结前言闲来无事,帮写一个项目,经过几天的构思编码最终完成。其中有的设计不太合理,敬请见谅。一、总体设计结构 最基本的结构,用户通过服务器来访问数据,实现了文件上传,新建文件夹,删除文件夹,共享文件,下载文件 功能。一开始设想用户可以直接读取...

2021-02-23 16:56:46 552

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

原创 我去图书馆 抢座分析

参考https://blog.csdn.net/RenjiaLu9527/article/details/96843605大致分析了一下抢座流程:首先我去图书馆 使用了微信绑定账号,因此平常的账号登录几乎没用。通过抓包分析,用户需要上传SERVERIDwechatSESS_ID 这两个参数才能进行抢座,并且这两个参数会变动,在抢座前一个小时内最好更新参数。难度+1查看自习室列表选择自习室再进行抢座最后提交座位进行选座。选择座位使用Get 需将自己wechatSE...

2020-09-09 14:42:50 13184 12

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

原创 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 1408 1

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

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

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

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

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

2020-05-14 11:49:47 1366

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

群组服务负责群组日常管理,申请进群,创建群,获取群成员,与用户服务类似。基本代码如下: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 251

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

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

2020-05-14 11:35:27 247

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

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

2020-05-14 11:28:23 904

原创 简易聊天系统-网关

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

2020-05-14 11:19:57 308

原创 简易聊天系统-介绍

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

2020-05-14 11:06:06 729

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

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

2019-12-29 14:27:59 6903 26

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

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

2019-09-12 22:55:59 5648 8

原创 数据一定要备份。。

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

2019-01-05 00:03:29 258

原创 微信小程序使用Protobuf

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

2018-12-19 19:33:33 7319 8

原创 自动2048游戏

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

2018-11-14 10:38:12 8066

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

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

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

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

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

2018-10-22 16:48:38 3263

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

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

2018-10-22 16:23:37 6558

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

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

2018-10-22 15:54:46 1659

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

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

2018-10-22 15:10:29 4357 1

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

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

2018-10-15 17:19:46 2894 5

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

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

2018-09-27 17:27:47 45927 11

原创 Nsq与RabbitMq

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

2018-09-20 23:29:50 3805 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 7224

原创 阿里云 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 2203

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

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

2018-08-16 00:28:29 902

原创 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 9867 4

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

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

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

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

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

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

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

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

2018-06-04 17:56:03 551

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

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

2018-06-04 17:31:07 6292

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

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

2018-06-04 10:38:12 549

TPC-H_Tools_v2.18.0.zip

TPC-H是事务处理性能委员会( Transaction ProcessingPerformance Council )制定的基准程序之一,TPC- H 主要目的是评价特定查询的决策支持能力,该基准模拟了决策支持系统中的数据库操作,测试数据库系统复杂查询的响应时间,以每小时执行的查询数(TPC-H QphH@Siz)作为度量指标。

2020-08-11

BOOST库1_65_1

Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关。大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需要链接库。但Boost中也有很多是实验性质的东西,在实际的开发中使用需要谨慎

2017-10-08

Git-2.14.1-64-bit.exe

GIT

2017-08-30

空空如也

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

TA关注的人

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