关闭

C++闭包,一样很简单

闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。C++11以后,借助functional和lambada表达式,可以轻松的实现闭包功能。...
阅读(749) 评论(0)

用C++Qt 与libfcgi快速开发后台 WebService

在与APP接口的后台WebService开发方面,估计很少有人直接使用C接口的libfcgi-dev进行开发的了。但是,这不代表此方法是不可行的。在强大的Qt库的支持下,原来使用C++开发webService也是非常方便的。这里我们以获取OpenStreetMap数据库中的地理信息为例子,看看现代C++的威力。 项目地址: https://code.csdn.net/goldenhawking/...
阅读(845) 评论(3)

利用ZoomPipeline迅速实现基于线程池的全异步TCP点对点代理

在博文《一种基于Qt的可伸缩的全异步C/S架构服务器实现》中提到的高度模块化的类可以进行任意拆解,实现非常灵活的功能。今天,我们来看一看一个公司局域网访问英特网云服务器的点对点代理例子,这个简单的代理支持设置负责传输的线程个数,可以根据配置文件同时服务多个链接。...
阅读(594) 评论(1)

C/C++运维中发现的两个隐晦BUG

在维护代码的过程中,会发现一些非常隐晦的错误,只有在一些特殊情况下才会崩溃。调试这类BUG需要安排代码审查以及比较完善的边界测试才能发现。1. 不要在判断语句中修改数据,2.注意容器指针的地址变化。...
阅读(866) 评论(0)

functional助力C++11实现高度可重用接口-线程池例子

在我以前的文章里,介绍了基于Qt的流水线线程池例子,在那个例子里,要实现具体逻辑,需要通过继承基类实现接口。C++11标准的functional, bind 特性,大大提高了接口设计的灵活性。我们可以使用函数对象,实现低耦合的复用线程池,毫不相干的工作可以参与执行与流水。...
阅读(771) 评论(0)

Qt5 UI信号、槽自动连接的控件重名大坑

对Qt5稍有熟悉的童鞋都知道信号、槽的自动连接机制。该机制使得qt designer 设计的UI中包含的控件,可以不通过显式connect,直接和cpp中的相应槽相关联。然而,这种机制存在一个隐患,即控件重名,需要引起重视...
阅读(1430) 评论(3)

C与C++的编译相关性

C与C++是高度二进制兼容的,C++类可以直接用 C 的结构体实现...
阅读(862) 评论(2)

C++与OMP配合的最简线程池

最近在写算法时,发现OpenMP + C++ functional 可以瞬间构造一个线程池,并执行风马牛不相及的事情。看来,有必要好好思考一下今后算法优化的事情了!...
阅读(1090) 评论(1)

迁移到MSYS2 与 Qt 工具链注意的几个事情

MSYS64 是很不错的编译环境,但是,在应对 Qt -ActiveQt 工程方面,存在参数转译符为"/"导致的无法生成idl接口文件问题,且缺少 windows SDK midl.exe的支持。本文详细介绍了如何解决这些问题,使得MSYS64环境下,可以顺利的编译出 activeX 控件。...
阅读(1765) 评论(3)

Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器客户端(5) 小结

非计算机专业的工程师们大量使用本地开发工具,在不同的领域创造价值。与前端工程师不同,OpenStreetMap 对应的Web前端对他们是陌生的。 一直以来想利用业余时间做这样一个工具,使得非计算机专业的工程师们可以拥有一款支持漫游、标图、动画效果的轻量级地理信息插件,特别是掌握C++、C#等本地工具的工程师们可以不经学习即能获得GIS二次开发能力,目前看来,已经做到了. 经过不断试用与修改,这个查看器最终还是完成了设计、实现。查看器,顾名思义,没有编辑功能,只是一个以OpenStreetMap为底图的...
阅读(1650) 评论(3)

Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器客户端(4) 插件绘图

(相关的代码可以从https://github.com/goldenhawking/mercator.qtviewer.git直接克隆)    我们在前面的叙述中,介绍了插件的运作管理机制。在本章,将介绍插件具体实现过程中,绘图、交互的要点。   1、经度边界处理       地球是一个圆球,从格林威治皇家天文台所在的本初子午线开始,向西为负,向东为正,计量经度。到了太平洋上日期变更线附...
阅读(939) 评论(0)

Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器客户端(3) 插件管理机制

本篇主要介绍了基于插件的OpenStreetMap瓦片查看器客户端的插件管理。首先,在进程创建时,通过初始化插件,确保每个动态链接库中的插件类可为各个独立的视图实例化一一对应的对象。而后,介绍了如何安排插件绘图、为插件送入UI交互消息,以及帮助插件之间、插件与宿主、插件与外部ActiveX宿主之间进行通信。...
阅读(1001) 评论(0)

Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器客户端(2)架构设计

(相关的代码可以从https://github.com/goldenhawking/mercator.qtviewer.git直接克隆)     本文的前序章节介绍了坐标系的基础知识。在这一章,我们将进行架构设计。架构是一个软件生命体的骨骼,为了实现灵活的功能扩展,首先要引入插件机制。     鉴于 Qt 框架本身提供了良好的面相对象插件接口开发能力,不妨就利用这个机制来实现我们的意图。...
阅读(1195) 评论(0)

Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器客户端(1)-墨卡托投影与坐标控制

本文接着上一篇文章,开始介绍如何把当前需要显示的视窗与OpenStreetMap地图联系起来。引入了几个坐标系,介绍了他们之间的换算关系。...
阅读(2401) 评论(5)

一种基于Qt的可伸缩的全异步C/S架构服务器实现(六) 整合各个模块实现功能

在前面的章节中,介绍了网络传输、任务线程池、数据库和集群四个主要功能模块。到现在为止,这些模块都还只是一种资源,没有产生实际的运行效果。对一个具备真实功能的应用来说,需要有一个整合的过程。整合方法很多,本例里以典型的客户 -客户通信来举例说明。在最上层,有一个本服务器进程的管理者,称作st_client_table,用于封装所有的服务功能。这个类在每个服务器进程中仅有一个实例。它主要的工作有: (1) 提供一个盛放、管理各个客户端节点类(st_clientNodeAppLayer实例)、各个集群服务器...
阅读(2954) 评论(1)

一种基于Qt的可伸缩的全异步C/S架构服务器实现(五) 单层无中心集群

对40万用户规模以内的服务器应用,使用星形的无中心连接是较为简便的实现方式。分布在各个物理服务器上的服务进程共同工作,每个进程承担若干连接。为了实现这个功能,需要解决几个关键问题。跨服务器传输通道、流式解译,以及分布式的客户端哈希(留在下一章)。...
阅读(3612) 评论(2)

一种基于Qt的可伸缩的全异步C/S架构服务器实现(四)数据库的多线程操作

四、数据库的多线程操作 在多线程服务中,数据库是...
阅读(3658) 评论(2)

一种基于Qt的可伸缩的全异步C/S架构服务器实现(三) 流水线结构线程池设计

为了无阻塞地实现并发通信及处理,设计了一种流水线线程池模式。流水线结构保证了各个客户工作在大粒度上并行化,线程池技术保证了处理器资源的最大利用,可以显著提高系统的吞吐能力。另一个附加好处,是可以让VIP获得高级优先级。...
阅读(5065) 评论(5)

一种基于Qt的可伸缩的全异步C/S架构服务器实现(二) 网络传输

二、网络传输模块 模块对应代码命名空间    (namespace ZPNetwork) 模块对应代码存储文件夹    (\ZoomPipeline_FuncSvr\network) 2.1 模块结构 网络传输模块负责管理监听器,并根据各个传输线程目前的负荷,把新申请接入的客户套接字描述符引导到最空闲的传输线程中执行“接受连接(Accept)”操作。该模块由如下几个类组成。...
阅读(8333) 评论(8)

一种基于Qt的可伸缩的全异步C/S架构服务器实现(一) 综述

本文向大家介绍一种基于Qt的伸缩TCP服务实现。该实现针对C/S客户端-服务集群应用需求而搭建。连接监听、数据传输、数据处理均在独立的线程池中进行,根据特定任务不同,可安排负责监听、传输、处理的线程数目,从而在高传输负荷、高计算符合上达成取舍。数据处理采用流水线结构,以避免少量客户的密集计算请求影响其他客户端的处理。本文对应的代码符合LGPL协议,可直接从Github签出。https://github.com/goldenhawking/zpserver...
阅读(10248) 评论(19)
36条 共2页1 2 下一页 尾页
    个人资料
    • 访问:290328次
    • 积分:4098
    • 等级:
    • 排名:第7551名
    • 原创:86篇
    • 转载:3篇
    • 译文:0篇
    • 评论:317条
    最新评论