正則表達式主要應用于文本的處理,如檢索,替換,檢查錯誤,文字拆分...實在是一言難盡,如果要全部寫出來,一本書都不差不多。還好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 閱讀(428) |
評論 (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 閱讀(3873) |
評論 (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 閱讀(2821) |
評論 (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 閱讀(541) |
評論 (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 閱讀(635) |
評論 (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 閱讀(421) |
評論 (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 閱讀(1516) |
評論 (0) |
編輯 收藏
昨天是我sun技術大使入職第一天,即興奮又感覺自己充滿了責任。下周要去北京和兄弟院校的大使,參加技術培訓。
我一直很努力的學習著,雖然也曾彷徨,也曾摒棄過中國的教育,但是我知道我逃脫不掉,所以我還要好好學習,要保研,很想出國......大三了,讓我認識了sun中國研究院,并加入了sun校園技術大使的行列,讓我榮幸萬分。所以我又不斷地告訴自己,好好學習,好好學習技術,好好服務自己的母校、祖國.....真的
今天早上,我和幾個同學,早早的起來,出去掛上了Sun技術講座的條幅,去北京前,我會先作一個講座,我真的很感謝我的同學......其實,正是很多小事,才會讓我們真正感動。
posted @
2006-10-27 07:49 wqwqwqwqwq 閱讀(443) |
評論 (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 閱讀(3560) |
評論 (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 閱讀(458) |
評論 (0) |
編輯 收藏