自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

samson

A good programmer is someone who always looks both ways before crossing a one-way street.

  • 博客(20)
  • 资源 (6)
  • 收藏
  • 关注

转载 C++异常处理机制

1.C语言对于错误的处理    首先举一个例子#include <iostream> #include <setjmp.h> jmp_buf static_buf; //用来存放处理器上下文,用于跳转 void do_jmp() { //do something,simetime occurs a little error //调用longjmp...

2018-03-29 20:13:32 248

转载 内存泄露及其检测

1.内存泄漏的定义    一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。示例一:以下这段小程序演示...

2018-03-29 18:22:21 188

原创 打砖块

1.介绍消除所有的方块即可过关。操作指南:游戏中使用键盘方向键←→控制移动。首先构建双缓冲框架小球和砖块、客户区边界发生碰撞后改变运动方向。设置游戏关卡并绘制砖块分布。鼠标移动控制托盘。托盘没有接住小球生命值则减一。游戏结束时显示对话框以便继续或退出游戏。分为小球类,挡板类和砖块类。2.程序CBack.h#pragma once#include"allSys.h"class CBack{...

2018-03-29 15:57:08 1114

原创 C/C++分别实现画图软件

1.C语言版#include <graphics.h>#include <stdlib.h>#include <conio.h>#include <stdio.h>#include <dos.h>#include <bios.h>#include <math.h>#include <al

2018-03-29 15:26:53 21083 3

原创 飞机大战

1.介绍    先启动程序,在MFC下进行初始化操作,把相关的游戏对象初始化例如战机、敌机、背景、子弹和炸弹等,同时初始化绘图环境如内存DC、设备DC、位图等。然后不断的绘制游戏对象,运用算法实现游戏规则。2.程序CFoePlane.h#pragma once#include"公共.h"#include"PlayerPlane.h"#include"Gunner.h"class CFoeP...

2018-03-29 14:51:28 354

原创 基于MFC的纸牌游戏

1.介绍基类CCObject有两个派生类:一个是CCardsRank类,实现牌组的相关链表操作,并按规则显示纸牌;另一个是CRule类,类中运用算法实现接受纸牌和发送纸牌的规则,同时更新坐标。CAAAACardRank类、CAAAARule类分别继承CCardsRank类、CRule类实现细化的功能。2.程序CAAAACardRank.h#pragma once#include "cardsra...

2018-03-29 14:40:38 1851

原创 Linux下音乐播放器的实现

1.项目描述:实现了播放器的页面,并读取出文件中的歌曲名把歌曲列表显示在右侧。可以通过触 摸屏幕上的按钮实现暂停和继续播放、静音和解除静音、调节音量大小、快进和快退、点击进度 条更改歌曲播放进度、点击歌曲名切换歌曲的功能。在歌词随歌曲的播放而同步显示时,页面中 还会展现歌曲名、演唱者、歌曲总长度、歌曲当前播放时间和歌曲进度百分比。 2.项目流程:使用Glade实现了音乐播放器的页面,然后创建无名管...

2018-03-29 14:22:35 15952 3

原创 HTTP协议

前言超级详细的HTTP详解CGI详解1.HTTP介绍HTTP是一个简单的协议。客户进程建立一条同服务器进程的TCP连接,然后发出请求并读取服务器进程的响应。服务器进程关闭连接表示本次响应结束。服务器进程返回的文件通常含有指向其他服务器上文件的指针(超文本链接)。用户显然可以很轻松地沿着这些链接从一个服务器到下一个服务器。HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HT...

2018-03-28 20:01:28 311

原创 基于MFC实现的网络教室

1.项目名称:Windows 下的网络教室 2.项目目的:实现同一局域网下服务器和客户端的通信。3.项目描述:基于 MFC 实现了页面的布局。设置服务器实现教师与学生的通讯,用客户端模拟教 师和学生两种角色,并实现注册和登录的功能。教师端按下开始抢答后,学生端可以抢答。学生端可以进行举手、提交作业的操作,并且学生端的界面可以显示答题信息和在线好友列表。4.项目要点:1.使用中介者模式 观察者模式,...

2018-03-28 11:49:40 710

原创 DLNA音视频推送

1.项目简介:本次项目要求实现的是将手机或者其他手持终端上的存储音视频等多媒体文件通过无线网络推送至linux主机,并在linux实现播放的功能。同时,在播放的基础上,实现了手机端能够控制主机端媒体的暂停、快进、调节音量的等功能。在完成项目的过程当中,应用了DLNA(数字生活网络联盟)工程的解决方案完成了整个程序的架构,使用了upnp协议(通用即插即用)以及socket接口完成网络数据的传输,所以...

2018-03-28 10:52:46 6170 2

原创 Linux下网络传输(模拟路由器)

1.项目目的:实现开发板和计算机之间的通信。2.项目描述:路由器项目可以获取通信双方的MAC地址,通过修改ICMP包来实现数据的转发,从而实现不同网段的通信。除此之外,还可以通过过滤ARP缓存表来实现防火墙的功能,并可以实时打印网卡信息和ARP缓存表。在程序运行过程中路由器可以Ping开发板或者主机来检查线路。3.所用技术:使用原始套接字Socket抓取链路层数据包。通过文件IO的库函数,用链表的...

2018-03-28 10:45:04 841

原创 Windows下异步IO模型详解

1.选择模型1.1选择模型介绍选择(select)模型是Winsock中最常见的 I/O模型。核心便是利用 select 函数,实现对 I/O的管理。利用 select 函数来判断某Socket上是否有数据可读,或者能否向一个套接字写入数据,防止程序在Socket处于阻塞模式中时。在一次 I/O 调用(如send或recv、accept等)过程中,被迫进入“锁定”状态。可以同时等待多个套接字,当某...

2018-03-27 17:38:15 3244

原创 线程池的原理及其在Windows/Linux下的实现

1.为什么需要线程池 目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。 传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是“即时创建,即时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如...

2018-03-27 14:59:19 343

原创 基于QT的摄像头调用

QCamera:系统摄像设备(摄像头)QCameraViewfinder:摄像取景器部件QCameraImageCapture:截图部件widget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QCamera>#include <QCameraViewfinder>#inc...

2018-03-27 14:44:55 20270 16

原创 基于Linux的TFTP

TFTP概述1.TFTP:简单文件传送协议2.最初用于引导无盘系统,被设计用来传输小文件3.特点:基于UDP协议实现不进行用户有效性认证4.数据传输模式:octet:二进制模式netascii:文本模式 mail:已经不再支持5.TFTP通信过程总结服务器在69号端口等待客户端的请求服务器若批准此请求,则使用临时端口与客户端进行通信每个数据包的编号都有变化(从1开始)每个数据包都要得到ACK的确认...

2018-03-27 14:36:34 256

原创 基于Linux的飞鸽欺骗

1.IP信使传输协议(第9版草案)         1996/02/212003/01/14 H.Shirouzu 2.关于IP信使: IP信使使用TCP/UDP协议提供收发消息及文件(目录)。 3.特性: IP信使能够安装在任何一个安装了TCP/IP协议栈的操作系统上,使用在线用户的动态识别机制,可以和在线所有用户进行信息交换。 4.运行机制介绍: 使用TCP/UDP端口(默认端口为2425),...

2018-03-27 14:23:02 536

转载 SQL语句_练习题

问题及描述: --1.学生表 Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(C#,Cname,T#) --C# --课程编号,Cname 课程名称,T# 教师编号 --3.教师表 Teacher(T#,Tname) --T# 教师编号,Tname 教...

2018-03-27 14:12:48 376

原创 歌词解析

项目步骤:打开歌曲文件(rb方式)测文件大小申请空间,读入文件内容。用strtok 以"\r\n"(2进制文件行尾是以"\r\n"结)切割字符串,用指针数组去指向切出来的字符串。处理前四行处理后面的带时间的行,创建链表。创建模拟时钟,搜索链表中的结点,找到了打印歌词。注意事项:1、本程序完成功能:完成lrc格式歌词的文件读取、解析、链表创建等,同时在屏幕上将解析出的歌词进行实时显示。2、延时函数需...

2018-03-27 14:07:04 2803

原创 游戏修改器

0804itask.h#pragma once#ifndef __AFXWIN_H__ #error "在包含此文件之前包含“stdafx.h”以生成 PCH 文件"#endif#include "resource.h" // 主符号0804itask.cpp #include "stdafx.h"#include "0804itask.h"#include "0804ita...

2018-03-27 13:59:02 1766

原创 IO多路复用

1.概述select,poll,epoll都是IO多路复用的机制。I/O多路复用就是通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据...

2018-03-27 13:07:54 235

Linux下的软路由

路由器项目可以获取通信双方的MAC地址,通过修改ICMP包来实现数据的转发,从而实现不同网段的通信。除此之外,还可以通过过滤ARP缓存表来实现防火墙的功能,并可以实时打印网卡信息和ARP缓存表。在程序运行过程中路由器可以Ping开发板或者主机来检查线路。

2017-11-01

MFC截屏工具

选择相应的图形之后触发相应的消息处理函数,消息函数里面调用库函数实现椭圆,画笔,方块的功能。鼠标的按下和抬起的相应函数里面分别获得起始坐标和终点坐标,刷新并绘制图形

2017-11-01

MFC飞机大战

飞机大战游戏必须运用透明贴图、按键处理、定时控制、双缓冲技术 等技术实现战机(玩家)和敌机(计算机)对战功能。

2017-11-01

图片预览器

本文介绍了Linux平台下的Xwindow图形窗口编程工具GTK,并给出了用GTK编程的基本要素和步骤。 【关键词】GTK,回调函数,消息处理器,调节器 GTK(GIMP Toolkit)是一个图形用户编程的接口工具。它注册完全免费,所以用来开发自由软件或商业软件都不需要花费什么。现在很多Linux集成系统都已经将GTK1.2版本打包进去了。包括RedHat Linux 6.0以上版本,还有中文化的Turbo Linux等等。它也越来越被普遍的应用于UNIX系统编程。 还有一个组件叫Glib,它包含了一些标准应用的新扩展用来提高GTK的兼容性。用于Linux系统的某些函数可能不适合标准的UNIX系统,例如g_strerror()函数等等。某些函数也扩展了GNUC的一般功能,例如g_malloc函数就有自己加强的调试功能。 GTK可以与多种语言绑定,包括C++, Guile, Perl, Python, Ton, Ada95, Objective C, Free Pascal, Eiffel。用标准C开发的程序,编译软件可用GNU并附带上GTK选项即可。想用除了标准C以外的其它语言来开发Xwindow图形用户程序,则需要先参考一下有关绑定软件的内容(http:// www.gtk.org )。 如果用C++语言来调用GTK进行开发,可以用已经和C++绑定的软件叫GTK--软件,来提供一个比GTK更好的C++编译环境。 目前已经开发出来GTK的增强版GTK+。GTK+是将GTK,GDK,GLIB集成在一起的开发包,可以工作在许多类似于UNIX的系统上,没有GTK的平台限制。 1.GTK的消息处理机制 下面我们先看一个基本的例子,该例子产生一个200×200像素的窗口。它不能自己退出,只能通过shell来杀死进程(调用kill命令)。 /*例子 base.c */ #include <gtk/gtk.h> int main( int argc,char *argv[ ] ){ GtkWidget *window; gtk_init (&argc;, &argv;); /* 初始化显示环境 */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /* 创建一个新的窗口*/ gtk_widget_show (window); /*显示窗口*/ gtk_main (); /*进入睡眠状态,等待事件激活*/ return(0); } 从上面的程序可以看出,GTK是一个事件驱动工具包,当它运行到gtk_main()函数时会自动睡眠,直到有事件发生,控制权转让给相应的函数调用,在该函数中可以用标准C写出相应的事物逻辑。这与windows 上的程序处理是一样的。 对窗口对象上发生的事件(如按下鼠标,激活键盘等),GTK也有相应的消息信号产生。这时就需要程序员创建一个信号处理器来捕获该信号,并告诉GTK程序事件发生后调用哪个回调函数。信号处理器的创建函数定义如下: gint gtk_signal_connect( GtkObject *object, gchar *name,GtkSignalFunc callback_func, gpointer func_data ); 返回值是一个区分同一对象中的事件与不同回调函数的关联标签。这样可以做到一个对象的一个信号就有任意多个回调函数,并且每一个都会按照声明的顺序执行。函数调用的第一个参数是产生信号的widget组件(即按钮等窗口构件),而name则是希望捕获的信号或事件的名称,callback_func则是事件发生后所调用的回调函数名称,而第四个参数func_data则是传递给回调函数的参数。 回调函数要定义在主程序的前面,它们的一般格式都如下所示: void callback_func( GtkWidget *widget, gpointer func_data ); 调用下面这个方法将允许你将回调函数与事件的关联断开: void gtk_signal_disconnect( GtkObject *object, gint id ); 该函数的第二个参数就是上述gtk_signal_connect()函数的返回值,即关联标签。第一个参数指向了去除关联的对象名称。这样可以做到断开事件与回调函数的关联,使得事件发生后,不会调用相关的回调函数。 布局格式 2.1打包盒子 对GTK显示格式的控制是通常通过打包盒子来完成的。widget组件打包可以采用两种方式,水平盒子和垂直盒子。若将widget组件打包进平行盒子,组件就被依次水平的插入窗口;若是垂直盒子,则组件排列是垂直的。产生新的水平盒子的函数为 GtkWidget *gtk_hbox_new (gint homogeneous, gint spacing); 参数homogeneous是用来控制是否盒子中的每个组件都有同样的大小(例如水平盒子中的控件有同样的宽度,垂直盒子中的控件有同样的高度)。Spacing参数是组件之间的间隔。 垂直盒子的创建函数是gtk_vbox_new(),定义与水平盒子一致。 gtk_box_pack_start()和gtk_box_pack_end()函数是用来将打包对象放入这些盒子中的。 void gtk_box_pack_start( GtkBox *box, GtkWidget *child,gint expand, gint fill, gint padding ); 第一个参数是你将组件打进去的盒子指针,第二个参数是你将要打进去的组件指针。Expand参数是用来控制是否允许组件扩展至分配给盒子空间的大小(选TRUE),还是盒子的大小收缩到组件那么大(选FALSE)。函数中的fill参数是用来控制是否将多余的空间分配给组件,即将组件扩展到盒子的大小(选TRUE),或者多余的空间不变,保留作为盒子和打包组件间的间隔。该参数只有在expand参数取TRUE时才有效。Padding参数是指组件四周与盒子的间隔大小。 注意fill取FALSE值,expand取TRUE值时与expand取FALSE值,fill值无效的区别。前者的盒子仍是原来创建盒子时指定的大小,而后者的盒子已经缩小到打包组件的大小了。 gtk_box_pack_end()函数的参数与上面描述的一致。只是排列顺序分别是从下到上 ,从右到左。 最后将所有的盒子或组件打包到一个大盒子中,用gtk_container_add()函数将盒子加入窗口即可。

2017-11-01

DLNA音视频推送

项目目的:实现安卓手机端和电脑端之间的多屏互动。 项目描述:此项目通过无线网络把手机和电脑连接起来后,可以将手机中的媒体内容投放到电脑屏幕里。并且可以通过手机端的网易云音乐软件控制电脑端歌曲的播放,也可以通过BubbleUpnp软件控制电脑端MP4格式的视频播放。

2017-11-01

校招面试中常见问题-软件开发

1、调查分析,确定目标学校。如,各校专业设置、学生特点等。 校园招聘 校园招聘 2、前期宣传(根据实际选择)如,参与、赞助学校活动等。 3、临近招聘的准备。 (a)确定具体学校。 (b)准备宣传材料(宣传海报、音像材料、宣传设备等) (c)确定具体招聘载体。 (d)成立招聘小组并明确分工。 4、进入学校或其它招聘地点。 5、接受报名和简历。 6、组织实施招聘考试(如果多个院校统一招聘考试、最好请专业考试服务机构实施) 7、根据考试成绩进行筛选,实施面试。 8、根据面试结果进行录用,签协议。

2017-10-31

空空如也

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

TA关注的人

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