- 博客(410)
- 资源 (7)
- 收藏
- 关注
原创 Qt_OpengGL:平面图形的着色渲染小测
//.h#ifndef GLWIDGET_H#define GLWIDGET_H#include #include class GLWidget : public QGLWidget{ Q_OBJECTpublic: explicit GLWidget(QGLWidget *parent = 0); ~GLWidget();protected:
2014-12-08 14:04:27 1402
原创 Git:远程分支、远程版本库
远程分支: git show-ref 输出所有的本地引用,有些引用以refs/remotes/origin/为前缀,这些名称和远程版本库的分支名一一对应,这些引用是.从远程版本库的分支复制过来的,称为远程分支。git branch -r 也可查看这些远程分支。 远程分支不是真正意义上的分支,是类似于里程碑一样的引用。对远程分支检出会出错。如果对远程分支进行修改就需要创建
2014-12-07 17:31:29 1310 3
原创 Git:里程碑和分支
Git分支 分支的3种类型:发布分支、特性分支、卖主分支。 发布分支:在软件新版本发布后经常使用此技术进行软件维护,发布升级版本。使用此分支功能,可以避免对已发布的软件版本进行Bug修正时引入新功能的代码,或者因误删其他Bug修正代码导致已修复问题重现。 特性分支:采用分支(发布分支)将某个功能或模块的开发与开发主线独立开来。实验性、探索性的功能开发应该为其建
2014-12-04 19:19:18 3246
原创 Git文件操作
Git文件操作一、删除文件 保存进度: git stash 恢复进度: git stash applyrm *.txt只是删除了工作区的文件,暂存区和版本库的还在。法一: git rm a.txt b.txt c.txt git commit -m "delete trash files"当然,文件只是
2014-12-03 20:20:21 792
原创 Chain of Responsibility模式
Chain of Responsibility模式 熟悉MFC的朋友都知道,MFC是"基于消息,事件驱动"滴,它的向上传递消息的机制跟职责链的思想是相同的,其实Qt中的touchEvent也是这样处理的。 职责链模式的最大一个优点就是降低了系统的耦合性,请求的发送者完全不知道该请求会被哪个应答对象处理。C++代码示例:
2014-12-03 14:06:07 664
原创 Interpreter模式
Interpreter模式 给定一个语言,定义它的语法的一种表示(如一些应用提供了内建的脚本或宏来让用户可以定义他们自己能够在系统中进行的操作),并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 一个简单常用的例子是搜索匹配一个模式的字符串。与其为每一个模式都构造一个特定的算法,不如使用一种通用的搜索算法来解释执行
2014-12-03 13:08:33 790
原创 Iterator模式
Iterator模式 Iterator模式可以提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。C++代码示例://aggregate.h#ifndef AGGREGATE_H#define AGGREGATE_Hclass Iterator;typedef int Objec
2014-12-03 11:42:34 648
原创 Visitor模式
Visitor模式 Visitor模式作用是表示一个作用于某个对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 开发时,可能会经常移到需求变更:我们做好的一个设计、实现了一个系统原型,客户又有了新的需求,因此不得不去更该已有的设计,最常见的解决方案就是给已经设计好的类添加I新的方法去实
2014-12-02 13:52:33 847 2
原创 Command模式
Command模式介绍: Command模式通过将请求封装到一个对象(Command)中,并将请求的接收者存放到具体的ConcreteCommand类(Receiver)中,从而实现调用操作的对象和操作的具体实现之间的解耦。 Command类中一般只是一些接口的集合,并不包含任何的数据属性(当然,也可有)。C+
2014-12-02 10:29:07 1648
原创 Mediator模式
Mediator模式 Mediator模式是一种很有用的模式,它通过将对象间的通信封装到一个类中,将多对多的通信转化为一对多的通信,降低了系统的复杂性。 面向对象设计激励将行为分布到各个对象中,但这种分布可能会导致对象间有许多连接,在最坏的情况下,每一个对象都知道
2014-12-01 22:02:43 795
原创 Memento模式
Memento模式 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。其实就是Undo操作,Memento模式可提供帮助。 如果用接口来让其他对象直接得到这些状态,将会暴露对象的实现细节并破坏对象的封装性。C++代码示例://memento.h#
2014-12-01 19:43:06 720
原创 Observer模式
Observer模式一、目的: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。二、举例: 对同一组数据进行统计分析时,我们希望能够提供多种形式的表示(eg: 表格,柱状图,饼图),这些表示都依赖于同一组数据,当这组数据改变时,所有的统计表示都同时改变。三、适用性
2014-12-01 17:22:27 741
原创 State模式
State模式一、效果: 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。二、适用性: 1、一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。 2、一个操作中含有庞大的多分支条件语句,且这些分支依赖于该对象的状态。State模式将每一个条件分支放入一个独立的类中,这使
2014-12-01 00:00:56 839
原创 Strategy模式
Strategy模式 Strategy模式和Template模式要解决的问题是相同的,都是为了实现业务逻辑具体实现和抽象接口之间的解耦。Strategy模式将逻辑算法封装到一个类中,通过组合的方式将具体算法的实现放在组合对象中实现,再通过委托的方式将抽象接口的实现委托给组合对象实现。Strategy模式和Template模式实际上是实现
2014-11-30 23:37:54 655
原创 Template Method模式
Template Method模式Intention: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。When: 对于一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架是相同的,TemplateMe
2014-11-30 21:20:21 717
原创 Proxy模式
Proxy模式Intention: 为其他对象提供一种代理以控制对这个对象的访问。When: 1、创建开销大的对象时,比如显示一幅大的图片,我们将这个创建过程交给Proxy去完成(Virtual Proxy)。 2、为网络上的对象创建一个局部的本地代理,比如要操作一个网络上的一个对象(特别是网络性能不好时),可将这个操纵
2014-11-30 18:32:00 700
原创 Facade模式
Facade模式Intention: 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。When: 将一个系统划分为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是是子系统之间的通信和相互依赖关系达到最小。达到该目标的途径之一就是引入一个外观对象,它为子系统
2014-11-30 18:05:25 679
原创 Flyweight模式
Flyweight模式一、意图: 运用共享技术有效地支持大量细粒度的对象。二、说明: Flyweight模式对那些通常因为数量太大而难以用对象来表示的概念或实体进行建模。三、举例: 文档编辑器,可以为每个字母创建一个Flyweight。每个享元存储一个字符代码,但它在文档中的位置和排版风格可以在字符出现时
2014-11-30 14:44:31 632
原创 Composite模式
Composite模式一、遇到的问题: 开发中,经常可能要递归构建树状的组合结构,Composite模式可助你。二、意图: 将对象组合成树形结构以表示"部分-整体"的层次结构,Composite使得用户对单个对象和组合对象的使用具有一致性。三、C++代码示例://component.h#ifndef COM
2014-11-30 12:57:18 749
原创 Decorator模式
Decorator模式 在OO设计和开发过程中,若我们需要为一个已经定义好的类添加新的操作,通常会定义一个新类来继承以定义好的类,这样会带来一个问题(见),通过继承还带来了系统的复杂性。 Decorator模式提供了一种给类添加操作的方法,不是通过继承实现,而是通过组合,使组件对客户透明。一、意图: 动态地给一个对象
2014-11-30 11:34:14 682
原创 Adapter模式
Adapter模式一、意图: 将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。二、举例: 在应用程序中已然设计好了接口,此时使用了第三方库来加快开发,但是我们设计的接口与三方库提供的接口不一致。为了使接口不兼容的类可以在一起工作,Adapter模式将一个
2014-11-30 08:57:52 708
原创 Bridge模式
Bridge模式 总结面向对象实际上就六个字:高聚合,松耦合。666。一、意图: 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 note: 这里的"实现"不是指的继承基类实现基类接口,而是通过对象组合实现用户的需求。 二、动机: 考虑在一个用户界面工具箱中,一个可移植的Window抽象部分的实
2014-11-30 00:19:07 853
原创 Prototype模式
Prototype模式一、意图: 用原型实例指定创建对象的种类,并且通过拷贝这些原则创建新的对象。(复制构造函数)二、C++示例:#include using namespace std;class Prototype{public: virtual ~Prototype(); virtual Proto
2014-11-29 22:43:09 789
原创 Builder模式
Builder模式一、意图: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。二、通俗解释: 大学教育有四个学年,每个学年可作为教育的一个构建过程,每个人经过四年得到的结果不一样,因为在这四个阶段的构建中引入了不同的参数(如个人的奋斗和机遇等)。三、解决的问题: 当我们要创建的对象很
2014-11-29 21:47:59 853
原创 Singleton模式
Singleton模式一、要解决的问题: 怎样创建一个唯一的变量(对象)?二、解决: 通过维护一个static的成员变量来记录这个唯一的对象实例,通过提供一个static的接口来获得这个唯一的实例。三、C++实例://singleton.h#ifndef SINGLETON_H#define SING
2014-11-29 19:47:23 604
原创 AbstractFactory模式讲解
AbstractFactory模式零、意图: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。一、解决的问题: 在一款游戏中,怪物都是分等级的,要创建千万个怪物实例,但是要保证初级的怪物类不能创建高级的。 支持多种视感标准的用户界面工具包。二、动机: 以工具包为例:为解决需求可以定义一个
2014-11-29 18:57:06 720
原创 Factory Method模式讲解
Factory Method模式讲解零:FactoryMethod模式两个最重要的功能: 1)定义创建对象的接口,封装了对象的创建。 2)使得具体化类的工作延迟到了子类中。//抽象基类只是提供了对象创建的接口,其实现放在抽象基类的派生类中。一、解决的问题: 1、为提高内聚和松耦合,抽象出一些类的公共接口形
2014-11-29 17:00:15 793
原创 设计模式总览
设计模式总览 设计模式一般来说有23中,可分为3类:创建性模式、结构性模式、行为模式。★创建型模式包括:FactoryMethod模式、AbstractFactory模式、Singleton模式、Builder模式、Prototype模式.★结构型模式包括:Bridge模式、Adapter模式、Decorator模式、Composite模式
2014-11-29 14:23:05 764
转载 链接:掌握android所有控件、ProgressBar 、Android 动画效果、SQLite、四大组件、Android多媒体
git checkoutHEAD的重置即检出:git reset 使HEAD的内容不能改变而一直指向master分支。而git checkout的实质是修改HEAD本身的指向,该指针不会影响分支"游标"(如master)查看当前HEAD的指向: cat .git/HEAD #输出ref: refs/heads/master执行git branch -v会看到当前处于mast
2014-11-28 23:52:23 511
原创 QtScript小测
QtScript小测//.proQT += core guiQT += scriptCONFIG += uitoolsgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = TableTEMPLATE = appSOURCES += main.cppHE
2014-11-28 23:41:54 913
原创 Git:分支&&HEAD的重置
分支的重置question:有新提交时,master分支对应的引用文件的内容是否改变?master分支对应的引用文件中的内容可否人为改变?touch new-commit.txtgit add new-commit.txtgit commit -m "judge"cat .git/refs/heads/master #发
2014-11-28 17:37:47 12984
原创 Git库对象
Git库对象先查看日志的详尽输出,发现有三个SHA1哈希值: $ git log -l --pretty=raw使用git cat-file -t id 查看对象ID类型(commit/tree)使用git cat-file -p id 查看对象的内容,输出的blob对象保存着welcome.txt的内容,-t查看id类型输出为
2014-11-28 15:31:44 806
原创 git diff&&git stash
git diff查看HEAD(版本库中当前提交)指向的目录树: $ git ls-tree -l HEAD显示暂存区的目录树: $ git ls-files -s若想针对暂存区的目录树使用git ls-tree,需先将暂存区的目录树写入Git对象书,然后针对该目录树执行命令git ls-tree: $
2014-11-28 08:20:11 1567
原创 Git暂存区
Git暂存区git log查看提交日志,--stat参数可以看到每次提交的文件变更统计: $ cd /d/GitRoot/workspace/demo $ git log --stat查看修改后的文件与版本库中的文件(实际比较的是一个中间状态的文件)的差异: $ git diff显示精简格式的状态输出
2014-11-28 00:52:35 772
原创 Git第一篇
查看Git版本:$ git --version//工作备份:本地提交: $ git add -u #如果创建了新文件,可执行git add -i 命令 $ git commit推送操作:将本地版本库中的提交同步到公司的Git服务器上: $ git push//两地协同工作:将mirror
2014-11-27 22:24:19 667
转载 为什么 Git 比 SVN 好
为什么 Git 比 SVN 好在版本控制系统的选型上,是选择Git还是SVN?对于开源项目来说这不算问题。使用Git极大地提高了开发效率、扩大了开源项目的参与度、 增强了版本控制系统的安全性,选择Git早已是大势所趋。但对于企业用户来说这个决心不太好下。部分原因是出于对Git的误解,部分原因是尚不了解 Git到底能给项目管理带来什么好处。希望
2014-11-27 15:44:43 715
转载 QML侧边伸缩导航栏
import QtQuick 2.0Rectangle { id: root width: 100; height: 400; color: "white" Rectangle { id: hideButton anchors { top: parent.top; bottom:parent.bott
2014-11-26 19:33:44 5167 2
转载 Q_INVOKABLE与invokeMethod用法详解
Q_INVOKABLE与invokeMethod用法全解请尊重原创作品和译文。转载请保持文章完整性,并以超链接形式注明原始作者地址http://blog.csdn.net/changsheng230,方便其他朋友提问和指正。 在Qt/Qt Quick宏浅议一文中,我们将介绍Qt中经常使用的几个宏: Q_OBJECT, SIGNAL与SLOT, Q_SIGNALS 与 Q_SLOTS
2014-11-26 14:41:16 5498
转载 Qt Quick实现的涂鸦程序
之前一直以为 Qt Quick 里 Canvas 才可以自绘,后来发觉不是,原来还有好几种方式都可以绘图!可以使用原始的 OpenGL(Qt Quick 使用 OpenGL 渲染),可以构造QSGNode 来绘图,还可以使用 QPainter !哇, QPainter 我很熟悉啊。于是,我用 QPainter 结合 QML 实现了一个简单的涂鸦程序: PaintedItem 。它有下列功能:
2014-11-26 13:03:02 4750 3
原创 Qt网络开发之QNetworkAccessManager使用要点
要点一:对于一个应用程序,一个QNetworkAccessManager就足够了,当然使用多个QNetworkAccessManager也是没有问题的,Webkit中一个QWebpage只会使用一个QNetworkAccessManager。 要点二:每一个回复QNetworkReply都需要删除,否则会出现内存泄露,根据Qt的帮助文档,在接收完数据的槽中使用deleteLater(
2014-11-21 18:55:06 15699
ACM-ICPC算法训练教程-余立功-清华大学出版社5
2014-04-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人