自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (23)
  • 收藏
  • 关注

原创 Qt编程之超级玛丽

一年前在一个公众号偶然看到了一些html游戏源码,其中就有超级玛丽的。用Webstrom打开看了下,发现是别人打过包,格式化后发现代码真的是晦涩难懂,后来又到github上去搜索,看能不能找到源代码,github果然什么都有。找到了下面两个仓库,貌似是最完整的,而且也可以调试源代码:https://github.com/cflewis/Infinite-Mario-Brosh...

2020-03-14 13:43:15 3220 1

原创 一个简单的BitTorrent客户端实现(六):peer manager和peer实现

peer是整个BT通信中最复杂的部分,主要是里面各种消息的发送和一些choke和unchoke策略,piece选择策略等等。peer manager用于管理peer,本程序中维护多个peer进行远程通信。

2016-04-27 14:53:36 3308 2

原创 一个简单的BitTorrent客户端实现(五):tracker manager和tracker实现

TrackerManager顾名思义就是管理tracker的。因为可能有多个tracker,所以采用了trackermanager进行管理,所以也显得比较有条理些。

2016-04-21 16:00:30 2583

原创 使用Qt开发文本编辑器(二):标签页式文档实现

Qt中相关的类标签页俗称Tab页,Qt提供了QTableWidget用于创建基于Tab页式的文档。使用QTableWidget,我们可以很方便得添加和删除Tab、设置和获取Tab页上面的文字,设置当前的Tab。

2016-03-11 16:55:38 2824 4

原创 一个简单的BitTorrent客户端实现(四):PeerAcceptor实现

PeerAcceptor使得本机作为BT的服务器端与网络上的peer进行通信。这样我们的BT既有服务器端,又有客户端。

2016-03-11 16:48:06 1103

原创 一个简单的BitTorrent客户端实现(三):同步事件分离器

了解ACE的同学想必都知道它使用了Reactor的设计模式,ACE开发的应用程序中,有个地方会调用eventloop,里面会不停地去轮询。当询到事件时,就将事件分发给指定的事件处理器,事件处理器里面有一些什么handle_read,handle_write之类的函数来响应事件。本程序也借鉴了这种模式,这样使程序结构上变得更加清晰,理解起来也更容易些。

2016-02-29 09:14:28 1211

原创 使用Qt开发中国象棋(七):网络对战

关于Qt网络编程QTcpServer用于创建TCP服务器端。当newConnection信号激发时,我们调用指定的槽创建一个通信的套接字。 QTcpSocket用于创建TCP通信套接字。当connected信号激发时,我们向服务器端发送消息,当readyRead信号激发时,我们就可以读取数据了。

2016-02-29 09:08:36 3350 6

原创 一个简单的BitTorrent客户端实现(二):种子文件解析及信息保存

关于种子文件BT的种子文件一般是以.torrent作为后缀的。

2016-01-26 10:20:48 6086

原创 一个简单的BitTorrent客户端实现(一):概述

从读大学开始,C++就一直陪伴着我。这么多年了,总得留下些痕迹。而我一直钟爱socket编程,看了别人写的代码,再加上自己的摸索,就用C++做了最一个简单的bittorrent客户端。

2016-01-24 10:22:16 3229 1

原创 使用Qt开发文本编辑器(一):功能介绍

以前一直很羡慕别人能开发文本编辑器,后来学了Qt,看了里面的例子,自己改造一下,竟也可以弄一个出来,虽然说不是很强大,权当是自己的一个学习成果吧。好了,我就废话少说,直接转入正题了。这个文本编辑器主要实现了以下功能:        (1)文本编辑(包括撤销、恢复、保存、打开文件、导出成pdf、另存为等等)。        (2)Tab页式文档。        (3)行号显示。

2015-11-06 09:34:21 2074

原创 使用Qt开发中国象棋(六):将军和死棋检测

下棋的过程中,某一方主帅被对方攻击就是将军,如果不能解除危险,就是死棋。在这个游戏中实现了将军的判断和死棋的检测。具体如下:        (1)每走一步棋时,先要判断自己能不能这样走,当然除了走法是否合乎规则,比如说是否为蹩脚马等等,还要判断自己这样走是否被对方将军。        (2)走完一步棋后,还要判断是否将对方的军,是否造成对方死棋。首先介绍一下将军的判断方法:能够将军的无

2015-11-05 14:40:55 2825

原创 使用Qt开发中国象棋(五):走棋

在整个游戏中,走棋是最复杂的部分,也是最麻烦的。开发这个程序,大概花了三分之一的时间在这个上面。在这个游戏中,走棋是通过鼠标点击事件来完成的,当然也可以通过拖动鼠标事件来弄。假设我们自己先走,整个走棋的逻辑如下:        (1)点击鼠标。        (2)ChessBoard类调用mousePressEvent并激发doMove信号。在该事件处理函数中,我们只处理鼠标左键单击事件

2015-10-27 15:48:31 3015 1

原创 使用Qt开发中国象棋(四):步时控制

一般的象棋游戏中都会限时,超过时间没走棋,就算输了。这个游戏采用的是步时限制。走棋的时候会有提示,像下面那样:界面用的是一个QLable来显示“红方走棋”,后面显示时间的用的是一个QLCDNumber的控件。显示时间可以用定时器的方式或者线程的方式,我这里用的是线程的方式。采用的是线程和条件变量的方式。Qt提供了QWaitCondition用于条件变量,QMutex用于互斥锁,QThr

2015-10-23 17:07:30 3383 1

原创 使用Qt开发中国象棋(三):走棋着法列表

在一个完整的中国象棋游戏中,一般界面上都显示了中文着法,为了简单起见,我开发的这个用了两个着法列表,红方一个,黑方一个,其实用一个就够了,只是感觉那样稍微会麻烦些。着法列表显示了每一步的走棋。下图是着法列表的截图: 着法列表用的是一个叫StepList的类来实现的,因为有两个着法列表,所以用了两个StepList对象。实例化的时候,指定一个特殊的参数用来标示是左边的还是右边的。像下面那

2015-10-13 16:48:17 3762 1

原创 使用Qt开发中国象棋(二):棋盘绘制

棋盘用的是ChessBoard类,主要是显示界面上的棋子,响应鼠标点击事件,激发走棋的信号,MainWindow调用相关的槽,从而完成走棋。下面将一一介绍,错误之处,恳请各位指正,谢谢。        ChessBoard要显示一张背景图和18个棋子,还有走棋路迹。背景图是一个QPixmap对象,至于棋子,因为界面上有90个位置可以放棋子,所以用了90个QPixmap对象。棋盘的渲染是在pai

2015-10-12 16:27:29 5436 3

原创 使用Qt开发中国象棋(一):概述

最近看了一些关于中国象棋的实现书籍,里面讲述了如何开发一个完整的中国象棋游戏,看了里面的内容,感觉里面的内容特别巧妙的,比如书中提到了用位棋盘来表示中国象棋的棋盘以及一些精妙的走棋算法。基于这些,自己也尝试的开发了一个中国象棋。    我是在Linux Mint 17.1 32伟操作系统下面开发的,用的是Qt Creator 3.3.1,Qt的版本是5.4.1。由于要实现的功能比较多,加上每天

2015-10-12 11:25:55 3672 5

原创 使用GDB调试多线程程序

最近一直在看Debugging with GDB,看了200多页,多少也有些收获,写了个多线程的程序调试了一下。很多时候,一个多线程程序运行了很长时间没有反应,可能是死锁或是在等待条件变量。以前用Visual Studio开发游戏时,也遇到过死锁的问题。Visual Studio调试时,我们可以点击“中断”按钮,这个时候我们就可以挂起进程,就可以查看里面的线程在做什么事。但如果我们用gdb在纯命令

2015-04-28 15:27:18 964

原创 POSIX定时器

在Linux下,我们可以使用POSIX提供的函数来创建定时器int timer_create(clockid_t clockid, struct sigevent *sevp, timer_t *timerid);clockid说明定时器是基于哪个时钟的,可以是下面的几个值:CLOCK_REALTIMECLOCK_MONOTONICCLOCK_PROCESS_CPUTIME

2015-01-11 10:25:52 768

原创 顺序打印多个线程ID

最近面试时,碰到一个面试题,题目是有3个线程,顺序打印这三个线程的线程ID多次,例如ABCABC...这样打印。第一种方法:使用pthread_cond_timedwait或WaitForSingleObject,超时时间到了就打印出线程ID,每个线程设置不同的超时等待时间。/* * main.cpp * * Created on: 2014年12月27日 * Auth

2014-12-27 11:18:30 1075

原创 一个线程池的例子(三)

在Linux下,我们使用pthread线程库来进行线程编程,下面是一个线程池的简单例子,还望各位多多指教。main.cpp/* * main.cpp * * Created on: 2014年12月14日 * Author: jason */#include #include #include #include #include using namespa

2014-12-27 08:14:04 753

原创 一个线程池的例子(二)

Qt提供了QThread用于创建线程,在实际的使用过程中,我们需要派生一个QThread的子类,实现其中的run虚函数, 用的时候创建该类的实例,调用它的start方法。下面是一个使用QThread实现了一个简单的线程池。def.h#ifndef DEF_H#define DEF_H#include #include #include #include #include

2014-12-26 20:18:51 505

原创 一个线程池的例子(一)

线程池在我们日常工作中经常会用到,以前一直都不知道怎么用,今天看了书,写了一个简单的线程池例子。这个例子是基于Win32平台的。后面我会给出基于Linux平台和Qt的例子。def.h#include #include #include #include using namespace std;struct Task{ long m_StartValue; l

2014-12-26 19:47:22 620

原创 Qt串口编程

Qt提供了QSerialPort类供我们读写串口,使用该类可以方便的对串口进行读写,下面是一个简单的例子:#ifndef SERIAL_PORT_H#define SERIAL_PORT_H#include #include class SerialPort : public QObject{ Q_OBJECTsignals: void GetData(cons

2014-12-14 20:55:29 905

原创 Linux串口编程

在Linux下,串口设备显示在/dev目录下,如果用的是USB转的串口,我们执行下面的命令:        ls /dev/ | grep tty        就可以看到下面的信息:        ttyUSB0        ttyUSB1        在Linux操作系统下,一切皆文件,我们读写这两个文件就是利用串口接收和发送数据。可以用一根母对母的交叉线,将两个串

2014-12-14 20:42:52 1223

原创 基于文件列表批量拷贝文件

最近因为工作的需要,

2014-04-13 11:31:33 1072

原创 FIFO

FIFO

2013-11-03 08:04:29 826

原创 在日常工作中使用正则表达式

在我们写代码的时候,基本上都用不到正则表达式,除了要在我们的代码中校验邮箱和手机号码的合法性的功能外。其实我们几乎每天都会使用正则表达式,因为使用正则表达式不一定要用在代码中,日常的查找替换都可以使用到。        支持正则表达式的文本编辑器有很多,如notepad++,UE,Komodo Edit等。个人觉得Komode Edit对正则表达式的支持比UE和notepad++要强大,而且这

2013-10-27 09:17:06 825

原创 管道

管道由pipe函数创建,是进程间通信的一种方式。 #include int pipe(int fd[2]);                                                              返回:成功时为0,出错时为-1该函数返回两个文件描述符:fd[0]和fd[1]。前者用于读,后者用于写。管道的典型用途是以下述方式提供两个不同进程(一个

2013-10-27 01:06:25 784

原创 学生信息管理系统C实现

<br />      最近看了一些数据结构的书,感觉看书的时候看一段时间就感到厌倦了,个人觉得光看书枯燥无味而且也没多大收获,倒不如丢开书本自己写代码,遇到不会的再看书或请教别人,于是决定写一些代码,也算是我学了数据结构的劳动成果吧。代码不多,1000行左右。其中有些代码是照搬别人的,但85%以上的代码还是我个人写的,说实话,写这些代码确实觉得很累,为了完成这段代码,请教了不少CSDN的网友,今天我就把代码贴出来,代码我也不想修改了,注释也没写多少,毕竟个人能力有限,再说这些代码也没多大实际意义,希望对于

2010-09-09 21:23:00 2512 3

转载 50个C/C++源代码网站

50个c/c++源代码网站 文章出处:http://blog.chinaunix.net/u3/106835/showart_2190632.htmlC/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包

2010-05-12 16:43:00 905

转载 链表排序

文章出处:http://hi.baidu.com/zouguole/blog/item/7b1415fbed29d3244e4aea52.html链表排序2008-09-29 19:56==========================功能:选择排序(由小到大)返回:指向链表表头的指针==========================*//*选择排序

2010-04-17 10:09:00 767 1

转载 链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定

链表基本操作实现 c语言版本,该程序在visual c++ 6.0上调试通过!   本人写该程序完全是为学习交流之用,还望大家多多指教。可以随便引用,或修改本程序,但需注明请注明出处!多谢!   引用地址:http://blog.sina.com.cn/maxiaof/*  Author:  Jacky Ma  Date  : 

2010-04-15 15:02:00 1137

使用DirectX开发的魔方游戏

采用Visual Studio 2015 Community开发,基于DirectX 9.0,代码简单易懂,功能比较全面,开发时参考了博客:http://www.cnblogs.com/graphics/p/2580832.html

2016-11-29

C++开发的Bittorrent客户端

用C++在Linux下开发的简单Bittorent客户端。以Ubuntu 14.04.3 i386为操作系统,Eclipse cdt 4.5.1为开发工具,gcc 4.8.4为编译器。另外,还需要安装curl-7.46.0.tar.bz2,测试用的torrent文件是ubuntu-14.04.3-desktop-i386.iso.torrent。

2016-01-23

Qt开发的文本编辑器

开发环境:LinuxMint 17.1 QtCreator 3.3.1 Qt 5.4.1。实现了文本编辑(包括撤销、恢复、保存、打开文件、导出成pdf、另存为等等),Tab页式文档,行号显示,编辑内容转换为大写或小写,字体改变,编辑器设置,转到指定行。

2015-11-06

Linux下Qt开发的中国象棋

开发环境:LinuxMint 17.1 开发工具:QtCreator 3.3.1 Qt版本:5.4.1 功能:实现了人机对战,网络对战,自己和自己下棋三种模式。主要功能包括重复局面检测,长将判负,悔棋,提示音播放,死棋检测,中文着法显示,步时限制,保存棋局到文件和从文件加载棋局。总共代码有5000行左右,历时200多个小时。

2015-10-12

C++网络编程 卷2 基于ACE和框架的系统化复用

作者:(美)休斯顿 (Douglas C.Schmidt),等 著 王成章 ,等 译 出 版 社:科学出版社 出版时间:2012-07-01

2013-08-27

C++网络编程 卷1 运用ACE和模式消除复杂性

C++网络编程 卷1 运用ACE和模式消除复杂性 作  者:(美)施密特 ,(美)休斯顿 著 叶斌 译 出 版 社:科学出版社 出版时间:2012-01-01

2013-08-25

Programming With POSIX Threads_part2(POSIX多线程程序设计)

这本书压缩后有16.4MB,不压缩有19MB,而我一次只能上传小于15MB的文件,所以我用pdfsam将此书分割成了两部分。大家也可以用pdfsam将这两部分合并,这是第二部分,第一部分我已经上传。

2010-06-16

Programming With POSIX Threads_part1(POSIX多线程程序设计)

这本书压缩后有16.4MB,不压缩有19MB,而我一次只能上传小于15MB的文件,所以我用pdfsam将此书分割成了两部分。大家也可以用pdfsam将这两部分合并,这是第一部分,第二部分我也将上传。

2010-06-16

数据结构C实战(C.and.Data.Structures.by.Practice.2007)

该书是英文版的,实例比较多,例子也通俗易懂。有需要的兄弟可以拿去看一下。该书比较全面。

2010-04-22

mysql数据库的参考手册

mysql的中文参考手册,很不错的参考手册

2009-04-08

linux系统管理员师资培训.rar

解压后为ppt,内容丰富。通俗易懂,对于所有linux爱好者来说是不错的资料。

2008-10-26

Unix.Shell编程(第三版).pdf

本书内容丰富,全面。简单易学。是学习shell编程的好书。

2008-10-05

UNIX.Shell编程24学时教程.pdf

本书内容丰富,详实。无论是初学者,还是技术人员,都可参考。

2008-10-05

webmin-1.430-1.noarch.rpm

webmin-1.430-1.noarch.rpm linux下的图形化配置工具。推荐下载 。

2008-10-02

mytget linux下的下载工具

支持多线程,支持断点续传,速度很快。是linux下的迅雷。

2008-10-02

alsa-driver-1.0.14rc4.tar.bz2

和alsa-utils-1.0.14rc4.tar.bz2一起使用

2008-09-30

alsa-driver-1.0.14rc4.tar.bz2 alsa-utils-1.0.14rc4.tar.bz2

linux声卡驱动,可用在onda a69g 最新的版本

2008-09-30

linux中的C语言

该书详细地描述了linux中C语言编程的各个环节,内容丰富。

2008-09-22

空空如也

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

TA关注的人

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