Let's Go!

发布新日志

  • Perl

    2009-09-23 00:38:22

    关于学习Perl

     

    1.小骆驼

    2.大骆驼

    3.虎豹书

    4 Perl 學習手札
    http://easun.org/perl/perl-toc/

    这三本要完整看完,所有书上的例子弄懂,自己实践一下,能结合具体工作更好。


    Perl语言入门(第三版)
    又叫小骆驼。初学者使用。
    高级Perl编程
    又叫黑豹书,应该算是learn perl的升级版,如果想成为perl黑客或者高手的话,不可不读。
    Perl语言编程(第三版)
    又叫大骆驼。囊括了 Perl 的所有知识,适用于查阅和检索,和 perl 附带的英文手册有一拚。
    CGI编程-使用Perl
    关于使用 Perl 来编写 CGI 程序。
    推荐在线学习资源

    英文资源
    perlmonks 教程
    CGI 教程
    Randal L. Schwartz 的 Perl 专栏
    perl.com 文章
    Perl 用法,窍门收集
    中文资源
    Perl 学习手札 繁体版
    Perl 学习手札 简体版
    Flamephoenix 的Perl教程
    英文文档资源
    在线 perldoc 文档镜像 1
    在线 perldoc 文档镜像 2
    如果你在 C 盘下装有activeperl,可以参考自带的本地文档file:///C:/Perl/html/index.html
    CPAN 资源
    CPAN 模块搜索主站
    CPAN 镜像
    CPAN 模块搜索
    CPAN 国内镜像
    linuxforum
    香港镜像
    广州镜像
    activeperl ppm 资源
    activeperl ppm 下载
    activeperl 5.6 ppm 下载
    activeperl 5.8 ppm 下载
    activeperl 5.6 ppm 下载 :如果你要的模块上面找不到的话,尝试这个
    activeperl 5.8 ppm 下载 :如果你要的模块上面找不到的话,尝试这个

     


    Perl是一门很有用的语言,可以用它来做很多事。然而,它也仅是一门语言,掌握了Perl,你只是掌握了Computer领域的一小块知识。在学习Perl前,请明确你的学习目的,并采用正确的学习方法和资源。


    (一)学习目的

    你学Perl的目的是什么?要实现你的目的,光有Perl够吗?让偶帮你分析看看。

    1. 我想当一名System Administrator,并将Perl用于SA工作。

    想法很好,优秀的SA,Perl能力必备。Perl自身的灵活语法,强大的正则表达式,良好的shell结合能力,以及CPAN的众多模块,会使你的SA工作如鱼得水,工作量倍减。然而,SA工作的本质还在于System,也许值得你花更多时间的,是System自身稳定和安全的维护。你要学习Unix,Linux等OS的操作,学习Apache,Sendmail,Bind,Squid,Mysql等应用配置,还要学习awk,sed等shell script。这些中的每一样要搞熟,都值得你付出很多努力呀。

    2. 我想成为Web Programmer,并将Perl用于web development。

    想法很好,请努力学习Perl。不要被一些所谓的流行概念迷惑,也不要整天费心思去想CGI什么时候会过时。至少从偶的观点看,有WEB的一天,CGI就永有用武之地。偶不列举国外用CGI driver的大站点,因为那太多了。国内最大的2个Email Services Provider,Sina和网易,他们的webmail就是用CGI实现的,并且每天承担着千万级的访问。

    然而你也该认识到,光掌握Perl,对从事web develop来说,还是很不够的。你要学习HTTP协议,学习HTML,XML,JavaScript等web呈现语言,学习mod_cgi,mod_perl等Apache模块,学习SQL语句和database。甚至还要学习PHP,JAVA或.net技术,毕竟这三样很流行,你不一定要爱好它们,但掌握了它们,在国内找工作相对有利。偶很少听说有web development单招Perl Programmer的,这点与国外不一样。同样的,上述偶提到的各个方面,也需要你花很多心思去学习,而绝不是只学好Perl那么简单。

    3. 我想成为一名Applications Programmer,将Perl用于applications development

    如果是这样,偶劝你还是先学好C/C++吧,毕竟那才是计算机语言的根本。虽然一些简单的applications可以用Perl来编写,虽然Lincoin Stein先生说,他用Perl开发的WEB服务器比Apache还快,但是,Perl开发的Program要想产品化,还有很多problems--它毕竟只是一种解释性Script,底层的很多东西还是基于C的。要想追求高性能和产品化,为什么不用C呢?

    当然,如果你只是为自己或自己的company编写applications,那用Perl无可厚非。偶们公司有个LOG部门,每天的工作就是分析海量数据,这用Perl来做足够了。处理文本,Perl强过任何一门语言。然而即使这样,该部门招人时,还是要求你会C/C++.

    4. 我想做一名Perl Hacker,并为CPAN贡献modules.

    精神很可嘉,希望你能坚持下去。偶达不到这个层次,所以也不好说什么。往这方面发展时,希望你能彻底理解OOP,理解各类引用传递和符号表的概念,否则也就谈不上写modules了。


    (二)学习方式

    如果没有老师教的话(据偶所知,国内的University/College,很少有开Perl课程的),那么唯一的学习方式就是多看书,多动手写code.

    1. 是要多看书,还是多看其他人的Code?

    当然是前者。只有你了解原理了,才可灵活运用,写出清晰的code,并形成自己的Code Style(代码风格)。

    一味的看别人的code,而不注重基础知识,会使你迷惘而不知所措。因为这样你所学的知识会很散乱,行不成自己的知识体系。

    当然,一边看书,一边看别人的Code,也是好的学习方式。但请记住,你看别人的Code,是有助于你去理解书本中的基础知识,不要本末颠倒了。

    2. 刚看完了基础书,我想看"Perl高级编程"和"Perl技术内幕"

    最近在CU Forum看到很多这种topics,偶一听到就faint。请先保证你彻底理解基础知识了,再去看那些Books吧。曾经有人问偶关于Perl的高级data structure,一聊之下发现他对Perl的基本reference都不甚明了,那还有什么好谈的呢?有多少人分不清楚$var与($var)的区别?又有多少人还不明白$$hashref{$key}与$hashref->{$key}的不同?永远不要太心急,请循序渐进来。偶的老师在Perl界也算有点名气,他说完全掌握Perl用了3年时间。多看书,多动手,不要好高骛远哦。


    (三)学习资源

    偶看过的3本书,觉得都very good,它们是"Learning Perl","Programming Perl","Network Programming with Perl".还有一本好像是"CGI Programming with Perl",没怎么仔细看,就不提了。前2本是Oreilly出版的,别名大小Camel Book(骆驼书),是Perl入门和提高的经典书籍。第3本是Lincoin Stein先生的经典力作,他也是mod_cgi的开发者,其精湛的技术令偶受益终生。这3本书好像都有中文版,去书店看看能否买到。如果你阅读English没问题,那偶建议你还是阅读原版的好。

    另外,订阅Perl Mailing List也可令你从中受益,这里列出了所有知名的Perl Mailing List: http://lists.cpan.org/
    其中的beginners和beginners-cgi也许对你有用。modperl-user是讨论mod_perl的。

    站点方面:

    http://learn.perl.org/  这个站点是为学习Perl的People准备的

    http://perl.apache.org/docs/  这里有mod_perl的完整Docs

    [[i] 本帖最后由 兰花仙子 于 2005-11-5 22:17 编辑 [/i]]

     

     

     

     


    ActivePerl V5.8.8.817 for Windows
    解释器
    DzSoft Perl Editor 5.7.0.9
    http://download.pchome.net/development/sever/perl/763.html
    它还有汉化包,自己搜一下.
    我都是用这个


    active perl有什么作用?怎么用?
    Dzsoft perl editor有什么作用?怎么用?
    他们有什么关系

    ActivePerl是Perl语言的Windows版本,Perl是一种很自由而且功能很强大的编程语言,主要被用作 Web 编程、数据库处理、XML 处理以及系统管理,而且Perl 相当快捷实用。
    Dzsoft perl editor是Perl/CGI 脚本编写、编辑和调试工具。它有着舒适而直观的用户界面,适合于初学者和高级程序员。它简单得有些奇怪,但是它真的是一款强大的工具。它有调试功能,一个舒适的带语法加亮的编辑器,一个语法检查功能可以找到你脚本里的错误,还有许多其他功能用来方便Perl的开发。


    active perl是windows下的perl解释器
    dzsoft perl editor 是一个编辑器
    dzsoft可以和active perl关联,就可以在编辑器里直接调试程序了。

    你用windos的话,必需下载并安装一个 active perl,这样perl在你的机器上才能运行.
    至于用用什么编写perl都是可以的,Dzsoft perl editor只是其中一种,比它好用的有很多.你用记事本也可以写perl的


    先安装ActivePerl 这是perl解释器
    http://www.onlinedown.net/soft/8364.htm
    再安装DzSoft Perl Editor 这是编辑器
    http://www.duote.com/soft/3014.html

    KOMODO IDE

     

    1.           http://club.topsage.com/thread-268273-1-1.html


    2.        http://www.oschina.net/project/tag/121


    Perl开发工具大比拼
    * Komodo IDE
          Komodo IDE可以在 Windows、Mac OS X 和 Linux 上运行,并支持通用的开源语言 —— Perl、PHP 和 Ruby。代码智能引擎非常可靠。它扫描所有语言安装找到定制扩展,比如 PEAR 模块。在项目方面,它支持与 CVS、Subversion 和 Perforce 的集成,也允许直接向服务器 FTP 传递代码。 Komodo 是一个商业产品。在我写作本文的时候,这款 IDE 有个人版(US$29.95)和专业版(US$299.95)两个版本可选。它的一个独特的特性是常...


        * Perl Builder
          一个综合,完善的Perl语言编译器。他独有CGI Wizard功能可以帮助你简单直接的创建脚本。它拥有完善的编译和调试功能

        * PerlEdit
          一套不管是 Perl 的菜鸟们或是高手皆适宜的 CGI 编辑工具,它的特色包括有以鲜明色彩来表示语法的功能,可以让整个程式变的容易阅读也更加方便维护,另外它还可以让你在没有 web server 的运作下就能够直接测试已编写好的 CGI 程式是否有误

        * Perl Express
          囊括了perl程序员必需的编写和调试的所有工具,无论是对新手还是对老手都很合适

        * mod_perl
          现在网上已经有大量的关于成功运行mod_perl模块的介绍, 该模块可以让Perl程序员更 ... 一旦Apache服务器中内置了mod_perl的Perl解释器, Perl脚本就可以快速执行。

        * Top Perl Studio
          能够使用它编辑和检查 CGI/PERL 脚本,内置HTTP 服务器,浏览器,文件和服务器浏览,功能和参数完成,代码片断,样板,语法加亮显示,语法检验和人工数据输入界面

        * ActiveState Perl Dev Kit Pro
          为 Perl程序员开发程序提供必不可少的工具,使得创建、构造程序变得容易,可以将perl程序在HP-UX、Linux、Solaris和Windows 平台下生成各自可执行文件,调试Perl脚本也是一件容易的事,支持将 VBScript转换成Perl,也能用Perl创建.NET 和 ActiveX控件

        * PerlWiz
          写perl语言的CGI程式的工具,提供强大的开发界面,perl菜鸟也能轻松写出功能丰富的CGI程序来

        * Opti Perl
          为编程人员提供了一套创建、测试、排错和直接或通过HMTL运行PREL语句的开发环境

        * DzSoft Perl Editor
          一套在 Windows 及 Unix 下 Perl CGI 程式的撰写、编辑及除错工具。这是一套不管是 Perl 的菜鸟们或是高手皆适宜的 CGI 编辑工具,它的特色包括有以鲜明色彩来表示语法的功能,可以让整个程式变的容易阅读也更加方便维护,另外它还可以让你在没有 web server 的运作下就能够直接测试已编写好的 CGI 程式是否有误

        * ActivePerl      ------Perl 的脚本解释器
          一个可以让你任意执行 Perl 程序的工具软件,其包含了包括有 Perl for Win32、Perl for ISAPI、PerlScript、Perl Package Manager四套开发工具程序,可以让你编写出适用于 unix, windows, linux系统的 CGI程序来。。

        * SannySoft Perl Editor
          一个全集成的开发环境,具备多种标记语法,使你编写、调试Perl脚本时更为方便,使用起来是非常容易的,提前你的开发周期并节省大量的时间

        * EngInSite Perl
          一套在 Windows 及 Unix 下 Perl CGI 程式的撰写、编辑及除错工具,不管是 Perl 的菜鸟们或是高手皆适宜的 CGI 编辑工具,特色包括有以鲜明色彩来表示语法的功能,可以让整个程式变的容易阅读也更加方便维护,另外它还可以让你在没有 Web Server 的运作下就能够通过调用 Perl 解释程序测试已编写好的 CGI 程式是否有误,也可以将结果以文本或 HTML 方式输出到窗口中 ...

        * Tavrida PERL Editor
          像Delphi一样的编辑器,用来写Perl和支持数据库的网页,内建Web服务器可供测试,支持数据库

     

     

    http://www.oschina.net/project/tag/121


    Perl开发工具

     

    Perl开发工具 共收录了 23 个项目 —— 第 1 页
    集成开发环境 Eclipse
    Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。 Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。 Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源...

    更多Eclipse信息

    编程语言 Perl
    Perl是一种脚本语言。 最初的设计者为拉里·沃尔(Larry Wall),它於1987年12月18日發表。Perl借取了C、sed、awk、shell scripting 以及很多其他程式語言的特性。其中最重要的特性是他内部集成了正则表达式的功能,以及巨大的第三方代码库 CPAN。 Perl原名pearl,但是在這個語言官方發表前,拉里·沃尔發現已經有個程式語言“pearl”,便將這個程式語言的名字改成Perl。对于Perl 这四个字母,有一些解釋...

    更多Perl信息

    Komodo IDE
    Komodo IDE可以在 Windows、Mac OS X 和 Linux 上运行,并支持通用的开源语言 —— Perl、PHP 和 Ruby。代码智能引擎非常可靠。它扫描所有语言安装找到定制扩展,比如 PEAR 模块。在项目方面,它支持与 CVS、Subversion 和 Perforce 的集成,也允许直接向服务器 FTP 传递代码。 Komodo 是一个商业产品。在我写作本文的时候,这款 IDE 有个人版(US$29.95)和专业版(US$299.95)两个版本可选。它的一个独特的特性是常...

    更多Komodo IDE信息

    Perl软件收藏库 CPAN
    CPAN是Comprehensive Perl Archive Network的缩写.。它是一个巨大的Perl软件收藏库,收集了大量有用的Perl模块(modules)及其相关的文件。如何使用CPAN 在DOS命令行键入以下指令执行CPAN C:>perl -MCPAN -e shell 第一次进入CPAN时,CPAN将会进行一次配置(configuration)。当配置完成后,就可以利用CPAN来查询CPAN内的Perl模块,并且进行安装。一般操作如下: CPAN> d /bioperl/ 查询有关bioperl的模块 CPAN> install...

    更多CPAN信息

    Perl Builder
    一个综合,完善的Perl语言编译器。他独有CGI Wizard功能可以帮助你简单直接的创建脚本。它拥有完善的编译和调试功能

    更多Perl Builder信息

    PerlEdit
    一套不管是 Perl 的菜鸟们或是高手皆适宜的 CGI 编辑工具,它的特色包括有以鲜明色彩来表示语法的功能,可以让整个程式变的容易阅读也更加方便维护,另外它还可以让你在没有 web server 的运作下就能够直接测试已编写好的 CGI 程式是否有误

    更多PerlEdit信息

    Perl开发工具 Open Perl IDE
    Open Perl IDE 是一个Windows 下的可视化的Perl 集成开发工具。如下图所示

    更多Open Perl IDE信息

    ActivePerl
    一个可以让你任意执行 Perl 程序的工具软件,其包含了包括有 Perl for Win32、Perl for ISAPI、PerlScript、Perl Package Manager四套开发工具程序,可以让你编写出适用于 unix, windows, linux系统的 CGI程序来。。

    更多ActivePerl信息

    Perl Express
    囊括了perl程序员必需的编写和调试的所有工具,无论是对新手还是对老手都很合适

    更多Perl Express信息

    mod_perl
    现在网上已经有大量的关于成功运行mod_perl模块的介绍, 该模块可以让Perl程序员更 ... 一旦Apache服务器中内置了mod_perl的Perl解释器, Perl脚本就可以快速执行。

    更多mod_perl信息

    ActiveState Perl Dev Kit Pro
    为Perl程序员开发程序提供必不可少的工具,使得创建、构造程序变得容易,可以将perl程序在HP-UX、Linux、Solaris和Windows平台下生成各自可执行文件,调试Perl脚本也是一件容易的事,支持将 VBScript转换成Perl,也能用Perl创建.NET 和 ActiveX控件

    更多ActiveState Perl Dev Kit Pro信息

    Top Perl Studio
    能够使用它编辑和检查 CGI/PERL 脚本,内置HTTP 服务器,浏览器,文件和服务器浏览,功能和参数完成,代码片断,样板,语法加亮显示,语法检验和人工数据输入界面

    更多Top Perl Studio信息

    Symbian Perl
    Symbian Perl 是 Symbian S60 手机上的 Perl 语言编程环境。

    更多Symbian Perl信息

    DzSoft Perl Editor
    一套在 Windows 及 Unix 下 Perl CGI 程式的撰写、编辑及除错工具。这是一套不管是 Perl 的菜鸟们或是高手皆适宜的 CGI 编辑工具,它的特色包括有以鲜明色彩来表示语法的功能,可以让整个程式变的容易阅读也更加方便维护,另外它还可以让你在没有 web server 的运作下就能够直接测试已编写好的 CGI 程式是否有误

    更多DzSoft Perl Editor信息

    Opti Perl
    为编程人员提供了一套创建、测试、排错和直接或通过HMTL运行PREL语句的开发环境

    更多Opti Perl信息

    PerlWiz
    写perl语言的CGI程式的工具,提供强大的开发界面,perl菜鸟也能轻松写出功能丰富的CGI程序来

    更多PerlWiz信息

    JPerl
    JPerl 是一个用 Java 语言实现的 Perl 。

    更多JPerl信息

    Perl 语言开发工具 Padre
    Padre 是一个为 Perl 语言开发者提供的集成开发环境,提供了语法高亮和代码重构功能。

    更多Padre信息

    SannySoft Perl Editor
    一个全集成的开发环境,具备多种标记语法,使你编写、调试Perl脚本时更为方便,使用起来是非常容易的,提前你的开发周期并节省大量的时间

    更多SannySoft Perl Editor信息

    EngInSite Perl
    一套在 Windows 及 Unix 下 Perl CGI 程式的撰写、编辑及除错工具,不管是 Perl 的菜鸟们或是高手皆适宜的 CGI 编辑工具,特色包括有以鲜明色彩来表示语法的功能,可以让整个程式变的容易阅读也更加方便维护,另外它还可以让你在没有 Web Server 的运作下就能够通过调用 Perl 解释程序测试已编写好的 CGI 程式是否有误,也可以将结果以文本或 HTML 方式输出到窗口中 ...

    Tavrida PERL Editor
    像Delphi一样的编辑器,用来写Perl和支持数据库的网页,内建Web服务器可供测试,支持数据库

    更多Tavrida PERL Editor信息

    Rakudo
    Rakudo 是运行Parrot虚拟机的Perl 6规格实现。

    更多Rakudo信息

    Apache2::ModProxyPerlHtml
    Apache2::ModProxyPerlHtml 是一个 Apache 的 mod_perl2 模块的替换产品。用来为反向代理重写 HTML/JavaScript. 链接,支持 Refresh meta. 标签中的链接重写。

     

     

    JPerl 是一个用 Java 语言实现的 Perl 。


    http://www.oschina.net/p/jperl

     

     

     

     

    Perl维基百科

     

    http://zh.wikipedia.org/wiki/Perl

     

     

      请帮忙建构Wikipedia和其姊妹计画的未来愿景,并请阅读来自迈克尔·斯诺和吉米·威尔士的公开信。  [隐藏] [帮助我们翻译!] 

    (簡體中文)由于服务器程序更新,目前所有小工具及用户脚本均有可能工作不正常。
    (繁體中文)由於伺服器程式更新,目前所有小工具及用戶腳本均有可能工作不正常。

    Perl
    维基百科,自由的百科全书
    跳转到: 导航, 搜索
    Perl
    编程范型 多重编程范式
    发行时间 1987年
    设计者 拉里·沃尔
    最新发行时间 5.10.0/ 2007年12月18日
    型态系统 Dynamic
    启发语言 AWK, BASIC, BASIC-PLUS, C语言, C++, LISP, Pascal, sed, Unix shell
    影响语言 Python, PHP, Ruby, ECMAScript.
    操作系统 跨平台
    许可证 GNU通用公共许可证, Artistic License
    网站 http://www.perl.org
    Perl是一种脚本语言。 最初的设计者为拉里·沃尔(Larry Wall),它于1987年12月18日发表。Perl借取了C、sed、awk、shell scripting 以及很多其他编程语言的特性。其中最重要的特性是他内部集成了正则表达式的功能,以及巨大的第三方代码库 CPAN。

    目录 [隐藏]
    1 Perl简介
    1.1 Perl 语言的中心思想
    1.2 Perl的骆驼图案
    1.3 优点
    1.4 缺点
    2 Perl 的语法
    2.1 Perl 的 Hello World 程式
    2.2 变量
    2.3 判断语句
    2.4 循环语句
    3 函数
    4 Perl的应用
    4.1 Perl Data Language
    4.2 Perl诗经
    5 竞争对手
    6 Perl的历史
    6.1 Perl 6
    7 注释
    8 参见
    9 外部链接
    9.1 中文
     

    [编辑] Perl简介
    Perl原名pearl,但是在这个语言官方发表前,拉里·沃尔发现已经有个编程语言“pearl”,便将这个编程语言的名字改成Perl。对于Perl这四个字母,有一些解释,包括充满幽默感的“Pathologically Eclectic Rubbish Lister”。“Practical Extraction and Report Language”曾经出现在很多有关Perl的资料里,包括官方的主页。不过事实上这个长名字是后来凑出来的。它的名字第一个字母大写(Perl)时就指这个编程语言,无大写字母(perl)时就指它的直译器。将Perl写成“PERL”是不适当的,因为它并非一个缩写字。

    [编辑] Perl 语言的中心思想
    Perl 语言的中心思想可以集成为一句话“TMTOWTDI”:

    There's More Than One Way To Do It.(不只一种方法来做这件事。)

    Perl 的作者 Larry Wall 建议可以把这个缩写词念成“Tim Toady”。

    另一个 Perl 程序员常常想起的 Perl 俗语是:

    Easy things should be easy, and hard things should be possible.

    [编辑] Perl的骆驼图案
    Perl骆驼是欧莱礼媒体(O'Reilly Media)设计给Perl编程语言的图标。它也是一种黑客的象征,出现在某些T-shirt和其他衣服标签上。

    欧莱礼拥有此图像之商标,并且宣称,唯有在捍卫“符号之完整性”时,才会行使其法律上的权力。[1] 欧莱礼允许此商标在非商业目的之前提下被使用,并同时供了 Programming Republic of Perl 的图像以及 Powered by Perl 的按钮图。[2] 然而,骆驼其实从未被考虑成为 Perl 的官方识别符号,真要说有的话,其识别符号其实是洋葱。[3]

    [编辑] 优点
    为了实现这样的目标,并且又因为 Larry Wall 本人也是一个语言学家,他设计Perl语言时使用了很多语言学的思维。相比 C、Pascal 这样的“高级”语言而言,Perl语言直接提供泛型变量、动态数组、Hash表等更加便捷的编程元素。Perl 具有动态语言的强大灵活的特性,并且还从C/C++、Basic、Pascal 等语言中分别借鉴了语法规则,从而提供了许多冗余语法。使得程序员可以忽略计算机内部资料存储、类型、处理方法、运算规则、甚至内存越界等等的细节,而将思考中心放在所需要的程序逻辑上。就这一点而言,很多 Perl 程序员认为目前只有 Perl、Python等泛型语言才能称为“高级”语言,而 C、Pascal 甚至 C++ 这些只能称为“中高级”语言而已。可以说,在统一变量类型和掩盖运算细节方面,Perl 做得比 Python 更为出色。

    由于从其他语言大量借鉴了语法,使得从其他编程语言转到 Perl 语言的程序员可以迅速上手写程序并完成任务,这使得 Perl语言是一门容易用的语言。但问题是这样写出来的“类xx语言”的 Perl 程序对不熟悉这种语言的程序员却如同天书,这使得 Perl 语言易写不易读。

    [编辑] 缺点
    也正是因为 Perl 的灵活性和“过度”的冗余语法,也因此获得了 write-only 的“美誉”,因为许多 Perl 程序的代码令人难以阅读,实现相同功能的程序代码长度可以相差十倍百倍。 但 Perl 同样可以将代码书写得像 Python 或 Ruby 等语言一样优雅。

    [编辑] Perl 的语法
    [编辑] Perl 的 Hello World 程式
    下面是一个在标准输出设备上输出 Hello World 的简单程式,这种程式通常作为开始学习编程语言的第一个范例:

    #!/usr/bin/perl
    print "Hello, world!\n";
    这个程序将输出一行字符串:“Hello,world!”,以及一个回车换行符。

    [编辑] 变量
    Perl 是一种 无类型语言(untyped),换句话说,在语言层面上,Perl 和大多数编程语言不同,不把变量分成整数、字符、浮点数等等,而只有一种能接受各种类型数据的“无类型”变量。Perl的变量以$字符开头。例如$a=5;$b="Hello";$c=3.2;都是合法的 Perl 语句。

    Perl中各种变量的运算也很自由,数和含有数的字符串是等效的,可以把数字字符串参与数学计算,也可以反之,让数字参与字符串的构成和操作。

    除单个变量(Perl 称为 Scalar)之外,Perl 还有两种集合类型,分别是数组(Array,用@字符开头)和关联数组(Associative array,或者称为Hash,用%开头。类似 C++ 的 STL map 和 Python 的 Dictionary)。数组可以内含任意可变数目的变量。而Hash表,则可以在变量之间建立一一映射,就像字典一样,可以把不同的变量按照他们的逻辑关系组织起来。

    [编辑] 判断语句
    因为Perl大量的创造冗余的语法,并且从其他语言中大量的借鉴语法,使得Perl的语法极其丰富和灵活。Perl共有下列几种判断语句:

    if模块
    if ($hour > 22) {
        print "should sleep...\n";
    }
    if语句
    print "hello" if $guest >= 1;
    unless模块
    unless ($credit > 100) {
        print "You can not graduate!\n";
    }
    unless语句
    print "eat\n" unless $food == 0;
    由于逻辑算子的作用,还可以写出不用关键字if或unless的判断语句,如常用的打开文件语句:

    open(DATA, "< $filename") or die "Can't open $filename: $!\n";
    [编辑] 循环语句
    Perl中的循环语句也是非常的丰富。主要有:

    Perl自己的for或者foreach循环:

    @group = 1 .. 10;
    for (@group) {
        print "$_\n";
    }
     
    foreach (@group) {
        print "$_\n";
    }
    从C语言借鉴来的for循环:

    for ($i = 0; $i < 10; $i++) {
        print "$group[$i]\n";
    }
    while循环:

    $i=0;
    while ($i < 10) {
        print "$group[$i]\n";
        $i++;
    }
    do...while循环:

    $i = 0;
    do {
        print "$group[$i]\n";
        $i++;
    } while ($i < 10);
    until循环:

    $i = 0;
    until ($i == 10) {
        print "$group[$i]\n";
        $i++;
    }
    从PASCAL语言借鉴来的do...until循环:

    $i = 0;
    do {
        print "$group[$i]\n";
        $i++;
    } until ($i == 10);
    甚至还有利用动态语言特性,用map关键字也可以做循环:

    print map { "$_\n" } @group;
    其实还有其他的循环方式。总而言之,就是TMTOWTDI。

    [编辑] 函数
    Perl提供了可以直接调用的、数目众多的函数。可以对以下对象进行操作:

    数组:chomp, join, keys, map, pop, push, reverse, shift, sort, splice, split, unshift, values
    数据库:dbmclose, dbmopen
    目录:chdir, closedir, mkdir, opendir, readdir, rewinddir, rmdir, seekdir, telldir
    文件:binmode, chdir, chmod, chown, chroot, close, eof, fnctl, fileno, flock, getc, glob, ioctl, link, lstat, open, print, printf, read, readdir, readlink, rename, rmdir, seek, select, stat, symlink, sysopen, sysread, syswrite, tell, truncate, umask, unlink, utime, write
    组:endgrent, getgrent, getgrgid, getgrname, getpgrp, setgrent, setpgrp
    Hash: delete, each, exists, keys, values
    主机:endhostent, gethostbyaddr, gethostbyname, sethostent
    输入:getc, read, sysread
    处理器间通讯:msgctl, msgget, msgrcv, msgsnd, pipe, semctl, semget, semop, shmctl, shmget, hmread, shmwrite
    数学:abs, atan2, cos, exp, hex, int, log, oct, rand, sin, sqrt, srand
    消息队列:msgctl, msgget, msgrcv, msgsnd
    其他:bless, defined, do, eval, formline, import, ref, scalar, syscall, tie, tied, undef, untie, wantarray
    网络:endnetent, getnetbyaddr, getnetbyname, getnetent, setnetent
    输出:die, print, printf, syswrite, warn, write
    口令:endpwent, getpwent, getpwname, getpwuid, setpwent
    进程:alarm, die, dump, exec, exit, fork, getlogin, getpgrp, getppid, getpriority, kill, setpriority, sleep, system, times, umask, wait, waitpid
    协议:endprotent, getprotobyname, getprotobynumber, getprotoent, getservbyname, getservbyport, getservent, setprotoent
    正则表达式:grep, pos, quotemeta, reset, split, study
    范围:caller, local, my
    服务:endservent, getservbyname, getservbyport, getservent, setservent
    套节字:accept, bind, connect, gethostbyaddr, gethostbyname, gethostent, getpeername, getservbyname, getservbyport, getservent, getsockname, getsockopt, listen, recv, select, send, setsockopt, shutdown, socket, socketpair
    字符串:chop, chr, crypt, hex, index, join, lc, lcfirst, length, oct, Ord, pack, q, qq, quotemeta, qw, qx, reverse, rindex, split, sprintf, substr, uc, ucfirst, unpack, vec
    时间:gmtime, localtime, time
    UNIX: chmod, chown, chroot, dump, endgrent, endhostent, endnetent, endprotent, endpwent, endservent, fnctl, fork, getgrent, getgrgid, getgrname, gethostent, getlogin, getnetent, getpgrp, getppid, getpriority, getprotobyname, getprotobynumber, getprotoent, getpwent, getpwname, getpwuid, getservbyname, getservbyport, getservent, ioctl, link, lstat, readlink, select, setgrent, sethostent, setnetent, setpgrp, setpriority, setprotoent, setpwent, setservent, sleep, syscall, times, umask, wait, waitpid
    这里可以按字母序查找Perl函数用法。

    [编辑] Perl的应用
    Perl主要应用在Unix平台和网页中(PHP,CGI)。Perl拥有海量的模块支持,在解决问题时非常方便。CPAN是Perl模块的集中营。

    [编辑] Perl Data Language
    Perl Data Language(简称PDL)是Perl的一个外接模块,也是对Perl功能的一个重要拓展。它使得Perl语言可以直接对2至多维的矩阵直接操作,进行快速的矩阵运算,完成基础的Perl所不能完成的运算,大大拓展了Perl的适用范围。所以PDL本身也是很多其他模块的基础。

    而且PDL提供了与很多其他软件包的接口,例如FFTW(一个快速傅立叶变换的软件包),又或者是Mesa(Linux上的OpenGL三维图形渲染包),这些包原来往往仅提供C/C++语言接口。这一功能使PDL成为拓展Perl功能的一个中间层。

    [编辑] Perl诗经
    和C语言一样,在Perl界,难以读懂的程式码大赛是个有名的活动。近似难以读懂的程式码,但方向不同,Perl Poetry是可以被perl编译的诗。新的诗经通常会在Perl Monks网站发表。

    另一个Perl hackers的有趣活动是写JAPHs。

    [编辑] 竞争对手
    因为许多Perl程序的代码难以阅读,加上它的面向对象功能被视为不是真正的面向对象,于是很多人拿Perl和其他动态语言来比较。

    最常见是比较对象是Python,有人写了篇文章叫What's wrong with Perl,指出Perl的缺点,鼓励别人学Python。著名黑客埃里克·斯蒂芬·雷蒙写Why Python?,该文中一个重要的比较对象就是Perl。

    Ruby的作者(松本行弘,Matz)甚至直认他想Ruby作为Perl的后继者。[4]

    [编辑] Perl的历史
    1987/10/18发表Perl 1.0
    1994年发表Perl 5 始具有OOP的作法
    5.8.0 版开始,Perl 具备了Unicode(万国码)支援
    将 Big5 编码的档案转成 Unicode,祗需键入下列指令:
    perl -Mencoding=big5,STDOUT,utf8 -pe1 < file.big5 > file.utf8

    Perl 也内附了 ``piconv,一支完全以 Perl 写成的字码转换工具程式,用法如下:
    piconv -f big5 -t utf8 < file.big5 > file.utf8
    piconv -f utf8 -t big5 < file.utf8 > file.big5
    [编辑] Perl 6
    Perl 6正在开发中,它将会与现在的Perl版本有很大不同,但相信还要开发一段长时间。 其中最主要的改变是,Perl 6 会是完全面向对象的,有专用于宣告类别的语法

    class Foo is Universal { # inherit form. Universal
        has $member_variable
     
        method member_function {
            print "some string";
        }
    }
    [编辑] 注释
    ^ O'Reilly—The Perl Camel Usage and Trademark Information
    ^ Index of /images/perl
    ^ Perl Trademark, User Logos, Perl Marks and more
    ^ “我认为 Ruby 这个名字作为 Perl 之后的一门语言的名字真是再恰当不过了。”--摘录自O'Reilly 访问 Matz。
    [编辑] 参见
    CPAN
    Parrot
    [编辑] 外部链接
    Perl.com(O'REILLY)
    Perl.org
    Perl 6 的开发网页
    CPAN - Comprehensive Perl Archive Network:Perl 程式的集中地
    CPAN 检索
    dmoz on Perl
    Perl Mongers:全球各地的使用者组织
    Perl Monks:一个很活跃的 Perl 社区
    ActiveState:Microsoft Windows 上的 Perl
    Strawberry Perl:由 Perl 社群所提供之 Microsoft Windows 版 Perl
    Perl6::Perl5::Differences
    [编辑] 中文
    中国 Perl 协会
    香港 Perl 推广组(连接已失效,请到 香港 Perl 推广组(2))
    香港 Perl 推广组(2)
    Perl@Taiwan
    Perl 学习手札
    中国 Perl 协会会员中心(通过标签和地域聚合人)
    中国 Perl 协会的 wiki(中文翻译)
    显示▼隐藏▲查 • 论 • 编 • 历程序设计语言
     
    阵列编程语言 A+ - Ada - 汇编语言 - B - Brainfuck - COBOL - Curl - D - Eiffel - Erlang - FORTRAN - IronPython - Java - Jython - LISP - Lua - SCILAB - MATLAB - MATHEMATICA - Nuva - Oberon - OCaml - Perl - PHP - PostScript. - Powerbuilder - Python - R - REXX - Ruby - Self - Smalltalk - Tcl/Tk
     
    .NET Framework语言 C++/CLI - C# - F# - J# - Microsoft Visual C# - Visual Basic .NET
     
    C/C++语言 C - C++ - Turbo C++ - Borland C++ - C++ Builder- C++/CLI - Objective-C - Microsoft Visual C++
     
    BASIC语言 有行号:BASIC - BASICA - GW-BASIC - ETBASIC - GVBASIC
    无行号:QBASIC - QuickBASIC - True BASIC - Turbo BASIC - PowerBASIC - DarkBASIC
    Visual Basic - Visual Basic .NET - VBScript. - Visual Basic for Applications(VBA)
     
    Pascal/Delphi语言 Pascal语法:(Pascal - Turbo Pascal - Object Pascal - Free Pascal)
    Pascal+Delphi语法:(Delphi)
     
    ECMAScript方言 ActionScript. - DMDScript. - JavaScript. - JScript.
     
    GPU用着色器语言 Cg - GLSL - HLSL
     
    学术编程语言 APL/J - Clean - Haskell - Jess - Logo - ML - Prolog - Scheme - SAC
     
    数据库相关编程语言 Clipper - Visual FoxPro - SQL(PL/SQL - T-SQL) - SQL預存程序
     
    其他编程语言 ALGOL - Forth - Modula-2/Modula-3 - MUMPS - PL/I - Simula
     

    取自“http://zh.wikipedia.org/zh-cn/Perl”
    1个分类: Perl
    查看条目 讨论 编辑本页 历史 不转换 简体 繁體 大陆简体 港澳繁體 马新简体 台灣正體 个人工具试用测试版 登录/创建账户 搜索
         导航
    首页
    分类索引
    特色内容
    新闻动态
    最近更改
    随机页面
    帮助
    帮助
    社区
    方针与指引
    互助客栈
    询问处
    字词转换
    联系我们
    关于维基百科
    资助维基百科
    工具箱
    链入页面
    链出更改
    上传文件
    所有特殊页面
    可打印版
    永久链接
    引用此文
    其他语言
    Alemannisch
    العربية
    Žemaitėška
    Български
    বাংলা
    Bosanski
    Català
    Česky
    Cymraeg
    Dansk
    Deutsch
    Ελληνικά
    English
    Esperanto
    Español
    Eesti
    Euskara
    فارسی
    Suomi
    Français
    Gaeilge
    Galego
    ગુજરાતી
    עברית
    हिन्दी
    Hrvatski
    Magyar
    Bahasa Indonesia
    Italiano
    日本語
    ქართული
    한국어
    Kurdî / كوردی
    Latina
    Lëtzebuergesch
    Lietuvių
    Македонски
    മലയാളം
    Bahasa Melayu
    Nederlands
    ‪Norsk (nynorsk)‬
    ‪Norsk (bokmål)‬
    Deitsch
    Polski
    Português
    Română
    Русский
    Саха тыла
    Srpskohrvatski / Српскохрватски
    Simple English
    Slovenčina
    Slovenščina
    Shqip
    Српски / Srpski
    Svenska
    தமிழ்
    Тоҷикӣ
    ไทย
    Türkçe
    Українська
    Tiếng Việt
    Bân-lâm-gú

    本页面最后修订于2009年9月9日 (星期三) 14:44。 本站的全部文字在知识共享 署名-相同方式共享 3.0协议之条款下提供,附加条款亦可能应用。(请参阅使用条款)
    Wikipedia®和维基百科标志是维基媒体基金会的注册商标;维基™是维基媒体基金会的商标。
    维基媒体基金会是在美国佛罗里达州登记的501(c)(3)免税、非营利、慈善机构。
    隐私政策 关于维基百科 免责声明

     

     

     

     

     

     

     

     

     


     

     

     

     

     

     

     

  • 在北京周末一定要做的50件事情!

    2009-09-14 00:41:41


    在北京周末一定要做的50件事情!


    1
    定制全球独一无二的阿迪球鞋
      
      阿迪达斯的球鞋满大街都能买到,但如果你想拥有一双全世界都不重样的阿迪呢?全球最大的阿迪达斯旗舰店特别设置了Mi Adidas 互动原创区,你能够在这儿发挥创造力、体验“量足定做”的服务。先由专业机器收集你的身体数据,接着你就能按自己的喜好组合鞋子配件,选择颜色、图案,最终穿上一双绝无“撞鞋”之忧的个人专属球鞋,目前阿迪达斯还只在少数大型旗舰店推出了这项服务,在中国,就北京这一家。
      
      朝阳区三里屯路19号院三里屯Village。


    2
    到M.A.O.看一场最不靠谱的演出
      
      北京的摇滚演出场所很多,但M.A.O .Live House最有无敌的本地气质。它所处的鼓楼一带是老北京胡同文化与街头小年轻文化混搭的产物。M.A.O最有特色的是经常举办一些看似极其诡异外加恶搞的派对,推荐奥运开幕当天8月8日的“非常现场系列之我的奥运—— 非常摇滚”,演出乐队有痛苦的信仰、逃跑计划等,票价80元,但“擦了郁美净又骑二八大车来的同志们可以现场购买50元票价入场”,这可不是什么难题,就看你有没有这点雅兴了。又比如8月29日,“短裙飘起来主题派对”,“演出当天凡穿短裙的男女均可免费”(男50元,女40元),男的赶紧借条性感的小短裙穿,反正不怕走光。
      
      西城区鼓楼东大街111号(6402 5080)。


    3
    在明朝的皇家粮仓里观赏《牡丹亭》
      
      始建于明永乐七年的皇家粮仓比故宫还早10年,如今这里已经变成了仅容纳60人的艺术殿堂。坐在600年前大运河的起点,先品尝美食,再观看来自大运河另一端、同样有着600年生命的昆曲经典,无疑是一件赏心乐事谁家院的绝妙享受。尤其这出《牡丹亭》,“余秋雨监制、汪世瑜出品”在戏曲界本身就意味着厅堂的概念,而唯有皇家粮仓方可还原明代上演昆曲的旧制。
      
      东城区东四十条22号(6409 6477)。
      
    4
    宋庄参与一场行为艺术
      
      如果你在宋庄看到一个裸体女子漠然伫立,或一群男子被关在铁笼子里静坐,千万不要诧异和惊惶。或许,这是一场最前卫的行为艺术在你眼前上演。宋庄已成为代表先锋的艺术群落,有个宋庄广场行为艺术工作坊就定期举办实验艺术活动,除了坊内成员,也欢迎准艺青新人的加入。如果你不敢脱,也不愿在笼子里宅,那就随便钻进个工作坊或艺术画廊,这里的艺术品价格一般不那么离谱,比较有升值潜力,眼光够犀利的话,兴许能发现中国艺术未来的“F4”。来宋庄,起码得预留出一天时间。打驶入“中国宋庄”大门起,就得左右岔口都瞅好了。小堡村艺术区、任庄村艺术区、宋庄村艺术区、宋庄艺术工厂区、画家大院区……每条小路蜿蜒进去,都是块艺术家的小型集散地。
      
      通州区宋庄,可从国贸坐938支9直达宋庄美术馆门口。
      
           
    5
    去明星录音棚做专业歌手
      
      想过把歌星瘾最常见的方法是去卡拉OK,如果你还有更高追求,可以去录音棚录一张自己的唱片。尤其是在北京这种明星扎堆的地方,绝对不乏“星光现场”。比如目前全亚洲最大的录音棚乐家轩,汶川大地震后成龙曾组织上百位艺人在这里录制歌曲《承诺》,内地港台的大明星几乎全来了这里。你大可以去初试啼声一把,体验准明星的感觉。这里有十分专业的录音设备,录音室环境也很舒适,玩票一个小时价格也不算太高。
      
      北京市东城区美术馆后街大取灯胡同2号(8404 7687),棚费:260元/小时,录音师30元/小时,录音需提前预约,如果翻唱歌曲,请自备伴奏带。
      
       
    6
    在香山脚下包场看露天电影
      
      还记得小时候关于露天电影的体验吗?对了,现在就让你回到80年代,所不同的是,你不用和上百人挤在大操场上看,而是独享一场露天电影。香山脚下有一家建在废弃影视城里的餐厅野柳别馆,除了无敌的香背靠香山的无敌风景,还能在草地上看露天电影,而且可以提前预约点片。若点片遇上库存没有的,老板也会想尽办法给你租过来。8月的北京,香山脚下的温度比城里要低六七度,坐在草坪上,背靠西山,小风吹着、小酒喝着,宽银幕里放着为咱单点的《天堂电影院》……这大概惬意得都让人有些不知所措了。
      
    海淀区西北五环香泉环岛东侧普安店240号荷叶山庄18号院(6259 1142)。
      
    7
    北大京昆社免费学唱做票友
      
      如果你真心热爱京剧昆曲,北大京昆社是难得的一方园地。和社会的“票社”有所区别的是,它更加单纯、理想。你只要愿意就能加入,如果失去兴趣随时可以离开。最重要的是,这里还有北方昆曲剧院的张卫东老师等专业名师坐镇指导,而这一切都不需要付出金钱,只需要付出你的热情。即使荒腔走板了也不要紧。
      
      京昆社论坛:bj.netsh.com/bbs/87425
      
    8
    一边泡澡一边俯瞰故宫
      
      皇家驿栈最大的卖点就是它与皇帝寝宫乾清宫仅一墙之隔,登上露台就能俯瞰紫禁城风景。但我们真正要推荐你尝试的是它独一无二的特别设计,在露台最高点有巨大的按摩浴缸,如果你足够人来疯敢于在酒吧泡澡,一定要享受这种视野绝佳的露天spa。面对皇宫美景,品着鸡尾酒,沐浴着玫瑰花瓣,放眼望去,好似城池就在脚下。东城区骑河楼街33号(6523 6877 / 6526 5566),24小时营业,露天浴缸220元/小时。
      
    9
    加入“黑社会”,变身“黑道中人”

         当你还在觉着以白为美,当你还在觉着一白能够遮三丑的时候其实你已经落伍了,现在的明星潮人们,绝对是以拥有一身古铜肤色,黑的媲美东南亚人的肤色而引以为傲!阳光、沙滩,性感的比基尼,不用在斥巨资去买机票定酒店大老远的跑到海边去日光浴了,现在流行的是用机器晒!伴着动感的hip hop音乐十分钟左右就让你轻松拥有一身古天乐一样的性感古铜肤色。  

    “黑社会古铜日晒中心”朝外大街朝外soho A座706室(59002210)


    10
    上刘宅食府学做北京烤鸭
      
      吃烤鸭是北京生活的传统项目,但只是去全聚德叫一只烤鸭未免也太无聊了。藏在老胡同里的刘宅食府,和谭家菜齐名,京味儿美食全有,烤鸭过程开放供顾客观看,师傅还传授心得,全程告诉你烤鸭是怎么一步一步“炼”成的,从打气到打糖、晾皮、灌水、烤制,师傅们都带你过一遍。东城区美术馆东街蒋家大院胡同8号(6400 5912),10:30-23:00,学习的收费价格根据人数等情况而定。
      
    11
    去故宫后门跳一次大舞
      
      日下柳梢头,人约黄昏后。刚送走游客冷清下来的故宫后门又变得人山人海,一群上了年纪的舞蹈爱好者们,和这里的黄昏有个约会。“蹦擦擦、蹦擦擦。”别愣着了,一块儿上吧!也许你觉得在街上跳舞不稀奇,但别忘了这紫禁城后门的宝地可不是哪儿都有。何况这样的大舞也并非全是离退休老干部自娱自乐,个中不乏高手。不知深浅的来扎场子,没准就得臊眉耷眼儿下场了。知道著名的“北京平四”吗?曾经在十年前横扫全国舞蹈大赛无敌手。而它就诞生在军博广场的大舞中。
      
    12
    沿着“中国的莱茵河”骑马
      
      和在草原上驰骋相比,河边骑马似乎更有小情小调。潮白河有个好听的名字“中国的莱茵河”,咱们有几个在莱茵河边骑过马呀,但沿着中国的莱茵河骑马就很容易实现。迎着风穿过草地、河流、树林……赶紧忘了自己是花钱计时计圈来过瘾的吧,就把自己当成是这儿的庄园主好了!“管家”和“仆人们”已经在周边农家院备好了乡村晚宴,而且价格也不贵。
      
      顺义县马坡乡乡村赛马场(69401499),9:00-18:00,骑马自娱20元/圈。
      
    13
    好园宾馆重寻四合院风情
      
      北京保存得完好的四合院大多被购为私宅,剩下的几乎都是“闲人免入”的大杂院。好园宾馆所在四合院始建于清末,是老北京典型的二进式四合院,外院由北房、东西厢房构成,入垂花门为内院,正房与东西厢房用抄手回廊连接。这里曾是清朝大太监李莲英的外宅,爱国名将张自忠也曾在此居住,解放后帅孟奇、邓颖超、康克清等都曾来此办公,为这个院子增添了不少神秘厚重的历史气息。
      
      东城区史家胡同53号(6512 5557),奥运期间预订带明清架子床的小豪华套客房1000元/ 晚,加床300元/晚,需至少住满5天。
      
    14
    潘家园“鬼市”淘宝
      
      常言道,无利不起早,想在潘家园花小钱淘到真宝贝,就不能错过周末天亮前的潘家园“鬼市”。“鬼市”始于明末清初,据说一些贵族家道中落要变卖家产,面子又拉不下来,为躲避熟人,也只好到这里偷偷摸摸捧着古董站街,大清早管理不严,来路不明的物品也比较容易脱手。“鬼市”上以文化产品为主的玩意儿确实都是平时难得一见,就算不为发财,市面没有的旧书,拿回去看看咱也长长见识。
      
      想淘出尖儿货,首先你得当自己是一呵大筐、捡破烂儿的,穿得越艰苦朴素越好,最好脚下再蹬双老头鞋,手里再提一黑塑料袋。低调,再低调点!最重要的是要有丰富的历史、文化和收藏知识。看到好东西不要急于表现出来,尽量跟商户砍价。收藏界有条不成文的规矩,那就是你情我愿、钱货两清。你要是买了觉得后悔或者上当,对不起,算您活该。在潘家园即使玩了一辈子鹰的玩主都有看走了眼的时候,更何况菜鸟?所以心态很重要,别光想着升值发大财,抱着一颗平常心也许会有惊喜。
      
      朝阳区潘家园路华威里18号,周六、周日两天凌晨4点左右开始。
      

    15
    在中央电视塔下看海逗企鹅
      
      虽说北京不是沿海城市,但这并不妨碍我们的看海之旅。去中央电视塔的人一般都会往上爬,其实你也可以往下钻,下面就是一片“海”。徜徉在 8000多平方米的太平洋海底世界,如潜游在海洋里,身边游动着数百种海洋生物,另外一大特色项目是企鹅馆,内有世界濒危保护动物虹氏环企鹅。当然,一般海底世界都有的动物表演也少不了。
      
      海淀区西三环11号中央广播电视塔下(6846 1172),8:30-17:30,成人票75元,儿童票50元。
      
    16
    工厂里看熊猫
      
      熊猫可不都是在动物园里看的。在798艺术工厂,最近因为抵制《功夫熊猫》雷翻众生的赵半狄开了一家Bandi Panda,里面能看到成堆的非典型熊猫:大大小小的以五环颜色为主题的5只奥运熊猫,大有抢五福娃风头之嫌疑;以各种社会角色为形象的灰色熊猫Tee,如城管、二奶、法官,充斥着拧拧的颠扑不破的恶搞精神;头上趴个熊猫的赵半狄本人也是一件熊猫作品。好吧,我们也承认这个店确实比较“二”,但正因为如此,逛一逛就当玩了把行为艺术。
      
      朝阳区大山子798艺术区Bandi Panda(8459 9767),11:00-19:00。
      
    17
    去人艺看场最北京的话剧
      
      来了首都不来北京人艺看一场《茶馆》真是有点妄虚此行。从首演至今,《茶馆》走了半个世纪,早已成了代表北京和当代话剧的文化符号。这传统大戏也不是什么时候都能看得着,咱是托世界人民的福,人艺才把8、9月的档期特意为传统剧目开道。除了《茶馆》,同期再度搬上舞台的还有《天下第一楼》、《雷雨》等经典大戏,濮存昕、宋丹丹新等人艺明星一网打尽。不过一定记得,要提前订票,容纳1200人的首都剧场,此次极有可能提前面临“票荒”。
      
      东城区王府井大街22号,《天下第一楼》8月5日至17日每日 19:30,《茶馆》8月22日至31日每日 19:30,《雷雨》9月5日至20日每日 19:30,订票电话:6525 0996,6524 9847, 6525 0123。
      
    18
    智化寺感受音乐活化石
      
      智化寺京乐被认为和五台山青黄庙音乐、福建南音、西安城隍庙鼓乐、开封大相国寺古乐一样,同属中国最古老的乐曲,是音乐的“活化石”。传承 560多年的智化寺京乐,完整保存了传统音乐的风貌。智化寺京乐以口传心授法,现存的乐谱大多都是明代独有的记谱法记录,极其珍贵。目前演出的为第二十七代乐僧组成的12人阵容。京乐演奏每天四场(9:00,10:00,11:00,15:00),每次15分钟。
      
      东城区禄米仓胡同东口,票价20元(学生半票)。
      
      
    19
    在北大未名湖畔野餐
      
      
      可能除了清华的师生,没人会否认北大燕园的风景。而燕园中最美的景致当然是未名湖。未名湖的得名,应拜当年国学大师钱穆所赐。未名湖区湖光塔影,飞阁流丹,题词碑刻随处可见。挑一个风和日丽的日子,携几位好友来此野餐,想必是不错的选择。坐在湖心岛的石舫上,大快朵颐,美食与口水齐飞,笑容共彩霞一色。如果你热情好客,最好莫忘了邀请路人共同赴宴,说不定哪天就能指着电视里的著名学者跟朋友吹嘘:那谁谁,那天我们还划拳来着。
      
    20
    瑞蚨祥做旗袍中山装
      
      伊夫·圣·洛朗那句“你永远也不知道橱窗里挂的那件外套,在你伸出胳膊的时候是否与你的肘部契合”让高级订制被多金的潮人钟情。而即使沧海桑田,138年的瑞蚨祥订做的中山装和旗袍依然品质不变。只是各位绅士淑女得多豁出来点功夫,订做是件典型的慢工出细活。您可别指望第一次试穿成品就能满意百分百,那才是不负责呢。等过了一个多月,老师傅肯定包您满意。
      
      东城区王府井大街190号(6523 2807),宣武区大栅栏街5号(6304 1702)。
      
    21
    分文不花私享苹果服务
      
      7月19日,传闻已久的中国首家苹果官方零售店总算如期开幕。与其说这是一座商店,不如说是一个为苹果粉丝建立的俱乐部。如果你以为贴身的私人服务是花上大把银子买奢侈品的有钱人玩意,苹果就会颠覆你的成见。这里提供免费的私人购物,只需在网上提前预约时间,然后你大可以分文不带地进去,专家将全程陪同、解答一切疑问,让你随意试用所有苹果产品,关键是,你根本不必有花钱的压力,苹果承诺你无须负担购物的义务。
      
      朝阳区三里屯路19号院三里屯Village 6号楼(6419 8900),10:00-22:00。
      
    22
    黑暗餐厅约会网友
      
      担心网友见面“见光死”,那就到伸手不见五指的餐厅约会。巨鲸肚黑暗餐厅是北京的第一家黑暗餐厅,吃饭时因为看不到彼此,所以多了不少乐趣和未知感。如果有什么不太好说出口的话,在这个黑灯瞎火的地方也能大胆说出来,不怕对方会看到你尴尬的表情。当然,这里的服务生都经过专门培训,并且佩戴夜视镜,不用担心服务问题。
      
      朝阳区东三环中路39号建外SOHO西区十号楼三层1037(5900 0343)
      
    23
    灯市口中国书店淘旧书
      
      如果你半夜起不来赶不上潘家园的“鬼市”,或者就认准了正版旧书,那还是去中国书店吧。它的多个分店又以灯市口门市部最亲切:旧书非常多,总会有好书,特别是工具书超便宜。淘书的乐趣也许就在多看少买、零敲碎打最后一看也不少银子的循环之中。顺便提一下,这家店往北的演乐胡同里面,有一处中国书店的库房,不对常人开放,但是经营批销,寻上门去总会有惊喜的。
      
      东城区东四南大街122号(6525 7562)。
      
    24
    国子监上“私塾”
      
      国子监是过去的最高学府,堂堂的各科状元都得从这里走出去。今天想体验国学文化,不妨来这条街上的一承茶社。这个古色古香的四合院里除了品茶弹古琴,还开设国学、古典文化的课程,老板称其为“私塾”。老师来头可不小,都是各个大学、研究机构的专家,定期开班,每个班人数约20人。讲授的内容并不是四书五经的枯燥东西,而是偏重于有趣味的传统文化知识,比如戏曲、相声、古建筑等。因为上课都是免费,所以要提前报名,否则人太多,会错过机会。
      
      
      东城区国子监街八号(8402 6424)。
      
    25
    探险朝内81号
      
      
      朝阳门内大街81号,这个隐没在闹市区的废弃楼房是北京著名的鬼楼。相传它是1900年左右由皇帝赐给英国人建的教堂,后来因为战争停工而废弃。关于朝内81号的各种诡异传闻此起彼伏,许多探险爱好者都希望一探究竟。想想在一个月黑风高的夜晚,悄悄溜进朝内81号,会有什么奇怪刺激的事情发生呢?这个谜底就留待给你亲自揭晓吧。其实81号楼还是一个很有历史文物价值的老楼,它的传统建筑风格也可以好好参观。但现在门口有保安把守,想混进去需费些脑筋。
      
    26
    去阿道串烧工房吃烤翅
      
      有名的阿道串烧工房,所有店都紧邻学校,传媒大学西街,二外北门,还有交通大学和财经大学旁边的四道口,一边享受烤翅和特色烤面包,还可以看看学生们的聚会,没准还能碰到心仪的女生。  
      阿道串烧工房(四道口) 010-62110911 传媒大学 010—65791920

      
    27
    单向街听文青知道分子瞎贫
      
      单向街不是街。这家圆明园边、柴扉深处的画廊式图书馆,因为每周末安排了多场讲座、读书会、电影放映等活动已经成为体验北京文化氛围的好地方。找个周末逛到这,迎接你的除了藩篱、绿草、咖啡、露天躺椅上那本《那些忧伤的年轻人》,还可以近距离对话陈丹青、刘小东、梁晓声、严歌苓、费大为他们中的某位,当然也有可能是田原、张悦然或者春树。于是“我不在单向街便在去单向街的路上”这句话便也显得不那么矫情了。
      
      海淀区圆明园东门内北十二间院左右间设计之单向街图书馆(6257 0357)。
       
    28
    电影学院看美女
      
      想看美女了,别不好意思,刷卡四毛,坐671或者375到蓟门桥北,全国的美女都在北京电影学院扎堆儿。假如你脸皮薄,那就给自己加点道具—— 甭管多热天穿个大马甲,再戴上棒球帽加大墨镜,如果你天然就留着大胡子那就更好了,手里再假模假式拿本《与安东尼奥尼一起的时光》之类作掩护,或是举着个 DV也成,在这里没人在意你拍的是什么!我们推荐的最佳观测点是主教学楼下,所有院系都在这儿安排了课,大可以看着美女昂首挺胸鱼贯而出,有充分时间分析她们的美丽类型和指数。
      
      海淀区西土城路4号。
      
    29
    四联理发店剪个复古头
      
      在这个复古很“潮”的时代,四联理发店完全可以用“潮爆”来形容。它在50年代由周恩来亲自安排、从上海迁来四家最好的理发店联合组建,在70 年代末是北京的潮流风向标。如今,这里从环境到服务还跟50年前一模一样。老式的理发椅,80年代风格的装饰,走进去好似时光倒流。理发师傅是一水儿的阿姨老伯,白底儿蓝边儿的制服,进门就递上擦脸的手巾板儿,说话一定“您字开头,请字开口”。当然,他们最擅长的也是一些比较老的发型。所以来这儿剪个稀罕的复古头,那范儿绝对正点。建议男生大胆试试《我的父亲母亲》里的那个父亲的头型,女生弄个《排球女将》里小鹿纯子一边一个小辫的披肩发。
      
      东城区王府井大街188号(6525 2541)。
      
    30
    大栅栏DIY一套皮影
      
      北京如今演皮影戏的地方已经不多了,在前门的龙在天皮影俱乐部不仅有常年的皮影戏演出,更妙的是还有皮影DIY服务。堂内坐着民间皮影老艺人,在他们的帮助下你可以亲自动手操作、演示皮影人物动作,把电视剧《大明宫词》的情景变成“皮影版”。若赶上你心灵手巧,老师傅还会手把手教你雕刻皮影人。花个50元,先进场看出《武松打虎》或《宝莲灯》,再找师傅帮着刻个老虎或沉香。当然,五个福娃和卖拐的赵本山师傅也通吃。
      
      
    宣武区前门大栅栏步行街7号,同仁堂斜对面京华聚宝城内(8315 2311 136 2139 9612)
      
      
    31
    一日看尽老北京绝活儿
      
      天桥繁华已逝,在没有庙会的时候上哪儿找天桥的老北京民间绝活?朝阳剧场是一个选择,滚杯、晃板、绸吊、转碟等杂技能一次性大饱眼福。除此之外,以保留多项天桥民俗著称的华声天桥从华威桥搬迁到高碑店后也将于近期开张,这儿保留了双枪刺咽喉、钢刀拉腹、钢板击头、双脚蹬缸、吞铁球、吞宝剑、牛骨数来宝、变脸、舞狮、耍中幡、撂跤等40多项天桥绝技。
      
      朝阳剧场,朝阳区东三环北路36号(5166 4511),每日两场(17:15,19:15)。
      
    32
    登白塔一览内城风景
      
      北海公园大部分人都去过,但很多人都错过了一处绝美的风景。到了北海,切记要登上公园的制高点——琼岛白塔。登上顶层(10元),你就会发现:原来,只要多上几层楼,风景就是不一样啊!花上不知道多少个小时才能跑遍的北京城,尽收眼底。尤其当你把视线往近处的故宫方向望去,所谓气势恢弘就是这般。而且这里的视线比俯瞰京城的传统据点景山开阔不少。
      
    33
    玲珑塔放风筝
      
      “玲珑塔来塔玲珑,玲珑宝塔第一层。一张高桌四条腿,一个和尚一本经,一个铙钹一口磬,一个木鱼一盏灯。一个金钟,整四两,风儿一刮响哗楞……”北京人没有不知道这段绕口令的,可有幸真正听过玲珑塔晚钟的人却不多。带上风筝,从首师大北面的玲珑路一直西行,到昆玉河畔西八里庄,身旁是潺潺流水,远处是塔上的玲珑动静。近500岁高龄的玲珑塔檐角挂有风铃3000多枚,由于风的强弱、长短、方向的变化,铃声也随之产生微妙的变化,清脆悦耳。在这种伴奏下,风筝都仿佛有了韵律。
      
    34
    在老莫吃一顿“阳光灿烂”的俄餐
      
      
      《阳光灿烂的日子》和《与青春有关的日子》里那两群过得十分不靠谱的青少年常常念叨一个地方:老莫。在那个年代,到莫斯科西餐厅吃顿丰盛的俄式大餐,听听忧伤的《莫斯科郊外的晚上》和激昂的《红莓花儿开》,瞄瞄丰满的红脸蛋俄罗斯服务员姑娘,是件顶有面子的事情。现在尝尝马小军、米兰吃过的红菜汤、酸黄瓜、冷焖牛舌,也许就找到了王朔、姜文、叶京,还有所谓“红色贵族”的记忆暗号。
      
     西城区西直门外大街135号(6835 4454),11:00-14:00、17:00-21:00。
      
    35
    寻访辅仁大学后花园
      
      民国初年建立的辅仁大学,其旧址至今仍被很多人认为是北京最美的大学校园,而教学楼北的后花园也被比做北京最美的公园。该地原为涛贝勒府, 1930年辅仁大学于府邸花园西院建了如今的教学楼。仅想象一下那时在亭台楼榭、古木繁花中琅琅读书,寒窗十年也不想叫苦。此处的有趣还不只它的王府背景,楼北的后花园是电影外景地。学生们下课时跟找厕所的葛优撞过满怀、为扮演张洪量的王洛宾客串过角色,还听说《手机》、《太阳照常升起》……都来过这里。如今这里是北京师范大学的分校区,门口多了严肃的门卫,如果你扮相已经很学生范儿了还被制止,可以眉头一紧说要去“方便”也能放行。当然周末门卫会和蔼很多。
      
      西城区定阜大街1号。
      
    36
    参加一次北京寻宝之旅
      
      探宝之旅是现在北京城里新兴的活动。你要是热爱户外运动,又有探险精神,那探宝之旅就太适合你了。每一次探宝都会有一个相关主题和设定的故事情节,你可以跟着同伴一起进入设定的情节,根据藏宝地图,开始扑朔迷离的探宝之旅。这个探宝过程会充满许多未知的情况,每一步都可能会把你带入错误或者正确的方向。如果你有兴趣,这里能碰到一帮热爱探宝的人,也有许多的主题探宝活动。
      
    37
    在长城脚下的公社看日出
      
      不到长城非好汉,但爬长城太老套了!你不如住进长城脚下的公社,在世界知名建筑师设计的别墅里住一晚,夜观山谷中漫天繁星,早上四五点便起床,徒步爬上长城,等待太阳喷薄而出,清晨的日光洒在连绵起伏的群山上,据那些到此处看过日出的人说,这个画面会是这辈子见过最有气势,最难忘的一个景象。既体验了美宅又欣赏了美景,比和无数游客挤着爬长城更有意境。
      
      
      八达岭高速路水关长城出口(8118 1888)。
         
    38
    琉璃厂玩鉴宝
      
      自打物美价廉的潘家园横空出世之后,逛琉璃厂更多地就成为了一种精神享受。不过潘家园“鬼市”的卑微地位决定了,要是鉴宝还得上琉璃厂。有充分闲工夫的时候,和戴着单片眼镜的师傅们盘盘道,如果实在闲得难受,不妨拿出自家宝贝请老师傅掌一眼。就算是真玩意儿,如果你摆出一副想出手的样子,十有八九他也会像旧日当铺里那样见人增寿、见物挫价。等这会儿,你再缓缓掏出国家的鉴定证书,在别人目瞪口呆中扬长而去,那叫一个帅!
      
    39
    老磁器口喝最臭的豆汁儿
      
      
      老北京小吃中,豆汁儿必须得单独书上一笔。因为老舍先生曾经写道:“看一个人是不是地道的北京人,就请他喝一碗豆汁儿。”到老磁器口锦馨清真豆汁店来上一碗,绝对有助于你彻底记住北京。看着灰绿色的黏稠液体从保温桶里打出来,带着“馊半街”的强烈味道,喝起来一股酸臭。如果你实在受不了,我们教你一招:挑上两丝儿芥末墩儿,小口小口地细品,慢慢地霉馊味就变得悠游回转;等喝到第二口的时候,醇绵的陈香渐渐散开;再嚼一口坚硬焦脆的焦圈,喝一口豆汁儿,这样周而复始,美妙的感觉才会充分释放。这时候别忘了支棱起耳朵,仔细往窗外听:“哎~豆汁儿~开锅!”
      
      
      崇文区天坛北门对面(6703 5725)。
      
    40
    德云社听相声
      
      天桥是昔日老北京的演艺中心,而今天因为德云社的存在,冷清了几十年又像从前那样“噫”声一片。传统相声有京卫二派之分,“天津小孩”郭德纲领衔的德云社,让你在京城地界也能一品120公里外那个相声窝子的精华。不过逢郭师傅上场的票尤其紧俏,想听的话可得抓紧订。
      
      宣武区北纬路甲1号(6304 0912),大厅20元/人,包间50元/人,8月1日至15日放假。
      
         
    41
    皇城根下寻访石头宫殿
      
      古代宫殿不稀奇,但全用石头建造的宫殿可不多见。沿南池子大街走到菖蒲河河沿,在皇城根的东南角,有一座独一无二的石头宫殿皇史宬。这座皇家档案库是中国保存最完好的古老档案库,今天的功用也一样当作中国第一历史档案馆。皇史宬全为砖石结构,不用木植,既有利防火,又坚固耐久。皇史收藏甚丰,但即使你不能徜徉在历史的汗牛充栋中,站在这座雄伟独特的石头宫殿前,也足以叹服。 
      
      
      东城区南池子大街南端路东(6526 0126)。
      
    42
    夜赏圆明园的荷花
      
      圆明园看荷花,这个活动太平常了,一点新意都没有,但只要加上“夜赏”两个字,意境就不一样了。圆明园都是每天下午6点关门谢客,咱就在5点左右买票进园子,然后偷偷躲在里面到6点也不出来,等到人去园空,硕大一园子的荷花随便你夜赏。夏夜的凉风,悠悠地刮着,听一池蛙鸣,赏半夜荷花,别忘了带点美食果腹。尽管晚上留在圆明园有些违反规则,但为了享受一个美好的夜晚,还是需要一点厚脸皮和钉子精神的。我们友情提示:你可别5点50分才去买门票,那样你的目的也忒明显了,肯定进不去,稍微提前一个小时左右最合适

  • java_Java中类名与.java文件名的关系【转】

    2009-09-04 17:15:48

     

    一个 .java 文件,可以有多个类,但是文件名只能有一个,用哪一个类名来充当文件名呢?

    其实文件名是无所谓的,因为将来用 javac 进行编译的时候,最终会生成多个 .class 文件,每一个类对应个 .class 文件。运行时只要运行对应的 .class 文件就可以了,这时 .java 文件就显得没什么用了( 运行时不需要 ),那还管它叫什么名字。

    但是当你的类被 public 修饰时,此时文件名必须和该类保持一致(例如 public class A{} 只能放在 A.java 文件中,不然在用 javac 编译时会提示错误:类 A 是公共的,应在名为 A.java 的文件中声明)。也就是说在同一个 .java 文件中,不应该出现2个或2个以上的 public class 。如果有一个public class 类,就应该让文件名和此类名相同;那如果没有呢,即所有的 class 都没有修饰符,那么可以给该文件随便起名字,甚至可以不和任意一个类同名,哪怕是汉字名称都可以,但是后缀还是要有.java 的 ( 哈哈,不信就试试 ) 。

    注:有很多初学者 ( 我也是 ) 可能会认为文件名应该也和 main 方法所在类有关系,其实不然。main 方法只是程序的一个入口,老师讲“一个程序只能有一个入口”,好象是在说只能有一个 main 方法,其实,只要你高兴,就可以在所有类里都写上 main 方法,给程序提供N多个入口,但是最后你运行程序的时候也只能从其中的一个入口进去,这就是 main 的作用( 程序入口 )。(这也就是为什么你会发现,程序员在做单元测试

    时,会往自己做的很多类里面添加 main 方法,因为他要为自己做的东西添加运行入口,从而能方便测试。)

     

    http://hi.baidu.com/sxczwxzl/blog/item/0fa9071890c923bc4bedbc0a.html

  • linux_在Linux下安装JDK和Tomcat 及Linux常用命令

    2009-08-28 17:36:13

     

    2009年8月28日 星期五 11时15分


    在Linux下安装JDK和Tomcat
    http://www.sudu.cn/info/html/edu/20070101/297416.html


    jdk 1.6下载地址:
    https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-6u16-oth-JPR@CDS-CDS_Developer
    https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter

    tomcat下载地址:
    http://apache.etoak.com/tomcat/tomcat-5/v5.5.27/bin/


    在Linux下安装JDK和Tomcat

     

    环境:Linux AS3U8
    安装软件:j2sdk-1_4_2_04 , Tomcat-5.5

    一、安装Tomcat需要先安装jdk。

    有不同方法的,本人均采用了第一种方法(已加蓝色),第二种方法未实施。

    首先下载JDK:
    http://java.sun.com/j2se/1.4.2/download.html


    提供了两个类型的下载:

    1、RPM in self-extracting file (j2sdk-1_4_2_04-linux-i586-rpm.bin)这个也是个自解压文件,不过解压后的文件是j2sdk-1_4_2_04-linux-i586-rpm包,执行rpm命令装到linux上就能了。
    安装如下:
    #chmod +x ./j2sdk-1_4_2_04-linux-i586-rpm.bin
    # ./j2sdk-1_4_2_04-linux-i586-rpm.bin
    # rpm -ivh j2sdk-1_4_2_04-linux-i586-rpm
    安装软件会将JDK自动安装到 /usr/java/j2sdk1.4.2_04目录下。

    2、RPM in self-extracting file (j2sdk-1_4_2_04-linux-i586.bin) 这个是自解压的文件,
    在linux上安装如下:
    # chmod +x ./j2sdk-1_4_2_04-linux-i586.bin
    # ./j2sdk-1_4_2_04-linux-i586.bin
    在按提示输入yes后,jdk被解压到./j2sdk1.4.2_04目录下。为和下面2中JDK安装路径一致,我们进行下列操作,在/usr/java下建立安装路径,并将文件考到该路径下:
    # mkdir /usr/local/java
    # cp -fr ./j2sdk1.4.2_04 /usr/local/java

    二、设置环境变量

    1.修改所有用户的环境变量 (需要重启才能生效,看不清的那个字符时冒号)
    # vi /etc/profile
    在该文件中加入:
    export JAVA_HOME=/usr/local/java/j2sdk1.4.2_04
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    一定要在CLASSPATH路径中加入$CLASSPATH:

    2.修改用户环境变量
    假设使用java的用户为 kunp,编辑该用户的.bashrc文件进行环境变量设置。
    # vi /home/kunp/.bashrc
    在 .bashrc文件中加入:
    export JAVA_HOME=/usr/java/j2sdk1.4.2_04
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

    3.安装成功的标志:
    [root@janbe root]# java -version
    java version "1.4.2_04"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b03)
    Java HotSpot(TM) Client VM (build 1.4.2_04-b03, mixed mode, sharing)

    安装重点:把环境变量设置好!

    三、安装Tomcat:

    把Tomcat解压到 /usr/local
    # tar xvzf tomcat-5.5.20.tar.gz
    # cd tomcat-5.5.20.tar.gz/bin
    # ./startup.sh

    Tomcat打开的默认端口是8080,打开
    http://localhost:8080
    ,就会看到已成功安装的提示页面
    ps 查看进程  ps -ef | grep java

    四、命令参考:
    VI编辑 :        按  i  进入编辑状态, 修改完毕,按  ESC ,  按  shift + :   ,输入 wq  ,会保存后退出编辑状态。
    复制命令:    cp    /root/software/tomcat-5.5.20.tar.gz    /usr/local
    复制并重命名文件:        cp    /root/software/a.txt    /usr/local/b.txt
    移动文件:    mv  /root/software/tomcat-5.5.20.tar.gz    /usr/local
    移动并重命名文件:    mv  /root/software/a.txt    /usr/local/b.txt
    查看文件:  cat a.txt  或者  more a.txt
    创建文件夹:  mkdir  test

     


    五、错误编辑RedHat profile文件导致系统不能登录的解决办法

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liucong/archive/2007/06/04/1637951.aspx
     
          在linux中安装jdk需要编辑 /etc/profile 文件,这个文件一但被错误设置就会导致系统不能登陆,具体症状为:登陆图形界面以后会弹出一个对话框 “您的回话只持续不到10秒种。。。。。。”,点击确定就又重新引导,但是还是不能顺利的登录图形界面。

        对于这个问题可以在命令行模式下把最近对 /etc/profile文件所作的修改去掉即可,具体操作如下:

       1。按 shift+ctrl+alt+F1进入命令行模式

      2。以root身份登陆

     3。按照下面的命令执行

          cd   etc   回车

         /bin/vi   profile     回车      (注意:在这里不那能用直接调用Vi  需要指定目录   即    /bin/vi   )

         上面两个命令可以打开 /etc/profile 文件,

         i     回车   (这是vi的插入操作命令)

        然后找到你最近修改过的内容,恢复原来状态或者事删除

        esc     :     wq    回车

       这时profile文件已经保存更新,重启系统即可顺利进入图形界面

     



    linux 常用命令:


    查看linux ip配置 : ifconfig
    查看历史命令 :  history
    查看共享文件夹: ls /mnt/hgfs/共享文件夹名

    cp命令还可以一次拷贝多个文件     $cp -bi dir1/* dir2        这样就把dir1以及其子文件拷贝到dir2中去了, -bi 为了避免覆盖

    查看目录下文件:   ls -al
    查看绝对路径:      pwd
    建立一个文件夹:  mkdir  dir1
    建立一个文件:   touch  file1      touch file1.java
    删除一个文件:  rm -f file1 
    删除一个目录:  rm -rf dir1

    切换用户
     su jack
     su root
     输入password


    touch test.txt  建立文件
    cat test.txt  查看文件
    vim test.txt  编辑文件
    要进行编辑操作时,先按  i ,就进入了编辑状态;
    退出编辑状态: 按 ESC ,此时可以自由移动定位光标,  H 左移  L右移  J 下移  K 上移  
    退出文本: 按ESC, 之后 Shift + :(冒号),进入命令行状态,  输入 q 不保存修改,退出; 输入 wq  保存修改,退出

    其他:  x 删除光标定位的字母   u 撤销上次操作
    还有很多。。。。。

     


    查看系统状态命令:  top         top -d3 -i >> status.txt



    各种解_压缩命令

        ---------------------------------------------
        .Tar.gz  文件类型
      解压:Tar zxvf FileName.Tar.gz
      压缩:Tar zcvf FileName.Tar.gz DirName

      .Tar  文件类型
      解包:Tar xvf FileName.Tar
      打包:Tar cvf FileName.Tar DirName
      (注:Tar是打包,不是压缩!)
      ---------------------------------------------
      .gz   文件类型
      解压1:gunzip FileName.gz
      解压2:gzip -d FileName.gz
      压缩:gzip FileName

      .Tar.gz 和 .tgz   文件类型
      解压:Tar zxvf FileName.Tar.gz
      压缩:Tar zcvf FileName.Tar.gz DirName
      ---------------------------------------------



    Linux系统下查看IP配置表2008-07-13 21:00配置IP地址:

    /etc/sysconfig/network-scripts/ifcfg-eth0

    里面的内容:
    [root@localhost network-scripts]# cat ifcfg-eth0
    DEVICE=eth0
    BOOTPROTO=none
    ONBOOT=yes
    TYPE=Ethernet
    NETMASK=255.255.255.0
    IPADDR=192.168.0.2
    USERCTL=no
    PEERDNS=yes
    GATEWAY=192.168.0.1

    配置完以后:
     /etc/init.d/network reload 或 service network

    查看网卡信息: route -n         查看物理网卡:mii-tool     重启eth0: ifup eth0
    查看eth0信息:ethtool eth0    添加IP地址:ifconfig eth0 IP netmask 子网掩码 broadcast 广播地址
     
      



    在windows Linux中查看 vmware 虚拟机的共享文件夹

    一. 安装vm tools: vm -》 Install vm tools 工具, vm可以自动完成;

    二. 设置共享文件夹: vm -> settings -> options -> share folders -> always enable;

    三. 仅以主机为windows,客户机分别为windows和linux为例:

    (1)windows客户机中:

    1 可以使用 Windows Explorer 访问共享文件夹 -> 系统中整个网络(NT核心客户操作系统里的网上邻居)下 -> VMware Shared Folders网络 -> 共享文件夹;

    2 直接在地址栏中输入 \\.host\Shared Folders 即可快速定位到共享文件夹;

    3 映射共享文件夹为一个驱动盘,就像网络共享一样:

    工具 -> 映射网络驱动器 -> 指定 驱动器 和 盘符。

    (2)Linux客户机中:

    在Linux虚拟机中,共享文件夹出现在/mnt/hgfs目录里。

     


     


    http://www.programfan.com/blog/article.asp?id=38023

    jdk for linux


    1. 安装

    chmod +x jdk-1_5_0_08-linux-i586.bin

    ./jdk-1_5_0_08-linux-i586.bin

    chmod +x jdk-1_5_0_08-linux-i586.rpm

    rpm -ivh jdk-1_5_0_08-linux-i586.rpm

    2.设置环境变量。

    #vi /etc/profile

    在最后面加入

    # java ......................
    JAVA_HOME=/usr/java/jdk1.5.0_08/
    CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/lib.dt.jar
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME CLASSPATH PATH
    保存退出
    按esc
    :wq
    3.用户使用

    vi /etc/profile.d/java.sh
    JAVA_HOME=/usr/java/jdk1.5.0_08/
    CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/lib.dt.jar
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME CLASSPATH PATH
    保存退出
    按esc
    :wq

    chmod 755 /etc/profile.d/java.sh

    4.执行所有的命令

    source /etc/profile

    source /etc/profile.d/java.sh

    5.测试JAVA是否安装

    java -version
    redhat9.0重新起动后才可以给所有终端使用信的环境变量(其它方法不知道).

     

     

  • jmeter_distributed_testing : jmeter分布式测试

    2009-08-10 14:03:38

     

      好久没写了,加油。。。。

      loadrunner可以很容易实现分布式测试,就是多台压力机同时对服务器施压,
    那在Jmeter中怎么实现呢,下面就来看看吧:

    jmeter参考文档写的很多,其实就是几步的事:

    1.确保主控机和受控机中jmeter都可以正常启动,关闭防火墙等

    2.启动受控机中bin目录下的jmeter-server.bat

    3.找到主控机bin目录下的jmeter.properties
      在这个文档里找到 remote_hosts=127.0.0.1 这一行
      将IP地址改为受控机的IP地址,多个IP地址中间用逗号分隔
      例如将其改为: remote_hosts=192.168.1.110,192.168.1.111

    4.设置完成后,启动主控机bin目录下的 jmeter.bat
       选择你要执行的脚本,并设置好,
       可以在  "运行---->远程启动--->受控机IP"  中远程启动受控机运行和主控机同样的脚本和设置。
       多个受控机,可以使用 "运行---->运程全部启动"   启动全部受控机
       可以 "运行 ---->  启动"  启动主控机

    5.你已经可以用jmeter做分布式测试了,呵呵。。。

    以上为windows上的步骤,其他系统下大同小异。

     

    您可以参考jmeter自带的文档:

    jmeter_distributed_testing_step_by_step.pdf

  • mysql入门_安装及初步操作

    2009-08-10 13:54:49

     

     

    安装mysql的安装版
    进行初步设置,设置了自己的密码,设置了bin目录到path环境变量下
    这时mysql已安装成windows系统服务:
    ----------------------------------------------------------
    启动命令:
    net start mysql
    关闭命令:
    net stop mysql

    ------------------------------------------------------------------
     登录: mysql -hlocalhost -uroot -proot
    -------------------------------------------------------------------
     其他:show databases; use mysql; show tables; select user,password from user;
     ---------------------------------------------------------
    --打开数据库
    use test;
    --删除表
    drop table person;
    --创建表
    create table person
     (
       id int not null AUTO_INCREMENT primary key,
       name varchar(20) not null,
       sex varchar(2) not null,
       age int not null,
       address varchar(30) not null 
     );
    --查看表结构
    desc person;
    --插入数据
    insert into person(name,sex,age,address) values('张三','男',20,'北京');
    insert into person(name,sex,age,address) values('李四','男',25,'天津');
    insert into person(name,sex,age,address) values('王五','女',30,'上海');
    insert into person(name,sex,age,address) values('赵六','男',21,'南京');
    insert into person(name,sex,age,address) values('孙七','女',40,'武汉');
    insert into person(name,sex,age,address) values('吴八','男',35,'西安');

    --提交事务
    commit;

     

    --查找全部数据
    select * from person;
    --按id查找数据
    select * from person where id = 1;
    --按id删除数据
    delete from person where id = 1;
    --验证
    select * from person where id = 1;
    --删除全部数据
    delete from person;
    --验证
    select * from person;
     
    --提交事务命令
    commit;
     
    --------------------------------------------------------------------
     
     退出mysql输入状态命令: quit
    ----------------------------------------------------------
     
     
     -------------------------------------------------
      其他的启动和关闭方法,先不用管了
      数据库环境已经搭建好了,先用着吧
      -------------------------------------------------
      mysql设置了密码和不设置密码有些启动关闭命令不一样
      mysqld --console
     其他停止服务的方法:
     mysqladmin -hlocalhost -uroot -proot stop

    ------------------------------------------------
     
     
     当然你也可以不用安装版的,
     复制免安装版的,
     区别就是,自己配置、修改一个my.ini文件
     你也可以试试自己修改。。。
     
     ------------------------------------------------
     eclipes 快捷键
     
     Ctrl + /    注释多行和取消注释多行   // //
     Ctrl + Shift + /    注释多行和取消注释多行  /*  */
     Ctrl + Shift + \
     
     
     
     -------------------------------------------------
     Hibernate操作数据库:
     
       Session session = new Configuration().configure().buildSessionFactory().openSession();
      //String hql = "FROM Person AS p WHERE p.name=?" ;
      String hql = "FROM Person AS p " ;
      Query q = session.createQuery(hql) ;
      //q.setString(0, "张三") ;
      List all = q.list();
      Iterator iter = all.iterator();
      while (iter.hasNext())
      {
      System.out.println(((Person)iter.next()).getAge()) ;
      }
     

  • it's not the time..

    2009-08-07 18:45:26

    obvious

    i'm not Self-confident

    i'm afraid

    so

    although i want to have a date intensely

    although that may be a good chance

    i have to give up

     

    man as i should be Realism

    money is import in this  society

     

    maybe this is a long and rough way

    i have no choice but facing it bravely

     

  • Jmeter 自定义测试代码及插件编写

    2009-08-04 01:10:13

  • 不快乐

    2009-08-03 21:48:13

     

    今天下班,坐在公车上,感到很不快乐。

    孤单一个人,也许,做什么都不会快乐

     

    昨天听同学讲,三姐妹的悲伤爱情故事。。。。。

    听她讲曾经的爱情与背叛,曾经的执着与现在的无所谓。。。。

     

    刚才与以前的同事聊天

    同事说她要结婚了,我只能摇头笑笑。。

     

    最近上班也不是很开心,更多的是我自己的感觉,并非谁欺负我。

    一向乐观的我,也感觉到在北京生存的巨大压力。。

     

    我还是喜欢冒险,喜欢尝试,喜欢看喜剧,相信人的善。。。

    我相信我会开心、快乐,

    我不想使生活变得复杂。。。。

    简单、快乐。。

     

  • 小布老师出Oracle性能调优的视频了。。。才知道。。

    2009-07-21 18:07:35

     

    播布客

    http://www.boobooke.com/bbs/tag.php?name=%D0%A1%B2%BC%C0%CF%CA%A6

     

    一时半会估计也看不上,基础还没打好。。。

    Oracle 数据库。。。。 Go go go 。。。

  • 一个不错的博客:卖烧烤的鱼测试博客

    2009-07-21 18:01:53

     

     

    以下均为转载:

    地址:

    http://www.cnblogs.com/mayingbao/archive/2006/04/17/376800.html

     

     

    [原创]性能测试之“Windows性能监视器”

      [原创]性能测试之“Windows性能监视器”

    Windows性能监视器

    以下用Winxp中的“Windows性能监视器”为例说明:

    打开控制面板->管理工具->性能->性能日志和警报,如下图所示:

    方法1:动态监视

    点击右键后,选择“添加计数器”如下图所示:

     

    添加计数器窗口中,选择性能对象为“Process” 其它设置为默认设置;设置完毕,点击添加按钮,关闭窗口,即可实时监视选中的参数。

    方法2:计数器日志跟踪

    打开控制面板->管理工具->性能->性能日志和警报->计数器日志->新建日志设置

    设置新建日志名“TopView_V1.0.0.0_PerLog_20060215

    设置日志监视的对像和计数器,如设置性能对像“Processor”,列表选择计数器“% Processor Time

    备注:“% Processor Time 指处理器用来执行非闲置线程时间的百分比。计算方法是,测量范例间隔内非闲置线程活动的时间,用范例间隔减去该值。(每台处理器有一个闲置线程,该线程在没有其他线程可以运行时消耗周期)。这个计数器是处理器活动的主要说明器,显示在范例间隔时所观察的繁忙时间平均百分比。这个值是用 100% 减去该服务不活动的时间计算出来的。

    设置日志文件,如“日志文件类型”,选择“文本文件(逗号分隔)”;

    备注:性能日志和警报以逗号分隔或制表符分隔的格式收集数据,以便容易导入电子表格程序,为面准备数据分析准备,所以启用此方式!

    设置计划,如时间按下面所列出

    设置成功,确认后如下图所示:



    数据分析

    在C:"PerfLogs打开日志”TopView_V1.0.0.0_PerLog_20060215_000001.csv”

    选择Excel中的“插入”->“图表”->“折线图”,如下图所示

     

     

     

     

     

     

     

     

    [原创]什么是性能测试?

    [原创]什么是性能测试?

    以下是Wikipedia中的解释:

    Performance testing
    From Wikipedia, the free encyclopedia

    Jump to: navigation, search

    http://en.wikipedia.org/wiki/Performance_testing

     

    Performance Testing covers a broad range of engineering or functional evaluations where a material, product, system, or person is not specified by detailed material or component specifications: rather, emphasis is on the final measurable performance characteristics.

    Performance testing can refer to the assessment of the performance of a human examinee. For example, a behind-the-wheel driving test is a performance test of whether a person is able to perform. the functions of a competent driver of an automobile.

    In the computer industry, software performance testing is used to determine the speed or effectiveness of a computer, network, software program or device. This process can involve quantitative tests done in a lab, such as measuring the response time or the number of MIPS (millions of instructions per second) at which a system functions. Qualitative attributes such as reliability, scalability and interoperability may also be evaluated. Performance testing is often done in conjunction with stress testing.

    为什么要进行性能测试呢?

    性能测试的目的是验证软件系统是否能够达到用户提出的性能指标,并发现应用程序中中存在的性能瓶颈,如:如资源争用或运行速度慢的代码。然后通过性能调优,达到优化系统的目的。

     

    性能测试的目标是什么?

    以下是Robert W. Buchanan, Jr 的《The Art of Testing Network Systems(John Wiley & Sons, Inc., 1996) 中对此有详细描述。

    性能测试目标

    性能测试目标例子

    度量最终用户的响应时间

    完成一个业务流程需要多长时间?
    如:10用户同时登录,多长时间服务器可以返回数据!

    定义最佳硬件配置

    哪一种硬件配置可以提供最佳性能?

    检查可靠性

    系统无错误或无故障运行的难度或时间长度是多少?

    查看硬件或软件升级

    升级对性能或可靠性有何影响?

    评估新产品

    应选择哪些服务器硬件或软件?

    度量系统容量

    在性能没有显著下降的情况下,系统能够处理多大的负载?

    确定瓶颈

    什么因素导致响应时间延长?

     

    在实施性能测试过程中,应制定性能测试目标来。为了提供评估基准,应明确区分可接受和不可接受测试结果的标准。

    例如:

    比较模糊的性能测试目标:新产品要上线,请选择web服务器的硬件。

    明确的性能测试目标:新产品要上线,在一台 HP 服务器和一台 NEC 服务器上运行同一个300 个虚拟用户。当 300 个用户同时浏览 Web 应用程序页面时,确定哪一种硬件的响应时间更短。

     

     

    性能测试应贯穿于整个软件产品生命周期中,以下是与各阶段相关联的关系:

    产品计划和设计

    产品开发

    产品部署

    产品上线生

    产品升级

    评估新产品

    度量响应时间

    检查可靠性

    度量响应时间

    检查硬件或软件升级

    度量响应时间

    检查最佳硬件配置

    度量响应时间

    确定瓶颈

    度量系统容量

     

    检查硬件或软件升级

    度量系统容量

     

     

     

    检查可靠性

     

     

     

     

    如果你明确了具体的性能目标后,可以开始进行测试,确定应用程序是否满足这些要求。通常性能测试假定这些应用程序稳定、可靠地运行。因此,在性能测试中应最大限度的减少影响性能测试的条件。例如,代码中的错误可以导致出现性能问题,甚至掩盖性能问题。所以要精确地比较不同性能测试的结果,应用程序必须正确地工作。如果调整过程修改了组件的实现,则重新测试应用程序的功能尤其重要。应用程序必须通过功能性测试后才可以测试性能。除了应用程序更改外,硬件、网络通信量、软件配置、系统服务等诸多方面也会发生意外的更改。控制应用程序更改很重要。

     

     

    还有一个测试过程改进的文章也很好。。。。

     

     

     

     

  • 如何把证书导入java中的cacerts证书库

    2009-07-17 17:09:28

     

    在项目开发中,有时会遇到与SSL安全证书导入打交道的,如何把证书导入java中的cacerts证书库呢?
    其实很简单,方法如下:

    每一步:进入某个https://www.xxx.com开头的网站,把要导入的证书下载过来,

        在该网页上右键 >> 属性 >> 点击"证书" >>

        再点击上面的"详细信息"切换栏 >>

        再点击右下角那个"复制到文件"的按钮

        就会弹出一个证书导出的向导对话框,按提示一步一步完成就行了。

        例如:保存为abc.cer,放在C盘下


    第二步:如何把上面那步的(abc.cer)这个证书导入java中的cacerts证书库里?

        方法如下

        假设你的jdk安装在C:\jdk1.5这个目录,

        开始 >> 运行 >> 输入cmd 进入dos命令行 >>

        再用cd进入到C:\jdk1.5\jre\lib\security这个目录下

        敲入如下命令回车执行

        keytool -import -alias cacerts -keystore cacerts -file d:\software\AKAZAM-Mail.cer -trustcacerts

        此时命令行会提示你输入cacerts证书库的密码,

        你敲入changeit就行了,这是java中cacerts证书库的默认密码,

        你自已也可以修改的。



        ok,大功告成!
    以后更新时,先删除原来的证书,然后导入新的证书
    keytool -list -keystore cacerts
    keytool -delete -alias akazam_email -keystore cacerts
    keytool -import -alias akazam_email -file akazam_email.cer -keystore cacerts -trustcacerts
  • Tomcat6配置使用SSL双向认证

    2009-07-17 01:04:04

     

    http://www.javaeye.com/topic/120780


    Tomcat6配置使用SSL双向认证

    最近要做一个登录时数字证书验证的功能,在用户登录时除了效验用户名密码,还需验证其数字证书。

    相关资源:IBM developerWroks中国中的tomcat4中使用SSLjavaeye中的Acegi X.509双向认证

    tomcat4中使用SSL中的异同:jdk1.4中已经包含JSSE。

    AcegiX.509双向认证中的异同:tomcat6配置文件多了SSLEnabled="true"属性。

    1.生成CA证书。目前不使用第三方权威机构的CA来认证,自己充当CA的角色。

    1.创建私钥 :C:\OpenSSL\apps>openssl genrsa -out root/root-key.pem 1024
    2.创建证书请求 :C:\OpenSSL\apps>openssl req -new -out root/root-req.csr -key root/root-key.pem
    3.自签署证书 :C:\OpenSSL\apps>openssl x509 -req -in root/root-req.csr -out root/root-cert.pem -signkey
    root/root-key.pem -days 3650
    4.将证书导出成浏览器支持的.p12格式 :C:\OpenSSL\apps>openssl pkcs12 -export -clcerts -in root/root-cert.pem -inkey
    root/root-key.pem -out root/root.p12


    2.生成server证书。

    1.创建私钥 :C:\OpenSSL\apps>openssl genrsa -out server/server-key.pem 1024
    2.创建证书请求 :C:\OpenSSL\apps>openssl req -new -out server/server-req.csr -key server/server-key.pem
    3.自签署证书 :C:\OpenSSL\apps>openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey
    server/server-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650
    4.将证书导出成浏览器支持的.p12格式 :C:\OpenSSL\apps>openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey
    server/server-key.pem -out server/server.p12


    3.生成client证书。

    1.创建私钥 :C:\OpenSSL\apps>openssl genrsa -out client/client-key.pem 1024
    2.创建证书请求 :C:\OpenSSL\apps>openssl req -new -out client/client-req.csr -key client/client-key.pem
    3.自签署证书 :C:\OpenSSL\apps>openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey
    client/client-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650
    4.将证书导出成浏览器支持的.p12格式 :C:\OpenSSL\apps>openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey
    client/client-key.pem -out client/client.p12


    4.根据root证书生成jks文件

    C:\OpenSSL\apps\root>keytool -import -v -trustcacerts -storepass password -alias root -file root-cert.pem
    -keystore root.jks


    5.配置tomcat ssl,修改conf/server.xml。tomcat6中多了SSLEnabled="true"属性。
    keystorefile, truststorefile设置为你正确的相关路径

    xml 代码
     
    1. <connector secure="true" scheme="https" protocol="HTTP/1.1" port="8443"      
    2. sslenabled="true" maxhttpheadersize="8192" maxthreads="150"      
    3. minsparethreads="25" maxsparethreads="75" enablelookups="false"      
    4. disableuploadtimeout="true" acceptcount="100" sslprotocol="TLS"      
    5. clientauth="true" keystorefile="d:/path/bin/x509/server.p12"      
    6. keystoretype="PKCS12" keystorepass="123456" truststorefile="d:/path/bin/x509/root.jks"    
    7. truststoretype="JKS" truststorepass="123456"/>    


    6.将root.p12,client.p12分别导入到IE中去(打开IE->;Internet选项->内容->证书)。

    root.p12导入至受信任的根证书颁发机构,client.p12导入至个人

    7.访问你的应用http://ip:8443,如果配置正确的话会出现请求你数字证书的对话框。
    8.在jsp中取得符合x.509格式的证书

    java 代码
     
    1. <%      
    2.         //获得certificate chain     
    3.         X509Certificate[] ca=(X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate");     
    4.       if(ca==null)     
    5.       {     
    6.         out.println("No cert info!");     
    7.       } else {     
    8.         String  serial=ca[0].getSerialNumber().toString();     
    9.         String DN=ca[0].getSubjectDN().toString();       
    10.       }     
    11.       %>  

     

    http://grandboy.javaeye.com/blog/179410

    用Keytool和OpenSSL生成和签发数字证书

    转自: http://zhouzhk.javaeye.com/blog/136943
    生成server端证书
    1)生成KeyPair生成密钥对
    keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass 123456  -storepass 123456 -keystore server_keystore
    输入common name时,要和服务器的域名保持一致。
    2)生成证书签名请求
    keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file tomcat_server.csr -keypass 123456 -storepass 123456 -keystore server_keystore
    3)用CA私钥进行签名,也可以到权威机构申请CA签名。
       openssl ca -in tomcat_server.csr -out tomcat_server.crt -cert ca.crt -keyfile ca.key -notext -config openssl.cnf
      其中-notext表示不要把证书文件的明文内容输出到文件中去,否则在后面用keytool导入到keystore时会出错。
    4)导入信任的CA根证书到keystore
       keytool -import -v -trustcacerts  -alias my_ca_root -file ca.crt -storepass 123456 -keystore server_keystore
    5)把CA签名后的server端证书导入keystore
    keytool -import -v -alias tomcat_server -file tomcat_server.crt -storepass 123456 -keystore server_keystore
    6)查看server端证书
       keytool -list -v -keystore server_keystore 
    可以看到tomcat_server的证书链长度是2

    生成client端证书
    1)生成客户端CSR
       openssl genrsa -des3 -out tomcat_client.key 1024
    openssl req -new -key tomcat_client.key -out tomcat_client.csr -config openssl.cnf
    2)用CA私钥进行签名,也可以到权威机构申请CA签名
    openssl ca -in tomcat_client.csr -out tomcat_client.crt -cert ca.crt -keyfile ca.key -notext -config openssl.cnf
    3)生成PKCS12格式证书
    openssl pkcs12 -export -inkey tomcat_client.key -in tomcat_client.crt -out  tomcat_client.p12
    4)使用Keytool列出pkcs12证书的内容:
       keytool -rfc -list -keystore tomcat_client.p12 -storetype pkcs12

     

    --------------------------------
    keytool可以导出.p12后缀名的个人证书吗?

    好像不行,keytool产生的证书是JKS编码的
    除了keytool,还有很多方法可以完成对keystore里面证书的操作!
    比如
    1、用KeyTool结合pkeytool导出私钥和证书,然后用openssl将私钥和证书合并成p12格式,具体命令请参考pkeytool和openssl帮助
    2、图形工具portecle,直接导出p12格式
    3、KeyTool GUI 1.6,图形界面
    4、keystore explorer,需要付费
    etc.

    --------------------------------------------

    如何用Tomcat和Openssl构建HTTPS双向认证环境(HTTPS客户端认证)


    文章出处:http://www.diybl.com/course/4_webprogram/jsp/jsp_js/200855/113649.html

     

    --------------------------------------------

    [OpenSSL示例]HTTPS中间人攻击

    http://hi.baidu.com/52hack/blog/item/b27f52af5d3881f3fbed50d9.html

     

    --------------------------------------------

    http://www.51testing.com/?128005/action_spacelist_type_blog_page_2.html

    用jmeter测试https应用

    2008-06-30 12:01:19

        公司需要测试一个https加密的网站,可以用Jmeter进行测试的时候,查看执行结果树的时候,总是出现重定向错误,于是上网搜索资料,查询到如下的一篇文章,根据里面的说明,修改jmeter的启动文件,居然成功了,于是转载在这里

        实验室的项目是做关于web service的security产品,主要是对soap消息进行加密签名。上一次的性能测试是将单纯调用web service和应用我们的security产品后的web service进行对比,然而差距还是相当明显的,尤其是在高并发的时候,毕竟中间的加密和签名过程是相当消耗时间的。上次review的时候,老师就说性能有很大的程度可以提高,我本来想说基本没太多的空间可以优化(除了之后会加入的线程池,应该会有小幅度性能提升),但是苦于没有数据支持。正好这两天为了准备开题,一直在看一些文章,看到网上有人提到,SSL + WS-Security = Web Service安全保障,主张用https的方式来传输soap消息。虽然不是什么很好的方法,不过不是正好拿来作为产品测试对比的对象嘛。

        tomcat上已经配置好了axis,通过http访问soap消息是没有问题了。但是还没有配置https,所以按着官方文档开始干活了。首先用keytool生成服务器段的keystore:

    keytool -genkey -alias tomcat -keystore ktomcat.keystore

        注意,alias的密码要与keystore的密码一致,tomcat文档上是这么说的。接着是修改了server.xml:

    <Connector
               port="8443" protocol="HTTP/1.1" minSpareThreads="5" maxSpareThreads="75"
               enableLookups="true" disableUploadTimeout="true"
               acceptCount="100"  maxThreads="200"
               scheme="https" secure="true" SSLEnabled="true"
               keystoreFile="ktomcat.keystore" keystorePass="changeit"
               clientAuth="false" sslProtocol="TLS"/>

        重启tomcat之后,输入https://localhost:8443进行验证(注意是8443哦,我一开始居然傻乎乎的输入8080^_^)

        接着设置客户端的trustStore,jmeter需要它来信任tomcat服务器段的证书

    keytool -export -alias tomcat -keystore ktomcat.keystore -file tomcat.crt
    keytool -import -alias tomcat -file tomcat.crt -keystore tclient.keystore

        tomcat上的https配置成功之后,就开始jmeter的配置了,默认情况下用jmeter是不可以访问我们配置的https应用的,不过却可以访问像google等网站上的https应用,原因很简单,我们自己生成的证书是不被信任的。jmeter的官方网站有一个很大的陷阱,上面说只要修改jmeter.properties参数,将SSL Configuration部分内的注释去掉就可以了,如下

    #---------------------------------------------------------------------------
    # SSL configuration
    #---------------------------------------------------------------------------

    #Classname of the ssl provider to be used (to enable testing of https urls)
    #And the package name where Stream Handlers can be found
    #These provided defaults can be uncommented, and they will work if you are using
    #Sun's JSSE implementation.

    ssl.provider=com.sun.net.ssl.internal.ssl.Provider
    ssl.pkgs=com.sun.net.ssl.internal.www.protocol

    #The location of the truststore (trusted certificates) and keystore ( if other than the default.
    #you can uncomment this and change the path to the correct location.
    javax.net.ssl.trustStore=/home/flyerhzm/software/jakarta-jmeter-2.2/tclient.keystore
    javax.net.ssl.keyStore=/home/flyerhzm/software/jakarta-jmeter-2.2/kclient.keystore

    #The password to your keystore
    javax.net.ssl.keyStorePassword=changeit

        不过结果还是失败,尝试了好多次,总是报SSLHandshakeException。如果是通过浏览器访问的话,浏览器都会提醒你对方的证书不合法,是否要信任它,但是java是不会询问你,而是直接抛出异常。但是如果设置了trustStore的话,就会信任对方的证书啦,太奇怪了。

        google了一下有关SSLHandshakeException,网上有说可以用-D方式添加应用参数,于是打开了jmter启动文件,修改最后一句话为:

    java $JVM_ARGS $ARGS -jar `dirname $0`/ApacheJMeter.jar -Djavax.net.ssl.trustStore=/home/flyerhzm/software/jakarta-jmeter-2.2/tclient.keystore -Djavx.net.ssl.trustStorePassword=changeit "$@"

        居然成功了,呵呵。可恶,配置文件jmeter.properties居然不起作用,害我辛苦到现在。

        趁热打铁,测试了一下通过https访问web service,果然比应用我们的security产品要多消耗1倍多的时间,赞,终于有数据可以说服老师了,哈哈。

     

  • javax.net.ssl

    2009-07-16 23:18:32

     

    javax.net.ssl

    http://java.sun.com/j2se/1.4.2/docs/api/javax/net/ssl/package-summary.html

    keytool - Key and Certificate Management Tool


    http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/keytool.html

     

    http://203.208.33.132/search?q=cache:vULBsXgzDxgJ:markmail.org/message/fsa3ctjwk7rey3e7+jmeter+https&cd=15&hl=zh-CN&ct=clnk&gl=cn&st_usg=ALhdy2-YjhsNXebeNVyZrfdAl1esbiPQfw

    I'm also using jdk1.4.1 and to get SSL working with the GUI client I had to do the following:

    1.) Uncomment ssl.provider and ssl.pkgs
    2.) Set javax.net.ssl.trustStore to the default cacerts file found in your jre/lib/security directory
    3.) Used keytool to import copies of the certs that were being used by the web servers for SSL into the trusted store

    When I ran the test, the GUI client would prompt me for the keystore password...the default keystore password is changeit, and that would complete the initialization of my SSL context allowing me to successfully run my test plan.

    hope this helps,

     

     

  • JMeter学习

    2009-07-16 23:13:00

    1、安装与配置:

    1.1 安装JDK1.5以上的版本。
    1.2 配置JMeter
    1.2.1 Linux环境下(Ubuntu)参考:
    download最新版本(.tgz),官方网站: http://jakarta.apache.org/jmeter/
    gunzip ..tgz到某一目录,与JDK同一根目录就好了。
    运行./jmeter即可。
    如果有X11 DISPLAY set有问题,请参考:
    http://hi.baidu.com/lanif/blog/item/94f25e66c76bab26ab184cea.html
    1.2.2 Windows环境下:
    download最新版本(.zip),官方网站: http://jakarta.apache.org/jmeter/
    解压到某一目录,与JDK同一根目录即可。直接运行.bat就可以了。

    2、结果分析

    http://java.chinaitlab.com/tools/355421.html

    3、使用
    http://www.51testing.com/?128005/action_spacelist_type_blog_page_2.html





    使用JMeter做性能测试的心得

    http://www.javaeye.com/topic/211216




  • 2008年度软件测试工具英雄榜-转

    2009-07-16 21:51:06

    几乎毫无悬念地,HP的几大测试工具LoadRunner、QuickTestProfessional和TestDirector for QualityCenter又一次夺冠,在STP杂志的年度测试工具投票中,这几个工具连续4年占据首位。(关于2007年测试员的工具选择排名,请参见:http://blog.csdn.net/Testing_is_believing/archive/2007/12/17/1944221.aspx)
        这对于初学软件测试的朋友们而言,不得不说是一件好事,因为他们可以坚持学习一样工具,避免在选择哪个测试工具来学习时过于彷徨和迷茫。
        金奖获得者——LoadRunner
        LoadRunner再次成为测试人员最喜爱的测试工具。
        LoadRunner是一款优秀的压力和性能测试工具,可以模拟成千上万的并发操作,对应用系统、Web Service、Web服务器、数据库等进行压力和性能测试,兼容Window和Unix。
        HP于2007年6月对其进行了重大的升级,增强了对Web2.0技术的支持。
        数据/测试性能类
        LoadRunner当仁不让,File-AID和SQL Data Generator紧随其后。
       LoadRunner的核心模块是VuGen(Virtual Usergenerator),VuGen可用于创建脚本实现测试用例的模拟,脚本可进行参数化以适应不同的场景需要,关联(correlation)和错误处理(errorhandling)的能力都非常强。Controller模块用于运行脚本、模拟大量的并发用户,而Analysis模块则用于分析和生成性能测试报告。
        紧随其后的是Compuware的File-AID和Red Gate的SQL Data Generator。File-AID是一个企业级的数据管理工具,测试人员可以利用它来快速地构建测试数据环境,支持mainframes、MVS、DB2和分布系统。
        Red Gate的SQL Data Generator替代Intel的Vtune Performance Analyzer的位置,是一颗璀璨的新星,宣称可以在一杯咖啡的时间内,为10个表格创建2百万行数据。
        功能测试类
        QTP再度领衔主演,Rational Functional Tester和SilkTest锐气不减。
        QTP是Windows平台下出色的自动化功能测试和回归测试工具,基于GUI的录制和回放测试,加上VBScript,测试人员可以轻易控制和操纵程序界面对象,创建自动化测试用例。
        新版本的QTP在团队协作能力方面有所增强,拥有新的对象库管理和函数库共享能力,还添加了关键字管理、通过拖放构建测试步骤、输出XML格式的报告,还有新的、更为精准的调试器,都让QTP成为当仁不让的王者。(关于QTP9.5新特性的介绍,请参见:http://tech.it168.com/softtest/2008-07-08/200807081020854.shtml)
        IBM的Rational Functional Tester和Borland的Silk Test替代了Parasoft的SOAtest和Compuware的Optimal Quality Management的位置。
       Rational Functional Tester的特点是,除了自身的脚本开发环境外,还支持两种开发环境:Eclipse 框架中的Java、Microsoft Visual Studio中的VisualBasic.NET。SilkTest同样是一款不错的自动化功能测试和回归测试工具,支持C/S结构的Java、.NET和WEB。
        静态/动态代码分析类
        Rational Software Analyzer Developer Edition接班,TPTP和DevInspect上位。
        随着IBM在08年推出Jazz,Rational Software Analyzer Deverloper Edition接过PurifyPlus的班,成为代码分析工具类的佼佼者,能具捕捉内存泄漏、分析应用程序性能、代码覆盖率等,支持广泛的编程语言,包括C/C++、Java、.NET、VB、VC++,支持Linux、Unix和Windows平台。
       Eclipse Test and Performance ToolsPlatform(TPTP)和HP的DevInspect替代了Compuware的DevPartnerStudio和Parasoft的Jtest的位置。Eclipse的TPTP在新版本中添加了不少的新特性。2007年底HP收购了SPIDynamics,DevInspect在自动化安全测试方面拥有很强的优势。
        测试/QA管理类
        QC为王,SilkCentral Test Manager保持不败,Optim Test Data Management Solution晋身。
        TestDirector for Quality Center包括需求管理、测试计划、测试执行和缺陷管理模块,全面管理了测试过程,成为测试人员最喜欢的测试管理工具。
        TestDirector基于WEB的管理模式,允许测试人员和项目经理收集需求、设计和安排手工与自动化的测试、分析测试结果、生成图文并茂的测试报告,并且能与HP的其他功能测试工具WinRunner、QTP紧密结合。
        2006年2月,Borland收购了Segue,SilkCentral Test Manager与VMWare Lab Manager整合在一起用于简化跨平台的测试,还可管理Junit/Nunit等第三方的测试框架。
       作为IBM的测试数据管理和应用程序质量改进方案,Optim Test Data ManagementSolution允许测试人员指定覆盖率标准、创建错误和边界条件、模拟产品环境等,支持PeopleSoft和Siebel等企业应用,支持IBM、Microsoft、Oralce、Sybase等厂家的数据库,支持Linux、Uninx、Windows等平台。
        缺陷/问题管理类
        QC大而全,VSTS新进,Bugzilla略显老态。
       上次,HP的TestDirector for QualityCenter和Mozilla的Bugzilla并列第一;这次,Bugzilla被无情地挤到第三,新进者不是谁,正是微软的 VisualStudio Team Edition for Software Testers。
        由于TestDirector forQualityCenter包括了需求管理、测试计划、测试执行和缺陷管理四大模块,因此也就包揽了测试/QA管理类和缺陷/问题管理类的双重头奖。TestDirector for QualityCenter中的缺陷跟踪模块能自动地检查缺陷数据库中的相似问题,避免录入新BUG时的重复现象。另外,它对缺陷的图表分析和统计能力可以辅助管理层决定产品发布日期、判断产品质量趋势。
        相对而言,Visual Studio Team Edition forSoftware Testers则是一个新进者,与TeamFundation结合起来,可以做到缺陷/问题跟踪自动化。这个工具还可以对Web应用程序和Web站点进行功能和压力测试。
       1998年,最早版本的Bugzilla是由TerryWeissman用Tcl写的,后来他觉得用其他语言写可能会更吸引人,因此决定移植到 Perl,就成了Bugzilla2.0。在2000年4月的时候,项目移交给Tara Herenandez,有了更多的开发者参与,包括现在的Dave Miller。

    压力/性能测试类
        LoadRunner蝉联,Rational Performance Tester和SilkPerformer紧追不舍。
        VuGen的能力确实非常强,支持对广泛的协议的录制和编辑。对于Web/HTTP协议,测试人员可以选择让LoadRunner产生URL模式或者是HTML模式的脚本。
        Performance Tester与IBM的Tivoli管理环境整合,可以使用最小的硬件资源来产生大量的并发用户测试。
        SilkPerformer可以在没有license的限制下模拟数千个并发用户。可以通过插件在Eclipse中创建测试。SilkPerformer还有一个SOA版本。
        SOA/Web Services测试类
        Rational Tester for SOA Quality大放异彩,LoadRunner无缘三甲。
        在SOA/Web Services测试类,上一次的冠军LoadRunner居然无缘三甲,取而代之的是IBM的Rational Tester for SOA Quality。
       如果你的应用依赖于别人的WebService,你不能掉以轻心。例如,如果你的程序依赖一个信用卡认证服务,那么你如何确保在购物旺季时不会出现"黑色星期五"呢?利用Testerfor SOA Quality,你可以模拟成千上万的用户访问和使用这个WebService,并且在尝试执行成百上千的事务时观察你的程序的运行情况。
        HP的QTP和Parasoft的SOAQuality Solution也是测试人员所喜爱的SOA/Web Services测试工具。SOA QualitySolution把公司的多层工作流方法融合到测试和QA中,可以在SOA层做强制政策一致性检查;端到端的测试和业务逻辑或事务模拟;支持回归测试、安全渗透测试、压力和性能测试。
        安全测试类
        Rational AppScan击败WebInspect,晋身超级保镖,力保软件安全。
        收购了Watchfire之后,IBM的AppScan成为一款优秀的自动化安全审计工具。针对AJAX、Flash等应用Web2.0技术的中小型业务应用系统,IBM在08年十月发布了AppScan Express版本。
        HP的Assessment Management平台是一个自动化的、集中控制的WEB安全扫描和测试平台,它让分布式的团队通过一个仪表板样式的界面访问和纠正安全漏洞。
        WebInspect在2007年1月的时候,被完全重写过,性能和各项技术兼容性有了很大的提高。据称WebInspect7.5更进一步地改进了AJAX漏洞的审计能力,对Windows Vista的支持也得到了增强。
        测试自动化类
        QTP稳居第一,Business Process Testing新面孔登场。
        QTP再次夺冠。QTP通过插件架构来支持扩展,默认支持ActiveX Control、Web、VB插件。
        Compuware的TestPartner是一个自动化的GUI功能测试工具,采用VBA作为脚本开发语言,测试人员还可以采用"Visual Navigator"的方式来创建测试脚本。
        HP的Business Process Testing是一个新面孔,据称该工具的目的是为了让业务人员可以创建和执行手工的或自动化的测试,不需要任何的编程技巧。能自动化测试过程和文档创建过程,提高测试的可维护性。
        SCM/Build管理类
        VSS历史悠久,Subversion开源雄风。
       Sourcesafe最早由One TreeSoftware开发,在上世纪90年代发布了3.1版本,微软当时的SCM工具是Delta,并不怎么出名。微软收购了16位的 SourceSafe并于1995年发布了一个32位的Visual SourceSafe 4.0版本,10年后VSS2005年才出现。
       Subversion在开源社区中很流行,在2000年的时候由CollabNet发起。构建自动化工具ElectricClound在08年9月的时候发布了ElectricCommander3.0版本,新版本可以与Eclipse和VisualStudio整合,ElectricCommander支持各种各样的脚本语言,包括Bash、perl、Python和Tcl,支持AccuRev、ClearCase、Perforce、Subversion和Synergy等SCM工具。
        嵌入式/移动设备测试类
        Rational Test RealTime被C++TEST击败,挤出三甲位置。
        Parasoft的C++Test是一款优秀的C++代码分析和审查工具,同时也是一款代码分析、回归测试和自动化单元测试工具。Parasoft为嵌入式程序提供了相应的版本,支持Eclipse和Visual Studio,也可以批处理执行。
       紧随其后的是QualiSystems的TestShell和Coverity的Prevent。QualiSystems的TestShell包括计划、构建、执行和控制测试、分析结果等功能,其核心TestShellFoundation是一个可提供扩展架构以满足测试组织增长需求的引擎和数据库。 Coverity的Prevent是一款C、C++和Java代码的扫描和查错工具。
        .NET测试类
        Team System上升,LoadRunner下降,Parasoft Test被替换。
       微软的Visual Studio Team System Edition for SoftwareTester由上次的第二名上升到第一位。Visual Studio Team System Edition for SoftwareTester支持.NET应用程序的性能和压力测试,还支持代码分析、代码覆盖率。
        LoadRunner在8.0后添加了对.NET语言的支持,使用LoadRunner的"Microsoft.NET"协议可以创建.NET Vuser脚本,模拟.NET客户端程序的各种操作。
       在LoadRunner9.0中,可以选择"Microsoft.NET"协议来录制和创建.NET程序的Vuser脚本。VuGen支持在应用层协议上录制.NET应用程序,允许测试员创建Vuser脚本模拟.NET客户端程序的操作。VuGen把所有客户端的动作录制成相应的方法和类,并用C#或 VB.NET来创建脚本。VuGen支持.NET Remoting、ADO.NET、EnterpriseServices和WCF(Windows Communication Foundation)程序的录制和脚本创建。
        Compuware的DevPartner Studio除了提供C/C++、Java版本外,也提供了.NET版本。DevPartner分析代码的质量和复杂度,并且能检测内存泄漏,代码效率和代码覆盖率。
        Java测试类
        LoadRunner连续3年斩获,Junit稳居单元测试老大。
        LoadRunner在压力测试过程中使用监视器来收集性能数据,可用的监视器包括虚拟用户、事务完成率、网络响应、Web和数据库服务器响应和资源使用等。
       有人说Junit是单元测试框架的祖父级人物,2007年,Junit跨过了第10个年头,此时,它的子孙后代已经遍天下,Junit被移植到了各种语言平台,包括:C#(Nunit)、C++(CPPUnit)、Fortran(fUnit)、Perl(Test::Class和 Test::Unit)、PHP(PHPUnit)和Python(PyUnit),甚至还有JavaScript版本的JSUnit。10年间,Junit被下载超过2百万次。
        Eclipse的Tets and Performance Tools Platform(TPTP) 在08年9月升级到了4.5.1版本,支持Java1.6,修正了大量的BUG。
        整合测试/性能套件类
        VSTS夺冠,HP Performance Center屈居第二,TestComplete低价制胜。
       上次的冠军HP的Performance Center被VSTS击败。Visual Studio Team Edition forSoftware Tester成为测试人员最喜爱的整合测试/性能套件类工具,并且测试人员都在热切地期待预计2010年发布的VisualStudio Team System,代号"Rosario"。据称,微软将添加更多的ALM功能到该工具中,并且会与Office ProjectServer整合在一起。
        HP的Performance Center组合了LoadRunner的所有功能、测试资产和人力资源管理功能,测试执行过程可以被跟踪、编辑和计划。
        AutomatedQA的TestComplete是一款价廉物美的自动化测试工具,支持WEB、.NET、Java、Flash等应用程序,而且可以进行基于HTTP协议的压力测试。
        低价商业测试工具类
        Software Planner更上一层楼。
        价格低于$500的商业测试工具中,Software Planner从上次的第二名上升到第一位。Software Planner是一个基于Web的项目计划工具,使用任务链接来组织任务,防止一个任务在另外一个任务未结束之前就开始。
        Mindreef的SOAPscope是一个测试基于SOAP的应用程序的工具。SOAPscope让团队可以创建、测试、发布Web服务和SOA组件,自动化面向XML的任务。
        Shunra Virtual Enterprise创建了一个虚拟网络,可以用于模拟应用程序测试环境,让测试人员检查应用程序在不同网络条件和环境下的性能和用户体验。
        免费测试工具类
        TPTP击败Bugzilla,Junit持平,Bugzilla第三。
        TPTP的核心部件包括测试编辑、执行、监视、跟踪和分析、日志分析,支持嵌入式系统、独立应用程序和企业级应用系统、高性能计算系统。
        Junit如此受欢迎,以至大家在说话的时候把这个名称当作动词来用,例如"确保你在签入之前Junit一下你的代码"。
        07年,Bugzilla继9年前的2.0版本后发布了重要的3.0版本,其中主要的增强包括性能方面、Web Services接口等。
        新手最佳解决方案类
        测试资源少,工具选择更重要。
       如果把少于5年历史的公司定义为"新手"的话,VMLogix的LabManager是最适合这类公司的工具。LabManager支持微软和 VMWare的虚拟系统,LabManager3.5在08年五月发布,添加对Citrix XenServer4.1的支持。
        Fortify的Defender是上次的冠军,这次,它的新产品Fortify 360居第二位。Fortify 360瞄准软件开发生命周期领域,可以在开发的各个阶段对漏洞进行检测识别、区分优先级、修补。
        BluePrint的Requirements Center聚焦协作,通过协作在代码开发前就定义清楚、确认清楚需求,让需求清晰化、可视化。

  • java_https_ssl

    2009-07-16 21:21:52

     

    用JSSE定制SSL连接

    JSSE(Java Security Socket Extension,Java安全套接字扩展)是Sun为了解决在Internet上的安全通讯而推出的解决方案。它实现了SSL和TSL(传输层安全)协议。在JSSE中包含了数据加密,服务器验证,消息完整性和客户端验证等技术。通过使用JSSE,开发人员可以在客户机和服务器之间通过TCP/IP协议安全地传输数据。这篇文章主要描述如何使用JSSE接口来控制SSL连接。
      首先我通过一个简单的客户机/服务器程序来介绍如何利用JSSE进行编程。当建立客户端时,我们需要配置KeyStore和TrustStore文件,这样在程序中我们才可以从客户端的文件系统中加载它们。然后文章将讨论授权和身份验证方面的问题。通过从KeyStore中选择不同的授权,客户端程序可以连接到不同的服务器。
      运行例子程序
      下载例子程序
      在运行JSSE程序前,你需要正确安装JSSE。如果你安装了J2SE 1.4,JSSE已经被自动安装并配置好了,如果你使用的是其他版本的Java,你需要从官方站点上下载并安装JSSE,安装过程这里就不再赘述。由于JSSE是在J2SE 1.4中才成为标准的,并且J2SE 1.4中的JSSE和以前的JSSE有一些细微的差别,而且文中的例子都是在J2SE 1.4下调试的,因此推荐你使用J2SE 1.4运行这些例子。
      
      在深入介绍JSSE之前,让我们来一个简单的客户机/服务器程序,程序中包含了两个文件:SimpleSSLServer和SimpleSSLClient。在运行程序之前,你需要配置下面这些KeyStore和TrestStore文件:
      · 一个客户端的KeyStore文件,该文件中包含了对Alice和Bob的授权。
      · 一个服务器端的KeyStore文件,该文件中包含了对server的授权。
      · 一个名为clientTrust的客户端TrustStore文件,该文件中包含了对server的授权。
      · 一个名为serverTrust的服务器端TrustStore文件,该文件中包含了对Alice和Bob的授权。
      使用keytool可以帮助你创建这些文件(该工具在Java的bin目录下):
      · 一个客户端的KeyStore文件,该文件中包含了对Alice和Bob的授权。
      在命令窗口中输入下面的命令:
      keytool -genkey -alias alice -keystore clientKeys
      窗口中会出现下面的提示,根据提示输入相应的信息:
      
      输入keystore密码: password
      您的名字与姓氏是什么?
       [Unknown]: Alice
      您的组织单位名称是什么?
       [Unknown]: Development
      您的组织名称是什么?
       [Unknown]: DCQ
      您所在的城市或区域名称是什么?
       [Unknown]: ChongQing
      您所在的州或省份名称是什么?
       [Unknown]: ChongQing
      该单位的两字母国家代码是什么
       [Unknown]: CH
      CN=Alice, U=Development, O=DCQ, L=ChongQing, ST=ChongQing, C=CH 正确吗?
       [否]: 是
      输入的主密码
      (如果和 keystore 密码相同,按回车):
      通过相同的方式可以建立对Bob的授权。
      keytool -genkey -alias bob -keystore clientKeys
      注意在名字与姓氏一栏中填写Bob。在完成后可以键入下面的命令来检测是否已经正确完成了授权。
      keytool -list -v -keystore clientKeys
      · 一个服务器端的KeyStore文件,该文件中包含了对server的授权。
      
      在命令窗口中键入下面的命令:
      keytool -genkey -alias server -keystore serverKeys
      注意将密码设为password,名字与姓氏设定为Server。完成授权后同样可以通过上面提到的命令来检测。
      · 一个名为clientTrust的客户端TrustStore文件,该文件中包含了对server的授权。以及一个名为serverTrust的服务器端TrustStore文件,该文件中包含了对Alice和Bob的授权。
      keytool -export -alias server -keystore clientKeys -file server.cer
      输入keystore密码: password
      保存在文件中的认证
      keytool -export -alias alice -keystore clientKeys -file alice.cer
      输入keystore密码: password
      保存在文件中的认证
      keytool -export -alias bob -keystore clientKeys -file bob.cer
      输入keystore密码: password
      保存在文件中的认证
      这样keytool就在当前目录下创建了三个授权文件。然后我们将server.cer文件导入到clientTrust文件中;将alice.cer和bob.cer导入到serverTruest文件中:
      
      keytool -import -alias server -keystore clientTrust -file server.cer
      keytool -import -alias alice -keystore serverTrust -file alice.cer
      keytool -import -alias bob -keystore serverTrust -file bob.cer
      到目前为止,在当前目录下包含clientKeys,serverKeys,clientTrust,serverTrust四个文件。完成了KeyStore和TrustStore的设置后就可以运行例子程序了。首先需要运行服务器程序:
      java -Djavax.net.ssl.keyStore=serverKeys
       -Djavax.net.ssl.keyStorePassword=password
       -Djavax.net.ssl.trustStore=serverTrust
       -Djavax.net.ssl.trustStorePassword=password SimpleSSLServer
      在命令行中我们指定了keyStore属性为serverKeys。由于服务器程序需要获得客户端的授权信息,我们指定trustStore为serverTrust。这样SSLSimpleServer就可以验证由SSLSimpleClient提供的授权信息。当服务器程序成功运行后,你会看到下面的提示:
      SimpleSSLServer running on port 49152
      这时候服务器会等待客户端发出建立连接的申请。如果你希望在另一个端口上运行服务器程序,可以在命令中指定-port xxx参数,其中xxx是端口号。
      
      然后在另一个命令窗口中运行客户端程序:
      
      java -Djavax.net.ssl.keyStore=clientKeys
       -Djavax.net.ssl.keyStorePassword=password
       -Djavax.net.ssl.trustStore=clientTrust
       -Djavax.net.ssl.trustStorePassword=password SimpleSSLClient
      客户端程序会试图向本机的49152端口建立SSL连接。同样你可以通过-port参数指定端口号,也可以通过-host参数指定主机名称。当连接成功后,会出现下面的提示信息:
      
      Connected
      同时在服务器端会提示用户客户端已经连接成功。
      
      SimpleSSLServer
      
      让我们先来看一下SimpleSSLServer。在main()方法中,程序获得了缺省的SSLServerSocketFactory对象;然后利用SSLServerSocketFactory创建一个SimpleSSLServer对象,最后调用start()方法启动SimpleSSLServer对象。
      
      SSLServerSocketFactory ssf= 

    ---------------------------------------

    太多,不粘了。。。看原地址好了。。。

     

     

    java ssl通信
    http://unix-cd.com/vc/www/41/2007-07/5526.html

     

    http://www.javaeye.com/topic/363156

  • JSSE访问带有未验证证书的HTTPS

    2009-07-16 21:08:20

     

     

    JSSE访问带有未验证证书的HTTPS

    http://www.ebok.cn/Computer-Development/Java/Java-19560.html

     

    摘 要JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问。但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从而不能访问HTTPS站点。本文在简要介绍JSSE的基础上提出了两种解决该问题的方法。


      引言

      过去的十几年,网络上已经积累了大量的Web应用。如今,无论是整合原有的Web应用系统,还是进行新的Web开发,都要求通过编程来访问某些Web页面。传统的方法是使用Socket接口,但现在很多开发平台或工具如.NET、Java或PHP等都提供了简单的Web访问接口,使用这些接口很容易编程实现与Web应用系统的交互访问,即使要访问那些采用了HTTPS而不是HTTP的Web应用系统。

      HTTPS,即安全的超文本传输协议,采用了SSL技术,被广泛使用以保证Web应用系统的安全性。访问Web应用的编程接口大多封装了SSL,使得访问HTTPS和访问HTTP一样简单。但是很多中、小型应用系统或基于局域网、校园网的应用系统所使用的证书并不是由权威的认证机构发行或者被其验证,直接使用这些编程接口将不能访问HTTPS。

      本文将在简要介绍JSSE的基础上,详细描述使用JSSE访问HTTPS的方法,主要说明了如何访问带有未经验证证书的HTTPS站点。

      JSSE简介

      Java安全套接扩展 (Java Secure Socket Extension, JSSE)是实现Internet安全通信的一系列包的集合。它是一个SSL和TLS的纯Java实现,可以透明地提供数据加密、服务器认证、信息完整性等功能,可以使我们像使用普通的套接字一样使用JSSE建立的安全套接字。JSSE是一个开放的标准,不只是Sun公司才能实现一个JSSE,事实上其他公司有自己实现的JSSE。

      在深入了解JSSE之前,需要了解一个有关Java安全的概念:客户端的TrustStore文件。客户端的TrustStore文件中保存着被客户端所信任的服务器的证书信息。客户端在进行SSL连接时,JSSE将根据这个文件中的证书决定是否信任服务器端的证书。

      JSSE中,有一个信任管理器类负责决定是否信任远端的证书,这个类有如下的处理规则:

      ⑴ 果系统属性javax.net.sll.trustStore指定了TrustStore文件,那么信任管理器就去jre安装路径下的lib/security/目录中寻找并使用这个文件来检查证书。

      ⑵ 果该系统属性没有指定TrustStore文件,它就会去jre安装路径下寻找默认的TrustStore文件,这个文件的相对路径为:lib/security/jssecacerts。

      ⑶ 如果 jssecacerts不存在,但是cacerts存在(它随J2SDK一起发行,含有数量有限的可信任的基本证书),那么这个默认的TrustStore文件就是cacerts。

      直接使用类HttpsURLConnection访问Web页面

      Java提供了一种非常简洁的方法来访问HTTPS网页,即使用类HttpsURLConnection、URL等。这几个类为支持HTTPS对JSSE相关类做了进一步的封装,例子如下所示:

    URL reqURL = new URL("https://www.sun.com" ); //创建URL对象
    HttpsURLConnection httpsConn = (HttpsURLConnection)reqURL.openConnection();

    /*下面这段代码实现向Web页面发送数据,实现与网页的交互访问
    httpsConn.setDoOutput(true);
    OutputStreamWriter ut = new OutputStreamWriter(huc.getOutputStream(), "8859_1");
    out.write( "……" );
    out.flush();
    out.close();
    */

    //取得该连接的输入流,以读取响应内容
    InputStreamReader insr = new InputStreamReader(httpsConn.getInputStream();

    //读取服务器的响应内容并显示
    int respInt = insr.read();
    while( respInt != -1){
     System.out.print((char)respInt);
     respInt = insr.read();
    }

      这段代码能够正常执行,然而把访问的URL改为https://login.bjut.edu.cn时,程序将抛出异常javax.net.ssl.SSLException,这是由于https://login.bjut.edu.cn站点的安全证书不被JSSE所信任。根据JSSE简介中对信任管理器的分析,一种解决这个问题的方法是按照信任管理器的处理规则,把站点的证书放到证书库文件jssecacerts中,或者把证书存放到任一TrustStore文件中,然后设置系统属性javax.net.sll.trustStore指向该文件。另一种解决方法则是自己实现信任管理器类,让它信任我们指定的证书。下面分别介绍这两种方法。

      将证书导入到TrustStore文件中

      Java提供了命令行工具keytool用于创建证书或者把证书从其它文件中导入到Java自己的TrustStore文件中。把证书从其它文件导入到TrustStore文件中的命令行格式为:

      keytool -import -file src_cer_file –keystore dest_cer_store

      其中,src_cer_file为存有证书信息的源文件名,dest_cer_store为目标TrustStore文件。

      在使用keytool之前,首先要取得源证书文件,这个源文件可使用IE浏览器获得,IE浏览器会把访问过的HTTPS站点的证书保存到本地。从IE浏览器导出证书的方法是打开“Internet 选项”,选择“内容”选项卡,点击“证书…”按钮,在打开的证书对话框中,选中一个证书,然后点击“导出…”按钮,按提示一步步将该证书保存到一文件中。最后就可利用keytool把该证书导入到Java的TrustStore文件中。为了能使Java程序找到该文件,应该把这个文件复制到jre安装路径下的lib/security/目录中。

      这样,只需在程序中设置系统属性javax.net.sll.trustStore指向文件dest_cer_store,就能使JSSE信任该证书,从而使程序可以访问使用未经验证的证书的HTTPS站点。

      使用这种方法,编程非常简单,但需要手工导出服务器的证书。当服务器证书经常变化时,就需要经常进行手工导出证书的操作。下面介绍的实现X509证书信任管理器类的方法将避免手工导出证书的问题。


     

    X509证书信任管理器类的实现及应用

      在JSSE中,证书信任管理器类就是实现了接口X509TrustManager的类。我们可以自己实现该接口,让它信任我们指定的证书。

      接口X509TrustManager有下述三个公有的方法需要我们实现:

      ⑴ oid checkClientTrusted(X509Certificate[] chain, String authType)
    throws CertificateException

      该方法检查客户端的证书,若不信任该证书则抛出异常。由于我们不需要对客户端进行认证,因此我们只需要执行默认的信任管理器的这个方法。JSSE中,默认的信任管理器类为TrustManager。

      ⑵ oid checkServerTrusted(X509Certificate[] chain, String authType)
    throws CertificateException

      该方法检查服务器的证书,若不信任该证书同样抛出异常。通过自己实现该方法,可以使之信任我们指定的任何证书。在实现该方法时,也可以简单的不做任何处理,即一个空的函数体,由于不会抛出异常,它就会信任任何证书。

      ⑶ X509Certificate[] getAcceptedIssuers()

      返回受信任的X509证书数组。

      自己实现了信任管理器类,如何使用呢?类HttpsURLConnection似乎并没有提供方法设置信任管理器。其实,HttpsURLConnection通过SSLSocket来建立与HTTPS的安全连接,SSLSocket对象是由SSLSocketFactory生成的。HttpsURLConnection提供了方法setSSLSocketFactory(SSLSocketFactory)设置它使用的SSLSocketFactory对象。SSLSocketFactory通过SSLContext对象来获得,在初始化SSLContext对象时,可指定信任管理器对象。下面用一个图简单表示这几个JSSE类的关系:

    JSSE访问带有未验证证书的HTTPS

     

     

    图1 部分JSSE类的关系图
      假设自己实现的X509TrustManager类的类名为:MyX509TrustManager,下面的代码片断说明了如何使用MyX509TrustManager:

    //创建SSLContext对象,并使用我们指定的信任管理器初始化
    TrustManager[] tm = {new MyX509TrustManager ()};
    SSLContext sslContext = SSLContext.getInstance("SSL","SunJSSE");
    sslContext.init(null, tm, new java.security.SecureRandom());

    //从上述SSLContext对象中得到SSLSocketFactory对象
    SSLSocketFactory ssf = sslContext.getSocketFactory();

    //创建HttpsURLConnection对象,并设置其SSLSocketFactory对象
    HttpsURLConnection httpsConn = (HttpsURLConnection)myURL.openConnection();
    httpsConn.setSSLSocketFactory(ssf);

      这样,HttpsURLConnection对象就可以正常连接HTTPS了,无论其证书是否经权威机构的验证,只要实现了接口X509TrustManager的类MyX509TrustManager信任该证书。

      小结

      本文主要介绍了在HTTPS的证书未经权威机构认证的情况下,访问HTTPS站点的两种方法,一种方法是把该证书导入到Java的TrustStore文件中,另一种是自己实现并覆盖JSSE缺省的证书信任管理器类。两种方法各有优缺点,第一种方法不会影响JSSE的安全性,但需要手工导入证书;第二种方法虽然不用手工导入证书,但需要小心使用,否则会带来一些安全隐患。

     

     

     

     

     

  • 转点Oracle学习的帖子

    2009-07-09 22:54:14

     

    concepts的英文还是比较简单的,tom写的《oracle编程艺术》还是不错的,建议3个月后再看,稍微有点深度的,没读一次都有不同的体会 呵呵

    浅谈Oracle学习。
    http://itspace.javaeye.com/blog/420550

    上个星期一直在出差,好久没来这个自留地啦,呵呵。现在闲来无事,就谈谈Oracle的学习方法吧。
    1.初接触Oracle,肯定会被其复杂的体系结构,众多的概念给搞混,如process和sessions,restore和recover等等,接触Oracle前3个月肯定会觉得这些概念非常抽象,又觉得无重下手,到处是重点,处处又把握不住,朋友,坚持吧,学习Oracle毅力很重要。
    2.通读Oracle官方文档的concepts章节,至少需要通读2次,英文能力一般的朋友第一次阅读时可适当参考中文文档,因为很多术语英文很难理解。网上有很多关于concepts的中文翻译,其中翻译的比较出色当属于zw1840。第二次阅读时必须抛弃中文资料,英语阅读再困难,也要将其啃下来,因为阅读英文资料,一:会有自己的想法,二:好多好的Oracle资料都是英文的。
    3.学习Oracle初级阶段切忌上一些中文论坛,如itpub,因为那里水平参差不齐,再加上自己水平有限,判断能力有限,他们给出的答案很多都是错误的,很容易形成误导。
    4.遇到问题,先静下来想想,自己先尝试解决问题。
    5.学习Oracle讲究一个“悟”字,即不要浅尝辄止,遇到问题,不是解决就好了,多想想为什么会产生这样的问题,怎么样才能避免,这个问题的背后是什么,牵扯到的知识点有哪些,等等。假如你是Oracle的设计者,你会怎么样设计Oracle?当自己的理念和Oracle的理念产生冲突时,99%是自己错了,多想想这个模块Oracle为什么要这样实现,这样实现会带来什么好处。
    6.实践永远重要于理论,书看的再多,而不会用sqlplus "/as sysdba"操作一系列命令,也是徒然。
    7.不要迷信市面上的Oracle书籍,除了tomas kyte,eygle,piner的书可以读之外,说实在其他的书真的是浪费时间,还不如自己再通读一边concepts。
    8.互联网的神奇之一是产生了google这样的好工具,查阅资料比baidu好多啦
    9.自己研究Oracle的alert日志会给自己带来意想不到的成果,尤其是研究启动过程部分
    10.千言万语,兴趣是第一位的,Oracle好像是一杯醇酒,越品越有味,不知不觉醉心于此。

     

    Oracle书籍推荐
    http://chenjianjx.javaeye.com/blog/295563

     

    Oracle推荐书籍2008-12-06 12:46很多朋友要我帮忙推荐一下Oracle的入门书籍,能够了解Oracle的基本概念、基本知识的那种。
    我就免为其难,推荐几本。

    首先我想强调的一点是,任何一本系统的Oracle书籍只要认真读下来,都会有不错的收获,读书最忌讳的是虎头蛇尾,浅尝则止。

    1.第一本要推荐给大家的是Oracle的概念手册,这本手册是无数DBA学习的起点:Database Concepts
    这是Oracle的官方文档,详尽的介绍了Oracle的基本概念,是DBA经常需要翻阅的参考书,也是最好的入门学习资料,如果大家阅读英文不存在问题,请先阅读本书,这本书可以在Oracle的官方文档站点Tahiti找到:
    http://www.oracle.com/pls/db102/homepage?remark=tahiti

    Oracle10gR2的下载地址为:
    http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14220.pdf

    下载之前你可能需要注册一个OTN的免费帐号。如果你无法从官方站点下载,也可以通过本站下载这本手册:http://www.eygle.com/orabk/OraDoc/b14220.pdf

    当然我建议大家都从英文版开始你的阅读,即便你的英文不够好,但是如果你觉得还是有障碍,网络上已经有很多朋友将这本手册翻译成了中文,我打包了两个版本(如果CHM格式无法打开,请在右键属性页里选择解除锁定),提供下载:

    http://www.eygle.com/orabk/OraDoc/Oracle.Concepts.zip

    原出处链接请参考:ITPUB链接 ITPUB链接2 网友译本


    2.第二本要推荐的是Thomas Kyte的《Expert One on One: Oracle》,这本书的中译本,被称为《Oracle专家高级编程》。
    毋庸多说,这本书是Oracle界的经典之作,最初是基于Oracle8i进行写作的,现在Tom已经出版了基于Oracle9i/Oracle10g的升级版,书名为《Oracle Database Architecture 9i and 10g Programming Techniques and Solutions》,现在中文译本也已经快要出版了。

    这本书的前几章以介绍Oracle的基础知识为主,后几章则以介绍开发相关的内容为主,侧重于管理DBA的朋友可以着重阅读一下该书的前几章。

    Expert One on One: Oracle 这本书中文版大家可以参考:
    http://www.itpub.net/showthread.php?threadid=224536
    其英文版本参考:
    http://www.itpub.net/showthread.php?threadid=316444

    Oracle Database Architecture 9i and 10g Programming Techniques and Solutions 这本书的英文版参考:
    http://www.itpub.net/showthread.php?threadid=486715

    中文版参考:

    http://www.itpub.net/thread-969575-1-3.html

    我强烈推荐大家仔细阅读本书。

    3.另外要推荐给大家的一个系列图书是,Oracle OCP官方培训教材

    这套官方教材无论从结构还是体系上来说都是非常不错的入门及学习参考资料,虽然其中也存在一些错误和含混之处,但是仍然不失为经典,每个考过OCP认证的人都曾经深入阅读过该系列教材。

    我可以负责任的说:每个全面深入阅读和理解该系列教材的人,都无愧于OCP认证,虽然现在的Paper OCP是那么的多。

    另外一个值得推荐之处是,该系列教材拥有不同版本Oracle8i/Oracle9i/Oracle10g,而且大部分都有中文版本,大家可以对照学习。

    这些教材大都可以从ITPUB上找到,恕我不能一一查出其具体链接:)


    4.此外推荐大家可以看看《ITPUB技术丛书》


    ITPUB的技术书籍来源于实践,对于解决实际问题非常有帮助。
    目前已经出版了四本书《Oracle 数据库DBA专题技术精粹》、《Oracle 数据库性能优化》、《深入浅出Oracle-DBA入门、进阶与诊断案例》、《循序渐进Oracle》。
    其中部分图书的章节可以参考以下链接:
    http://www.eygle.com/archives/2008/08/stepbs_oracle_info.html

    书不在多,精读则灵,希望大家能够静下心来认真阅读,然后一定会有所收获的。
    最后要提醒大家的是,Oracle的英文资料众多,要想真正深入学习Oracle,必须克服英文阅读的障碍。

    开发必看的..
    Oracle 9i & 10g编程艺术,书的内容好..翻译的也很好
    http://www.douban.com/subject/1864527/
    再随便找本PLSQL的书好了..
    这本:http://www.china-pub.com/28201
    或者这本:http://www.china-pub.com/16882

    一直认为,Oracle开发的话,不必废话,唯一的书籍选择标准就是tom的作品。上amazon搜他的最新作品就完了
    上面那本《Oracle 9&10g 编程艺术》在目前来说是最好的
    真的没见有人能够同时在技术水平、写作技巧和事业这3个方面都能达到Tom那个高度的。

     

     

    做java太苦了,如何成为一名高薪的DBA呢?
    http://www.javaeye.com/topic/167626

     

    我做php和java已经很久了,真的是太苦了,而且人太多,我想凭我的资质在java里是混不出什么名堂的了,想转dba了。老师说过在IT里面有一黄金行业:DBA,有一个可以干一辈子的IT职位:DBA,因为它是吃经验的,干的时间越久越好。我不想浪费我的时间了,希望从今天开始进入DBA的行列。
    我做了一个简单的计划:想找到第一份DBA的工作要有两个基本的东西:你英语好,有一个精通的数据库oracle9i。
    所以时间是这样安排的:晚上的所有时间放在成为DBA的计划中。
    晚上:
          6:00 --  6:30     学新东方的英语语音(英语的基本功学多久也要练的)

    http://www.youku.com/playlist_show/id_336535_orderby_9_page_1.html
    or
    http://video.xuezhishi.com/play.asp?id=494&m=60&n=1&u=1&v=1

         6:30 --  7:00     学新东方新概念英语2
    http://so.56.com/index?type=video&key=%D0%C2%B6%AB%B7%BD+%D0%C2%B8%C5%C4%EE%D3%A2%D3%EF+%B5%DA%B6%FE%B2%E1&op=or&sortby=3
          7:00 --  8:00     看动感英语2005有文本
    http://www.zaban.cn/forum-74-1.html
          8:00 --  11:00    边看oracle学习视频边写代码(我有俩部视频:oracle内部教学视频,ITlab教学视频)够了
          11:00 --  12:00   边看hibernate学习视频边写代码
    以上的原则:在于熟能生巧,不在多。计划的有效时间是2008年3月4日到2008年12月31日
    因为我想在简历上写精通oracle9i,精通hibernate,英语很棒。有经验。


    当然还有很多的相干知识要学的:
    java的基本知识,struts,spring.数据结构,基本算法,设计模式,离散数学,线形代数,高数,概率统计,但这些不是现在的重点,是以后的事。我也要活下去的:白天不管一切只要能挣到钱就行。什么都干。白天的任务是挣钱。

    做java太苦了,而且也对我来说真的是没有什么上升的空间了,如何成为一名高薪的DBA呢? 一切都在摸索中,希望有高人能指点一下。以上都是自己的感言。下面转些东西吧。谢谢!
    我转一篇很精彩DBA经验文章吧,供自己以后学习借鉴。







    成就DBA职业生涯介绍
    许多年来,我在不同的新闻组上花费了很多时间与那些想知道如何得到数据库管理员(DBA)的工作或者如何成长为一名DBA的IT人进行交谈,现在他们有了工作。这些年来许多人针对如何达到这个目标提出了不同意见。本文即是那些意见的综合并且能够在如何才能出色的完成DBA的工作方面给出好的建议。这篇文章同样对于如何让一名DBA变得对老板更有价值。假如你已经是一名DBA,那么也许你会希望跳过文章的前几段。

    我应该成为一名DBA么?

    我曾问过的一个问题是一个人应该从事DBA这样的职业么。这个问题并不容易回答,因为它因人而异。有的人有成为一名好DBA所需要的天赋。而其他人并不认为能够很容易掌握成为DBA的秘诀。DBA职业需要掌握一定的技能。而且还需要其他IT职业所不必需的要求。因此,为了回答这个问题,我通常给将要成为DBA的人描述DBA职业所必需的要求。下面的段落中,我都将以问题结尾。在继续下一段以前请花一些时间考虑并且回答这些问题。

    许多人因为许多原因而立志要成为DBA。其中一个主要原因是薪水。DBA是IT业中薪水最高的职业之一。其他人想成为DBA是因为喜欢赞扬DBA是受到的荣誉,或者因为他看上去很酷!我个人认为,成为DBA是很值得的。它是一个很有意思,令人兴奋的职业。那么,你把DBA作为一个可能的职业选择的原因是什么呢?

    除非你已经提前准备好了,否则你可能会发现从事DBA职业充满了挫折和令人头痛。一个数据库存在于操作系统和最终用户应用程序之间。同样地,DBA必须非常精通他的数据库所在的操作系统。DBA并不一定需要知道所有有关操作系统的知识,但是他知道得越多越好。数据库与操作系统联系非常紧密。理解这种关联是十分必要的。DBA还需要知道服务器硬件以及它如何影响与帮助数据库。同时,DBA必须理解应用软件。DBA可能会被要求帮助开发人员创建可靠,健全的数据库应用程序。还有,最重要的也是最明显的,DBA必须十分彻底的理解数据库引擎,它是如何工作的,所有的引擎是如何组合在一起的,以及如何影响数据库引擎向最终用户和应用程序传送数据的能力。我见过的最好的DBA有非常深刻的理解而且不仅仅在数据库本身。他们知道一些系统管理与应用开发。好多时候他们在成为DBA之前有其中一个或两个背景。无论如何,成为一名合格的而不是出色的DBA也需要许多背景知识。你是否已经做好准备开始学习直到你感到已经无法再学下去了?

    许多和我交谈过的,在开始DBA职业时遇到困难的人,在尝试着吸收大量DBA所需了解的信息时实际上都会有一些问题。毕竟系统管理员是全职学习操作系统的细节。应用程序开发人员全职学习如何编写好的程序。DBA不仅要非常了解这两种不同的工作,而且还需要花费更多的时间去理解数据库的体系结构,以及理解每一样东西的每一块是如何组合在一起的!听起来是不是很让人畏缩?有许多人失败后这样想,并且把DBA工作看作一项非常困难的事情。也有那些传播和理解所有这些信息,并且使用这些信息做出好的,听起来具有技术性的决定的人。正如我以前是一名DBA时喜欢说的,所有这些对我来说看上去像一个大谜团。把这些所有的很好的组合在一起就是挑战。你是哪一种人?

    许多DBA是随时侯命的。他们会在白天或晚上的所有时间接到呼叫去解决他们的数据库出现的致命问题。数据库是商业信息技术基础组织的必不可少的组成部分。没有数据,就没有必要拥有一个计算机系统。数据推动商业。假如amazon.com的网站不能在数据库中搜索产品并且假如没有人能够为他们的产品下订单,那么它会变成什么样?它就不会在商业中存在很久。当数据库down掉,即使只是很短的时间,公司也会损失重大。基于这个原因,DBA到达现场后必须尽可能迅速的解决问题。许多公司有自己的DBA团队以便可以轮流待命。这些DBA 24×7小时的维持数据库应用程序。假如工作需要的话,你准备好随时候命了么?

    一些DBA的职责包括为软件打补丁或者对数据库做些改变。通常,这些操作不能在公司职员工作的时候做,因为此时数据库必须运行以便他们能够工作。这意味着DBA经常不得不在很早或者深夜甚至周末,总之,在正常工作时间以外来完成工作。你准备好在非正常时间工作,或者你在找一个朝九晚五的工作?

    对DBA而言,需要掌握的一个重要内容就是通常被称为“软技术”的东西。DBA需要在团队中很好的工作,通常团队是在变化的,如系统管理员,网络管理员,应用程序开发人员,项目经理和其他人。DBA要能够用流利的英语解释复杂的技术概念,让团队中其他人明白。DBA还要能够在数据库相关问题上指挥团队队员。你的软技术怎么样?

    下面不是全部列表,但是包括了DBA的典型职责:
    •把监视数据库实例当作每日必做工作以保证其可用性。解决不可用的问题。
    •收集系统统计和性能信息以便定向和配置分析。
    •配置和调整数据库实例以便在应用程序特定要求下达到最佳性能。
    •分析和管理数据库安全性。控制和监视用户对数据库的访问。必要时审计数据库的使用。
    •监视备份程序。必要时提供恢复。测试备份与恢复程序。
    •升级RDBMS软件并且在必要时使用补丁。必要时升级或者迁移数据库实例。
    •通过数据库相关动作来支持应用程序开发人员。
    •跟随数据库趋向和技术。当可应用时使用新技术。安装,测试和评估Oracle新的相关产品。
    •执行存储和物理设计。均衡设计问题以完成性能优化。
    •创建,配置和设计信的数据库实例。
    •诊断,故障检测和解决任何数据库相关问题。必要时联系Oracle支持人员以便使问题得到较好的解决。
    •确保Oracle网络软件(SQL*Net, Net8, Names, OiD)配置和运行的很好。
    •与系统管理员(Unix & NT)一起工作以保证Oracle相关事务得到很好的处理。
    •为有效的,定期的维护数据库创建任何必要的脚本。

    前面各段的问题是为了使你考虑一名DBA该做些什么,帮助你决定这是不是适合你的职业。我并非意味着假如你的目标是成为DBA这些会阻止你。我只是尝试着展现一些事实。我看到过一些DBA一旦被实际工作打击了就一蹶不振。他们花费时间,精力和一些金钱获得了他们的第一份DBA工作。我个人认为这个职业非常有价值。而且我无法想像现在做任何其他的会怎样。所以,这一段帮助你决定这是不是你希望从事的。假如它是,那么尽你所有去得到它!

    我怎样得到第一份DBA工作?
    你已经阅读了前面的段落并且认为成为一名DBA是一个好的职业。祝贺你!我希望你的职业能变成你想像得那么令人兴奋和有意义。那么,你如何找到第一份DBA工作?这个问题我已经听别人问了许多许多遍。

    在90年代早期,因特网急速发展。它使公司象草一般萌芽。公司蜂拥而至并且开始创建他们在网上的形象。几乎所有这些有网站的公司都需要一个数据库作为web应用的后台。不幸的是,当时在该领域却没有那么多DBA。在IT业,DBA变得奇缺。那段时间里,得到一份DBA工作看上去只要可以拼出“Oracle”或者可能只是在大学里接触过一学期的数据库就行。为了使生活变得更好,DBA的匮乏促使公司付给有潜力的职员很高的薪水。假如你想要成为一名DBA,很容易,非常容易。你需要做的就是证明你了解什么是数据库然后工作就会比你预期的更早的出现在你面前。

    然后因特网的泡沫破灭了。大量投产因特网的公司破产。许多给公司工作的DBA重新寻找工作。缺少DBA的公司找到一名有DBA经验的人比以前容易得多。在21世纪初期,由于经济并不十分稳固,因此生活并不容易(至少在美国如此)。公司都勒紧了他们的裤腰带。所有这些转化为更少的工作机会和DBA候选人更少的工作空缺。

    得到第一份DBA工作的最艰难的部分是每一个职位都要求有一些工作经验。如果你从公司的角度出发,你就可以理解为什么对DBA职位而言经验是必需的。假如他没有一点经验,你会付给这个人很高的工资让他去操作,维护和运行你IT基础组织的最大最重要的一部分么?你的公司会付钱给一名没有经验的DBA么?并且,在等待他成长起来的过程中可能会损失上百万美元的收入。对大多数公司而言,这些问题的答案肯定是‘不’。所以,没有经验,获得你的第一份DBA工作是很困难的。

    第一份DBA工作现在成了恶性循环的境遇。假如我没有任何经验,我怎样才能得到DBA的工作呢?我没有工作的话又怎么能得到DBA经验呢?这是要战胜的最困难的障碍。最困难的部分是获得第一个DBA工作。这部分的剩下部分将针对实现你第一个DBA工作的目标给你一些建议。

    提示#1:接受教育。—尽可能多的学习有关数据库的知识。这很可能将占用你正常工作以外的部分时间也精力。参加本地大学举办的数据库培训班。许多培训公司都会举办数据库管理员的培训班。假如你的老板不资助你的学习,那么你可能不得不自己支付这笔费用。许多DBA职业要求至少为计算机科学或相关专业本科以上学历,因此你必须至少有那样的文凭。

    提示#2:锻炼成为DBA。—许多数据库供应商都允许你下载他们数据库系统的测试版或评估版。下载一份并且在自己的个人电脑上安装软件。练习使用数据库。故意破坏数据库并且尝试修复它。尝试着履行你所能想到的尽可能多的DBA职责。测试和磨练你在自己的测试平台上的技能这样你就可以证明你的数据库管理能力。

    提示#3:获得认证。—许多数据库提供商都提供自己的数据库产品的认证。许多公司现在都把认证看作是一种标准。需要记住的一件事是仅获得认证是不够的。通过DBA认证测试并不意味着你知道如何管理一个数据库。它只是告诉你以后可能的老板,现在你拥有了一定的技术。它还告诉你的老板你对DBA工作的态度是很认真的。我看到许多人抱怨他们已经得到了认证但是没有经验,却仍然不能得到第一份DBA工作。认证本身并不能使你得到工作,但它是无害的。即使没有其他的,在你进行认证的时候你也已经学到了许多知识。只是不要依赖认证来给你带来你要找的工作。你需要的比这还要多。但它会在最后帮助你。

    提示#4:利用你现有的技能。—许多DBA具有系统管理员背景。其他的有应用程序开发背景。假如可能,查看你能否利用现有的技能来得到工作。现在的目标就是为你和你的老板创造一个双赢的局面。例如,让我们假设你已经是一名系统管理员而想进入DBA领域。也许你会找到一份工作,这份工作一部分时间里可以用到你的系统管理技能,并且在剩下的时间里可以使你涉及到数据库管理领域。假如你已经是一名某个产品平台上的DBA但你希望转到其他产品平台,那么看看你能否找到一份同时接触两个产品平台的工作。这样,公司和你都得到了想要的。在你定向到了DBA工作后,你可以试着得到一个能让你全职作它的职位,也许还可以在同一个公司中。

    提示#5:利用现在的机会。—有时候,一个人进入DBA领域仅仅需要的是正确的地方和正确的时机。假如你现在的老板有一个机会让你进行任何数据库的项目,抓住这个机会!任何数据库经验就比没有数据库经验要好。让你的管理者知道你十分积极的在寻找任何可能的数据库机会。他们就有可能在下次机会到来的时候想到你。进行这些数据库项目以及看到你要成为一个DBA的渴望以后,他们可能会决定培训你,提拔你。许多许多人都是以这种方式获得他的第一个DBA工作,在进行了一些数据库相关的项目后不知不觉的成为一名较低级的DBA。通常当一名DBA离开公司后,公司将在内部寻找一个候选人,假如他们认为这名候选人是可训练的话。

    提示#6:寻找较低级的DBA职位。—假如你只是为了一个较低级的DBA工作,看到DBA职位的需求描述说他们正在寻找高级DBA或者其他的。所以,让我们严谨一些。你并没有一个高级方面的经验。我已经讨论过了对于这样的职位为什么公司不会考虑你。但是他们会在低级的职位上考虑你。低级的DBA在高级DBA的指导下完成工作。他们摸索窍门。一般来说,高级DBA对数据库承担责任,同时也获得所有的荣誉。但是不要焦急。随着你的事业发展,你将会有越来越多的责任和得到越来越多的信任。因为你没有任何经验,你应该从这里开始启航。

    我也听到过一些公司寻找一名高级DBA,但是到最后,他们实际想要雇一名低级的DBA。你或许希望申请这样的职位虽然你也许没有资格。他们可能还是会决定雇佣你。但是提前说明你仍然在摸索阶段并且已经是较低级的DBA水平。不要试图欺骗他们让他们认为你是高级DBA的水平。这只会降低你得到这项工作的机会。

    这些提示将帮助你得到第一份DBA的工作。祝你在寻找工作时有好运气。当你已经找到了第一份DBA工作后,继续下面的部分来学习如何往下走下去。

    我刚得到我的第一份工作!现在该怎样?

    祝贺你!你现在是DBA俱乐部的正式成员了!对于这份梦寐以求的令人激动的职业,你准备好了么?你的工作才刚开始并且你在学习上已经落在后面。你将会发现要成为一名高效的数据库管理员有大量的知识你必须掌握。你的第一年或前两年将花费比以前更多的时间来学习。假如你发现学习知识的数量使你大脑超负荷,那么休息一下,歇口气,然后再回到学习中去。为了帮助你继续走下去,你可以按照下面的方法进行:

    步骤#1: 关系型数据库理论 –这部分我假设你将管理的数据库是一个“关系型”数据库。其他数据库模型也存在,但是关系型模式是近二十年工业上占统治地位的一种数据库模式。假如你的数据库系统是其他的模式,那么学习它的理论。相关数据库理论是十分重要的。它是其他一切的基础。我也看到许多跳到数据库管理职位的人从不想去学习纯粹的关系型数据库理论。不可避免的,在他们的事业中对理论基础的匮乏作为缺点暴露了出来。假如你对关系型数据库理论理解得很好,那么你将非常容易的在任何平台的关系型数据库管理系统(RDBMS)中转变。我使用Oracle数据库,或者IBM的DB2,或者微软的SQL Server是无关紧要的。他们都是关系型数据库系统。他们在最底层都在做着相同的事情。区别在于他们怎样去做相同的事情。纯粹的关系型数据库理论对于较低级的DBA来说并非必需的。但是假如你想要超越低级DBA的水平它就是十分重要的。许多大学的教科书都很好的包含了关系型数据库的理论。其中一本被广泛使用的教科书就是由Elmasri and Navathe编写的数据库系统基础,Bejamin/Cummings Press。

    步骤#2: 彻底的学习查询语言 –数据库都有语言让你能够从数据库中得到数据,把数据放到数据库中,以及修改数据库中的数据。对于关系型数据库而言,这种语言就是结构化查询语言(SQL)。这门语言是你与数据库接触的工具。不能让这个工具成为以后学习的障碍,这一点很重要。在你的测试数据库中练习不同的SQL语句直到他们变成了你的习惯。这方面的一本非常好的书叫做Oracle 9i完全参考(Oracle 9i The Complete Reference)由Loney 和Koch编写,Oracle Press。每一名Oracle DBA都应该在他事业的早期阅读这本书。Oracle 9i参考手册(Oracle 9i SQL Reference manual)是另一个很重要的知识来源。在他们的技术网站TechNet上(http://technet.oracle.com)你可以访问所有的Oracle在线文档。你必须注册一个账号,但是它是免费的。每个都应该在TechNet上有一个账号。

    步骤#3: 开始学习基本的数据库管理工作 –这难道不是你最开始在这里的原因?为什么它在列表的第三位?我们尝试着建造一个知识的金字塔,我强烈的感觉到一个人需要知道关系型数据库理论和SQL,并且在你学习如何进行基本的数据库管理工作时把他们当作工具来使用。这些工作包括启动和关闭数据库,备份和恢复数据库,以及创建/删除/修改数据库对象。对于Oracle数据库管理而言,在市面上有大量的书籍可以给你所期望的一个很好的体会。这本书是Oracle 9i DBA手册(Oracle 9i DBA Handbook by Loney on Oracle Press)。我知道的大多数DBA都在他们事业的早期不只一遍的阅读过这本书。这里,你应该同时阅读和理解Oracle 9i 概念指导,Oracle 9i管理员指导,以及Oracle 9i备份与恢复指导(Oracle 9i Concepts Guide, the Oracle 9i Administrator’s Guide, and the Oracle 9i Backup and Recovery Guide)都来自Oracle文档。

    步骤#4: 阅读,阅读,再阅读 –由于你才刚开始你的DBA职业生涯,因此你正在开始为你的技能奠定基础。这需要一段很长的时间去形成,吸收和领会所有你将学到的知识。毫无疑问的,比你资深的DBA由许多工作要做,因此他们可能不会总是腾出大量时间辅导你的学习。你不得不靠自己学习很多东西。这就是阅读的目的。市面上有许多书籍可以解答许多数据库相关的话题。Oracle Press是Oracle公司的官方出版社,有大量的Oracle相关书籍。同时也有其他的出版社,如Wrox Press 和 O’Reilly Press。你也可以找到Oracle文档来阅读。并且还有许多网站和新闻组。尽可能多的读书使你能够继续下去。还有,不只一遍的阅读它们可以使你吸收你第一次阅读时错过的内容。

    步骤#5: 创建测试案例 –我经常看到初学者问一些很基础的问题,其实假如他们花一些时间来考虑,这些问题都是很容易解答的。毫无疑问的,在你开始学习Oracle的时候你会有许多的问题。看看这些问题你能不能自己回答出来。例如,我又一次被问到能不能向有唯一性约束的列中插入空值。最开始,这看上去也许不是很容易回答的问题。但它却是非常容易去试验的!只需要创建一个简单的表。在其中的一列,假如唯一性约束。尝试着在该列插入一个空值。有效么?你应该能够非常容易的回答出这个问题了。那么,为什么要创建这些案例呢?一个原因是这样做可以提高你解决问题的能力。创建这些案例需要的技能就是解决问题用到的技能。解决问题的技能将会对你的DBA事业有很大的帮助。另一个原因是随着你的事业的发展,你将经常需要创建更复杂的测试案例以便保证数据库和应用程序的成功。在将来,甚至简单的测试案例也可以组成更复杂的数据库和应用程序分解。

    步骤#6: 找一个良师 –一个良师能够为你的DBA生涯(或者其它类似的职业)引领方向。他们能够给你指示,回答问题以及在你的DBA的成长过程中帮助你节约一些时间。但愿这篇文章能够在你事业发展的一段时间内起到良师益友的作用。假如你与一名资深的DBA共同工作,那么那个人应该有责任为你的事业进行有益的指导。你也可以同时选择其他的人指导你。

    步骤#7: 参加本地用户群 –许多跨国家的城市有本地用户群,他们定期聚会讨论数据库相关的话题。假如可能,参加其中一个本地用户群。这将给你一个与他人相互交流的很好的方法。

    我如何能够从一名DBA初学者变为一个具有中级水平的DBA?

    你已经成为DBA一段时间了,你现在希望你的技术水平提高一阶么?下一步该怎么做?首先,往回看前面的部分,确认你已经完成了所有的步骤。彻底理解SQL语言是十分重要的。理解关系型数据库理论和掌握基本的数据库管理任务也是非常重要的。到如今,你应该阅读文档和其他书籍到已经郁闷了。假如没有,那么你还没准备好继续深造,增长你的DBA的技术水平。假如你已经准备好继续了,我已为你的继续深造准备了一些方法。

    步骤#1: 学习操作系统和你的服务器硬件 – 正如我前面所说,数据库存在于操作系统和服务器硬件之上。理解这些组成部分如何工作是很必要的。你应该知道如何与特殊的操作系统相合。你如何删除或者编辑文件?假如你的操作系统是Unix,你应该掌握命令行以及Unix命令如何辅助你工作。对于运行在Windows或其他操作系统上而言也是一样的。你同时需要对服务器的硬件有一定的了解。物理内存和虚拟内存有什么区别?RAID是什么以及不同的级别是如何产生影响的?为什么数据库喜欢更多的物理硬盘而非一个大硬盘卷?你需要知道这些事情以便你能够容易的与系统管理员进行如何配置好你的服务器以便使它能够充分的支持数据库方面的交谈。

    步骤#2: 学习应用程序设计因为它与数据库相关 – 如前面所述,数据库存在于操作系统与数据库应用程序之间。你真的需要这两者。SQL语言是如何帮助创建好的应用程序的?绑定变量是什么并且为什么他们很重要?Tom Kyte 写了一本非常好的书,在Oracle应用程序设计上给出了很好的建议。他的Expert One-on-one Oracle书可在 Wrox Press找到。我强烈推荐阅读此书。他详细的叙述了那些能够生成和破坏Oracle应用程序的东西。你需要知道这些,因为你的应用程序开发人员希望从你这里得到指导和数据库知识。学习任何与应用程序设计有关的知识。也许参加一个关于软件工程,操作系统或数据结构的课程班会有好处。

    步骤#4: 取得认证 – 也许你的工作并不需要,但是取得认证一定对你有益。作为DBA的每一天里,你学到了许多新的和令人激动的事情。也许在你职业生涯的这段时间里,有几天你没学到任何新的东西。但你仍然有很多要学习。成为一名OCP(Oracle Certified Professional) DBA要求你必须已经学到了数据库管理所有方面的基础。我发现在OCP考试的学习过程中,我学到了在我工作中从未接触过的东西。一次我学到了我从未碰到过的一个特殊课题,在后来的日子里我就能够使用那个知识解决问题。假如我从为在OCP考试中学倒它,那么我永远也不会用那种特殊的方法去解决问题。这已经一次次的发生在我的面前。有的人可能会说认证实际上真的不值得。我要说它只会对你有益无害。所以,去取得认证吧!

    步骤#5: 获得一个资源库 – 在前面的部分中,我指出每个DBA都应该在Technet上有个账号。这是你其中一个主要资源。但是同时还有许多其他资源。很多人共享他们的Oracle知识。假如你还没有开始,你应该用网络浏览器去搜索并收集很多Oracle资源。愿意的话,你可以从访问我的网站(http://www.peasland.net)开始。下面是一些Oracle DBA必须了解得网站列表:
    Ask Tom – http://asktom.oracle.com
    Jonathan Lewis web site – http://www.jlcomp.demon.co.uk/
    Ixora (Steve Adams) – http://www.ixora.com.au
    Orapub – http://www.orapub.com
    Metalink (Oracle支持网站) – http://metalink.oracle.com

    还有许多其它的好网站。

    步骤#6: 开始在不同的新闻组和论坛上交流 – 也许你已经发现了他们,但假如现在你还没有那么是时候去开始了。有许多的新闻组和论坛可以回答你的任何Oracle问题。在Oracle群落里还有许多高手愿意和你共享他们的知识。你所要做的就是提问。下面是一个列表包含了可以开始交流的最好的因特网团体:

    Usenet newsgroups – comp.databases.oracle.server 和 comp.databases.oracle.misc 是两个可以交流的非常著名的世界性的新闻组。他们拥有大量的针对Oracle问题的交流卷宗。观看这些组的最好的方法式使用新闻广播员。但是假如你想通过基于web的方式访问,也可以通过Google搜索引擎搜索它。 (http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&group=comp.databases.oracle)
    Quest Pipelines – 当他们在最开始还属于软件提供商RevealNet的时候,被称为the RevealNet Pipelines。现在,Quest购买了RevealNet 并且拥有Pipelines 。因为Pipelines是中等的,所以这些是我最喜欢的。你可以在这里找到Pipelines (http://www.quest-pipelines.com/index.asp)。

    观察别人是如何经历考验和磨难的是一件好事。假如你有问题,可以自由的在群里提出来。假如你要提出问题,通常应该包括一些信息,比如你的Oracle版本和Oracle运行的平台。这些将会得到有很大的差别的答案。假如你忘记了,会有人提醒你!甚至你不用提问也可以从其他人的答案中学到许多知识。我已经记不得多少次我之所以能够解决问题完全是因为我记得其他人在新闻组里问过相同的问题。

    我如何从一名具有中级水平的DBA转变为一名高级DBA?

    好,作为DBA你已经坚持不懈的努力了很长时间。你感到自己已经准备好往前再走一步。成为一名高级DBA需要什么?下面的部分将帮助你走下去。

    步骤#1: 阅读所有的文档 – Oracle文档通常并不是很容易阅读的。无数次,你翻阅文档只是为了要弄清整件事情。假如文档是最好的东西,那么那些站在你的书架里的Oracle书籍就不会有市场。但是文档确实包含了一些无法在任何其他地方找到的信息。例如,你无法找到每一个专门的INIT.ORA参数或V$视图的详细说明。书本上也许会涉及一部分,但是Oracle文档却包含它们所有。我遇到过一个非常厉害的高级DBA,他没有从头至尾的阅读过Oracle文档。这不是偶然的。Oracle文档是必须阅读的。也许到现在为止你已经读过Oracle概念指导十二遍了。但是当Oracle 10i发布了,你还要再次阅读。任何有关10i的新概念将在文档里记录。假如你真的想更上一层,那么,去阅读那些文档。不要逃避它。

    步骤#2: 成为一名专家 – Oracle数据库是一个非常复杂的东西。为了更上一层,你必须精通产品的许多组成部分。以备份与恢复开始。成为一名备份与恢复的专家。故意的破坏数据库然后察看如何恢复它。尝试以任何可能的方式破坏数据库然后查看还有没有可能恢复。你将彻底的理解备份与恢复的概念。在你成为了备份与恢复的专家以后,再去成为其他领域的专家。你会有无穷无尽的题目要去掌握。在你整个职业生涯中都保持如此。但是请记住,无论你有多么专业,在某些领域,某些人会在某些方面知道的比你多。不要带个人情绪。只是尽可能多的从那个人那里学到知识。

    Route #3: 积极参加新闻组,论坛和用户组 – 在前面,我提过为什么不同的新闻组和论坛是学习新知识的很好的地方。现在轮到你进行下一步并且去回答任何你能够回答的问题。你将会惊讶于在这过程中你能学到那么多!

    Route #4: 写白皮书并且展示它们 – 这与前面提到的方法类似。首先,共享你拥有的知识是很重要的。假如你的职业生涯已经走到这一步,那么从某种意义上讲,是离不开他人的贡献的。所以,现在是你为他人奉献的时候了。第二,当你企图共享你的信息的时候会有令人惊异的事情发生。在你要用清楚的,简练的语言表述问题以便其他人能够使用时,那些信息在你的头脑里经过了一个令人瞠目的过程。这个过程使你巩固了知识,这是无法通过其它方法进行的。所以在白皮书中共享那些信息,讨论会,以及新闻组和论坛都是你学习和使你的能力更上一层的非常好的方法。顺着这条路,你应该作两件事。第一,认识到你将会犯错误。其他人将会很高兴的指出那些错误,有时在某种意义上那并不是很好。不要企图掩藏你的错误。承认它们并从它们那里学习。第二,学会说你不知道答案而不是企图以欺骗的方式通过。人们早晚会知道你在企图蒙蔽他们。简单的告诉他们现在你对答案并不肯定,但你会在查到答案后回来告诉他们。假如你时刻谨记这两件事,你就不会违背你的诚实而且你将成长为一名职业的IT人。

    步骤#5: 成为解决Oracle问题的专家– 高级DBA通常都是被看作是解决复杂的Oracle问题的人。你将会用到你所有的技术来解决许多问题,这些技术都是你的职业生涯中积累下来的。我前面提到的任何事都将会在解决问题的过程中用到;文档,书籍,新闻组,测试案例,和其它DBA都将辅助你解决问题。

    步骤#6: 成为性能调优的专家– 高级DBA通常都是被看作是调整数据库和应用程序性能的人。假如你是高级DBA但是你却不能分析性能瓶颈,那么你的公司将会到别处寻找这些服务。

    步骤#7: 成为承载能力计划的专家– 高级DBA通常都是被看作是根据数据增长量和交易增长来计划数据库承载能力的人。高级DBA需要在影响应用程序性能以前发现系统瓶颈。例如,DBA应该知道在数据库将可用的磁盘空间用完以前预置更多的磁盘空间。不密切关注承载能力计划将会导致生产数据库宕机。

    步骤#8: 密切关注新的技术– 高级DBA应该对IT界的关数据库技术的未来有好的建议。有什么可用的技术可以帮助数据库?例如,学习存储领域网的优缺点以及如何把它们应用到数据库系统。有什么技术在不远的将来可以用,哪些能够帮助我们?例如,写这篇文章的时候,linux操作系统正在变得越来越流行。Lunix会给你的数据库操作系统平台带来些什么?它能为你的公司工作么?

    结论

    从获得第一份工作,到从一名初级的DBA成长成一名高级DBA,我希望这篇文章在如何度过你的职业生涯的各个阶段方面给了你一些建议。无论你现在处在你的DBA职业生涯的哪一阶段都可以用到这篇文章。






    oracle的入门心得


    oracle的体系太庞大了,对于初学者来说,难免会有些无从下手的感觉,什么都想学,结果什么都学不好,所以把学习经验共享一下,希望让刚刚入门的人对oracle有一个总体的认识,少走一些弯路。

    一、定位
        oracle分两大块,一块是开发,一块是管理。
       开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。有点类似于程序员,需要有较强的逻辑思维和创造能力,个人觉得会比较辛苦,是青春饭J;
       管理则需要对oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大,因为一个小的失误就会down掉整个数据库,相对前者来说,后者更看重经验。

       因为数据库管理的责任重大,很少公司愿意请一个刚刚接触oracle的人去管理数据库。对于刚刚毕业的年轻人来说,可以先选择做开发,有一定经验后转型,去做数据库的管理。当然,这个还是要看人个的实际情况来定。
    二、学习方法
    我的方法很简单,就是:看书、思考、写笔记、做实验、再思考、再写笔记

    看完理论的东西,自己静下心来想想,多问自己几个为什么,然后把所学和所想的知识点做个笔记;在想不通或有疑问的时候,就做做实验,想想怎么会这样,同样的,把实验的结果记下来。思考和做实验是为了深入的了解这个知识点。而做笔记的过程,也是理清自己思路的过程。

         学习的过程是使一个问题由模糊到清晰,再由清晰到模糊的过程。而每次的改变都代表着你又学到了一个新的知识点。

        学习的过程也是从点到线,从线到网,从网到面的过程。当点变成线的时候,你会有总豁然开朗的感觉。当网到面的时候,你就是高手了

        很多网友,特别是初学的人,一碰到问题就拿到论坛上来问,在问前,你有没有查过书,自己有没有研究过,有没有搜索一下论坛?这就叫思维惰性。由别人来回答你的问题,会让你在短时间内不费劲地弄懂这个知识点,然而通过自己的努力去研究它,不但会更深入的了解这个知识点,更重要的是在研究的过程会提高你解决问题和分析问题的能力。总的来说,没有钻研的学习态度,不管学什么东西,都不会成功的。
           
        当然,初学的人很多时候是因为遇到问题时,无从下手,也不知道去哪里找资料,才会到论坛上提问题的。但我认为,在提问的时候,是不是可以问别人是如何分析这个问题?从哪里可以找到相关的资料?而不是这个问题的答案是什么?授人以鱼不如授人以渔。

       下面我讲下我处理问题的过程

       首先要知道oracle的官方网站:www.oracle.com 这里有oracle的各种版本的数据库、应用工具和权威的官方文档。其次,还要知道http://metalink.oracle.com/ 这里是买了oracle服务或是oracle的合作伙伴才可以进去的,里面有很多权威的解决方案和补丁。然后就是一些著名网站:asktom.oracle.com www.orafaq.net, www.dbazine.com。这里有很多经验之谈。

          遇到问题了。如果是概念上的问题,第一时间可以找tahiti.oracle.com,这里会给你最详细的解释。如果在运行的过程中出了什么错误。可以去metalink看看。如果是想知道事务的处理的经验之谈。可以去asktom。当然。这里只是相对而言。

    三、oracle的体系
    oracle的体系很庞大,要学习它,首先要了解oracle的框架。在这里,简要的讲一下oracle的架构,让初学者对oracle有一个整体的认识。

    1、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成)
    控制文件:包含维护和验证数据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个数据库至少需要一个控制文件
    数据文件:存储数据的文件
    重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件
    参数文件:定义Oracle 例程的特性,例如它包含调整SGA 中一些内存结构大小的参数
    归档文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。
    密码文件:认证哪些用户有权限启动和关闭Oracle例程

    2、逻辑结构(表空间、段、区、块)
    表空间:是数据库中的基本逻辑结构,一系列数据文件的集合。
    段:是对象在数据库中占用的空间
    区:是为数据一次性预留的一个较大的存储空间
    块:ORACLE最基本的存储单位,在建立数据库的时候指定

    3、内存分配(SGA和PGA)
    SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息, 它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。
    PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反PGA 是只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收

    4、后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程)
    数据写进程:负责将更改的数据从数据库缓冲区高速缓存写入数据文件
    日志写进程:将重做日志缓冲区中的更改写入在线重做日志文件
    系统监控:检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复
    进程监控:负责在一个Oracle 进程失败时清理资源
    检查点进程:负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。
    归档进程:在每次日志切换时把已满的日志组进行备份或归档
    服务进程:用户进程服务。
    用户进程:在客户端,负责将用户的SQL 语句传递给服务进程,并从服务器段拿回查询数据。

    5、oracle例程:Oracle 例程由SGA 内存结构和用于管理数据库的后台进程组成。例程一次只能打开和使用一个数据库。

    6、SCN(System Change Number):系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动增加,他是系统中维持数据的一致性和顺序恢复的重要标志。
    四、深入学习


    管理:可以考OCP证书,对oracle先有一个系统的学习,然后看Oracle Concepts、oracle online document,对oracle的原理会有更深入的了解,同时可以开始进行一些专题的研究如:RMAN、RAS、STATSPACT、DATAGUARD、TUNING、BACKUP&RECOVER等等。

    开发:对于想做Oracle开发的,在了解完Oracle基本的体系结构之后,可以重点关注PL/SQL及Oracle的开发工具这一部分。 PL/SQL主要是包括怎么写SQL语句,怎么使用Oracle本身的函数,怎么写存储过程、存储函数、触发器等。 Oracle的开发工具主要就是Oracle自己的Developer Suite(Oracle Forms Developer and Reports Developer这些),学会如何熟练使用这些工具。

    五、开发经验及常见问题


    常见Oracle安装问题说明 [当前帖子数:5]
    1.问题集锦一
    2.Oracle9i在RedhatLinux8.0中的安装详细步骤
    3.问题集锦二
    4.如何配置和使用iSQL*Plus
    5.Oracle9i中Data Guard的新特性以及配置使用

    常见Oracle入门问题说明 [当前帖子数:5]
    1.关于Linux下DBSTART和DBSHUT脚本中需要修改的地方
    2.如何将EXP出来的数据IMP进不同的表空间
    3.如果系统中安装了多个数据库实例,如何修改默认SID
    4.Oracle9i初始化参数注解
    5.关于Oracle数据库的升级(Migration)

    常见Oracle开发问题说明 [当前帖子数:0]

    Oracle技巧与提示 [当前帖子数:3]
    1.如何修改数据库的字符集
    2.如何查看Control File中保存的内容
    3.Oracle9i(Version 9.2)SYS_CONTEXT函数的用法以及同USERENV函数的比较
    六、共享


    介绍几本oracle入门的好书

    oracle官方文档:《concept》上面讲了oracle的体系和概念,很适合初学者看。

    OCP的教学用书,也就是STUDY GUIDE(SG)。在我的FTP上有down。

    Oracle8i 备份恢复手册
    Oracle8高级管理与优化
    Oracle8i PLSQL程序设计
    Oracle8数据库管理员手册
    以上书本都是机械工业出版社出版。



    介绍几个网站
    http://tahiti.oracle.com      oracle的官方文档
    http://metalink.oracle.com/   oracle的技术支持网站。需要购买Oracle服务才能有一个帐号,才能登陆,有大量的Knowledge Base,大量问题解决经验。
    http://www.oracle.com   oracle的官方网站,可以在这里down oracle的软件、官方文档和获得最新的消息
    http://www.dbazine.com/    Oracle的杂志
    http://asktom.oracle.com   
    http://www.orafaq.net/ 
    http://www.ixora.com.au/
    http://www.oracle-base.com
    http://www.dba-oracle.com/oracle_links.htm




    www.boobooke.com 最新网站
    www.boobooke.com/index_old.php 这上面视频多又全
    http://www.boobooke.com/bbs/viewthread.php?tid=1857&extra=page%3D1
    小布老师Oracle 9i DBA Fundamentals I的系列视频下载地址
    在线播放地址:
    第一讲:  
    http://www.boobooke.com/v/bbk1109
    第二讲:  
    http://www.boobooke.com/v/bbk1110
    第三讲:  
    http://www.boobooke.com/v/bbk1112
    第四讲:  
    http://www.boobooke.com/v/bbk1114
    第五讲:  http://www.boobooke.com/v/bbk1115
    第六讲:  http://www.boobooke.com/v/bbk1148
    第七讲:  http://www.boobooke.com/v/bbk1149
    第八讲:  http://www.boobooke.com/v/bbk1150
    第九讲:  http://www.boobooke.com/v/bbk1151
    第十讲:  http://www.boobooke.com/v/bbk1152
    第十一讲: http://www.boobooke.com/v/bbk1153
    第十二讲: http://www.boobooke.com/v/bbk1154
    第十三讲: http://www.boobooke.com/v/bbk1161
    第十四讲: http://www.boobooke.com/v/bbk1162
    第十五讲: http://www.boobooke.com/v/bbk1163
    第十六讲: http://www.boobooke.com/v/bbk1164
    第十七讲: http://www.boobooke.com/v/bbk1165
    第十八讲: http://www.boobooke.com/v/bbk1166
    第十九讲: http://www.boobooke.com/v/bbk1167
    第二十讲: http://www.boobooke.com/v/bbk1168
    第二十一讲: http://www.boobooke.com/v/bbk1169
    第二十二讲: http://www.boobooke.com/v/bbk1170
    第二十三讲: http://www.boobooke.com/v/bbk1171
    第二十四讲: http://www.boobooke.com/v/bbk1179
    第二十五讲: http://www.boobooke.com/v/bbk1180

    下载地址:
    第一讲:  http://www.boobooke.com/v/bbk1109.zip
    第二讲:  http://www.boobooke.com/v/bbk1110.zip
    第三讲:  http://www.boobooke.com/v/bbk1112.zip
    第四讲:  http://www.boobooke.com/v/bbk1114.zip
    第五讲:  http://www.boobooke.com/v/bbk1115.zip
    第六讲:  http://www.boobooke.com/v/bbk1148.zip
    第七讲:  http://www.boobooke.com/v/bbk1149.zip
    第八讲:  http://www.boobooke.com/v/bbk1150.zip
    第九讲:  http://www.boobooke.com/v/bbk1151.zip
    第十讲:  http://www.boobooke.com/v/bbk1152.zip
    第十一讲: http://www.boobooke.com/v/bbk1153.zip
    第十二讲: http://www.boobooke.com/v/bbk1154.zip
    第十三讲: http://www.boobooke.com/v/bbk1161.zip
    第十四讲: http://www.boobooke.com/v/bbk1162.zip
    第十五讲: http://www.boobooke.com/v/bbk1163.zip
    第十六讲: http://www.boobooke.com/v/bbk1164.zip
    第十七讲: http://www.boobooke.com/v/bbk1165.zip
    第十八讲: http://www.boobooke.com/v/bbk1166.zip
    第十九讲: http://www.boobooke.com/v/bbk1167.zip
    第二十讲: http://www.boobooke.com/v/bbk1168.zip
    第二十一讲: http://www.boobooke.com/v/bbk1169.zip
    第二十二讲: http://www.boobooke.com/v/bbk1170.zip
    第二十三讲: http://www.boobooke.com/v/bbk1171.zip
    第二十四讲: http://www.boobooke.com/v/bbk1179.zip
    第二十五讲: http://www.boobooke.com/v/bbk1180.zip

    .......


     

     

  • 决定你一生成就的21个信念(信念的力量)

    2009-07-08 11:13:36

     

    http://sxpujs.javaeye.com/blog/361663

    决定你一生成就的21个信念(信念的力量)

    貌似是陈安之的东东。。。。

     


     

Open Toolbar