正则表达式主要应用于文本的处理,如检索,替换,检查错误,文字拆分...实在是一言难尽,如果要全部写出来,一本书都不差不多。还好oreilly已经为我们出了一本了。
讲具体内容以前先给个完整的例子,这样能有个感性的认识。
import java.util.regex.*;
public class Regex{
public
static void main(String[] args){
String text = "my email address is "
nicky.jcoder@gmail.com";
Pattern pattern = Pattern.compile("
\\w+@\\w+.\\w+");
Matcher matcher = pattern.matcher(text);
if(matcher.find()){
System.out.println(matcher.group());
}
}
}
把这段程序用jdk或jcreator或水腻的便了。反正运行起来就是了
输出结果:xhinker@163.com
当你看完下面的东西回头再看看这段程序就会发现,这不过是小菜一碟
字符和字符类
表格 A:
字符匹配
|
操作
|
解释
|
例子
|
结果
|
.
|
单个字符匹配
|
.ord
|
匹配 “ford”, “lord”,
“2ord”,
|
[ ]
|
多个字符列表
|
[cng]
|
只会匹配 “cord”,
“nord”, 和 “gord”
|
[^ ]
|
不出现字符列表
|
[^cn]
|
匹配 “lord”, “2ord”,
等. 但不会匹配 “cord” or “nord”
|
|
|
[a-zA-Z]
|
匹配 “aord”, “bord”,
“Aord”, “Bord”等
|
|
|
[^0-9]
|
匹配 “Aord”, “aord”, 等.
但不会匹配“2ord”, 等.
|
表格 B:
重复操作符
|
操作
|
解释
|
例子
|
结果
|
?
|
匹配0次或1次
|
“?erd”
|
匹配 “berd”,
“herd”“erd”等
|
*
|
匹配0次以上
|
“n*rd”
|
匹配 “nerd”, “nrd”,
“neard”, 等.
|
+
|
匹配1次以上
|
“[n]+erd”
|
匹配 “nerd”, “nnerd”,
等., 但不匹配 “erd”
|
{n}
|
匹配n次
|
“[a-z]{2}erd”
|
匹配“cherd”, “blerd”,
等. 但不匹配 “nerd”, “erd”, “buzzerd”,
等.
|
{n,}
|
匹配n次以上
|
“.{2,}erd”
|
匹配 “cherd” and “buzzerd”,
but not “nerd”
|
{n,N}
|
匹配n-N次
|
“n[e]{1,2}rd”
|
匹配 “nerd” and
“neerd”等
|
常用符号:
\d:[0-9]
\D:[^0-9]
\w:[a-zA-Z0-9]
\W:[^a-zA-Z0-9]
{?i):大小写无关
\b和\B分别表示词边界和非词边界
当然上面这些只不过是最常用的,写出几个正则表达式是没有问题了。接下来说说java。
在java里\有其自身的意义,所以在用\s,\d的时候要加上一个\也就是\\s
、
\\d \\(等
java自1.4后开始支持正则表达式,东西都放在java.util.regex包里,用Pattern生成一个模式对象,然后用matcher进行匹
配。如果要输出匹配结果的话,一定要记得写上matcher.find();否则会出错。当然也可以用替换,这就要看你的喜好拉。想看更多的例子就去
jdk帮助文档。
posted @
2006-12-04 13:16 wqwqwqwqwq 阅读(421) |
评论 (0) |
编辑 收藏
如何在java swing里使用JTree,就像下面这样的树
手工创建:
首先,你需要创建一个JScrollPane,然后创建一个JTree,再然后创建节点TreeNode
JScrollPane是盛放JTree的容器,JTree是一个结构相当于一个房子的钢筋框架,真正的内容是节点node。学过数据结构里的树的话可能会好理解一点。写代码的时候,三个过程的创建顺序不一定,也可以倒着过来写。
比如,创建一个简单的初始化 树的方法
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JTree;
import javax.swing.tree.*;
public class NewTree {
public
NewTree() {
JFrame jframe=new JFrame();//创建窗体
Container c=jframe.getContentPane();//创建容器
JScrollPane scrollPane=new
JScrollPane();//创建一个用于树的容器
DefaultMutableTreeNode root=new
DefaultMutableTreeNode("root");//创建树根节点
DefaultMutableTreeNode file=new
DefaultMutableTreeNode("file1");//创建一个文件节点
root.add(file);//将文件节点添加到根节点下
JTree tree=new JTree(root);//以根节点为参数创建一个树对象
scrollPane.setViewportView(tree);//将树添加到scrollPane里面,并显示
c.add(scrollPane);//将scrollPane添加到窗体里
jframe.pack();
jframe.setVisible(true);
jframe.addWindowListener(new
WindowAdapter(){//这段代码用于默认关闭
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public
static void main(String[] args){
new NewTree();
}
}
结果是这样的:注意关键的是斜体的代码,其他的都是swing的东西
那么如何在netbeans里,创建和使用树呢?好多人看到的都是下面这样的:
这是为什么呢?我找过代码结果没找到,后来发现这都是假的,你还是可以通过该改变代码来创建和使用你的树:改什么?改TreeModel.
到源代码界面下创建一个初始化树的方法:
public void treeInitialize(){
JScrollPane
scrollPane=new JScrollPane();
DefaultMutableTreeNode
root=new DefaultMutableTreeNode("root");
DefaultMutableTreeNode
file=new DefaultMutableTreeNode("file1");
root.add(file);
JTree
tree=new JTree(root);
TreeModel
treeModel = new DefaultTreeModel(root);
tree.setModel(treeModel);
}
注意黑体代码,这样在窗体的构造方法中调用treeInitialize()方法,你的树就被改变了,tree是你用netbeans生成树对象的引用或者名字,一般会是jTree1。
接下来就是对树的操作了,限于篇幅不能再讲了
posted @
2006-12-04 13:11 wqwqwqwqwq 阅读(3857) |
评论 (2) |
编辑 收藏
今天在sun的网站上转了一圈,等了好几天的Visual Web
Pack终于出来了.
先介绍一下
Creates a new Visual Web Pack project
containing an empty web application. This project enables you to
use Visual Web Pack features like the Visual Designer to
drag and drop JSF components, visual and dialog box support for
binding components to data providers, and generation of Java
code and Web XML files. The project uses the IDE-generated build
script to build, run, and debug your project.
创建一个可视化页面工程包
包含一个空白页面应用程序.这个工程能让你使用可视化开发包的各种属性,诸如用可视化设计工具拖放JSF(java
server
face)组件,可视化的对话框支持将组件数据源(或者数据提供者)绑定在一起,并且生成java代码和xml页面文件。这一工程由集成开发环境(IDE)生成的构建脚本来构造,执行和调试你的项目。
(翻译的不好请见谅)
还支持ajax,呵~~呵~~~。
最终装好的效果图:
全面支持拖放,呵呵,上次装了一个java studio
creator结果运行死慢死慢的,这一次把这一功能转移到了netbeans挺好用,速度也不错,我这台笔记本都能挺过来,台式机估计没什么问题。
安装时要注意的地方:
1.netbeans必须为5.5正式版本,beta版本的检测不到。
点击进入netbeans首页
2.下载JDK 5_60或者以后的版本我用的是JDK
5_09版本,安装的时候最好不要把原来的卸载,有时候老程序不认新的JDK。
点击进入JDK下载页面
点击
这里进入
Visual Web Pack
的下载页面。
posted @
2006-12-04 13:07 wqwqwqwqwq 阅读(2796) |
评论 (2) |
编辑 收藏
October 20, 2006 - Anyone who believes college students today
are lacking in initiative, creativity, or work ethic should take a
close look at the recent accomplishments of a team of students at the
Ecole de Technologie Superieure (ETS) in Montreal, Quebec. Over the
past three years, this team of 12 has been heads-down working on the
mechanical design, electrical system, and Java™ control and navigation
software for an AUV—a submarine—and preparing it for the International
Autonomous Underwater Competition sponsored by the Association for Unmanned Vehicles Systems International (AUVSI) and the Office of Naval Research (ONR) in San Diego, California.
|
SONIA Team
Click here for more images |
For no college credits, no pay, and no guarantee of success, the ETS
team designed and built an AUV that could meet the complex and
demanding mission requirements of the competition. Detailed in an
18-page document, these requirements included the ability to
autonomously pass through a gate, detect a flashing light, find and
connect with a docking station, locate a pipe and drop material into a
bin—all underwater and with no communication with the team.
The submarine is called SONIA, which stands for Système d’Opérations Nautiques Intelligent et Autonome,
and is just over one meter long, with a dry weight of 20 kg and a
unique box-shaped design. It is equipped with sensors and two color
video cameras. Navigation data input is provided by a compass and two
gyroscopes as well as active and passive sonar arrays.
SONIA outperformed all but two of the 21 entries in the student
competition, securing a place for ETS on the podium for a fourth year
in a row. With an overall budget of just $15,000 U.S. (provided by ETS
and a variety of corporate sponsors), the ETS team scored higher than
teams with six-figure budgets. The competition was won by the
University of Florida, but the ETS team came out ahead of renowned
engineering schools such as MIT, Georgia Tech, and Virginia Tech.
Innovative Design, Expert Software Engineering
Two of the characteristics that set SONIA apart from competitors
were its innovative box-shaped design and the sophistication of its
core software systems.
|
SONIA underwater
Click here for more images |
“The traditional tube shape requires a lot of extra design work because
electronics boards are square,” said David Mercier, technical leader of
the ETS team. “The only disadvantage of the box shape is how it moves
through the water, and we overcame that by making the hull out of
machined aluminum and hand-polishing it for 25 hours to make it glide
through the water more easily.”
The ETS team’s expertise with Java software proved a decisive
advantage. Martin Morissette, software team leader of the SONIA team,
is currently entering his third year in software engineering, and
recently completed a six-month internship at Sun Labs, where he worked
on the “Squawk VM,”
a small J2ME™ virtual machine (VM) written almost entirely in Java. The
Squawk VM provides the ability to run wireless transducer applications
directly on the CPU without any underlying OS, saving overhead and
improving performance.
“I learned a great deal during my time with Sun Labs that was
extremely useful in the development of the navigation software for
SONIA,” said Morissette. “The fact is, Java is an excellent programming
language for robotics. All schools teach Java, so everyone on the
software team knows how to use it. It’s object-oriented; it’s portable
so it runs on Macs, PCs, Linux, whatever; it’s very efficient so we
don’t have to worry about memory management; and there are lots of APIs
available. And if you know how to write your applications properly, it
can be very fast.”
The ETS team used Java for mission control and SONIA’s control
systems, Java Management Extensions (JMX) for management, and a Java
3-D Simulator to simulate a broad range of mission scenarios. The team
is now investigating the possibilities of Real-time Java, introduced at this year’s JavaOne Conference, for AUV and other robotics applications.
Consensus Building and Peer Review
According to Mr. Mercier, teamwork was every bit as important as
technology in the ETS team’s success. “I can’t stress strongly enough
that our ability to work together was the key to our success in the
competition,” he said. “This is not about 12 individuals working on
separate tasks by themselves. Every step of the way, we worked as a
team and built consensus, so in the end everyone learned more. And
that’s what this is really all about.”
For example, each software change was subject to peer review.
All team members would receive an e-mail containing the previous
version of the software, the new version incorporating a proposed
change, and the rationale behind the change. Far from slowing the
process down, the peer review concept got more team members more
actively engaged, and ultimately resulted in far higher quality,
according to Mr. Mercier. These peer reviews also ease the integration
of new team members. Being a volunteer based project, volunteers come
and go on a regular basis.
At the same time, the team shared tips and tricks with peers at
other educational institutions. “This is more of a friendly rivalry
than a dog-eat-dog competition,” said Tennessee Carmel-Veilleux,
electrical team leader of the SONIA team. “We like to exchange
information with some of the other teams, keep in touch with them. Who
knows—we may all be working together some day.”
In recognition of the team’s willingness to work with other
teams, and for achievements at the Unmanned Underwater Vehicle
Competition, Felix Pageau, team captain, won the Andy Estabrook Award
for "initiative and vision in the unmanned underwater systems.” Given
for the first time to a student, the award was presented by the
Lindbergh Chapter, San Diego, CA, of the AUVSI. Andy Estabrook was a
pioneer in unmanned robotics and this award was created to honor his
accomplishments in the advance of unmanned systems technology.
What’s next for the ETS team? The team itself is growing
rapidly, thanks in part to the success at this year’s competition. The
team leaders now find themselves in management roles as the team’s
ranks have swollen to 34. “We’re going to compete again next year, and
we’re going to focus on making our software more stable, more reliable,
and faster,” said Mr. Morissette. In the mean time, the team leaders
will be presenting their work at a variety of conferences
worldwide—from Florida and Washington D.C. to Cologne, Germany.
And when will they get around to more traditional college
activities such as frat parties and beer runs? “Probably never,” said
Mr. Mercier. “We’re geeks. We’re doing what we love.”
For more information:
posted @
2006-12-01 20:57 wqwqwqwqwq 阅读(537) |
评论 (0) |
编辑 收藏
Sun Microsystems公司宣布,其免费提供的适用于
Solaris和Linux
操作系统的开发工具――Sun Studio
11软件,再次就标准性能评测公司(SPEC)提出的新的基准性能标准创立了破记录的性能记录。此外,Sun还发布了Sun Studio
Express项目,采用C、C++和Fortan等编程语言的开发者可以通过该项目预览Sun
Studio未来版本准备提供的新特性。在过去的6个月内,对Sun Studio 11软件的注册下载次数已超过50,000次,Sun
Studio Express项目的创立响应了业界对Sun Studio 11软件的极大兴趣和迅速采用的需求。
Sun在基于AMD Opteron和UltraSPARC®处理器的系统上,采用Sun Studio 11和Solaris
10软件,创立了四大基准性能测试中的三项性能测试(SPECint2006、SPECfp2006和SPECint_rate2006)的最高记录,确
立了Sun在标准性能方面的领导地位。采用Sun Studio 11软件所具有的先进性能,如自平行技术(Auto-Parallelism
Technology),基于AMD Opteron处理器的Sun Fire
X4200服务器,其性能超越了基于Intel处理器的竞争对手的系统,如HP ProLiant DL380 G4服务器和HP ProLiant
DL385服务器。Sun还公布了其旗舰产品Sun Fire
E25K服务器的优异性能,兑现了它曾对高端商务计算领域做出的承诺。据IDC公司2006年第二季度全球服务器市场季度报告得知,Sun的高端系统针对
Sun Studio软件做了优化,这帮助Sun成为了这一季度内取得市场份额增长的唯一的服务器厂商。
所创立的SPEC
CPU2006基准性能的测试记录是2006年8月24日发布的。这一记录是上个最高记录的4倍。该基准性能测试针对了各种各样的负载,得到了实际应用中
更好的适用性结果。这一新的基准性能测试在各种计算密集的负载上测试了计算机处理器、内存架构和编译器的性能,这些负载应用包括有,蛋白质排序、MPEG
-4编码、XML处理、流体动力学、结构性力学和语音识别等。
“Sun Studio软件继续显示了在帮助开发商最大化其应用程序性能的能力上的领导地位,”Sun公司开发工具高级总监Don
Kretsch说,“6个月内50,000次下载,使采用Sun Studio
11软件的企业开源开发者们获得了诸多好处:减少了开发时间,提高了便携性,还改善了他们所开发的应用程序的性能。”
Sun Studio
11软件为开发者带来的最大好处之一就是各个组件之间的集成性非常好,这些组件包括有:编译器优化组件、多线程警示调试器、性能分析工具和一个基于
NetBeans的集成开发环境(IDE)。这些工具组件还可以在其他的编译器上工作,这就使开发者们可以很容易地将Sun
Studio工具与他们现有的开发环境混和在一起使用。新发布的Sun Studio Express项目对正在研发中的Sun
Studio未来版本的主要特性将定期予以提供。包括针对Linux的编译器优化组件在内的最新的一些性能在最近于旧金山举行的2006
LinuxWorld上做了演示。此外,新的Data Race Detection
Tool(数据族探查工具)对现有的多线程库、多线程工具和编译器优化等特性是一个重要的补充,可使多线程应用的开发变得更加简化和容易。
开发者可从网站
http://developers.sun.com/sunstudio下载免费的、无限制的Sun Studio软件。
- 产品系统要求:
SPARC 平台
- 内存:至少为 512 MB 内存;建议使用 1 GB
- 磁盘空间:1.7 GB
- 安装光盘
x86/x64 平台
- 内存:至少为 512 MB 内存;建议使用 1 GB
- 磁盘空间 (Solaris OS):1.1 GB
- 磁盘空间 (Linux OS):0.6 GB
- 安装光盘
- 支持的操作系统::
Solaris OS
Solaris 8、9 和 10 操作系统整个 Solaris 软件组、整个 Solaris 软件组加 OEM 支持或者开发人员 Solaris 软件组
Linux OS
- Sun Java Desktop System,版本 3
- SUSE Linux Enterprise Server 9
- Red Hat Enterprise Linux 4
- 许可要求::
免许可费的运行时库 (.so) 分发
- 使用限制::
您应承诺软件不会被设计、许可或计划用于任何核设施的设计、修建、操作或维护。
- 支持的相关标准::
C:
- ISO/IEC 9899:1999,编程语言 - C ("C99")
- ISO/IEC 9899:1996,C
- FIPS 160 标准。
- K&R C
- OpenMP C API Version 2.5
C++:
- ISO/IEC 14992:2003 C++ 标准
- OpenMP C++ API 2.5 版
Fortran:
- ANSI X3.198-1992 Fortran 90
- ISO 1539:1991 Fortran
- ISO/IEC 1539-1:1997 Fortran 95
- OpenMP Fortran API 2.5 版
- 第三方兼容应用程序::
GNU Compiler Collection(Linux 平台)
- 升级计划::
源和目标级与以前版本的兼容性以及 GNU C/C++ 兼容性功能,简化升级和采用。
posted @
2006-11-17 23:22 wqwqwqwqwq 阅读(631) |
评论 (0) |
编辑 收藏
摘要: 今天翻译了一篇实录,先发到自己的blog上吧,呵呵
开放Java平台(Micro
Edition,微型版)源码:对话Sun公司移动&嵌入式平台高级主管香农.林奇
在2006年5月的JavaOne会议上,Sun微系统公司宣布即将开放Java技术的源码。目前,Sun已经计划开放大部分Java平台的源码,包括在2006年末之前开放Micro
Edition (Java ME)和Java平...
阅读全文
posted @
2006-11-15 19:46 wqwqwqwqwq 阅读(416) |
评论 (5) |
编辑 收藏
Sun发布Solaris ZFS-全球最先进的文档系统
Solaris 10 OS最新升级版包括Solaris ZFS 1.0文档系统
提供了端到端的数据完整性,重新定义缩放能力,大大降低数据管理成本
(2006年5月25日讯) Sun Microsystems公司发布了一个具有革命性的新的文档系统Solaris ZFS
1.0,它提供了多项突破性的功能,包括公共管理任务的自动化、保护数据免受非法行为的侵害,以及提供实际上无限的缩放能力。Solaris ZFS
1.0将作为我们这个星球上最先进的操作系统Solaris 10
OS的下一个商业版本的一个组成部分在今年6月份对外正式提供。此外,Solaris 10 OS的最新版本Solaris 10
6/06将先进的前摄性自愈技术和联网技术,与对PostgreSQL开源数据库的全面支持结合起来,进一步强化了Solaris 10
OS作为宿主高性能的关键数据库解决方案的首选平台的地位。
作为世界上最先进的文档系统,Solaris ZFS可以自动检测和修改细小的数据错误或遭遇意外侵害的数据,以提供信息的完整性。Solaris
ZFS还因为不需要卷宗管理器而大大简化了数据的管理,而卷宗管理器是今天数据管理事务中最耗时、最费钱的部分。例如,今天,一项典型的系统管理任务可能
需要40多分钟来完成,但是采用Solaris
ZFS,仅仅需要几秒钟的时间,且没有系统宕机的危险,从而大大降低了数据管理的成本费用。此外,Solaris
ZFS还是世界上第一个128位的文档系统,这使系统具有了实际上无限的数据容量。Solaris
ZFS提供的先进的缩放能力和管理能力,使它成为许许多多传统UNIX?文档系统的理想替代品。
Solaris是宿主高性能数据库的杰出平台。最近,Oracle指名Solaris 10
OS作为其开源64位开发和部署环境的理想平台。现在,Sun还将开源PostgreSQL数据库集成在Solaris 10
OS的最新版本内,对PostgreSQL数据库提供全面支持。Sun与PostgreSQL社团开展合作,让他们采用Solaris 10
OS提供的各种先进技术,如前摄性自愈技术、Solaris分区特性和Solaris动态跟踪能力(DTrace)等。
“面对不断增长的依顺性要求,今天的数据量每9~12个月就要翻番,但今天的文档系统还植根在上世纪70年代的技术之中,”Sun公司主管系统软件部的
副总裁Tom Goguen说,“Solaris
ZFS从设计之初就是要迎接今天数据管理的挑战,它的预期寿命是20~30年。这一128位的文档系统所能存储的自愈数据是今天已有文档系统的160亿
倍,同时还大大简化了卷宗的管理。Solaris ZFS将是今年内发布的最重要的创新技术之一。”
Solaris
10是我们这个星球上最先进的操作系统,它可在650多款SPARC和x64/x86平台上运行,获得来自独立软件厂商的2,200多种应用程序的支持。
其无与伦比的功能性和硬件平台的支持,加上它所提供的行业唯一的应用兼容性保证,加快了Solaris 10
OS在全球的应用步伐,目前Solaris 10 OS的注册许可数已超过450万。
具有革命性的新的文档系统技术
Solaris ZFS 1.0具有任何其他商用文档系统技术所无法匹敌的优异性能。客户可以从Solaris ZFS技术中享用到先进的数据完整性技术、使用和管理的简易性、难以置信的高性能,以及实际上无限的缩放能力。
-
端到端的数据完整性――
基于校验和与事务性写入复制(copy-on-write)机制的突破性的结合,Solaris
ZFS可提供满足CIO和系统管理员要求的数据准确性。Solaris
ZFS拥有先进的错误检测机制,能识别被损坏的数据,并将之在运行中修改过来。例如,镜像的一侧被意外地重写,ZFS可以对之检测、修补和恢复,且完全不
干扰服务的进行。
-
简化的管理――Solaris
ZFS提供了一种基于共享的架构模式,使所有的共享数据和功能纳入虚拟内存管理。Solaris
ZFS文档系统可以自动地增长或收缩,而无需占据额外存储空间的卷宗管理器。Solaris
ZFS还提供了在任何时间点上对文档系统进行瞬间快照的能力,这就大大节约了一般系统管理员手工恢复文档所花费的时间和资源。
-
性能的巨大提升――Solaris
ZFS的架构设计有助于提高速度。写入复制的设计可将随意写入转变为快速连续写入。其输入/输出(I/O)带宽在有数据存储时可自动加大。无论工作量如
何,多种字区尺寸会自动做出最佳配合。智能化的预取感式读取可加快运行速度。而且,它的高级的、可扩展的I/O子系统设计采用了记分板式的流水线操作和依
赖性时序安排,同样提供了极大的性能提升。
-
无限的数据容量――Solaris ZFS是世界上第一个128位文档系统,具有实际上无限的数据容量。
Solaris 10 OS是Solaris Enterprise System的组成部分。Solaris Enterprise
System还包括Sun Java Enterprise System (Java ES)、Sun N1 System
Manager软件和Sun Studio Software
Developer工具,这些软件都可免费提供用于开发和部署。正是具有这么多软件,使Solaris Enterprise
System成为今天可采用的唯一的综合性开放架构的软件平台。欲了解更多的相关信息或得到相关新闻稿件,请访问http:
//www.sun.com/aboutsun/media/presskits/networkcomputing06q2。
Sun公司简介
一个独具特色的理念――“网络就是计算机”,指引着Sun各项技术的发展,为全球各个重要的市场增添活力。Sun共享创新和创建社团的思想体系处于新
一代网络计算-参与时代-的最前沿。Sun的足迹遍及全球100多个国家和地区,其互联网的网址为http://www.sun.com。Sun公司的中
文网址为http://www.sun.com.cn。
ZFS是第一个128位的文件系统,同时ZFS又被Sun
Microsystems称作史上最后一个文件系统。因为这个文件系统含有多项创新技术,不仅成功地解决现有文件系统的问题和陋习,而且前瞻性地考量了未
来对存储空间的需求,单个文件系统可以达到256 quadrillion(264) Zettabytes(221)。
ZFS不仅符合POSIX文件系统的标准,而且提供了许多高级功能比如:Quota(配额),Reservation(预留),
Compression(压缩),
Snapshot(快照),Clone(克隆)等。如果你还在坚持使用现有32位或者64位的文件系统,如果你还在“痛并不快乐着”地用着各式各样的
Volume Manager,那就很值得看看这里列出的使用ZFS的十条理由。
1. 再也不需要fsck, scandisk
不管你是在用Linux,UNIX还是Windows,相信大家都有过类似的体会:当系统意外断电或者非法关机,系统重起后发现文件系统有
inconsistent的问题,这时 候就需要fsck或者scandisk
来修复,这段时间是非常耗时而且最后不一定能够修复成功。更糟糕的是,如果这是一台服务器需要做fsck的时候,只能offline(下线),而且现有应
用往往都是大硬盘,相应fsck修
复时间也很长,这对许多使用该服务器的用户来说几乎不能忍受的。而使用ZFS后大家可以彻底抛弃fsck这种工具,因为ZFS是一个基于COW(Copy
on
Write)机制的文件系统。COW是不会对硬盘上现有的文件进行重写,保证所有硬盘上的文件都是有效的。所以不会有这种inconsistent的概
念,自然就不需要这种工具了。
2. 管理简单
ZFS作为一个全新的文件系统,全面抛弃传统File System
+ Volume Manager + Storage的架构,所有的存储设备是通过ZFS Pool进行管理,只要把各种存储设备加 入同一个ZFS
Pool,大家就可以轻松的在这个ZFS Pool管理配置文件系统。大家再也不用牢记各种专业概念,各种命令newfs,
metinit及各种Volume Manager的用法。在ZFS中我们只需要两个命令,zpool(针 对ZFS
Pool管理)和zfs(针对ZFS文件系统的管理),就可以轻松管理128位的文件系统。举个例子,我们经常会遇到系统数据增长过
快,现有存储容量不够,需要添加硬盘,如果依照传统的Volume Manager管理方式,那我
们需要预先要考虑很多现有因素,还要预先根据应用计算出需要配置的各种参数。在ZFS情况下,我们的系统管理员可以彻底解放,再也不需要这种人为的复杂
考虑和计算,我们可以把这些交给ZFS,因为ZFS Pool会自动调节,动态适应需求。我们只需一个简单的命令为 这个ZFS
Pool加入新的硬盘就可以了:
zpool add zfs_pool mirror c4t0d0 c5t0d0
基于这个动态调节的ZFS Pool之上的所有的文件系统就可以立即使用到这个新的硬盘,并且会自动的选择最优化的参数。
而且ZFS同时也提供图形化的管理界面,下面是一个ZFS图形化管理的一个截屏:
[attachment=2119]
3. 没有任何容量限制
ZFS(Zettabyte File
System)文件系统就如其名字所预示,可以提供真正的海量存储,在现实中几乎不可能遇到容量问题。在现有的64位kernel(内
核)下,它可以容纳达到16 Exabytes(264)大小的单个文件,可以使用264个存储设备,可以创建264个文件系统。
4. 完全保证 数据 的正确和完整
由于ZFS所有的数据操作都是基 于Transaction(事务),一组相应的操作会被ZFS解
析为一个事务操作,事务的操作就代表着一组操作要么一起失败,要么一起成功。而且如前所说,ZFS对 所有的操作是基于COW(Copy on
Write), 从而保证设备上的数 据始终都是有效的,再也不会因为系统崩溃或者意外掉电导致数据文件的inconsistent。
还有一种潜在威胁 数据的可能是来自于硬件设备的问题,比如磁
盘,RAID卡的硬件问题或者驱动bug。现有文件系统通常遇到这个问题,往往只是简单的把错误数据直接交给上层应用,通常我们把这个问题称作
Silent Data Corruption。而在ZFS中,对所有数据不管是用户数据还是文件系统自身的metadata数
据都进行256位的Checksum(校 验),当ZFS在提交数据时会进行校验,彻底杜绝这种Silent Data Corruption情况。
5. 提供优异 性能和扩展性
和传统File System + Volume Manager + Storage架构不同,ZFS则是直接基于存储设备提供所有的功能,因此有自己独有的创新特性,性能自然非比寻常。
* Dynamic Striping vs. Static Striping
由于ZFS是基于COW和一个全局动态的ZFS Pool,任何一次写 操作,都是对一块新数据块(Block)的一次写操作。ZFS从ZFS
Pool中动态挑选出一个最优的设备,并且以一个transaction(事
务)线性写入,充分有效地利用了现有设备的带宽,我们把这个特性称为Dynamic Striping。而相对应的Static
Striping则是传统文件系统所使用的方式,Static Striping需要管理员预先对这组Stripe进行正确地计算人为
设置,而且如果加入新的设备则需要再次人为的计算和设置,更为严重的是如果人为计算错误,则会直接影响系统的性能。而在使用Dynamic
Striping这种特性之后,我们根本不需要人为介入,ZFS会自动调整,智能的为你 提供最佳的设备,最快的操作方式。
* 支持多种 大小的数据块(Multiple Block Size)
ZFS支持多种大小的数据块定义,从512字节到1M字节。和传统文件系统往往都是固定大小数据块不同,ZFS则是可以动态的根据不同 大小的文件进行计算,动态的选择最佳的数据块。
因为不同大小数据
块,直接影响到实际使用硬盘容量和读取速度。如果使用较小的数据块,存储文件所导致的碎片则较少,读写小文件更快一些,但是会导致需要创建更多的
metadata,读写大文件则会更费时。如果使用较大的数据块,使用的metadata较少,更利于读写大文件,但是会导致更多的碎片。ZFS根据实际
调查现有文件使 用的情况,分析出一个选择数据块大小的算法,动态的根据实际文件大小确定最佳的数据块。所以ZFS是
非常智能的,在不需要系统管理员介入,就可以得到一个自我调优的结果。当然ZFS也支持用户对单个文件或者整个文件系统
所使用的数据块大小的自定义设置。
* 智能预读取(Intelligent Prefetch)
多数的操作系
统都 有这种将数据预先读取的功能,而ZFS则是建立在文件系统上直接提供的一种更加智能的数据预读取功能。它不仅可以智能地识别出多种读取模式, 进
行提前读取数据,而且可以对每个读取数据流进行这种预读取智能识别,这个对许多流媒体提供者来说是件非常好的事情。
在扩展性上,和现有文件系统多是基于一个受限的静态模型不同,ZFS是采用ZFS Pool这个动态概念,它的metadata也是动态,并且读写操作都是可并行的,并且具有优先级概念,所以即使在大数据量,多设备的情况下仍可以保证性能的线性增长。
6. 自我修复功能
* ZFS Mirror 和 RAID-Z
传统的硬盘Mirror及RAID 4,RAID 5阵列方式都会遇到前面提到过的问题:Silent Data
Corruption。如果发生了某块硬盘物理问题导致数据错误,现有的Mirror,包括RAID 4,RAID
5阵列会默默地把这个错误数据提交给上层应用。如果这个错误发生在Metadata中,则会直接导致系统的Panic。
而且还有一种更为严重的情况是:在RAID 4和RAID
5阵列中,如果系统正在计算Parity数值,并再次写入新数据和新Parity值的时候发生断电,那么整个阵列的所有存储的数据都毫无意义了。
在ZFS中则提出了相对应的ZFS
Mirror和RAID-Z方式,它在负责读取数据的时候会自动和256位校验码进行校验,会主动发现这种Silent Data
Corruption,然后通过相应的Mirror硬
盘或者通过RAID-Z阵列中其他硬盘得到正确的数据返回给上层应用,并且同时自动修复原硬盘的Data Corruption 。
* Fault Manager
在Solaris 10中,包含 一个ZFS诊断引擎和Solaris的 Fault Manager(这也是Solaris 10的
另一个新特性)交互,可以实时地诊断分析并且报告ZFS Pool和存储设备的错误,用户可以通过Fault
Manager及时得到一个非常友善的消息。这个诊断引擎虽然不会采取主动的行为去修复或者解决
问题,但是会在消息中提示系统管理员可采取的动作。类似下面一个ZFS报错消息,其中REC-ACTION就是建议采取的动作:
SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major
EVENT-TIME: Fri Mar 10 11:09:06 MST 2006
PLATFORM: SUNW,Ultra-60, CSN: -, HOSTNAME: neo
SOURCE: zfs-diagnosis, REV: 1.0
EVENT-ID: b55ee13b-cd74-4dff-8aff-ad575c372ef8
DESC: A ZFS device failed. Refer to http://sun.com/msg/ZFS-8000-D3 for more information.
AUTO-RESPONSE: No automated response will occur.
IMPACT: Fault tolerance of the pool maybe compromised.
REC-ACTION: Run ’zpool status -x’ and replace the bad device.
7. 安全
在安全上,ZFS支持类似NT风格NFSv4版的ACL(读取控制列表)。而且前面所提到的256位验证码,用户可选择多种验证方式,包括SHA-256验证算法,从而在物理存储单元级别上保证数据的安全性。
8. 超强功能
ZFS作为“最后一个文件系统”,涵盖了基本的文件系统和Volume管理的功能,同时
一并提供许多企业级别的超强功能:Quota(配额),Reservation(预留), Compression(压 缩),
Snapshot(快照),Clone(克隆)。并且速度非常快。有了这个文件系统,大家再也不需要任何Volume Manager了。
9. 兼容性
ZFS是一个完全兼容POSIX规范的文件系统,所以处于上层的应用程序是完全不受影响。ZFS也提供一个Emulated
Volume模块,可以把任何一个ZFS文件系统作为普通的块设备使用。同时ZFS也可以使用基于Volume
Manager构建的Volume作为存储设备单 元。这样在不需要修改应用程序,不修改已有文件系统下,给了大家最大的自由度去获得ZFS提供的各
种特性。
10. 开源
ZFS是Sun Microsystems公 司作为OpenSolaris的一个开源项目运作并且完全免费使用,点击这里(http://www.opensolaris.org/os/community/zfs/source/) 可以直接浏览到ZFS的代码。 这就代表着我们不仅同时可以享受商业公司的高质量,也可以获得开源模式的优点。
虽然目前只有Solaris支持该文件系统,但是这种开源的模式必定会促进更多基于ZFS的应用。现在已经有国外开发者正在将ZFS移植到Linux和
Mac OS上来。如果想要体验一下ZFS,由于目前它和Solaris 10绑定在一起,所以需要下载最新版的Solaris 10 6/06 (http://www.sun.com/software/solaris/get.jsp)。
参考:
Solaris ZFS Administration Guide: http://docs.sun.com/app/docs/doc/819-5461?l=zh&q=ZFS
Solaris 10 Zone FAQ: http://www.sun.com/software/solaris/faqs/zfs.xml
Automatic Performance Tuning in the Zettabyte File System: http://tesla.hpl.hp.com/self-manage03/Finals/henson-self-tune.pdf
posted @
2006-10-30 10:19 wqwqwqwqwq 阅读(1491) |
评论 (0) |
编辑 收藏
昨天是我sun技术大使入职第一天,即兴奋又感觉自己充满了责任。下周要去北京和兄弟院校的大使,参加技术培训。
我一直很努力的学习着,虽然也曾彷徨,也曾摒弃过中国的教育,但是我知道我逃脱不掉,所以我还要好好学习,要保研,很想出国......大三了,让我认识了sun中国研究院,并加入了sun校园技术大使的行列,让我荣幸万分。所以我又不断地告诉自己,好好学习,好好学习技术,好好服务自己的母校、祖国.....真的
今天早上,我和几个同学,早早的起来,出去挂上了Sun技术讲座的条幅,去北京前,我会先作一个讲座,我真的很感谢我的同学......其实,正是很多小事,才会让我们真正感动。
posted @
2006-10-27 07:49 wqwqwqwqwq 阅读(435) |
评论 (0) |
编辑 收藏
vold存在于进程之中,我们可以通过ps
-ef命令进行查询,它的存在使得插上U盘后,系统可以自动识别设备。
如果无法自动识别,我们可以尝试重新启动vold,操作方法如下:pkill
-HUP vold 这个时候插上U盘,是否U盘灯亮了?
如果还不亮,请执行rmformat命令,这个东西类似Windows中的检查硬件改变操作,它可以自动查出刚刚插上的U盘(极个别品牌U盘例外,依照以往经验……爱国者的U盘最容易被识别)。
系统识别了U盘,接下来我们就要mount一下了,具体操作是:mount -F pcfs -o ro /dev/dsk/c2t0d0p0:c /mnt,不过你的U盘是不是c2t0d0p0这个设备,我这里可是说不好,你自己试验一下吧 用mount查一下就OK了。
1、直接插上u盘,然后ls -l /dev/usb,看是否发现usb设备。
不过今天用 ls -l |grep usb 自动就识别咯。(Netac朗科)
2、在/etc/dsk里查询到usb对应的设备名称(ls -l /dev/dsk)
3、直接mount -F pcfs /dev/dsk/c1t0d0s0 /mnt
然后就可以了。
进/mnt目录。ls就可以查看到u盘里的内容了。
# rmformat
姝e湪鏌ユ壘璁惧...
1. Logical Node: /dev/rdsk/c3t0d0s2
Physical Node: /pci@0,0/pci1028,182@1d,2/storage@1/disk@0,0
Connected Device: Netac OnlyDisk 1.21
Device Type: Removable
2. Logical Node: /dev/rdsk/c3t0d0p0
Physical Node: /pci@0,0/pci1028,182@1d,2/storage@1/disk@0,0
Connected Device: Netac OnlyDisk 1.21
Device Type: Removable
# mount -f pcfs /dev/dsk/c3t0d0s2:c /usb
mount: No such device or address
# mount -f pcfs /dev/rdsk/c3t0d0p0:c /usb
mount: Block device required
# mount -f pcfs /dev/rdsk/c3t0d0s2 /usb
mount: Block device required
# mount -f pcfs /dev/rdsk/c3t0d0s2:c /usb
mount: Block device required
# mount -f pcfs /dev/dsk/c3t0d0p0:c /usb
卸载 #umount /usb
#eject /dev/rdsk/c3t0d0p0
今天还发现,(朗科)u盘 在用户注销重新登陆时,可以自动挂载
posted @
2006-10-22 08:50 wqwqwqwqwq 阅读(3552) |
评论 (0) |
编辑 收藏
昨天在自己的笔记本(DellD610)上安装了Solaris10操作系统,分区情况如下,c0d0/c/d/e/f+(2.9G),c盘放的Xp系统,D盘还是原来windows下的软件。f盘装的则是Solaris操作系统。首先,在安装过程中,Solaris给我的印象很好,因为似乎显卡它已经识别了,所以显示的很清楚,java的风格我本人也是比较喜欢的。
其它的软件安装:
网站:sun软件包最主要的网站是http://www.sunfreeware.com,其次是各开源网站如http://mirror.vmmatrix.net ,还有其他一些(如apache 的网站 www.apache.org)。如果不知道某个软件的下载地址,可以在 www.google.com里搜索。安装包下载到本地磁盘,必须把这些包存放到运行
solaris10的机器上。Wget似乎是一个很受欢迎的下载工具,情况也是如此。不巧的是,solaris10本身不带wget这个工具,所以初始安
装的系统还不能使用这个便利。有的网友先把文件下载到windows,然后用ssh secure file
transfer把它传输到solaris
10的某个目录。
1、wget下载。例如下载apache到当前目录的命令为:wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/apache-2.2.0-sol10-x86-local.gz 。
下载完成后,用命令# ls -al查看当前目录是否有刚才现在的文件存在。
2、用ssh secure file transfer传送。这个比较简单,不再多说。
当然,我也认为使用挂载也是完全可以的。
Solaris10 安装软件包的方法主要有三种:solaris包、二进制源码、安装脚本。接下来分别介绍这几种安装方法。
1、solaris 10包。Solaris包的文件格式大致是*-local.gz
,如apache的包文件apache-2.2.0-sol10-x86-local.gz。在安装一个包之前,我们应当先查看系统中是否已经安装了该软
件包;通过运行包管理工具pkginfo来了解系统中已安装的包。运行 # pkginfo
可能有较长的输出,以至于需要多屏才能显示完整,为方便阅读,最好在后面加一管道(# pkginfo |
more)。如果所需的包没有安装到系统,执行下面两个命令来安装(此处以包wget为例):# gzip –d wget-1.10.2-sol10-x86-local.gz //把包解开,解开后原压缩包自动删除,当前目录下生成文件wget-1.10.2-sol10-x86-local。
# pkgadd –d wget-1.10.2-sol10-x86-local //执行后会有交互命令,请根据具体的环境做出选择.在回答了包管理管理器若干问题之后,一个软件包就安装到系统上,再运行包管理命令 # pkginfo –l | grep
<包名>查看详细的安装信息。从这个过程我们可以知道,安装solaris包确实是很容易的事情,但笔者认为,在安装过程中,它会把解开后的
文件复制到不同的目录(位置),究竟都复制了那些文件到那些目录,并不是一个容易弄清楚的。
2、二进制源码。二进制源码是通用的linux/unix软件包安装方法,也是管理员最爱的安装手段。相对于solaris包而言,二进制源码包的数量远
远大于前者(有很多GNU软件并不提供solaris
包),这也是选择二进制源码安装的原因,当然,用二进制源码安装,使得整个操作更具灵活性。在这里我们以web服务器apache的安装为例。
# gzip –d httpd-2.2.0.tar.gz
# tar xvf httpd-2.2.0.tar
# cd httpd-2.2.0
# ./configure –prefix=/usr/local/apache2 –enable-so //配置操作,具体的选项可以通过执行命令# ./configure –help查看。此处指定了安装apache的路径及模块的加载方式
# make //配置过程顺利完成后,才可以继续这个编译过程。
# make install //同样需要等到编译操作(make)完成再进行安装,这一步是把文件及目录复制到指定的安装目录。
这个例子是通用的linux/unix软件安装步骤,但不要认为所以的二进制源码都是这样的安装操作(请注意:这只是一般情况),一个好的习惯就是:在把
下载的源码包文件解压成目录后,打开里面的文件README或INSTALL文本文件,就可能看到安装软件包的方法,至于更多细节,可以登录该软件的发布
网站查询相关文档。在执行配置操作时,如果不指定安装路径的话,在安装结束以后,文件会分散到系统目录的各个角落(比如执行脚本会复制到
/usr/sbin,配置文件可能会在目录/etc中找到,等等),为了方便管理维护,强烈建议配置时指定安装目录。
3、安装脚本。大型的软件为了方便用户的安装,往往提供一个安装脚本,比如sybase、oracle等。这种安装方法本身很简单,只需执行这个安装脚本而
已,接着安装程序会跟用户交互,比如指定安装路径等。不过,有些软件在执行安装前,需要配置环境变量诸如此类的预处理,以满足软件安装的特殊需求。就拿数
据库服务器oracle 10g为例,在执行安装脚本前,就必须配置环境变量和更改内核参数以及添加用户等预处理操作。
软件包的卸载。Solaris包:执行命令 # pkgrm <package name>。二进制源码:直接删除安装目录。
脚本方式安装:卸载脚本或直接删除安装目录。
posted @
2006-10-20 08:09 wqwqwqwqwq 阅读(453) |
评论 (0) |
编辑 收藏