LIULIANG

ubuntu 安装jdk1.7

安装jdk
在jdk1.7时,就可以直接下载jdk-7u5-linux-i586.tar.gz
然后解压在当前文件下
然后哦配置环境变量就行了。
环境变量配置如下
$ sudo gedit /etc/profile
在文件最后添加
#set java environment
JAVA_HOME=/administrator/java/jdk1.7.0_05
export JRE_HOME=/administrator/java/jdk1.7.0_05/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
重新启动计算机,用命令测试jdk的版本
java -version
显示如下信息:成功安装
root@liuliangVM:~# java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) Client VM (build 23.1-b03, mixed mode)
root@liuliangVM:~#


至于Ecplise,我们可以在Ubuntu Software Center下进行安装


在jdk1.6之前,我们使用的是
安装前可以查看一下jdk版本,进入Ubuntu终端 $java -version 回车,
我的是ubuntu11.10的,但是并没看到该版本下已经安装了别的jdk,但是我在网上看到都是是可以看到已经安装
了别的版本的(如看到jdk版本是1.4.2),这里就这样吧。

安装jdk1.6

首先,在http://java.sun.com下载jdk-6u12-linux-i586.bin,据说这个操作起来比较简单,不需要转换。

然后,可以把它放置在任何你喜欢的文件夹,如果是像我样的菜鸟,建议把它放置到主文件夹(/home/*)下。
下面开始安装jdk:

终端下进入你存放jdk-6u12-linux-i586.bin,例如我的位置是:
/home/liangshihong
//先修该文件的操作权限
sudo chmod u+x /home/liangshihong/jdk-6u12-linux-i586.bin
//解压安装
$ sudo -s ./jdk-6u12-linux-i586.bin
一路回车,直到询问是否安装,输入yes回车
ok,安装完毕,下面配置环境变量
配置classpath,修改所有用户的环境变量
$ sudo gedit /etc/profile
在文件最后添加
#set java environment
JAVA_HOME=/home/liangshihong/jdk1.6.0_12
export JRE_HOME=/home/liangshihong/jdk1.6.0_12/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
重新启动计算机,用命令测试jdk的版本
java -version
显示如下信息:成功安装
java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) Server VM (build 11.2-b01, mixed mode)
liangshihong@liangshihong-Imagine:~$


posted @ 2012-07-11 20:08 BIG森林 阅读(547) | 评论 (0)编辑 收藏

ibus_sunpingYin输入发安装

Ubuntu中文输入法ibus-pinyin 1.3.7稳定版本发布,支持注音模式

Ubuntu下的中文输入法ibus-pinyin发布了最新的稳定版本ibus-pinyin 1.3.7
此版本较上一版本主要的改进有:

1.增加 Ctrl + Shift + F切换简体中文和繁体中文的切换

2.输入法启动时可设置拼音输入法的优先级

3.增加注音模式

4.增加了多种注音模式键盘地图支持

ubuntu下的安装方法:

由于Ubuntu的官方软件源不能及时更新到最新版本,我们需要使用ppa的第三方源进行更新安装。

用终端运行:

    sudo add-apt-repository ppa:shawn-p-huang/ppa
    sudo apt-get update
    sudo apt-get install ibus-gtk ibus-qt ibus-pinyin ibus-pinyin-db-open-phrase

进行安装,安装结束后在首选项中的ibus设置中设置为默认输入法,注销运行后就可以使用了。

如果显示无法找到ibus-qt,可以不更新这一项,用以下命令:
sudo apt-get install ibus-gtk ibus-pinyin ibus-pinyin-db-open-phrase
进行安装。

注意,还有一点就是,按照以上的步骤缺不能要求系统每次启动都加载ibus应用,必须每次手动设置。这个多麻烦啊,如过每次开机自动启动ibus的话,可以按照一下步骤:
 不管你系统是哪个版本,找到language support这个应用,然后找到keyboard input method system设置项(默认的是none),选择ibus项就可以了。
如果上面的方法不行,也可以使用下面的方法

System >> Preferences >> Startup Applications
Click the button: Add
Name: IBus daemon
Command: /usr/bin/ibus-daemon -d
Comment: Start IBus Daemon

关于QT中不能输入中文的解决方法:
前提条件:
你已经安装了中文支持,即在system->administration->language support中
选择 Install/remove Language 中的 chinese simplified
一、安装ibus-qt4
二、终端输入:gedit ~/.profile
在.profile  中添加一下内容。
#ibus设置
export XMODIFIERS="@im=ibus"
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=xim
export ibus &
export LC_CTYPE=zh_CN.utf8
三、重启就ok了。
sudo apt-get install ibus-qt4
这个让我纠结的qt啊,最近使用QTextEdit控件,运行时,发现不能切换输入法,也就无法输入中文,之前还以为是程序设置问题,后来用qt官方的demo也不能输中文,我以为我qt某些插件没装,又重装了qt,发现问题还是如此
百度了老久了终于找到了原因和解决办法
qt程序需要安装专门支持qt的ibus
于是安装qt-ibus
注销重新登录,O了!

posted @ 2012-07-11 10:06 BIG森林 阅读(550) | 评论 (0)编辑 收藏

ubuntu 11.10网络连接问题解决方案

一、新建的连接不出现的解决方法
上网一查才发现这个问题并不难解决,终端里执行命令sudo gedit /etc/NetworkManager/NetworkManager.conf把managed=false改成managed=true,重启系统即可。

现在想了想,知道这大概是怎么回事了,安装系统之后第一次设置adsl连接时后,当时为了省时间,很多YES直接点击过去了,其实点击YES的时候系统会对内部设置文件做很多修改,因为我设置的是每次开机时候dsl自动连接,所以Ubuntu认为那个网络连接的显示图标没必要再显示了,因为每次开机之后系统就能自动联网,然后就把/etc/NetworkManager/nm-system-settings.conf里的managed=true修改成了managed=false。

二、在连接中出现ifupdown(eth0)或ifupdown(eth1)类似的问题时,我们不能修改或删除连接,解决方法是:
etc/network/interfaces文件,除以下两行外,其他全部注释掉:
auto lo
iface lo inet loopback
重新启动一下系统。然后看一下有没有什么变化。

posted @ 2012-07-09 09:09 BIG森林 阅读(311) | 评论 (0)编辑 收藏

WideCharToMultiByte和MultiByteToWideChar函数的用法

转自:http://www.cnblogs.com/gakusei/articles/1585211.html

为了支持Unicode编码,需要多字节与宽字节之间的相互转换。这两个系统函数在使用时需要指定代码页,在实际应用过程中遇到乱码问题,然后重新阅读《Windows核心编程》,总结出正确的用法。

WideCharToMultiByte的代码页用来标记与新转换的字符串相关的代码页。
MultiByteToWideChar的代码页用来标记与一个多字节字符串相关的代码页。
常用的代码页由CP_ACP和CP_UTF8两个。
使用CP_ACP代码页就实现了ANSI与Unicode之间的转换。
使用CP_UTF8代码页就实现了UTF-8与Unicode之间的转换。
下面是代码实现:
1.  ANSI to Unicode
wstring ANSIToUnicode( const string& str )
{
 int  len = 0;
 len = str.length();
 int  unicodeLen = ::MultiByteToWideChar( CP_ACP,
            0,
            str.c_str(),
            -1,
            NULL,
            0 );  
 wchar_t *  pUnicode;  
 pUnicode = new  wchar_t[unicodeLen+1];  
 memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));  
 ::MultiByteToWideChar( CP_ACP,
         0,
         str.c_str(),
         -1,
         (LPWSTR)pUnicode,
         unicodeLen );  
 wstring  rt;  
 rt = ( wchar_t* )pUnicode;
 delete  pUnicode; 
 
 return  rt;  
}
2.  Unicode to ANSI
string UnicodeToANSI( const wstring& str )
{
 char*     pElementText;
 int    iTextLen;
 // wide char to multi char
 iTextLen = WideCharToMultiByte( CP_ACP,
         0,
         str.c_str(),
         -1,
         NULL,
         0,
NULL,
         NULL );
 pElementText = new char[iTextLen + 1];
 memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );
 ::WideCharToMultiByte( CP_ACP,
         0,
         str.c_str(),
         -1,
         pElementText,
         iTextLen,
         NULL,
         NULL );
 string strText;
 strText = pElementText;
 delete[] pElementText;
 return strText;
}

 


posted @ 2012-06-07 22:51 BIG森林 阅读(287) | 评论 (0)编辑 收藏

C-- 文件操作

     摘要: 先来看文件操作中的文件。所谓文件(file)一般指存储在外部介质上数据的集合,比如我们经常使用的mp3、mp4、txt、bmp、jpg、 exe、rmvb等等。这些文件各有各的用途,我们通常将它们存放在磁盘或者可移动盘等介质中。那么,为什么这里面又有这么多种格式的文件呢?原因很简 单,它们各有各的用途,区分就在于这些文件里面存放的数据集合所遵循的存储规则不一样。举个例子比如bmp图片文件,为什么他...  阅读全文

posted @ 2012-05-27 10:46 BIG森林 阅读(298) | 评论 (0)编辑 收藏

Swing菜单与工具栏

分类: Swing


6.3 使用工具栏:JToolBar类

工具栏是现代用户界面中主程序窗口的主要部分。工具栏向用户提供了对于常用命令的简单访问,这通常构建为层次结构的菜单结构。支持这种功能的Swing组件就是JToolBar。

JToolBar是一个种存放组件的特殊Swing容器。这个容器可以在我们的Java Applet或是程序中用作工具栏,而且可以在程序的主窗口之外浮动或是托拽。JToolBar是一个非常容易使用与理解的简单组件。

6.3.1 创建JToolBar组件

有四个构造函数可以用来创建JToolBar组件:

  1. public JToolBar()
  2. JToolBar jToolBar = new JToolBar();
  3. public JToolBar(int orientation)
  4. JToolBar jToolBar = new JToolBar(JToolBar.VERTICAL);
  5. public JToolBar(String name)
  6. JToolBar jToolBar = new JToolBar("Window Title");
  7. public JToolBar(String name,int orientation)
  8. JToolBar jToolBar = new JToolBar("Window Title", ToolBar.VERTICAL);

在默认情况下,工具栏是以水平方向进行创建的。然而,我们可以通过JToolBar的常量HORIZONTAL与VERTICAL显示指定方向。

而且在默认情况下,工具栏是可以浮动的。所以,如果我们使用水平方向创建一个工具栏,用户可以在窗口周围拖动工具栏来改变工具栏的方向。

6.3.2 向JToolBar添加组件

一旦我们拥有一个JToolBar,我们需要向其中添加组件。任意的Component都可以添加到工具栏。当处理水平工具栏时,由于美观的原因,如果工具栏的组件是大致相同的高度时是最好的。对于垂直工具栏,如果工具栏组件具有大致相同的宽度则是最好的。JToolBar类只定义了一个方法用于添加工具栏项目;其他的方法,例如add(Component)是由Container继承而来的。另外,我们可以向工具栏添加分隔符。

  1. public JButton add(Action action);
  2. public void addSeparator();
  3. public void addSeparator(Dimension size);

当使用JToolBar的add(Action)方法时,所添加的Action被封闭在一个JButton对象中。这与向JMenu或是JPopupMenu组件添加Action不同,在后一种情况中,所添加的是JMenuItem对象。对于JMenu与JPopupMenu,以这种方式添加Action是类的Javadoc中所不推荐的。对于分隔符,如果我们没有指定尺寸,所安装的观感会强制默认的尺寸设置。

由工具栏移除组件可以使用下面的方法:

  1. public void remove(Component component)
 6.3.3 JToolBar属性

表6-15列出了JToolBar所定义的9个属性。

JToolBar属性

属性名
数据类型

访问性

accessibleContext
AccessibleContext

只读

borderPainted
boolean

读写绑定

floatable
boolean

读写绑定

layout
LayoutManager

只写

margin
Insets

读写绑定

orientation
int

读写绑定

rollover
boolean

读写绑定

UI
ToolBarUI

读写

UIClassID
String

只读

在默认情况下绘制JToolBar的边框。如果我们不希望绘制边框,我们可以将borderPainted属性设置为false。如果不使用borderPainted属性,我们需要修改border属性(由超类JComponent继承的属性)。

orientation属性只可以设置为JToolBar的HORIZONTAL或是VERTICAL常量。如果使用其他的值,则会抛出IllegalArgumentException。修改方向会改变工具栏的布局管理器。如果我们通过setLayout()方法直接修改布局管理器,改变方向会撤销我们的布局管理器。

正如前面所提到的,默认情况下工具栏是可浮动的。这就意味着用户可以拖动工具栏并放置在其他位置。要拖动工具栏,用户选择工具栏的空白部分。然后工具栏可以停留在原始的程序窗口,在主窗口内部浮动,或者是拖动到原始程序窗口的其他部分。如果原始窗口的布局管理器是BorderLayout,可拖动的部分是布局管理器无组件的边。(我们不能将工具栏放在窗口的中央。)否则,工具栏会被拖动到容器的最后一个点上。图6-10显示了拖动与停放过程的不同阶段。

rollover属性定义了当用户在工具栏的不同组件上移动时与观感特定的行为。这种行为涉及到颜色与边框的不同。

6.3.4 处理JToolBar事件

并没有特定于JToolBar的事件。我们需要将监听器关联到我们需要响应用户交互的JToolBar上的每一项上。当然,JToolBar是一个Container,所以我们也可以监听其事件。

6.3.5 自定义JToolBar观感

每一个可安装的Swing观感都提供了其自己的JToolBar外观以及默认的UIResource值集合。外观的大部分是由工具栏中的实际组件控制的。图6-11显示了预安装的观感类型集合Motif,Windows以及Ocean的JToolBar组件外观。每一个工具栏都有五个JButton组件,在第四个与第五个组件之间有一个分隔符。

swing_6_11

表6-16中列出了JToolBar的UIResource相关的属性。对于JToolBar组件,有22个不同的属性。

JToolBar UIResource元素

属性字符串

对象类型

ToolBar.actionMap

ActionMap

ToolBar.ancestorInputMap

InputMap

ToolBar.background

Color

ToolBar.border

Border

ToolBar.borderColor

Color

ToolBar.darkShadow

Color

ToolBar.dockingBackground

Color

ToolBar.docingForeground

Color

ToolBar.floatingBackground

Color

ToolBar.floatingForeground

Color

ToolBar.font

Font

ToolBar.foreground

Color

ToolBar.handleIcon

Icon

ToolBar.highlight

Color

ToolBar.isRollover

Boolean

ToolBar.light

Color

ToolBar.nonrolloverBorder

Border

ToolBar.rolloverBorder

Border

ToolBar.separatorSize

Dimension

ToolBar.shadow

Color

ToolBarSeparatorUI

String

ToolBarUI

String

6.3.6 完整的JToolBar使用示例

列表6-8演示了一个完整的JToolBar示例,这个程序生成了一个带有多个菱形按钮的工具栏。这个程序同时重用了本章前面列表6-2中为菜单示例所定义的ShowAction。

在这个示例中允许了rollover属性以演示当前观感的不同。图6-12是我们在不同的按钮上移动鼠标时的输出结果。

  1. package net.ariel.ch06; import java.awt.BorderLayout;
  2. import java.awt.Color;
  3. import java.awt.Container;
  4. import java.awt.EventQueue;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener; import javax.swing.Action;
  7. import javax.swing.Icon;
  8. import javax.swing.JButton;
  9. import javax.swing.JFrame;
  10. import javax.swing.JScrollPane;
  11. import javax.swing.JTextArea;
  12. import javax.swing.JToolBar; import net.ariel.ch04.DiamondIcon; public class ToolBarSample { private static final int COLOR_POSITION = 0;
  13.     private static final int STRING_POSITION = 1;
  14.     static Object buttonColors[][] = {
  15.         {Color.RED, "RED"},
  16.         {Color.BLUE, "BLUE"},
  17.         {Color.GREEN, "GREEN"},
  18.         {Color.BLACK, "BLACK"},
  19.         null, // separator
  20.         {Color.CYAN, "CYAN"}
  21.     }; public static class TheActionListener implements ActionListener {
  22.         public void actionPerformed(ActionEvent event) {
  23.             System.out.println(event.getActionCommand());
  24.         }
  25.     }
  26.     /**
  27.      * @param args
  28.      */
  29.     public static void main(String[] args) {
  30.         // TODO Auto-generated method stub Runnable runner = new Runnable() {
  31.             public void run() {
  32.                 JFrame frame = new JFrame("JToolBar Example");
  33.                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  34.                 ActionListener actionListener = new TheActionListener(); JToolBar toolbar = new JToolBar();
  35.                 toolbar.setRollover(true); for(Object[] color: buttonColors) {
  36.                     if(color == null) {
  37.                         toolbar.addSeparator();
  38.                     }
  39.                     else {
  40.                         Icon icon = new DiamondIcon((Color)color[COLOR_POSITION], true, 20, 20);
  41.                         JButton button = new JButton(icon);
  42.                         button.setActionCommand((String)color[STRING_POSITION]);
  43.                         button.addActionListener(actionListener);
  44.                         toolbar.add(button);
  45.                     }
  46.                 }
  47.                 Action action = new ShowAction(frame);
  48.                 JButton button = new JButton(action);
  49.                 toolbar.add(button); Container contentPane = frame.getContentPane();
  50.                 contentPane.add(toolbar, BorderLayout.NORTH);
  51.                 JTextArea textArea = new JTextArea();
  52.                 JScrollPane pane = new JScrollPane(textArea);
  53.                 contentPane.add(pane, BorderLayout.CENTER);
  54.                 frame.setSize(350, 150);
  55.                 frame.setVisible(true);
  56.             }
  57.         };
  58.         EventQueue.invokeLater(runner);
  59.     } }

6.3.7 JToolBar.Separator类

JToolBar维护其自己的分隔符从而允许自定义JToolBar上的分隔符的观感。

这个分隔符是我们调用JToolBar的addSeparator()方法时自动创建的。另外,如果我们希望手动创建这个组件,则有两个方法可以创建JToolBar.Separator。

  1. public JToolBar.Separator()
  2. JSeparator toolBarSeparator = new JToolBar.Separator();
  3. public JToolBar.Separator(Dimension size)
  4. Dimension dimension = new Dimension(10, 10);
  5. JSeparator toolBarSeparator = new JToolBar.Separator(dimension);

这两个构造函数都创建一个水平分隔符。我们可以配置其尺寸。如果我们没有指定尺寸,观感类型会决定分隔符的尺寸。

与JPopupMenu.Separator类似,如果我们希望修改分隔符的方向,我们必须调用由JSeparator所继承的setOrientation()方法,此时的参数为JToolBar.Separator.VERTICAL。

6.4 小结

本章介绍了许多Swing菜单相关的类及其内部关系,以及Swing工具栏类。首先,我们了解了JMenuBar及其选择模型,并且了解了菜单栏如何应用在Applets以及程序中。

接下来,我们探讨了JMenuItem,这是用户选择的菜单元素,以及系统用来处理事件的两个新的事件/监听器对,MenuKeyEvent/MenuKeyListener以及MenuDragMouseEvent/MenuDragMouseListener。然后,我们探讨了JMenu组件,这是JMenuItem实放置的地方,及其新的事件/监听器对,MenuEvent/MenuListener,这可以用来确定菜单何时将会发送。

接下来,我们了解了JSeparator组件以及我们如何可以将其作为一个菜单分隔符或是菜单外的可视分隔符。

然后我们探讨了JPopupMenu,JMenu用其来显示其JMenuItem组件集合。对于JPopupMenu,我们了解了弹出菜单自己的事件/监听器对,PopupMenuEvent/PopupMenuListener。

然后我们探讨了JCheckBoxMenuItem与JRadioButtonMenuItem中的可选择的菜单元素,以及MenuElement接口,同时我们了解了如何创建自定义的菜单组件。

菜单并不是唯一可以弹出的内容,所以我们探讨了Popup与PopupFactory。最后,本章探讨了JToolBar类。

在第7章中,我们将会了解Swing提供的用来自定义Swing组件周围边框的不同类。


转自: http://blog.chinaunix.net/uid-13670711-id-224264.html

posted @ 2012-05-25 22:20 BIG森林 阅读(383) | 评论 (0)编辑 收藏

虚拟机

虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
定义  通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统

用途

  通过虚拟机软件,你可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机完全就像真正的计算机那样进行工作,例如你可以安装操作系统、安装应用程序、访问网络资源等等。对于你而言,它只是运行在你物理计算机上的一个应用程序,但是对于在虚拟机中运行的应用程序而言,它就是一台真正计算机。因此,当你在虚拟机中进行软件评测时,可能系统一样会崩溃;但是,崩溃的只是虚拟机上的操作系统,而不是物理计算机上的操作系统,并且,使用虚拟机的“Undo”(恢复)功能,你可以马上恢复虚拟机到安装软件之前的状态。

虚拟系统与虚拟机区别

  虚拟系统其实以Prayaya迅影V3虚拟系统为代表的,通过生成现有操作系统的全新虚拟镜像,它具有真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响 ,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统。虚拟系统和传统的虚拟机VmwareVirtualBoxVirtual pc)不同,虚拟系统不会降低电脑的性能,启动虚拟系统不需要像启动windows系统那样耗费时间,运行程序更加方便快捷。

主流的虚拟机软件
Oracle xVM VirtualBox  
      Oracle VM VirtualBox 是由Sun Microsystems公司出品的软件(sun 于 2010年被Oracle收购),原由德国innotek公司开发。2008年2月12日,Sun Microsystems宣布将以购买股票的方式收购德国Innotek软件公司,新版不再叫做Innotek VirtualBox,而改叫Sun xVM VirtualBox。2010年1月21日,欧盟终于同意Oracle收购Sun,VirtualBox再次该名变成 Oracle VM VirtualBox。VirtualBox是开源软件。目前VirtualBox 3.2.0支持的操作系统包括:Debian, Fedora, Linux, Mac OS X(Intel), Mandriva, OpenSolaris, PCLiunxOS, Red Hat, SUSE Linux, Solaris 10, Ubuntu, Windows, Xandros, openSUSE等。Oracle VM VirtualBox 支持的客户端操作系统包括:从 3.1到Vista的所有版本的Windows、Linux 2.2、2.4和 2.6内核、Solaris x86、OS/2、、OpenBSD、 Netware 、FreeBSD 和 DOS 。在 2007 年 1 月,InnoTek 以 GNU General Public License (GPL) 释出 VirtualBox,并提供二进位版本及开放源码版本的代码。

VMware Workstation
  不需要重开机就能在同一台电脑使用好几个OS.VMware主要的功能有:   1.不需要分区或重开机就能在同一台PC上使用两种以上的操作系统.   2.完全隔离并且保护不同OS的操作环境以及所有安装在OS上面的应用软件和资料.   3.不同的OS之间还能互动操作,包括网络、周边、文件分享以及复制贴上功能.   4.有复原(Undo)功能.   5.能够设定并且随时修改操作系统的操作环境,如:内存、磁碟空间、周边设备等等.

Virtual PC
  它能够让你在一台 PC 上同时运行多个操作系统,使用它你不用重新启动   系统,只要点击鼠标便可以打开新的操作系统或是在操作系统之间进行切   换。安装该软件后不用对硬盘进行重新分区或是识别,就能够非常顺利地   运行你已经安装的多个操作系统,而且还能够使用拖放功能在几个虚拟 P C 之间共享文件和应用程序。


VMware几个概念

  有几个概念要说明:
  1. VM(Virtual Machine)——虚拟机,指由Vmware模拟出来的一台虚拟的计算机,也即逻辑上的一台计算机
  2.HOST——指物理存在的计算机,Host′s OS指HOST上运行的操作系统
  3. Guest OS——指运行在VM上的操作系统。例如在一台安装了Windows NT的计算机上安装了Vmware,那么,HOST指的是安装Windows NT的这台计算机,其Host′s OS为Windows NT。VM上运行的是Linux,那么Linux即为Guest OS。

posted @ 2012-05-23 13:35 BIG森林 阅读(398) | 评论 (0)编辑 收藏

libvirt库简介

一、什么是libvirt?

答: libvirt是一套免费、开源的支持Linux 下主流虚拟化工具的C函数库,libvirt本身 不是一种工具, 它是一种可以建立工具来管理来宾操作系统的 API,官方描述为:

      libvirt is:

       * A toolkit to interact with the virtualization capabilities of recent versions of Linux (and other OSes).(提供给最新linux(其他操作系     统)的虚拟化功能的工具包)

       * Free software available under the GNU Lesser General Public License.  (遵循GUN公共许可的免费软件)

         * A long term stable C API  (一个长期稳定的C语言API) 

           * A set of bindings for common languages  (一组通用语言的绑定)

         * A CIM provider for the DMTF virtualization schema(CIM提供 虚拟化 架构 的DMTF( 分布式管理工作组))

二、libvirt的主要目标时什么?

答:为包括Xen 在内的各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式和hypervisor(管理工具),避免学习、使用不同hypervisor的特定工具。

三、libvirt的架构及工作方式怎样的?

答:没有使用libvirt的虚拟机管理方式如下图左 图:





libvirt的控制方式有两种:

         1)管理应用程序和域位于同一节点上。管理应用程序通过 libvirt 工作,以控制本地域。(如上图右图)

        2)管理应用程序和域位于不同节点上。该模式使用一种运行于远程节点上、名为 libvirtd 的特殊守护进程。当在新节点上安装 libvirt 时该程序会自动启动,且可自动确定本地虚拟机监控程序并为其安装驱动程序。该管理应用程序通过一种通用协议从本地 libvirt 连接到远程 libvirtd。(如下图)

 


 


 


 

libvirt的基本架构是: libvirt 实施一种基于驱动程序的架构,该架构允许一种通用的 API 以通用方式为大量潜在的虚拟机监控程序提供服务。(如下图所示)

 


 

 


 

四、libvirt现在支持哪些虚拟机?

答:支持以下虚拟机

     Xen 面向 IA-32,IA-64 和 PowerPC 970 架构的虚拟机监控程序
     QEMU 面向各种架构的平台仿真器
     Kernel-based Virtual Machine (KVM) Linux 平台仿真器
     Linux Containers(LXC) 用于操作系统虚拟化的 Linux(轻量级)容器
    OpenVZ 基于 Linux 内核的操作系统级虚拟化
    VirtualBox x86 虚拟化虚拟机监控程序
    User Mode Linux 面向各种架构的 Linux 平台仿真器
    Test 面向伪虚拟机监控程序的测试驱动器
    Storage 存储池驱动器(本地磁盘,网络磁盘,iSCSI 卷)

五、libvirt的主要功能有哪些?

答:

  • 虚拟机管理:包括不同的领域生命周期操作,比如:启动、停止、暂停、保存、恢复和迁移。支持多种设备类型的热插拔操作,包括:磁盘、网卡、内存和CPU。
  • 远程机器支持:只要机器上运行了libvirt daemon,包括远程机器,所有的libvirt功能就都可以访问和使用。支持多种网络远程传输,使用最简单的SSH,不需要额外配置工作。比 如:example.com运行了libvirt,而且允许SSH访问,下面的命令行就可以在远程的主机上使用virsh命令行。 (可参考 http://libvirt.org/remote.html )

         virsh --connect qemu+ssh://root@example.com/system

  • 存储管理:任何运行了libvirt daemon的主机都可以用来管理不同类型的存储:创建不同格式的文件映像(qcow2、vmdk、raw等)、挂接NFS共享、列出现有的LVM卷组、 创建新的LVM卷组和逻辑卷、对未处理过的磁盘设备分区、挂接iSCSI共享,等等等等。因为libvirt可以远程工作,所有这些都可以通过远程主机使 用。(可参考http://libvirt.org/storage.html
  • 网络接口管理:任何运行了libvirt daemon的主机都可以用来管理物理和逻辑的网络接口。可以列出现有的接口卡,配置、创建接口,以及桥接、vlan和关联设备等,通过netcf都可以支持。
  • 虚拟NAT和基于路由的网络:任何运行了libvirt daemon的主机都可以用来管理和创建虚拟网络。Libvirt虚拟网络使用防火墙规则作为路由器,让虚拟机可以透明访问主机的网络。

六、libvirt可以和和哪些语言绑定?

答:       libvirt 库用 C (支持 C++ )实现,且包含对 Python 的直接支持。不过它还支持大量语言绑定。目前已经对 Ruby、Java™ 语言,Perl 和 OCaml 实施了绑定。在从 C# 调用 libvirt 方面我们已做了大量工作。

七、基于libvirt有哪些应用程序?

答:  virsh                     它是一种虚拟 shell。

         virt-install              应用程序,它可用于从多个操作系统发行版供应新域。

         virt-clone               可用于从另一个 VM 复制 VM(既包括操作系统复制也包括磁盘复制)。

         virt-manager         一些高级应用程序包括多用途桌面管理工具

         virt-viewer             安全连接到 VM 图形控制台的轻量级工具 。

八、怎样安装libvirt?

  1、在linux上安装:

      1)编译源码包:

  • 下载源码包,地址:
  •  解压源码包:

    $ gunzip -c libvirt-x.x.x.tar.gz | tar xvf -
    $ cd libvirt-x.x.x

    $ ./configure

  •  编译安装:
    $ ./configure [possible options]
    $ make
    $ sudo make install
  •  
    2)git安装

    $ git clone git://libvirt.org/libvirt.git

            $ ./autogen.sh --prefix=$HOME/usr --enable-compile-warnings=error

           $ make

            $ sudo make install



    2、在windows上安装:直接下载安装可执行程序,地址


    http://libvirt.org/sources/win32_experimental/Libvirt-0.8.8-0.exe




 

九、libvirt API简介:

答:高级 libvirt API 可划分为 5 个 API 部分:虚拟机监控程序连接 API、域 API、网络 API、存储卷 API 以及存储池 API。

       为给定虚拟机监控程序创建连接后会产生所有 libvirt 通信。该连接为所有其他要使用的 API 提供路径。在 C API 中,该行为通过 virConnectOpen 调用(以及其他进行认证的调用)提供。这些函数的返回值是一个 virConnectPtr 对象,它代表到虚拟机监控程序的一个连接。该对象作为所有其他管理功能的基础,是对给定虚拟机监控程序进行并发 API 调用所必需的语句。重要的并发调用是 virConnectGetCapabilitiesvirNodeGetInfo ,前者返回虚拟机监控程序和驱动程序的功能,后者获取有关节点的信息。该信息以 XML 文档的形式返回,这样通过解析便可了解可能发生的行为。

       进入虚拟机监控程序后,便可以使用一组 API 调用函数重复使用该虚拟机监控程序上的各种资源。virConnectListDomains API 调用函数返回一列域标识符,它们代表该虚拟机监控程序上的活动域。

       API 实现大量针对域的函数。要探究或管理域,首先需要一个 virDomainPtr 对象。您可通过多种方式获得该句柄(使用 ID、UUID 或域名)。继续来看重复域的例子,您可以使用该函数返回的索引表并调用 virDomainLookupByID 来获取域句柄。有了该域句柄,就可以执行很多操作,从探究域(virDomainGetUUIDvirDomainGetInfovirDomainGetXMLDescvirDomainMemoryPeek )到控制域(virDomainCreatevirDomainSuspendvirDomainResumevirDomainDestroyvirDomainMigrate )。

       您还可使用 API 管理并检查虚拟网络和存储资源。建立了 API 模型之后,需要一个virNetworkPtr 对象来管理并检查虚拟网络,且需要一个 virStoragePoolPtr (存储池)或 virStorageVolPtr (卷)对象来管理这些资源。

       API 还支持一种事件机制,您可使用该机制注册为在特定事件(比如域的启动、中止、恢复或停止)发生时获得通知。


参考资源:

http://www.ibm.com/developerworks/cn/linux/l-libvirt/

http://libvirt.org/

http://baike.baidu.com/view/1592349.htm

http://blog.csdn.net/MagBryan/archive/2010/03/22/5403907.aspx


转自:

http://blog.csdn.net/mushubingfeng/article/details/6307914

posted @ 2012-05-22 23:24 BIG森林 阅读(1185) | 评论 (0)编辑 收藏

VMware安装的系统无法联网

当我在VMware中安装两个虚拟机后无法后,就两个系统都不能联网,只要将360或QQ管家开机启动取消掉就行了,可能360或QQ管家将VMware中的连接个禁掉了,所以无法联网了。

posted @ 2012-05-21 23:20 BIG森林 阅读(142) | 评论 (0)编辑 收藏

BIRT 安装指南

查看: http://www.iocblog.net/project/birt/birt-62.html

posted @ 2012-05-21 12:52 BIG森林 阅读(161) | 评论 (0)编辑 收藏

仅列出标题
共9页: 1 2 3 4 5 6 7 8 9 
<2012年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜