大英计算机协会
面向对象编程与系统
http://www.blackie.dk/~dfaure/conf/oops/html/slide_1.html
KDE是什么
http://www.blackie.dk/~dfaure/conf/oops/html/slide_2.html
KDE库结构
http://www.blackie.dk/~dfaure/conf/oops/html/slide_3.html
Qt对象模型
http://www.blackie.dk/~dfaure/conf/oops/html/slide_4.html
通过很多方式增强了C++对象的概念
元信息(比rtti更强大)
信号和槽(比回调函数更安全)
改进内存管理
-->C++的超集
Qt对象
http://www.blackie.dk/~dfaure/conf/oops/html/slide_5.html
所有窗体,文件,定时器,...
和应用程序一级的对象都是Qt的对象
Qt还定义了容器:字符串,Map...(QTL)
每个Qt对象都可(用char*来)命名
其它特征:
父对象
超类(父类)
信号,槽
事件
共享
父对象
http://www.blackie.dk/~dfaure/conf/oops/html/slide_6.html
每个对象都可赋一个父对象
QFrame * frame = ...
QPushButton * okButton = new QPushButton(frame, "OKButton");
Coupled生存期(删除)
delete frame;
父对象持有子对象列表
QObjectList * childObjects = frame->children();
元信息
http://www.blackie.dk/~dfaure/conf/oops/html/slide_7.html
类名
QTimer *t = new QTimer; //QTimer由QObject继承
t->isA("QTimer"); // 返回TRUE
t->isA("QObject"); //返回FALSE
t->className(); //返回"QTimer"
超类(父类)
QTimer *t = new QTimer; //QTimer由QObject继承
t->inherits("QTimer"); // 返回TRUE
t->inherits("QObject"); //返回TRUE
t->inherits("QButton"); //返回FALSE
这就允许在类型转换前进行检查。
信号和槽
http://www.blackie.dk/~dfaure/conf/oops/html/slide_8.html
对象间通信
大多数GUI包的触发动作,通过回调函数。
信号/槽比回调函数要安全,这利益于它是类型安全的。
可以多对多连接
允许进行对象封装(发送者不需要知晓接收者)
强大的组件编程机制
高效:在奔腾133上只需10微秒
事件
http://www.blackie.dk/~dfaure/conf/oops/html/slide_9.html
常用工具包事件
在对象类中支持而不是窗体类。
例如:定时器事件
Qt的事件主循环:
-从事件队列中取回本地窗口系统事件
-把它们译成QEvent
-把翻译后的事件发送到QObjects.
窗体(或其它对象)再实现事件过滤。
受控指针
http://www.blackie.dk/~dfaure/conf/oops/html/slide_10.html
一个受控指针和普通的C++指针行为一致,
除了在它引用的对象销毁时自动置为null。
这种情形下,普通的C++指针变成了“幽灵指针”
主要应用
保存指向QObject对象的指针,该指针为其它对象持有并且会在你还引用它的时候销毁了。
共享对象
http://www.blackie.dk/~dfaure/conf/oops/html/slide_11.html
Qt中的很多类都优化了数据共享机制。
好处:数据拷贝和内存使用最小化
深度拷贝:copy()
浅拷贝:赋值(operator=)
显式共享:detach() - 直接访问数据时
隐式共享:修改时detached.
实例:QString
共享指针
http://www.blackie.dk/~dfaure/conf/oops/html/slide_12.html
一个共享指针:
控制对象的生存时间
当没人需要该对象时,删除它
实例:从2进制缓存中抽取的文件类型信息
组件技术
http://www.blackie.dk/~dfaure/conf/oops/html/slide_13.html
十月以前:KOM/OpenParts
-基于CORBA
现在:KOfficer的KParts + DCOP
-共享库
KDE-1.89以后:KDE的KParts + DCOP
KOM/OpenParts
http://www.blackie.dk/~dfaure/conf/oops/html/slide_14.html
KOM:基于CORBA的对象模型
管理Qt对象模型(信号,槽)
OpenPartsUI:Qt窗体的抽象层
OpenParts:高层框架
(文档,视图,Part,窗口,应用程序)
提供到别的进程的嵌入
(包含菜单和工具栏的合成)
KParts
http://www.blackie.dk/~dfaure/conf/oops/html/slide_15.html
高层框架
(Part,视图,窗口,Shell)
基于Qt,本地窗体工具包
每个part(组件)都 是一个共享库
动态打开
比照
http://www.blackie.dk/~dfaure/conf/oops/html/slide_16.html
KOM/OpenParts VS KParts
在各个特定的包中开发 VS 在本地工具包中开发
(常位于Qt后,要学习) (已知的,应用可独立使用)
每个方法都调一堆参数 直接调用
(性能很差) (要快得多)
进程间通信 全部在一个进程中
(不稳定,服务器总运行) (不会出现通信失败)
-->桌面分布系统上 -->更适用于组件嵌入
所有的不足
但是,进程间通信怎么办?
进程间通信
http://www.blackie.dk/~dfaure/conf/oops/html/slide_17.html
下一代KParts
http://www.blackie.dk/~dfaure/conf/oops/html/slide_18.html
KOffice
http://www.blackie.dk/~dfaure/conf/oops/html/slide_19.html
链接
http://www.blackie.dk/~dfaure/conf/oops/html/slide_20.html
Saturday, May 20, 2006
Tuesday, May 16, 2006
通过ssh访问远程linux主机
1. 在window通过cygwin
1)创建RSA key
1)创建RSA key
In $(CYGWINDIR)\usr\bin, execute ssh-keygen.exe, this will ask you for inputting some key password, just press enter for a null password and accept other default settings.
ssh-keygen.exe will generate a pair of keys in the $(CURRENT_USER_PROFILE)\.ssh\ directory, id_rsa and id_rsa.pub which are the private RSA key and the public RSA key, respectively. $(CURRENT_USER_PROFILE) are normally d:\profiles\$(YOUR_EMAILID).
Since the private key id_rsa are stored in the windows machine which is itself password-pretected, null password for the key during the creation procedure by ssh-keygen.exe will not make your system LESS secure.
2) 拷贝公钥到远程linux
保存在$(HOME)/.ssh/authorized_keys文件中
3) 通过ssh登录远程主机。
2.在远程主机运行图形界面到windows的cygwin
在windows命令行界面运行ipconfig查看本地IP。
运行cygwin并startx启动X server
运行xhost +命令允许远程使用本地X服务
登录远程linux主机设置远程linux主机的环境变量DISPLAY=windows_host_ip:0.0
运行图形界面程序。
2) 拷贝公钥到远程linux
保存在$(HOME)/.ssh/authorized_keys文件中
3) 通过ssh登录远程主机。
2.在远程主机运行图形界面到windows的cygwin
在windows命令行界面运行ipconfig查看本地IP。
运行cygwin并startx启动X server
运行xhost +命令允许远程使用本地X服务
登录远程linux主机设置远程linux主机的环境变量DISPLAY=windows_host_ip:0.0
运行图形界面程序。
Subscribe to:
Comments (Atom)