- 博客(70)
- 资源 (173)
- 收藏
- 关注
原创 将UltraEdit添加到右键菜单
无奈最新版UltraEdit的过了试用期,刚才下了一个绿色版的UltraEdit。绿色版的虽然可以正常使用,但是没有集成到鼠标右键菜单。每次编辑文件时,需要先打开UltraEdit,然后将要编辑的文件拖进去,非常麻烦。不过幸运的是,UltraEdit可以通过设置集成到右键菜单,方法如下。1.选择高级菜单中的“配置”按钮,如下图所示。2.在弹出的“配置”窗口中,找到“文件关联”,
2016-10-31 21:27:48 16611 1
转载 C++设计模式——模板方法模式
前言离开了自己工作了将近两年的公司,日子不再有了忙碌,可以闲下来,躺在家里的床上,想着以后的路怎么走,说实话,真的很迷茫,从2012年毕业到现在,时间不长,但是学到的东西真的是非常有限,一直从事于Windows平台上的开发。说到Windows平台的开发,大家都肯定知道的HOOK的,即使不知道HOOK,对于COM应该也是知道的,我的系列博文中也对COM进行过全面的总结。说白了,HOOK就是在
2016-10-30 13:11:55 3577
转载 C++设计模式——访问者模式
前言这是23+1(简单工厂模式)之中的最后一个了——访问者模式。访问者模式也是一个比较麻烦的设计模式。我也没有实战经验,对于访问者模式的理解完全来自GOF的《设计模式:可复用面向对象软件的基础》,而这篇文章就是根据对这本书的理解而写出来的。在读《设计模式:可复用面向对象软件的基础》的时候,让我想起自己做过的一个项目,该项目虽然没有使用访问者模式,但是,今天理解了该模式,如果使用该模式对之前
2016-10-30 13:08:07 2316
转载 C++设计模式——策略模式
前言刚刚加班回来;哎,公司规定平时加班只有10块钱的餐补;星期六和星期天加班,只给串休假;在国家规定的节假日按照3倍工资发放。那么对于这么多的计算加班费的方法,公司的OA系统是如何进行做的呢?这就要说到今天我这里总结的策略设计模式了。策略模式在GOF的《设计模式:可复用面向对象软件的基础》一书中对策略模式是这样说的:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替
2016-10-30 12:55:57 2277 1
转载 C++设计模式——状态模式
前言在实际开发中,我们经常会遇到这种情况;一个对象有多种状态,在每一个状态下,都会有不同的行为。那么在代码中我们经常是这样实现的。typedef enum tagState{ state, state1, state2}State;void Action(State actionState){ if (actionState == st
2016-10-30 11:46:01 2941
原创 Qt实现环形缓冲区的两种方法
QRingBuffer的源文件在D:\Qt\Qt5.7.0\5.7\Src\qtbase\src\corelib\tools目录中,由qringbuffer_p.h和qringbuffer.cpp实现。这个方法参考的是Qt源码中的QRingBuffer类,这个类不是Qt API的一部分,所以Qt助手里是查不到的,它的存在只是为了服务其他的源码。一个环形buffer,在尾部追加数据,从头部读取数据,适合用作IO的缓冲区。QRingBuffer实现的环形缓冲区大概如下图所示。
2016-10-30 00:19:58 24008 10
转载 C++设计模式——观察者模式
前言之前做了一个性能测试的项目,就是需要对现在的产品进行性能测试,获得测试数据,然后书写测试报告,并提出合理化的改善意见。项目很简单,我们获得了一系列性能测试数据,对于数据,我们需要在Excel中制作测试数据的折线图、饼状图和柱状图,以直观的表现出性能的变化。在实际操作时,我发现,如果我修改了一个数据,折线图、饼状图和柱状图就都发生了变换。这个是如何做到的?这就要说到今天总结的观察者模式了
2016-10-28 15:02:40 2200
转载 C++设计模式——备忘录模式
前言又到年底了,也静不下心来写代码了,大家都很浮躁;翻出经典的《仙剑奇侠传》玩一会;又要打大BOSS,先存一下档吧。这是我的习惯,在打大BOSS之前,都要先存一下档,要是打赢了,就再存一个档,覆盖之前的;如果打输了,就恢复之前的存档,接着重来。我想大家都是这么玩的吧。哎呀,总是打不过。好了,不玩了,但是,游戏中的那个存档行为却让我很着迷,它是如何实现的呢?带着好奇的心,去百度了一下;哦,原
2016-10-28 14:35:19 4462
转载 C++设计模式——中介者模式
前言我们都知道,这个国际政治是一门很深的学问,不玩政治的人是搞不懂的。那么多的国家,国家之间的关系又及其复杂;就好比现在,美国和中国有经济利益关系,美国又和日本有盟友关系,朝鲜又和中国有说不清道不明的关系;这些复杂的关系,稍微处理不好,就可能引发局部战争,更有可能引发第三次世界大战。如果出现了国与国之间出现了利益纠纷,那么该怎么办呢?这个时候,联合国出现了。联合国就是一个处理国与国之间纠纷
2016-10-28 14:08:15 2332
原创 JWPlayer 7的正确使用方法及Flash plugin failed to load解决方法
一.JW Player 简介JW Player是当今最流行的开源Flah网页播放器,可播放Adobe Flash Player所支持的媒体,具体包括:FLV、MP4、MP3、AAC、JPG、PNG和GIF等,还支持RTMP、HTTP、实时视频流、各种播放清单格式、灵活的设置和广泛的javascript API。此外它还提供多种外观、功能性插件来扩展播放器,以便我们可以分享、推荐、搜索、分析甚至
2016-10-28 11:46:02 55159 13
原创 Adobe Media Server 5(AMS)的简单配置
上篇文章写到了Adobe Media Server 5(AMS)的安装及使用,这篇文章重点写如何配置。在上一篇中,点播的sample1_500kbps.f4v是服务器自带的视频,这个视频的路径如下。那么我们如何播放自己的视频呢,当然可以把视频拷贝到这个目录,但是这样就太局限了。一.路径问题上图中我们注意到STREAM URL:rtmp://localhost/vod
2016-10-27 16:13:07 14547 2
原创 C++笔试题之约瑟夫问题(破冰游戏)
C++笔试题之约瑟夫问题(破冰游戏):编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数,报到 m 的人离开。下一个人继续从 1 开始报数。n-1 轮结束以后,只剩下一个人,问最后留下的这个人编号是多少?
2016-10-27 14:43:58 3071 1
原创 Adobe Media Server 5(AMS)的安装及使用
一.什么是Adobe Media Server?Adobe Media Server也叫Adobe Flash Media Server(FMS),是Adobe出品的一款流媒体服务器,它使用Adobe传统的流媒体协议RTMP(实时消息协议)提供视频的点播和直播服务。二.安装adobe Media Server下载地址:http://www.adobe.com/support
2016-10-27 12:01:59 28206 5
原创 Apache服务器最新版下载、安装及配置(windows版)
这段时间因为项目原因需要用到Apache,第一次接触这玩意儿,本想查查资料,但看到windows下大多数用到的都是.exe直接安装的,但这样傻瓜式操作,没多大好处,具体就不多说了。言归正传,下面来讲讲下载 、安装与配置Apache的过程。一.下载登录http://httpd.apache.org/download.cgi这个地址,找到下图所示位置。从上图可以看出,Apache版
2016-10-27 11:08:00 26788 1
原创 xampp的安装及使用
一.什么是XAMPP?XAMPP是最流行的PHP开发环境。XAMPP是完全免费且易于安装的Apache发行版,其中包含Apache、MariaDB、PHP和Perl。类似XAMPP的服务器套件还有很多,我用过的还有UPUPW,它们都极大的简化了开发环境的配置。十六款免费的服务器套件的介绍介绍了主流的免费服务器开发套件。二.安装xampp下载地址:https://ww
2016-10-26 15:40:21 75266 4
原创 C++11新特性之十七:constexpr
constexpr是在 C++11 被引进的关键字,它的字面意思是 constant expression,常量表达式。它可以作用在变量和函数上。在C++11之后的标准中赋予了constexpr更多的特性,比如C++14 允许在 constexpr 函数中使用局部变量,从而支持了循环;constexpr修饰的函数,简单的来说,如果其传入的参数可以在编译时期计算出来,那么这个函数就会产生编译时期的值。但是,传入的参数如果不能在编译时期计算出来,那么constexpr修饰的函数就和普通函数一样了。
2016-10-26 10:57:53 8359 1
转载 在纷繁多变的世界里茁壮成长:C++ 2006–2020(2)背景:C++ 的 1979–2006
C++ 从 1979 年到 2006 年的历史记录在我的 HOPL 论文中 [Stroustrup 1993, 2007]。在那段时间里,C++ 从一个单人的研究项目成长为大约有 300 万程序员的社区。
2016-10-25 19:24:38 2428 1
转载 C++设计模式——迭代器模式
前言又到年底了,时间真的过的好快啊。最近也非常感伤,总是怀念大学的日子,做梦的时候也常常梦到。梦到大学在电脑前傻傻的敲着键盘,写着代码,对付着数据结构与算法的作业;建立一个链表,遍历链表,打印链表。现在把那个时候声明的链表的头文件拿出来看看:typedef struct tagNode{ int value; tagNode *pPre; tagNode
2016-10-24 16:11:02 3164
转载 C++设计模式——解释器模式
前言那日,闲的无聊,上了一个在线编程学习网站;最近那个在线编程学习网站很火啊;之前,盖茨、扎克伯格等大人物都来宣传了,思想是人人都应该学习编程;我一想就这算怎么回事啊?这要是在中国,还让人活不?话题不扯开了,还是说我上了那个在线编程网站吧,首先是给你玩一个小游戏,激发你对编程的兴趣。游戏是这样的,网页上有一个编辑框,屏幕上有一只小狗,比如你在编辑框中输入这样的句子:down run 10;
2016-10-24 15:54:32 2568
转载 C++设计模式——命令模式
前言又要过年了,又是一个抢票季;从大学起,到现在工作,一直都是在外地,离家千里;以前买票,曾经也去火车站通宵排队买票;直到12306的腾空出现,在电脑前不停止的点着鼠标刷票,那个时候12306很是脆弱,抢一张票更是难上加难;现在好了,慢慢强大的12306,买票时出现了一个排队系统,先买票,进入12306的排队系统;然后,系统一个一个的处理大家的请求,一旦你的购票请求进入了排队系统,你就无法
2016-10-24 15:50:09 2867
转载 C++设计模式——职责链模式
前言最近心情很差,因为生活,因为工作;所以想请几天假去丽江玩玩。就向项目经理提交了休假申请,我的项目经理向项目主管提交了我的休假申请,项目主管向部门经理提交了我的休假申请;最后,部门经理同意了我的休假申请。是的,一个简单的休假申请,需要这么复杂的流程,这也是一个公司保证它正常运行的必要。如果部门经理休假了,那么我的休假申请由谁审批呢?这个时候由项目主管代替部门经理进行审批。一个休假申请的审
2016-10-24 15:13:42 2129
原创 Win7(Windows 7)下用VS2013(Visual Studio 2013)编译crtmpserver
这一篇博客堪称是Win7(Windows 7)下用VS2012(Visual Studio 2012)编译librtmp的姊妹篇,这连个库是进行rtmp开发的经典开源组合。一.准备工作1.下载crtmpserver源码crtmpserver-centosinit.rar下载链接:https://github.com/j0sh/crtmpserver2.下载并编译crtmpserv
2016-10-24 11:59:04 4549 8
原创 目标文件和可执行文件的存储格式
目标文件和可执行文件里面都有什么。编译器编译源代码(由于汇编比较简单,这里汇编包含在编译中)后生成的文件叫做目标文件(Object File),例如 Visual Studio 下的.obj,或者 GCC 下的.o。
2016-10-21 09:27:34 3463 1
原创 C++11并发学习之四:线程同步(续)
有时候,在第一个线程完成前,可能需要等待另一个线程执行完成。C++标准库提供了一些工具可用于这种同步操作,形式上表现为条件变量(condition variables)和期望(futures)。一.条件变量C++标准库对条件变量有两套实现:std::condition_variable和std::condition_variable_any。这两个实现都包含在 头文件的声明中。两者都需要与
2016-10-20 23:11:22 2882
原创 Win7(Windows 7)下用VS2012(Visual Studio 2012)编译librtmp
一.准备工作1.下载librtmp源码trmpdump-2.3.tgz下载链接:http://rtmpdump.mplayerhq.hu/download/2.下载并编译librtmp的依赖库zlib和openSSL本文主要想说明如何编译librtmp,zlib和openSSL的编译过程略,只提供两者已经编译好的头文件和静态库。二.开始编译1.新建VS2012的Wi
2016-10-20 15:12:55 4715 3
转载 在纷繁多变的世界里茁壮成长:C++ 2006–2020(3)C++ 标准委员会
国际 C++ 标准委员会正式名称为,它是 C++ 发展的核心。自 1991 年成立以来,就一直如此。而从 1989 年开始到它成立之前,C++ 开发的中心则是美国国家标准学会(ANSI)的 C++ 标准委员会 [Stroustrup 1993]。C++ 没有腰缠万贯的所有者,也没有其他重要的资金提供来源,因此社区依赖于企业开发和开源项目。对于很多处于相互竞争的组织中的人来说,WG21 和各个国家的标准委员会是他们能够会面并联合解决问题的唯一场合。
2016-10-20 15:02:34 3937 1
原创 RTMP协议分析及H.264打包原理
RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。RTMP协议是一个互联网五层体系结构中应用层的
2016-10-20 14:20:58 21547 1
原创 C++11并发学习之三:线程同步
1. 头文件介绍Mutex又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 头文件中,所以如果你需要使用 std::mutex,就必须包含 头文件。(1)Mutex系列类(四种)std::mutex,最基本的 Mutex 类。std::recursive_mutex,递归 Mutex 类。std::time_mutex,定时 Mutex 类。
2016-10-17 22:44:12 5638
原创 libevent学习之三:简单的服务器和客户端
基于libevent的服务器和客户端。源码默认使用的是MingW版本的libevent头文件和库,也包含Windows版本的libevent头文件和库,后缀为_win。先启动服务器,然后启动客户端,效果如下图所示。
2016-10-17 16:26:06 10956 2
原创 libevent学习之二:Windows下编译libevent
Linux下编译参考源码中的README文件即可,这里主要记录Windows下的编译。一.准备工作去官网下载最新的稳定发布版本libevent-2.0.22-stable官网地址:http://libevent.org/二.使用VS2012编译1.解压libevent到C:\Users\zhang\Desktop\libevent-2.0.22-stable2.打开“VS2012开发人员命令提示”.........
2016-10-17 14:42:19 8359
转载 C++设计模式——代理模式
前言青春总是那样,逝去了才开始回味;大学生活也是在不经意间就溜走了,现在上班的时候,偶尔还会怀念大学时,大家在一起玩游戏的时光。大学喜欢玩游戏,但是可悲的校园网,速度能把人逼疯了;还好,后来搞了一个游戏代理,总算能勉勉强强的玩了两年。时至今日,敲起键盘写设计模式的时候,又想起了那些美好的时光。好了,这是一篇技术文章,而不是抒情怀旧的散文;思绪再回到这篇文章上来,游戏代理,是个什么东西,有了
2016-10-17 11:23:43 2203
转载 C++设计模式——享元模式
前言无聊的时候,也去QQ游戏大厅玩五子棋或者象棋;作为程序员,看到一个产品,总要去想想它是怎么设计的,怎么完成的,我想这个是所有程序员都会做的事情吧(强迫症???)。有的时候,想完了,还要做一个DEMO出来,才能体现自己的NB,然后还有点小成就感。在玩五子棋或象棋的时候,我就想过,腾讯那帮伙计是怎么做的呢?五子棋的棋子有黑白两色,难道每次放一个棋子就new一个对象么?象棋有车、马、
2016-10-17 10:52:53 2260 2
转载 C++设计模式——外观模式
前言在实际开发时,面对一个大的系统,总是会将一个大的系统分成若干个子系统,等子系统完成之后,再分别调用对应的子系统来完成对应的整体功能,这样有利于降低系统的复杂性;最终进行实现某个具体的功能时,我们将对应的子系统进行组合就好了;但是,子系统那么多,关系那么复杂,组合形成一个完整的系统,是存在难度的。我们在使用visual studio进行编译C++代码时,你只是在菜单中选择了Bui
2016-10-17 10:03:41 1934
原创 截图时如何显示鼠标指针
很多截图工具都有这个功能,这里推荐一款免费截图神器FSCapture(全称FastStone Capture),各大软件站均有下载。首先进行简单设置,如下图所示,选中“包括鼠标指针”。然后通过快捷键截图,快捷键如下。捕捉活动窗口:Alt+PrintScreen捕捉窗口/对象:Shift+PrintScreen捕捉矩形区域:Ctrl+PrintScreen捕捉手绘区域
2016-10-17 09:44:28 7011
原创 PS(PhotoShop)替换纯色图片的颜色
1.复制图层快捷键:Ctrl+j2.创建剪贴蒙版创建完成后,注意下图中红框的变化。3.用油漆桶工具填充颜色将前景色设置为红色,然后选择油漆桶工具,点击图层0副本中的黑色部分,最终效果如下图所示。4.保存选择菜单“文件”——>"存储为",快捷键Shift+Ctrl+S
2016-10-17 09:19:06 9809 1
原创 C++11并发学习之二:线程管理
也就是说,如果进程的main函数返回或者任何线程调用了exit, 整个进程就终止,其中包括它的任何线程。2.当使用detach()函数时,主调线程继续运行,被调线程驻留后台运行,主调线程无法再取得该被调线程的控制权。当主调线程结束时,由运行时库负责清理与被调线程相关的资源。在声明一个std::thread对象之后,都可以使用detach和join函数来启动被调线程,区别在于两者是否阻塞主调线程。1.当使用join()函数时,主调线程阻塞,等待被调线程终止,然后主调线程回收被调线程资源,并继续运行;
2016-10-16 19:39:14 2601 1
原创 C++11并发学习之一:小试牛刀
1.与C++11多线程相关的头文件C++11 新标准中引入了四个头文件来支持多线程编程,他们分别是 ,,,和。:该头文主要声明了两个类, std::atomic和std::atomic_flag,另外还声明了一套C风格的原子类型和与C兼容的原子操作的函数。:该头文件主要声明了 std::thread 类,另外 std::this_thread 命名空间也在该头文件中。:
2016-10-16 14:17:42 2562
原创 C++ 取代switch的三种方法
上述完全是一个面向过程到面向对象的转变:将每个case分支都作为一个子对象,然后用C++语言的多态性去动态绑定。(2)子类代表了一个case,比必须用type去硬编码的case语句更加具有可读性;值得注意的是函数指针要用typedef定义,否则报错。(3)代码的可读性增强,使得分支的维护性增加;(5)避免了漏写break语句造成的隐蔽错误。(4)面向对象的思想更加符合人看世界的方式;(1)分支的增减只要继续派生即可;
2016-10-15 13:03:49 14138 6
20种数据结构和算法的C++实现
2017-11-17
Qt下用QSplitter实现滑动窗口
2017-11-16
QML实现图像处理,包括浮雕、锐化等效果
2017-11-14
WebRTC学习之四:最简单的语音聊天
2017-01-10
WebRTC学习之三:录音和播放
2016-12-26
Qt国际化(I18N)
2023-12-31
QHVlcPlayer.rar
2021-02-27
Qt+libVLC+QWidget渲染
2021-02-27
Qt调用libVLC实现播放器
2021-02-26
TestUI.rar
2021-02-09
QHOpenGLPlayer.rar
2021-01-10
基于Qt和SDL2播放PCM
2021-01-05
Qt5版NeHe OpenGL教程6-10
2018-05-17
Qt5版Nehe OpenGL教程1-5
2018-05-14
Qt调用OpenGL API实现彩色旋转立方体
2018-05-09
MyTcpClient
2018-03-16
Boost.Asio C++ Network Programming随书源码
2018-01-29
Boost.Asio C++ Network Programming(高清,带书签,可复制)
2018-01-29
Effective Modern C++ 英文原版(带书签)
2018-01-27
++i和i++哪个更高效
2023-02-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人