Java Socket网络编程初级入门【转载】

Java Socket网络编程初级入门【转载】

转自:http://www.wang48.com/jishubaodianview/?jsd\_id=4902\
(转到自己博客,省的到处去翻)
事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的Api来完成这些工作。Socket就是其中之一,对于Java而言,这些Api存在与java.net 这个包里面,因此只要导入这个包就可以准备网络编程了。
网络编程的基本模型就是客户机到服务器模型,简单的说就是两个进程之间相互通讯,然后 其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置。并去建立两者之间的联系,然后完成数据的通讯就可以了,这里提供固定位置的通常称 为服务器,而建立联系的通常叫做客户端,基于这个简单的模型,就可以进入网络编程啦。
Java对这个模型的支持有很多种Api,而这里我只想 介绍有关Socket的编程接口,对于Java而言已经简化了Socket的编程接口。首先我们来讨论有关提供固定位置的服务方是如何建立的。Java提 供了ServerSocket来对其进行支持.事实上当你创建该类的一个实力对象并提供一个端口资源你就建立了一个固定位置可以让其他计算机来访问 你,ServerSocket server=new ServerSocket(6789);这里稍微要注意的是端口的分配必须是唯一的。因为端口是为了唯一标识每台计算机唯一服务的,另外端口号是从 0~65535之间的,前1024个端口已经被Tcp/Ip 作为保留端口,因此你所分配的端口只能是1024个之后的。好了,我们有了固定位置.现在所需要的就是一根连接线了.该连接线由客户方首先提出要求。因此 Java同样提供了一个Socket对象来对其进行支持,只要客户方创建一个Socket的实例对象进行支持就可以了。Socket client
=new Socket(InetAddress.getLocalHost(),5678);客户机必须知道有关服务器的IP地址,对于着一点Java也提供了一 个相关的类InetAddress 该对象的实例必须通过它的静态方法来提供,它的静态方法主要提供了得到本机IP 和通过名字或IP直接得到InetAddress的方法。
上面的方法基本可以建立一条连线让两台计算机相互交流了,可是数据是如何传输的呢? 事实上I/O操作总是和网络编程息息相关的。因为底层的网络是继续数据的,除非远程调用,处理问题的核心在执行上,否则数据的交互还是依赖于IO操作的, 所以你也必须导入java.io这个包.java的IO操作也不复杂,它提供了针对于字节流和Unicode的读者和写者,然后也提供了一个缓冲用于数据 的读写。
BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter out=new PrintWriter(server.getOutputStream());
上面两句就是建立缓冲并把原始的字节流转变为 Unicode可以操作,而原始的字节流来源于Socket的两个方法,getInputStream()和getOutputStream()方,分别 用来得到输入和输出,那么现在有了基本的模型和基本的操作工具,我们可以做一个简单的Socket例程了.
服务方:
import java.io.*;
import java.net.*;
public class MyServer {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);
Socket client=server.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println(“has receive….”);
out.flush();
if(str.equals(“end”))
break;
}
client.close();
}
}
这个程序的主要目的在于服务器不断接收客户机所写入的信息只到,客户机发送”End”字符串就退出程序,并且服务器也会做出”Receive”为回应,告知客户机已接收到消息。
客户机代码:
import java.net.*;
import java.io.*;
public class Client{
static Socket server;
public static void main(String[] args)throws Exception{
server=new Socket(InetAddress.getLocalHost(),5678);
BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter out=new PrintWriter(server.getOutputStream());
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true){
String str=wt.readLine();
out.println(str);
out.flush();
if(str.equals(“end”)){
break;
}
System.out.println(in.readLine());
}
server.close();
}
}
客户机代码则是接受客户键盘输入,并把该信息输出,然后输出”End”用来做退出标识。
这个程序只是简单的两台计算机之间的通讯,如果是多个客户同时访问一个服务器呢?你可以试着再运行一个客户端,结果是会抛出异常的。那么多个客户端如何实现呢?
其实,简单的分析一下,就可以看出客户和服务通讯的主要通道就是Socket本身,而服务器通过accept方法就是同意和客户建立通讯.这样当客户建 立Socket的同时。服务器也会使用这一根连线来先后通讯,那么既然如此只要我们存在多条连线就可以了。那么我们的程序可以变为如下:
服务器:
import java.io.*;
import java.net.*;
public class MyServer {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);
while(true){
Socket client=server.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println(“has receive….”);
out.flush();
if(str.equals(“end”))
break;
}
client.close();
}
}
}
这里仅仅只是加了一个外层的While循环,这个循环的目的就是当一个客户进来就为它分配一个Socket直到这个客户完成一次和服务器的交互,这里也 就是接受到客户的”End”消息.那么现在就实现了多客户之间的交互了。但是.问题又来了,这样做虽然解决了多客户,可是是排队执行的。也就是说当一个客 户和服务器完成一次通讯之后下一个客户才可以进来和服务器交互,无法做到同时服务,那么要如何才能同时达到既能相互之间交流又能同时交流呢?很显然这是一 个并行执行的问题了。所以线程是最好的解决方案。
那么下面的问题是如何使用线程.首先要做的事情是创建线程并使得其可以和网络连线取得联系。 然后由线程来执行刚才的操作,要创建线程要么直接继承Thread要么实现Runnable接口,要建立和 Socket的联系只要传递引用就可以了.而要执行线程就必须重写run方法,而run方法所做的事情就是刚才单线程版本main所做的事情,因此我们的 程序变成了这样:
import java.net.*;
import java.io.*;
public class MultiUser extends Thread{
private Socket client;
public MultiUser(Socket c){
this.client=c;
}
public void run(){
try{
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
//Mutil User but can’t parallel
while(true){
String str=in.readLine();
System.out.println(str);
out.println(“has receive….”);
out.flush();
if(str.equals(“end”))
break;
}
client.close();
}catch(IOException ex){
}finally{
}
}
public static void main(String[] args)throws IOException{
ServerSocket server=new ServerSocket(5678);
while(true){
//transfer location change Single User or Multi User
MultiUser mu=new MultiUser(server.accept());
mu.start();
}
}
}
我的类直接从 Thread类继承了下来.并且通过构造函数传递引用和客户Socket建立了联系,这样每个线程就有了。一个通讯管道.同样我们可以填写run方法,把之前的操作交给线程来完成,这样多客户并行的Socket就建立起来了。

Java中的Overload Overwrite Override【转载】

Java中的Overload Overwrite Override【转载】

一直比较模糊下面几个概念,今天在网上看到,摘录如下:

overload (重载)关键 字: 无

1.使用的地方:同一类里。(其实是同一类里同一名称的方法不同版本的一种叫法)

  1. 要重载的方法和被重载的方法要求:参数列表不同或返回类型不同或二者都不同

overwrite (重写)关键字:new

用来是从父类继承的与是由了new关键字的方法的方法名一样的所以方法无效,就像父类里不存在这些方法一样。只要去方法名一样别的没要求。

override (覆写)关键字: override

1.override的方法必须父类的(直接父类或间接父类(就是向上n层的父类))虚方法或抽象方法其中抽象方法是必须覆写的。
2.要求3处相同
相同的方法名称称;
相同的参数列表;
相同的返回类型。
 
而百度知道一位仁兄写到:\

1
2
3
overload  完全新的方法,参数和原方法不同。
override 覆盖继承到的那个方法,那个方法仍然没有放弃。
overwrite 重写继承到的那个方法的代码,原方法被放弃。

Linux虚拟机安装VMware Tool【转载】

Linux虚拟机安装VMware Tool【转载】

转自:http://robert-liu.javaeye.com/blog/534051\
在虚拟机上安装完系统,可能会遇到一些使用不方便的问题,比如 鼠标切入切出,刚安装的系统分辨率低等等。
这个时候,我们可以安装VMware Tool来解决这些问题。

  • 启动系统后,鼠标切出,点击“VM—>Settings”,
  • 在 弹出的对话框里选择“CD-Rom”,在右边的框中选择“Use ISO image”,并设置其值,在VMware的安装路径下,如D:\Program Files\VMware\VMware Workstation\linux.iso。(根据你安装的虚拟系统,选择不同的image,这些是VMWare自带的。)
  • 然后关闭,再单击“VM—>Install VMware Tools”。


这时,虚拟机系统中会弹文件选择对话框,就是我们导入的VMware Tools。
接下来在系统中操作。
以root身份执行:
cd /media/cdrom
cp VMwareTools-5.5.1-19175.tar.gz /tmp
cd /tmp
tar zxpf VMwareTools-5.5.1-19175.tar.gz
cd vmware-tools-distrib
./vmware-install.pl
接下来一路回车就可以了。
安装成功后,重启系统,之前遇到的问题,就能解决了。

Ubuntu10.10(linux) 安装jdk1.6及环境变量的设置【转载】

Ubuntu10.10(linux) 安装jdk1.6及环境变量的设置【转载】

转载地址:http://javaangle.blog.163.com/blog/static/1079330652010111374551387/\
1.测试环境
ubuntu10.10/jdk1.6u21
2.安装过程
2.1下载jdk安装文件,这里下载bin格式
2.2复制安装文件至/home/java下
2.3使用”chmod 777″或”chomd +x”向文件添加可执行权限
sudo chomd +x jdk-6u21-linux-i586.bin
2.4运行该文件
sudo ./jdk-6u21-linux-i586.bin
运行后,程序会自动解压缩,并生成相应目录。可以看到如下内容:
For more information on what data Registration collects and
how it is managed and used, see:
http://java.sun.com.sixxs.org/javase/registration/JDKRegistrationPrivacy.html\
Press Enter to continue…..
Done.
到此,jdk安装已经完成,下面进行环境变量的添加:
3.环境变量的添加:
3.1打开/etc/profile
3.2. 在“umask 022”前添加如下内容:
export JAVA_HOME=/home/yx/Java/jdk1.6.0_21
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
3.3保存文件并关闭当前窗口
3.4使用source /etc/profile使刚才配置的信息生效
3.5在终端输入java -version进行测试,将看到如下内容:
java version “1.6.0_21″
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) Server VM (build 17.0-b16, mixed mode
到此,ubuntu10.10上jdk的安装全部完成。

Ubuntu下txt文件中文显示乱码的方法【转载】

Ubuntu下txt文件中文显示乱码的方法【转载】

转载地址:http://apps.hi.baidu.com/share/detail/10311333\
刚装ubuntu后,打开windows下的TXT文件就会发现无法显示中文,出现大量乱码。
这时候需要设置一下。
在终端打:
gconf-editor //调出gconf-edit
然后依次点开:
apps->gedit-2->preferences->encodings
双击encodings中的auto-detected
在弹开的对话框中加入
GB18030,GBK,GB2312
再将GB18030,GB2312移到最上
接着确定退出就OK了
看看效果图
解决前
解决后
来自: http://hi.baidu.com/little%D5%C1/blog/item/41fec93dc789d2e055e723f2.html

WordPress中实现首行缩进

WordPress中实现首行缩进

不得不说,WordPress这么鼎鼎大名的软件,居然不能在写文章的时候,轻轻松松的实现首行缩进,感觉有点无语……搜了一下,虽然有很多种实现方式,比如“修改WordPress的quicktags.js 文件”、“修改主题style.css 文件”(参见http://neoear.com/2009/10/wordpress-indent/),感觉实现效果最好的还是用全角空格,很简单,将输入法切换到全角状态,比如说用搜狗的用户只需要按快捷键“Shift + 空格”就可以,然后按两个空格就能实现缩进。
但比较无语的是,好像这一功能在Firefox下只能在“HTML”编辑状态才能用,“可视化”状态下我试验了几次,都不行,似乎Chrome下也会出现问题(参见),所以,Firefox用户在撰写博文之前,还要先切换到“HTML”状态下。
就为了加个首行缩进,真够费事的……O__O”…

WordPress 头像修改【转载】

WordPress 头像修改【转载】

转自:http://newfaction.net/2010/11/20/modify-wordpress-avatar.html\
Gravatar的概念首先是在国外的独立WordPress博客中兴起的,当你到任何一个支持Gravatar的网站留言时,这个网站都就会根据你所提供的Email地址为你显示出匹配的头像。 当然,这个头像,是需要你事先到Gravatar的网站注册并上传的,否则,在这个网站上,就只会显示成一个默认的头像。像Venus blog 现在均已支持Gravatar服务了,你可以通过你的个性头像打造起你的个人品牌了!并且这个Gravatar没有什么约束,想换头像换马甲?很简单,改 改留言的名字和email地址就可以了。另外注册与使用Gravatar均是完全免费的。
下面几个步骤可以告诉大家如何在Venus blog或者别人的Blog上定制自己的个性头像:

  1. 注册:进入Gravatar网站(网址http://gravatar.com/),点击左上角菜单里的Sign Up。\
  2. 验证:进入你的邮箱,从Gravatar发出的信件中拷贝那段链接地址,在浏览器输入。\
  3. 设置昵称、密码。\
  4. 选择上传图片:一般都是从电脑中上传(My computer’s hard drive)。\
  5. 剪裁大小\
  6. 评级:你的头像要被分级的,因为可能会有朋友喜欢用比较曝露的头像,会影响小朋友身心健康的说。如果你的图片不是特别那个的话,一般不用选择Sex或暴力 之类的,直接选择G(通用型),这样基本任何网站都能显示这个等级的图片。Venus blog 比较邪恶,暂时允许显示R级以下的头像……Gravatar头像分级\
  7. 等待审核:可能需要站方短暂审核一下,一般选择了G,而你的图片没什么特别的,很快就通过。一般遇上慢的情况也就10分钟左右。

完成了以上步骤,今后在Venus blog或其他支持Gravatar的网站留言都会显示你帅帅的头像了。暂时来说,大部分支持Gravatar的网站均是使用WordPress程序的博客,但其实任何其他网站程序,如果加入了Gravatar的代码,也是可以支持Gravatar的。估计这个应用在日后会渐渐普及起来吧,起码用户不需要每到一个网站去就搞一下头像……

下面还有阿瓦同学写的FAQ,可能对大家有帮助:

  1. 问:注册和找回密码在哪进行?
    Gravatar注册 | Gravatar找回密码\
  2. 问:注册Gravatar之后,只要是WordPress博客就能看到自己的头像了么?
    答:不一定,这取决于博客主题是否支持了Gravatar的API,幸运的是,目前大多数WordPress博客所使用的主题是支持Gravatar的。\
  3. 问:只能在WordPress博客使用Gravatar么?
    答:不是。这主要取决于网站管理者:只要网站能获取你的EMail信息,同时又在展现层使用Gravatar的API,就可以使用。国外一些小的Web2.0公司的产品都是支持Gravatar的。\
  4. 问:用EMail去匹配,又是通过展现层(HTML代码),那会不会泄露我的EMail呢?
    答:不会,因为Gravatar使用的是MD5加密之后的EMail字符串,您完全不必担心您的EMail地址泄露。\
  5. 问:为什么我注册之后看不到图像?
    答:因为Gravatar有一个比较长的缓冲周期;注册完之后,并不会立即显示相应图像\
  6. 问:我如果现在注册,之前留言中的头像会显示么?
    答:会,只要提交评论的时候,你使用了同样的EMail地址即会显示\
  7. 问:Venus blog和gravatar.com有什么联系,你为什么要帮它做广告?你是不是从中获取了什么利益?
    答:gravatar.com是Automattic旗下的产品;Venus blog使用了Automattic旗下的免费、开源博客系统 WordPress, 我和gravatar.com的联系仅限于此。我这篇日志的主要初衷是为了让更多的朋友知道留言时的头像为什么有些人有,有些人无;此外,宣传 Gravatar是因为我认为它能让你获益,让我的Blog互动性更好,如果你只是喜欢阅读他人的文章而不常参与讨论,大可以忽略 Gravatar这个东西。\
  8. 问:如果想注册多个头像,怎么办?
    答:可以用GMail的一个“加号”小技巧来注册。其他邮箱暂时无法满足这种需求。这也是邮箱方面GMail的绝对竞争优势之一。\
  9. 问:为什么QQ邮箱无法注册?
    答:我没有考证,我也没有QQ邮箱;你问腾讯去吧,为什么它收不到注册信。如果有结果,也欢迎来这里留言通告\
  10. 问:如果有人冒充我的邮箱呢?
    答:没办法,如果被人冒充,就会显示这个邮箱匹配的头像,这的确是一个问题。因此,保护好自己的邮箱是非常重要的,也可以结合“8”中提到的GMail小 技巧,比如你可使用somemail+1980@gmail.com来作为你的注册邮箱。一般人是无法猜测到你这个“+1980”的私有后缀的,而这个邮 箱又能在GMail所正常使用。

XAMPP中apache无法启动问题的解决【转载】

XAMPP中apache无法启动问题的解决【转载】

XAMPP中apache无法启动问题的解决
转载地址:http://www.yange.org/?p=141\
xampp启动时默认需要80和用于https服务的443端口。一般不能启动都是因为这两个端口被占用。
检查方法就是用 netstat -ano 查看80和443端口使用情况,按占用该端口的PID到任务管理器中查找对应pid的进程名称并采取相应措施即可解决。
80端口被占用的情况好解决,禁用占用80端口的程序,或者修改xampp\apache\conf\httpd.conf 的配置,改用其他端口。
如果安装了vmware,特别是新版的vmware 8,很有可能导致443端口被占用,我的xampp启动不了就是因为vmware 8 的vmware-hostd.exe进程占用了443端口。可以到vmware的设置中禁用Shared VMs功能,或者在windows的服务中禁用VMeare Workstation Serveice服务。或者修改 xampp\apache\conf\extra\httpd-ssl.conf配置443端口为其他数字或者禁用该服务。

ubuntu 10.10如何开机直接进入命令行界面【转载】

ubuntu 10.10如何开机直接进入命令行界面【转载】

转载地址:
http://www.ylmf.net/ubuntu/tips/2010122818544.html\
注:此种方法我亲自测试,可行
Ubuntu 10.10启动进入命令行模式
1: 运行 sudo gedit /etc/default/grub
2: 找到 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
3: 改为 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash text”
4: 运行 sudo update-grub
重启 over
根本不需要任何对GDM的操作
另外 中文locale下在命令行界面显示中文可以非常简单的安装zhcon即可 还自带命令行下的中文输入法
sudo aptitude install zhcon
zhcon –utf8
主意 一定要以 –utf8参数启动,zhcon默认是gb2312编码
如果控制台下没有输入中文的需要 ,那么可以使用jfbterm ,显示速度更快,也漂亮一点
sudo aptitude install jfbterm
jfbterm -q -c other,UTF-8,iconv,UTF-8
由于参数较长 可以写入文件并加上执行权限来运行
另外 ,为了开启framebuffer ,以提升zhcon或者jfbterm的性能,还需要修改 /etc/default/grub 文件, 将GRUB_GFXMODE前面的注释(#号)去掉,后面的根据你的机器修改为 800×600或者1024×768,注意不要修改为宽屏分辨率,除非你用vbeinfo这个命令测试出显卡支持宽屏分辨率下的framebuffer
例如
GRUB_GFXMODE=800x600x16
注:下面给出网上搜到的其他方法,仅供参考,我没有试验
转载地址:
http://blog.csdn.net/man8848/article/details/4127302\
Linux默认启动后进入XWindow,但可以修改参数直接进入命令行界面。到底是进入XWindow还是进入命令行界面,是在系统初始化进行的。
对于大部分linux系统,初始化使用init进程, /etc/inittab 为其配置文件。例如\

The default runlevel\

id:2:initdefault\

Boot-time system configuration/initialization script\

si::sysinit:/etc/init.d/rcS\

Runlevels\

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
z6:6:respawn:/sbin/sulogin\

How to react to ctrl-alt-del\

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
这些内容的通用格式为 id:runlevels:action:process。id 是惟一标识该项的字符序列。runlevels 定义了操作所使用的运行级别。action 指定了要执行的特定操作。process 定义了要执行的进程。\

对各个运行级的详细解释:\

0 为停机,机器关闭。
1 为单用户模式,就像Win9x下的安全模式类似。
2 为多用户模式,但是没有NFS支持。
3 为完整的多用户模式,是标准的运行级。
4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 就是X11,进到X Window系统了。
6 为重启,运行init 6机器就会重启。
XWindow是init5,字符是init3。将id设置为runlevel设置为3,就可以直接在系统初始化的时候直接进入文本界面。
但 Ubuntu并没有采用init的方法,并没有 /etc/inittab这个文件。init使用的是串行的方式,引导很耗时。RedHat9启动时串行执行大量的脚本以启动各种需要的服务(启动时可以 看到)。Ubuntu采用了upstart,是一个基于事件的 init 的替代程序,用于 Ubuntu 发行版。
Ubuntu中没有 /etc/inittab这个文件,但用户可以自己添加。当系统中有 /etc/inittab 时Ubuntu会按照配置来启动。
所以要想直接进命令行,第一种方法是用户添加 /etc/inittab,不过Debian或是Ubuntu中默认run level是2,且2~5都是指X环境。(但命令行是几?不确定,尚未测试)
另外一种方法,可以考虑在对应的runlevel级别停止gdm服务:
$ sudo mv /etc/rc2.d/S30gdm /etc/rc2.d/K30gdm (有可能是S13gdm,不一定)
还可以把gdm删掉。先备份/etc/init.d/gdm到其它位置:
$ sudo /etc/init.d/gdm /usr/gdm
然后删除/etc/init.d/gdm,删除后只是不启动XWindow,其它服务不变。需要直接进入XWindow到话,再复制回来。
其实如果仅仅是为了在命令行下的话,在xwindows界面下按Ctrl + Alt + F2 进入字符界面,按Ctrl + Alt + F7 回到图形界面。
还有一种方法:
$sudo apt-get rcconf
$sudo rcconf
在启动中将gdm去掉。
””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
如果想Ubuntu在每次启动到commandprompt,可以输入以下指令:
$echo“false”|sudotee/etc/X11/default-display-manager
当下次开机时,就会以指令模式启动,如果想变回启动xwindow,可以输入:
 
$echo“/usr/sbin/gdm”|sudotee/etc/X11/default-display-manager
在文本界面启动到图形命令是startx。

gconf-editor简介【转载】

gconf-editor简介【转载】

来自:
http://www.cnblogs.com/rivers/archive/2010/10/19/1855357.html\
gconf-editor是一款类似于注册表的软件,但是远远比改注册表简单,更改里面的配置实际上是修改了硬盘上的文本文档。主要是为了方便对桌面环境及一些软件做一些较多修改──假如一个一个改文本,就太麻烦了。
下面简单介绍几则gconf-editor的使用技巧(比如去掉桌面上的挂载盘符):
在终端下打gconf-editor打开“配置编辑器”(中文名),然后开始吧!
1、去掉桌面上的已挂载盘符和加上“电脑”等图标
定 位到“/apps/nautilus/desktop”,勾上 “Computer_icon_visible” “Home_icon_visible”“Network_icon_visible”,这样桌面上就有“电脑”“主目录”“网络服务器”三个图标了,再 把“Volumes_visible”的勾去掉,这样桌面上的已挂载的图标就会消失,以后需要再进“电脑”里找就OK了!
2、去掉“Bug报告”
有时候在Gnome下难免会碰到应用程式崩溃,这时Bug报告就会出来。假如您觉得比较讨厌,就能够通过gconf-editor去掉他。定位到“/apps/bug-buddy”,把右侧“run_on_crash”勾掉,就再也不会跑出来烦人了。
3、让截图有阴影效果
这 招能让您用Alt+PrintScreen键截图后,让图片有各种效果。定位到 “/apps/gnome-screenshot”,在右侧,boder_effect的值改一下,默认是none,改成“shadow”就是有阴影效果 了,black-line的话,截图周围就有黑线了。
以上只是抛砖引玉讲三点,gconf-editor这个东西很不错,谁都会改,因为每个键值下都有注释呢。