5 hp_cpp

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 2w+

Qt Remote Object(QtRO)实现进程间通信——遥控小车(二)

还是先看看运行效果:这次我们再Rep文件中使用枚举class CommonInterface{ ENUM CarOperation { Accelerate, Decelerate, TurnLeft, TurnRight } SIGNAL(sigMessage(CarOperation operation)) //server下发消息给client}如果你用的Qt版本是5.9的话,这里可能会有问题,我

2020-07-05 18:08:02

Qt Remote Object(QtRO)实现进程间通信——遥控小车(一)

Q-Bus的官方例子是个遥控小车在windows上自己手动编译了dbus,但还是跑不起来,在搜索Qt进程通信方式的时候,无意中看到Qt Remote Object(QtRO),这种方式支持跨进程的信号与槽,就尝试着用QtRO来改造这个遥控小车,让它跑起来。看看我们的运行效果:最后发现用QtRO其实更好用,前提是你的Qt版本是5.9及以上,如果不是的话,考虑用QLocalSocket和QLocalServer来实现(同一台电脑,如果是不同电脑,就用QTcpServer和QTcpSocket来实现,或

2020-07-05 11:49:09

将luarocks整合进openresty,并安装lfs

现在需要用openresty实现一个文件夹遍历的功能,需要LuaFileSystem(简称lfs)。第一步:将luarocks整合进openresty下载地址:https://luarocks.github.io/luarocks/releases/下载最新版的源码包即可。将下载的源码包解压,进行以下配置:$ wget https://luarocks.org/releases/luarocks-3.3.1.tar.gz$ tar zxpf luarocks-3.3.1.tar.gz$ cd

2020-06-27 18:02:48

http报头之通用报头,请求报头,响应报头和实体报头

http报头通用报头请求报头响应报头实体报头HTTP消息报头包括通用报头、请求报头、响应报头、实体报头。每一个报头域都是由名字+“:”+空格+值 组成,消息报头域的名字是大小写无关的。通用报头通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。既可以出现在请求报头,也可以出现

2020-06-26 10:37:00

HTTP协议中Content-Type

HTTP协议中Content-Type关于content_typecontent_type语法GET常见数据的提交类型POST常见数据的提交类型application/x-www-form-urlencodedmultipart/form-dataapplication/jsonbinary (application/octet-stream)关于content_typeContent-Type是实体头域(或称为实体头部,entity header)用于向接收方指示实体(entity body)的介质类

2020-06-26 10:07:54

OpenResty配置文件下载

sendfile: 设置为on表示启动高效传输文件的模式。sendfile可以让Nginx在传输文件时直接在磁盘和tcp socket之间传输数据。如果这个参数不开启,会先在用户空间(Nginx进程空间)申请一个buffer,用read函数把数据从磁盘读到cache,再从cache读取到用户空间的buffer,再用write函数把数据从用户空间的buffer写入到内核的buffer,最后到tcp socket。开启这个参数后可以让数据不用经过用户buffer。参考:Nginx --sendfile配

2020-06-25 16:45:58

linux查看端口被占用情况,并结束占用该端口进程

Linux 查看端口占用情况可以使用 lsof 和 netstat 命令(如果发现这两个命令提示没有找不到的话,就需要安装相应的lsof 和 net-tools)另外:ps -ef|grep 进程PID可以获取已经知道进程ID的进程更多信息kill -9 进程PID命令则可以直接杀死相应进程。这几个命令配合起来,可以完成这样一个任务:希望查看8080进程被哪个进程占用,如果这个端口有被进程占用,就杀死该进程和它的子进程。首先第一步,查看8080端口被哪个进程占用。方式一:lsof(

2020-06-25 15:49:53

openresty利用插件lua-resty-moongoo操作mongodb

本文采用lua-resty-moongoo库,地址为:https://github.com/isage/lua-resty-moongoo第一步:下载https://github.com/isage/lua-resty-moongoo我们可以看到这个库下载下来后的目录层级结构,在lib文件夹下有resty文件夹,将resty文件夹中的moongoo(包括其子目录以及所有文件)和moongoo.lua文件拷贝到/usr/local/openresty/lualib/resty(备注:我安装的Ope

2020-06-23 20:42:31

skynet中使用cjson

skynet早期版本有lua-cjson库,后来使用sproto取代了cjson,也直接将代码移除,但游戏中还是有json的需求。lua5.3开始支持整形,但cjson并没有适配lua5.3, 如果直接编译使用会造成将json串中的数字转为浮点数。所幸云风为cjson出一个补丁:https://github.com/mpx/lua-cjson/pull/22当然如果感觉麻烦,还可以直接使用云风维护的一个分支:https://github.com/cloudwu/lua-cjson这里以skynet中

2020-06-19 19:54:57

实现百万并发的服务器端框架图解

本文内容转自:Golang实现百万并发但内容并不局限于Go语言,而是服务器框架都要解决的问题,原文用图示简单易懂,转来这里是为了以后复习。以下是具体内容:这篇文章源自Handling 1 Million Requests per Minute with Go。原文中的例子是一个HTTP服务器,将上传的Json文档写入亚马逊的简单存储服务(S3)。这是一个异步服务,不需要等到存储真正完成,收到请求后可以立刻返回。在这里我们用一个例子来类比上面的工作,有一条传送带(网络),源源不断的运来小球(来自客户端

2020-06-17 14:24:13

boost.asio的异步echo服务器端的std::bind实现

C++11以来,提供了不少遍历,原来在boost库中的一些工具,也进入到了C++标准库中。boost作为“准”标准库也C++尽可能需要掌握的知识和技能。现在采用std::bind方式实现异步echo服务器端,后面会采用lambda表达式重新实现一遍,比较二者的差异,采用自己喜欢的方法就可以了。完整代码:// Asynchronous echo server.#include <array>#include <functional>#include <iostrea

2020-06-16 11:45:38

boost.asio的同步echo服务器端和客户端实现

// Synchronous echo server.#include <array>#include <iostream>#include <string>#include "boost/asio.hpp"using boost::asio::ip::tcp;enum { BUF_SIZE = 1024 };void Session(tcp::socket socket) { try { while (true) { std::arra

2020-06-15 11:00:05

Qt的事件传递过程和事件过滤器的示例

每个程序main ()函数的最后都会调用QApplication类的exec()函数,它会使应用程序进入事件循环,这样就可以使应用程序在运行时接收发生的各种事件。一旦有事件发生,Qt便会构建一个相应的QEvent子类的对象来表示它,然后将它传递给相应的QObject对象或者其子类对象。举例一:新建Qt Widget应用,项目名为myevent,基类选择QWidget,类名保持Widget不变。第一步:添加一个MyLineEdit类,头文件为mylineedit.h,源文件为mylineedit.cp

2020-06-13 15:26:22

更改QLineInput等文本输入框的placeholder文字颜色

行文本输入框的时候,发现预设的文字颜色没法改,默认是浅灰色的(具体颜色待查),想改变QLineInput的placeholder文字,发现qss没有相应属性。用调色板可以解决问题,Qt5.12及以上才能这样用,先看效果:为了演示效果,只在界面上放了一个QLineEdit控件Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){ ui->setupUi(this); QL

2020-06-12 13:51:20

(爬坑实录)解决QPushbutton 点击弹出popup后,从hover状态恢复到普通状态的问题

和这篇文章遇到的问题极其相似解决Qt qpushbutton stylesheet hover但是按照这篇文章的解决方法并不能解决我的问题,我是按照自己的方法解决的。一、问题描述:用qss设置了鼠标的几种状态,分别是正常状态、hover状态和pressed状态。点击按钮后,在按钮下方弹出一个自定义的Widget,这个继承自widget类的构造函数中设置了窗口的属性setWindowFlags(Qt::Popup | Qt::FrameLessWindowHint)问题出现了,点击这个按钮后,

2020-06-10 18:20:32

windows上利用NSIS制作安装向导程序

NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System) 的缩写,它是一个Open Source的Windows系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。NSIS通过它的脚本语言来描述安装程序的行为和逻辑的,因为它基于脚本文件,所以你可以完全控制你的安装程序的每个部分。它的脚本语言支持变量、函数、字串处理,就像是一个普通的程序语言——但它是为安装程序这类应用所设计的。以Qt打包后的程序,利用NSIS3.

2020-06-04 14:33:14

(爬坑实录)Qt中QListView的qss不生效,也无QStyle::State_Selected标记问题解决

今天遇到一个问题,就是在QListView中自定义的delegate继承QStyledItemDelegate,重写paintvirtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override在paint函数开头QStyledItemDelegate::paint(painter, option, index); /

2020-06-01 16:52:58

使用Qt自带的MinGW编译的protobuf,添加到工程中出现问题的解决方法

出现这样的错误:说明两点:(1)lib库没有添加正确,或者根本就是编译的版本和你当前的编译器版本不同,或者路径不对LIBS += -L$$PWD/lib -llibprotobuf或者LIBS += -L$$PWD/lib -lprotobuf都可以,但要保证路径正确,lib库被正常加载。(2)可能有protobuf cxx11错误,解决方法是重新编译,具体见这篇:解决protobuf的Undefined reference to google::protobuf cxx11...

2020-05-15 14:24:57

解决protobuf的Undefined reference to google::protobuf cxx11

问题是在我用Qt5.14.1的Mingw7.5编译Protocol buffer3.11.4出的问题。编译还算顺利,测试过程中就出问题了:(当然我还遇到其他问题,在其他地址再详细说)这个错误似乎有个共性,就是abi::cxx11或是std::__cxx11错误于是乎去查资料,终于找到原因了:查看这个CMakeList.txt第22行到第29行:# Add c++11 flagsif (CYGWIN) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=

2020-05-15 14:14:26

由一个typedef问题引发的思考

百度百科中的typedefhttps://baike.baidu.com/item/typedef/9558154?fr=aladdin同样,可以像下面这样隐藏指针语法:typedef char* pstr;int mystrcmp(const pstr p1,const pstr p3);用GNU的gcc和g++编译器,是会出现警告的,按照顺序,“const pstr”被解释为“char* const”(一个指向char的指针常量),而事实上,const char和char const表达的

2020-05-13 10:34:01

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。