自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

草上爬的博客

专注技术,热爱分享,QQ:302877285

  • 博客(30)
  • 资源 (173)
  • 收藏
  • 关注

原创 kafka的编译和使用

一.kafka的使用kafka官网提供了编译好的二进制包,下载即用http://kafka.apache.org/downloads。最新版本的是1.1.0Kafka是使用scala编写的运行于jvm虚拟机上的程序,虽然也可以在windows上使用,但基本上是运行在linux服务器上,因此我们这里也使用linux(Fedora 20)来开始今天的实战。首先确保你的机器上安装了jdk,k

2018-03-29 16:44:49 8495

翻译 kafka入门指南

kafka是一个分布式的流式平台,它到底是什么意思?流式平台有以下三个主要的功能:☆发布和订阅流记录,类似消息队列或企业级的消息系统。☆你以一种容错的方式存储流记录。☆当流记录产生时及时处理。kafka被用于两大类别的应用程序:☆建立实时的流式数据通道,这个通道能可靠的获取到在系统或应用间的数据☆建立实时流媒体应用来转换流数据或对流数据做出反应。为了明白kafka能怎么做这些事情,让我们从下面开始...

2018-03-28 20:33:12 691

原创 使用State Threads实现简单的服务器

一次只有一个ST在VP上运行,而VP之间不共享内存,所以任何数据都不需要互斥锁,服务器可以自由使用所有的静态变量和非重入库的函数,这大大简化了编程和调试,并提高性能(例如,对于++和---全局计数是安全的或调用inet_ntoa()不需要使用互斥)。此时,所有进程退出。第一个进程的父进程ID是1,这个进程就是守护进程,下面四个进程都是子进程,它们的父进程都是第一个进程。——给出了编程注意点,包括移植,信号,进程内同步,进程间同步,非网络IO,超时处理,特别谈到进程内同步非常简单,不需要同步资源;

2018-03-16 16:06:08 6222 1

原创 uv-cpp:基于libuv实现的C++11风格网络库

libuv是一个跨平台的的基于事件驱动的异步io库。但是他提供的功能不仅仅是io,包括进程、线程、信号、定时器、进程间通信等。libuv主要设计应用于Nodejs,由于其卓越的性能,越来越多的知名项目也使用了这一库。libuv是一个C语言库,意味着回调函数是C语言的回调,所以直接使用libuv网络消息回调,相关对象必须是全局的或者static对象,作为一个C++开发者,这是令人难以容忍的。于是本文将要介绍的uv-cpp应运而生。uv-cpp是基于libuv实现的C++11风格网络库。

2018-03-15 11:22:45 3105

原创 Qt之取消窗体的固定尺寸

如果对窗体设置了固定尺寸(QWidget::setFixedSize),窗体会变得大小不可拉伸,如果需要重新还原可拉伸,必须重新设置最小尺寸和最大尺寸。

2018-03-14 14:25:29 2904 2

原创 Qt之自绘遥控器圆形主控按钮

Qt之自绘遥控器圆形主控按钮,云台的控制器也是这个样子的,其实贴图也能做,但是没自绘灵活。

2018-03-14 14:14:04 8742 2

原创 Qt之使用QPrinter导出PDF

Qt之使用QPrinter导出PDF,如果要新建一页,可以调用bool QPrinter::newPage(),使用QPrinter导出的PDF有个很明显的缺点:没有书签,如果PDF页数较多,这种方式其实是不太行的。

2018-03-13 17:47:16 29796 1

原创 Qt实现的颜色生成器

有些时候我们需要为一些对象附上随机的颜色,比如我们有这么一个需求,用QCustomPlot绘制曲线,刚开始曲线的颜色默认都是黑色的很不好看,后来为了显示的美观我们想给添加的曲线随机的附上颜色,但是有一个要求,曲线的颜色不能太淡,比如不能是白色。因为图像的背景颜色是白色的,如果曲线也是白色那曲线就会看不到了。这样可以实现我们对随机颜色的要求,但是不满足我们不能为白色的要求,为了避免白色,我们在对这个颜色进行检查,如果r、g、b分量的值都超过230,表示颜色太淡重新随机,但是这样的方法总让人感觉不那么舒服。

2018-03-13 17:43:51 2229 2

原创 Effective C++笔记之七:为多态基类声明virtual析构函数

就像本文标题所说的那样,应该为多态基类声明virtual析构函数,否则容易造成内存泄露。 因为C++明白指出,当derived class对象经由一个base class指针被删除,而该base class如果带有一个non-virtual析构函数,其结果未定义一实际执行时通常发生的是对象的derived成分没被销毁。举个例子:#includeusing namespace std;cla

2018-03-13 09:29:14 1998

原创 C++开源协程库libgo

libgo是一个使用 C++11 编写的协作式调度的stackful有栈协程库, 同时也是一个强大的并行编程库。支持linux平台,MacOS和windows平台。使用libgo编写并行程序,即可以像golang一样开发迅速且逻辑简洁,又有C++原生的性能优势。它的特点有:1.提供golang一般功能强大协程,基于corontine编写代码,可以以同步的方式编写简单的代码,同时获得异步的性能。2.支持海量协程, 创建100万个协程只需使用2GB内存。

2018-03-10 16:35:23 2557 2

原创 Effective C++笔记之六:使用noncopyable禁止类的拷贝

       如果某些事物是独一无二的,那么其相应的类就应该禁止拷贝,也就是要使类的copy构造函数和copy assignment操作符不起作用。比如说,地球就是独一无二的,那么可以这么定义地球:class Earth {public: ......//member函数或friend函数private: Earth(const Earth&);//只声明 Earth&am...

2018-03-09 09:54:03 2625

原创 QML实现的毛玻璃效果

QML实现的毛玻璃效果

2018-03-08 15:10:10 3114 1

原创 C++笔试题之颜色分类问题(荷兰国旗问题)

本题是经典的“荷兰国旗问题”,由计算机科学家 Edsger W. Dijkstra 首先提出。给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]输入:nums = [2,0,1]输出:[0,1,2]

2018-03-08 11:30:44 1995 1

原创 Qt之QSignalMapper

比如工控界面上包含了大量的工控按钮,通常的方法是将每个按钮的clicked()信号链接到它自己的槽。如果使用QSignalMapper,可以将所有按钮的信号连接到同一个槽(QSignalMapper::map()),然后调用QSignalMapper的setMapping方法将sender和字符串(也可以是整型)映射。这样当按钮点击时,QSignalMapper就会发送一个带字符串或整型参数的信号mapped,此时可以将mapped绑定到指定的槽,在槽中进行下一步操作。

2018-03-08 11:06:40 3343 1

原创 Qt优秀开源项目之十五:QCustomPlot

QCustomPlot早已名声在外,使用Qt的几乎无人不知,这篇博客有灌水的嫌疑。QCustomPlot是一个用于绘图和数据可视化的Qt小部件。它只依赖Qt,并且有详细的开发文档。该绘图库专注于制作外观美、质量高的二维绘图形和图表,并提供高性能的实时可视化。从“Setting up”和“Basic Plotting”开始学习,能达到事半功倍的效果。QCustomPlot可以导出为各种格式,如矢量化PDF文件和光栅化图像,如PNG、JPG和BMP。

2018-03-08 10:36:10 5236 2

原创 QImage像素级处理实现暖色、冷色、灰度、反色、黑白等效果

QImage像素级处理实现暖色、冷色、灰度、反色、黑白等效果图片来自张慧雯小姐姐在琅琊榜2中饰演的林溪。模糊和锐化效果对人像不太明显,但是对风景会好能多,比如下面这张风景图。模糊锐化。每一张图片都是由像素点组成,每一个像素都有三个通道:红,绿,蓝,还有一个alpha通道来保存透明度(JPEG格式的图片不支持透明)。每个通道的值是0-255,三个通道都是0的话,表示黑色,都是255表示白色。这篇文章中我们用RGB来表示一种颜色,也就是三个通道的值。

2018-03-08 10:31:10 4872 2

原创 Qt之实时动态曲线和双缓冲(double-buffers)绘图

要绘制动态2D图表或曲线,首先想到的使用第三方开源库QWT,QCustomPlot 等,但这并不影响我们自己去绘制。就像我们能熟练使用Qt模块进行开发了,也很有必要去了解一下Qt的底层实现原理,比如等等。

2018-03-07 20:56:01 5022 2

原创 C++之字符串大小写转换

要是好需要把字符串转成大写或小写,方便字符串比较。

2018-03-07 20:37:39 1964 1

原创 轻量级C++11日志库spdlog

spdlog是一个只有头文件的轻量级C++11日志库,速度非常快,扩展性很强,更重要的是社区活跃,文档齐全。原来项目中使用的是log4cplus,感觉稍微有点笨重。它支持的平台包括Windows、Linux、Mac、Android。特点如下:1.一个字,快;三个字,非常快2.仅包括头文件3.日志格式丰富,格式化处理使用开源的fmt库(4.可选的异步模式这里的同步/异步指日志信息是否直接输出/写入文件,直接写就是同步,稍后写就是异步。

2018-03-07 20:02:27 4507 1

原创 C++之创建Windows系统服务

Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这种服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。

2018-03-07 19:32:16 4892

原创 Effective C++笔记之五:了解C++默默编写并调用哪些函数

       什么时候empty class(空类)不再是个empty class呢?当C++处理过它之后。是的,如果你自己没声明,编译器就会为它声明(编译器版本的)一个copy 构造函数、一个copy assignment操作符和一个析构函数。此外如果你没有声明任何构造函数,编译器也会为你声明一个default构造函数。所有这些函数都是public且inline。因此,如果你写下:class E...

2018-03-07 13:43:39 1984

原创 Effective C++笔记之四:确定对象被使用前已先被初始化

       关于初始化的定义参考Effective C++笔记之一:声明、定义、初始化与赋值,这里先看一个例子:#include <iostream>using namespace std;class TestA{public: TestA() { cout << "default constructor" << endl; } ...

2018-03-04 22:37:16 2009

原创 Effective C++笔记之三:尽可能使用const

关键字const多才多艺。你可以用它在classes外部修饰global或namespace(见Effective C++笔记之二) 作用域中的常量,或修饰文件、函数、或区块作用域(block scope)中被声明为static的对象。你也可以用它修饰classes内部的static和non-static成员变量。面对指针,你也可以指出指针自身、指针所指物,或两者都(或都不)是con...

2018-03-04 15:30:45 2516

原创 Effective C++笔记之二:尽量以const、enum、inline替换#define

一.#define定义的类似函数的宏,使用时易出错缺点描述这样做的初衷是,宏看起来像函数,但不会招致函数调用(function call)带来的额外开销。但即使你为所有实参加上小括,仍然会在使用时遭遇麻烦。举个例子:// 求两个变量中最大的那个#define THE_MAX(a, b) f((a) > (b) ? (a) : (b))当这样使用的时候:THE_MAX(++a, ++b);a...

2018-03-03 21:37:32 2230

原创 Effective C++笔记之一:声明、定义、初始化与赋值

一.声明(Declaration)       声明的作用是指定变量的类型和名称,makes a name known to the program。区分声明和定义可以让C++支持分开编译,比如A.cpp中定义了变量var1,在B.cpp中只需要声明var1这个变量就可以直接使用。因为这样的用法,声明常常见于头文件中。源文件包含头文件之后,就可以使用这个变量,即使没有看到该变量的定义。 声明的语法...

2018-03-03 16:27:05 2611

原创 Qt中使用Font Awesome图标字体库

Font Awesome号称是为Bootstrap设计的完美图标字体,经常出现在各类网页中,非常流行。官网: https://fontawesome.com/中文网: http://www.fontawesome.com.cn/GitHub: https://github.com/FortAwesome/Font-Awesome1. 首先我们从官网或者github上下载到最新的源码建议从github上下载,github上已经是更新6.1了,官网上还是3.2.12. 在解压目录中找到 webfon

2018-03-02 11:22:25 14776

原创 Qt基础之五:使用invokeMethod异步调用函数

在主线程中如果执行比较耗时的任务,但是又不想单独开子线程来处理,不妨试试Qt中提供QMetaObject::invokeMethod方法,该方法支持函数的异步调用,这样就会在界面显示后去执行,而不会卡主主界面这里MyMethod就是被调用的函数名,如果MyMethod带参数且有返回值,如下所示需要注意的是,如果第三个参数使用Qt::QueuedConnection,即异步调用,将无法获取返回值,因为此连接方式只是负责把事件交给事件队列,然后立刻返回,所以函数返回值就无法确定了invokeMet

2018-03-02 10:45:48 12204

原创 Boost.Asio C++ 网络编程之十一:deadline_timer使用说明

       deadline_timer和socket一样,都用io_service作为构造函数的参数。也即,在其上进行异步操作,都将导致和io_service所包含的iocp相关联。这同样意味着在析构 io_service之前,必须析构关联在这个io_service上的deadline_timer。一.构造函数在构造deadline_timer时指定时间。basic_deadline_time...

2018-03-01 16:52:49 4757

原创 Boost.Asio C++ 网络编程之十:基于TCP的异步服务端

       这个流程图是相当复杂的:从Boost.Asio出来你可以看到4个箭头指向on_accept,on_read,on_write和on_check_ping。这也就意味着你永远不知道哪个异步调用是下一个完成的调用,但是你可以确定的是它是这4个操作中的一个。基于TCP的异步服务端1.流程图2.实现#ifdef WIN32#define _WIN32_WINNT 0x0501#inclu...

2018-03-01 14:36:12 4320

原创 Boost.Asio C++ 网络编程之九:基于TCP的异步客户端

现在,是比较有趣(也比较难)的异步实现! 当查看流程图时,你需要知道Boost.Asio代表由Boost.Asio执行的一个异步调用。例如do_read(),Boost.Asio和on_read()代表了从do_read()到on_read()的逻辑流程,但是你永远不知道什么时候轮到on_read()被调用,你只是知道你最终会调用它。基于TCP的异步客户端1.流程图2.实现#ifde...

2018-03-01 14:19:32 3137

Qt高仿QQ截图

使用Qt高仿QQ截图,实现了画图形、画线、画刷、写文字、重做等功能

2017-11-27

20种数据结构和算法的C++实现

20种数据结构和算法的C++实现,详见博客:http://blog.csdn.net/caoshangpa/article/details/78557334

2017-11-17

Qt下用QSplitter实现滑动窗口

Qt下用QSplitter实现滑动窗口,详见博客:http://blog.csdn.net/caoshangpa/article/details/78549788

2017-11-16

Qt实现窗体缩放

用Qt实现的跨平台窗体缩放,详见博客:http://blog.csdn.net/caoshangpa/article/details/78543165

2017-11-15

仿360鼠标拖动图片切换效果

博客中发现有作者写的仿360的代码,觉得其中图片滑动的效果很有意思,特提取其中的代码。并加上类似mac的画面移动的动画效果。

2017-11-15

Qt OpenGL+Graphics-View

示例+源码,QtOpenGL以及Graphics-View框架整合的例子

2017-11-14

Qt之调用zlib

Qt调用zlib的例子,详见博文:http://blog.csdn.net/caoshangpa/article/details/78528930

2017-11-14

Qt Quick实现九宫格锁屏视图

九宫格划指锁屏视图 Lisence: MIT, 请保留本文档说明 Author: surfsky.cnblogs.com 2015-02

2017-11-14

QML实现图像处理,包括浮雕、锐化等效果

使用 Qt Quick 实现的图像处理实例,支持黑白、锐化、底片、柔化、灰度、浮雕等特效。展示 Qt 中 QML 与 C++ 混合编程技术、多线程、自定义事件等关键技术。 原作者:foruok

2017-11-14

Qt插件调用实例

实例讲解Qt如何实现插件的调用,详见博客:http://blog.csdn.net/caoshangpa/article/details/78506322

2017-11-11

程序员必读之软件架构 高清pdf 带书签

程序员必读之软件架构 高清pdf 带书签

2017-07-16

c++获取OpengL版本号的两种方法

源码,没啥说的

2017-06-02

WebRTC学习之四:最简单的语音聊天

使用WebRTC实现了最简单的语言聊天 详见博客:http://blog.csdn.net/caoshangpa/article/details/53889057

2017-01-10

Qt动画效果展示

展示了Qt动画的使用,效果非常炫 详见博客:http://blog.csdn.net/caoshangpa/article/details/53964789

2017-01-01

WebRTC学习之三:录音和播放

使用WebRTC C++实现的录音与播放功能,界面用的Qt。 详见博客:http://blog.csdn.net/caoshangpa/article/details/53446916

2016-12-26

VC实现单文档切分窗口

VC实现单文档切分窗口

2016-12-03

VC通过DirectShow进行视频预览和捕获

VC通过DirectShow进行视频预览和捕获

2016-12-03

VC局域网象棋对战(毕业设计)

VC局域网象棋对战(毕业设计),含设计文档

2016-12-03

PDF密码移除工具

PDF密码移除工具,非常好用

2016-12-03

USB转串口万能驱动

USB转串口万能驱动

2016-12-03

Qt国际化(I18N)

国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),说起Qt,就不能避开国际化,国际化步骤: 如果Qt程序中有QObject::tr()包裹的字符串,对这个应用程序的翻译主要包含三步: ①.运行lupdate工具从C++源代码中提取要翻译的文本,这时会生成一个.ts文件,这个文件是XML格式的; ②.在Qt Linguist中打开.ts文件,并完成翻译工作; ③.运行lrelease工具从.ts文件中获得.qm文件,它是一个二进制文件。这里的.ts文件是供翻译人员使用的,而在程序运行时只需要使用.qm文件,这两个文件都是与平台无关的。 详见博客:https://blog.csdn.net/caoshangpa/article/details/135319397

2023-12-31

Qt之实现遮罩窗口,实现了窗口遮罩效果

参考链接:https://blog.csdn.net/caoshangpa/article/details/53053409

2022-07-24

QHVlcPlayer.rar

Qt+libVLC,使用QWidget和QOpenGLWidget两种方式渲染:详见博客https://blog.csdn.net/caoshangpa/article/details/114182802

2021-02-27

Qt+libVLC+QWidget渲染

从libVLC中抽帧,然后用QWidget渲染,详见博客:https://blog.csdn.net/caoshangpa/article/details/114171203

2021-02-27

Qt调用libVLC实现播放器

可以播放本地文件和网络url,详见博客:https://blog.csdn.net/caoshangpa/article/details/114156273

2021-02-26

TestUI.rar

Qt换肤详见博客: https://blog.csdn.net/caoshangpa/article/details/51476644 https://blog.csdn.net/caoshangpa/article/details/51527121

2021-02-09

QHOpenGLPlayer.rar

使用QOpenGLWidget渲染yuv420p,详见博客:https://blog.csdn.net/caoshangpa/article/details/112448207

2021-01-10

Qt使用SDL2\D3D渲染YUV420p

Qt使用SDL2\D3D渲染YUV420p

2021-01-09

基于Qt和SDL2播放PCM

基于Qt和SDL2播放PCM,参考博客:https://blog.csdn.net/caoshangpa/article/details/112226484

2021-01-05

QML实现点赞送礼物效果

Qt5 QML实现,详见博客:https://blog.csdn.net/caoshangpa/article/details/112195530

2021-01-04

Qt5版NeHe OpenGL教程6-10

Qt5版Nehe OpenGL教程,第六课到第十课,详见博客:https://blog.csdn.net/caoshangpa/article/details/80323712

2018-05-17

Qt5版Nehe OpenGL教程1-5

Qt5版Nehe OpenGL教程,第一课到第五课,详见博客:https://blog.csdn.net/caoshangpa/article/details/80270855

2018-05-14

Qt4版NeHe OpenGL教程 源码

Qt4版NeHe OpenGL教程 源码,NeHe的教程虽然时间久远,但是仍然是入门的好教程,至少对三维概念的了解很有帮助。

2018-05-12

Qt调用OpenGL API实现彩色旋转立方体

详见博客:https://blog.csdn.net/caoshangpa/article/details/80258907 源码中包含了glu和glut等库

2018-05-09

串口调试助手

串口调试助手,自己用的,还不错。可以设置16进制发送和接收。

2018-03-16

MyTcpClient

Qt实现的TCP客户端,用于和State Thread库的Server例子进行调试。详见博客:http://blog.csdn.net/caoshangpa/article/details/79582873

2018-03-16

Boost.Asio C++ Network Programming随书源码

Boost.Asio C++ Network Programming随书源码,书的下载链接:http://download.csdn.net/download/caoshangpa/10229882

2018-01-29

Boost.Asio C++ Network Programming(高清,带书签,可复制)

Boost.Asio C++ Network Programming(高清,带书签,可复制)

2018-01-29

Effective Modern C++ 英文原版(带书签)

Effective Modern C++ 英文原版(带书签),稍微有点英语基础就可以看懂,C++11和C++14学习必备

2018-01-27

Qt之绘制灵动的小鱼

使用Qt绘制的小鱼,用到了很多算法,包括贝塞尔曲线等,非常值得学习借鉴

2018-01-14

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

TA关注的人

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