随笔 - 68  文章 - 0 评论 - 40 trackbacks - 0

摘要:QT提供了很多的进程间通讯的方法,例如共享内存,QProcess等等。但有一种方法是嵌入式端所独有的,那就是Qt Communications Protocol(QCOP)QT通讯协议,这种方法只能用于QT Embeded。网上关于这种用法的资料比较少,研究了半天才搞明白是怎么回事。QCOP将进程间的通讯简化,使之就像使用QT中的信号与槽一样方便。用法:1.首先是编写接收消息的程序 channel = new QCopChannel(QString("/System/recevie"),this); connect(channel, SIGNAL(received(cons 阅读全文
posted @ 2013-07-11 15:38 曾经的你| 阅读(1511) 评论(0) 推荐(0) 编辑
摘要:装饰者模式时常会遇到这样一种情况,我已经设计好了一个接口,并且也有几个实现类,但是这时我发现我设计的时候疏忽了,忘记了一些功能,或者后来需求变动要求加入一些功能,最简单的做法就是修改接口,添加函数,然后继承类中都相应的添加实现,这样做倒也没什么问题,但是如果这种变化来个好几次或者继承类非常多,那工作量可就大了。这时大神们就发明了装饰者模式,在不修改现在有接口和实现类的基础上实现功能或者状态的添加。从类图上看,ConcreteComponent是Component原有的继承类,而Decorator装饰者类也继承与Component,这样的是让Decorator的子类也可以方便的添加Compone 阅读全文
posted @ 2013-06-28 20:50 曾经的你| 阅读(9635) 评论(2) 推荐(1) 编辑
摘要:适配器模式适配器模式是很好理解的模式了,生活中也非常常见,什么插头2口转3口,什么USB转PS2,这都算是适配器模式。说白了,就是如果有一些东西提供的接口你很像用,但是你手头没有好的接口使用它,这个就需要一个适配器,将你需要的接口转换成你所拥有的接口。这样的好处也是显而易见,就是你不用改变你现在所拥有的接口,保证你在任何地方的用法都不需要修改,然后底层的实现由适配器调用需要的接口来具体实现。常见的场景使用第三方库的时候,第三方的库肯定不能适用所有的系统,所以需要一个适配器来转换。优点1.屏蔽了具体的实现方式,实现了依赖倒转。2.可以把不统一的接口封装起来,使之成为统一的接口。3.把本来不方便适 阅读全文
posted @ 2013-06-27 20:05 曾经的你| 阅读(7776) 评论(5) 推荐(2) 编辑
摘要:桥接模式先说说桥接模式的定义:将抽象化(Abstraction)与实现化(Implementation)分离,使得二者可以独立地变化。桥接模式号称设计模式中最难理解的模式之一,关键就是这个抽象和实现的分离非常让人奇怪,大部分人刚看到这个定义的时候都会认为实现就是继承自抽象,那怎么可能将他们分离呢。这里引用《大话设计模式》里面的那个例子。这个例子中,每次添加一个新的手机品牌,则必须要添加相应的通讯录和游戏,而每次要给每个手机添加新功能,则所有的手机品牌下都必须继承一个新的类,这样工作量就大了,而且可能通讯录和游戏的实现方法是一样的,这就有很多重复代码。看到这里可能已经看到了端倪了,虽然这个最顶层 阅读全文
posted @ 2013-06-26 16:52 曾经的你| 阅读(7156) 评论(1) 推荐(2) 编辑
摘要:http://www.sqlite.org/c3ref/busy_handler.html留着自己看的。Register A Callback To Handle SQLITE_BUSY Errors注册一个回调函数处理SQLITE_BUSY错误int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);This routine sets a callback function that might be invoked whenever an attempt is made to open a database table tha 阅读全文
posted @ 2013-06-24 22:43 曾经的你| 阅读(753) 评论(0) 推荐(0) 编辑
摘要:以下内容摘自《SQLITE权威指南》,下载地址http://download.csdn.net/detail/cxjchen/5643391 SQLITE的锁 在SQLite中,锁和事务是紧密联系的。为了有效地使用事务,需要了解一些关于如何加锁的知识。 SQLite采用粗放型的锁。当一个连接要写数据库,所有其它的连接被锁住,直到写连接结束了它的事务。SQLite有一个加锁表,来帮助... 阅读全文
posted @ 2013-06-24 22:04 曾经的你| 阅读(17652) 评论(1) 推荐(1) 编辑
摘要:重写X509TrustManager 1 private static TrustManager myX509TrustManager = new X509TrustManager() { 2 3 @Override 4 public X509Certificate[] getAcceptedIssuers() { 5 return null; 6 } 7 8 @Override 9 public void checkServerTrusted(X509Certificate[] chain, String authTy... 阅读全文
posted @ 2013-06-24 17:05 曾经的你| 阅读(34123) 评论(2) 推荐(0) 编辑
摘要:以下是我自己学习设计模式的感想。原型模式学过C++的都知道拷贝构造函数,复制一个对象分为浅拷贝和深拷贝。浅拷贝:就是给对象中的每个成员变量进行复制,就是把A1类中的变量直接赋给A2类中变量,属于值传递,但是涉及到有new之类内存分配的地方,他们却是共享内存的。深拷贝:就是不仅使用值传递,而是要每个变量都有自己一份独立的内存空间,互不干扰。默认的拷贝构造函数是浅拷贝的,如果要实现深拷贝,就需要重写拷贝构造函数T(const T&)。既然有了拷贝构造函数,还要引入原型模式呢?根据我自己查阅资料之后,我觉得好像是面向对象语言中都是引用传递,而且只提供简单的浅拷贝,所以没有拷贝构造函数这么一说 阅读全文
posted @ 2013-06-23 20:05 曾经的你| 阅读(8821) 评论(2) 推荐(0) 编辑
摘要:下面是我自己对建造者模式的理解。具体我还没在开发中应用过,这只是对于书本的理解。建造者模式建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。这是建造者模式的标准表达,不过看着让人迷惑,什么叫构建和表示的分离?一个对象使用构造函数构造之后不就固定了,只有通过它方法来改变它的属性吗?而且还要同样的构建过程搞出不同的表示,怎么可能呢?多写几个构造函数?其实多写几个构造函数,根据不同参数设置对象不同的属性,也可以达到这样的效果,只是这样就非常麻烦了,每次要增加一种表示就要添加一个构造函数,将来构造函数会多得连自己都不记得了,这违背了开放-封闭的原则。要不就只能设计几 阅读全文
posted @ 2013-06-22 16:47 曾经的你| 阅读(7640) 评论(0) 推荐(0) 编辑
摘要:单例模式单例模式,可以说设计模式中最常应用的一种模式了,据说也是面试官最喜欢的题目。但是如果没有学过设计模式的人,可能不会想到要去应用单例模式,面对单例模式适用的情况,可能会优先考虑使用全局或者静态变量的方式,这样比较简单,也是没学过设计模式的人所能想到的最简单的方式了。一般情况下,我们建立的一些类是属于工具性质的,基本不用存储太多的跟自身有关的数据,在这种情况下,每次都去new一个对象,即增加了开销,也使得代码更加臃肿。其实,我们只需要一个实例对象就可以。如果采用全局或者静态变量的方式,会影响封装性,难以保证别的代码不会对全局变量造成影响。考虑到这些需要,我们将默认的构造函数声明为私有的,这 阅读全文
posted @ 2013-06-21 16:08 曾经的你| 阅读(142252) 评论(13) 推荐(13) 编辑