posts - 189,comments - 115,trackbacks - 0

Linux应用环境实战02:打造属于自己的Vim

http://www.blogjava.net/youxia/archive/2015/01/09/linux002.html

Linux应用环境实战01:玩转Linux系统的方法论

  Linux系统中很多东西都是以脚本代码、配置文件的形式存在,使用Linux系统时,需经常对这些文件进行编辑。很显然,如果没有文本编辑器,江湖之路寸步难行。

  我的选择是Vim。Vim是Linux系统上的最著名的文本/代码编辑器,也是早年的Vi编辑器的加强版,被誉为文本/代码编辑器之中最为优秀经典的上古神器。 它之所以会获得如此美誉,我想主要有以下原因:1.它古老而神秘,学习曲线陡峭,难以驾驭,但是一旦学会则受益匪浅。如今被看作是高手、Geek们专用的编辑器。所以尽管 Vim 已经是古董级的软件,但还是有无数新人迎着困难去学习使用。 2.轻便,无需多言,当仅仅只需要对某一文本文件(比如脚本代码、配置文件)进行简单的编辑的时候,所使用的工具当然是越轻便越好。Vim同时也是阅读文本文件的利器。 3.经典巧妙的编辑方式及强大的功能。它全程使用键盘操作,用户必须记住一堆快捷键、按键组合以及各种命令才能开始使用,一旦使用熟练则编辑效率远超其余编辑器,而且具有各种插件、语法高亮、代码补全、配色方案等极其丰富的资源以及灵活的配置;

  我主要在以下情况下使用Vim: 1.用来修改服务器系统的配置文件; 很多时候, Linux 作为服务器是不会开启图形界面的,当需要远程操作时,只能利用 SSH “命令字符式”的 Shell 界面对其进行操作,这种情况下,Vim自然是首选。 2.用来阅读内核源代码和系统的脚本; 理由同上。 3.用来写简单的程序,一般都是单文件的程序,或多文件但是只有少数几个文件的项目,比如学习一门编程语言的时候做练习题,喜欢看到文件夹内干干净净,不喜欢一大堆类似.project的文件; 4.装B,花花绿绿的全文本字符界面,很酷。

  不适合Vim使用的场景: 1.大的编程项目,大的项目还是最好使用IDE,如果要远程连接没有图形界面的服务器写大项目,最好还是在服务器上建立代码仓库;理由:VIM没有好的项目管理功能,VIM的自动补全只建立在文本匹配上,没有程序语言的语义分析功能。 2.对内容的输入要求不高,但是经常需要设置显示格式,且每个动作之间本身就有很多的停顿的工作,用其他GUI编辑器(如LibreOffice Writer)效率反而比VIM高。 

  有人说,Vim是“成也插件、败也插件”。Vim灵活的配置和丰富的插件极大地增强了它的功能,但是也极大地增加了我们管理Vim的难度。首先,在使用Vim之前,必须经过适当的配置,而Vim的配置又极其繁琐。所以网上有很多诸如“万能配置”、“最强配置”的文章,这些都可以参考。但是这些文章中有些存在很多错误,甚至前后内容重复、冲突,而且这些文章是“授人以鱼,而不是授人以渔”,它们给出的配置虽然可以照抄,但是经常会让人不明所以。 Vim的插件丰富,在网上不乏使用各种插件将Vim配置成强大IDE的文章,但是Vim的插件管理非常困难,因为每安装一个插件,都需要将该插件的文件分别放到Vim安装路径下的pluginautoloadsyntaxdoc等目录下。好在是Vundle横空出世,它不仅解决了Vim插件在文件系 统中分散的问题,同时能够自动搜索和下载插件。

安装和配置Vim

  使用Vim之前当然需要先安装,不过在Ubuntu中这都不算个事,一条 sudo aptitude install命令就可以搞定。由于Vundle搜索和下载插件需要git,所以需要同时安装vim、gvim和git,如下:

sudo aptitude install vim
sudo aptitude install gvim
sudo aptitude install git


  然后,在用户的主目录中建立 .vim 目录,在 .vim 目录中建立 bundle 目录,以后Vundle自动下载的插件都保存在这里。然后,进入 Bundle 目录,使用 git clone 命令下载vundle。

  下面开始展示我的配置文件(主目录下的 .vimrc 文件)。我的配置不同于网上流传的“万能配置”、“最强配置”。我的配置是能够达到我想要的效果的 “最简单配置”。下图是第1到17行,这里配置了Vundle,使用Vundle来管理插件。在网上的一些配置中,常把Vundle的配置放到配置文件的最后,这是不对的。Vundle的配置必须放到最前面。(如果不用Vundle,用Pathogen插件也一样要把配置放到最前面。)这是因为,只有 Vundle插件运行以后,Vim才会到 ~/.vim/bundle 目录下加载其它的插件,如果Vundle没有先运行,Vim当然找不到下载的插件了。

  第18到44行,如下图,这是在GVim中截的图,顺便展示一下GVim的效果:

  第45到68行:

  第69到86行:

  从截图中可以看出,我的配置文件很简洁,并且将各种设置初略地分了类,并进行了简单的注释。该配置文件只对Vim进行最基本的设置,不包含任何键盘映射,也不包含任何脚本代码。我把Vim和GVim使用了不同的配色方案,Vim使用经典的desert,而GVim则是网上被众多人推崇的solarized,而且该配色方案是使用Vundle自动下载的。

使用Vundle管理插件

  Vundle可以自动下载和安装插件,只需要在“My Bundles Here”注释后面使用 Bundle 命令把所需要的插件列出来,每个插件一行,然后运行 :BundleInstall 命令即可。Vundle支持 github.com 和Vim的官网 vim.org 。前面的配置文件中,solarized配色方案就是Vundle从 github.com 上下载的插 件。下面,看看怎么从 vim.org 下载一个模拟黑客帝国的插件。如下图,在 .vimrc 中增加一行配置:

  保存该配置文件,并重新启动Vim后,使用 :BundleInstall 命令,可以看到自动下载和安装插件:

  输入 :Matrix 命令,可以看到如下效果:

  当然,该插件纯属娱乐。娱乐过后还是删除掉比较好。要删除一个插件,首先要从配置文件中将 Bundle 'matrix.vim--Yang' 这一行删掉或注释掉,如下图:

  然后保存配置文件,重新启动Vim,运行 :BundleClean 命令,如下图,删除一个插件后的效果:

怎么学习使用Vim

  使用Vim之前必须得先做点功课,否则根本玩不转,Vim只会滴滴滴乱响,让人一头雾水。好在Vim有一个非常棒的帮助系统,通过该帮助系统, 可以非常方便地学习Vim。比如前面展示的配置文件,我并没有做过多的解释,因为如果想了解某条设置的作用,只需要 :help 一下即可。下面以 guioptions 设置为例,来了解该帮助系统的用法。从我的截图中可以看到,我的GVim是去掉了工具栏、状态栏、菜单、滚动条的,只保留了编辑界面,要达到该效果,需要使用 set guioptions=... 来设置。要想对 guioptions 有更深入的了解,可以使用 :help guioptions 命令,如下图:

  弹出的帮助文档:

  如果想对Vim进行系统的学习,可以使用不带参数的 :help 命令,如下图:

  Vim的命令非常多,几乎键盘上的每一个按键都有特定的用途,学习Vim的时候一定要做笔记哦。下面,我给大家分享一个Vim的键盘布局图:

  (该图片非常大,可以保存下来观看,或者在新的窗口中打开观看。)

  VIM的使用技巧,看这里http://vim.wikia.com/wiki/Vim_Tips_Wiki

使用Vim阅读Linux内核源代码

  实战演示如何使用Vim阅读Linux内核源代码。工欲善其事、必先利其器,所以在开始工作前需要先安装合适的插件。我前面讲到了使用 Vundle可以自动管理插件,但是没有讲到Vim中究竟有哪些插件可用。可以到Vim的官网看看哪些插件的下载率比较靠前。地址这里:http://www.vim.org/scripts/script_search_results.php?order_by=downloads

  上图是排名前15名的插件的截图。如果只是阅读源代码的话,我觉得taglist.vim和The NERD tree这两个插件就够了,The NERD tree是浏览目录树的利器,taglist.vim是浏览代码的利器,可以非常方便地显示源代码中定义的各种类型、变量、函数等信息,也可以非常方便地在各个符号之间跳转。taglist.vim必须配合tags文件使用,Linux的内核源代码是C语言的,可以使用 ctags 命令生成tags文件。如果是想把Vim打造成强劲的IDE,还需要别的功能,比如自动补全、自动生成代码块、自动注释、自动Make、自动运行/调试等,以后需要用到相关功能的时候我再介绍相应的插件。在这里,只是Read Only,我觉得taglist.vim和The-NERD-tree足以。

  首先,使用前文《玩转Linux系统的方法论》中介绍的方法,找到Linux的内核源代码,并安装:

  然后找出它们都在文件系统的什么地方:

  taglist.vim需要tags文件的支持,而tags文件需要使用tags命令生成,所以需要安装exuberant-ctags,如下图:

  再然后,为Vim安装插件。从下面的图中可以看出,除了taglist.vim和The-NERD-tree,我还安装了a.vim,该插件可以方便地实现在.c文件和.h文件之间跳转。当插件名称中含有空格的时候,以“-”代替,如The NERD tree插件,在配置文件中需写成“The-NERD-tree”。配置插件如下图:

  安装插件如下图:

  再然后,进入Linux内核源代码包的安装目录,解压Linux内核源代码,并生成tags文件,如下图:(这两个步骤都需要有点耐心,因为解压和生成tags这两个操作都很花时间。)

  阅读代码前,需要告诉Vim使用哪一个tags文件,在这里,就是刚刚使用 ctags 生成的文件,可以通过 :set tags=/usr/src/linux-source-3.13.0/tags 来设置。为了方便起见,我把该设置放到了 .vimrc配置文件中,如下图:

  最后,启动Vim,找到相应的代码进行浏览。如果编辑的是一个目录的话(如下面的 :e . 命令,表示编辑当前目录),会自动跳出The-NERD-tree的界面,在目录之间导航非常方便,如下图:

  这里以Linux内核中红黑树的实现为例。使用The-NERD-tree定位到 lib 目录下的 rbtree.c 文件,按Enter键即可打开代码。输入 :TlistToggle 命令可以打开Taglist窗口,如下图:

  在源文件中浏览时,使用Ctrl+]快捷键,可以非常方便地在符号的使用和定义之间跳转。上面的截图是将控制台全屏后的效果,是不是很拉风?

  再看看在GVim中阅读内核代码的效果:

  上图是将GVim窗口最大化后的效果,Solarized的深色主题和Ubuntu自己的紫色主题之间似乎不是很和谐,所以我在系统设置中将Ubuntu左侧的launcher隐藏了。Ubuntu不仅可以隐藏左侧的launcher,而且Gvim的菜单和系统的状态栏合并到了一起,增加了工作区域,阅读代码那是非常舒服的。

  关于The NERD tree和taglist.vim这两个插件,如果想知道关于它们的更高级的用法的话,可以使用 :help NERD_tree.txt  :help taglist.txt 命令查看它们自己的帮助文档,如下两图:


  以上截图全是图形界面下的效果。如果在全字符界面下会是什么样子的呢?

  在CentOS 5.10的全字符界面下截图。如果是默认的80×25的字符界面,工作区域就太小了,经常不能完整显示一整行代码。所以我开启了Framebuffer, 在1024×768的分辨率下工作。下图的配色方案为desert,background=dark的效果:

  还是很漂亮的,不是吗?这也是我曾经最喜欢的工作环境。可是现在已经很难再找到1024×768的4:3的显示器了。对于现在的高清宽屏显示器,点距太小,屏幕太大,眼睛就会很吃力。

  下图是使用solarized配色方案,background=dark时的效果:

  对比度比desert要更强烈一些,也还过得去。

  如果在solarized配色方案中设置background=light,则根本没法看:

  由此可见,solarized是一个专为GUI设计的配色方案。同一个配色方案,在图形界面下和在字符界面下,其效果是不同的。

  除了经典的desert,还有一个经典的配色方案,那就是evening,效果见下图:


posted @ 2015-03-24 14:57 MEYE 阅读(764) | 评论 (2)编辑 收藏

小技术团队管理工具大比拼

http://www.csdn.net/article/2015-03-23/2824289
运营和管理团队时,怎样实现合理跟踪工作内容、实现良好协作流程至关重要。对于小团队来说,该如何选择适合自己的团队管理协助工具呢?本文将围绕团队管理工具展开,聊聊你所用过的管理工具。

加入CTO俱乐部,与14000名+实名制、中高级技术管理者做朋友。 【官网申请】【上传名片快捷加入】

CTO俱乐部 会员权益:技术交流、餐叙、个人主页、CTO周刊、折扣优惠、大会门票、人才招聘、每月赠书等 


运营和管理团队时,怎样实现合理跟踪工作内容、实现良好协作流程至关重要。对于小团队来说,该如何选择适合自己的团队管理协助工具?Redmine、Trello、JIRA等,类似的团队管理工具不少,都可实现团队事务 跟踪、高效协作并快速处理任务开展讨论等基本功能。本期讨论围绕团队管理工具展开,聊聊你所用过的管理工具。

工欲善其事,必先利其器

幸或不幸,从中华文化传统看来,软件开发都落在“工”这个领域;而从近代学科分类来看, 软件开发也属于“工程”这个领域(所谓的软件工程学科)。无论传统文化的经验说法“工 欲善其事,必先利其器”,还是从现代软件工程学的理论,都强调工具在软件开发中的重要 作用。同时,软件项目涉及的技术越来越广泛,需要多个开发人员同时参与。如同建筑学一 样,软件产品将美学、人文等要求提到了和功能性要求同等重要的地位,让软件开发不再只 是程序员的事情,而需多个工种协作来完成。

因此,对于一个软件团队,当从一个人参与变为多人协作,由一个工种变为多方配合,团队 管理协作的“器”就变得可能比开发工具的“器”更重要了。基于此,我们软件部门在工作 时,都在不断尝试不同的工具。分享一下其中的部分工具使用经验,供大家参考。

需求和文档 管理类

  • Trello

Trello是一个轻量级的团队协作工作,形式灵活,操作比较简便。其使用类似于在一个白板(Board)上把团队所要做的事情都列为ToDo、Doing、Done等列表形式来进行典型的PDCA式 管理,并可对某一任务多人进行跟帖式讨论。当然这些列表都可以自定义,所以也可以用 Trello来做任何类似于便签式的管理。我们部分队员就用它来做备忘录,利用其做权限控制, 在团队间分享比如服务器IP、登录账号信息等。

项目和时间管理类

  • Redmine、Microsoft Project

这两个是使用较多的项目管理工具。Microsoft Project更多地用于项目经理进行任务拆分 (WBS),并在计算资源(包括人力)的分配和计算上功能更全,提供项目管理的视角更全; Redmine则适合在开发工作开始后整个团队自行进行任务进度管理和时间跟踪。

  • Teamcola

当开发人员面临同时处在多个项目或项目管理人员有很多杂事时,时间往往会被碎片化。对 碎片化的时间,如果没有一个良好的时间跟踪管理工具,往往容易导致效率低下。同时,如 果开发人员遇到一个困难点花费过多精力而负责人不能及时掌握并给予帮助,也会影响项目 进度。Teamcola这个由国内团队开发的时间管理工具,能较好地解决时间问题,而其管理粒 度为半小时,也不会过多增加管理成本。我们还定义了一个“杂项”事件(在半小时后做了 很多事情)。如果你有很多杂项,那么要不就是你是老板,要不就是你的时间管理有问题。

质量管理和事务/Bug管理类

  • Redmine

Redmine因其问题的字段齐全且可自定义字段,并可利用插件从csv文件中导入导出,同时 其Web访问特性也很适合开发给用户提交问题,所以是使用较多的Bug追踪系统。当然其完 全免费,也是一个重要考虑因素。

  • Git/GitLab

Git作为一个分布式代码管理工具,当我们经常在家写代码,而公司的代码服务器被配置为局 域网访问,Git以其支持离线代码管理的功能逐渐替代SVN成为团队的代码管理工具。当然众 多开源项目从SoureForge搬家到GitHub,也是开发团队必须掌握Git这个代码控制的一个重要 理由。另外,GitLab本身自带简单的问题跟踪以及Wiki系统,在小型项目可替代Redmine。

工为器所累

大家也看出来了,工具太多了!在我们的团队使用过程中,也发现了这个问题,有队员表示 “每天处理事情的系统越来越多了”、“找个合体的吧”。工具太多,使用不当,工具的使用成 本可能大于其提升的效率。最大的问题是工具间太独立,不具有单点登录功能。想想开始工 作前,要在N个工具中输入可能不同的账户名和密码,就是一件头疼的事。因此,目前这些工 具需要接入第三方且统一的用户系统的功能。

器为工所用

不想为“器”所累,在实际工作中根据不同的 项目特性,推荐采用不同的工具和工作方式,取“器”之神而不在其形。 比如对小型移动App的开发,功能需求单一,开发周期不长,维护周期也较短,采用Excel来 做WBS拆分和管理以及Bug跟踪已经足够。另外,在需求沟通和Bug跟踪时,往往需要用户参与,而让用户去学习诸如Trello、Redmine显然行不通。这时,我们会直接选用QQ来进行需 求沟通。通常,我们会建立一个群(对长期的项目)或者一个讨论组(对于短期项目),把相关 的人员都加入其中。QQ的即时信息、语音、截屏、文件传送甚至远程桌面等功能,让其在我 们的开发过程中成为一个重要的协调工具。

作者简介:熊兵 摩博科技CTO

本文来自:《程序员》电子刊2014年第4期


posted @ 2015-03-24 14:52 MEYE 阅读(375) | 评论 (0)编辑 收藏

Node.JS超越jQuery成为Github上第二受欢迎的开源项目

前十大开源项目


  • Boostrap 目前最爱欢迎的响应式前端CSS框架
    CSS  71,832  26,853  twbs/bootstrap

    The most popular front-end framework for developing responsive, mobile first projects on the web.
    Updated 8 hours ago

  • NodeJS 基于事件驱动和异步I/O的后端JavaScript平台
    JavaScript  31,923  7,105 joyent/node

    Updated 4 days ago

  • jQuery JavaScript 库
    JavaScript  31,768  7,303 jquery/jquery

    Updated 6 hours ago

  • D3 可视化HTML与SVG库。 注:部分功能与jQuery重叠,将SVG和HTML的选择器(操作)进行了统一,数据(json)驱动
    JavaScript  30,040  6,923 mbostock/d3

    Updated 4 days ago

  • 免费编程书籍
     28,703  5,787 vhf/free-programming-books

    Updated 9 hours ago

  • AngularJS HTML的Web前端框架,用来构建单页面APP
    JavaScript  28,545  10,587 angular/angular.js

    Updated 6 hours ago

  • Html5-Boilerplate 专业的前端Web网页模板,适合Web应用和网站
    JavaScript  26,669  7,016 h5bp/html5-boilerplate

    Updated 15 hours ago

  • Font-Awesome 优美的CSS字体图标集
    CSS  26,637  3,746 FortAwesome/Font-Awesome

    Updated 18 days ago

  • Ruby on Rails 平台
    Ruby  23,186  8,768 rails/rails

    Updated an hour ago

  • Impress.JS 基于CSS3和transforms和transitions(变换,移动)的展示框架。注:更炫的PPT
    JavaScript  21,517  4,478 bartaz/impress.js

    Updated 25 days ago



前十大受欢迎语言


自从2013年JavaScript成为Github上最流行的语言之后,基于JavaScript的开源项目数量旦越来越多,正不断拉开与其它语言的距离。注* 基于Python,Ruby,Java,PHP开源项目的数量相当。

目前排名:
156,118     JavaScript
87,411      Python
87,272      Ruby
71,920      Java
69,370      PHP
41,166      C
32,229      C++
30,715      Objective-C
21,548      Shell
20,358      C#


统计基于Github上2个人以上关注(star:>1)的开源项目的数量(去除没有人和只有作者本身关注的情况),Github趋势地址。 


注* 2013年的排名

没有去除关注数<2的情况,想看过去几年的情况可以查看原文地f址

RankLanguage# Repositories Created
1JavaScript264131
2Ruby218812
3Java157618
4PHP114384
5Python95002
posted @ 2015-03-18 14:06 MEYE 阅读(330) | 评论 (0)编辑 收藏

视频: 励志片:你有多想要成功?

http://v.youku.com/v_show/id_XNzM0NzYwMDY4.html?from=y1.2-1-98.3.1-1.1-1-1-0



http://v.youku.com/v_show/id_XNzM0NzYwMDY4.html


posted @ 2015-02-24 12:37 MEYE 阅读(349) | 评论 (0)编辑 收藏
创业及野心的一定要看
http://blog.csdn.net/gzshun/article/details/6990058
 1、一个年轻人,如果三年的时间里,没有任何想法,他这一生,就基本这个样子,没有多大改变了。 
2、成功者就是胆识加魄力,曾经在火车上听人谈起过温州人的成功,说了这么三个字,“胆子大”。这其实,就是胆识,而拿得起,放得下,就是魄力。 
3、这个世界,有这么一小撮的人,打开报纸,是他们的消息,打开电视,是他们的消息,街头巷尾,议论的是他们的消息,仿佛世界是为他们准备的,他们能够呼风唤雨,无所不能。你的目标,应该是努力成为这一小撮人。 
4、如果,你真的爱你的爸妈,爱你的女朋友,就好好的去奋斗,去拼搏吧,这样,你才有能力,有经济条件,有自由时间,去陪他们,去好好爱他们。 
5、这个社会,是快鱼吃慢鱼,而不是慢鱼吃快鱼。 
6、这个社会,是赢家通吃,输者一无所有,社会,永远都是只以成败论英雄。 
7、如果你问周围朋友词语,如果十个人,九个人说不知道,那么,这是一个机遇,如果十个人,九个人都知道了,就是一个行业。 
8、任何一个行业,一个市场,都是先来的有肉吃,后来的汤都没的喝。 
9、这个世界上,一流的人才,可以把三流项目做成二流或更好,但是,三流人才,会把一流项目,做的还不如三流。 
10、趁着年轻,多出去走走看看。读万卷书,不如行万里路,行万里路,不如阅人无数。 
11、与人交往的时候,多听少说。这就是,上帝为什么给我们一个嘴巴两个耳朵的原因。 
12、日常工作之外应当多注意自身修养的提高及自身技能的培训。随着计算机技术的广泛应用,为了不被社会所淘汰,就必须加强计算机技术的培训与提高。无论是企业培训还是个人培训都是不可或缺的。 
13、不要装大,对于装大的人,最好的办法就是,捡块砖头,悄悄跟上去,一下子从背后放倒他。 
14、不要随便说脏话,这会让别人觉得你没涵养,不大愿意和你交往。即使交往,也是敷衍。因为他内心认定你素质很差。 
15、想要抽烟的时候,先问下周围的人可不可以,要学会尊重别人。少在女生面前耍酷抽烟,你不知道,其实她们内心很反感。 
16、买衣服的时候,要自己去挑,不要让家人给你买,虽然你第一第二次买的都不怎么样,可是,你会慢慢有眼光的。 
17、要想进步,就只有吸取教训,成功的经验都是歪曲的,成功了,想怎么说都可以,失败者没有发言权,可是,你可以通过他的事例反思,总结。教训,不仅要从自己身上吸取,还要从别人身上吸取。 
18、学习,学习,再学习,有事没事,去书店看看书,关于管理,金融,营销,人际交往,未来趋势等这些,你能获得很多。这个社会竞争太激烈了,你不学习,就会被淘汰。中国2008底,有一百多万大学生找不到工作。竞争这么激烈,所以,一定要认识一点,大学毕业了,不是学习结束了,而是学习刚刚开始。还有,我个人推荐一个很好的视频节目,《谁来一起午餐》。 
19、如果你不是歌手,不是画家,也不是玩行为艺术的,那么,请在平时注意你的衣着。现在这个社会,衣着能表现出你属于哪一个群体,哪一个圈子。 
20、记住,平均每天看电视超过三个小时以上的,一定都是那些月收入不超过两千元的,如果你想要月收入超过两千,请不要把时间浪费在电视上。同样的道理,那些平均每天玩网络游戏或聊天超过三个小时以上的,也都是那些月收入不超过两千的。 
21、因为穷人很多,并且穷人没有钱,所以,他们才会在网络上聊天抱怨,消磨时间。你有见过哪个企业老总或主管经理有事没事经常在QQ群里闲聊的? 
22、无论你以后是不是从事销售部门,都看一下关于营销的书籍。因为,生活中,你处处都是在向别人推销展示你自己。 
23、平时的时候,多和你的朋友沟通交流一下,不要等到需要朋友的帮助时,才想到要和他们联系,到了社会,你才会知道,能够认识一个真正的朋友,有多难? 
24、如果你想知道自己将来的年收入如何。找你最经常来往的六个朋友,把他们的年收入加起来,除以六,就差不多是你的了。这个例子,可以充分的说明一点,物以类聚。 
25、不要听信身边人的话,大一不谈恋爱,好的女孩子就被别人都挑走了。想想,刚上大一就耐不住寂寞,受不住诱惑,而去谈恋爱的女孩子,值得自己去追吗?大学里,可以有一场爱情,可是,不要固执地认为,刚上大一,就必须要谈恋爱。 
26、记得,要做最后出牌的人,出让别人觉得出其不意的牌,在他们以为你要输掉的时候,这样,你才能赢得牌局。 
27、关于爱情,有这么一句话,没有面包,怎么跳舞?无论什么时候,你决定去好好爱一个人的时候,一定要考虑给她你能给予的最好的物质生活。 
28、给自己定一个五年的目标,然后,把它分解成一年一年,半年半年的,三个月的,一个月的。这样,你才能找到自己的目标和方向。 
29、无论什么时候,记住尊严这两个字,做人是要有尊严,有原则,有底线的。否则,没有人会尊重你。 
30、如果,我只能送你一句忠告,那就是,这个世界上没有免费的午餐,永远不要走捷径!
posted @ 2012-01-04 09:50 MEYE 阅读(912) | 评论 (1)编辑 收藏

技术人员需要多才多艺

2011年是云计算风起云涌的一年,云计算在国内开始走下云端,落地应用。它会最终促使全球资源集中化,各种资源通过各种技术按照市场的规则被归类集中起来,从而使得资源的利用效达到最大化。

云计算会引起人们思维方式发生很大的改变,让我们学着从整体的角度来应对各种问题,用均衡的思想去处理整个系统里局部之间的关系。它对现有的软硬件厂商带来全新的创业和创新机会,要想抓住云计算,就需要把产品功能不断完善,去抓住云计算的机会。

云计算涉及的分布式、虚拟化和自动化管理等技术均不是新技术,硬件方面也是大家所熟知的产品。可以说,云计算并不是技术的创新,而是让老技术通过重新组合发挥出更大的商业价值,是一种商业模式的创新。它的市场规模巨大。以后软件慢慢地将会以服务的形式来提供,服务将通过互联网来实现。软件是服务的载体,服务是软件的表现形式,软件和服务之间的边界会慢慢变得模糊。云计算的兴起使得传统的软件外包将发生变化,外包的重心将从流程转向软件服务。

云计算不仅影响着计算机技术的发展,还对IT专业人士的就业产生了重大影响。云计算会创造一些新的就业岗位,即便是所有的后台管理和维护工作都交给了云供应商,企业也需要对基础设施建设有比较深刻的掌握和理解。云计算催生了对这方面人才需求的同时,作为IT技术人如何在这股大潮中脱颖而出? 如果想要在云计算开辟的新环境下获得成功,技术人员需要多才多艺,而且精通各种技术。并且需要与其他非技术部门共事,需要每一个人都能身兼数职。

我们需要多学习分布式理论和工程实践以及学习安全方面的知识和法规,编写软件慢慢向服务转变,能解决大规模并行计算、数据分布存储、数据实时备份、应用高度集成以及安全可靠和个性化应用等问题。能将公司的内部基础实施和外部基础设施相衔接的混合技术是很受青睐的。



要形成自己的核心竞争力

在之前的PC时代和互联网时代,人们都有一些顾虑,觉得智能化新技术的到来和采用将会导致就业人数急剧减少。

但实际上,无论是PC还是互联网这样新技术的到来,其实都对就业有极大的促进作用,其中最明显的例子,莫过于电子商务。虽然现在的电子商务对实际线下的消费有所影响,但它本身所需的一整套产业链,从网站展示到支付和物流等都需要大量的从业人员,而且电子商务这种新模式也引起更多的消费。而且以美国为例,现阶段IT方面的就业情况和很多传统行业相比,应该光明很多。

首先,在我看来,新的技术将有力地促进就业:

其一,由于云计算技术到来,使得很多过去认为很艰难的事情成为可能,比如海量数据分析、物联网和移动互联网等,而这些新的发展将会导致更多专业人士得到工作;

其二,新的大型云计算中心建设和云计算相关产业链将会产生越来越多新的职位,也需要更多的专业人士投入其中。

其次,我认识云计算能使职业发展更专业化,也主要有下面这两点:

其一,由于公有云的越来越常见,将会减少那些在低效率的企业内部数据中心工作的系统管理人员,而在那些高效率的大型云计算中心则会增加一些系统管理员,而且这些系统管理员将会在大型云计算中心这样的大舞台得到更大的发挥和培养,以及长期经验的积累;

其二,由于云计算将会提供诸如PaaS这样高效率的开发模式,将使得很多企业的内部IT人员将会慢慢地将更多关注力从技术转向业务。这不仅能帮助这些IT人员得到更好的职业发展,而且将帮助企业的业务更好地与IT服务之间进行嫁接。

最后,我想和大家说,不要惧怕新浪潮的到来。因为新浪潮并不使你过去的经验一文不值,而是去适应这股新的浪潮,学习一些新的东西,并且在平时的实践中进行不断的积累,从而形成自己的核心竞争力,比如,对技术或者业务深刻的理解,也可以是人脉等。

posted @ 2011-12-19 19:26 MEYE 阅读(502) | 评论 (0)编辑 收藏
[转] 身体器官工作表一览,别熬夜
分类: 网络精品

任何试图更改生物钟的行为,都将给身体留下莫名其妙的疾病,20、30年之后再后悔,已经来不及了。 
一、晚上9-11点为免疫系统(淋巴)排毒时间,此段时间应安静或听音乐 。 
二、晚间11-凌晨1点,肝的排毒,需在熟睡中进行。 
三、凌晨1-3点,胆的排毒,亦同。 
四、凌晨3-5点,肺的排毒。此即为何咳嗽的人在这段时间咳得最剧烈,因排毒动作已走到肺;不应Medicine,以免抑制废积物的排除。 
五、凌晨5-7点,大肠的排毒,应上厕所排便。 
六、凌晨7-9点,小肠大量吸收营养的时段,应吃早餐。疗病者最好早吃,在6点半前,养生者在7点半前,不吃早餐者应改变习惯,即使拖到9、10点吃都比不吃好。 
七、半夜至凌晨4点为脊椎造血时段,必须熟睡,不宜熬夜 
手、脚、身体各个穴位所对应的内脏 (图) 
下面这几张图显示了,咱们的手、脚、身体各个穴位所对应的内脏。按摩的时候,对准穴位下力,才能对我们身体有益。
 
 
如图所示,比如我们的脚趾分别代表了我们眼睛和耳朵,而整个脚底就相当于人体身体的主干。
下面是手 
身体是革命的本钱,学会了自己给自己按摩一下吧。 
拉拉耳朵养护全身器官 
肾是人体重要脏器之一,乃先天之本。肾脏功能是否正常,对健康长寿有着举足轻重的作用。 
   中医五行学说认为,肾主藏精,开窍于耳,医治肾脏疾病的穴位有很多在耳部。所以经常进行双耳锻炼法,可起到健肾壮腰、养身延年的作用。 
  一、提拉耳垂法 双手食指放耳屏内侧后,用食指、拇指提拉耳屏、耳垂,自内向外提拉,手法由轻到重,牵拉的力量以不感疼痛为限,每次3~5分钟。此法可治头痛、头昏、神经衰弱、耳鸣等疾病。 
  二、手摩耳轮法 双手握空拳,以拇、食二指沿耳轮上下来回推摩,直至耳轮充血发热。此法有健脑、强肾、聪耳、明目之功,可防治阳痿、尿频、便秘、腰腿痛、颈椎病、心慌、胸闷、头痛、头昏等病症。 
  三、提拉耳尖法 用双手拇、食指夹捏耳廓尖端,向上提揪、揉、捏、摩擦15~20次,使局部发热发红。此法有镇静、止痛、清脑明目、退热、抗过敏、养肾等功效,可防治高血压、失眠、咽喉炎和皮肤病。 
  四、搓弹双耳法 两手分别轻捏双耳的耳垂,再搓摩至发红发热。然后揪住耳垂往下拉,再放手让耳垂弹回。每天两三次,每次20下。此法可促进耳朵的血液循环,有健肾壮腰之功效。 
  五、双手拉耳法 左手过头顶向上牵拉右侧耳朵数十次,然后右手牵拉左耳数十次。这一锻炼还可促进颌下腺、舌下腺的分泌,减轻喉咙疼痛,治慢性咽炎。 
  六、双手掩耳法 两手掌掩两耳廓,手指托后脑壳,用食指压中指弹击24下,可听到“隆隆”之声,曰击“天鼓”。此刺激可活跃肾脏,有健脑、明目、强肾之功效。 
  七、全耳按摩法 双手掌心摩擦发热后,向后按摩腹面(即耳正面),再向前反折按摩背面,反复按摩5~6次。此法可疏通经络,对肾脏及全身脏器均有保健作用。 
  八、双手扫耳法 以双手把耳朵由后面向前扫,这时会听到“嚓嚓”的声音。每次20下,每日数次,只要长期坚持,必能强肾健身。 
  以上八法,可根据各人所需选择,或单项或几项配合进行,只要能持之以恒,一定能收到理想的效果。 
简单易学的强肾健体保健法 
祖国传统医学认为,肾为先天之本,生命之源,肾气充盈,则精力充沛,筋骨强健,步履轻快,神思敏捷,肾气亏损则阳气虚弱,腰膝酸软,易感风寒,生疾病等。  肾虚病症有阴虚、阳虚之分。  肾阴虚者,有肺热、咽燥、腰膝酸软、头晕耳鸣、舌苔偏红等症状。 
  肾阳虚者,常见有肢体畏寒、精神萎靡、腰酸耳鸣、舌淡、体胖等症状。 
  中医认为,肢体的功能活动,包括关节、筋骨等组织的运动,皆由肝肾所支配,故有“肾主骨,骨为肾之余”的说法,因此坚持体育锻炼,以取得养筋健肾、舒筋活络、畅通气脉、增强自身抵抗力之功效,从而达到强肾健体目的。散步、慢跑、打球、做操、练拳舞剑等,都是不错的锻炼项目。下面介绍几个简单的保健方法,您可以试试。 
  搓擦腰眼:两手搓热后紧按腰部,用力搓30次。“腰为肾之府”,搓擦腰眼可疏通筋脉,增强肾脏功能。 
  揉按丹田:两手搓热,在腹部丹田处按摩30~50次。丹田乃人之真气、真精凝聚之所,为人体生命之本。此法常用之,可增强人体的免疫功能,提高人体的抵抗力,从而达到强肾固本的目的,有利于延年益寿。 
  发“吹”音 “吹”与肾相应,肾属水,故有滋养肾水的功效。反复做6~9遍。 
  另外,心脏对应的是“呵”音,肝脏对应的是“嘘”的音,脾对应的是“呼”的音,肺对应的是“斯”的音,三焦对应的是“唏”的音。发音的时间长一些,次数多一些。 
  健脾通胃肠气的保健方法: 
  双手重叠,顺时针绕肚脐揉腹,以通为主,可促进胃肠气通畅,逆时针绕肚脐揉腹,则以补为主,可起到健脾作用,便秘患者,多顺时针揉,脾虚者,则加逆时针揉,每次300~500下,每天1~2次。

我的更多文章
posted @ 2011-12-17 14:19 MEYE 阅读(512) | 评论 (0)编辑 收藏
     摘要: [转] 一堂价值39万元的课,把它看完,你一定会有收获的 如果你能认真看完这篇文章,你真的会收获很多,虽然你不会像身历其境一样得到课 程的内容,但如果你懂得思考,你真的会有很打的收获!     幸福是自己去争取的,不管是友情或爱情很多事情,错过了就没有了,所以如果你没有 认真看完这篇文章,以后你就没有了! &...  阅读全文
posted @ 2011-12-17 14:07 MEYE 阅读(576) | 评论 (0)编辑 收藏
[转] 俞敏洪+马云+牛根生+史玉柱 不看会一辈子失败

俞敏洪经典语录:
1.女人如果因为觉得一个男生帅就跟嫁给他,这是好色;男生因为女生漂亮而娶她,是审美。
2.为什么你不要自傲和自卑?
你可以说自己是最好的,但不能说自己是全校最好的、全北京最好的、全国最好的、全世界最好的,所以你不必自傲;同样,你可以说自己是班级最差的,但你能证明自己是全校最差的吗?能证明自己是全国最差的吗?所以不必自卑。
3.年纪大了,人们看重不再是外表,不是你帅不帅,而是看你的内心的魅力:你的气魄、气概。
4.这个世界上有很多天才,天才是用来欣赏的,不是用来攀比的。
5.你说我是猪,不对,其实我连猪都不如。
很多人失去了快乐,是因为他太敏感了。别人一句话、一个评论就使自己生气一个月。这时非常无聊的。严重了就成了马家爵,因为别人不请自己吃饭就郁闷地要杀人。
6.要每天多努力一些,比别人多努力一个小时。
7.使这个世界灿烂的不是阳光,而是女生的微笑。
8. 要引人敬意,就要研究一个非常专业的领域,在那个领域中,你是最顶尖的,至少是中国钱10名,这样无论任何时候你都有话说,有事情可作。我俞敏洪原来想成为中国研究英语的前100名,但后来发现根本不可能。所以我就背单词,用1年的时间背诵了一本英文词典,成为中国单词专家,现在我出版的红宝书系列:从初中到GRE词汇有十几本,年销量100万册,稿费比我正式工作都高的多。
9.大学生应该做的事情是:
(1)专业方面,成为中国前100名;
(2)人文方面,读500本书。
(3)英语。
10.如果你要引人注目,就要使得自己成为一棵树,傲立于大地之间;而不是做一颗草,你见过谁踩了一棵草,还抱歉地对草说:对不起?
11.学英语好比学鸟叫,你在树林里学鸟叫,当有四只鸟落在你肩上时,说明你过了英语四级,当有六只鸟落在你肩上时,说明你过了英语六级,当有许多鸟落在你肩上,说明你成了鸟人。
12.女人的温柔和男人的成就是成正比的。
13、俞敏洪在《赢在中国》点评语录
蜗牛的壳是自己加上的。
既靠天,也靠地,还靠自己。
心平气和地接受失败。
做人要大方、大气,不放弃!
世界上没有绝对的公平,公平只在一个点上。
心中平,世界才会平。
学会给别人机会。
名次和荣誉,就像天上的云,不能躺进去,躺进去就跌下来了。名次和荣誉其实是道美丽的风景,只能欣赏。
只要出于同情心和面子做的事,几乎都会失败。
每条河流都有一个梦想:奔向大海。长江、黄河都奔向了大海,方式不一样。长江劈山开路,黄河迂回曲折,轨迹不一样。但都有一种水的精神。水在奔流的过程中,如果沉淀于泥沙,就永远见不到阳光了。
14、俞敏洪:人要像树一样活着
于《赢在中国》第三赛季36进12现场演讲
人的生活方式有两种,
第一种方式是像草一样活着,
你尽管活着,每年还在成长,
但是你毕竟是一棵草,
你吸收雨露阳光,
但是长不大。
人们可以踩过你,
但是人们不会因为你的痛苦,而他产生痛苦;
人们不会因为你被踩了,而来怜悯你,
因为人们本身就没有看到你。
所以我们每一个人,
都应该像树一样的成长,
即使我们现在什么都不是,
但是只要你有树的种子,
即使你被踩到泥土中间,
你依然能够吸收泥土的养分,
自己成长起来。
当你长成参天大树以后,
遥远的地方,人们就能看到你;
走近你,你能给人一片绿色。
活着是美丽的风景,
死了依然是栋梁之才,
活着死了都有用。
这就是我们每一个同学做人的标准和成长的标准。
马云经典语录:

1.当你成功的时候,你说的所有话都是真理。
2.我永远相信只要永不放弃,我们还是有机会的。最后,我们还是坚信一点,这世界上只要有梦想,只要不断努力,只要不断学习,不管你长得如何,不管是这样,还是那样,男人的长相往往和他的的才华成反比。今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。
3.孙正义跟我有同一个观点,一个方案是一流的Idea加三流的实施;另外一个方案,一流的实施加三流的Idea,哪个好?我们俩同时选择一流的实施,三流的Idea。
4.我既要扔鞭炮,又要扔炸弹。扔鞭炮是为了吸引别人的注意,迷惑敌人;扔炸弹才是我真正的目的。不过,我可不会告诉你我什么时候扔鞭炮,什么时候扔炸弹。游戏就是要虚虚实实,这样才开心。如果你在游戏中感到很痛苦,那说明你的玩法选错了。
5.“其实,有的时候人的最大问题就在于他说的都是对的” 。
6.那些私下忠告我们,指出我们错误的人,才是真正的朋友。
7.我生平最高兴的,就是我答应帮助人家去做的事,自己不仅是完成了,而且比他们要求的做得更好,当完成这些信诺时,那种兴奋的感觉是难以形容的……
8.注重自己的名声,努力工作、与人为善、遵守诺言,这样对你们的事业非常有帮助。
9. 商业合作必须有三大前提:一是双方必须有可以合作的利益,二是必须有可以合作的意愿,三是双方必须有共享共荣的打算。此三者缺一不可。
10.服务是全世界最贵的产品,所以最佳的服务就是不要服务,最好的服务就是不需要服务.
11.永远不要跟别人比幸运,我从来没想过我比别人幸运,我也许比他们更有毅力,在最困难的时候,他们熬不住了,我可以多熬一秒钟、两秒钟。
12.今天到北大演讲心里特别激动。我一直把北大的学子当做我的偶像,一直考却考不进,所以我想如果有一天我一定要到北大当老师。
13.看见10只兔子,你到底抓哪一只?有些人一会儿抓这个兔子,一会儿抓那个兔子,最后可能一只也抓不住。CEO的主要任务不是寻找机会而是对机会说NO。机会太多,只能抓一个。我只能抓一只兔子,抓多了,什么都会丢掉.
14.我们公司是每半年一次评估,评下来,虽然你的工作很努力,也很出色,但你就是最后一个,非常对不起,你就得离开。
15.我们与竞争对手最大的区别就是我们知道他们要做什么,而他们不知道我们想做什么。我们想做什么,没有必要让所有人知道。
16.网络上面就一句话,光脚的永远不怕穿鞋的。
17.中国电子商务的人必须要站起来走路,而不是老是手拉手,老是手拉着手要完蛋。我是说阿里巴巴发现了金矿,那我们绝对不自己去挖,我们希望别人去挖,他挖了金矿给我一块就可以了。
18.我深信不疑我们的模式会赚钱的,亚马逊是世界上最长的河,8848是世界上最高的山,阿里巴巴是世界上最富有的宝藏。一个好的企业靠输血是活不久的,关键是自己造血。
19.我为什么能活下来?第一是由于我没有钱,第二是我对INTERNET一点不懂,第三是我想得像傻瓜一样。
20.发令枪一响,你是没时间看你的对手是怎么跑的。只有明天是我们的竞争对手。
21.如果早起的那只鸟没有吃到虫子,那就会被别的鸟吃掉。
22.听说过捕龙虾富的,没听说过捕鲸富的。
23.好的东西往往都是很难描述的。
24.在我看来有三种人,生意人:创造钱;商人:有所为,有所不为。企业家:为社会承担责任。企业家应该为社会创造环境。企业家必须要有创新的精神。
25.一个公司在两种情况下最容易犯错误,第一是有太多的钱的时候,第二是面对太多的机会,一个CEO看到的不应该是机会,因为机会无处不在,一个CEO更应该看到灾难,并把灾难扼杀在摇篮里。

牛根生经典语录:

1.小胜凭智,大胜靠德。
2.有干劲,你就洒下汗水;有知识,你就献出智慧;二者都不具备,请你让出岗位。
3.城市多喝一杯奶,农村致富一家人。
4.财散人聚,财聚人散。
5.一个产品,抓眼球,揪耳朵,都不如暖人心。
6.一个人智力有问题,是次品;一个人的灵魂有问题,就是危险品。经营人心就是经营事业。
7.好心态才有好状态。
8.帮助别人,但不伤害别人。
9.要想知道,打个颠倒。
10.从无到有,是件快乐的事。而从有到无,同样是种快感。
11.产品市场是亿万公民,资本市场是千万股民,原料市场是百万农民。
12.让认识你的人受益,还不能算好;让不认识你的人也受益,那才是真好。
13.吃亏吃到再也吃不进的时候,就不会吃亏了。苦多了,甜就大了。
14.想赢个三回两回,三年五年,有点智商就行;想做个百年老店,想一辈子赢,没有德商绝对不行。
15.学得辛苦,做得舒服;学得舒服,做得辛苦。
16.产品等于人品,质量就是生命。
17.看别人不顺眼,首先是自己修养不够。
18.从最不满意的客户身上,学到的东西最多。
19.管理是严肃的爱。
20.经营企业就是经营人心。
21.人不能把金钱带入坟墓,但金钱却可以把人带入坟墓。
22.一个人快乐不是因为他拥有得多,而是因为计较得少。
23.一个事业能不能成功,关键靠制度设计。
24.别人从零起步,而我从负数起步。
25.听不到奉承的人是一种幸运,听不到批评的人却是一种危险。
26.善待每一头牛,因为它们都是母亲。
27.布局决定结局。
28.世界上还有很多事情,只要你把它做透了,做成专家,你就能够为自己创造成功的机会。
29.会说话的产品卖得快,哑巴产品走得慢。
30.你如果拿五分的力量跟别人较劲,别人会拿出十二分的力量跟你较劲。

史玉柱经典语录:


1.90%的困难你现在想都没有想到,你都不知道那是困难。
2。团队核心成员有人要提出辞职时,不要挽留,既然提出了,他迟早是要走的。
3。如果没有价格上的优势与技术上的绝对优势,千万不要进入红海市场,否则你会必输无疑!
4。做连锁经营业务,一定要做一套傻瓜版的营销手册与管理手册,只有这样,才能实现远距离的管理。
5。做成功一个店之后离你大的成功就不远了,所以你首先就是脚踏实地、集中精力地先做出一家,也是要放弃掉连锁的这种,不要在将来如何做连锁方面做太多的梦,先脚踏实地做出第一家。
6。做全国性市场,一定要先做一个试销市场,要一点点来,快不得;做成了,真到做全国市场时,要快半步,慢不得!
7。初中水平跟博士后没啥区别。只要能干就行,我一直是这个观点,不在乎学历,只要能干能做出贡献就行。
8。作为我们曾经失败过,至少有过失败经历的人,应该经常从里面学点东西。人在成功的时候是学不到东西的,人在顺境的时候,在成功的时候,沉不下心来,总结的东西自然是很虚的东西。只有失败的时候,总结的教训才是深刻的,才是真的。
9.对过去成功的经验再好好总结总结,尤其是对失败的教训,下半夜夜深人静的时候你仔细想一想。反正睡觉也想,想一想实际上对你有很大收获比你看书更有用。因为有的书离你远,那是看自己过去写的东西。
10。最痛苦的时候,压力最大的时候,脑子里面只有一件事儿的时候,我把全国分公司经理招到荒山脚下北大门那个地方,招待所里面,然后在那个地方闭门开批判会。大家批判我,批判了三天三夜,我觉得那个就很有用。
11。要改变消费者固有的想法,比登太阳还难;但不是不可能的。
12。现在的时代,战略正确之后细节决定因素,有很多细节处理不好,你的战略正确了也会失败。
13。不要只看塔尖,二三线市场比一线的更大。
14。管理无情,人有情。
15。所谓人才,就是你交给他一件事情,他做成了;你再交给他一件事情,他又做成了。
posted @ 2011-12-17 14:03 MEYE 阅读(489) | 评论 (0)编辑 收藏
习惯--成大事者必备十二种良好习惯(1)
第一种习惯          争分夺秒:学会和时间赛跑
第二种习惯          敏而善思:用思想改变人生,感想才能敢干,会想才能巧成 
第三种习惯          行动之上:心动不如行动,永不停止、时刻追求进步
第四种习惯          勤奋俭朴:储蓄是成功的助手,养成节俭的习惯(世界首富排行榜上的很多数人都有节俭的习惯)
第五种习惯          积极学习:每天抽出十五分钟时间读书,书籍是人类进步的阶梯。你不学习就落后,因为别人在进步。如同逆水行舟不进则退
第六种习惯          健康快乐:健康是生命之源,学会控制坏情绪,生活不是缺少美,而是缺少发现
第七种习惯          诚实守信:品质的魅力高于一切,诚信是经商的基础,是一笔宝贵的财富,
                            是人生存在的重要条件
第八种习惯          宽容忍让:容忍的力量是无穷的,是成大事者必备的品格
第九种习惯          乐观自信:完美人生强大支点
                           永远只看事物的光明面,微笑的生活人们都喜欢与乐观的人相处,希望
                           他们的喜乐感染自己。乐观者把挫折视为机会,他们把这种健康向上的
                           心态向四周传播。
第十种习惯          持之以恒:度过一切难关的保障
                           度过一切难关的保障,成败之间往往只差一点,让你无往而不胜,
                           毅力是成功的保证,永不言败
第十一种习惯        坚决果断:养成决断习惯的良策,不要被他人意见左右
第十二种习惯        团结合作:双赢生于单赢
 
 
成大事者必备的十二种良好习惯
 
 
第一种习惯  争分夺秒:学会和时间赛跑
一.时间就是生命: 
    时间不能储存,不能倒转。它比金钱宝贵,时间是构成生命的基本单位。时间是用来衡量的,善用时间就是珍惜生命。如果你热爱自己的生命,你就珍惜时间吧。
    你一天的价值是一百元,上午你去娱乐,或躺在沙发上磨了半天,不要以为你损失了五十元,请记住:钱能生钱。好比你杀死一头产在的猪,不仅是一头猪,还有他所有的子孙后代。你毁掉了五十元,也就毁掉了它所产生的一切,也许是一座美元之山。
二.时间创造价值
爱默生曾说过:“你若是爱永恒,就应当爱现在。昨日不能换回,明天还不存在,你能确实把握的只有现在。”
杰明·弗兰克林的书店,一名男子徘徊很久,问:“这本书多少钱?”“1美元”“弗兰克林在吗?我要见他。”弗兰克林正在忙于印刷工作,当他被叫出来后告诉他1.25美元,客人很诧异,刚刚你的店员告诉我只要一美元,怎么会这样呢?弗兰克林说:“没错,可你耽误我时间比一美元要大得多,”那人又说道:“哪这本书最低要多少钱呢?”“1.5美元”“天哪!你刚刚不是说要1。25美元吗?”“没错,”弗兰克林冷静地说:“你现在耽误我的时间远远大于1。5美元。”这个男子默不作声地把钱放在柜台上拿着书离开了书店。
三.你的时间为何总是被偷走
    窃取时间的“大盗”就潜伏在我们身边——它总是在你不留意的瞬间出击,偷走你的那些宝贵时间。
    你的性格决定“大盗”的光顾
1.  迟疑不决的人:如果你是一个做事思前想后,犹豫不决的人,那你想一想此役的结果是浪费了时间又加大了工作压力?改掉这个毛病不是一朝一夕的事情,可悲的是有很多人并不知道自己有这种坏习惯。
2.  完美主义者:完美主义者并不令人尊敬,这种性格也并非高人一等。因为这世间本没有完美的事情,而且要求完美经常导致沮丧以及对工作的不满足。
你最好将时间花在如何准确高效地完成工作上,而不是浪费在不必要的细节修饰上。
3.  不会拒绝别人:非常不幸的事,经常有一些人习惯于将自己的工作推给别人,如果你太软弱没有说不得习惯,你将花大量时间去完成别人的工作,这种状况会影响你的心理健康因为唯唯诺诺的人总是感到愤怒、迷惑、被利用,更糟的是连他们也不知道为什么自己会变成这样。
如果你没有以上三种情况尝试下列做法,捉拿时间“大盗。”
1.  保持重点:一次只做一件事情,一个时期只有一个重点。学会抓住重点远离琐碎。
2.  二八定律:百分之八十的利益是由百分之二十的人完成的。
3.  格式化;借助电脑完成工作。
4.  立即行动:许多人习惯“等候好情绪”花费很多时间“进入状态,”请记住:栽第一棵树的最佳时间时20年前,第二个最佳时间是现在。
5.  立即离开:不要被无聊的人缠住,也不要再不必要的地方逗留太久。
6.  避开高峰:如乘车、购物、进餐等等
7.  巧用电话:直奔主题,不要在电话里说一些无关紧要的或不相关的信息。
8.  成本观念:生活中常有的“一分钱智慧,几小时愚蠢,”为省块八角的步行三站地,为节约几毛钱排队购物等等。
9.  精选朋友:多而无益的朋友是有害的,他们浪费你的时间金钱、精力和感情,甚至会危及你的事业,要和有时间观念的任何公司来往。
10.              避免争论:无为的争论不仅影响情绪和人际关系,还会浪费大量时间,往往解决不了问题。说得越多做得越少。
11.              积极休闲:不同的休闲会带来不同的结果。积极的休闲有利于身心的放松、精神的陶冶和人际的交流
12.              集腋成裘(求):零碎的时间可以利用起来,等车时间看报纸、思考问题、背单词。
13.              提前休息:在疲劳之前休息片刻,既避免了因过度疲劳导致的超时休息,又可使自己始终保持较好的竞技状态,从而大大提高工作效率。
14.              搁置的哲学;如足球左路打不开,攻右路。解决不来的问题记在心里,由潜意识去解决,不要转牛角尖。
四.做计划是珍惜时间的有效途径
    做出计划不仅能赢得工作的时间,与家人团聚的时间,还可以改变自己的生活方式。让自己的人生更有意义。可以日、周、月、年为单位计划你的人生。
五.掌握时间管理的法则
    在世间管理上,要兼顾长远性与急迫性,要高度重视对眼前虽不紧急但有深远影响的事物的处理。 
    (一)优先重要法则:
    将要做的事情分类,如:A类、B类、C类,A类为自己必做的,B类为请他人代做的事情,C类是不必做的事。A类中又可以分为A1、A2、A3等各种级别。
    (二)长远重要法则
    既要强调优先重要,又要强调长远重要。也就是一些不紧迫却重要长远的事,如锻炼身体。既要兼顾长远性与急迫性,又要重视眼前不紧急但有深远影响的事。
    (三)一举两得法则
    一举两得、一石多鸟,国外有名的“超级学习法”就是在睡觉时收听外语录音,效果很好。睡前给自己下达指令,睡醒后难题往往都能找到答案,这叫“一遍睡觉一遍成功”
    (四)标本兼治法则 
    如果没有积极兴奋的情绪,掌握多少时间的管理法则技巧也无济于事,当你产生了厌倦怠惰的情绪时必须及时除掉这些情绪的垃圾,否则时间必遭浪费。
    (五)打破时间管理的瓶颈   
    如果你是一个高级经理,想找出瓶颈所在,就立即将你的办公桌上待处理的卷宗待办事项表处理好,尽快把桌上的文件处理到别人的桌子上,效率会提高。
六.珍惜时间存在的误区
    有一些人总以为珍惜时间就是把每一分钟、每一秒钟都用于工作上,因为害怕浪费时间,总是来也匆匆,去也匆匆,心急火燎,结果却适得其反。
误区一:欲速则不达
   有紧急意识并不错,急可以让大脑动得快一些,但过于着急却是头脑无法正常运转。这个时候,你需要平静自己的心情,经过客观冷静分析判断之后,才能保证速度又保证质量。
误区二:无事瞎忙,有事乱忙
    没有计划的人,在没制定好计划的条件下,因急于求成,所以莽撞地开始了行动。结果,这种无顺序前计划的行动把事情搞乱,越乱越遭,想成功太困难了。
误区三:工作狂
    这种人把工作看成生活的全部内容,目光仅停留在如何完成工作上,对其他的事务中是不屑一顾,目光的短浅和停滞使他们看不到周围情况的变化,看不到事情的发展,看不到时机的来临,也看不到萋萋的危险。一旦事情发生变化,则使他们来不及防备,或错失良机。工作狂的敬业精神可嘉,然而,忽略了家庭朋友等人生其他美好的东西则太可惜了,适当兼顾,人生会变得更加美好。
误区四:只作计划
    完没主义者将计划作的特别精确细致,唯恐出现一点失误,做事追求尽善尽美。江日程表安排得满满的,没有一点空隙从不留下一点应付意外事件的缓冲时间,所以一旦事情发生变化,则往往措手不及。
    敏而善思:用思想改变人生,感想才能敢干,会想才能巧成
 
 
第二种习惯        
 

一个人如果缺少创新思维,他注定平庸永远成不了大事。
例一:网络神话靠创新而成
    现在是网络时代,人们的生活时刻都离不开网络。也造就了一批亿万富翁,网易的CEO丁磊就是其中的一个。他不到而立之年就拥有公司六成多的股份。他一手缔造了网易在中国网络界不可动摇的地位,也造就了中国因特网经济时代个人致富的神话,他传版的网易公司短短数载,价值就达到了四亿人民币。 
    丁磊凭借自己在编写软件方面的天赋,大学毕业第一年赚了一百万,又凭借自己敏锐的洞察力率先进入因特网,以一连串的免费行动让因特网在中国逐渐火爆起来。他无疑是技术方面的天才,他牢牢掌握网易的发展方向,使网易始终走在世界的前面,从1979年成立伊始倒1998年初,网易没有赚到一分钱。因为所有的钱都投资开发软件上面了,把开发软件卖掉,然后再进行公司的扩张,由于缺少足够的资金和帮助,只能靠开发软件赚钱扩大公司。丁磊在谈到成长的过程中说:“网易的成长没有得到任何帮助,没有人会贷款给一家网络公司。”
例二:不断创新使他成为董事长
    北京赛特集团董事长兼总裁杨壮椎管狭窄,腰腿不便,但他酷爱登山,他说不到山顶就不是爬山。他于1991年做赛特总经理的,但是赛特负债3000万,濒临破产,员工人浮于事,他接过这个“烂摊子”,不仅没有放弃,还不断对公司进行改革,对管理经营管理、员工的积极性方面做了大的改进,而且在制度方面不断推陈出新。管理方面他追求中西合璧,取其精华为己所用借鉴外国的先进经验,保持中国的优良传统,更重要的是不断创新,这是塞特集团的业绩蒸蒸日上关键。
杨壮认为塞特的成功重要的一点是超前意识和创新意识。
 



习惯--成大事者必备十二种良好习惯(2)

第三种习惯         行动至上:千里之行始于足下

一、行动的意义。

如果你想寻找快乐,如果你想开发潜能,如果你想获得成功,就必须积极行动,科不已经证明,人的潜能是可以开发利用的。行动,潜能就会开发;不行动,潜能就会被埋没。

二、永不停止时刻追求进步。

一个积极的成功者的特征,就是他能永不停止随时随地的追求进步。

三、立刻行动的魔力。

克服任何一种恐惧,最好的办法就是“立刻去做”。

四、心动不如行动。

心动不如行动。希望什么,就主动去争取,去促成它的发生。不要为自己寻找借口,要从今天开始,从现在开始。如果有了目标,需要的就是马上行动。固执于细节,你将一事无成。

五、今天的事情今天做。

如果你时时想到“现在”,就会完成许多事情;如果说你常想着还有明天或将来,那就一事无成。

六、勇敢去尝试。

如果你不支尝试,你将永远不知道你能做些什么。的确,尝试是成功的秘诀。

七、怎样提高自己的“行动能力”。

不管你是经营事业、推销产品、研究科学或是在公司任职,各行各业中,成功的必要条件都包括“行动的能力”,也就是做一个积极主动的人。

八、扫清持续行动的障碍。

行动贵在坚持,半途而废意味着放弃成功。坚持不懈是意志顽强的表现,为什么大部分人不能坚持到最后呢?那是因为他们没有扫清持续行动的障碍。我们应该做好面对困难的准备,坚持走自已的路。

第四种习惯         勤奋俭朴:汗水浇灌成功之花

一、成功的人都有勤奋的好习惯

世上成功之事,缺了勤奋就会变得不易实现,如果有了勤奋,成功也就不会太难了。一个人要勤奋,就要忌“懒”,忌“惰”。

二、养成节俭的习惯

一个年轻人可能会有很多朋友,但他会发现没有永远的、不变的朋友,他们随时准备向他提出要求,而节俭却是不断推动他向前的朋友,它使人独立,它使年轻人有立足之地,它使他充满活力,它使他受到恰当的激励。

三、节俭是成功的美德

节俭意味着科学地管理自己的时间与金钱,意味着最明智地利用我们一生所拥有的资源。

四、储蓄是成功的助手

机会到处都会出现,但只能提供给那些手中有余钱的人,或是那些已经养成储蓄习惯,而且懂得运用金钱的人,因为他们在养成储蓄习惯的同时,还培养出了其他一些良好的品德。







posted @ 2011-12-17 13:33 MEYE 阅读(545) | 评论 (0)编辑 收藏
35岁之前成功的12条法则

一、一个目标 

一艘没有航行目标的船,任何方向的风都是逆风

1
、你为什么是穷人,第一点就是你没有立下成为富人的目标 

2
、你的人生核心目标是什么? 

杰出人士与平庸之辈的根本差别并不是天赋、机遇,而在于有无目标。 

3
、起跑领先一步,人生领先一大步:成功从选定目标开始 

4
、贾金斯式的人永远不会成功 

为什么大多数人没有成功?真正能完成自己计划的人只有5%,大多数人不是将自己的目标舍弃,就是沦为缺乏行动的空想 

5
、如果你想在35岁以前成功,你一定在2530岁之间确立好你的人生目标 

6
、每日、每月、每年都要问自己:我是否达到了自己定下的目标 

二、两个成功基点 

站好位置,调正心态,努力冲刺,35岁以前成功 

(
)人生定位 

1
、人怕入错行:你的核心竞争力是什么? 

2
、成功者找方法,失败者找借口 

3
、从三百六十行中选择你的最爱 

人人都可以创业,但却不是人人都能创业成功 

4
、寻找自己的黄金宝地 

(
)永恒的真理:心态决定命运,35岁以前的心态决定你一生的命运 

1
、不满现状的人才能成为富翁 

2
、敢于梦想,勇于梦想,这个世界永远属于追梦的人 

3
 35岁以前不要怕,35岁以后不要悔 

4
、出身贫民,并非一辈子是贫民,只要你永远保持那颗进取的心。中国成功人士大多来自小地方 

5
、做一个积极的思维者 

6
、不要败给悲观的自己 

有的人比你富有一千倍,他们也会比你聪明一千倍么?不会,他们只是年轻时心气比你高一千倍。 

人生的好多次失败,最后并不是败给别人,而是败给了悲观的自己。 

7
、成功者不过是爬起来比倒下去多一次 

8
、宁可去碰壁,也不要在家里面壁 

克服你的失败、消极的心态 

(1)
找个地方喝点酒 

(2)
找个迪厅跳跳舞 

(3)
找帮朋友侃侃山 

(4)
积极行动起来 

三:三大技巧 

1
、管理时间:你的时间在哪里,你的成就就在哪里。 

把一小时看成60分钟的人,比看作一小时的人多60 

2
、你不理财,财不理你 

3
、自我管理,游刃有余 

(1)
创业不怕本小,脑子一定要好 

(2)
可以开家特色店 

(3)
做别人不愿做的生意 

四:四项安身立命的理念 

35
岁以前一定要形成个人风格 

1
、做人优于做事 

做事失败可以重来,做人失败却不能重来 

(1)
做人要讲义气 

(2)
永不气馁 

2
、豁达的男人有财运,豁达的女人有帮夫运 

35
岁以前搞定婚姻生活 

3
、忠诚的原则:35岁以前你还没有建立起忠诚美誉,这一缺点将要困扰你的一生 

4
、把小事做细,但不要耍小聪明 

中国人想做大事的人太多,而愿把小事做完美的人太少 

五:五分运气 

比尔·盖茨说:人生是不公平的,习惯去接受它吧 

1
、人生的确有很多运气的成人:谋事在人,成事在天:中国的古训说明各占一半 

2
、机会时常意外地降临,但属于那些决不放弃的人 

3
、抓住人生的每一次机会 

机会就像一只小鸟,如果你不抓住,它就会飞得无影无踪 

4
、智者早一步,愚者晚一步 

六:六项要求 

1
、智慧 

(1)
别人可你以拿走你的一切,但拿不走你的智慧 

(2)
巧妙运用自己的智慧 

(3)
智者与愚者的区别 

2
、勇气 

(1)
勇气的力量有时会让你成为超人” 

(2)
敢于放弃,敢于舍得” 

3
、培养自己的领导才能、领袖气质” 

(1)
激情感染别人 

(2)“
·七法则实现领袖气质 

(3)
拍板决断能力 

(4)
人格魅力 

4
、创造性:不要做循规蹈矩的人 

25-35
岁是人生最有创造性的阶段,很多成功人士也都产生在这一阶段 

5
、明智 

(1)
知道自己的长处、短处,定向聚焦 

(2)
尽量在自己的熟悉的领域努力 

6
、持之以恒的行动力:在你选定行业坚持十年,你一定会成为大赢家 

七:七分学习 

1
、知识改变命运 

2
35岁以前学会你行业中必要的一切知识 

a)
每天淘汰你自己 

b)
在商言商 

3
、太相信的书人,只能成为打工仔 

4
、思考、实践、再思考、再实践 

.八分交际 

朋友多了路好走 

1
、智商很重要,情商更重要:35岁以前建立起人际关系网 

2
、人脉即财脉:如何搞好人际关系 

3
、交友有原则 

4
、善于沟通:35岁以前要锻炼出自己的演讲才能 

九:九分习惯 

习惯的力量是惊人的,35岁以前养成的习惯决定着你的成功的大小 

1
、积极思维的好习惯 

2
、养成高效工作的好习惯 

(1)
办公室 

(2)
生活可以不拘小节,但要把工作做细 

(3)
学习聆听,不打断别人说话 

3
、养成锻炼身体的好习惯 

4
、广泛爱好的好习惯 

5
、快速行动的好习惯 

十:十分自信 

1
、自信是成功的精神支柱 

2
、自信方能赢得别人的信任 

3
、把自信建立在创造价值的基础上 

4
、如何建立自信 

(1)
为自己确立目标 

(2)
发挥自己的长处 

(3)
做事要有计划 

(4)
做事不拖拉 

(5)
轻易不要放弃 

(6)
学会自我激励 

(7)
不要让自己成为别人

 

十一: 11个需要避开的成功陷阱 

1
、只有功劳,没有苦劳 

2
、不要怀才不遇,而要寻找机遇 

3
、不要想发横财 

4
、不要为钱而工作,而让钱为你工作 

5
、盲目跟风,人云亦云,人做我也做 

6
、小富即安,不思进取,知足常乐 

7
、承认错误而非掩饰错误 

8
、脚踏实地而非想入非非 

9
、野心太大而不是信心十足 

10
、反复跳槽不可取 

11
、眼高手低 

12
、不择手段 

十二:十二分努力 

没有人能随随便便成功 

1
、小不是成功,大不是成功,由小变大才是成功 

2
、中国社会进入微利时代:巧干+敢干+实干=成功 

3
、努力尝试就有成功的可能 

4
、做任何事情,尽最大努力 

5
、把事情当成事业来做 

6
、我看打工者 

7
、祝你早日掘到第一桶金 

 

posted @ 2011-12-17 13:08 MEYE 阅读(485) | 评论 (0)编辑 收藏

如何向android的framework里添加新API

http://yueguc.iteye.com/blog/806730


google对于所有的类和API,分为开放式和不开放式两种。所谓的开放式就是javadoc所包含的,并不是java中有public和private,而是跟javadoc有关系,代码没有关系。
在开放式的类中增加了一个变量,而又没隐藏,导致和原API的doc不一致造成的就会有错。
通过提示,有2个方法可以解决  该问题:
1、将新增加的变量或方法加上"@hide" 的注释,注意一点,加"@hide" 不是简简单单的/*@hide */就行了,标准的javadoc要这样 /**  */ 而且对于 format 变量 应该加上 {  },也就是/**{@hide}*/
2、如果想在生成的doc中增加该变量或方法的话,必须输入:
make update-api
这样的话,系统  自动  将新增加的API添加到current.xml中了。


所以如果要加方法就是按上面的方法加。

如 果需要加进新的类 这时候又分2种  一种是原有的包下面加类 这个最简单 加完之后直接make update-api就好了 还有一种是加在framework/base下面 这个时候你make update-api是不会在current。xml里生成你的类的。 看了Android。mk才知道 原来需要修改android源码根目录下的build/core/pathmap.mk把你的目录加进去。然后就好了。

posted @ 2011-12-08 21:34 MEYE 阅读(858) | 评论 (0)编辑 收藏

图度Talk:只要五秒,秒杀街边的各类远程桌面软

http://www.linuxren.net/news/120R632010.html

五秒钟什么概念!让你瞬间打开世界上任何地点的主机的远程桌面。如果你用过VNC、teamview、微软RDP(远程桌面)、logmein、QQ远程协助等等,你就知道五秒钟意味着什么了,而且还是基于穿透内网主机的远程桌面,对于图度Talk来说哪些神马远程桌面软件都是浮云。废话少说,先说下图度Talk是啥东东….

图度Talk是一个基于图度在线工作管理系统上使用的一款IM聊天工具,远程协助采用了还未发布的向日葵3.0的急速远程桌面协议(www.sunlogin.com),通过远程协助帮助远端同事、朋友解决PC使用中所遇到的各类问题。

下载—图度talk五秒钟版(1.0正式版)地址http://www.tudu.com/tudutalk_1.0final.exe,各位千万注意了,这个要配套图度系统使用的,所有的账户都是由你自主建立的,完全你说了算。开通图度系统可以到www.tudu.com申请开通,现在开通除了可以拿到一个很好的三级域名yourname.tudu.com域名,还将获得18个用户的图度商业版的永久免费使用权。

说了白说,无图无真相,上图。

图度Talk:只要五秒,秒杀街边的各类远程桌面软件 - 迷离的红豆 - 迷离的红豆的博客

安装:没什么好说,针对现在免费软件安装包的特点,最大的优点是纯洁无暇,安装过程中没有任何地方忽悠你装垃圾插件。这个logo采用四色,包含了三原色,代表了沟通和融合,比较贴切协同IM的定位。 内容来自Linuxren.net

图度Talk:只要五秒,秒杀街边的各类远程桌面软件 - 迷离的红豆 - 迷离的红豆的博客

主界面:市面上大部分能找到的功能基本都有,换肤、透明层、签名、自定义头像、天气预报等,几个亮点支持多国语言(简、繁、英)、显示列表可以定义直板排列(gtalk样式,我喜欢)或分组排列(QQ样式),由于是协同工作用IM,可以自定义登录页面logo、查看组织构架和相关的联系人各类信息等。界面风格你喜欢不喜欢,俺说了不算,俺的评价就是简单实用而不失个性,布局结构方面有自己独特的地方,不会直接让你联想到某一款IM软件。 内容来自Linuxren.net

图度Talk:只要五秒,秒杀街边的各类远程桌面软件 - 迷离的红豆 - 迷离的红豆的博客

聊天窗口:聊天界面很简单,没有广告,也没有什么乱七八糟的东西,还集成了屏幕截图和闪屏功能。采用了比较独特的黏贴和堆叠技术(用过gtalk的人应该了解),让你有一种盖楼的冲动,人足够多的情况下可以自动盖出n栋大楼,俺的分辨率高可以一次盖出35层的楼,通过楼房跟人聊天很醒目快捷。另外每天读下签名也是我工作中的一大快乐。

图度Talk:只要五秒,秒杀街边的各类远程桌面软件 - 迷离的红豆 - 迷离的红豆的博客
图度Talk:只要五秒,秒杀街边的各类远程桌面软件 - 迷离的红豆 - 迷离的红豆的博客

聊天和远程协助:远程协助想必搞IT的兄弟都用过某软件集成的远程协助,其中的辛酸俺就不多说了。我只能说图度Talk的远程协助绝对不一般,强大的工具栏支持键盘快捷、色彩调整、分辨率调整、远程白板、粘贴板同步等功能。完全支持内网穿透,打开远程的屏幕的速度两个字—秒杀街边的各类远程桌面软件,图度Talk首个嵌入了向日葵远控3.0远程桌面加速技术(要知道3.0还没有发布呢)。

图度Talk 1.0正式版更新说明:

1.       开启远程协助按钮; 内容来自Linuxren.net

2.       支持向日葵3.0版急速远程桌面协议;

3.       支持64位windows系统虚拟显卡驱动; copyright Linuxren.net

4.       支持自定义分组和联系人拖拉;

5.       支持超长签名名片显示;

下载—图度talk五秒钟版(1.0正式版)地址http://www.tudu.com/tudutalk_1.0final.exe,各位千万注意了,这个要配套图度系统使用的,所有的账户都是由你自主建立的,你说了算。开通图度系统可以到www.tudu.com申请开通,现在开通除了可以拿到一个很好的三级域名yourname.tudu.com域名,还将获得18个用户的图度商业版的永久免费使用权。

新闻来源:未知

posted @ 2011-11-29 20:17 MEYE 阅读(493) | 评论 (0)编辑 收藏
http://www.lupaworld.com/article-213531-1.html

PMD是一款采用BSD协议发布的Java程序代码检查工具。该工具可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。该软件功能强大,扫描效率高,是Java程序员debug的好帮手。

  它可以为您检查Java代码中存在的如下问题:

  1、隐藏的bug,例如空的try catch,switch

  2、未调用的代码,例如没有使用的局部变量、参数和私有方法

  3、未优化的代码,例如String的不正确使用

  4、过于复杂的表达式,没有必要的表达式循环,判断

  5、重复代码

  PMD支持的编辑器包括:

  JDeveloper、Eclipse、JEdit、JBuilder、BlueJ、CodeGuide、NetBeans/Sun Java Studio Enterprise/Creator、IntelliJ IDEA、TextPad、Maven、Ant,、Gel、JCreator和Emacs。

  此次版本的主要变化:

  1、修复了已有规则的一些bug

  2、修改了 CPD 算法

  3、JSP/JSF 解析器支持 Unicode

  4、可处理 标签;

  5、AST HtmlScript 节点包含内容,支持 Ecmascript 等等

  下载地址:http://sourceforge.net/projects/pmd/files/

posted @ 2011-09-22 09:06 MEYE 阅读(515) | 评论 (0)编辑 收藏
Ubuntu如何备份和恢复系统
http://wsfei.iteye.com/blog/1100534

在 使用Ubuntu之前,相信很多人都有过使用Windows系统的经历。如果你备份过Windows系统,那么你一定记忆犹新:首先需要找到一个备份工 具(通常都是私有软件),然后重启电脑进入备份工具提供的软件环境,在这里备份或者恢复Windows系统。Norton Ghost是备份Windows系统时经常使用的备份工具。

在备份Windows系统的时候你可能想过,我能不能把整个C盘都放到一个ZIP文件里去呢。这在Windows下是不可能的,因为在Windows中有很多文件在它们运行时是不允许拷贝或覆盖的,因此你需要专门的备份工具对Windows系统进行特殊处理。

和 备份Windows系统不同,如果你要备份Ubuntu系统(或者其它任何Linux系统),你不再需要像Ghost这类备份工具。事实上,Ghost 这类备份工具对于Linux文件系统的支持很糟糕,例如一些Ghost版本只能完善地支持Ext2文件系统,如果你用它来备份Ext3文件系统,你可能会 丢失一些宝贵的数据。

1. 备份系统

我该如何备份我的Ubuntu系统呢?很简单,就像你备份或压缩其它东西一样,使用TAR。和Windows不同,Linux不会限制root访问任何东西,你可以把分区上的所有东西都扔到一个TAR文件里去!

首先成为root用户:
$ sudo su

然后进入文件系统的根目录(当然,如果你不想备份整个文件系统,你也可以进入你想要备份的目录,包括远程目录或者移动硬盘上的目录):
# cd /

下面是我用来备份系统的完整命令:
# tar cvpzf backup.tgz –exclude=/proc –exclude=/lost+found –exclude=/backup.tgz –exclude=/mnt –exclude=/sys /

让我们来简单看一下这个命令:

“tar”当然就是我们备份系统所使用的程序了。

“cvpfz”是tar的选项,意思是“创建档案文件”、“保持权限”(保留所有东西原来的权限)、“使用gzip来减小文件尺寸”。

“backup.gz”是我们将要得到的档案文件的文件名。

“/”是我们要备份的目录,在这里是整个文件系统。

在 档案文件名“backup.gz”和要备份的目录名“/”之间给出了备份时必须排除在外的目录。有些目录是无用的,例如“/proc”、“/lost+ found”、“/sys”。当然,“backup.gz”这个档案文件本身必须排除在外,否则你可能会得到一些超出常理的结果。如果不把“/mnt”排 除在外,那么挂载在“/mnt”上的其它分区也会被备份。另外需要确认一下“/media”上没有挂载任何东西(例如光盘、移动硬盘),如果有挂载东西, 必须把“/media”也排除在外。

有人可能会建议你把“/dev”目录排除在外,但是我认为这样做很不妥,具体原因这里就不讨论了。

执行备份命令之前请再确认一下你所键入的命令是不是你想要的。执行备份命令可能需要一段不短的时间。

备份完成后,在文件系统的根目录将生成一个名为“backup.tgz”的文件,它的尺寸有可能非常大。现在你可以把它烧录到DVD上或者放到你认为安全的地方去。

在备份命令结束时你可能会看到这样一个提示:’tar: Error exit delayed from previous errors’,多数情况下你可以忽略它。

你还可以用Bzip2来压缩文件,Bzip2比gzip的压缩率高,但是速度慢一些。如果压缩率对你来说很重要,那么你应该使用Bzip2,用“j”代替命令中的“z”,并且给档案文件一个正确的扩展名“bz2”。完整的命令如下:
# tar cvpjf backup.tar.bz2 –exclude=/proc –exclude=/lost+found –exclude=/backup.tar.bz2 –exclude=/mnt –exclude=/sys /

2. 恢复系统

在进行恢复系统的操作时一定要小心!如果你不清楚自己在做什么,那么你有可能把重要的数据弄丢,请务必小心!

接着上面的例子。切换到root用户,并把文件“backup.tgz”拷贝到分区的根目录下。

在 Linux中有一件很美妙的事情,就是你可以在一个运行的系统中恢复系统,而不需要用boot-cd来专门引导。当然,如果你的系统已经挂掉不能启动了, 你可以用Live CD来启动,效果是一样的。你还可以用一个命令把Linux系统中的所有文件干掉,当然在这里我不打算给出这个命令!

使用下面的命令来恢复系统:
# tar xvpfz backup.tgz -C /

如果你的档案文件是使用Bzip2压缩的,应该用:
# tar xvpfj backup.tar.bz2 -C /

注意:上面的命令会用档案文件中的文件覆盖分区上的所有文件。

执行恢复命令之前请再确认一下你所键入的命令是不是你想要的,执行恢复命令可能需要一段不短的时间。

恢复命令结束时,你的工作还没完成,别忘了重新创建那些在备份时被排除在外的目录:
# mkdir proc
# mkdir lost+found
# mkdir mnt
# mkdir sys
等等

当你重启电脑,你会发现一切东西恢复到你创建备份时的样子了!


Linux备份策略研究

世界上没有绝对安全的系统。如果想获得绝对安全的系统,只有不连接网络,不让管理员之外的人使用,刷卡管制人员进出,使用监视器监视录像,甚至于不 要开机。但是这是完全不切实际的,我们仅能寄望尽量让系统能在承担低风险的情况下工作,因为任何操作系统都不可能毫无漏洞。那么怎样才能让系统承担最低的 风险呢?回答因该是在保障系统尽量安全的基础上,做好各个系统上的数据备份工作。一旦系统遭受到毁灭性的打击,可将平时做好的备份数据及时恢复,这样才能 使被破坏的系统迅速恢复正常,以避免不必要的损失。
下面针对Linux操作系统上的数据备份方法发表一下自己的看法。


数据备份种类

总的来说,在Linux操作系统中将备份分为两类:系统备份,实现对操作系统和应用程序的备份;用户备份,实现对用户文件的备份。在下面我们会看到,系统备份和用户备份是不同的。

系统备份

系统备份就是对操作系统和应用程序的备份,进行系统备份的原因是尽量在系统崩溃以后能快速简单完全地恢复系统的运行。进行备份的最有效方法是仅仅备份那些对于系统崩溃后恢复所必需的数据。

Linux系统中很多重要的文件位于/etc目录之下,如:

/etc/group : 组用户信息;

/etc/passwd : 包含所有的用户信息,如密码,登录shell等;

/etc/fstab : 配置系统有哪些文件系统;

/etc/inittab : 配置init在不同运行级别下分别如何启动系统;

/etc/hosts : 域名解析的配置信息;

/etc/inetd.conf : 进程控制信息;

/etc/printcap:配置如何与打印机通信;

/etc/XF86Config:包含XFree86的初始配置;

上面这些重要的配置文件都需要定期的做备份。

不 同的系统可能有很多重要配置文件,可以看到/etc目录下的配置文件非常重要。当然,某些程序使用了其他目录下的一些文件,但是Linux的基本配置文件 绝大多数都位于/etc目录下。很多人曾经花费了好长时间才正确的配置了XF86Config文件,想到如果重新再做一遍,就很费时费力。再举个例子, /etc目录下的passwd文件,如果误操作,将此文件更改,或删除了,则整个系统用户无法正常登录,如果定期或及时的对其备份,遇到上面的情况后,就 可以非常快速的恢复。

如果修改了某个程序所使用的配置文件,一般不能将其搬移到其它的地方,因为程序通常在固定的地方寻找配置文件。因此记录对系统所做的修改也非常重要,无论所做的修改如何小,当系统崩溃时才能轻松的恢复系统。

用户备份

用户备份不同于系统备份,因为用户的数据变动更加频繁一些。当备份用户数据时,只是为用户提供一个虚拟的安全网络空间,合理的放置最近用户数据文件的备份,当出现任何问题,例如,误删除某些文件或者硬盘发生故障时,用户可以恢复自己的数据。

用户备份应该比系统备份更加频繁,也许每天都需要进行备份,或使用cron程序自动定期运行某个程序的方法来备份数据。

数据备份策略

不 管系统多么可靠,总会发生一些意想不到的事情,致使系统数据丢失。因此使用备份来保护数据不丢失是一种非常重要的手段,尤其在系统数据非常重要的时候。经 常进行数据备份能够减少偶然破坏造成的损失,保证系统能够从错误中恢复正常运行。备份不应该成为一个长时间痛苦的事情,但它是作为系统管理必不可少的工 作,在着手之前进行详细的考虑和计划是应该的。

在进行备份之前,首先要选择合适的备份策略,这将决定何时需要备份,以及出现故障时进行恢复的方式。通常使用的备份方式有三种:

完全备份: 每隔一定时间就对系统进行一次全面的备份,这样在备份间隔期间出现数据丢失等问题,可以使用上一次的备份数据恢复到前次备份时数据状况。这是最基本的备份 方式,但是每次都需要备份所有的数据,并且每次备份的工作量也很大,需要大量的备份介质,因此这种备份不能进行的太频繁,只能每隔一段较长时间才进行一次 完整的备份。但是这样一旦发生数据丢失,只能恢复到上次备份的数据,这期间内更新的数据就有可能丢失。

增量备份: 首先进行一次完全备份,然后每隔一个较短时间进行一次备份,但仅仅备份在这个期间更改的内容。当经过一个较长的时间后再重新进行一次完全备份,开始前面的 循环过程。由于只有每个备份周期进行一次完全备份,其他只进行更新数据的备份,因此工作量小,可以进行频繁的备份。例如以一个月为一个周期,一个月进行一 次完全备份,每天晚上0点进行这一天改变的数据备份。这样一旦发生数据丢失,首先恢复到前一个完全备份,然后按日期一个一个恢复每天的备份,就能恢复到前 一天的情况。这种备份方法比较经济。

累计备份:这种备份方法与增量备份相似,首先每月进行一次完全备 份,然后每天进行一次更新数据的备份。但不同在于,增量备份是备份该天更改的数据,而累计备份是备份从上次进行完全备份后更改的全部数据文件。一旦发生数 据丢失,可以使用前一个完全备份恢复到前一个月的状态,再使用前一个累计备份恢复到前一天的情况。这样做的缺点是每次做累计备份工作的任务比增量备份的工 作量要大,但好处在于,增量备份每天都备份,因此要保存数据备份数量太多,而累计备份则不然,只需保存一个完全备份和一个累计备份就可以恢复故障以前的状 态。另外在进行恢复工作时,增量备份要顺序进行多次备份的恢复,而累计备份只需两次恢复,因此它的恢复工作相对简单。

增量备份和累计备份 都能以比较经济的方式对系统进行备份,在这些不同的策略之间进行选择不但与系统数据更新的方式相关,也依赖于管理员的习惯。通常在系统数据更新不是太频繁 的话,可以选用更新备份的方式。但是如果系统数据更新太快,使每个备份周期后的几次累计备份的数据量相当大。这时候可以考虑增量备份或混用累计备份和增量 备份的方式,或者缩短备份周期。

数据备份命令

在Linux系统中常用的备份命令通常有下面几种:

1.使用tar命令

Linux的实用程序tar最初是为了制作磁带存档而设计的(把文件和目录复制到磁带中,然后从存档中提取或恢复文件),而现在的应用中可以把它用于任何设备,它是数据备份中最常用的命令之一。

下面具体介绍tar命令的使用方法:

(1)格式:tar 参数 ......

(2)参数:

c: 创建备份(Create)

v: 表示回显模式(Verbose),将产生一系列备份的文件列表

f: 指定使用的备份文件,它后面的参数为输出的备份文件名

x: 展开备份文件

t: 显示备份文件的内容

T: 后面跟随一个文件参数,指定从这个文件中读取要备份的各个文件的路径。如果不使用T参数,那么就需要一个参数,指明进行备份文件和目录的路径

Z: 使用压缩方式创建和解开备份文件,这是GNU的新版tar的功能,需要同时安装gzip。

例如:

$ tar cvf backup.tar /etc

上 面的命令将/etc下的所有文件打包成tar存档文件backup.tar。tar的第一个参数“cvf”,是tar的命令参数,“c”告诉tar创建一 个存档文件;“v”选项迫使tar采用冗长模式,即在存档时打印每个文件名;“f”选项告诉tar下一个参数backup.tar是创建的存档文件名。

下面一行的命令将tar文件backup.tar解开并放到当前工作目录下。必须说明的是这样做是有危险的,因为在从tar文件中解开文件时,旧文件将被覆盖。

$ tar xvf backup.tar

在解开tar文件之前,知道在何处打开文件是非常重要的。例如,假设存档以下文件:/etc/hosts,/etc/group和/etc/passwd。如果用下述命令:

$ tar cvf backup.tar /etc/hosts /etc/group /etc/passwd

目录/etc会被加到每个文件名前。为了将文件展开到正确位置,需要用下述命令:

$ cd /

$ tar xvf backup.tar

这是因为文件从存档文件中抽取出路径名,如果用下述命令存档文件:

$ cd /etc

$ tar cvf hosts group passwd

这样目录名就不存在存档文件中,因此需要在展开文件之前用“cd /etc”命令进入目录etc。由此可见,tar文件的创建方式与在何处展开有很大关系。

命令:

$ tar tvf backup.tar

在解开tar文件之前显示tar文件的索引,用这种方式可以看到存档文件中与文件名有关的目录名,从而在正确位置上展开存档文件。

2.gzip和compress 命令

与MS-DOS的存档程序不同, tar在存档过程中并不压缩文件。因此,如果存储两个1MB的文件,那么tar文件大小为2MB,gzip命令用来压缩文件(被压缩的文件并不需要是tar格式)。

例如:

$ gzip -9 backup.tar

压缩backup.tar文件,产生的文件为backup.tar.gz,开关“-9”告诉gzip用最高的压缩比。gunzip命令用来解开一个gzip压缩的文件,用“gzip -d”也可以达到同样效果。

例如:

$ gunzip backup.tar.gz

$ gzip -d backup.tar.gz

3. 联合使用

介绍了这些命令之后,我们来尝试组合使用这些命令。为了压缩存储一组文件,可以用下述命令:

$ tar cvf backup.tar /etc

$ gzip -9 backup.tar

结果是形成文件backup.tar.gz。展开该文件时,用相反的命令:

$ gunzip backup.tar.gz

$ tar xvf backup.tar

tar命令还包括“z”选择项,它会自动采用gzip压缩算法来联机压缩/解压文件。例如,下列命令:

$ tar cvfz backup.tar.gz /etc

上面一行的命令等价于:

$ tar cvf backup.tar /etc

$ gzip backup.tar

而命令:

$ tar xvfz backup.tar.Z

可以用来代替下述命令:

$ uncompress backup.tar.Z

$ tar xvf backup.tar

案例实验

案例:使用tar进行备份。

选定了备份方式之后,可以使用tar、cpio、dump等备份工具软件将数据备份到磁带上。对于一般的备份,使用tar就足够了。tar能够创建备份文档,能够备份到磁带上或者产生一个文件,如:

$ tar cvf root.tar /root

将/root目录下的所有文档备份到root.tar文件中,root.tar为指定输出的备份文件,/roo t指出要做备份的目录。如果要备份到磁带上,将输出的备份文件指定为磁带设备文件即可:

$ tar cvf /dev/rmt/0h /root

如果设置了环境变量TAPE,则可以不使用选项“f”指定输出磁带设备名字:

$ TAPE=/dev/rmt/0h; export TAPE

$ tar cv /root

要进行增量备份,必须找出哪些文件在这个期间进行更新。这个任务可以由命令find来完成,例如查找过去七天更改的文件,并使用tar的“-T”参数制定进行备份的文件,命令如下:

$ find / -mtime -7 -print > /tmp/filelist

$ tar -c -T /tmp/filelist -f /dev/rmt/0h

由 于要使用find来找出需要备份的文件列表,那么就需要利用文件的修改时间进行查询,需要使用“-mtime” 参数。另一个更有用的参数是“-newer”,可以查找出所有比某个文件更新的文件,由于备份是周期进行的,因此可以在完全备份之后生成一个标记文件,那 么所有比这个文件新的文件都需要进行更新备份。

$ find / -newer full_back_tag_file -print > /tmp /filelist

进 行数据备份需要定期执行,不能完全依赖于管理员手工进行备份。备份也应该选择在系统比较空闲时进行,以免影响系统的正常处理任务。通常可以选择半夜 0:00点之后进行备份,这样更不能将这个任务由管理员手工完成了。但Linux提供了定时服务cron程序,能够在确定的时间中执行一系列任务,因此数 据备份必须和cron合作来完成,或者使用/etc下的daily,weekly,monthly文件做定时备份的操作。


posted @ 2011-08-25 12:56 MEYE 阅读(11607) | 评论 (2)编辑 收藏

如何学习Android应用程序的开发

命令行启动程序如:
shell am start -n com.testZ/com.testZ.Test


昨天一同学问我,如何快速的学习Android应用程序开发? 之前的一位同事也问过我,我也只是大概的说说看哪些资料。为避免更多的人问我,所以有必要写写。

1. 开发环境搭建。自行Google。英文好的,看官方网 http://developer.android.com/ 访问不了的,可以访问它的镜像 http://androidappdocs.appspot.com/index.html

2. 在模拟器上运行 ApiDemos,全部点一遍,看看Android都提供了些什么界面效果,心里有个印象。最好把ApiDemos的代码,看它个两三遍。我到过深圳南山 书城,看了好几本国内出的Android书籍,一本书都没翻多久,就看完了,没啥看头,因为大部分内容ApiDemos都有了呀。

3. Java的学习。
Android应用程序是用Java写的,像我这样从C/C++阵营过来的,开始真的很抵触。《Thinking in Java》 ??? No! 没时间玩这东西,当做参考书还行,不懂就翻翻。宝岛台湾的林信良老师写的《Java学习笔记》,还不错。
http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/JavaGossip.htm
http://caterpillar.onlyfun.net/Gossip/JavaGossip-V2/JavaGossip2.htm
大约花一个礼拜的晚上时间学习,基本够用。

4. 学习资料
(1) 网站
官网 developer.android.com,英文差的同学,也要硬着头皮看,在网上搜来搜去,其实大部分东西都是从这拷贝过去的,从而浪费了大把的时间。国内的android论坛,好像就javaeye文章质量高一点,其他的不知道。我一直上国外的 http://www.anddev.org/ 它有两个版面 Novice Tutorials和Code Snippets for Android,有教程,可以下载代码编译运行,初学者最喜欢这样的了。不像一些网站,下载代码还要扣积分等其他7788的,一看就没什么好感。

(2) 书籍
就只推荐三本,其他的没看过,不好评论。
Mark L. Murphy: 《The Busy Coder’s Guide to Android Development》
Chris Haseman:《Android Essentials》
高煥堂:《Android 應用框架原理與程式設計36 技》

初学者最好不要第一本书就看高的书,因为一些东西他讲起来莫名其妙,搞复杂了,一看developer.android.com英文原版的资料,噢!英文描述这么简单啊。

(3) Blogs
请参看 http://wiki.andmob.org/blogs

(4) 阅读代码
除了上面所说的ApiDemos的代码,还有SDK下提供的Samples目录下其他示例代码,还有Google公司提供的Demo代码,它们在:
http://code.google.com/p/apps-for-android/

———–
2010/6/11 补充内容:今天在网上找chrome代码阅读,看到Venus神庙的 Android学习入门http://www.cnblogs.com/duguguiyu/archive/2010/01/23/1654559.html
感觉不错,也推荐给大家,Venus神庙写作水平不错,比我好N倍。

 

http://blog.csdn.net/sdhjob/

http://www.anddev.org/

http://dev.10086.cn/cmdn/wiki/index.php?doc-view-3882.html
http://blog.csdn.net/sdhjob/default.aspx?PageNumber=2

 

posted @ 2011-05-24 09:04 MEYE 阅读(1982) | 评论 (0)编辑 收藏

Android网络应用开发
http://blog.lytsing.org/archives/574.html

Android网络应用开发

反复研究了 Android Market,总结一下,之前发在新浪微博上,但不够详细,主要是提高用户体验。

1.网络异常处理,重试机制。
上wifi常常网络断开,那就看运用程序是否健壮。可以用Android 提供的 frameworks/base/core/java/android/net/NetworkConnectivityListener.java 监控网络变化,然后做相应的处理。

2.Cache
这个是必须的。比如手机QQ的头像,不可能每一次登录,重新把头像下载一遍。可以是内存cache,也可以写入SD卡。

3. 本地数据与服务器同步机制

4.请求异步处理机制
给一个app打分,打分后,马上回到之前的界面,而不是一直在等是否把数据发送到了服务器再响应。

5. push消息通知
有软件可以更新,在状态栏提示。新浪微博在右上方显示有新数据。

6.lazyload
延时加载,比如图标,头像,分页。

7.数据交换格式:对象序列化/protobuf/json/xml。

8. 设计模式:MVC,chain。

posted @ 2011-05-24 08:59 MEYE 阅读(440) | 评论 (0)编辑 收藏
经典语录1:

哈佛有一个著名的理论:人的差别在于业余时间,而一个人的命运决定于晚上8点到10点之间。每晚抽出2个小时的时间用来阅读、进修、思考或参加有意的演讲、讨论,你会发现,你的人生正在发生改变,坚持数年之后,成功会向你招手。不要每天抱着QQ/MSN/游戏/电影/肥皂剧……奋斗到12点都舍不得休息,看就看一些励志的影视或者文章,不要当作消遣;学会思考人生,学会感悟人生,慢慢的,你的人生将会发生变化……

经典语录2:  

无论你的收入是多少,记得分成五份进行规划投资:增加对身体的投资,让身体始终好用;增加对社交的投资,扩大你的人脉;增加对学习的投资,加强你的自信;增加对旅游的投资,扩大你的见闻;增加对未来的投资,增加你的收益。好好规划落实,你会发现你的人生逐步会有大量盈余。

经典语录3:  

过去的一页,能不翻就不要翻,翻落了灰尘会迷了双眼。有些人说不出哪里好,但就是谁都替代不了! 那些以前说着永不分离的人,早已经散落在天涯了。收拾起心情,继续走吧,错过花,你将收获雨,错过这一个,你才会遇到下一个。

经典语录4:  

被人误解的时候能微微的一笑,这是一种素养;受委屈的时候能坦然的一笑,这是一种大度;吃亏的时候能开心的一笑,这是一种豁达;无奈的时候能达观的一笑,这是一种境界;危难的时候能泰然一笑,这是一种大气;被轻蔑的时候能平静的一笑,这是一种自信;失恋的时候能轻轻的一笑,这是一种洒脱。

经典语录5:  

人生途中,有些是无法逃避的,比如命运;有些是无法更改的,比如情缘;有些是难以磨灭的,比如记忆;有些是难以搁置的,比如爱恋……与其被动地承受,不如勇敢地面对;与其鸟宿檐下,不如击翅风雨;与其在沉默中孤寂,不如在抗争中爆发……路越艰,阻越大,险越多,只要走过去了,人生就会更精彩。

经典语录6:  

你改变不了环境,但你可以改变自己;你改变不了事实,但你可以改变态度;你改变不了过去,但你可以改变现在;你不能控制他人,但你可以掌握自己;你不能预知明天,但你可以把握今天;你不可以样样顺利,但你可以事事尽心;你不能延伸生命的长度,但你可以决定生命的宽度。

经典语录7:  

魅力女人:1、善于发现生活里的美。2、养成看书的习惯。3、拥有品位。4、跟有思想的人交朋友。5、远离泡沫偶像剧。6、学会忍耐与宽容。7、培养健康的心态,重视自己的身体。8、离开任何一个男人,都会活得很好。9、有着理财的动机,学习投资经营。10、尊重感情,珍惜缘分。

经典语录8:  

愚人向远方寻找快乐,智者则在自己身旁培养快乐。生活里的每一个细节都蕴藏着快乐,只是在于你是否感受到了而已。快乐着的人,每一件事,每一个人身上,他都能发现能令自己欢悦的因素来,并让快乐扩张,鼓舞和影响了周围的人。

经典语录9:  

【给自己安慰的10句温馨话】1、最重要的是今天的心;2、别总是自己跟自己过不去;3、用心做自己该做的事;4、不要过于计较别人评价;5、每个人都有自己的活法;6、喜欢自己才会拥抱生活;7、不必一味讨好别人;8、木已成舟便要顺其自然;9、不妨暂时丢开烦心事;10、自己感觉幸福就是幸福。

经典语录10:  

没有永远的缘份,没有永远的生命,我们所能拥有的,可能只是平凡的一生。然而因为有你,生命便全然不同,不用誓言,不必承诺,我们只需依了爱缘,以目光为媒,印证三生石上的约定,便牵了手,不必紧握,却永不放松,以自己设计的爱的程式,去演绎一种精典的永恒。

经典语录11:  

我们之所以会心累,就是常常徘徊在坚持和放弃之间,举棋不定。我们之所以会烦恼,就是记性太好,该记的,不该记的都会留在记忆里。我们之所以会痛苦,就是追求的太多。我们之所以不快乐,就是计较的太多,不是我们拥有的太少,而是我们计较的太多。

经典语录12:  

男人吸引女人的10个特质:1.真实 2.深刻 3.胸怀 4.敢为 5.风度 6.机灵 7.幽默 8.进取 9.浪漫 10.冒险.女人吸引男人的10个特点:1.温柔 2.知性 3.直性 4.涵养 5.朦胧 6.小动作 7.勤于家事 8.肤白 9.性感着装 10.香氛

经典语录13:  

真正的爱,是接受,不是忍受;是支持,不是支配;是慰问,不是质问;真正的爱,要道谢也要道歉。要体贴,也要体谅。要认错,也好改错;真正的爱,不是彼此凝视,而是共同沿着同一方向望去。其实,爱不是寻找一个完美的人。而是,要学会用完美的眼光,欣赏一个并不完美的人。

经典语录14:  

身边总有些人,你看见他整天都开心,率真得像个小孩,人人都羡慕他;其实,你哪里知道:前一秒人后还伤心地流着泪的他,后一秒人前即刻洋溢灿烂笑容。他们其实没有能力独处,夜深人静时,总坐在窗前对着夜空冥想失意的苦楚。他们就像向日葵,向着太阳的正面永远明媚鲜亮,在照不到的背面却将悲伤深藏。

经典语录15:  

生命中,有些人来了又去,有些人去而复返,有些人近在咫尺,有些人远在天涯,有些人擦身而过,有些人一路同行。或许在某两条路的尽头相遇,结伴同行了一段路程,又在下一个分岔路口道别。无论如何,终免不了曲终人散的伤感。远在天涯的朋友:或许已是遥远得无法问候,但还是谢谢您曾经的结伴同行。

经典语录16:  

爱情很简单,因为每个人都会说:“我爱你,会为你付出一切!”,爱情很难,因为没有多少人做到了他的承诺。如果真心爱一个人,不承诺也会去爱;如果不爱一个人,曾经承诺也会背叛。

经典语录17:  

【你最后悔什么】某杂志对全国60岁以上的老人抽样调查:第一名:75%的人后悔年轻时努力不够,导致一事无成。第二名:70%的人后悔在年轻的时候选错了职业。第三名:62%的人后悔对子女教育不当。第四名:57%的人后悔没有好好珍惜自己的伴侣。第五名:49%的人后悔没有善待自己的身体。

经典语录18:  

【做人十心机】⒈做人不能太单纯 适度伪装自己 ⒉凡事留余地 要留退路 ⒊话不说绝口无遮拦难成大事 ⒋成熟而不世故 ⒌心态好 想得开活得不累 ⒍懂方圆之道:没事不惹事,来事不怕事 ⒎不可少二礼:礼仪与礼物 ⒏人在江湖飘 防挨朋友刀 ⒐偶尔"势利眼" 寻可靠伙伴 ⒑放下面子来做人。

经典语录19:  

人生旅途中,总有人不断地走来,有人不断地离去。当新的名字变成老的名字,当老的名字渐渐模糊,又是一个故事的结束和另一个故事的开始。在不断的相遇和错开中,终于明白:身边的人只能陪着自己走过或近或远的一程,而不能伴自己一生;陪伴一生的是自己的名字和那些或清晰或模糊的名字所带来的感动。

经典语录20:  

从现在开始,聪明一点,不要问别人想不想你,爱不爱你?若是要想你或者爱你自然会对你说,但是从你的嘴里说出来,别人会很骄傲和不在乎你。再也不要太在意一些人,太在乎一些事,顺其自然以最佳心态面对,因为这个世界就是这样:往往在最在乎的事物面前,我们最没有价值。

经典语录21:  

一个人的成就,不是以金钱衡量,而是一生中,你善待过多少人,有多少人怀念你。生意人的账簿,记录收入与支出,两数相减,便是盈利。人生的账簿,记录爱与被爱,两数相加,就是成就。
posted @ 2011-04-27 08:46 MEYE 阅读(496) | 评论 (0)编辑 收藏


http://bbs.imp3.net/thread-963148-1-1.html

find . -name ".svn" -exec rm -rf {} \;


source insight

http://hengxing2009.javaeye.com/blog/809622


http://hi.baidu.com/steven926/blog/item/57bc18f971ff85056d22eb88.html


http://blog.csdn.net/philips_629/archive/2010/03/05/5350510.aspx

http://hi.baidu.com/dai493400349/blog/item/c4c8f3f17326ecfd7709d769.html
posted @ 2011-03-16 18:26 MEYE 阅读(421) | 评论 (0)编辑 收藏

JavaScript实现的3D球面标签云效果http://topic.csdn.net/u/20101021/10/33959060-2C51-4E15-ABA7-FC770A39E328.html





效果预览点这里:http://www.miaov.com/miaov_demo/3dLable/miaov_demo.html
下载效果点这里:http://www.miaov.com/miaov_demo/3dLable/3dLable.rar


使用说明:

一般需要修改的,应该是3D球面的大小,也就是半径,修改了大小,就可以随意放进自己页面的任何地方。

半径大小修改:

下载后,打开 miaov.js 文件,第一行:var radius = 120; 这就是半径大小值了。

文字的修改在 miaov_demo.html 文件中,可以任意添加关键词的个数;

如果希望修改文字颜色、鼠标经过的样式,可以打开 miaov_style.css 文件,修改相关的样式即可。

效果原理:

制作这个效果需要重新回顾一下高中的数学知识:

球坐标系
例如:
r∈[0,+∞),
φ∈[0, 2π],
θ∈[0, π] .
r = 常数,即以原点为心的球面;
θ= 常数,即以原点为顶点、z轴为轴的圆锥面;
φ= 常数,即过z轴的半平面。
……
在这里,我们就不展开讲了,由数学老师来说明更合适些^_^
有兴趣的朋友可以看看百度百科的球坐标系原理:http://baike.baidu.com/view/1196991.htm

关键代码:
for( var i=1; i<max+1; i++){
  if( distr )
  {
phi = Math.acos(-1+(2*i-1)/max);
theta = Math.sqrt(max*Math.PI)*phi;
  }
  else{
phi = Math.random()*(Math.PI);
theta = Math.random()*(2*Math.PI);
  }
  //���任
  mcList[i-1].cx = radius * Math.cos(theta)*Math.sin(phi);
 //这里有点疑问,mcList[i-1].cx=radius* Math.cos(phi)*Math.sin(theta);   
  mcList[i-1].cy = radius * Math.sin(theta)*Math.sin(phi);
  mcList[i-1].cz = radius * Math.cos(phi);
//这里有点疑问,mcList[i-1].cz = radius * Math.cos(theta);

aA[i-1].style.left=mcList[i-1].cx+oDiv.offsetWidth/2-mcList[i-1].offsetWidth/2+'px';
aA[i-1].style.top=mcList[i-1].cy+oDiv.offsetHeight/2-mcList[i-1].offsetHeight/2+'px';
}
posted @ 2010-10-27 09:06 MEYE 阅读(848) | 评论 (0)编辑 收藏

哈佛大学凌晨4点半的景象

哈佛校训:
此刻打盹,你将做梦;而此刻学习,你将圆梦。

看到一篇关于哈佛大学学生是如何学习的文章,贴出来与大家共勉之。如果管理员觉得本文不合适放在首页,可以放在其他地方,谢谢

    哈佛老师经常给学生这样的告诫:如果你想在进入社会后,在任何时候任何场合下都能得心应手并且得到应有的评价,那么你在哈佛的学习期间,就没有晒太阳的时间。


作为闻名于世的学府,哈佛大学培养了许多名人,他们中有33位诺贝尔奖获得者、7位美国总统以及各行各业的职业精英。究竟是什么使哈佛成为精英的摇篮?哈佛学子接受了什么样的精神和理念?这些问题吸引着成千上万的人去探知其中的答案。

哈佛图书馆墙上的20条训言似乎已经给出了答案。短短数语,引发深思,给人启迪。

哈佛图书馆的二十条训言:
1.此刻打盹,你将做梦;而此刻学习,你将圆梦。
2.我荒废的今日,正是昨日殒身之人祈求的明日。
3.觉得为时已晚的时候,恰恰是最早的时候。
4.勿将今日之事拖到明日。
5.学习时的苦痛是暂时的,未学到的痛苦是终生的。
6.学习这件事,不是缺乏时间,而是缺乏努力。
7.幸福或许不排名次,但成功必排名次。
8.学习并不是人生的全部。但既然连人生的一部分―――学习也无法征服,还能做什么呢?
9.请享受无法回避的痛苦。
10.只有比别人更早、更勤奋地努力,才能尝到成功的滋味。
11.谁也不能随随便便成功,它来自彻底的自我管理和毅力。
12.时间在流逝。
13.现在流的口水,将成为明天的眼泪。
14.狗一样地学,绅士一样地玩。
15.今天不走,明天要跑。
16.投资未来的人,是忠于现实的人。
17.受教育程度代表收入。
18.一天过完,不会再来。
19.即使现在,对手也不停地翻动书页。
20.没有艰辛,便无所获。

此刻打盹,你将做梦;而此刻学习,你将圆梦
哈佛老师经常给学生这样的告诫:如果你想在进入社会后,在任何时候任何场合下都能得心应手并且得到应有的评价,那么你在哈佛的学习期间,就没有晒太阳的时间。在哈佛广为流传的一句格言是“忙完秋收忙秋种,学习,学习,再学习。”
人的时间和精力都是有限的,所以,要利用时间抓紧学习,而不是将所有的业余时间都用来打瞌睡。
有的人会这样说:“我只是在业余时间打盹而已,业余时间干吗把自己弄得那么紧张?”爱因斯坦就曾提出:“人的差异在于业余时间。”我的一位在哈佛任教的朋友也告诉我说,只要知道一个青年怎样度过他的业余时间,就能预言出这个青年的前程怎样。
20世纪初,在数学界有这样一道难题,那就是2的76次方减去1的结果是不是人们所猜想的质数。很多科学家都在努力地攻克这一数学难关,但结果并不如愿。1903年,在纽约的数学学会上,一位叫做科尔的科学家通过令人信服的运算论证,成功地证明了这道难题。
人们在惊诧和赞许之余,向科尔问道:“您论证这个课题一共花了多少时间?”科尔回答:“3年内的全部星期天。”
同样,加拿大医学教育家奥斯勒也是利用业余时间作出成就的典范。奥斯勒对人类最大的贡献,就是成功地研究了第三种血细胞。他为了从繁忙的工作中挤出时间 读书,规定自己在睡觉之前必须读15分钟的书。不管忙碌到多晚,都坚持这一习惯不改变。这个习惯他整整坚持了半个世纪,共读了1000多本书,取得了令人 瞩目的成绩。

我荒废的今日,正是昨天殒身之人祈求的明日
闻名于世的约翰霍普金斯学院的创始人、牛津大学医学院的讲座教授、被英国国王册封为爵士的威廉。奥斯勒在年轻时,也曾为自己的前途感到迷茫。一次,他在读书时看到了一句话,给了他很大的启发。这句话是“最重要的就是不要去看远方模糊的事,而是做手边清楚的事。”
对此,哈佛提醒学生说“我荒废的今日,正是昨天殒身之人祈求的明日”。明天再美好,也不如抓住眼下的今天多做点实事。
获得哈佛大学荣誉学位的发明家、科学家本杰明。富兰克林有一次接到一个年轻人的求教电话,并与他约好了见面的时间和地点。当年轻人如约而至时,本杰明的房门大敞着,而眼前的房子里却乱七八糟、一片狼藉,年轻人很是意外。
没等他开口,本杰明就招呼道:“你看我这房间,太不整洁了,请你在门外等候一分钟,我收拾一下,你再进来吧。”然后本杰明就轻轻地关上了房门。
不到一分钟的时间,本杰明就又打开了房门,热情地把年轻人让进客厅。这时,年轻人的眼前展现出另一番景象―――房间内的一切已变得井然有序,而且有两杯倒好的红酒,在淡淡的香气里漾着微波。
年轻人在诧异中,还没有把满腹的有关人生和事业的疑难问题向本杰明讲出来,本杰明就非常客气地说道:“干杯!你可以走了。”
手持酒杯的年轻人一下子愣住了,带着一丝尴尬和遗憾说:“我还没向您请教呢……”
“这些……难道还不够吗?”本杰明一边微笑一边扫视着自己的房间说,“你进来又有一分钟了。”
“一分钟……”年轻人若有所思地说,“我懂了,您让我明白用一分钟的时间可以做许多事情,可以改变许多事情的深刻道理。”
珍惜眼前的每一分每一秒,也就珍惜了所拥有的今天。哈佛的这句话实际上揭示了一种人生哲学,那就是人生要以珍惜的态度把握时间,从今天开始,从现在做起。

觉得为时已晚的时候,恰恰是最早的时候
安曼曾经是纽约港务局的工程师,工作多年后按规定退休。开始的时候,他很是失落。但他很快就高兴起来,因为他有了一个伟大的想法。他想创办一家自己的工程公司,要把办公楼开到全球各个角落。
安曼开始一步一个脚印地实施着自己的计划,设计的建筑遍布世界各地。在退休后的三十多年里,他实践着自己在工作中没有机会尝试的大胆和新奇的设计,不停 地创造着一个又一个令世人瞩目的经典:埃塞俄比亚首都亚的斯亚贝巴机场,华盛顿杜勒斯机场,伊朗高速公路系统,宾夕法尼亚州匹兹堡市中心建筑群……这些作 品被当作大学建筑系和工程系教科书上常用的范例,也是安曼伟大梦想的见证。86岁的时候,他完成最后一个作品―――当时世界上最长的悬体公路桥―――纽约 韦拉扎诺海峡桥。
生活中,很多事情都是这样,如果你愿意开始,认清目标,打定主意去做一件事,永远不会嫌晚。

今天不走,明天要跑
在哈佛,教授们会时常提醒学生们要做好时间管理,并列举如下事例:
当今世界上最大的化学公司―――杜邦公司的总裁格劳福特。格林瓦特,每天挤出一小时来研究蜂鸟,并用专门的设备给蜂鸟拍照。权威人士把他写的关于蜂鸟的书称为自然历史丛书中的杰出作品。
休格。布莱克在进入美国议会前,并未受过高等教育。他从百忙中每天挤出一小时到国会图书馆去博览群书,包括政治、历史、哲学、诗歌等方面的书,数年如一日,就是在议会工作最忙的日子里也从未间断过。后来他成了美国最高法院的法官。
一位名叫尼古拉的希腊籍电梯维修工对现代科学很感兴趣,他每天下班后到晚饭前,总要花一小时时间来攻读核物理学方面的书籍。随着知识的积累,一个念头跃 入他的脑海。1948年,他提出了建立一种新型粒子加速器的计划。这种加速器比当时其他类型的加速器造价便宜而且更强有力。他把计划递交给美国原子能委员 会做试验,又再经改进,这台加速器为美国节省了7000万美元。尼古拉得到了1万美元的奖励,还被聘请到加州大学放射实验室工作。
在人生的道路上,你停步不前,但有人却在拼命赶路。也许当你站立的时候,他还在你的后面向前追赶,但当你再一回望时,已看不到他的身影了,因为,他已经跑到你的前面了,现在需要你来追赶他了。所以,你不能停步,你要不断向前,不断超越。
狗一样地学,绅士一样地玩
我们说要珍惜时间,努力为实现理想而打拼,但有一点要注意,那就是不要一味地拼命,也要有适度的休息和放松。对此,哈佛有个很贴切的说法,叫做“狗一样地学,绅士一样地玩”。话虽略显粗俗,但揭示的道理却很深刻。
在哈佛,虽然学习强度很大,学生们承受着很大的学习压力,但他们也不提倡学生把所有的时间都用来学习。他们认为,学要尽力,玩也不能忽视。哈佛的学生也 说,哈佛的课余生活要胜过正规学习。而哈佛也意识到适度的课外活动不但不会背离教育使命,而且还会给教育使命以支持。因此,他们提出要像“绅士一样地 玩”。
在哈佛,学生们除了紧张地学习,还会参加学校组织的多种艺术活动,比如音乐会、戏剧演出、舞蹈表演及各种艺术展览等,此外,哈佛每年还 会举办艺术节,以活跃学生的业余生活。这些充满着浓厚艺术氛围的活动不仅让学生接受了艺术教育和熏陶,而且提高了学生的艺术修养和审美能力。
哈佛的理念就是要求你在紧张的学习和工作后,能够暂时地完全忘记它们,像投入工作那样投入玩耍,尽情地放松。的确,在你尽心休闲的时候,所得到的体力和精力的恢复会为你下一阶段的奋斗增添无穷的动力。所以,在前进的路上,你不仅要勤奋努力,更要学会放松。

现在流的口水,将成为明天的眼泪
成功与安逸是不可兼得的,选择了其一,就必定放弃了另一结局。正像哈佛所提醒的那样:现在流的口水,将成为明天的眼泪。今天不努力,明天必定遭罪。
我的邻居查尔斯曾经在哈佛度过4年的大学时光,他现在就职于纽约的一家软件公司,做他最擅长的行政管理工作,九九读书人。不久前,他的公司被一家法国公 司兼并了。在兼并合同签订的当天,公司的新总裁宣布:“我们不会随意裁员,但如果你的法语太差,导致无法和其他员工交流,那么,不管是多高职位的人,我们 都不得不请你离开。这个周末我们将进行一次法语考试,只有考试及格的人才能继续在这里工作。”
散会后,几乎所有的人都拥向了图书馆,他们这时才意识到要赶快补习法语了。只有查尔斯像平常一样直接回家了,同事们都认为他已经准备放弃这份工作了,毕竟,哈佛的学习背景和公司管理层的工作经验会帮助他轻而易举地找到另一份不错的工作。
然而,令所有人都想不到的是,考试结果出来后,这个在大家眼中没有希望的人却考了最高分。原来,查尔斯在毕业后来到这家公司后,他在工作中发现与法国人 打交道的机会特别多,不会法语会使自己的工作受到很大的限制,所以,他很早就开始自学法语了。他利用可利用的一切时间,每天坚持学习,最终学有所获。
在哈佛,你从来看不到学生在偷懒,在消磨时间。当若干年后回想起曾经的梦想时,希望带给你的是无尽的欣慰笑容,而不是因蹉跎而流下的悔恨泪水。


投资未来的人,是忠于现实的人
作为世界知名的学府,哈佛十分强调要有长远眼光,为未来投资。要投资未来,就要定好未来的投资方向,也就是要及早地设定人生目标。没有目标,就谈不到发展,更谈不上成功。
哈佛大学曾进行过这样一项跟踪调查,对象是一群在智力、学历和环境等方面条件差不多的年轻人。调查结果发现:27%的人没有目标;60%的人目标模糊;10%的人有着清晰但比较短期的目标;其余3%的人有着清晰而长远的目标.
以后的岁月,他们行进在各自的人生旅途中。25年后,哈佛再次对这群学生进行了跟踪调查。结果是这样的:
3%的人,在25年间朝着一个方向不懈努力,几乎都成为社会各界的成功人士,其中不乏行业领袖和社会精英;10%的人,他们的短期目标不断地实现,成为 各个领域中的专业人士,大都生活在社会的中上层;60%的人,他们安稳地生活与工作,但都没有什么特别成绩,几乎都生活在社会的中下层;剩下27%的人, 他们的生活没有目标,过得很不如意,并且常常在抱怨他人,抱怨社会,当然,也抱怨自己。
其实,他们之间的差别仅仅在于:25年前,他们中的一些人就已经知道自己最想要做的是什么,而另一些人则不清楚或不很清楚。这个调查生动地说明了明确生活目标对于人生成功的重要意义。


posted @ 2010-09-01 09:19 MEYE 阅读(596) | 评论 (0)编辑 收藏

也谈谈如何做演讲

http://blog.zdnet.com.cn/html/99/421499-2886530.html

作为一个经常做演讲的人,我很高兴的看到CatChen在他的文章里介绍了如何做演讲。洪超大哥在MVP openday上的培训是非常好的,我没去成很可惜。

话说回来,演讲这事我一年大概搞个小100次,如果算上我的各种Cast则要更多,所以不才就在这里随便说说关于演讲的东西。

1.演讲的目的

正本清源的说,演讲这事的目的只有一个,就是让对方相信你让他相信的,赞同你提出的,反对你反对的。演讲是宣传的工具,宣传则是包装的工具,对好事我们所做的一切叫宣传,对坏事我们所做的一切叫炒作。但是本质上,两者做的是同一种事。也就是说,你演讲的目的大体只有一个,也就是宣传或者说炒作。如果你不赞同这一观点,可以参考下面的文字《什么是炒作》

2.演讲的技巧

演讲最重要的技巧就是了解你的受众,人们只希望听见自己希望听见的话,喜欢听见自己喜欢听见的话,记住自己愿意记住的话,而其它的话,则全是废话。牢记这一点有助于你进行演讲,在开始演讲之前,你非常有必要了解你的听众,他们是谁、为什么来着、想听什么?

为了不让这个事情说的像国产教科书,我简单的把这事做如下表述“你的记忆就像一幢房子,里面是精装修,家具电器一应俱全,就是没有男主人,后来天长日久就老旧了,你选择性记忆把那些你觉的好的留下了,然后对记忆修饰一新,涂上腻子雕梁画栋,没事的时候还不断拉人来参观粉饰太平,最后你也分不清那些是原来的哪些是后弄的。简单的说,你把自己给糊弄了。”

大体上,我们在成长和衰老过程中进行着不断肯定的自我记忆修复,我们不断回忆自己做的好的往事,然后通过这一肯定让自己有继续生活的勇气,少部分人因为脑部受了损伤,总是记住自己做的坏事,然后自我否定,我们一般称呼这种病为“抑郁症”,患者都有自杀倾向,要吃百忧解才能继续生活,不幸的是,越是善于客观、理智思考的人,越不能随便忘记过失和盲目自我肯定,这也就造就了的他们早夭。人类社会千百年来没什么进步,且一茬不如一茬的根本症结就在于此。

2.1 做好自我定位

我们人类社会大体是分小圈子的,一个人的穿着打扮就说明了他的小圈子,你在演讲的时候,你和你受众必须是一个小圈子,否则一切说法就无从谈起,不信的话,你可以参考那些到处游说的职业政客,每个人走进工人的时候都是蓝领子的衬衫,走向农民的时候都是灰色尼龙绸夹克,绝对不会穿衬衫和西装。跟知识分子握手的时候则必然西装笔挺,还要带着领结。要知道,这些随着外部环境变化的形象工程是演讲成功的关键,你传的衣服,行为举止让对方感觉你不是这个圈子的,则你不用开口,就已经输了。

2.2 目标导向明确

演讲要有宣传的目的,我一开头就说了,这里再强调并非是说还要在演讲中不断的强调你的目标,刚好相反,你应该尽量回避告诉你的听众你的目标,外国PPT开头最喜欢告诉受众,我这个PPT要讲的内容是什么,然后1.2.3一列举,坦白讲,这种演讲的影响力其实很有限,因为听众会在一开头就知道,哦,原来你要讲这些啊,而且会根据内容选择性收听或者不听,因为他们想,反正我有PPT可看,还听你废话干什么。外国这么搞当然是有原因的,因为外国人是实在,来听演讲一定就是来听演讲,一定一心一意的,因为他们是自愿来的,他们对这个演讲感兴趣,但是多数情况下,来听你演讲的同胞们很多情况下完全是因为“无聊,被迫,不来听就要去干活”等等纯粹的消极因素来听演讲。所以对他们来说,PPT前面的123可以跟讲的东西完全不搭调,123是给他们一个来的理由,而他们听到的东西则决定了他们的反馈。

除了不要照本宣科以外,我还得说,演讲的诀窍之一就是把你的目的弄成简单的口号,人们对母语中有韵脚的语序有特殊的好感,大脑会选择记住他们,并且简短的东西便于口口相传,比如“不要迷恋哥,哥只是传说。”十个字,体现了很高的境界,再比如“哥抽的不是烟,燃烧的是寂寞。”11个字,体现了品位,最后比如“做人勿装B,装B被雷劈”10个字,提前了对以上所有说法的否定,如果你想让你的演讲也能深入人心,那么一定要把主题弄在10个字里,并且让他们押韵,比如…

3.演讲常见悖论

演讲需要做大量准备,反复对这镜子练习,注意观察自己的口型和神态。

凡提供这一说法的都是上过MBA课,或者被外国人忽悠了,大体上国外进口的演讲入门书籍里都这么说,这种说法很适合受众固定,内容统一的演讲,也就是说,如果你长年累月就说着一套话,那么再最开始,你应该可以通过这样准备而获得比较好的提高。但是,实际上,多说情况下,这种准备对你的帮助有限,对演讲的内容最好的准备是,在演讲之前对稿子熟练,然后扩充各种相关内容,仔细分析各种相关书籍和文章,尽量在演讲的时候说听众没想到或者没听说过的。这比口型神态什么的管用的多。

演讲需要口齿清楚,逻辑流畅,这样才能打动人。

有兴趣的人可以参加一下安利的讲座,或者跟保险推销员以及任何直销销售人员聊天,如果您有机会现场听学校辅导员老师讲课,则您更会理解我说的内容。这里就不多谈了。

演讲只是交流的手段,演讲的目的是为了交流,激荡出智力的火花。

这跟两个已经势同水火的平级领导在年会上频频碰杯,并高呼“我们是一个Team”,或者一对早就貌合神离却总在媒体前如胶似漆,还说“我们一直很恩爱”的演员伉俪一样。这种说法源于虚伪,其实更像那些想骗你钱的打电话给你推销东西的人说的一样,“我们都是为你好。”

以上是我关于演讲能想起来的大部分细节,最后还有一句老话,卖油的大爷说的“无他,手熟尔。”勤学苦练总是一个亘古不变的好方法。

下面说说题外话,面试的紧张。

任何人面试都紧张,因为要被质问,谁都不喜欢被质问,另外就是心里很想得到这个工作很怕失去这个机会,其实站在人生这个长度看问题,面试连小插曲都算不上,顶多算打一个喷嚏,既不新鲜也不有趣。任何机会如果被标上“一旦错过,永不可能”,则应该坦然让这机会走开,因为谁也不能妄论别人的生死乃至前程,世界充满未知和不确定,一份工作的得失其实微不足道,人,无论伟大或者渺小,最后都是一个终极目标,所以在这过程中尽力耍宝就好,压根用不着为了别人的评价烦恼。

posted @ 2010-08-26 19:25 MEYE 阅读(407) | 评论 (0)编辑 收藏

人生如戏,谈如何面对困难

转自:http://blog.zdnet.com.cn/html/99/421499-type-index.html

看见好多人都说困难,家里困难,工作困难,等等逐日此类不一而足,我也随便说两句,我得看法,怎么解决外部环境问题,战天斗地这些我不想说了,我就想说说自己怎么调整心态吧。

其实调整心态挺简单的,就四个字,人生如戏。

人生如戏何解呢,也很简单,就是把你现在所发生的事都当一处话剧,你,你爸爸,你妈妈,你同事,你朋友,你领导,你下属,你老婆,你情人,其实都是演员,大伙兴冲冲的你方唱罢我登场,其实都是演戏,没人跟你来真的,也没有真的。你也就演这几十年,演好演坏无所谓,反正最后都是眼一闭腿一蹬,所以得想开。

当然这话说着容易做着难。首先是得知道自己演的什么角色,您在外面威风八面,回家都得演孝子贤孙,中国人讲究这个。所以记得跟你爸爸妈妈说话的时候要当孝子贤孙,所谓孝是孝敬,尊敬的程度多一点。不是孝顺,没有顺从的必要。你一完全行为能力责任人,你干什么都可以自己负责,压根不用你爸爸妈妈操心。为了避免老有人说看不懂,我再说透亮点。你爸你妈说什么,就答应什么,回头一扭脸,你演别的角色了,就完全不用管答应过他们什么了,因为那是俩角色,不能混着来,你爸你妈苦口婆心跟你说,也是他们的责任,他们作为老演员演了几十年,眼看到最后一班岗了,非得站的敬业一点才好。敬着他们,就是说什么都答应,不顺着他们,就是只捡自己觉得好的做。

角色一时一变,语言、行动也得跟着变。上班的时候你是个积极的程序员,跟你女朋友在一起的时候你就是好男朋友、好老公,这俩角色不交叉,台词也不能混着来,不信你跟你同事聊韩剧,跟女朋友聊.NET,你肯定得倒霉。好多人犯拧巴,非得一天到晚一个腔调,这就是所谓没事找抽型,活该别人不给你好脸色。

跟女朋友打完电话,你又摇身一变成积极青年了,大半夜不睡觉,你得学习新技术,这时候问你女朋友叫什么,你都不用搭理他,因为你这会不演这个角色,这个角色的台词你就不需要记得。

大部分的角色其实都挺好找的,人家一叫你,你一答应就全找到了。人家叫你儿子,你就知道你演儿子呢,人家叫你孙子,你就知道你演孙子呢,人家叫你老公,你就知道你演老公呢,人家叫你SB,你就知道,你演SB呢。前三种都知道怎么演,就最后一种好多人拿不住,人家一叫他这个他就不知道怎么办了,你想想看,一个SB没思考能力,能怎么办?这事稍微一过脑子就能明白,低等动物受到攻击怎么办,脊椎反射都知道,挨骂就骂回去挨打就打回去,不用担心什么礼貌一类,因为你在演一个SB。

诸如此类,社会角色也定义了,演也演了,好多人不满意,非要当角儿,要跟一帮演员里拔得头筹,觉得不这样不算混这一场演出。要我说这事没必要,大伙都是演这一阵,谁知道谁什么时候就下场了。为这点电光石火之间的事争长短,犯不上。

最后就是演着演着好多人谢幕了,有些老演员匆匆忙忙就谢幕了,有些提前还假装不舒服,让演医生的出来串串场,有些则干脆不打招呼就溜号了,这时候你也别太难过,这不是没有戏德的表现,实在是老演员太辛苦了,演了那么长时间,需要休息,你也别难过,没准哪天就在街上碰见了,虽然彼此都装着不认识,但是心里还是认识的。我小时候就这么想,所以姥姥姥爷走了以后不怎么难过,今天我劝大家都这么想,也许就少难过一点。(要依着我自己写,这句话就不加,但又怕说看不懂)

对于女朋友,人家漂亮姑娘肯定得赶场,档期实在排不开就不能陪你演着一阵你也更不用难过,人家跟谁不是演这一阵子啊,换句话说,你不是得找那个能跟你演一辈子的吗,所以别着急。别犯牛劲。

然后就是事业不顺,那就更看得开了。韩信跟漂母讨饭,秦琼卖马,赵匡胤跟街上摆象棋摊,哪个大人物不是从挫折戏演起的,换句话说,没有挫折戏这一出,哪能体现后面飞黄腾达的刺激呢,所以演这出戏是必由之路,一旦导演给您派了这出戏,您应该高兴,那是您要飞黄腾达的了,这会忍住以后就能吃香的喝辣的。

况且导演哪能真把您逼得绝路上,前面肯定给您安排了峰回路转的情节,无论如何都得静观其变,中途罢演那就没劲了。

最后就是希望大家都好,别管有钱没有,有吃的没有,总把这一切都当成一出戏,有演的有看的,就能乐在其中,其乐融融了。


posted @ 2010-08-26 19:23 MEYE 阅读(413) | 评论 (0)编辑 收藏
     摘要: [转载:]   http://www.ideasandroid.com/?p=328 本文将介绍在android平台下如何实现多线程下载,大家都知道,android平台使用java做为开发语言,所以java中支持的多线程下载方式在android平台下都支持,其中主要有两种方式可以实现多线程下载。 一种方式是使用很多个线程分别下载文件的不同部分,最后把所有下载完的文件合并成一个文...  阅读全文
posted @ 2010-08-17 17:16 MEYE 阅读(2354) | 评论 (0)编辑 收藏

样式是用于描述一个View或是一个窗口的显示属性的集合,样式可以指定如高度,填充,字体颜色,字体大小,背景颜色等属性。样式是从布局文件中分离出来的一个XML资源文件。Android中的样式就像Web开发中的css样式表,它使用我们的样式独立于内容进行设计开发。
例如,通过使用一个样式可以让如下的布局文件

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#00FF00"
    android:typeface="monospace"
    android:text="@string/hello" />

简化为:

<TextView
    style="@style/CodeFont"
    android:text="@string/hello" />

所有和样式有关的属性都被从布局XML文件中移动到一个叫“CodeFont”的样式定义中,然后使用一个style属性指定样式名称。你将会在以下的内容中看到如何定义一个样式。

应用于一个Activity或应用程序的样式称为主题(theme),而不是刚才说的一个View。所有在当前Activity或应用下的视图(VIEW)都会应用相同的主题样式。例如,您可以让一个Activity使用”CodeFont”主题,那么这个Activity下的所有视图的的文本都将是绿色等宽字体。

定义样式

定义样式我们需要在 res/values/目录下新建一个XML文件,文件名自已随便命名,但必须以.xml为文件后缀。Xml的根节点必须为
我们用style标签来定义一个样式,用标签来定义样式属性。如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CodeFont" parent="@android:style/TextAppearance.Medium">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#00FF00</item>
<item name="android:typeface">monospace</item>
</style>
</resources>

Style标签的name属性是必须有的,节点可以定义颜色、高度或者是另一个资源的引用。所有节点的子节点在编译时都会做为应用程序的一个资源。所以我们可以通过style节点的name属性值来引用这个资源。比如在布局文件中使用@style/CodeFont来引用这个样式。parent 属性是可选的,用它来标识本样式是继承哪个样式,在父样式中的所有属性都将被应用于本样式中,同时可以覆盖父样式中的样式(和java的继承相似)。

样式的继承
这里有两种方式可以实现样式继承,如上例中所示的,我们可以在定义样式时使用parent属性来继承样式,使用这种方式,我们可以继承一个我们自己定义好的样式,也可以继承一个android平台自带的样式(后文中会介绍android平台自带的所有样式)。如下所示,我们继承一个android平台默认的文本样式,并把它的字体颜色改为我们需要的颜色。

<style name="GreenText" parent="@android:style/TextAppearance">
<item name="android:textColor">#00FF00</item>
</style>

另一种继承的方式是使用用户自定义的样式作为前缀即可。这种方式只适用于继承用户自定义样式。如下所示:

<style name="CodeFont.Red">
<item name="android:textColor">#FF0000</item>
</style>

这样,新定义的样式就会继承CodeFont样式的所有属性,然后把字体颜色变为#FF0000。我们可以这样引用新的样式: @style/CodeFont.Red
相同的方法,我们可以再继承下去,如下所示:

<style name="CodeFont.Red.Big">
<item name="android:textSize">30sp</item>
</style>

这样新的样式文子的大小就和CodeFont.Red样式不同了。

样式属性

到这里为止,你已经知道了如何定义一个样式,你还需要知道有多少种样式属性可以通过节点来定义。你可能已经对其中的一些比较熟悉了,如layout_width 、textColor等。当然,还有很多的样式属性是你可以使用的。

最好的方法查询一个视图支持哪些样式属性的方法是查询视图类的文档中XML Attributes表格,如TextView的XML attributes如链接中所示: http://www.ideasandroid.com/android/sdk/docs/reference/android/widget/TextView.html#lattrs

如需所有可用的样式属性的,请参阅R.attr: http://www.ideasandroid.com/android/sdk/docs/reference/android/R.attr.html
不是所有的视图都支持上面的样式属性,如果遇到不支持的样式属性,您定义的属性将会被忽略。

应用样式和主题

应用样式和主题的方法很简单,在布局定义文件(layout)中,使用style属性直接引用样式资源,如下所示:

<TextView
    style="@style/CodeFont"
    android:text="@string/hello" />

在AndroidManifest.xml文件中可以引用样式主题,可以为一个Activity定义一个主题,也可以为整个应用程序定义一个主题,如下所示:

<application android:theme="@style/CustomTheme">

或者:

<activity android:theme="@style/CustomDialogTheme">

Android平台的样式和主题

样式见:http://www.ideasandroid.com/android/sdk/styles.xml
主题见:http://www.ideasandroid.com/android/sdk/themes.xml

posted @ 2010-08-17 17:14 MEYE 阅读(1075) | 评论 (0)编辑 收藏

ListView的Adapter的作用如下图所示:

Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。想过没有? 在我们的列表有1000000项时会是什么样的?是不是会占用极大的系统资源?

先看看下面的代码:

public View getView(int position, View convertView, ViewGroup parent) {
View item = mInflater.inflate(R.layout.list_item_icon_text, null);
((TextView) item.findViewById(R.id.text)).setText(DATA[position]);
((ImageView) item.findViewById(R.id.icon)).setImageBitmap(
(position & 1) == 1 ? mIcon1 : mIcon2);
return item;
}

怎么样?如果超过1000000项时,后果不堪设想!您可千万别这么写!

我们再来看看下面的代码:

public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item, null);
}
((TextView) convertView.findViewById(R.id.text)).setText(DATA[position]);
((ImageView) convertView.findViewById(R.id.icon)).setImageBitmap(
(position & 1) == 1 ? mIcon1 : mIcon2);
return convertView;
}

怎么样,上面的代码是不是好了很多?系统将会减少创建很多View。性能得到了很大的提升。

还有没有优化的方法呢? 答案是肯定的:

public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.text);
holder.icon = (ImageView) convertView.findViewById(R.id.icon);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(DATA[position]);
holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);
return convertView;
}
 
static class ViewHolder {
TextView text;
ImageView icon;
}

怎么样?会不会又给您的系统带来很大的提升呢?看看下面三种方式的性能对比图您就知道了!

本文是Google I/O 2009 Romain Guy 所讲的内容,这里只做简单介绍,相信一看代码就能看懂!有问题请留言!

posted @ 2010-08-17 17:13 MEYE 阅读(2906) | 评论 (1)编辑 收藏
     摘要: 当您需要在您的应用程序中提供搜索服务时,您第一个想到的是您的搜索框要放哪呢?通过使用Android的搜索框架,应用程序将显示一个自定义搜索对话框来处理用户的搜索请求。通过一个简单的搜索按钮或从您的应用程序中调用API,搜索对话框就会显示在屏幕的顶部,并会自动显示您的应用程序图标。如下图所示: 本文将教你如何为你的应用程序提供一个自定义搜索对话框。这样做,给您的用户提供一个标准化的搜索体验,并...  阅读全文
posted @ 2010-08-17 17:12 MEYE 阅读(1019) | 评论 (0)编辑 收藏

Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用。其中也有许许多多的开发者提供了应用开源项 目,贡献出他们的智慧和创造力。学习开源代码是掌握技术的一个最佳方式。下面推荐几个应用开源项目,这些项目不仅提供了优秀的创意,也可以直接掌握 Android内核的接口使用:

1.Android团队提供的示例项目

如果不是从学习Android SDK中提供的那些样例代码开始,可能没有更好的方法来掌握在Android这个框架上开发。由Android的核心开发团队提供了15个优秀的示例项 目,包含了游戏、图像处理、时间显示、开始菜单快捷方式等。 
地址:http://code.google.com/p/apps-for-android/

2.Remote Droid

RemoteDroid是一个Android应用,能够让用户使用自己的无线网络使用无线键盘、触摸屏操作手机。这个项目为开发者提供了如网络连接、触 摸屏手指运动等很好的样例。 
地址:http://code.google.com/p/remotedroid/

3.TorProxy和Shadow 
TorProxy应用实现了Android手机无线电电传通讯(TOR),和Shadow应用一起使用,可以使用手机匿名上网。从该项目源代码中,可以 掌握socket连接、管理cookie等方法。 
地址:http://www.cl.cam.ac.uk/research/dtg/code/svn/android-tor/ 
http://www.cl.cam.ac.uk/research/dtg/android/tor/

4、 Android SMSPopup 
SMSPopup可以截获短信内容显示在一个泡泡形状的窗口中。从这个项目中可以掌握到如何使用内置的短信SMS接口。 
地址:http://code.google.com/p/android-smspopup/

5、 Standup Timer 
Standup Timer应用用于控制站立会议时间,类似秒表倒计时,可以提醒每个人的讲话时间已到,从而保证每个与会者使用时间一样。从该项目的代码中,可以学会如何 使用时间函数。另外,这个项目的代码是采用视图view、模型model严格分离的设计思路。 
地址:http://github.com/jwood/standup-timer

6、 
是.com的一个客户端应用,该应用主要分为两个模块API(com.joelapenna.foursquare)和界面前端 (com.joelapenna.foursquared)两部分。从该项目代码中,可以学会如何同步、多线程、HTTP连接等技术。 
地址:http://code.google.com/p/foursquared/

7、 Pedometer 
Pedometer应用用于记录你每天走路步数的。尽管记录不一定精准,但是从这个项目中,可以学习几个不同的技术:加速器交互、语音更新、后台运行服 务等。 
地址:http://code.google.com/p/pedometer/  

8、 OpenSudoku-android 
OpenSudoku是一个简单的九宫格数独游戏。从代码中可以学习到如何在视图中显示表格数据,以及如何和一个网站交互等技术。 
地址:http://code.google.com/p/opensudoku-android/

9、 ConnectBot 
ConnectBot是Android平台的一个客户端安全壳应用。从该项目代码中,可以学习到很多Android安全方面的内容,这些是你在开发应用 时经常需要考虑的安全问题。 
地址:http://code.google.com/p/connectbot/

10、 WordPress的Android应用 
当然在最后不能不提WordPress的Android应用了,这是WordPress官方开发团队提供的一个项目。从代码中可以学习到XMLRPC调 用(当然还有更多的优秀内容)。 
地址:http://android.svn.wordpress.org/trunk/

posted @ 2010-08-17 17:06 MEYE 阅读(531) | 评论 (0)编辑 收藏
Ubuntu环境安装配置Bugzilla

http://www.bugzilla.org/download/#v218

http://www.bugzilla.org/download

1 Bugzilla简介
1.1 产生
Bugzilla是一个共享的免费的产品缺陷记录及跟踪工具。由Mozilla公司提供。创始人是Terry Weissman,开始时使用一种名为“TCL”的语言创建的,后用Perl语言实现,并作为Open source发布。
1.2 特点
Bugzilla能够为你建立一个完善的bug跟踪体系,包括报告bug、查询bug记录并产生报表、处理解决bug、管理员系统初始化和设置四部分。Bugzilla具有如下特点:
1.基于Web方式,安装简单、运行方便快捷、管理安全。
2.有利于缺陷的清楚传达。本系统使用数据库进行管理,提供全面详尽的报告输入项,产生标准化的bug报告。 提供大量的分析选项和强大的查询匹配能力,能根据各种条件组合进行bug统计。当缺陷在它的生命周期中变化时,开发人员、测试人员、及管理人员将及时获得 动态的变化信息,允许你获取历史记录,并在检查缺陷的状态时参考这一记录。
3.系统灵活,强大的可配置能力。Bugzilla工具可以对软件产品设定不同的模块,并针对不同的模块设定开发人员和测试人员。这样可以实现提交报告时 自动发给指定的责任人,并可设定不同的小组,权限也可划分。设定不同的用户对bug记录的操作权限不同,可有效控制进行管理。允许设定不同的严重程度和优 先级。可以在缺陷的生命期中管理缺陷。从最初的报告到最后的解决,确保了缺陷不会被忽略。同时可以使注意力集中在优先级和严重程度高的缺陷上。
4.自动发送Email,通知相关人员。根据设定的不同责任人,自动发送最新的动态信息,有效的帮助测试人员和开发人员进行沟通。


2 安装Step by Step
Bugzilla是一个基于WEB的缺陷管理系统。前台用 Perl语言实现,后台使用MySQL数据库。因为Bugzilla除了通过WEB来跟踪处理bug外,还同时通过Email来跟踪bug的处理过程。如 果不通过Email来跟踪bug的话,Email电子邮件系统并不是必要的。但是,如果要正常运行Bugzilla,必须设置一个smtp邮件发送服务 器。
安装Bugzilla需要MySQL、Perl等等配套软件。为了简化Bugzilla的安装过程,让大家少走弯路,我们把Bugzilla及其配套软件的安装包都整合到一个目录Bugzilla-2.20.1下,并以Step by Step的方式介绍安装及配置过程:
Bugzilla-2.20.1
01.mysql
02.perl
03.bugzilla
04.ReadMe

    
我刚刚入手UNIX系统学习,学着安装配置Bugzilla。被不少的问题折腾着浪费不少时间,查了不少资料,最终还是圆满成功了。在这作个总结,希望这篇博文能帮助初学者。欢迎各位朋友共同探讨学习。
emial:zongguo.zhang@gmail.com
欢迎转载,请注明出处。
bugzilla安装工具 apache2+mysql5.1+perl+bugzilla3.2.2

Step by step

安装篇

1.安装apache2   
  Ubuntu就可以直接用命令行可以安装 #sudo apt-get install apache2 系统自动安好,打开浏览器在地址栏输入http://ip (你的ip地址或者127.0.0.1)就会在 页面上出现 “ 
It works”则表明apache安装成功。
  出了问题的话,进入/etc/apache2 目录下 用#vi httpd.conf打开文件添加ServerName 127.0.0.1:80即可.

2.安装mysql
  用命令#sudo apt-get install mysql-server 系统自动安装,我装的是mysql5.1.
  安装时要输入密码这是进入root的密码(建议用你ubuntu系统密码),(mysql -uroot -p密码),然后用上述命令行来登录,登录成功显示版本信息和 mysql> ,OK!
  mysql 服务启动/停止/重启命令#service mysql start/stop/restart.

3.安装Bugzilla
  bugzilla到官网去下载(一般为tar.gz包),这个不用我说了吧!不懂google一下,然后cd到下载目录解压包#tar -xzf bugzilla.xx.xx.tar.gz ,再改名#mv bugzilla.xx.xx bugzilla ,再移动到/var/www下面#mv bugzilla /var/www  完毕~~~~ok!

4.安装perl
  先进入到bugzilla目录#cd /var/www/bugzilla,在命令行输入#./checksetup.pl命令检查一下还有哪些perl模块没有安装,因为在系统自动安转apache和mysql时就已安装一部分,

Checking perl modules...
Checking for              CGI.pm (v3.33)   ok: found v3.49 
Checking for            TimeDate (v2.21)   ok: found v2.24 
Checking for           PathTools (v0.84)   ok: found v3.31 
Checking for                 DBI (v1.41)   ok: found v1.611 
Checking for    Template-Toolkit (v2.15)   ok: found v2.22 
Checking for          Email-Send (v2.00)   ok: found v2.198 
Checking for          Email-MIME (v1.861)  ok: found v1.903 
Checking for Email-MIME-Modifier (v1.442)  ok: found v1.903 

Checking available perl DBD modules...
Checking for              DBD-Pg (v1.45)    not found 
Checking for           DBD-mysql (v4.00)   ok: found v4.012 
Checking for          DBD-Oracle (v1.19)    not found 
第一组要全装,第二组就看你装的什么数据库了,这里装的是mysql就选DBD-mysql,not found表示没有安装,用下面提的COMMANDS TO INSTALL:需要什么就复制粘贴就可安装好。

到这里Buglilla所需要的组件全安装完毕,第一篇OK!


配置篇

1.apache2配置 
  A.修改 
apache的配置文件apache2.conf:进入/etc/www/apache2目录下面 vi /apache2.conf 找到ServerRoot,修改ServerRoot bugzilla所在的目录“/var/www”,即如下:(注释原来的添加修改)
#ServerRoot "/etc/apache2"
ServerRoot "/var/www"
  B.修改
apache的配置文件apache2.conf: 设置 apache访问bugzilla的用户及用户组,本安装中将用户及用户组都设置为www-data:如下:
#User ${APACHE_RUN_USER}
#Group ${APACHE_RUN_GROUP}
User www-data
Group www-data
  C.修改
apache的配置文件apache2.conf:添加bugzilla所在目录:即在apache.conf文件末添加如下

  Alias /bug/ "/var/www/bugzilla"

  <Directory "/var/www/bugzilla">

     AddHandler cgi-script .cgi

  Options +Indexes +ExecCGI +FollowSymLinks

  DirectoryIndex index.cgi

  AllowOverride None

  Order allow,deny

  Allow from all

</Directory>

  D: 修改 www-databugzilla的访问权限
        chown -R www-data:www-data /var/www/bugzilla
     
  最后,重启apache2服务 #/etc/init.d/apache2 restart   ~~~~~OK!

2.mysql配置
  用#mysql -uroot -p密码 登录mysql 。
  首先,创建数据库
bugs   mysql> create database bugs 
  其次,创建用户
bugs     mysql> use mysql;
  再次,授权 
mysql> GRANT SELECT, INSERT,UPDATE, DELETE, INDEX, ALTER, CREATE, LOCK TABLES,CREATE TEMPORARY TABLES, DROP, REFERENCES ON bugs.*TO bugs@localhost IDENTIFIED BY '前面root密码'; 
  最后,
mysql> FLUSH PRIVILEGES; 
       退出mysql:mysql>exit或quit
  注:mysql命令以(;)结束,不区分大小写。

3.Bugzilla配置
  先#cd /var/www/bugzilla 运行
bugzilla目录下的checksetup.pl (#.checksetup.pl)自动生成loacalconfig文件(原本bugzilla目录里没有),打开文件localconfig(#vi localconfig),配置如下:
$webservergroup = 'www-data';
$db_driver = 'mysql';
$db_host = 'localhost';
$db_name = 'bugs';
$db_user = 'bugs';
$db_pass = '密码';  注意:为了防止出错,建议所有密码都设置为ubuntu系统密码。
其它不变。

现的配置文件都设置完成,重启apache2 #/etc/init.d/apache2 restart
                     重启mysql  #service mysql restart
                     重新运行checksetuo.pl #./checksetup.pl
结果会出现如下错误:
  SESSION variable 'max_allowed_packetis read onlyUse SET GLOBAL to assign 
the value

  上面错误的原因是bugzilla3.3.2对mysql5.1及以上新版本的兼容性不好。需要修改几处源码文件Bugzilla/Config/Attachment.pm和Bugzilla/Config/Common.pm等,地址:https://bug480001.bugzilla.mozilla.org/attachment.cgi?id=364818其中(-)表示删除(+)表示添加。

bugzilla的预编译和生成相应的配置信息等,如下提示:
Precompiling templates...done.
Fixing file permissions...
Initializing "Dependency Tree Changes" email_setting ...
Marking closed bug statuses as such...

Now filling the 'status_workflow' table with valid bug status transitions...

Adding foreign key: attachments.submitter_id -> profiles.userid...

Adding foreign key: bugs_activity.who -> profiles.userid...

Adding foreign key: bugs_fulltext.bug_id -> bugs.bug_id...

·
·
·
并且会提示输入以下信息:
Enter the e-mail address of the administrator: test@uestc.edu.cn
Enter the real name of the administrator: 
用户名
Enter a password for the administrator account: password
Please retype the password to verify: password
根据以上提示输入bugzilla管理员的相关信息
成功后,在浏览器输入:
http://127.0.0.1/bugzilla会出现bugzilla的管理主页面

应用篇

   Bugzilla网上有很多使用文档,我就不再细述。主要想说一下bugzilla发不出去邮件的问题。
配置smtp。
登录后点击administrator进行参数设置,点击parameter进入,再点击email设置。

mail_delivery_method : smtp
mailfrom                   : 设置成我的真实邮箱     例 me@163.com 可能有的mail server会验证邮箱的真实性以及是否属于该mail server
sendmailnow          : on
smtpserver           : 设置成smtp authentication服务器 例smtp.163.com
smtp_username        : 我的邮箱    例 me@163.com
smtp_password        : 密码
注意后两个parameters(选项)是2.22.1 debian所没有的。

但是接下来我在测试发送邮件的时候总是报

“The new value for smtp_username is invalid: Error requiring
Authen::SASL: ‘Can’t locate Authen/SASL.pm in @INC (@INC contains: .
lib c:/perl/site/lib c:/perl/lib) at (eval 84) line 3. ‘.”
这个错误要求我们安装Authen::SASL 可以回到checksetup.pl处按照提示安装,但是我在这里却出现了问题。
由于之前已经将bugzilla3.2.2文件夹的访问权限设置给了www-data组,现在无法进入到bugzilla3.2.2文件夹内执行任何操作,总报permissions access

采用 sudo –s –H 并输入密码,可以以root权限进入该文件夹操作,安装好Authen::SASL后,发送邮件功能ok。

posted @ 2010-08-13 14:00 MEYE 阅读(2007) | 评论 (1)编辑 收藏
     摘要: 这些道理不懂,你注定就是穷打工的命 http://kb.cnblogs.com/page/57888/   首先声明:如果你是“愤青”或“类愤青”,对不起,请放下此书,因为文中的观点可能会伤害你的心灵(不是对“愤青”有偏见,而是“愤青”们多数都是“纯洁”得不识人间烟火...  阅读全文
posted @ 2010-08-12 22:28 MEYE 阅读(472) | 评论 (0)编辑 收藏
     摘要: Ubuntu 6.06/7.04 安装bugzilla 弄了好久才安装成功,记下来备忘!  1.安装mysql  sudo apt-get install mysql-server  mysql -uroot  create database bugzilla;  2.安装apache2  sudo apt-get in...  阅读全文
posted @ 2010-08-12 22:14 MEYE 阅读(671) | 评论 (1)编辑 收藏
在windows下配置svn服务器(方法一,无apache

1.下载文件

2.安装Subversion 服务器

由于我下载的是setup.exe版本,安装程序安装后会自动设置系统变量.如果你下载的是zip版就需要手动设置系统变量.
setup.exe版直接安装就可以了.安装到D:\Program Files\Subversion

首先创建SVN储存库(repository)

svnadmin create F:\lava\svn\
【注】创建仓库的方法也可以使用TortoiseSVN,在目的文件夹上右键->Create Repository

repository创建完毕后会在目录下生成若干个文件和文件夹,dav目录是提供给Apache与mod_dav_svn使用的目录,让它们存储内部数据;db目录就是所有版本控制的数据文件;hooks目录放置hook脚本文件的目录;locks用来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端;format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号;

3.配置SVN服务器


打开svn目录中配置文件conf\svnserve.conf,修改配置参数。
例:d:\svnhome\conf\svnserve.conf去掉以下内容之前的注释符#
[general]
anon-access = none   
auth-access = write
password-db = passwd
realm = My First Repository

说明:
anon-access = none   
--不允许匿名访问!这个很重要,不然谁都能访问这个代码仓库了。
        auth-access = write  
-- 允许提交修改
        password-db = passwd
--密码文件名字 

 

【注】如果需要控制访问的用户身份,则:
# [general]
# password-db = passwd

去之每行开头的#,其中第二行是指定身份验证的文件名,即passwd文件
同样打开passwd文件,将

# [users]
# harry = harryssecret
# sally = sallyssecret

这几行的开头#字符去掉,这是设置用户,一行一个,存储格式为“用户名 = 密码”,如可插入一行:admin = admin888,即为系统添加一个用户名为admin,密码为admin888的用户

4.运行SVN服务器

运行SVN服务
在命令行执行

svnserve --daemon --root F:\lava\svn

服务启动,--daemon可简写为-d,--root可简写为-r,可以建立一个批处理文件并放在windows启动组中便于开机就运行SVN服务,或者在这个地址http://clanlib.org/~mbn/svnservice/下载那个svnservice.exe文件,拷贝到E:\svn\bin目录下,再从命令行下执行:

svnservice -install --daemon --root "E:\svn\Repository"
sc config svnservice start= auto
net start svnservice
 
 
5、添加为系统服务


方法1(推荐):
在Windows NT中(包括Windows XP, Windows 2000, Windows 2003 Server)本身包含了一个安装服务的工具,叫做"Service Control",也就是sc.exe。
1.安装为服务:
例:我的Subversion安装在"D:\program files\Subversion",版本库在"D:\svn_root",而我希望对应的Subversion服务名为svnservice,安装这个svn服务的命令就可以这样写:
sc create svnservice
binpath= "D:\ Program Files\Subversion\bin\svnserve.exe --service -r D:\svn_root"
displayname= "SVNService"
depend= Tcpip
请注意,因为便于察看,上面的命令分为多行,但在实际执行时应该在一行里。另外,在以前启动svnserve时会使用"-d"选项,也就是守护进程模式,在这里不能使用,会导致服务无法启动。同样,"-i"和"-t"选项也不能使用。
另外还有两点需要小心处理。首先,如果路径中包括空格,一定要用“\”处理“"”号,例如上面的例子中如果svnserve.exe在“c:\ program files\subversion\”中,则命令应该写为“binpath= "\"c:\program files\subversion\bin\svnserve.exe\"”(“”中的内容),整个命令如下,红色部分是改变部分:
sc create svnservice
binpath= "\"D:\ Program Files\Subversion\bin\svnserve.exe\" --service -r D:\svnroot"
displayname= "SVNService"
depend= Tcpip
其次,sc对选项的格式还有要求,例如“depend= Tcpip”不能写为“depend = Tcpip”或“depend=Tcpip”,也就是“=”前不能有空各,而后面必须有空格。
2.启动服务
在命令行窗口执行完这个命令之后,服务还没有启动,你可以继续运行"net start svnservice"启动这个服务。
3.停止服务
然后使用"net stop svnservice"停止服务。
4.删除服务
如果服务安装的有问题,你可能需要删除服务。要删除前面添加的服务,只需要运行"sc delete svnservice","svnservice"就是我们创建服务时使用的名字。
5.配置服务是自动启动
默认情况下安装的服务不会随Windows的启动而启动,为了使svn服务能够随Windows启动而启动,需要修改一下"sc create"命令(首先要删除),增加"start= auto"选项:
sc create svnservice
binpath= "D:\ Program Files\Subversion\bin\svnserve.exe --service -r D:\svn_root"
displayname= "SVNService"
depend= Tcpip
start= auto
当然你也可以使用图形化的工具修改服务的属性,你可以在“开始->运行...”中执行"services.msc",然后在界面中修改。
方法2:
建立一个批处理文件并放在windows启动组中便于开机就运行SVN服务。
方法3:
这个地址
http://clanlib.org/~mbn/svnservice/下载那个svnservice.exe文件,拷贝到E:\svn\bin目录下,再从命令行下执行:
svnservice --install --daemon --root "E:\svn\Repository"
sc config svnservice start= auto
net start svnservice
此文件会将SVN变成windows系统的一个服务,并默认为自启动,注意:执行第三句时确保前面以命令行方式运行的SVN服务已经停止,如果没停止可在其窗口中按Ctrl+C中止运行。
 



轻松搭建一个Windows SVN服务器

 

  前文所述SVN客户端使用的时候,用的SVN服务器通常为外部,例如Google Code的服务器,不过,做为一个程序开发人员,就算自己一个人写程序,也应该有一个SVN版本控制系统,以便对开发代码进行有效的管理。这里我就介绍一个在Windows环境下简单快速搭建SVN服务器的方法。

  通常的SVN服务器是搭建在Linux等系统下,例如用Apache+SVN配置,Linux下的SVN性能会非常好,但配置有些繁琐,如果SVN服务器只有自己使用,那么可以直接把SVN服务器搭建在个人Windows环境下使用。

  目前较为简单的方案是VisualSVN Server。该SVN服务器是免费的,支持Windows NT, 2000, XP and 2003等环境,安装非常简单。

  安装的时候可以选择SVN走http协议还是https协议,http协议速度快一些,而https协议安全性好。两者均可以从浏览器直接访问SVN项目。

  安装完成后打开,可以看到一个微软的MMS管理界面,在里面可以轻松添加设置项目。用户权限可以使用Windows的用户,也可以单独新建用户。如果原先有一个SVN数据,则可以在界面上导入原有的SVN数据。

VisualSVN Server

  SVN客户端依旧推荐使用Windows下的TortoiseSVN,两者搭配起来,非常好用。

posted @ 2010-03-10 13:16 MEYE 阅读(1276) | 评论 (0)编辑 收藏
http://blog.163.com/dahebaobao@126/blog/static/50974483201002745726971/
posted @ 2010-01-30 20:08 MEYE 阅读(650) | 评论 (1)编辑 收藏

 PCI驱动程序实现(linux)收藏
 1. 关键数据结构


PCI 设备上有三种地址空间:PCI的I/O空间、PCI的存储空间和PCI的配置空间。CPU可以访问PCI设备上的所有地址空间,其中I/O空间和存储空间提供给设备驱动程序使用,而配置空间则由Linux内核中的PCI初始化代码使用。内核在启动时负责对所有PCI设备进行初始化,配置好所有的PCI设备,包括中断号以及I/O基址,并在文件/proc/pci中列出所有找到的PCI设备,以及这些设备的参数和属性。

Linux驱动程序通常使用结构(struct)来表示一种设备,而结构体中的变量则代表某一具体设备,该变量存放了与该设备相关的所有信息。好的驱动程序都应该能驱动多个同种设备,每个设备之间用次设备号进行区分,如果采用结构数据来代表所有能由该驱动程序驱动的设备,那么就可以简单地使用数组下标来表示次设备号。

在PCI驱动程序中,下面几个关键数据结构起着非常核心的作用:

pci_driver

这个数据结构在文件include/linux/pci.h里,这是Linux内核版本2.4之后为新型的PCI设备驱动程序所添加的,其中最主要的是用于识别设备的id_table结构,以及用于检测设备的函数probe( )和卸载设备的函数remove( ):

struct pci_driver {
struct list_head node;
char *name;
const struct pci_device_id *id_table;
int   (*probe)   (struct pci_dev *dev, const struct pci_device_id *id);
void (*remove) (struct pci_dev *dev);
int   (*save_state) (struct pci_dev *dev, u32 state);
int   (*suspend)(struct pci_dev *dev, u32 state);
int   (*resume) (struct pci_dev *dev);
int   (*enable_wake) (struct pci_dev *dev, u32 state, int enable);
};


pci_dev

这个数据结构也在文件include/linux/pci.h里,它详细描述了一个PCI设备几乎所有的硬件信息,包括厂商ID、设备ID、各种资源等:

struct pci_dev {
struct list_head global_list;
struct list_head bus_list;
struct pci_bus   *bus;
struct pci_bus   *subordinate;

void        *sysdata;
struct proc_dir_entry *procent;

unsigned int devfn;
unsigned short   vendor;
unsigned short   device;
unsigned short   subsystem_vendor;
unsigned short   subsystem_device;
unsigned int class;
u8    hdr_type;
u8    rom_base_reg;

struct pci_driver *driver;
void        *driver_data;
u64     dma_mask;
u32          current_state;

unsigned short vendor_compatible[DEVICE_COUNT_COMPATIBLE];
unsigned short device_compatible[DEVICE_COUNT_COMPATIBLE];

unsigned int irq;
struct resource resource[DEVICE_COUNT_RESOURCE];
struct resource dma_resource[DEVICE_COUNT_DMA];
struct resource irq_resource[DEVICE_COUNT_IRQ];

char        name[80];
char        slot_name[8];
int     active;
int     ro;
unsigned short   regs;

int (*prepare)(struct pci_dev *dev);
int (*activate)(struct pci_dev *dev);
int (*deactivate)(struct pci_dev *dev);
};


2. 基本框架

在用模块方式实现PCI设备驱动程序时,通常至少要实现以下几个部分:初始化设备模块、设备打开模块、数据读写和控制模块、中断处理模块、设备释放模块、设备卸载模块。下面给出一个典型的PCI设备驱动程序的基本框架,从中不难体会到这几个关键模块是如何组织起来的。

/* 指明该驱动程序适用于哪一些PCI设备 */
static struct pci_device_id demo_pci_tbl [] __initdata = {
{PCI_VENDOR_ID_DEMO, PCI_DEVICE_ID_DEMO,
    PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEMO},
{0,}
};

/* 对特定PCI设备进行描述的数据结构 */
struct demo_card {
unsigned int magic;

/* 使用链表保存所有同类的PCI设备 */
struct demo_card *next;

/* ... */
}

/* 中断处理模块 */
static void demo_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
/* ... */
}

/* 设备文件操作接口 */
static struct file_operations demo_fops = {
owner:    THIS_MODULE, /* demo_fops所属的设备模块 */
read:    demo_read, /* 读设备操作*/
write:    demo_write, /* 写设备操作*/
ioctl:    demo_ioctl, /* 控制设备操作*/
mmap:    demo_mmap, /* 内存重映射操作*/
open:    demo_open, /* 打开设备操作*/
release: demo_release /* 释放设备操作*/
/* ... */
};

/* 设备模块信息 */
static struct pci_driver demo_pci_driver = {
name:    demo_MODULE_NAME, /* 设备模块名称 */
id_table: demo_pci_tbl, /* 能够驱动的设备列表 */
probe:    demo_probe, /* 查找并初始化设备 */
remove:     demo_remove /* 卸载设备模块 */
/* ... */
};

static int __init demo_init_module (void)
{
/* ... */
}

static void __exit demo_cleanup_module (void)
{
pci_unregister_driver(&demo_pci_driver);
}

/* 加载驱动程序模块入口 */
module_init(demo_init_module);

/* 卸载驱动程序模块入口 */
module_exit(demo_cleanup_module);


上面这段代码给出了一个典型的PCI设备驱动程序的框架,是一种相对固定的模式。需要注意的是,同加载和卸载模块相关的函数或数据结构都要在前面加上 __init、__exit等标志符,以使同普通函数区分开来。构造出这样一个框架之后,接下去的工作就是如何完成框架内的各个功能模块了。

 

3. 初始化设备模块

在Linux系统下,想要完成对一个PCI设备的初始化,需要完成以下工作:

* 检查PCI总线是否被Linux内核支持;
* 检查设备是否插在总线插槽上,如果在的话则保存它所占用的插槽的位置等信息。
* 读出配置头中的信息提供给驱动程序使用。

当Linux内核启动并完成对所有PCI设备进行扫描、登录和分配资源等初始化操作的同时,会建立起系统中所有PCI设备的拓扑结构,此后当PCI驱动程序需要对设备进行初始化时,一般都会调用如下的代码:

static int __init demo_init_module (void)
{
/* 检查系统是否支持PCI总线 */
if (!pci_present())
       return -ENODEV;

/* 注册硬件驱动程序 */
if (!pci_register_driver(&demo_pci_driver)) {
       pci_unregister_driver(&demo_pci_driver);
            return -ENODEV;
}

return 0;
}


驱动程序首先调用函数pci_present( )检查PCI总线是否已经被Linux内核支持,如果系统支持PCI总线结构,这个函数的返回值为0,如果驱动程序在调用这个函数时得到了一个非0的返回值,那么驱动程序就必须得中止自己的任务了。在2.4以前的内核中,需要手工调用pci_find_device( )函数来查找PCI设备,但在2.4以后更好的办法是调用pci_register_driver( )函数来注册PCI设备的驱动程序,此时需要提供一个pci_driver结构,在该结构中给出的probe探测例程将负责完成对硬件的检测工作。

static int __init demo_probe(struct pci_dev *pci_dev, const struct pci_device_id *pci_id)
{
struct demo_card *card;

/* 启动PCI设备 */
if (pci_enable_device(pci_dev))
       return -EIO;

/* 设备DMA标识 */
if (pci_set_dma_mask(pci_dev, DEMO_DMA_MASK)) {
       return -ENODEV;
}

/* 在内核空间中动态申请内存 */
if ((card = kmalloc(sizeof(struct demo_card), GFP_KERNEL)) == NULL) {
       printk(KERN_ERR "pci_demo: out of memory\n");
       return -ENOMEM;
}
memset(card, 0, sizeof(*card));

/* 读取PCI配置信息 */
card->iobase = pci_resource_start (pci_dev, 1);
card->pci_dev = pci_dev;
card->pci_id = pci_id->device;
card->irq = pci_dev->irq;
card->next = devs;
card->magic = DEMO_CARD_MAGIC;

/* 设置成总线主DMA模式 */
pci_set_master(pci_dev);

/* 申请I/O资源 */
request_region(card->iobase, 64, card_names[pci_id->driver_data]);

return 0;
}

 


4. 打开设备模块

在这个模块里主要实现申请中断、检查读写模式以及申请对设备的控制权等。在申请控制权的时候,非阻塞方式遇忙返回,否则进程主动接受调度,进入睡眠状态,等待其它进程释放对设备的控制权。

static int demo_open(struct inode *inode, struct file *file)
{
/* 申请中断,注册中断处理程序 */
request_irq(card->irq, &demo_interrupt, SA_SHIRQ,
       card_names[pci_id->driver_data], card)) {

/* 检查读写模式 */
if(file->f_mode & FMODE_READ) {
       /* ... */
}
if(file->f_mode & FMODE_WRITE) {

}

/* 申请对设备的控制权 */
down(&card->open_sem);
while(card->open_mode & file->f_mode) {
       if (file->f_flags & O_NONBLOCK) {
         /* NONBLOCK模式,返回-EBUSY */
         up(&card->open_sem);
         return -EBUSY;
       } else {
         /* 等待调度,获得控制权 */
         card->open_mode |= f_mode & (FMODE_READ | FMODE_WRITE);
         up(&card->open_sem);

         /* 设备打开计数增1 */
         MOD_INC_USE_COUNT;

       }
}
}

5. 数据读写和控制信息模块

PCI设备驱动程序可以通过demo_fops 结构中的函数demo_ioctl( ),向应用程序提供对硬件进行控制的接口。例如,通过它可以从I/O寄存器里读取一个数据,并传送到用户空间里:

static int demo_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
{

switch(cmd) {
       case DEMO_RDATA:
         /* 从I/O端口读取4字节的数据 */
         val = inl(card->iobae + 0x10);
        
/* 将读取的数据传输到用户空间 */
         return 0;
}

}


事实上,在demo_fops里还可以实现诸如demo_read( )、demo_mmap( )等操作,Linux内核源码中的driver目录里提供了许多设备驱动程序的源代码,找那里可以找到类似的例子。在对资源的访问方式上,除了有I/O指令以外,还有对外设I/O内存的访问。对这些内存的操作一方面可以通过把I/O内存重新映射后作为普通内存进行操作,另一方面也可以通过总线主DMA (Bus Master DMA)的方式让设备把数据通过DMA传送到系统内存中。


6. 中断处理模块

PC的中断资源比较有限,只有0~15的中断号,因此大部分外部设备都是以共享的形式申请中断号的。当中断发生的时候,中断处理程序首先负责对中断进行识别,然后再做进一步的处理。

static void demo_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
struct demo_card *card = (struct demo_card *)dev_id;
u32 status;

spin_lock(&card->lock);

/* 识别中断 */
status = inl(card->iobase + GLOB_STA);
if(!(status & INT_MASK))
{
       spin_unlock(&card->lock);
       return;   /* not for us */
}

/* 告诉设备已经收到中断 */
outl(status & INT_MASK, card->iobase + GLOB_STA);
spin_unlock(&card->lock);

/* 其它进一步的处理,如更新DMA缓冲区指针等 */
}

7. 释放设备模块

释放设备模块主要负责释放对设备的控制权,释放占用的内存和中断等,所做的事情正好与打开设备模块相反:

static int demo_release(struct inode *inode, struct file *file)
{

/* 释放对设备的控制权 */
card->open_mode &= (FMODE_READ | FMODE_WRITE);

/* 唤醒其它等待获取控制权的进程 */
wake_up(&card->open_wait);
up(&card->open_sem);

/* 释放中断 */
free_irq(card->irq, card);

/* 设备打开计数增1 */
MOD_DEC_USE_COUNT;

}

8. 卸载设备模块
调用函数pci_unregister_driver( )从Linux内核中注销设备驱动程序

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mingjie_520/archive/2009/03/27/4029695.aspx

posted @ 2009-06-20 16:02 MEYE 阅读(681) | 评论 (0)编辑 收藏

 Linux下PCI设备驱动程序开发基本框架收藏
PCI是一种广泛采用的总线标准,它提供了许多优于其它总线标准(如EISA)的新特性,目前已经成为计算 机系统中应用最为广泛,并且最为通用的总线标准。Linux的内核能较好地支持PCI总线,本文以Intel 386体系结构为主,探讨了在Linux下开发PCI设备驱动程序的基本框架。

一、PCI总线系统体系结构

PCI是外围设备互连(Peripheral Component Interconnect)的简称,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。PCI提供了一组完整的总线接口规范,其 目的是描述如何将计算机系统中的外围设备以一种结构化和可控化的方式连接在一起,同时它还刻画了外围设备在连接时的电气特性和行为规约,并且详细定义了计 算机系统中的各个不同部件之间应该如何正确地进行交互。

无论是在基于Intel芯片的PC机中,或是在基于Alpha芯片的工作 站上,PCI毫无疑问都是目前使用最广泛的一种总线接口标准。同旧式的ISA总线不同,PCI将计算机系统中的总线子系统与存储子系统完全地分开,CPU 通过一块称为PCI桥(PCI-Bridge)的设备来完成同总线子系统的交互,如图1所示。

 

图1 PCI子系统的体系结构

由于使用了更高的时钟频率,因此PCI总线能够获得比ISA总线更好的整体性能。PCI总线的时钟频率一般在25MHz到33MHz范围内,有些甚至能 够达到66MHz或者133MHz,而在64位系统中则最高能达到266MHz。尽管目前PCI设备大多采用32位数据总线,但PCI规范中已经给出了 64位的扩展实现,从而使PCI总线能够更好地实现平台无关性,现在PCI总线已经能够用于IA-32、Alpha、PowerPC、SPARC64和 IA-64等体系结构中。

PCI总线具有三个非常显著的优点,使得它能够完成最终取代ISA总线这一历史使命:

在计算机和外设间传输数据时具有更好的性能;

能够尽量独立于具体的平台;

可以很方便地实现即插即用。

图2是一个典型的基于PCI总线的计算机系统逻辑示意图,系统的各个部分通过PCI总线和PCI-PCI桥连接在一起。从图中不难看出,CPU和RAM 需要通过PCI桥连接到PCI总线0(即主PCI总线),而具有PCI接口的显卡则可以直接连接到主PCI总线上。PCI-PCI桥是一个特殊的PCI设 备,它负责将PCI总线0和PCI总线1(即从PCI主线)连接在一起,通常PCI总线1称为PCI-PCI桥的下游(downstream),而PCI 总线0则称为PCI-PCI桥的上游(upstream)。图中连接到从PCI总线上的是SCSI卡和以太网卡。为了兼容旧的ISA总线标准,PCI总线 还可以通过PCI-ISA桥来连接ISA总线,从而能够支持以前的ISA设备。图中ISA总线上连接着一个多功能I/O控制器,用于控制键盘、鼠标和软 驱。


图2 PCI系统示意图

在此我只对PCI总线系统体系结构作了概括性介绍,如果读者想进一步了解,David A Rusling在The Linux Kernel(http://tldp.org/LDP/tlk/dd/pci.html)中对Linux的PCI子系统有比较详细的介绍。


二、Linux驱动程序框架

Linux将所有外部设备看成是一类特殊文件,称之为“设备文件”,如果说系统调用是Linux内核和应用程序之间的接口,那么设备驱动程序则可以看成是 Linux内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件在实现上的细节,使得应用程序可以像操作普通文件一样来操作外部设备。

1. 字符设备和块设备

Linux抽象了对硬件的处理,所有的硬件设备都可以像普通文件一样来看待:它们可以使用和操作文件相同的、标准的系统调用接口来完成打开、关闭、读写和 I/O控制操作,而驱动程序的主要任务也就是要实现这些系统调用函数。Linux系统中的所有硬件设备都使用一个特殊的设备文件来表示,例如,系统中的第 一个IDE硬盘使用/dev/hda表示。每个设备文件对应有两个设备号:一个是主设备号,标识该设备的种类,也标识了该设备所使用的驱动程序;另一个是 次设备号,标识使用同一设备驱动程序的不同硬件设备。设备文件的主设备号必须与设备驱动程序在登录该设备时申请的主设备号一致,否则用户进程将无法访问到 设备驱动程序。

在Linux操作系统下有两类主要的设备文件:一类是字符设备,另一类则是块设备。字符设备是以字节为单位逐个进行I/O操作的设备,在对字符设备发出读 写请求时,实际的硬件I/O紧接着就发生了,一般来说字符设备中的缓存是可有可无的,而且也不支持随机访问。块设备则是利用一块系统内存作为缓冲区,当用 户进程对设备进行读写请求时,驱动程序先查看缓冲区中的内容,如果缓冲区中的数据能满足用户的要求就返回相应的数据,否则就调用相应的请求函数来进行实际 的I/O操作。块设备主要是针对磁盘等慢速设备设计的,其目的是避免耗费过多的CPU时间来等待操作的完成。一般说来,PCI卡通常都属于字符设备。

所有已经注册(即已经加载了驱动程序)的硬件设备的主设备号可以从/proc/devices文件中得到。使用mknod命令可以创建指定类型的设备文件,同时为其分配相应的主设备号和次设备号。例如,下面的命令:

[root@gary root]# mknod  /dev/lp0  c  6  0


将建立一个主设备号为6,次设备号为0的字符设备文件/dev/lp0。当应用程序对某个设备文件进行系统调用时,Linux内核会根据该设备文件的设备 类型和主设备号调用相应的驱动程序,并从用户态进入到核心态,再由驱动程序判断该设备的次设备号,最终完成对相应硬件的操作。

2. 设备驱动程序接口

Linux中的I/O子系统向内核中的其他部分提供了一个统一的标准设备接口,这是通过include/linux/fs.h中的数据结构file_operations来完成的:

struct file_operations {        struct module *owner;        loff_t (*llseek) (struct file *, loff_t, int);        ssize_t (*read) (struct file *, char *, size_t, loff_t *);        ssize_t (*write) (struct file *, const char *, size_t, loff_t *);        int (*readdir) (struct file *, void *, filldir_t);        unsigned int (*poll) (struct file *, struct poll_table_struct *);        int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);        int (*mmap) (struct file *, struct vm_area_struct *);        int (*open) (struct inode *, struct file *);        int (*flush) (struct file *);        int (*release) (struct inode *, struct file *);        int (*fsync) (struct file *, struct dentry *, int datasync);        int (*fasync) (int, struct file *, int);        int (*lock) (struct file *, int, struct file_lock *);        ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *);        ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *);        ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);        unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);};


当应用程序对设备文件进行诸如open、close、read、write等操作时,Linux内核将通过file_operations结构访问驱动程 序提供的函数。例如,当应用程序对设备文件执行读操作时,内核将调用file_operations结构中的read函数。

3. 设备驱动程序模块

Linux下的设备驱动程序可以按照两种方式进行编译,一种是直接静态编译成内核的一部分,另一种则是编译成可以动态加载的模块。如果编译进内核的话,会增加内核的大小,还要改动内核的源文件,而且不能动态地卸载,不利于调试,所有推荐使用模块方式。

从本质上来讲,模块也是内核的一部分,它不同于普通的应用程序,不能调用位于用户态下的C或者C++库函数,而只能调用Linux内核提供的函数,在/proc/ksyms中可以查看到内核提供的所有函数。

在以模块方式编写驱动程序时,要实现两个必不可少的函数init_module( )和cleanup_module( ),而且至少要包含和两 个头文件。在用gcc编译内核模块时,需要加上-DMODULE -D__KERNEL__ -DLINUX这几个参数,编译生成的模块(一般为.o文件)可以使用命令insmod载入Linux内核,从而成为内核的一个组成部分,此时内核会调用 模块中的函数init_module( )。当不需要该模块时,可以使用rmmod命令进行卸载,此进内核会调用模块中的函数cleanup_module( )。任何时候都可以使用命令来lsmod查看目前已经加载的模块以及正在使用该模块的用户数。

4. 设备驱动程序结构

了解设备驱动程序的基本结构(或者称为框架),对开发人员而言是非常重要的,Linux的设备驱动程序大致可以分为如下几个部分:驱动程序的注册与注销、设备的打开与释放、设备的读写操作、设备的控制操作、设备的中断和轮询处理。

驱动程序的注册与注销

向系统增加一个驱动程序意味着要赋予它一个主设备号,这可以通过在驱动程序的初始化过程中调用register_chrdev( )或者register_blkdev( )来完成。而在关闭字符设备或者块设备时,则需要通过调用unregister_chrdev( )或unregister_blkdev( )从内核中注销设备,同时释放占用的主设备号。

设备的打开与释放

打开设备是通过调用file_operations结构中的函数open( )来完成的,它是驱动程序用来为今后的操作完成初始化准备工作的。在大部分驱动程序中,open( )通常需要完成下列工作:

1.检查设备相关错误,如设备尚未准备好等。

2.如果是第一次打开,则初始化硬件设备。

3.识别次设备号,如果有必要则更新读写操作的当前位置指针f_ops。

4.分配和填写要放在file->private_data里的数据结构。

5.使用计数增1。

释放设备是通过调用file_operations结构中的函数release( )来完成的,这个设备方法有时也被称为close( ),它的作用正好与open( )相反,通常要完成下列工作:

1.使用计数减1。

2.释放在file->private_data中分配的内存。

3.如果使用计算为0,则关闭设备。

设备的读写操作

字符设备的读写操作相对比较简单,直接使用函数read( )和write( )就可以了。但如果是块设备的话,则需要调用函数block_read( )和block_write( )来进行数据读写,这两个函数将向设备请求表中增加读写请求,以便Linux内核可以对请求顺序进行优化。由于是对内存缓冲区而不是直接对设备进行操作 的,因此能很大程度上加快读写速度。如果内存缓冲区中没有所要读入的数据,或者需要执行写操作将数据写入设备,那么就要执行真正的数据传输,这是通过调用 数据结构blk_dev_struct中的函数request_fn( )来完成的。

设备的控制操作

除了读写操作外,应用程序有时还需要对设备进行控制,这可以通过设备驱动程序中的函数ioctl( )来完成。ioctl( )的用法与具体设备密切关联,因此需要根据设备的实际情况进行具体分析。

设备的中断和轮询处理

对于不支持中断的硬件设备,读写时需要轮流查询设备状态,以便决定是否继续进行数据传输。如果设备支持中断,则可以按中断方式进行操作。

三、PCI驱动程序实现

1. 关键数据结构

PCI设备上有三种地址空间:PCI的I/O空间、PCI的存储空间和PCI的配置空间。CPU可以访问PCI设备上的所有地址空间,其中I/O空间和存 储空间提供给设备驱动程序使用,而配置空间则由Linux内核中的PCI初始化代码使用。内核在启动时负责对所有PCI设备进行初始化,配置好所有的 PCI设备,包括中断号以及I/O基址,并在文件/proc/pci中列出所有找到的PCI设备,以及这些设备的参数和属性。

Linux驱动程序通常使用结构(struct)来表示一种设备,而结构体中的变量则代表某一具体设备,该变量存放了与该设备相关的所有信息。好的驱动程 序都应该能驱动多个同种设备,每个设备之间用次设备号进行区分,如果采用结构数据来代表所有能由该驱动程序驱动的设备,那么就可以简单地使用数组下标来表 示次设备号。

在PCI驱动程序中,下面几个关键数据结构起着非常核心的作用:

pci_driver

这个数据结构在文件include/linux/pci.h里,这是Linux内核版本2.4之后为新型的PCI设备驱动程序所添加的,其中最主要的是用于识别设备的id_table结构,以及用于检测设备的函数probe( )和卸载设备的函数remove( ):

struct pci_driver {    struct list_head node;    char *name;    const struct pci_device_id *id_table;    int  (*probe)  (struct pci_dev *dev, const struct pci_device_id *id);    void (*remove) (struct pci_dev *dev);    int  (*save_state) (struct pci_dev *dev, u32 state);    int  (*suspend)(struct pci_dev *dev, u32 state);    int  (*resume) (struct pci_dev *dev);    int  (*enable_wake) (struct pci_dev *dev, u32 state, int enable);};


pci_dev

这个数据结构也在文件include/linux/pci.h里,它详细描述了一个PCI设备几乎所有的硬件信息,包括厂商ID、设备ID、各种资源等:

struct pci_dev {    struct list_head global_list;    struct list_head bus_list;    struct pci_bus  *bus;    struct pci_bus  *subordinate;    void        *sysdata;    struct proc_dir_entry *procent;    unsigned int    devfn;    unsigned short  vendor;    unsigned short  device;    unsigned short  subsystem_vendor;    unsigned short  subsystem_device;    unsigned int    class;    u8      hdr_type;    u8      rom_base_reg;    struct pci_driver *driver;    void        *driver_data;    u64     dma_mask;    u32             current_state;    unsigned short vendor_compatible[DEVICE_COUNT_COMPATIBLE];    unsigned short device_compatible[DEVICE_COUNT_COMPATIBLE];    unsigned int    irq;    struct resource resource[DEVICE_COUNT_RESOURCE];    struct resource dma_resource[DEVICE_COUNT_DMA];    struct resource irq_resource[DEVICE_COUNT_IRQ];    char        name[80];    char        slot_name[8];    int     active;    int     ro;    unsigned short  regs;    int (*prepare)(struct pci_dev *dev);    int (*activate)(struct pci_dev *dev);    int (*deactivate)(struct pci_dev *dev);};


2. 基本框架

在用模块方式实现PCI设备驱动程序时,通常至少要实现以下几个部分:初始化设备模块、设备打开模块、数据读写和控制模块、中断处理模块、设备释放模块、设备卸载模块。下面给出一个典型的PCI设备驱动程序的基本框架,从中不难体会到这几个关键模块是如何组织起来的。

/* 指明该驱动程序适用于哪一些PCI设备 */static struct pci_device_id demo_pci_tbl [] __initdata = {    {PCI_VENDOR_ID_DEMO, PCI_DEVICE_ID_DEMO,     PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEMO},    {0,}};/* 对特定PCI设备进行描述的数据结构 */struct demo_card {    unsigned int magic;    /* 使用链表保存所有同类的PCI设备 */    struct demo_card *next;        /* ... */}/* 中断处理模块 */static void demo_interrupt(int irq, void *dev_id, struct pt_regs *regs){    /* ... */}/* 设备文件操作接口 */static struct file_operations demo_fops = {    owner:      THIS_MODULE,   /* demo_fops所属的设备模块 */    read:       demo_read,    /* 读设备操作*/    write:      demo_write,    /* 写设备操作*/    ioctl:      demo_ioctl,    /* 控制设备操作*/    mmap:       demo_mmap,    /* 内存重映射操作*/    open:       demo_open,    /* 打开设备操作*/    release:    demo_release    /* 释放设备操作*/    /* ... */};/* 设备模块信息 */static struct pci_driver demo_pci_driver = {    name:       demo_MODULE_NAME,    /* 设备模块名称 */    id_table:   demo_pci_tbl,    /* 能够驱动的设备列表 */    probe:      demo_probe,    /* 查找并初始化设备 */    remove:     demo_remove    /* 卸载设备模块 */    /* ... */};static int __init demo_init_module (void){    /* ... */}static void __exit demo_cleanup_module (void){    pci_unregister_driver(&demo_pci_driver);}/* 加载驱动程序模块入口 */module_init(demo_init_module);/* 卸载驱动程序模块入口 */module_exit(demo_cleanup_module);


上面这段代码给出了一个典型的PCI设备驱动程序的框架,是一种相对固定的模式。需要注意的是,同加载和卸载模块相关的函数或数据结构都要在前面加上 __init、__exit等标志符,以使同普通函数区分开来。构造出这样一个框架之后,接下去的工作就是如何完成框架内的各个功能模块了。

3. 初始化设备模块

在Linux系统下,想要完成对一个PCI设备的初始化,需要完成以下工作:

检查PCI总线是否被Linux内核支持;

检查设备是否插在总线插槽上,如果在的话则保存它所占用的插槽的位置等信息。

读出配置头中的信息提供给驱动程序使用。

当Linux内核启动并完成对所有PCI设备进行扫描、登录和分配资源等初始化操作的同时,会建立起系统中所有PCI设备的拓扑结构,此后当PCI驱动程序需要对设备进行初始化时,一般都会调用如下的代码:

static int __init demo_init_module (void){    /* 检查系统是否支持PCI总线 */    if (!pci_present())        return -ENODEV;    /* 注册硬件驱动程序 */    if (!pci_register_driver(&demo_pci_driver)) {        pci_unregister_driver(&demo_pci_driver);                return -ENODEV;    }    /* ... */       return 0;}


驱动程序首先调用函数pci_present( )检查PCI总线是否已经被Linux内核支持,如果系统支持PCI总线结构,这个函数的返回值为0,如果驱动程序在调用这个函数时得到了一个非0的返回 值,那么驱动程序就必须得中止自己的任务了。在2.4以前的内核中,需要手工调用pci_find_device( )函数来查找PCI设备,但在2.4以后更好的办法是调用pci_register_driver( )函数来注册PCI设备的驱动程序,此时需要提供一个pci_driver结构,在该结构中给出的probe探测例程将负责完成对硬件的检测工作。

 static int __init demo_probe(struct pci_dev *pci_dev, const struct pci_device_id *pci_id){    struct demo_card *card;    /* 启动PCI设备 */    if (pci_enable_device(pci_dev))        return -EIO;    /* 设备DMA标识 */    if (pci_set_dma_mask(pci_dev, DEMO_DMA_MASK)) {        return -ENODEV;    }    /* 在内核空间中动态申请内存 */    if ((card = kmalloc(sizeof(struct demo_card), GFP_KERNEL)) == NULL) {        printk(KERN_ERR "pci_demo: out of memory\n");        return -ENOMEM;    }    memset(card, 0, sizeof(*card));    /* 读取PCI配置信息 */    card->iobase = pci_resource_start (pci_dev, 1);    card->pci_dev = pci_dev;    card->pci_id = pci_id->device;    card->irq = pci_dev->irq;    card->next = devs;    card->magic = DEMO_CARD_MAGIC;    /* 设置成总线主DMA模式 */        pci_set_master(pci_dev);    /* 申请I/O资源 */    request_region(card->iobase, 64, card_names[pci_id->driver_data]);    return 0;}


4. 打开设备模块

在这个模块里主要实现申请中断、检查读写模式以及申请对设备的控制权等。在申请控制权的时候,非阻塞方式遇忙返回,否则进程主动接受调度,进入睡眠状态,等待其它进程释放对设备的控制权。

static int demo_open(struct inode *inode, struct file *file){    /* 申请中断,注册中断处理程序 */    request_irq(card->irq, &demo_interrupt, SA_SHIRQ,        card_names[pci_id->driver_data], card)) {    /* 检查读写模式 */    if(file->f_mode & FMODE_READ) {        /* ... */    }    if(file->f_mode & FMODE_WRITE) {       /* ... */    }        /* 申请对设备的控制权 */    down(&card->open_sem);    while(card->open_mode & file->f_mode) {        if (file->f_flags & O_NONBLOCK) {            /* NONBLOCK模式,返回-EBUSY */            up(&card->open_sem);            return -EBUSY;        } else {            /* 等待调度,获得控制权 */            card->open_mode |= f_mode & (FMODE_READ | FMODE_WRITE);            up(&card->open_sem);            /* 设备打开计数增1 */            MOD_INC_USE_COUNT;            /* ... */        }    }}


5. 数据读写和控制信息模块

PCI设备驱动程序可以通过demo_fops 结构中的函数demo_ioctl( ),向应用程序提供对硬件进行控制的接口。例如,通过它可以从I/O寄存器里读取一个数据,并传送到用户空间里:

static int demo_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg){    /* ... */        switch(cmd) {        case DEMO_RDATA:            /* 从I/O端口读取4字节的数据 */            val = inl(card->iobae + 0x10);            /* 将读取的数据传输到用户空间 */            return 0;    }        /* ... */}


事实上,在demo_fops里还可以实现诸如demo_read( )、demo_mmap( )等操作,Linux内核源码中的driver目录里提供了许多设备驱动程序的源代码,找那里可以找到类似的例子。在对资源的访问方式上,除了有I/O指 令以外,还有对外设I/O内存的访问。对这些内存的操作一方面可以通过把I/O内存重新映射后作为普通内存进行操作,另一方面也可以通过总线主DMA (Bus Master DMA)的方式让设备把数据通过DMA传送到系统内存中。

6. 中断处理模块

PC的中断资源比较有限,只有0~15的中断号,因此大部分外部设备都是以共享的形式申请中断号的。当中断发生的时候,中断处理程序首先负责对中断进行识别,然后再做进一步的处理。

static void demo_interrupt(int irq, void *dev_id, struct pt_regs *regs){    struct demo_card *card = (struct demo_card *)dev_id;    u32 status;    spin_lock(&card->lock);    /* 识别中断 */    status = inl(card->iobase + GLOB_STA);    if(!(status & INT_MASK))     {        spin_unlock(&card->lock);        return;  /* not for us */    }    /* 告诉设备已经收到中断 */    outl(status & INT_MASK, card->iobase + GLOB_STA);    spin_unlock(&card->lock);        /* 其它进一步的处理,如更新DMA缓冲区指针等 */}


7. 释放设备模块

释放设备模块主要负责释放对设备的控制权,释放占用的内存和中断等,所做的事情正好与打开设备模块相反:

static int demo_release(struct inode *inode, struct file *file){    /* ... */        /* 释放对设备的控制权 */    card->open_mode &= (FMODE_READ | FMODE_WRITE);        /* 唤醒其它等待获取控制权的进程 */    wake_up(&card->open_wait);    up(&card->open_sem);        /* 释放中断 */    free_irq(card->irq, card);        /* 设备打开计数增1 */    MOD_DEC_USE_COUNT;        /* ... */  }


8. 卸载设备模块

卸载设备模块与初始化设备模块是相对应的,实现起来相对比较简单,主要是调用函数pci_unregister_driver( )从Linux内核中注销设备驱动程序:

static void __exit demo_cleanup_module (void){    pci_unregister_driver(&demo_pci_driver);}


四、小结

PCI总线不仅是目前应用广泛的计算机总线标准,而且是一种兼容性最强、功能最全的计算机总线。而Linux作为一种新的操作系统,其发展前景是无法估量 的,同时也为PCI总线与各种新型设备互连成为可能。由于Linux源码开放,因此给连接到PCI总线上的任何设备编写驱动程序变得相对容易。本文介绍如 何编译Linux下的PCI驱动程序,针对的内核版本是2.4。

参考资料: David A Rusling在 The Linux Kernel中对Linux的PCI子系统进行了比较详细的介绍。

Linux PCI-HOWTO是了解Linux下PCI设备的最好读物。

毛德操,胡希明,Linux内核源代码情景分析,杭州:浙江大学出版社,2001

Alessandro Rubini,,Linux Device Drivers(2nd Edition) USA:O’Reilly,2001

Tomshanley,DonAderson,PCI系统结构(第四版),北京:电子工业出版社,2000


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mingjie_520/archive/2009/03/27/4029919.aspx

posted @ 2009-06-20 16:02 MEYE 阅读(596) | 评论 (0)编辑 收藏

换内核

由于开发环境需要,更换了一个比较新的内核,更换过程参考了附文,但文章稍显繁琐,我给大致总结一下,具体过程见原文。
1、找到自己需要的内核,可以在此寻找:http://www.kernel.org/pub/linux/kernel/v2.6(当然不一定能找到最新的,我用到的2.6.30当时未能找到)。
2、下载内核升级工具:
(1)安装module-init-tools工具
# tar jvxf module-init-tools-3.2.tar.bz2  (解压module-init-tools) 
# cd module-init-tools-3.2  (由/usr/src目录进入module-init-tools目录下)
#./configure --prefix=/ 
# make moveold
# make all install
#./generate-modprobe.conf /etc/modprobe.conf (该步能否运行未知,多次运行均未果)
(2)安装另外三个升级工具
# rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm  (注意,这里一定要加入--nodeps参数,下同)
# rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm
# rpm -ivh --nodeps device-mapper-1.00.19-2.i386.rpm
4、配置编译内核
解压内核源码包到linux-2.6.x
# cd linux-2.6.x  
# make mrproper  (该命令可确保源代码目录下没有不正确的.o文件)
# make menuconfig (配置内核各选项,配置详情参考原文)
 
# make dep  (建立编译时所需的从属文件。注意:如果内核从未编译过,此步可跳过)
# make clean  (清除内核编译的目标文件。注意:如果内核从未编译过,此步可跳过)
# make bzImage  (注意大小写。这一步才是真正编译内核)
 # make modules  (编译可加载模块) (此步骤约半到1小时,需耐心等待)
# make modules_install  (安装可加载模块)
  安装成功后,系统会在/lib/modules目录下生成一个2.6.18子目录,里面存放着新内核的所有可加载模块。
# make install  (安装新内核)
5、启动新内核
此时我的系统中/root目录下已经有了新内核及启动项,启动配置文件(我的貌似是/root/grub/menu.lst)也已自动更改好,直接重启并在启动页面选择新内核OK。
若启动项未自动更改再次参考原文。
附原文:
序  言
由于开发环境需要在linux-2.6内核上进行,于是准备对我的虚拟机上的Linux系统升级。没想到这一弄就花了两天时间(反复装系统,辛苦啊~~),总算把Linux系统从2.4.20-8内核成功升级到了2.6.18内核。
网上虽然有很多介绍Linux内核升级的文章,不过要么过时,下载链接失效;要么表达不清,不知所云;更可气的是很多文章在转载过程中命令行都有错误。刚开始我就是在这些“攻略”的指点下来升级的,以致于浪费了很多时间。
现在,费尽周折,升级成功,心情很爽,趁性也来写个“升级攻略”吧!于是特意又在虚拟机上重新安装一个Linux系统,再来一次完美的升级,边升级边记录这些步骤,写成一篇Linux内核升级记实录(可不是回忆录啊!),和大家一起分享~~!
一、准备工作
首先说明,下面带#号的行都是要输入的命令行,且本文提到的所有命令行都在终端里输入。
启动Linux系统,并用根用户登录,进入终端模式下。
1、查看Linux内核版本
# uname -a
如果屏幕显示的是2.6.x,说明你的已经是2.6的内核,也用不着看下文了,该干什么干什么去吧!~~~如果显示的是2.4.x,那恭喜你,闯关通过,赶快进行下一步。
3、下载内核升级工具
(1)下载module-init-tools-3.2.tar.bz2
http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2 
(2)下载mkinitrd-4.1.18-2.i386.rpm
http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/mkinitrd-4.1.18-2.i386.rpm 
(3)下载lvm2-2.00.25-1.01.i386.rpm
http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/lvm2-2.00.25-1.01.i386.rpm
(4)下载device-mapper-1.00.19-2.i386.rpm
http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/device-mapper-1.00.19-2.i386.rpm
(2.6.18内核和这4个升级工具我都有备份,如果以上下载地址失效,请到http://www.piaoyang.org/guestbook 留下你的邮箱,我给你发过去)
二、配置工作
好啦,2.6内核和4个升级工具都下载完了(少一个也不行,如果没有下载齐全,请不要尝试下面的步骤,升级是不会成功的),下面回到Linux系统中开始配置工作吧。
4、将下载好的内核源码包和4个升级工具都拷贝到/usr/src文件夹下。怎么拷贝就不用我教了吧~~~~不会拷贝的去撞墙吧!~~呵呵!
5、拷贝完毕,开始解压新内核,具体操作请依次执行以下命令:
# cd /usr/src  (进入到/usr/src目录下,如果已经在/usr/src目录下,可不执行该命令)
# rm –rf linux  (删除linux文件夹。值得一提的是,如果内核先前从未编译过,则没有这个文件夹,此命令行可略过)
# tar jvxf linux-2.6.18.tar.bz2  (解压新内核)
# ln -s linux-2.6.18 linux  (重新生成linux文件夹)
6、安装module-init-tools工具
在/usr/src目录下,依次执行下列命令:
# tar jvxf module-init-tools-3.2.tar.bz2  (解压module-init-tools) 
# cd module-init-tools-3.2  (由/usr/src目录进入module-init-tools目录下)
#./configure --prefix=/ 
# make moveold
# make all install
#./generate-modprobe.conf /etc/modprobe.conf
7、安装另外三个升级工具
回到/usr/src目录下,依次执行下列3个命令来安装另外三个升级工具:
# rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm  (注意,这里一定要加入--nodeps参数,下同)
# rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm
# rpm -ivh --nodeps device-mapper-1.00.19-2.i386.rpm
如果不更新以上几个升级包,在后面编译内核时会提示以下错误:
      mkinitrd failed
      make[1]: *** [install] Error 1
      make: *** [install] Error 2
8、配置内核选项。有点繁琐,~~希望一次成功哦~~。
# cd linux-2.6.18  (进入到/usr/src/linux-2.6.18目录下)
# make mrproper  (该命令可确保源代码目录下没有不正确的.o文件)
# make menuconfig (配置内核各选项)
此时会出现一个图形界面,列出了所有的内核配置选项,有的选项下还有子选项,你可以用方向键来选择,用Y键来确定。经过我多次试验,大多数选项默认就行,以下几个选项必须选择(请认真核对下面每一个选项,否则编译很有可能前功尽弃):
(1)Loadable Module support选项中,选上“Module unloading”和“Automatic kernel module loading”这两项;
(2)Device Drivers--->Block Devices中选上“Loopback device support”;
     Device Drivers--->Multi-device support(RAID and LVM)处要选上“device mapper  support”;
     Device Drivers--->Graphics support,一定要选上“ Support for  buffer devices”;
     Device Drivers  --->USB support  --->选上“USB Mass Storage support”(如果是在实环境中,想要更多USB支持,就全选吧。我的是在虚拟机中,用不着了)
     Device Drivers  --->;Network device support  --->Ethernet (10 or 100Mbit)  ---><*>  AMD PCnet32 PCI support 
(3)File system--->(以下9个选项是关于ext2和ext3文件系统配置,全部选上)
           Second extended fs support
           Ext2 extended attributes
           Ext2 POSIX Access Control Lists
           Ext2 Security Labels
           Ext3 journalling file system support
           Ext3 extended attributes
           Ext3 POSIX Access Control Lists
           Ext3 Security Labels
           JBB (ext3) debugging support
     File system--->DOS/FAT/NT Filesystems  --->选上“NTFS file system support”;
注意:
       ext2和ext3文件系统配置很重要,也是必需的,如果对Ext3、Ext2文件的支持直接编译进内核,在你reboot时机器就会当掉,出现如下错误信息:
          kernel panic : no init found ,try passing init = option to kernel.....
或者是:
          VFS:Cannot open root device "hdxy" or unknow-block(0,0)
          Please append a correct "root=" boot option
          kernel panic:VFS:Unable to mount root fs on unknown-block(0,0) 
或者是:
          mount: error 19 mounting ext3
          pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed: 2
          umount /initrd/proc fail: 2
          Freeing unused kernel memory: 244k freed
          Kernel panic – not syncing: No init found. Try passing init = option to kernel
(我的机器就是在重启之后出现第三种错误,进不去系统,郁闷死,只好重装了~~~如果依照本文做完所有步骤,当你重启Linux系统后,若不幸进不去2.6.18内核,你会发现你的出错信息就是上面三种了~~~哈!)
(4)如果你在vmware下编译内核,硬盘用的是scsi的,以下三个选项必选:
     Device Drivers ---><*>SCSI device support  (此项不选的话,下面两项就选择不上)
     Device Drivers ---><*>SCSI device support ---><*>SCSI disk support
     Device Drivers---><8>SCSI device support--->SCSI low-level drivers---><*>; BusLogic SCSI support
三、编译工作
OK,繁杂的配置工作完成了,至此,编译前的准备工作都做好了!
9、开始编译啦……
在/usr/src/linux-2.6.18目录下,执行以下命令即可编译。编译需要一段时间,给自己倒杯茶耐心等候吧!
# make dep  (建立编译时所需的从属文件。注意:如果内核从未编译过,此步可跳过)
# make clean  (清除内核编译的目标文件。注意:如果内核从未编译过,此步可跳过)
# make bzImage  (注意大小写。这一步才是真正编译内核)
     内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage。如果用 make  zImage编译,内核很大的话,系统会提示你使用make   bzImage命令来编译,所以我直接用make bzImage来编译。
# make modules  (编译可加载模块)
# make modules_install  (安装可加载模块)
  安装成功后,系统会在/lib/modules目录下生成一个2.6.18子目录,里面存放着新内核的所有可加载模块。
# make install  (安装新内核)
注意:
        make install的时候可能会出现如下错误信息:
        No module BusLogic found for kernel 2.4.12
        mkinitrd failed
此问题一般只出现在SCSI硬盘+VMWARE+REDHAT架构中,因为BusLogic被编译进了内核而不是一个module的形式(2.4内核的Buslogic模块即使静态编译进内核也不行)。解决方式是直接将BusLogic.o文件复制过去:
# cp /usr/src/linux-2.6.18/drivers/scsi/BusLogic.o  /lib/modules/2.6.18/kernel/drivers/scsi
不过别忘记,复制过后再执行一下make install。这一步若卡住了,下面的都无法进行,如果看本文档还是没有解决问题,就来我的网上留言本求助吧,进http://www.piaoyang.org ,点“留言本”即可,我会及时看到你的求助信息的。
四、启动新内核
10、将新内核和System.map文件拷贝到/boot目录下,依次执行以下命令:     
# cp  /usr/src/linux-2.6.18/arch/i386/boot/bzImage   /boot/vmlinuz-2.6.18     
# cp  /usr/src/linux-2.6.18/System.map   /boot/System.map-2.6.18     
# cd  /boot  (进入boot目录)
# rm –rf  System.map  (删除原来的连接)     
# ln –s System.map-2.6.18  System.map   (重新建立连接)     
11、修改Grub启动管理器
如果没有错误的话, 下面开始修改grub配置文件(不要告诉我你用的lilo)
在/boot目录下,执行以下命令:
# new-kernel-pkg --mkinitrd --depmod --install 2.6.18 (这时候你的/boot下会生成一个initrd-2.4.18.img,并且你的grub.conf文件也作了相应更改)
# df  (查看根目录在那个分区,下一步要用到。注意,这里根分区不时boot的那个50M的分区,而一般是你最大的那个分区,也就是“/”,千万不要搞错哦。我的为 /dev/hda2)
# vi /grub/grub.conf  
进入grub.conf文件,找到如下信息:
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18)
        root (hd0,0)
        kernel /vmlinuz-2.6.18 ro root= LABEL=/
        initrd /initrd-2.6.18.img
做两处修改:
(1) 将default=1改为default=0(不改的话也可以,只不过重启之后会默认进入2.4内核)
(2) 将kernel行的“LABEL=/”换成根目录所在的分区(上一步查看的就是)
此步很重要,修改错误将可能导致进不去系统,我把我修改后的grub.conf文件列出来,不明之处,可以对照修改:
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18)
        root (hd0,0)
        kernel /vmlinuz-2.6.18 ro root=/dev/hda2
        initrd /initrd-2.6.18.img
title Red Hat Linux (2.4.20-8)
        root (hd0,0)
        kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
        initrd /initrd-2.4.20-8.img
12,OK,大功告成!赶快重启,看看升级后的2.6内核吧~~~~
后记:
Linux内核 升级和编译,老掉牙的话题了,网上相关的文章不计其数。然后,这么多的文章,却没有一篇让我顺利的升级成功。经过两天的体验,我深切的感受到,对于像我这样的新手来说,第一次升级和编译Linux内核,真是一项艰巨的任务。好在没有失去耐心,经过多篇文章的比对和自己的琢磨,一次次的修正,终于正确升级、编译成功。总结这两天的感受,那就是“痛,并快乐着”!如果你照着这些步骤一路下来的话,仍然没有成功;那么我可以告诉你两点:一是,不要怀疑我的步骤有问题,因为不光是我,我的同事照我的这篇文档也一次成功;二是,你可以到我的留言本http://www.piaoyang.org/guestbook 给我留言,我会尽力解答你的问题。以此拙作,希望能给大家带去些微的帮助。
posted @ 2009-06-11 21:32 MEYE 阅读(440) | 评论 (0)编辑 收藏
     摘要: linux设备模型深探(1) 2009-06-05 15:37 分类:LinuxDriver 字号: 大大  中中  小小 转自:http://blog.chinaunix.net/u1/51562/showart_1077877.html ------------------------------------------ 本文系本站原创,...  阅读全文
posted @ 2009-06-11 21:31 MEYE 阅读(905) | 评论 (0)编辑 收藏

linux设备模型深探(2) 2009-06-05 15:40

字号:    
这段代码中比较繁锁的就是bus_type对应目录下的属性文件建立,为了直观的说明,将属性文件的建立统一放到一起分析
从上面的代码中可以看,创建属性文件对应的属性分别为:
bus_attr_uevent bus_attr_drivers_probe, bus_attr_drivers_autoprobe
分别定义如下:
static BUS_ATTR(uevent, S_IWUSR, NULL, bus_uevent_store);
static BUS_ATTR(drivers_probe, S_IWUSR, NULL, store_drivers_probe);
static BUS_ATTR(drivers_autoprobe, S_IWUSR | S_IRUGO,
         show_drivers_autoprobe, store_drivers_autoprobe);
BUS_ATTR定义如下:
#define BUS_ATTR(_name, _mode, _show, _store)  \
struct bus_attribute bus_attr_##_name = __ATTR(_name, _mode, _show, _store)
#define __ATTR(_name,_mode,_show,_store) { \
     .attr = {.name = __stringify(_name), .mode = _mode },   \
     .show    = _show,                    \
     .store   = _store,                   \
}
由此可见.上面这三个属性对应的名称为别为uevent, drivers_probe, drivers_autoprobe.也就是说,会在bus_types目录下生成三个文件,分别为uevent,probe,autoprobe.
根据之前的分析,我们知道在sysfs文件系统中,对普通属性文件的读写都会回溯到kobject->ktype->sysfs_ops中.在这里,注意到有:
     priv->subsys.kobj.kset = bus_kset;
     priv->subsys.kobj.ktype = &bus_ktype;
显然,读写操作就回溯到了bus_ktype中.定义如下:
static struct kobj_type bus_ktype = {
     .sysfs_ops    = &bus_sysfs_ops,
};
static struct sysfs_ops bus_sysfs_ops = {
     .show    = bus_attr_show,
     .store   = bus_attr_store,
};
Show和store函数对应的代码为:
static ssize_t bus_attr_show(struct kobject *kobj, struct attribute *attr,
                   char *buf)
{
     struct bus_attribute *bus_attr = to_bus_attr(attr);
     struct bus_type_private *bus_priv = to_bus(kobj);
     ssize_t ret = 0;
 
     if (bus_attr->show)
         ret = bus_attr->show(bus_priv->bus, buf);
     return ret;
}
 
static ssize_t bus_attr_store(struct kobject *kobj, struct attribute *attr,
                    const char *buf, size_t count)
{
     struct bus_attribute *bus_attr = to_bus_attr(attr);
     struct bus_type_private *bus_priv = to_bus(kobj);
     ssize_t ret = 0;
 
     if (bus_attr->store)
         ret = bus_attr->store(bus_priv->bus, buf, count);
     return ret;
}
从代码可以看出.读写操作又会回溯到bus_attribute中的show和store中.在自定义结构里嵌入struct attribute,.然后再操作回溯到自定义结构中,这是一种比较高明的架构设计手法.
闲言少叙.我们对应看一下上面三个文件对应的最终操作:
Uevent对应的读写操作为:NULL, bus_uevent_store.对于这个文件没有读操作,只有写操作.用cat 命令去查看这个文件的时候,可能会返回”设备不存在”的错误.bus_uevent_store()代码如下:
static ssize_t bus_uevent_store(struct bus_type *bus,
                   const char *buf, size_t count)
{
     enum kobject_action action;
 
     if (kobject_action_type(buf, count, &action) == 0)
         kobject_uevent(&bus->p->subsys.kobj, action);
     return count;
}
从这里可以看到,可以在用户空间控制事件的发生,如echo add > event就会产生一个add的事件,
Probe文件对应的读写操作为:NULL store_drivers_probe.
store_drivers_probe()这个函数的代码涉及到struct device.等分析完struct device可以自行回过来看下这个函数的实现.实际上,这个函数是将用户输和的设备名称对应的设备与驱动匹配一次.
 
Autoprobe文件对应的读写操作为show_drivers_autoprobe, store_drivers_autoprobe.对应读的代码为:
static ssize_t show_drivers_autoprobe(struct bus_type *bus, char *buf)
{
     return sprintf(buf, "%d\n", bus->p->drivers_autoprobe);
}
它将总线对应的drivers_autoprobe的值输出到用户空间,这个值为1时,自动将驱动与设备进行匹配.否则,反之.
写操作的代码如下:
static ssize_t store_drivers_autoprobe(struct bus_type *bus,
                          const char *buf, size_t count)
{
     if (buf[0] == '0')
         bus->p->drivers_autoprobe = 0;
     else
         bus->p->drivers_autoprobe = 1;
     return count;
}
写操作就会改变bus->p->drivers_autoprobe的值.
就这样,通过sysfs就可以控制总线是否要进行自动匹配了.
从这里也可以看出.内核开发者的思维是何等的灵活.
我们从sysfs中找个例子来印证一下:
Cd  / sys/bus/usb
用ls命令查看:
devices  drivers  drivers_autoprobe  drivers_probe  uevent
与上面分析的相吻合
 
设备的注册接口为: device_register().
int device_register(struct device *dev)
{
     device_initialize(dev);
     return device_add(dev);
}
Device_initialize()中有几个很重要的操作,如下:
void device_initialize(struct device *dev)
{
     dev->kobj.kset = devices_kset;
     kobject_init(&dev->kobj, &device_ktype);
     klist_init(&dev->klist_children, klist_children_get,
            klist_children_put);
     INIT_LIST_HEAD(&dev->dma_pools);
     INIT_LIST_HEAD(&dev->node);
     init_MUTEX(&dev->sem);
     spin_lock_init(&dev->devres_lock);
     INIT_LIST_HEAD(&dev->devres_head);
     device_init_wakeup(dev, 0);
     set_dev_node(dev, -1);
}
在这里,它为device的内嵌kobject指定了ktype和kset.device_kset的值如下:
devices_kset = kset_create_and_add("devices", &device_uevent_ops, NULL);
即对应sysfs中的/sys/devices
device_ktype 中对属性的读写操作同bus中的类似,被回溯到了struct device_attribute中的show 和store.
接着往下看device_add()的实现.这个函数比较长,分段分析如下:
int device_add(struct device *dev)
{
     struct device *parent = NULL;
     struct class_interface *class_intf;
     int error;
 
     dev = get_device(dev);
     if (!dev || !strlen(dev->bus_id)) {
         error = -EINVAL;
         goto Done;
     }
 
     pr_debug("device: '%s': %s\n", dev->bus_id, __FUNCTION__);
 
     parent = get_device(dev->parent);
     setup_parent(dev, parent);
 
     /* first, register with generic layer. */
     error = kobject_add(&dev->kobj, dev->kobj.parent, "%s", dev->bus_id);
     if (error)
         goto Error;
     如果注册device的时候,没有指定父结点,在kobject_add将会在/sys/device/下建立相同名称的目录
     /* notify platform of device entry */
     if (platform_notify)
         platform_notify(dev);
 
     /* notify clients of device entry (new way) */
     if (dev->bus)
         blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
                            BUS_NOTIFY_ADD_DEVICE, dev);
 
忽略notify部份,这部份不会影响本函数的流程
 
     error = device_create_file(dev, &uevent_attr);
     if (error)
         goto attrError;
 
     if (MAJOR(dev->devt)) {
         error = device_create_file(dev, &devt_attr);
         if (error)
              goto ueventattrError;
     }
建立属性为uevent_attr的属性文件,如果device中指定了设备号,则建立属性为devt_attr的属性文件
 
     error = device_add_class_symlinks(dev);
     if (error)
         goto SymlinkError;
     error = device_add_attrs(dev);
     if (error)
         goto AttrsError;
     error = dpm_sysfs_add(dev);
     if (error)
         goto PMError;
     device_pm_add(dev);
在这里,不打算讨论class的部份,dpm pm是选择编译部份,不讨论. device_add_attrs中涉及到了group的部分,暂不讨论
     error = bus_add_device(dev);
     if (error)
         goto BusError;
     kobject_uevent(&dev->kobj, KOBJ_ADD);
     bus_attach_device(dev);
     if (parent)
         klist_add_tail(&dev->knode_parent, &parent->klist_children);
 
     if (dev->class) {
         down(&dev->class->sem);
         /* tie the class to the device */
         list_add_tail(&dev->node, &dev->class->devices);
 
         /* notify any interfaces that the device is here */
         list_for_each_entry(class_intf, &dev->class->interfaces, node)
              if (class_intf->add_dev)
                   class_intf->add_dev(dev, class_intf);
         up(&dev->class->sem);
     }
bus_add_device()会在对应总线代表目录的device目录下创建几个到device的链接.然后产生一个add事件,再调用bus_attach_device()去匹配已经注册到总线的驱动程序.全部做完之后,将设备挂到父结点的子链表.
 Done:
     put_device(dev);
     return error;
 BusError:
     device_pm_remove(dev);
 PMError:
     if (dev->bus)
         blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
                            BUS_NOTIFY_DEL_DEVICE, dev);
     device_remove_attrs(dev);
 AttrsError:
     device_remove_class_symlinks(dev);
 SymlinkError:
     if (MAJOR(dev->devt))
         device_remove_file(dev, &devt_attr);
 ueventattrError:
     device_remove_file(dev, &uevent_attr);
 attrError:
     kobject_uevent(&dev->kobj, KOBJ_REMOVE);
     kobject_del(&dev->kobj);
 Error:
     cleanup_device_parent(dev);
     if (parent)
         put_device(parent);
     goto Done;
}
出错处理部份.
 
bus_attach_device()是一个很重要的函数。它将设备自动与挂在总线上面的驱动进行匹配。代码如下:
void bus_attach_device(struct device *dev)
{
     struct bus_type *bus = dev->bus;
     int ret = 0;
 
     if (bus) {
         dev->is_registered = 1;
         if (bus->p->drivers_autoprobe)
              ret = device_attach(dev);
         WARN_ON(ret < 0);
         if (ret >= 0)
              klist_add_tail(&dev->knode_bus, &bus->p->klist_devices);
         else
              dev->is_registered = 0;
     }
}
从上面的代码我们可以看出。只有在bus->p->drivers_autoprobe为1的情况下,才会去自己匹配。这也就是bus目录下的drivers_probe 文件的作用.然后,将设备挂到总线的设备链表。
Device_attach()代码如下:
int device_attach(struct device *dev)
{
     int ret = 0;
 
     down(&dev->sem);
     if (dev->driver) {
         ret = device_bind_driver(dev);
         if (ret == 0)
              ret = 1;
         else {
              dev->driver = NULL;
              ret = 0;
         }
     } else {
         ret = bus_for_each_drv(dev->bus, NULL, dev, __device_attach);
     }
     up(&dev->sem);
     return ret;
}
对于设备自己已经指定驱动的情况,只需要将其直接和驱动绑定即可。如果没有指定驱动。就匹配总线之上的驱动。这是在bus_for_each_drv(dev->bus, NULL, dev, __device_attach);完成的。代码如下:
int bus_for_each_drv(struct bus_type *bus, struct device_driver *start,
              void *data, int (*fn)(struct device_driver *, void *))
{
     struct klist_iter i;
     struct device_driver *drv;
     int error = 0;
 
     if (!bus)
         return -EINVAL;
 
     klist_iter_init_node(&bus->p->klist_drivers, &i,
                   start ? &start->p->knode_bus : NULL);
     while ((drv = next_driver(&i)) && !error)
         error = fn(drv, data);
     klist_iter_exit(&i);
     return error;
}
很明显,这个函数就是遍历总线之上的驱动。每遍历一个驱动就调用一次回调函数进行判断。如果回调函数返回不为0。就说明匹配已经成功了。不需要再匹配剩余的。退出。在这里调用的回调函数是__device_attach().在这里。完全了设备与驱动匹配的最核心的动作。代码如下:
static int __device_attach(struct device_driver *drv, void *data)
{
     struct device *dev = data;
     return driver_probe_device(drv, dev);
}
转到driver_probe_device():
int driver_probe_device(struct device_driver *drv, struct device *dev)
{
     int ret = 0;
 
     if (!device_is_registered(dev))
         return -ENODEV;
     if (drv->bus->match && !drv->bus->match(dev, drv))
         goto done;
 
     pr_debug("bus: '%s': %s: matched device %s with driver %s\n",
          drv->bus->name, __FUNCTION__, dev->bus_id, drv->name);
 
     ret = really_probe(dev, drv);
 
done:
     return ret;
}
如果设备没有注册到总线之上。即dev->is_registered不为1. 就直接返回。
然后,再调用总线的match()函数进行匹配。如果match()函数返回0.说明匹配失败。那退出此函数。如果match函数返回1.说明初步的检查已经通过了。可以进入really_probe()再进行细致的检查。如果匹配成功,这个函数会返回1.此函数比较长而且比较重要,分段列出代码:
static int really_probe(struct device *dev, struct device_driver *drv)
{
     int ret = 0;
 
     atomic_inc(&probe_count);
     pr_debug("bus: '%s': %s: probing driver %s with device %s\n",
          drv->bus->name, __FUNCTION__, drv->name, dev->bus_id);
     WARN_ON(!list_empty(&dev->devres_head));
 
     dev->driver = drv;
     if (driver_sysfs_add(dev)) {
         printk(KERN_ERR "%s: driver_sysfs_add(%s) failed\n",
              __FUNCTION__, dev->bus_id);
         goto probe_failed;
     }
先假设驱动和设备是匹配的。为设备结构设置驱动成员。使其指向匹配的驱动。然后再调用driver_sysfs_add()建立几个符号链接。这几个链接分别为:
1:在驱动目录下建立一个到设备的同名链接
2:在设备目录下建立一个名为driver。到驱动的链接
 
     if (dev->bus->probe) {
         ret = dev->bus->probe(dev);
         if (ret)
              goto probe_failed;
     } else if (drv->probe) {
         ret = drv->probe(dev);
         if (ret)
              goto probe_failed;
     }
然后,再调用总线的probe函数。如果总线的此函数不存在。就会调用驱动的probe函数。如果匹配成功,返回0.如果不成功,就会跳转到probe_failed
 
     driver_bound(dev);
     ret = 1;
     pr_debug("bus: '%s': %s: bound device %s to driver %s\n",
          drv->bus->name, __FUNCTION__, dev->bus_id, drv->name);
     goto done;
到这里。设备和驱动已经匹配成功,调用driver_bound()将其关联起来。在这个函数里:
会将设备加至驱动的设备链表。这在我们之前分析bus,device driver中分析到的。相关的代码如下示:
     klist_add_tail(&dev->knode_driver, &dev->driver->p->klist_devices);
至此,这个匹配过程已经圆满结束了。返回1
 
probe_failed:
     devres_release_all(dev);
     driver_sysfs_remove(dev);
     dev->driver = NULL;
 
     if (ret != -ENODEV && ret != -ENXIO) {
         /* driver matched but the probe failed */
         printk(KERN_WARNING
                "%s: probe of %s failed with error %d\n",
                drv->name, dev->bus_id, ret);
     }
     /*
      * Ignore errors returned by ->probe so that the next driver can try
      * its luck.
      */
     ret = 0;
这里是匹配不成功的处理,在这里,删除之前建立的几个链接文件,然后将设备的driver域置空。
done:
     atomic_dec(&probe_count);
     wake_up(&probe_waitqueue);
     return ret;
}
 
从上面的分析可以看到,对应创建的属性文件分别为:uevent_attr devt_attr。它们的定义如下:
static struct device_attribute uevent_attr =
     __ATTR(uevent, S_IRUGO | S_IWUSR, show_uevent, store_uevent);
static struct device_attribute devt_attr =
     __ATTR(dev, S_IRUGO, show_dev, NULL);
uevent_attr对应的读写函数分别为:show_uevent store_uevent。先分析读操作。它的代码如下:
static ssize_t show_uevent(struct device *dev, struct device_attribute *attr,
                 char *buf)
{
     struct kobject *top_kobj;
     struct kset *kset;
     struct kobj_uevent_env *env = NULL;
     int i;
     size_t count = 0;
     int retval;
 
     /* search the kset, the device belongs to */
     top_kobj = &dev->kobj;
     while (!top_kobj->kset && top_kobj->parent)
         top_kobj = top_kobj->parent;
     if (!top_kobj->kset)
         goto out;
 
     kset = top_kobj->kset;
     if (!kset->uevent_ops || !kset->uevent_ops->uevent)
         goto out;
 
     /* respect filter */
     if (kset->uevent_ops && kset->uevent_ops->filter)
         if (!kset->uevent_ops->filter(kset, &dev->kobj))
              goto out;
 
     env = kzalloc(sizeof(struct kobj_uevent_env), GFP_KERNEL);
     if (!env)
         return -ENOMEM;
 
     /* let the kset specific function add its keys */
     retval = kset->uevent_ops->uevent(kset, &dev->kobj, env);
     if (retval)
         goto out;
 
     /* copy keys to file */
     for (i = 0; i < env->envp_idx; i++)
         count += sprintf(&buf[count], "%s\n", env->envp[i]);
out:
     kfree(env);
     return count;
}
从代码可以看出。这里会显示出由设备对应的kset.也就是由devices_kset所产生的环境变量。例如,在shell中输入如下指令:
Cat /sys/devices/LNXSYSTM:00/ uevent
输出结果如下:
PHYSDEVBUS=acpi
MODALIAS=acpi:LNXSYSTM:
这就是由devices_kset所添加的环境变量
 
写操作对应的代码如下:
static ssize_t store_uevent(struct device *dev, struct device_attribute *attr,
                  const char *buf, size_t count)
{
     enum kobject_action action;
 
     if (kobject_action_type(buf, count, &action) == 0) {
         kobject_uevent(&dev->kobj, action);
         goto out;
     }
 
     dev_err(dev, "uevent: unsupported action-string; this will "
              "be ignored in a future kernel version\n");
     kobject_uevent(&dev->kobj, KOBJ_ADD);
out:
     return count;
}
从上面的代码可以看出。这个文件的作用是输入一个字符字串。如果字符不合法,就会默认产生一个add事件。
 
devt_attr对应的读写函数为show_dev NULL.写函数为空,也就是说这个属性文件不允许写。只允许读。读操作的代码如下示:
static ssize_t show_dev(struct device *dev, struct device_attribute *attr,
              char *buf)
{
     return print_dev_t(buf, dev->devt);
}
也就是说,会将设备号显示出来.
 
分析完了bus.device.再接着分析driver.这里我们要分析的最后一个元素了。耐着性子往下看,快要完了^_^
 
驱动注册的接口为:driver_register().代码如下:
int driver_register(struct device_driver *drv)
{
     int ret;
 
     if ((drv->bus->probe && drv->probe) ||
         (drv->bus->remove && drv->remove) ||
         (drv->bus->shutdown && drv->shutdown))
         printk(KERN_WARNING "Driver '%s' needs updating - please use "
              "bus_type methods\n", drv->name);
     ret = bus_add_driver(drv);
     if (ret)
         return ret;
     ret = driver_add_groups(drv, drv->groups);
     if (ret)
         bus_remove_driver(drv);
     return ret;
}
如果设备与总线定义了相同的成员的函数。内核是优先使用bus中定义的.这一点我们在分析device注册的时候已经分析过。所以。这里打印出警告信息,用来提醒代码编写者。在这里,忽略有关group的东西。剩余的便只剩下bus_add_driver().代码如下:
int bus_add_driver(struct device_driver *drv)
{
     struct bus_type *bus;
     struct driver_private *priv;
     int error = 0;
 
     bus = bus_get(drv->bus);
     if (!bus)
         return -EINVAL;
 
     pr_debug("bus: '%s': add driver %s\n", bus->name, drv->name);
 
     priv = kzalloc(sizeof(*priv), GFP_KERNEL);
     if (!priv) {
         error = -ENOMEM;
         goto out_put_bus;
     }
     klist_init(&priv->klist_devices, NULL, NULL);
     priv->driver = drv;
     drv->p = priv;
     priv->kobj.kset = bus->p->drivers_kset;
     error = kobject_init_and_add(&priv->kobj, &driver_ktype, NULL,
                        "%s", drv->name);
初始化驱动的driver_private域。使其内嵌的kobject的kset指bus中的drivers_kset.这样,这个内嵌的kobject所生成的目录就会存在于bus对应目录的driver目录之下。这里还要注意的是,为内嵌kobject指定的ktype是driver_ktype.属性文件的读写操作都回回溯到struct driver_attribute中。这在之后再分析.
 
     if (error)
         goto out_unregister;
 
     if (drv->bus->p->drivers_autoprobe) {
         error = driver_attach(drv);
         if (error)
              goto out_unregister;
     }
     klist_add_tail(&priv->knode_bus, &bus->p->klist_drivers);
b
     module_add_driver(drv->owner, drv);
如果总线允许自动进行匹配。就会调用driver_attach()进行这个自己匹配过程。这个函数跟我们在上面分析的device自动匹配过程是一样的。请自行分析.最后,将驱动挂到bus对应的驱动链表
 
     error = driver_create_file(drv, &driver_attr_uevent);
     if (error) {
         printk(KERN_ERR "%s: uevent attr (%s) failed\n",
              __FUNCTION__, drv->name);
     }
生成一个属性为driver_attr_uevent的属性文件
 
     error = driver_add_attrs(bus, drv);
     if (error) {
         /* How the hell do we get out of this pickle? Give up */
         printk(KERN_ERR "%s: driver_add_attrs(%s) failed\n",
              __FUNCTION__, drv->name);
     }
为bus中的driver属性生成属性文件
 
     error = add_bind_files(drv);
     if (error) {
         /* Ditto */
         printk(KERN_ERR "%s: add_bind_files(%s) failed\n",
              __FUNCTION__, drv->name);
     }
生成属性为driver_attr_unbind和driver_attr_bind的属性文件
 
     kobject_uevent(&priv->kobj, KOBJ_ADD);
生成一个add事件
     return error;
out_unregister:
     kobject_put(&priv->kobj);
out_put_bus:
     bus_put(bus);
     return error;
}
总的来说,这个函数比较简单。其中涉及到的子函数大部份都在之前分析过。我们接下来分析一下。它所创建的几个属性文件的含义。
如上所述。在这里会创建三个属性文件,对应属性分别为:driver_attr_uevent,driver_attr_unbind,driver_attr_bind。这几个属性的定义如下:
static DRIVER_ATTR(uevent, S_IWUSR, NULL, driver_uevent_store);
static DRIVER_ATTR(unbind, S_IWUSR, NULL, driver_unbind);
static DRIVER_ATTR(bind, S_IWUSR, NULL, driver_bind);
DRIVER_ATTR宏的定义如下:
#define DRIVER_ATTR(_name, _mode, _show, _store)   \
struct driver_attribute driver_attr_##_name =      \
     __ATTR(_name, _mode, _show, _store)
 
对于driver_attr_uevent.它的读写函数分别为:NULL。driver_uevent_store。也就是说这个文件只允许写,不允许读操作。写操作的代码如下示:
static ssize_t driver_uevent_store(struct device_driver *drv,
                      const char *buf, size_t count)
{
     enum kobject_action action;
 
     if (kobject_action_type(buf, count, &action) == 0)
         kobject_uevent(&drv->p->kobj, action);
     return count;
}
很明显,这是一个手动产生事件的过程。用户可间可以写事件到这个文件来产生事件。
对于driver_unbind.它的读写函数分别为:NULL driver_unbind。这个文件也是不允许读的。写操作代码如下:
static ssize_t driver_unbind(struct device_driver *drv,
                   const char *buf, size_t count)
{
     struct bus_type *bus = bus_get(drv->bus);
     struct device *dev;
     int err = -ENODEV;
 
     dev = bus_find_device_by_name(bus, NULL, buf);
     if (dev && dev->driver == drv) {
         if (dev->parent)   /* Needed for USB */
              down(&dev->parent->sem);
         device_release_driver(dev);
         if (dev->parent)
              up(&dev->parent->sem);
         err = count;
     }
     put_device(dev);
     bus_put(bus);
     return err;
}
从上面的代码可以看出。写入文件的是一个设备名称。这个函数对应操作是将这个设备与驱动的绑定分离开来。
 
driver_attr_bind属性对应的读写函数分别为NULL。driver_attr_bind 即也是不允许写的。从字面意思和上面分析的driver_attr_unbind操作代码来看,这个属性对应的写函数应该是将写入的设备文件与此驱动绑定起来。我们来看下代码。以证实我们的猜测。代码如下:
static ssize_t driver_bind(struct device_driver *drv,
                 const char *buf, size_t count)
{
     struct bus_type *bus = bus_get(drv->bus);
     struct device *dev;
     int err = -ENODEV;
 
     dev = bus_find_device_by_name(bus, NULL, buf);
     if (dev && dev->driver == NULL) {
         if (dev->parent)   /* Needed for USB */
              down(&dev->parent->sem);
         down(&dev->sem);
         err = driver_probe_device(drv, dev);
         up(&dev->sem);
         if (dev->parent)
              up(&dev->parent->sem);
 
         if (err > 0) {
              /* success */
              err = count;
         } else if (err == 0) {
              /* driver didn't accept device */
              err = -ENODEV;
         }
     }
     put_device(dev);
     bus_put(bus);
     return err;
}
果然,和我们猜测的是一样的。
 
五:小结
在这一节里,分析了设备模型中的最底层的元素和他们之间的关系。也分析了它们建立的几个属性文件的含义。到这里,我们已经可以自己写驱动架构代码了.^_^
posted @ 2009-06-11 21:31 MEYE 阅读(609) | 评论 (0)编辑 收藏

linux下的GPIO驱动 2009-06-05 08:29

字号:    

编写驱动程序,首先要了解是什么类型的设备。linux下的设备分为三类,分别为:字符设备,块设备和网络设备。字符设备类型是根据是否以字符流为数据的交换方式,大部分设备都是字符设备,如键盘,串口等,块设备则是以块为单位进行管理的设备,如,磁盘。网络设备就是网卡等。

其次要了解应用程序和驱动程序的区别,两者的主要区别分为以下三点:

1入口函数的任务不相同,应用程序完成一个任务,驱动只完成初始化工作,比如中断

      申请,寄存器设置,定时器设置。

2运行时的cpu模式不相同,驱动具有很高的权限,应用程序是在用户态下运行,而驱

  动程序是在内核态下执行。

3 驱动程序不能调用C库函数,内核为驱动程序提供一些函数。如printk(KERN_NOTICE fmt, ##arg),第一个参数为打印级别,有如下的打印级别:

KERN_EMERG 用于紧急事件,一般是系统崩溃前的提示信息

KERN_ALERT 用于需要立即采取动作的场合

KERN_CRIT 临界状态,通常设计验证的硬件或软件操作失败

KERN_ERR 用于报告错误状态.设备驱动程序通常会用它报告来自硬件的问题

KERN_WARNING 就可能出现的问题提出警告.这些问题通常不会对系统造成严重破坏

KERN_NOTICE 有必要提示的正常情况.许多安全相关的情况用这个级别汇报

KERN_INFO 提示性信息.有很多驱动程序在启动时用这个级别打印相关信息

KERN_DEBUG 用于调试的信息

u_long copy_from_user(void *to, const void *from, u_long len),由用户态拷贝到内核态;

u_long copy_to_user(void * to, const void *from, u_long len),由内核态拷贝到用户态。

鉴于以上区别,驱动程序需要完成以下三点基本功能:

1:要对设备进行初始化和释放功能模块,就如上面的寄存器设置,中断的申请,向内核注 

   册驱动程序(register_chrdev()),卸载驱动程序(unregister_chrdev())。

2:能进行数据传输,在read(),write()函数里具体实现,数据传输工作。

3:能进行控制操作,给用户提供的ioctl()函数里可实现一些用户的选择性设置功能。

确定一个设备的执行函数集(结构体)

static struct file_operations myGPIO_fops = {

owner: THIS_MODULE,

write: myGPIO_write,

read: myGPIO_read,

ioctl: myGPIO_ioctl,

open: myGPIO_open,

release: myGPIO_release,

};

接下来是初始化工作,需要写在一个init()函数中,这个函数是独立的也是自动执行的,在这之中主要是对一些寄存器进行初始化操作。同样需要完成卸载驱动模块。

myGPIO_Major = register_chrdev(0, DRIVER_NAME, &myDriver_fops);

上面的程序完成设备号的注册,第一个参数为主设备号,一般为0,由系统来分配。

第二个参数为设备名,这需要在/dev/(/dev目录下设备名由命令 <mknod  设备名 C 主设备号  从设备号>来生成)目录下出现的设备名相符合。相反的在卸载中就取消注册

unregister_chrdev(myGPIO_Major, DRIVER_NAME);

最后将这两个模块加入到内核中,由程序段的最后两行完成。

static int __init myGPIO_init(void)

{

PRINTK("GPIO init\n");

myGPIO_Major = register_chrdev(0, DRIVER_NAME, &myGPIO_fops);

if(myGPIO_Major < 0)

{

PRINTK("register char device fail!\n");

return myGPIO_Major;

}

PRINTK("register myGPIO OK! Major = %d\n", myGPIO_Major);

#ifdef CONFIG_DEVFS_FS

devfs_myDriver_dir = devfs_mk_dir(NULL, "GPIO", NULL);

devfs_myDriver_raw = devfs_register(devfs_myDriver_dir, "raw0", DEVFS_FL_DEFAULT, myGPIO_Major, 0, S_IFCHR | S_IRUSR | S_IWUSR, &myGPIO_fops, NULL);

PRINTK("add dev file to devfs OK!\n");

#endif

return 0;

}

static void __exit myGPIO_exit(void)

{

/* Module exit code */

PRINTK("GPIO exit\n");

/* Driver unregister */

if(myGPIO_Major > 0)

{

#ifdef CONFIG_DEVFS_FS

devfs_unregister(devfs_myDriver_raw);

devfs_unregister(devfs_myDriver_dir);

#endif

unregister_chrdev(myGPIO_Major, DRIVER_NAME);

}

return;

}

MODULE_AUTHOR("LiuFan");

MODULE_LICENSE("Dual BSD/GPL");

module_init(myGPIO_init);

module_exit(myGPIO_exit);

设备执行函数功能的实现将在下面完成。如结构体的函数,但并不是全都需要实现。open()函数中是执行一些设备工作前的初始化工作。rlease()则是将设备的相关寄存器恢复到原来的值。read()函数是将设备中的数据拷贝到内核,write()函数是将内核数据拷贝到对应的设备中。MOD_INC_USE_COUNT和MOD_DEC_USE_COUNT两个宏是提供给系统对硬件资源进行控制访问的。在open()和rlease()两个函数中最基本的操作应是实现以上两个宏的操作。

static unsigned char myGPIO_Buffer[1024*1024];

/* Driver Operation Functions */

static int myGPIO_open(struct inode *inode, struct file *filp)

{

// int Minor = MINOR(inode->i_rdev);

// filp->private_data = 0;

MOD_INC_USE_COUNT;

PRINTK("myDriver open called!\n");

return 0;

}

static int myGPIO_release(struct inode *inode, struct file *filp)

{

// int Minor = MINOR(inode->i_rdev);

MOD_DEC_USE_COUNT;

PRINTK("myDriver release called!\n");

return 0;

}

static ssize_t myGPIO_read(struct file *filp, char *buf, size_t count, loff_t *f_pos)

{

char dat;

size_t read_size = count;

PRINTK("GPIO read called!\n");

PRINTK("\tcount=%d, pos=%d\n", count, (int)*f_pos);

/* if(*f_pos >= sizeof(myGPIO_Buffer))

{

PRINTK("[GPIO read]Buffer Overlap\n");

*f_pos = sizeof(myGPIO_Buffer);

return 0;

}

if((count + *f_pos) > sizeof(myGPIO_Buffer))

{

PRINTK("count + f_pos > sizeof buffer\n");

read_size = sizeof(myGPIO_Buffer) - *f_pos;

}*/

dat= GPFDAT;

copy_to_user(buf,&dat,1);

// *f_pos += read_size;

return read_size;

}

static ssize_t myGPIO_write(struct file *filp,const char *buf, size_t count, loff_t *f_pos)

{

char dat;

size_t fill_size = count;

PRINTK("myDriver write called!\n");

PRINTK("\tcount=%d, pos=%d\n", count, (int)*f_pos);

if(*f_pos >= sizeof(myGPIO_Buffer))

{

PRINTK("[myDriver write]Buffer Overlap\n");

*f_pos = sizeof(myGPIO_Buffer);

return 0;

}

if((count + *f_pos) > sizeof(myGPIO_Buffer))

{

PRINTK("count + f_pos > sizeof buffer\n");

fill_size = sizeof(myGPIO_Buffer) - *f_pos;

}

copy_from_user(&dat,buf,fill_size);

GPFDAT = dat;

// *f_pos += fill_size;

return fill_size;

}

控制ioctl() 函数则是提供给应用层的接口函数,功能并不是固定的,由开发者定义,一般都是对硬件的一些除过上述功能的其他操作。

static int myGPIO_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)

{

int i;

unsigned int mask=0x01;

GPFUP = 0x00;

PRINTK("myGPIO ioctl called(%d)!\n", cmd);

    switch(cmd)

{

case MOD_IN:

for(i=0;i<8;i++)

{

if((mask & arg)!=0x0)

{

GPFCON &=~(3<<i*2); 

}

mask =mask << 1;

}

break;

case MOD_OUT:

 PRINTK("IOCTRL 0 called(0x%lx)!\n", arg);

 for(i=0;i<8;i++)

 {

 if((mask & arg)!=0x00)

 {

        GPFCON &= ~(3 <<( i*2));

GPFCON |=(0x01<<(i*2));

 }

mask=mask<<1;

 }

 break;

case MOD_EXIT_INT:

PRINTK("IOCTRL 1 called(0x%lx)!\n", arg);

GPFDAT = 0xFFFFFF00;

break;

default:

break;

}

return 0;

}

posted @ 2009-06-11 21:30 MEYE 阅读(2599) | 评论 (0)编辑 收藏

2009-05-25 | 嵌入式Linux下USB驱动程序的设计

 
标签: Linux  嵌入式  USB  驱动 

一、引言

    USB(Universal Serial Bus)即通用串行总线,是一种全新的双向同步传输的支持热插拔的数据传输总线,其目的是为了提供一种兼容不同速度的、可扩充的并且使用方便的外围设备接口,同时也是为了解决计算机接口的太多的弊端而设计的。一个USB系统主要有三部分组成:USB互连、USB主机、USB设备三部分组成的,其结构如图1 所示。在编写USB设备驱动程序设计时,可以分为三部分编写:主机端设备驱动程序、主机控制器驱动程序设计和设备端驱动程序三部分,在本文中重点介绍主机端驱动程序的设计。

    二、USB设备驱动程序的设计

    USB设备驱动程序的设计包括主机端设备驱动程序设计、主机控制器驱动程序设计和设备端驱动程序设计三部分组成。主机端设备驱动程序就是通常说的设备驱动程序,它是主机环境中为用户应用程序提供一个访问USB外设的接口。Linux为这部分驱动程序提供编程接口,驱动程序设计者只要按照需求编写驱动程序框架,通过调用操作系统提供的API接口函数可以完成对USB外设的特定访问。

    主机控制驱动主要是对USB主机控制器的驱动,在大多数PC环境下,主机控制器都是由操作系统提供。嵌入式设备一般都没有USB主机控制器,只是工作在 Slave模式下。如果要使USB具有主机功能,那么设备中需要选用一个带主机控制器的USB接口控制芯片,同时自己还要有实现该主机控制器的驱动程序。目前Linux内核中只提供USB主机控制器的开放主机控制器和通用主机控制器接口两种规格,而这两种规格主要用在PC架构中。USB主机端驱动程序与主机控制器的结构如图2所示。其中USB核是Linux的一个子模块,集中定义了一组USB相关的数据结构、宏以及API函数。

    USB设备驱动程序是常说的设备固件程序的一部分,提供设备信息与主机的通信接口。设备端USB驱动程序设计由以下几部分处理程序组成。初始化例程:完成描述符指针、端点、配置改变等操作。数据传输例程:完成控制传输、批量传输、中断传输及同步传输等传输方式下的数据收发工作。标准设备处理请求:处理标准设备请求。厂商请求处理:处理生产商指定请求。其他操作:处理主机发出的端口复位、配置改变等操作。

   1.USB设备驱动程序框架

    USB驱动程序首先要向Linux内核注册自己,并告诉系统它所支持的设备类型以及它所支持的操作。这些信息通过一个usb_driver结构来传递。usb_driver结构如下:

    static struct usb_driver skel_driver = {

    name: "skeleton";/*驱动程序的名称*/

    probe: skel_probe; /*设备列举时被调用*/

    disconnect: skel_disconnect; /*设备被卸载时被调用*/

    fops: &skel_fops; /*指向一个file_operation结构,内核通过它来访问驱动程序的文件操作函数,与用户程序的read、write等操作进行交互*/

    minor USB_SKEL_MINOR_BASE; /*指向设备的次设备号,用于系统识别主设备号相同的设备(即一个驱动程序可以同时支持多个USB设备*/

    id_table: skel_table; /*保存设备的厂商ID和产品ID,作为该设备的唯一标识,驱动程序向系统注册后,当下次插入时,系统根据这个标识查找正确的驱动程序,实现设备的即插即用*/

    };

    static struct file_operation skel_fops={

    {

    owner:THIS_MODULE,

    read:skel_read,

    write:skel_write,

    ioctl:skel_ioctl,

    open:skel_open,

    release:skel_release,

    };

    (1)注册和注销

    USB驱动程序注册,就是把在初始化函数中填好的use_driver结构作为参数传递给
   
    use_register()函数即可,函数的调用方法为:

    result=usb_register(&skel_driver);

    当要从系统卸载驱动程序时,也是将use_driver结构作为参数传递给usb_deregister 函数处理。 函数的调用格式为:

    static void __exit usb_skel_exit(void)

    { /* deregister this driver with the USB subsystem */

    usb_deregister(&skel_driver);

    }

    module_exit(usb_skel_exit);

    当USB设备插入时,为了使linux-hotplug(Linux中PCI、USB等设备热插拔支持)系统自动装载驱动程序,需要创建一个MODULE_DEVICE_TABLE。核心代码如下(这个模块仅支持某一特定设备):

    /* table of devices that work with this driver */

    static struct usb_device_id skel_table [] = {

    { USB_DEVICE(USB_SKEL_VENDOR_ID,

    USB_SKEL_PRODUCT_ID) },

    { } /* Terminating entry */

    };

    MODULE_DEVICE_TABLE (usb, skel_table);

    USB_DEVICE宏利用厂商ID和产品ID提供了一个设备的唯一标识。当系统插入一个ID匹配的USB设备到USB总线时,驱动会在USB core中注册,驱动程序中probe 函数也就会被调用。usb_device 结构指针、接口号和接口ID都会被传递到函数中。

    (2)probe()函数

    probe()函数的编写格式为:static void * skel_probe(struct usb_device *dev, unsigned int ifnum, const struct usb_device_id *id);驱动程序需要确认插入的设备是否可以被接受,如果不接受,或者在初始化的过程中发生任何错误,probe()函数返回一个NULL值。否则返回一个含有设备驱动程序状态的指针,通过这个指针,就可以访问所有结构中的回调函数。

    在驱动程序里,最后一点是要注册devfs(设备文件系统)。首先创建一个缓冲用来保存那些被发送给USB设备的数据和那些从设备上接受的数据,并为设备传输创建一个USB请求块(URB)以向设备写入数据,同时USB urb 被初始化,然后在devfs子系统中注册设备,允许devfs用户访问USB的设备。注册过程如下:

    /* initialize the devfs node for this device and register it */

    sprintf(name, "skel%d", skel->minor);

    skel->devfs = devfs_register (usb_devfs_handle, name, DEVFS_FL_DEFAULT, USB_MAJOR, USB_SKEL_MINOR_BASE + skel->minor, S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH, &skel_fops, NULL);

    如果devfs_register函数失败, devfs子系统会将此情况报告给用户。如果设备从USB总线拔掉,设备指针会调用disconnect 函数。驱动程序就需要清除那些被分配了的所有私有数据、关闭urbs,并且从devfs上注销调自己。调用函数的格式为:

    /* remove our devfs node */

    devfs_unregister(skel->devfs);

    现在,skeleton驱动就已经和设备绑定上了,任何用户态程序要操作此设备都可以通过file_operations结构所定义的函数进行了。

    (3)open()、write()和read()函数

    首先,要打开此设备。在open()函数中MODULE_INC_USE_COUNT 宏是一个关键,它起到一个计数的作用,有一个用户态程序打开一个设备,计数器就加1。例如,以模块方式加入一个驱动,若计数器不为零,就说明仍然有用户程序在使用此驱动,这时候,就不能通过rmmod命令卸载驱动模块了。

    /* increment our usage count for the module */

    MOD_INC_USE_COUNT;

    ++skel->open_count;

    /* save our object in the file's private structure */

    file->private_data = skel;

    当open完设备后,read()、write()函数就可以收、发数据了。

    read()函数首先从open()函数中保存的fi。

    Write()函数和read()函数是完成驱动对读写等操作的响应。在skel_write中,一个FILL_BULK_URB函数,就完成了urb 系统callbak和的skel_write_bulk_callback之间的联系。注意skel_write_bulkcallback是中断方式,所以要注意时间不能太久,本程序中它就只是报告一些urb的状态等。 read 函数与write 函数稍有不同在于:程序并没有用urb 将数据从设备传送到驱动程序,而是用usb_bulk_msg 函数代替,这个函数能够不需要创建urbs 和操作urb函数的情况下,来发送数据给设备,或者从设备来接收数据。调用usb_bulk_msg函数并传到一个存储空间,用来缓冲和放置驱动收到的数据,若没有收到数据表示失败并返回一个错误信息。

    usb_bulk_msg函数:当对usb设备进行一次读或者写时,usb_bulk_msg 函数是非常有用的; 然而, 当需要连续地对设备进行读/写时,应建立一个自己的urbs,同时将urbs 提交给USB子系统。

    skel_disconnect函数:当释放设备文件句柄时,这个函数会被调用。
    MOD_DEC_USE_COUNT宏也会被调用到(和MOD_INC_USE_COUNT刚好对应,它减少一个计数器),首先确认当前是否有其他的程序正在访问这个设备,如果是最后一个用户在使用,可以关闭任何正在发生的写,操作如下:

    /* decrement our usage count for the device */

    --skel->open_count;

    if (skel->open_count <= 0) {

    /* shutdown any bulk writes that might be

    going on */

    usb_unlink_urb (skel->write_urb);

    skel->open_count = 0;

    }

    /* decrement our usage count for the module */

    MOD_DEC_USE_COUNT;

    USB设备可以在任何时间点从系统中取走,即使程序目前正在访问它。USB驱动程序必须要能够很好地处理解决此问题,它需要能够切断任何当前的读写,同时通知用户空间程序:USB设备已经被取走。

   2.设计实例

    下面通过介绍键盘飞梭驱动程序的实例来让读者更好的理解USB驱动程序的工作原理,实现代码如下:

    /*需要的头文件*/

    #include <linux/kernel.h>

    #include <linux/slab.h>            

    #include <linux/module.h>

    #include <linux/input.h>

    #include <linux/init.h>

    #include <linux/usb.h>

    #include <linux/kbd_ll.h>

    /* 驱动程序版本信息*/

    #define DRIVER_VERSION ""

    #define DRIVER_AUTHOR " TGE HOTKEY "

    #define DRIVER_DESC "USB HID Tge hotkey driver"

    #define USB_HOTKEY_VENDOR_ID 0x07e4

    #define USB_HOTKEY_PRODUCT_ID 0x9473

    /*厂商和产品ID信息就是/proc/bus/usb/devices中看到的值,通过cat/proc/bus/usb/devices得到当前系统探测到的USB总线上的设备信息。它包括Vendor、ProdID、Product等*/

    MODULE_AUTHOR( DRIVER_AUTHOR );

    MODULE_DESCRIPTION( DRIVER_DESC );

    /*此结构来自内核中drivers/usb/usbkbd.c*/

    struct usb_kbd {

    struct input_dev dev;

    struct usb_device *usbdev;

    unsigned char new[8];

    unsigned char old[8];

    struct urb irq, led;

    struct usb_ctrlrequest dr;

    unsigned char leds, newleds;

    char name[128];

    int open;

    };

    static void usb_kbd_irq(struct urb *urb) /*urb为USB请求块*/

    {

    struct usb_kbd *kbd = urb->context;

    int *new;

    new = (int *) kbd->new;

    if(kbd->new[0] == (char)0x01)

    {

    if(((kbd->new[1]>>4)&0x0f)!=0x7)

    {

    handle_scancode(0xe0,1);

    handle_scancode(0x4b,1);

    handle_scancode(0xe0,0);

    handle_scancode(0x4b,0);

    }

    else

    { handle_scancode(0xe0,1);

    handle_scancode(0x4d,1);

    handle_scancode(0xe0,0);

    handle_scancode(0x4d,0);

    }

    }

    printk("new=%x %x %x %x %x %x %x %x", kbd->new[0],kbd->new[1],kbd->new[2],kbd->new[3],

    kbd->new[4],kbd->new[5],kbd->new[6],kbd->new[7]);

    }

    static void *usb_kbd_probe(struct usb_device *dev, unsigned int ifnum, const struct usb_device_id *id)

    {

    struct usb_interface *iface;

    struct usb_interface_descriptor *interface;

    struct usb_endpoint_descriptor *endpoint;

    struct usb_kbd *kbd;

    int pipe, maxp;

    iface = &dev->actconfig->interface[ifnum];

    interface = &iface->altsetting[iface->act_altsetting];

    if ((dev->descriptor.idVendor != USB_HOTKEY_VENDOR_ID) || (dev->descriptor.idProduct != USB_HOTKEY_PRODUCT_ID) || (ifnum != 1))

    {

    return NULL;

    }

    if (dev->actconfig->bNumInterfaces != 2)

    {

    return NULL;

    }

    if (interface->bNumEndpoints != 1) return NULL;

    endpoint = interface->endpoint + 0;

    pipe = usb_rcvintpipe(dev, endpoint->bEndpointAddress);

    maxp = usb_maxpacket(dev, pipe, usb_pipeout(pipe));

    usb_set_protocol(dev, interface->bInterfaceNumber, 0);

    usb_set_idle(dev, interface->bInterfaceNumber, 0, 0);

    printk(KERN_INFO "GUO: Vid = %.4x, Pid = %.4x, Device = %.2x, ifnum = %.2x, bufCount = %.8x\\n", dev->descriptor.idVendor,dev->descriptor.idProduct,dev->descriptor.bcdDevice, ifnum, maxp);

    if (!(kbd = kmalloc(sizeof(struct usb_kbd), GFP_KERNEL))) return NULL;

    memset(kbd, 0, sizeof(struct usb_kbd));

    kbd->usbdev = dev;

    FILL_INT_URB(&kbd->irq, dev, pipe, kbd->new, maxp > 8 ? 8 : maxp, usb_kbd_irq,kbd, endpoint->bInterval); kbd->irq.dev = kbd->usbdev;

    if (dev->descriptor.iManufacturer) usb_string(dev, dev->descriptor.iManufacturer, kbd->name, 63);

    if (usb_submit_urb(&kbd->irq)) {

    kfree(kbd); return NULL; }

    printk(KERN_INFO "input%d: %s on usb%d:%d.%d\\n", kbd->dev.number, kbd->name, dev->bus->busnum, dev->devnum, ifnum);

    return kbd; }

    static void usb_kbd_disconnect(struct usb_device *dev, void *ptr)

    {

    struct usb_kbd *kbd = ptr;

    usb_unlink_urb(&kbd->irq);

    kfree(kbd);

    }

    static struct usb_device_id usb_kbd_id_table [] = {

    { USB_DEVICE(USB_HOTKEY_VENDOR_ID, USB_HOTKEY_PRODUCT_ID) },

    { } /* Terminating entry */

    };

    MODULE_DEVICE_TABLE (usb, usb_kbd_id_table);

    static struct usb_driver usb_kbd_driver = {

    name: "Hotkey",

    probe: usb_kbd_probe,

    disconnect: usb_kbd_disconnect,

    id_table: usb_kbd_id_table,

    NULL,

    };

    static int __init usb_kbd_init(void)

    {

    usb_register(&usb_kbd_driver);

    info(DRIVER_VERSION ":" DRIVER_DESC);

    return 0;

    }

    static void __exit usb_kbd_exit(void)

    {

    usb_deregister(&usb_kbd_driver);

    }

    module_init(usb_kbd_init);

    module_exit(usb_kbd_exit);

    三、结语

    USB规范是一门比较新的技术,接口使用方便,但是驱动程序的设计较复杂。上面介绍了USB设备驱动程序的设计,主要分析了主机端驱动程序的设计,并且给出了一个编写USB驱动程序的实例。

    参考文献

    1.刘峥嵘.嵌入式Linux应用开发详界解.机械工业出版社,2004

    2.周立功.ARM嵌入式Linux系统构件与驱动开发范例.北京航天航空大学出版社,2006

    3.刘淼.嵌入式系统接口设计与Linux驱动程序开发.北京航天航空大学出版社,2006

posted @ 2009-06-11 21:29 MEYE 阅读(552) | 评论 (0)编辑 收藏

 

转载--Linux经典书籍博物馆展览 2009-05-18 11:24

字号:    

 

经典书籍在这里集中,有些比较旧,但也值得参考,如果有朋友转载,请注明出处:小文论坛http://www.wonyen.net/bbs/mboard.asp),并且与我们联系,尊重别人的成果,等于尊重自己,我们也感谢提供下载朋友,也希望有心的朋友提供自己的书籍,让这里成为最好的Linux书籍博物馆。1000本是目标,依靠大家支持!如果大家在这里找到好书最好跟个帖子,让我们知道辛苦的回应!

第一部分:Linux基础应用

1、《Linux从入门到精通》
http://www.gouhuo.com/study/linuxbook.zip

2、 Linux 系统安全与优化中文
这本书的英文版“Get Acquainted with Linux Security and Optimization System”(简称LinuxSOS)是Linux文档计划(Linux Document Project)中比较新的一本指南。这本书不是Linux的入门书籍,读这本书需要有Linux或者Unix的背景知识。如果你已经安装过Linux而且能够使用一些简单的Unix命令,那么这本书会对你有很大的帮助。
http://www.linuxaid.com.cn/download/training/linuxsos-cn.pdf

3、Linux安装与配置简明手册 13-Aug-2002 16:14 20M
http://cpss.zz.ha.cn/study/linux ... %f7%ca%d6%b2%e1.zip

4、Linux编程白皮书.zip 13-Aug-2002 16:14 16M
http://cpss.zz.ha.cn/study/linux ... %d7%c6%a4%ca%e9.zip

5、Linux网站建设技术指南 13-Aug-2002 16:14 9.2M
http://cpss.zz.ha.cn/study/linux ... %f5%d6%b8%c4%cf.zip

6、Linux系统分析与高级编程 13-Aug-2002 16:14 11M
http://cpss.zz.ha.cn/study/linux ... %cc%bc%bc%ca%f5.zip

7、Linux系统管理白皮书.zip 13-Aug-2002 16:14 6.8M
http://cpss.zz.ha.cn/study/linux ... %d7%c6%a4%ca%e9.zip

8、Linux应用程序开发指南 13-Aug-2002 16:14 9.1M
http://cpss.zz.ha.cn/study/linux ... +%20Gnome%bf%e2.zip

9、Linux 24学时教程.zip 13-Aug-2002 16:14 34M
http://cpss.zz.ha.cn/study/linux ... %b1%bd%cc%b3%cc.zip

10、Red Hat Linux 6大全.zip 13-Aug-2002 16:15 33M
http://cpss.zz.ha.cn/study/linux ... 206%b4%f3%c8%ab.zip

11、Red Hat Linux 6管理工具 13-Aug-2002 16:15 13M
http://cpss.zz.ha.cn/study/linux ... %ed%b9%a4%be%df.zip

12、http://www.linuxsir.org/pdf/ebook1.rar
http://www.linuxsir.org/pdf/ebook2.rar
具体文章如下:
基础建设讨论专版:
Linux管理员手册
linux入门教程
linux指令大全

红旗版区的:
红旗桌面4正式版最新使用方法和问题解答100例

Linux shell进阶应用与shell编程
命令大集合
TCSH shell 编程
Bourne Shell及shell编程
Linux Shell简介
脚本精华欣赏
使用 Bash shell 脚本进行功能测试

Linux 发行版SuSE专题
SuSE 解决方案

13、Debian的中文FAQ 600k pdf
http://linuxdoc.51.net/download/Debian_cn_FAQ.pdf

14、Linux Kernel 核心手册(中文)552k zip
http://linuxdoc.51.net/download/Linux_Kernel_cn.zip

15、Linux + Solaris 48k pdf
http://linuxdoc.51.net/download/LinuxSolaris.pdf

16、Linux SOS 1.1 1.3M pdf
http://linuxdoc.51.net/download/linuxsos-11.pdf

17、SuSE官方汉化手册 1.4M pdf
http://linuxdoc.51.net/download/suse_guanfang_hanhua.pdf

18、Linux Kernel 1.3M pdf
http://linuxdoc.51.net/download/linux_kernel.pdf

19、Linux程序员指南 337k zip
http://linuxdoc.51.net/download/linux_program.zip

20、Linux高级技巧集 72k zip
http://linuxdoc.51.net/download/linux_gaoji_jiqiao.zip

21、OReilly Unix超级工具(第三版)
http://bbs.itebook.net/attachment.php?aid=621
http://bbs.itebook.net/attachment.php?aid=622

22、FreeBSD使用大全(Chm格式)
是王波写的一本专门介绍Freebsd的书籍,共94章,图文并茂,是不可多得的FreeBSD方面的教材。
http://www.linuxdby.com/download ... dde35e9c2&id=15

23、Redhat 9.0 官方中文安装指南
http://www.fcitx.org/flysail/rhl-ig-x86-zh_CN-9.tar.gz

Redhat 9.0 官方中文入门指南
http://www.fcitx.org/flysail/rhl-gsg-zh_CN-9.tar.gz

Redhat 9.0 官方中文定制指南
http://www.fcitx.org/flysail/rhl-cg-zh_CN-9.tar.gz

24、《Linux 新手管理员指南》
本书《Linux 新手管理员指南》是英文版LINUX NEWBIE ADMINISTRATOR GUIDE 的完整中文译本,共237页,PDF格式。
原版:http://linux-newbie.sunsite.dk/
下载:http://www.linuxdby.com/download ... dde35e9c2&id=51

25、Linux高级配置详解(PDG)
讲述在Linux*作系统下的软、硬件配置、网络应用配置、X Window系统配置以及内核的配置和编译等知识。
http://www.mycodes.net/down.asp?id=793&no=1
http://www.mycodes.net/down.asp?id=793&no=2

第二部分:Linux系统管理

1、Setting up a Local Area Network (EN)上载:5/9/2002
http://www.joyfire.net/compress/rh-lan.pdf

2、linux for mainframe (EN)上载:5/9/2002
http://www.joyfire.net/compress/linux4mainframe.zip

3、Linux Consultants Guide (EN)上载:1/9/2002
http://www.joyfire.net/compress/Consultants-Guide.html.tar.gz

4、LPI认证复习资料1 2 3 4 5 6 7 8上载:13/7/2002
http://www.joyfire.net/compress/l-lpi1.zip
http://www.joyfire.net/compress/l-lpi2.zip
http://www.joyfire.net/compress/l-lpi3.zip
http://www.joyfire.net/compress/l-lpi4.zip
http://www.joyfire.net/compress/l-lpi5.zip
http://www.joyfire.net/compress/l-lpi6.zip
http://www.joyfire.net/compress/l-lpi7.zip
http://www.joyfire.net/compress/l-lpi8.zip

5、Red Hat Network Basic User Reference Guide (EN)上载:13/7/2002
http://www.joyfire.net/compress/rhn-basic-urg-en-3.3.tgz

6、Red Hat Network Enterprise User Reference Guide (EN)上载:13/7/2002
http://www.joyfire.net/compress/rhn-enterprise-urg-en-1.1.tgz

7、Linux FAQ 在线浏览 上载:11/6/2002
http://www.joyfire.net/compress/Linux-FAQ.html.tar.gz
http://www.joyfire.net/Linux-FAQ/index.html

8、Linux系统分析与高级编程技术上载:4/5/2002
http://www.joyfire.net/compress/linux_advanced_technology.zip

9、RedHat Linux网络管理工具上载:4/5/2002
http://www.joyfire.net/compress/ ... gement_Tools_CN.zip

10、Linux管理指南上载:4/5/2002
http://www.joyfire.net/compress/Linux_Management_CN.zip

11、GNU Linux 高级网络应用服务指南上载:4/5/2002
http://www.joyfire.net/compress/ ... d_network_Guide.zip
l
12、inux环境数据库管理员手册上载:4/5/2002
http://www.joyfire.net/compress/Linuxdb.zip

13、Complete Linux Command Reference (EN)上载:4/5/2002
http://www.joyfire.net/compress/ ... mmand_Reference.zip

14、Bugzilla-Guide (EN) 上载:20/4/2002
http://www.joyfire.net/compress/Bugzilla-Guide.html.tar.gz

15、Llinuxcookbook (EN) 在线浏览 上载:20/4/2002
http://www.joyfire.net/compress/linuxcookbook-1.2.html.tar.gz
http://www.joyfire.net/linuxcookbook/index.html

16、Linux HOWTO (EN)(9.8M) 在线浏览 中文版和miniHOWTO (EN) 中文版上载:13/3/2002
http://www.joyfire.net/compress/Linux-html-HOWTOs.tar.gz
http://www.joyfire.net/HOWTO/HOWTO-INDEX/howtos.html
http://www.joyfire.net/compress/newhowto_cn.zip
http://www.joyfire.net/compress/ ... TOs-20020420.tar.gz
http://www.joyfire.net/compress/minihow_cn.zip

17、Advanced Bash-Scripting Guide(EN) 在线浏览 上载:11/3/2002
http://www.joyfire.net/compress/abs-guide.html.tar.gz
http://www.joyfire.net/abs-guid/index.html

18、Securing and Optimizing Linux RedHat Edition -A Hands on Guide(EN) 在线浏览 上载:11/3/2002
http://www.joyfire.net/compress/ ... on-v1.3.html.tar.gz
http://www.joyfire.net/solrhe/Se ... ion-v1.3/index.html

19、CVS Best Practices(EN) 在线浏览 上载:11/3/2002
http://www.joyfire.net/compress/CVS-BestPractices.html.tar.gz
http://www.joyfire.net/CVS-BestPractices/index.html

20、The Linux System Administrators' Guide(EN) 在线浏览 中文版上载:1/1/2002。
http://www.joyfire.net/compress/sag.html.tar.gz
http://www.joyfire.net/sag/index.html
http://www.joyfire.net/compress/Linuxsys.zip

21、The Linux Network Administrator's Guide, 2e (EN) 在线浏览 上载:1/1/2002
http://www.joyfire.net/compress/nag-2.0.html.tar.gz
http://www.joyfire.net/nag2/index.html

22、Linux System Administration Made Easy (EN) 在线浏览 上载:1/1/2002
http://www.joyfire.net/compress/lame.html.tar.gz
http://www.joyfire.net/lame/index.html

23、AKA讲座(a link)上载:1/1/2002
http://bj.aka.org.cn/Lectures/index.html

24、ORACLE for linux install handbook (EN)上载:1/1/2002
http://www.joyfire.net/compress/installguide_linux102.pdf

25、Redhat 7.2 install handbook (EN)上载:1/1/2002
http://www.joyfire.net/compress/rhl-ig-x86-en-72.tgz

26、Linux安全最大化(PDG)
介绍Linux安全基础,如何防御口令攻击和数据攻击角度来讨论Linux用户安全,Linux网络安全,各种Internet服务的安全性、防火墙、入侵检测、日志和审计跟踪以及灾难恢复等.
http://www.mycodes.net/down.asp?id=827&no=1
http://www.mycodes.net/down.asp?id=827&no=2

27、Linux高级配置详解(PDG)
讲述在Linux*作系统下的软、硬件配置、网络应用配置、X Window系统配置以及内核的配置和编译等知识。
http://www.mycodes.net/down.asp?id=793&no=1
http://www.mycodes.net/down.asp?id=793&no=2

28、Running Linux(EN)上载:23/9/2003
http://joyfire.net/compress/running_linux_4e.pdf

29、Learning Red Hat Linux(EN)上载:23/9/2003
http://joyfire.net/compress/learning_redhat_linux.pdf

30、Learning the Unix Operating System(EN)上载:23/9/2003
http://joyfire.net/compress/Learning_the%20UNIX_OS.pdf

31、Linux Programming Unleashed(EN)上载:23/9/2003
http://joyfire.net/compress/linux_programming_unleashed.pdf
第三部分:Linux代码编写

1、POSIX threads explained(EN)上载:5/9/2002
http://www.joyfire.net/compress/linuxthreads.zip

2、Emacspeak User's Guide (EN)上载:1/9/2002
http://www.joyfire.net/compress/espk-ug.html.tar.gz

3、MICO文档 (EN)上载:1/9/2002
http://www.joyfire.net/compress/mico-doc-html.tar.gz

4、GNU Autotools Guide (EN)上载:13/7/2002
http://www.joyfire.net/compress/autobook-1.3.tar.gz

5、Linux Threads FAQ 在线浏览 上载:11/6/2002
http://www.joyfire.net/compress/Threads-FAQ-html.tar.gz
http://www.joyfire.net/Threads-FAQ/index.html

6、Linux系统分析与高级编程技术上载:4/5/2002
http://www.joyfire.net/compress/linux_advanced_technology.zip

7、ELF文件格式 (EN)上载:10/5/2002
http://www.joyfire.net/compress/elf.pdf

8、Bugzilla-Guide (EN) 在线浏览 上载:20/4/2002
http://www.joyfire.net/compress/Bugzilla-Guide.html.tar.gz

9、The Linux Programmer's Guide (EN) 在线浏览 上载:11/3/2002
http://www.joyfire.net/compress/lpg.html.tar.gz
http://www.joyfire.net/lpg/index.html

10、CVS Best Practices(EN) 在线浏览 上载:11/3/2002
http://www.joyfire.net/compress/CVS-BestPractices.html.tar.gz
http://www.joyfire.net/CVS-BestPractices/index.html

11、Advanced Bash-Scripting Guide(EN) 在线浏览 上载:11/3/2002
http://www.joyfire.net/compress/abs-guide.html.tar.gz
http://www.joyfire.net/abs-guid/index.html

12、Linux设备驱动程序(CH)(Linux Device Drivers): 在线浏览 上载:1/3/2002
http://www.joyfire.net/lsdp/index.htm

13、The Linux Kernel Module Programming Guide (EN) 在线浏览 中文版上载:1/1/2002
http://www.joyfire.net/compress/lkmpg.html.tar.gz
http://www.joyfire.net/lkmpg/index.html
http://www.joyfire.net/compress/lkmpg_cn.rtf.zip

14、AKA讲座(a link)上载:1/1/2002
http://bj.aka.org.cn/Lectures/index.html

15、i386 Reference Programmer's Manual(EN)上载:6/10/2003
http://joyfire.net/386ASM/index.htm

第四部分:Linux内核分析

1、netxiong linux内核分析笔记上载:28/7/2003
http://www.joyfire.net/compress/netxiong-linux.zip

2、CML2 Language and Tools Description(EN)上载:12/ 7/2003
http://www.joyfire.net/compress/cml2.pdf

3、Z8530 Programming Guide(EN)上载:11/ 7/2003
http://www.joyfire.net/compress/z8530book.pdf

4、Synchronous PPP and Cisco HDLC Programming Guide(EN)上载:11/ 7/2003
http://www.joyfire.net/compress/wanbook.pdf

5、Video4Linux Programming(EN)上载:11/ 7/2003
http://www.joyfire.net/compress/videobook.pdf

6、The Linux 2.4 Parallel Port Subsystem(EN)上载:11/ 7/2003
http://www.joyfire.net/compress/parportbook.pdf

7、MCA Driver Programming Interface(EN)上载:11/ 7/2003
http://www.joyfire.net/compress/mcabook.pdf

8、The Linux Kernel API(EN)上载:9/ 7/2003
http://www.joyfire.net/compress/kernel-api.pdf

9、Unreliable Guide To Hacking The Linux Kernel(EN)上载:9/ 7/2003
http://www.joyfire.net/compress/kernel-hacking.pdf

10、Unreliable Guide To Locking(EN)上载:9/ 7/2003
http://www.joyfire.net/compress/kernel-locking.pdf

11、OSDesign上载:18/3/2003
http://www.joyfire.net/compress/OSDesign-0.0.6.1.zip

12、Linux Kernel 2.4 Internals(EN)上载:18/3/2003
http://www.joyfire.net/compress/lki.html.tar.gz

13、Compiling the linux kernel(EN)上载:5/9/2002
http://www.joyfire.net/compress/compile_kernel.pdf

14、OSKit项目源代码、论文和文档上载:13/7/2002
http://www.joyfire.net/compress/oskit-20020317.tar.gz
http://www.joyfire.net/compress/oskit-papers.zip
http://www.joyfire.net/compress/oskit.html.tar.gz

15、GNU Autotools Guide (EN)上载:13/7/2002
http://www.joyfire.net/compress/autobook-1.3.tar.gz

16、Compile linux kernel (EN)上载:12/7/2002
http://www.joyfire.net/compress/compilekernel.zip

17、Intel体系结构参考手册 (EN)和Intel体系结构手册 (EN)上载:16/5/2002
http://www.joyfire.net/compress/Architecture_Reference.pdf
http://www.joyfire.net/compress/Architecture.pdf

18、IA32体系结构设计手册卷一 (EN)上载:16/5/2002
http://www.joyfire.net/compress/IA32-1.pdf

19、IA32体系结构设计手册卷二 (EN)上载:16/5/2002
http://www.joyfire.net/compress/IA32-2.pdf

20、IA32体系结构设计手册卷三 (EN)上载:16/6/2002
http://www.joyfire.net/compress/IA32-3.pdf

21、ELF文件格式 (EN)上载:10/5/2002
http://www.joyfire.net/compress/elf.pdf

22、Linux系统分析与高级编程技术上载:4/5/2002
http://www.joyfire.net/compress/linux_advanced_technology.zip

23、The Linux Kernel (EN) 在线浏览 中文版上载:10/3/2002。
http://www.joyfire.net/compress/tlk.html.tar.gz
http://www.joyfire.net/tlk/tlk.html
http://www.joyfire.net/compress/Linux_Kernel_CN.zip

24、Linux From Scratch (EN) 在线浏览 上载:10/3/2002。
http://www.joyfire.net/compress/LFS-3.1.html.tar.gz
http://www.joyfire.net/lfs/index.html

25、Linux设备驱动程序(CH)(Linux Device Drivers): 在线浏览 上载:1/3/2002

http://www.joyfire.net/lsdp/index.htm

26、华中理工大学98级研究生linux系统分析报告上载:10/2/2002。
http://www.joyfire.net/compress/98_tar.tar.gz

27、华中理工大学96级本科生linux系统分析报告上载:10/2/2002。
http://www.joyfire.net/compress/96_tar.tar.gz

28、The Linux Kernel Module Programming Guide (EN) 在线浏览 中文版上载:1/1/2002
http://www.joyfire.net/compress/lkmpg.html.tar.gz
http://www.joyfire.net/lkmpg/index.html
http://www.joyfire.net/compress/lkmpg_cn.rtf.zip

29、The Linux Kernel Hackers' Guide (EN) 在线浏览 上载:1/1/2002
http://www.joyfire.net/compress/khg.html.tar.gz
http://www.joyfire.net/khg/index.html

30、AKA讲座(a link)上载:1/1/2002。
http://bj.aka.org.cn/Lectures/index.html

31、Linux内核情景分析(上),Linux内核情景分析(下)上载:6/10/2003
http://joyfire.net/compress/linuxqjfx1.pdf
http://joyfire.net/compress/linuxqjfx2.pdf
第五部分:Unix优秀电子书

1、莱昂氏UNIX源代码分析13-Aug-2002 16:13 13M
http://cpss.zz.ha.cn/study/unix/ ... %eb%b7%d6%ce%f6.zip

2、实践大师:UNIX awk和sed编程篇13-Aug-2002 16:13 6.7M
http://cpss.zz.ha.cn/study/unix/ ... %e0%b3%cc%c6%aa.rar

3、实践大师:unix shell编程篇13-Aug-2002 16:13 7.2M
http://cpss.zz.ha.cn/study/unix/ ... %e0%b3%cc%c6%aa.rar

4、HP-UX System and Network Fundermental 13-Aug-2002 16:13 7.4M
http://cpss.zz.ha.cn/study/unix/ ... %20Fundermental.pdf

5、LINUX与UNIX Shell编程指南13-Aug-2002 16:12 19M
http://cpss.zz.ha.cn/study/unix/ ... %cc%d6%b8%c4%cf.zip

6、UNIX环境高级编程.zip 13-Aug-2002 16:12 18M
http://cpss.zz.ha.cn/study/unix/ ... %b6%b1%e0%b3%cc.zip

7、UNIX教程网络篇.zip 13-Aug-2002 16:13 13M
http://cpss.zz.ha.cn/study/unix/ ... %f8%c2%e7%c6%aa.zip

8、UNIX系统安全工具.zip 13-Aug-2002 16:13 6.6M
http://cpss.zz.ha.cn/study/unix/ ... %ab%b9%a4%be%df.zip

9、hp-ux系统和网络管理.rar 13-Aug-2002 16:13 4.2M
http://cpss.zz.ha.cn/study/unix/ ... %e7%b9%dc%c0%ed.rar

10、scounix系统管理员宝典13-Aug-2002 16:12 21M
http://cpss.zz.ha.cn/study/unix/ ... %b1%b1%a6%b5%e4.rar

11、shell编程和unix命令.rar 13-Aug-2002 16:12 17M
http://cpss.zz.ha.cn/study/unix/ ... nix%c3%fc%c1%ee.rar
posted @ 2009-06-11 21:29 MEYE 阅读(501) | 评论 (0)编辑 收藏
Linux C Function参考手册

Linux C Function参考手册一本深入详细介绍Linux C 函数的书。。
有用的朋友可以看下.


附件: [Linux C Function参考手册] LinuxC-Function.pdf (2008-7-2 09:04, 926.65 K)


http://bbs.lupaworld.com/attachment.php?aid=7508


http://v.youku.com/v_show/id_XMzM5MTI0NTY=.html
posted @ 2008-07-06 14:58 MEYE 阅读(811) | 评论 (1)编辑 收藏


http://www.kenengba.com/post/402.html

20多个在线操作系统(webOS)一览

写于2008-03-21 – 2:18 下午 | 作者:Jason Ng | 类别 » 互联网络 |

 

之前我介绍了很多在线软件,而说到在线软件,不能不提在线操作系统(WebOS),相比起单个的在线软件,在线操作系统功能更全面,所有功能都是基于浏览器(如果你所在的地方禁用的MSN,不妨尝试使用WebOS来登录)。有人相信webOS会成为未来的主流,因为和在线软件一样,你能在任何地方连接到自己的工作平台和文件存储。这里介绍20多个WebOS,其中有不少是提供中文界面的。

1、I-Cube

20多个在线操作系统(webOS)一览(可能吧 www.kenengba.com)

提供1G的在线存储和文件共享,多媒体支持和一些常用办公工具。同时拥有一个email客户端和编程开发工具。

2、EyeOS

20多个在线操作系统(webOS)一览(可能吧 www.kenengba.com)

EyeOS是一个开源软件,可以下载使用也可以在其服务器上在线使用。拥有丰富的网络程序以及办公套件。个性化强度高。

3、eXo Enterprise WebOS

20多个在线操作系统(webOS)一览(可能吧 www.kenengba.com)

使用了大量的Web2.0元素构造,使用了大量的AJAX和Jacascript,因此它使用起来是相当方便的,即使在没有互联网连接的情况下也可以使用。

4、Zimdesk

Zimdesk提供的应用程序可以用琳琅满目来形容,从办公应用到多媒体应用,从文件管理到网络电视,又或者从RSS订阅到聊天工具,功能可谓是很好很强大。

5、Glide OS

一个需要flash支持的在线操作系统,除了提供Web入口之外,还提供移动网络入口。提供的程序和Zimdesk大同小异,不过有点杂乱。

6、WidgetPlus

顾名思义,这是一个以Widget为基础构成的WebOS,由于Widget的开放性,这个OS提供功能必将会越来越强大。

7、Peepel 

 

与其说在线操作系统,不如说Peepel是一个在线办公应用,和ZohoGoogle Docs是大同小异的。相比之下,我更喜欢Zoho。

8、Xindesk

20多个在线操作系统(webOS)一览(可能吧 www.kenengba.com)

一个免费在WebOS,支持所有的文件在线存储,日程管理,联系人资料等等。有点像Vista?

9、YouOS 

20多个在线操作系统(webOS)一览(可能吧 www.kenengba.com)

YouOS是一个非常优秀的WebOS,使用JavaScript来与服务器交换数据,在进行下一步操作之前,上一步的操作会被记录,方便返回。另外,YouOS在在线协同操作方面做得非常优秀。

10、Widgetop

20多个在线操作系统(webOS)一览(可能吧 www.kenengba.com)

注意,你不能使用IE来登入这个WebOS!Firefox,Safari等都没有问题。即使是iPhone的浏览器也可以。由于又是基于Widget的,其扩展性是相当强的。

11、CorneliOS

 

12、JavaFlashBridge

 

13、Appmarks

一个用于iPhone和iPod Touch的在线操作系统, 事实上从外观看来也很有“水果商”的感觉。

14、Craythur

 

Craythur在界面设计上花了不少功夫,直观看起来和windows非常相似。

15、Desktoptwo

20多个在线操作系统(webOS)一览(可能吧 www.kenengba.com)

Desktoptwo不但拥有华丽的界面,其可操作性也是非常强大的,和其它很多webOS不同,它的所有应用程序都是用php语言编写的,并且都支持拖曳操作。

16、Ghost

此Ghost并非彼Ghost,这个是G.ho.st,但和赛门铁克的Ghost有几分相似,因为它也是经常做“备份”的操作。G.ho.st提供的功能也是相当强大的,而且界面看起来比较舒服。

17、Orca

OK,你的确很喜欢Vista,那么orca将会非常适合你。从截图你可以看出它有多像Vista,目前Orca的所有项目已经迁移到StartFoce上去。

18、SSOE

20多个在线操作系统(webOS)一览(可能吧 www.kenengba.com)

19、Purefect

20多个在线操作系统(webOS)一览(可能吧 www.kenengba.com)

20、Goowy

以上20个WebOS介绍摘译自My10sen

21、TomOS

20多个在线操作系统(webOS)一览(可能吧 www.kenengba.com)

不能不提的中文webOS服务,很多功能都是符合中国人的使用习惯的,因此使用起来会非常得心应手。

22、Jooce

20多个在线操作系统(webOS)一览(可能吧 www.kenengba.com)

一个基于flash的webOS,支持的语言达10多种,当然其中包括中文。使用起来非常舒服,其速度也是相当可以的。但我在使用时总出现图片出错的情况,莫非我的图片是不雅照?

posted @ 2008-03-26 11:40 MEYE 阅读(1147) | 评论 (0)编辑 收藏
Android平台介绍   http://www.loveandroid.com/

Google android介绍http://www.loveandroid.com/viewthread.php?tid=72&extra=page%3D2

http://topic.csdn.net/u/20080314/08/8eb27070-cc44-48be-af11-dc6da4023441.html

Android是什么? Android是一个针对移动设备的程序集, 其中包括一个操作系统, 一个中间件和一些关键性应用. 本文首先概览了Android SDK提供的工具和APIs, 当您在使用Java语言来开发Android平台的应用时您会用到它们.  

特性 

   1.程序程序框架可重用及可复写组件组成  
   2.针对移动设备优化过的JAVA Dalvik虚拟机,采用流行的JAVA进行应用开发 
   3.整合浏览器, 该浏览器基于开源的WebKit引擎开发  
   4.提供了优化过得图形系统, 该系统由一个自定义的2D图形库; 一个遵循OpenGL ES 1.0标准(硬件加速)的3D图形库组成  
   5.使用SQLite来实现结构化数据的存储  
   6.媒体方面对一些通用的audio, video, 和图片格式提供支持(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)  
   7.GSM技术(依赖硬件)  
   8.蓝牙, EDGE, 3G和WiFi(依赖硬件)  
   9.Camera, GPS, 指南针, 和加速计 (依赖硬件)  
   10.非常丰富的开发环境, 包括一个设备模拟器, 调适工具, 内存和效率调优工具和一个Eclipse的插件  

Android的结构 
    下图展示了Android 操作系统的主要组件结构. 每一部分都在下面的段落有详细介绍  

 

   1.应用程序 Android会附带一些核心的应用程序, 包括一个email客户端, 短信程序, 日历, 地图, 浏览器, 通讯录等.    
   2.所有的应用程序都是由Java语言完成的.  
   3.应用程序框架 开发人员可以跟那些核心应用一样, 拥有访问框架APIs的全部权限. 应用的系结构设计简化了各组件之间的重用;任何应用都可以分发自己的组件, 任何应用也可以使用这些分发的组件(应用的使用方法需遵循框架的安全性约束)。这个机制对用户来说同样适用, 他们也可以替换组件.  

隐藏在每个应用后面的是一套服务和系统, 其中包括:  


   1.一套表现丰富,扩展性很强的View, 通过这些View您可以创建包括list, grid, 文本框, 按钮, 甚至一个嵌入浏览器的应用  
       Content Providers, 通过它可以在某个应用内访问其他应用的数据(例如通讯录), 或者共享自己的数据  
       Resource Manager, 提供对静态资源的访问能力, 例如国际化文本和layout文件  
       Notification Manager, 通过该机制, 所有的应用都可以在状态栏显示自己的提醒信息  
       Activity Manager, 用于管理应用的生命周期, 并且提供了通用的向后导航功能  

    2.库 Android 包含一套C/C++库, 被用于Android 系统中的各种组件中. 这些功能通过Android 应用框架展现给开发人员. 下面列出一些核心库:  

      System C library - 实现了BSD-derived 的标准C系统库(libc), 用于嵌入式的基于Linux的设备  
       Media Libraries - 基于PacketVideo的 OpenCORE; 该库提供了对许多流行的音频和视频格式的播放回放和录制功能, 同样包括静态图片文件, 包括MPEG4, H.264, MP3, AAC, AMR, JPG, 和 PNG 等  
       Surface Manager - 用于管理不同应用对图形显示子系统和2D和3D图形层的访问  
       LibWebCore - 一个时尚的web浏览器引擎, 为Android浏览器和内嵌的web view提供实现  
       SGL - 隐藏的2D图形引擎  
       3D libraries - 基于OpenGL ES 1.0 APIs实现的库; 该库用于3D图形加速或提供高优化的3D软件光栅器  
       FreeType - 位图和向量模式的字体绘制  
       SQLite - 一个强大的, 轻量的关系型数据库引擎, 用于所有的应用  
       Android 运行时 Android包含一组核心库, 提供了Java语言核心库内的大部分功能.  

    3.每一个Android应用运行在自己的进程里, 用该应用自己的Dalvik 虚拟机实例. Dalvik 可以让一个设备高效的运行很多个VM. Dalvik 虚拟机执行Dalvik Executable (.dex)格式的文件, 该格式的文件经过优化 占用很小的内存. 该虚拟机是基于存储器的, 运行经过Java语言编译器的类, 这些类通过"dx"工具被转换成.dex格式.  

    4.Dalvik 虚拟机依赖Linux kernel 来实现一些潜在功能, 例如线程和底层内存管理.  
     
    5.Linux Kernel Android基于Linux version 2.6内核来提供系统的核心服务, 例如安全机制, 内存管理, 进程管理, 网络堆栈和驱动模块. 该内核还扮演着一个虚拟的中间层, 该层介于硬件和其余的软件堆栈.  
posted @ 2008-03-26 10:13 MEYE 阅读(1053) | 评论 (0)编辑 收藏
http://www.5xue.com/modules/wordpress/?p=213
成功八大资源:请在35岁前搞掂

一切成功都是“一三五八成功模式”,这是《一生的保证》这本书的核心脉络,也是我八年研究成功学得出的结论,那些成功的人没有谁离开了这模式。那么“八”是什么呢?
人 类的一切设想都必须基于材料来实现,成功也毫无例外需要材料。所谓实现就是转化,成功是什么东西转化来的呢?显然还是物质、能量、信息,因为这世界除此之 外再无别的东西。但是物质、能量、信息是从最基本的哲学层面来说的,它并不具备操作性。你这一辈子可操作的资源不过八种:财富资源、信息资源、能力资源、 品质资源、人际资源、健康资源、时间资源、空间资源。

一、积累财富。金钱不是万能的,没钱是万万不能的,一句话没钱决不会成功。从你降生一刻起,从你喝第一口奶始, 物质就开始左右着你的命运。你的成长、你的教育以及人生的一切收获都是财富投资的结果。在你不能独立之前,财富决定着你,在你独立于社会后,财富影响着 你,即使是成功的人也要为此耗掉半生精力。在这个多变的职业世界里,你不会永远在一个地方工作,在一个岗位上淋漓尽致地发挥自己,当你感到无法施展时,你 会辞职或创业,如果你事先储蓄了足够的钱,将给你的成功奠定坚实的基础。

二、吸收信息。是信息造就了我们人,当然也是信息造就了我们的成功。一切创造、认知、判断都来源于信息,成功就 是不断吸收知识信息变成积木,然后按照你的规则把它搭出来。但我们最最核心的信息是某一专业的系统信息,你必须学会本行业所需要的一切知识并有见解。每个 人在年轻时都可能有过彻夜不眠、刻苦攻读,这在20岁甚或30岁都没有问题,但到了35岁,就不应该再为学习基本技能而大伤脑筋了。35岁应该是专家了, 在学术上差不多是副教授,基本上完成信息的积累,35岁之后就应该勃发了,可惜的是,许多人到四十岁了在本行业还没入门,他们的知识太缺乏系统,缺乏深度 了。

三、训练能力。能力=知识+训练,这是我的一个简化公式,不是心理学上的专业名词解释。掌握知识与智力有关,不 同类型的智力遗传度在35%~96%之间,而且95%以上都是正常的,智商低于70的弱智儿童全人口只占3%,所以我们先天性地就获得巨大资源,但这还不 是一个人全部的心理资源,甚至也不是开发出来的资源。高智商的人解决问题容易一些,但不等于成功就容易一些,世上有多少事非智商180不能做呢?只要智力 正常,就足够成功了,关键有没有把知识发挥出来用到实处的能力。第四章节“十全四美”十四种能力总有某几种是你的优势,你要用得炉火纯青,所谓“样样通样 样松”“一招鲜吃遍天”。十八般武艺你总要精一样,到35岁还不知自己的长处和短处是相当麻烦的,但不管怎样基本能力如表达、沟通、收集信息等每天都要 练。各种能力都极大地依赖于后天锻练与发掘,这才是一个人真正的心理资源,它与外界一切资源一样是取之不尽的,一个人到底能干些什么,谁也不知道,即便是 爱因斯坦也只是用了他潜能的一小部分。

四、磨练品质。也是心理资源的一部分,它渗透到外面的部分就是人格魅力。一个人能不能把八大资源吸引到自己身 上,能否承托起八大资源的负载,又能否把资源用到极至,靠的就是他的品质。俗话说大事做人,做的就是品质。年轻时犯错误,可以说是不成熟,但人家不会说你 品质有问题,当被人说品质有问题时,一辈子都完了。“1358”里的五大品质已经说过了,此不多说,再强调一点到35岁还没有形成风格魅力、人格魅力,下 半子希望不大。

五、扩大人际。资源的配置是不平衡的,你所需要的许多资源都在别人手里,可在他手里并不当作资源,同样你身上闲 置的东西也可能是别人苦苦追寻的东西。社会分工越来越细,任何有价值的工作都不可能由一个人完成。如果到了35岁你仍未建立起牢固的人际关系网,那你就有 麻烦了。这个人际关系网包括你的朋友、亲人、同爱好、同事、行业的骄骄者、新闻媒介等,最低限度包括所有可以互相帮助的人。其中家庭是第一人际关系网,家 庭不保、情感生活不愉快的人很能有大发展。人际关系网不是一朝一夕就能建立起来的,它需要几年甚至十几年的培养,同时也需要终生的维护。臭清高是中国知识 分子的一大悲哀,至到现在还有许多人意识不到自己失败的原因。所有的资源都需要你拿出精力去获取去交换,也就是说资源背后是成本,人际成本是必须花的,甚 至还相当高昂,因为它比任何一种资源带来的回报都大。

六、保持健康。这是支撑我们一辈子的物质和能量资源。五十岁前用健康换金钱,五十岁后用金钱换健康,这是有道理 的。只有健康资源的连续可用,我们的成功才有保证。35岁身体开始走下坡路了,可以说下半辈子都是吃老本,如果没有老本吃,那就完了。考察成功人士,一个 显要特征就是精力充沛,他们把健康资源优势发挥到最大程度。可以说每个人都有深刻的体验,一生病我们所有的愿望都萎缩了,一旦精神好转,我们理想的云帆又 高扬起来。而还有一些人,终因健康资源的断缺而成为悲剧英雄。

七、珍惜时间。时间是老生常谈的两个字,因而也就成了视而不见的资源。一幢大楼,人们只知道它由砂、石、水泥、 钢筋砌成,却不知道还有六个月的时间也砌在里面了,如果只给你一天时间,这个世界将没有大楼。坏就坏在世上没有一天的时间,有的只是无穷无尽的时间,它不 需要再生,而是永生,所以我们不到生命的结束,意识不到它的荒废和飞逝。年轻时你还浪费得起,到35岁你还不能有效地利用时间,还在一切无聊与懒散中,还 在弥补35前的漏洞中,可真危险了。

八、扩展空间。人是动物,动物的优势就是能自由地利用空间。但并不是每个人都能意识到空间是他的资源。以商业为 例,竞争的较量来较量去最后都到空间上来了,国际资本的全球渗透到了空前地步,如果不开放空间,哪有什么跨国公司,哪有什么连锁企业?毫无空间概念、更无 空间资源概念的人,他们在心理上已经注定是没有多少成长要求的人,他们无所谓成长,当然也就无所谓成功。不知您们相不相信,我身边一些35岁的人还没出过 省,他们都是大学毕业哦。

八种资源大致可分对应的四组,它们在同一轴上是同向增减的互动关系,成功资源图也就是成功熵势图,以总面积表示。一切资源都可以相互转化,从图示上 也是如此,增加任何一个轴,增加的都是总面积,都反应在任何一个轴上,反之亦然。但任何资源都不可以相互替代,西谚云:The trouble with being poor is taking up all your time。善哉!金钱可以买时间,但金钱绝不能替代时间,人际可以弥补才能,但决不可以替代才能。资源不是平均分布,要想总面积最大,那就是全面发展的圆 周,可以像车轮一样飞奔,而奇形怪状则很难滚动起来。很多人寄望于一种资源,那就是能力资源里的智力因素,抱有希望或每每埋怨的也都是它,以为只要有了它 就万事大吉了,即使这一种资源也可能只用了五分之一,而其它的七又五分之四资源都被白白浪费了,所以你一生中实际资源利用率是四十分之一,2.5%,这就 是你的成功概率。而成功人士,都是珍惜资源,并且把资源使用到极至的人。摘自黄怀宁《一生的保证》。


posted @ 2008-02-14 17:25 MEYE 阅读(573) | 评论 (0)编辑 收藏

[转:]http://blog.chinaunix.net/u/15586/showart.php?id=473344

推荐几款PYTHON编辑器:
   
    推荐几款不错的python编辑器吧。这里推荐的几个并不是像vim,emacs一类的老牌编辑器,而是主要 针对python的编辑器。在我看来,我所需要的代码编辑器的功能,包括代码折叠,语法高亮,行号显示,代码提示,当然能够你IDE一样加入调试和执行功 能就再好不过了。今晚我介绍几款,这些功能上面参差不齐,希望对有需要的朋友有所帮助。
 1.PythonWinEditor
如果你安装activePython或pywin32模块的话,这个编辑器一般默认情况下都会安装的。pythonwineditor其实非常不错,上述所说的四项功能一应俱全,而且会有调试功能。完全免费,算是这里面不错的选择了。
 2.Editra
 Editra在你安装最新版的wxPython的时候会有选项提示你是否安装,当然你也可以直接从他的站点下载独立安装。这个软件出来时间并不长,但是却很有趣。我说的功能也都有,代码提示功能更是让人喜爱,软件是用python和wxPython完成的,很不错。
 3.KomodoIDE/Editor
 ActiveState 现在专门针对开源脚本语言开发一些不错的应用。KomodoIDE是KomodoEditor的增强版本,当然是收费的,而 KomodoEditor却是免费的。虽然这款软件觉得占用内存比较大,但是软件的代码提示功能让你喜欢。感觉比上述两款的提示功能要强得多。 Editor没有调试和运行功能,而IDE则相对应的有这些功能。不过对于一般用户来讲,Editor也已经够用了。当然如果你想花点银子的话搞IDE的 话,也是物有所值的。
 国内的python大牛limodo出的一个Ulipad,我就不多想介绍了。软件代码自动提示功能并不十分实善,而且感 觉一个编辑器挺占用内存的,这一点并不好,而且色彩上面用太亮眼的绿色在里面,有点难看了。就不太向大家推荐了。开源的世界是一个多彩的世界,你总能从里 面发现一些有趣的东西。我喜欢这些有趣的东西,python把我带来一个新境界,他让我看到更多更有趣的东西。你可以用python完成更多你想要做的 事,而且这一切基本上没有什么不可能的。随着你对这门语言的深入,你会爱上他,在我看来,现在许多应用层上的程序,python都能快速有效的完成,而且 你会觉得他很安全,辅助你思维更加清晰。python和许多语言的理念往往不同,通过C/C++语言,你会觉得你所要的许多功能你所想到的第一件事是怎么 实现这一功能,你想要做一件事,往往需要自己写许多代码就会帮你实现;而python则不同,你想到的一件事是有什么模块可以帮我实现。前两天看见一个T 恤写着“生命短暂,我用python“。是呀,用python不需要费太多的脑子,因为已经帮你想好和做好了你想要实现的功能。你只需要轻松调用就可以 了。用python你不必花费太多的心思在怎么实现上面,而是花更多的心思在问题的解决思路上面。虽然我在07年的11/12月份才开始接触这门语言,但 是,却深深的喜欢上了她。python的世界是自由的,但代码是工整的;python是包容的,可以容纳下你想要的任何功能,我爱开源,我爱 python.



用python进行GUI开发的选择:
用python进行GUI开发的选择

 Python最大的特点就在于她的快速开发功能。作为一种胶水型语言,python几乎可以渗透在我们编程过程中的各个领域。这里我简单介绍一下用python进行gui开发的一些选择。
 1.Tkinter
 Tkinter 似乎是与tcl语言同时发展起来的一种界面库。tkinter是python的配备的标准gui库,也是opensource的产物。Tkinter可用 于windows/linux/unix/macintosh操作系统,而且显示风格是本地化的。Tkinter用起来非常简单,python自带的 IDLE就是采用它写的。除此外,tkinter的扩展集pmw和Tix功能上都要相对它强大,但tkinter却是最基本的。我认为,在用python 做gui开发,tkinter是最基本的知识,所以这个环节是必须要学习的。你或许在以后的开发中并不常用tkinter,但是一些小型的应用上面,他还 是很有用的,而且开发速度也很快。
 2.WxPython
 WxWidgets应该算是近几年了比较流行的GUI跨平台开发技术了。 wxWidgets有不同的版本应用,有c++的,也有basic的,现在在python上面也有较好的移植。wxpython的功能上面要强于 tkinter,她提供了超过200个类,面向对象的编程风格,设计的框架类似于MFC。对于大型GUI应用上面,wxPython还是具有很强的优势 的。boa constructor可以帮助我们快速可视地构建wxwidgets界面。
 3.PyQT
 Qt同样是一种开源的GUI库,Qt的类库大约在300多个,函数大约在5700多个。Qt同样适合于大型应用,由它自带的qt designer可以让我们轻松来构建界面元素。
 4.pyGtk
 Gtk是linux下Gnome的核心开发库了。功能上面非常齐全。值得说明的是,在windows平台下gtk的显示风格并不是特别本地化。不过他带的glade的界面设计器还是可以帮你省不少事的。
 5.Jython
  尝试过用python访问java类库吗,那么就用jython吧。jython其实可以认为是另外一个python开发环境,基于java的,但是大多 数的CPython调用jython下还是可以的。你可以在jython环境下像使用java一样来通过python的语法来调用java语言,真的很 酷。
 6.MFC
 Windows Pywin32允许你像VC一样的形式来使用PYTHON开发win32应用。代码风格可以类似win32 sdk,也可以类似MFC,由你选择。如果你仍不放弃vc一样的代码过程在python下,那么这就是一个不错的选择。
 7.PythonCard
 PythonCard其实是对wxPython的再封装。不过封装的更加简单,使用起来觉得比wxPython更直观,也更简单化了。
 8.Dabo
 仍是一个基于wxpython的再封装库,没用过,不太了解。它提供数据库访问,商业逻辑以及用户界面。
 9.AnyGui
 通过底层的api来访问其它工具集,像tkinter,wxpython和qt.具体也没怎么用过。
 10.WPY
 MFC风格的Gui开发库,代码风格也类似于MFC,仅管如此,你依旧可以使用这个库来开发GUI应用,而不用担心平台移植的问题。她同样是一个跨平台的库。
 11.IronPython
  如果你要想开发.net下面的应用的话,那么IronPython就是你的选择,与jython有点类似,他同样支持标准的python模块,但同样增加 了对.net库的支持。你也可以理解为他是另一个python开发环境。你可以非常方便地使用python语法进行.net应用的开发,这一点听起来真的 挺有意思。
 总之,介绍了这么多,我个人意见是,如果你是java用户,那么你就用jython吧,除了可以享受python的模块功能及语法 外,你可以找到许多java的影子;如果你是.net用户,那么就用iron python吧。如果你对Visual C++很熟悉,那么你可以使用MFC,WPY或是wxPython,当然我更建议wxPython了。当然,我认为对于tkinter是每一个原来搞C的 人都应该了解和学习的GUI库,因为她很轻便,小型应用就可以使用她来搞定,而对于较大型应用可以采用pyGtk,pyQt,WxPython或 PythonCard来搞定,这样的话,既可以注重知识的衔接性,也可以快速进行软体的开发了。



基于Python的socket编程[原] 服务端:

#socket server端
#获取socket构造及常量
from socket import *
#''代表服务器为localhost
myHost = ''
#在一个非保留端口号上进行监听
myPort = 50007

#设置一个TCP socket对象
sockobj = socket(AF_INET, SOCK_STREAM)
#绑定它至端口号
sockobj.bind((myHost, myPort))
#监听,允许5个连结
sockobj.listen(5)

#直到进程结束时才结束循环
while True:
    #等待下一个客户端连结
    connection, address = sockobj.accept( )
    #连结是一个新的socket
    print 'Server connected by', address
    while True:
        #读取客户端套接字的下一行
        data = connection.recv(1024)
        #如果没有数量的话,那么跳出循环
        if not data: break
        #发送一个回复至客户端
        connection.send('Echo=>' + data)
    #当socket关闭时eof    
    connection.close( )

客户端:


import sys
from socket import *
serverHost = 'localhost'
serverPort = 50007

#发送至服务端的默认文本
message = ['Hello network world']
#如果参数大于1的话,连结的服务端为第一个参数
if len(sys.argv) > 1:
    serverHost = sys.argv[1]
    #如果参数大于2的话,连结的文字为第二个参数
    if len(sys.argv) > 2:
        message = sys.argv[2:]

#建立一个tcp/ip套接字对象
sockobj = socket(AF_INET, SOCK_STREAM)
#连结至服务器及端口
sockobj.connect((serverHost, serverPort))

for line in message:
    #经过套按字发送line至服务端
    sockobj.send(line)
    #从服务端接收到的数据,上限为1k
    data = sockobj.recv(1024)
    #确认他是引用的,是'x'
    print 'Client received:', repr(data)

#关闭套接字
sockobj.close( )




posted @ 2008-02-04 11:42 MEYE 阅读(951) | 评论 (0)编辑 收藏

Linux 平台上的C语言调试工具!

Debugging Tools for C on Linux Platform
http://www.linuxgazette.com/node/view/8755

Submitted by Nikhil Bhargava on Tue, 02/17/2004 - 14:37. Articles | General Interest
This article talks about debugging tools for applications in C on Linux platforms. Most of the tools are freely available on all major platforms with very wide user support. The tools help in static analysis of code as well as assist in dynamic evaluation of code.

Please note that tools listed here are suggestions of the author. This list is not a standard one. Changes have to be done in it depending upon the nature, scope and details of the application to be developed.
Debugging Tools


1. Dmalloc http://dmalloc.com/

The debug memory allocation or Dmalloc library is a freeware debugging tool which has been specially designed as a drop in replacement for the system's malloc, realloc, calloc, free and other memory management routines while providing powerful debugging facilities configurable at runtime. It makes changes during compile time and donot add runtime changes in binary. These facilities include such things as memory-leak tracking, fence-post write detection, file/line number reporting, and general logging of statistics. The library is reasonably portable having been run successfully on at least the following operating systems: AIX, BSD/OS, DG/UX, Free/Net/OpenBSD, GNU/Hurd, HPUX, Irix, Linux, MS-DOG, NeXT, OSF, SCO, Solaris, SunOS, Ultrix, Unixware, Windoze, and even Unicos on a Cray T3E. It has full support for programs the debugging of POSIX threads.

The package includes the library, configuration scripts, debug utility application, test program, and documentation.

2. Valgrind http://valgrind.kde.org/

Valgrind is a GPL distributed system for debugging and profiling x86-Linux programs. I can also be helpful for programs for platforms other than x86 since behavior of x86 binary is similar to other binaries. The accompanying tools with Valgrind automatically detect many memory management and threading bugs, avoiding hours of frustrating bug-hunting, making programs more stable. It supports a through detailed profiling to help speed up the programs.

The Valgrind distribution includes four tools: two memory error detectors, a thread error detector, and a cache profiler.

3. Electricfence http://rpmfind.net/linux/RPM/conecti...-2cl.i386.html

Electric Fence is a freeware library that can be used for C programming and debugging. It can be linked at compile time and it will warn about possible problems such as freeing memory that doesn't exist, etc. It is basically a memory profiling tool. However currently it is available only on HP-Unix platform (I am not very sure though).

4. GDB http://sources.redhat.com/gdb

This is the Gnome Debugger which comes as a freeware support package with freeware Linux distribution like Red Hat, Slacware, and Debian etc. It has full support of many languages like C, C++, and Perl etc. It helps to debug the binaries of these languages in modes like single step, multiple step or complete run. It also has provisions of setting break points and trace value.

It is helpful for stub testing, functional flow checking and bound checking. Further this is readily available with all flavours of Linux andUnix platforms and is amply supported in user community.

5. Insight http://sources.redhat.com/insight

Insight is a graphical user interface to GDB, the GNU Debugger written in Tcl/Tk by at Red Hat, Inc. and Cygnus Solutions Insight provides all features provided by GDB along with Graphical debugging interface replacing traditional command based interface.

6. Memprof http://www.gnome.org/projects/memprof

MemProf is a free ware memory Profiling and memory leak detection tool which comes as an addendum to common Linux distributions. It can generate a profile how much memory was allocated by each function in the program. It can scan memory and find blocks that have been allocated but are no longer referenced anywhere (dead code).

MemProf works by pre-loading a library to override the C library's memory allocation functions and does not require recompiling the program. One advantage MemProf has over some other similar tools that are available is that it has a nice GUI front-end and is relatively easy to use.


I am Nikhil Bhargava from Delhi, India. I am a Computer Engineer currently working in C-DOT, India for past one year. Comments and Suggestions are always welcome.


【硬件编程咨询】C语言资料大全

◆经典C源程序100例:http://post.baidu.com/f?kz=8618367

◆时钟的驻留程序:http://post.baidu.com/f?kz=10822377

◆数据结构暨若干经典问题和算法:http://post.baidu.com/f?kz=10922856

◆LIUXUY 磁盘系统源程序:http://post.baidu.com/f?kz=12973347

◆RLE压缩:http://post.baidu.com/f?kz=12592570

◆快速排序:http://post.baidu.com/f?kz=12262349

◆全排列的递归算法:http://post.baidu.com/f?kz=12248706

◆KMP字符串搜索算法:http://post.baidu.com/f?kz=12143581

◆C高效编程四招:http://post.baidu.com/f?kz=13192245

◆无栈非递归二叉树遍历:http://post.baidu.com/f?kz=12394188

◆跟我学NETBSD内核源码:http://post.baidu.com/f?kz=12201581

◆Linux源码:http://post.baidu.com/f?kz=12692827

◆C语言中不定参数的实现http://post.baidu.com/f?kz=19232306

◆一个有关 FreeBSD 的网站:http://post.baidu.com/f?kz=14828500

◆c51系列仿真器:http://post.baidu.com/f?kz=14332652

◆brainf*ck 语言的解释器http://post.baidu.com/f?kz=15998145

◆怎样用c写游戏:http://post.baidu.com/f?kz=5417859

◆本吧游戏编程相关:http://post.baidu.com/f?kz=11867577

◆简单的病毒程序:http://post.baidu.com/f?kz=5558054

◆迷宫游戏:http://post.baidu.com/f?kz=5781985

◆QQ好友管理程序:http://post.baidu.com/f?kz=5071518

◆销售监控程序:http://post.baidu.com/f?kz=6352894

◆简单的仓储管理系统:http://post.baidu.com/f?kz=7316990

◆简单的电话储存系统:http://post.baidu.com/f?kz=7257980

◆模拟电子时钟的程序:http://post.baidu.com/f?kz=7519467

◆计算任意一天是星期几:http://post.baidu.com/f?kz=8329211

◆打印任意月份日历:http://post.baidu.com/f?kz=8880741

◆分类记事本:http://post.baidu.com/f?kz=8154266

◆TC2编程图片处理利器:http://post.baidu.com/f?kz=11163580

◆printf写的游戏:http://post.baidu.com/f?kz=11162185

◆人机对战扑克游戏:http://post.baidu.com/f?kz=11366672

◆俄罗斯方块:http://post.baidu.com/f?kz=12145169

◆俄罗斯方块:http://post.baidu.com/f?kz=16028030

◆文本加密例程:http://post.baidu.com/f?kz=11968123

◆给一行文字设置密码加解密:http://post.baidu.com/f?kz=20205053

◆破解BIOS密码:http://post.baidu.com/f?kz=12230804

◆贪吃蛇1代:http://post.baidu.com/f?kz=30512251

◆完整的贪吃蛇游戏:http://post.baidu.com/f?kz=31119717

◆贪吃蛇:http://post.baidu.com/f?kz=19624003

◆学生成绩系统(C++版) http://post.baidu.com/f?kz=6640660

◆图书馆管理系统http://post.baidu.com/f?kz=22241061

◆图书管理系统http://post.baidu.com/f?kz=17682927

◆万年历http://post.baidu.com/f?kz=17197492

◆判断闰年http://post.baidu.com/f?kz=16137615

◆万年历http://post.baidu.com/f?kz=20493202

◆变化的同心圆http://post.baidu.com/f?kz=18056765

◆通讯录 http://post.baidu.com/f?kz=22775724

◆C语言通讯录(数组):http://post.baidu.com/f?kz=37202204

◆飞机票订购系统http://post.baidu.com/f?kz=21296518

◆又一个计算器:http://post.baidu.com/f?kz=24283347

◆一个级数:http://post.baidu.com/f?kz=16708781

◆四则运算计算器http://post.baidu.com/f?kz=22279483

◆二叉树排序树上实现学生信息管理http://post.baidu.com/f?kz=21436251

◆判断回文字符串:http://post.baidu.com/f?kz=21815959

◆教小学生算术:http://post.baidu.com/f?kz=22322599

◆六籽弹小游戏http://post.baidu.com/f?kz=17637684

◆黑白棋:http://post.baidu.com/f?kz=19624178

◆十个学生的成绩统计:http://post.baidu.com/f?kz=14787745

◆某一天是这一年的第几天:http://post.baidu.com/f?kz=13772082

◆局域网聊天的程序:http://post.baidu.com/f?kz=14413292

◆C编写简单的窗口界面:http://post.baidu.com/f?kz=3388604

◆哈希表实例:http://post.baidu.com/f?kz=13350908

◆随机生成的迷宫游戏:http://post.baidu.com/f?kz=11120413

◆炸弹超人游戏c语言简版:http://post.baidu.com/f?kz=37461531

◆用栈实现的迷宫寻径演示:http://post.baidu.com/f?kz=38578844

◆计算电脑开机时间:http://post.baidu.com/f?kz=38506368

◆C++编一个成绩管理课件:http://post.baidu.com/f?kz=3889433

◆一圈人报数问题问题:http://post.baidu.com/f?kz=3833415

◆又一报数出圈http://post.baidu.com/f?kz=17789700

◆约瑟夫环循环链表 http://post.baidu.com/f?kz=13750140

◆用c编一个分数计算器程序 :http://post.baidu.com/f?kz=3831746

◆命令行计算器:http://post.baidu.com/f?kz=8465088

◆乘法表:http://post.baidu.com/f?kz=11267637

◆学生管理系统:http://post.baidu.com/f?kz=5806073

◆学生成绩管理系统:http://post.baidu.com/f?kz=37076140

◆学生成绩管理系统:http://post.baidu.com/f?kz=5972675

◆学生成绩管理程序(链表):http://post.baidu.com/f?kz=6598859

◆统计学生成绩(8pm版)http://post.baidu.com/f?kz=14787745

◆打印九九表:http://post.baidu.com/f?kz=6059385

◆水仙花数问题:http://post.baidu.com/f?kz=11510377

◆打印2004年日历:http://post.baidu.com/f?kz=6469868

◆八皇后问题:http://post.baidu.com/f?kz=4456709

◆八皇后问题(do熊版):http://post.baidu.com/f?kz=8513222

◆汉诺塔问题:http://post.baidu.com/f?kz=7402377

◆统计不同字符个数:http://post.baidu.com/f?kz=7394163

◆统计单词数行数:http://post.baidu.com/f?kz=8211273

◆查找替换字符串并统计次数:http://post.baidu.com/f?kz=7335032

◆杨辉三角:http://post.baidu.com/f?kz=9299150

◆屏幕中间输出杨辉三角http://post.baidu.com/f?kz=12054232

◆矩阵转置:http://post.baidu.com/f?kz=9882271

◆输出用*组成的三角形:http://post.baidu.com/f?kz=8465901

◆输出一个菱形:http://post.baidu.com/f?kz=11879706

◆输出菱形http://post.baidu.com/f?kz=16465168

◆手把手教你写猜数游戏:http://post.baidu.com/f?kz=11205156

◆abort函数简介:http://post.baidu.com/f?kz=8610596

◆getchar与putchar:http://post.baidu.com/f?kz=7820387

◆scanf 讨论:http://post.baidu.com/f?kz=5305522

◆C语言输入输出讨论:http://post.baidu.com/f?kz=7586045

◆时间函数clock():http://post.baidu.com/f?kz=7867779

◆在规定时段自动关机:http://post.baidu.com/f?kz=7132544

◆getch防止程序运行一闪而过:http://post.baidu.com/f?kz=7360819

◆MALLOC FREE问题:http://post.baidu.com/f?kz=4826280

◆一个连接两个字符串的函数:http://post.baidu.com/f?kz=7958354

◆同一行回显输入字符:http://post.baidu.com/f?kz=5272169

◆整点报时问题:http://post.baidu.com/f?kz=7307517

◆c语言中随机数字应用: http://post.baidu.com/f?kz=3065339

◆怎样获取文件大小:http://post.baidu.com/f?kz=4189689

◆程序得到自已的当前名称:http://post.baidu.com/f?kz=5993842

◆怎么使用清屏:http://post.baidu.com/f?kz=6087210

◆sound()函数为何没有声音:http://post.baidu.com/f?kz=30844221

◆自写trim函数:http://post.baidu.com/f?kz=14226973

◆bioskey(1)的问题:http://post.baidu.com/f?kz=14651579

http://post.baidu.com/f?kz=14536875

◆bioskey这个函数怎么用:http://post.baidu.com/f?kz=15272841

◆CHAR*转为LONG:http://post.baidu.com/f?kz=15054773

◆LONG毫秒转为CHAR*分秒的函数:http://post.baidu.com/f?kz=15140414

◆狐狸找兔子:http://post.baidu.com/f?kz=8729392

◆猴子吃桃:http://post.baidu.com/f?kz=8448705

◆猜数游戏: http://post.baidu.com/f?kz=4215306

◆二分法解方程:http://post.baidu.com/f?kz=7663955

◆同余在数值计算中的应用:http://post.baidu.com/f?kz=6924343

◆多项式相乘:http://post.baidu.com/f?kz=7441950

◆韩信点兵:http://post.baidu.com/f?kz=8203887

◆用C编写的四叶玫瑰曲线:http://post.baidu.com/f?kz=7853365

四叶玫瑰曲线的旋转动画:http://post.baidu.com/f?kz=18656216

◆求n个数的最大公约数:http://post.baidu.com/f?kz=6848849

◆寻找完数:http://post.baidu.com/f?kz=11892209

◆蛇形矩阵算法:http://post.baidu.com/f?kz=12433353

◆圆周率计算:http://post.baidu.com/f?kz=12394522

◆小球称重:http://post.baidu.com/f?kz=12648561

◆整数分解:http://post.baidu.com/f?kz=12582169

◆整数的立方=两整数的平方差:http://post.baidu.com/f?kz=15121585

◆阶乘级数:http://post.baidu.com/f?kz=14601711

◆三点坐标求三角形面积:http://post.baidu.com/f?kz=14679236

◆多项式相乘http://post.baidu.com/f?kz=17157736

◆求pi的怪异程式:http://post.baidu.com/f?kz=14832207

◆歌德巴赫猜想:http://post.baidu.com/f?kz=20011131

◆求最大公约数和最小公倍数http://post.baidu.com/f?kz=15965236

◆3个正整数的最小公倍数http://post.baidu.com/f?kz=17747110

◆求阶乘:http://post.baidu.com/f?kz=19314067

◆输出三数最大值:http://post.baidu.com/f?kz=19023855

◆10000以内的阶乘(do熊版)http://post.baidu.com/f?kz=16446002

◆算法:整数划分问题http://post.baidu.com/f?kz=12582169

◆辗转法求2个数最大公约数http://post.baidu.com/f?kz=16965299

◆算24:http://post.baidu.com/f?kz=17336190

◆100元买100只鸡:http://post.baidu.com/f?kz=14920285

◆COS X曲线http://post.baidu.com/f?kz=16633244

◆矩阵的加减乘运算演示:http://post.baidu.com/f?kz=37953154

◆狐狸找兔子:http://post.baidu.com/f?kz=8729392

◆猴子吃桃:http://post.baidu.com/f?kz=8448705

◆猜数游戏: http://post.baidu.com/f?kz=4215306

◆二分法解方程:http://post.baidu.com/f?kz=7663955

◆同余在数值计算中的应用:http://post.baidu.com/f?kz=6924343

◆多项式相乘:http://post.baidu.com/f?kz=7441950

◆韩信点兵:http://post.baidu.com/f?kz=8203887

◆用C编写的四叶玫瑰曲线:http://post.baidu.com/f?kz=7853365

四叶玫瑰曲线的旋转动画:http://post.baidu.com/f?kz=18656216

◆求n个数的最大公约数:http://post.baidu.com/f?kz=6848849

◆寻找完数:http://post.baidu.com/f?kz=11892209

◆蛇形矩阵算法:http://post.baidu.com/f?kz=12433353

◆圆周率计算:http://post.baidu.com/f?kz=12394522

◆小球称重:http://post.baidu.com/f?kz=12648561

◆整数分解:http://post.baidu.com/f?kz=12582169

◆整数的立方=两整数的平方差:http://post.baidu.com/f?kz=15121585

◆阶乘级数:http://post.baidu.com/f?kz=14601711

◆三点坐标求三角形面积:http://post.baidu.com/f?kz=14679236

◆多项式相乘http://post.baidu.com/f?kz=17157736

◆求pi的怪异程式:http://post.baidu.com/f?kz=14832207

◆歌德巴赫猜想:http://post.baidu.com/f?kz=20011131

◆求最大公约数和最小公倍数http://post.baidu.com/f?kz=15965236

◆3个正整数的最小公倍数http://post.baidu.com/f?kz=17747110

◆求阶乘:http://post.baidu.com/f?kz=19314067

◆输出三数最大值:http://post.baidu.com/f?kz=19023855

◆10000以内的阶乘(do熊版)http://post.baidu.com/f?kz=16446002

◆算法:整数划分问题http://post.baidu.com/f?kz=12582169

◆辗转法求2个数最大公约数http://post.baidu.com/f?kz=16965299

◆算24:http://post.baidu.com/f?kz=17336190

◆100元买100只鸡:http://post.baidu.com/f?kz=14920285

◆COS X曲线http://post.baidu.com/f?kz=16633244

◆矩阵的加减乘运算演示:http://post.baidu.com/f?kz=37953154

◆@ 的读音:http://post.baidu.com/f?kz=12952426

◆“&”怎么读http://post.baidu.com/f?kz=17725981

◆gcc跨平台问题:http://post.baidu.com/f?kz=5371847

◆LL型运算(64位): http://post.baidu.com/f?kz=5248192

◆正方形动画下落(不用清屏):http://post.baidu.com/f?kz=5467099

◆大数运算的免费库libgmp:http://www.swox.com/gmp/

◆大数运算10000以内阶乘:http://post.baidu.com/f?kz=2780897

◆素数搜索算法程序:http://post.baidu.com/f?kz=6221885

◆bmp文件读写: http://post.baidu.com/f?kz=5236264

◆用C显示PCX文件:http://post.baidu.com/f?kz=6059067

◆汇编语言嵌入C 程序段:http://post.baidu.com/f?kz=4038342

◆宏替换问题: http://post.baidu.com/f?kz=5327438

◆宏定义带括号的问题:http://post.baidu.com/f?kz=10001502

◆大下标数组操作:http://post.baidu.com/f?kz=4201196

◆关于数组越界:http://post.baidu.com/f?kz=13204257

◆整数数组初始化赋值:http://post.baidu.com/f?kz=8513573

◆字符数组与字符串:http://post.baidu.com/f?kz=7608560

◆字符串数组下标问题:http://post.baidu.com/f?kz=11253296

◆数组的编译和执行的效率:http://post.baidu.com/f?kz=6243463

◆C写的隐式输入密码:http://post.baidu.com/f?kz=5438409

◆又一个隐式密码输入:http://post.baidu.com/f?kz=11321460

◆C 的文本文件行操作:http://post.baidu.com/f?kz=4303211

◆链表的数据插入:http://post.baidu.com/f?kz=5851022

◆链表的合并:http://post.baidu.com/f?kz=5790984

◆双向链表的插入和删除:http://post.baidu.com/f?kz=6352819

◆谭C例题链表插入删除操作:http://post.baidu.com/f?kz=2286853

◆进制转换的几个函数:http://post.baidu.com/f?kz=5799330

◆十进制转二进制的一种方法:http://post.baidu.com/f?kz=4201639

◆鼠标事件处理:http://post.baidu.com/f?kz=5469795

◆两个鼠标函数库:http://post.baidu.com/f?kz=6952040

◆鼠标器的程序信息:http://post.baidu.com/f?kz=2728110

◆关于鼠标程序:http://post.baidu.com/f?kz=12299687

◆中断号调用:http://post.baidu.com/f?kz=5469596

◆几个中断的资料:http://post.baidu.com/f?kz=7462907

◆C语言接口与实现:http://post.baidu.com/f?kz=5979383

◆C语言的串口通信:http://post.baidu.com/f?kz=8467750

◆怎样理解递归对栈的应用:http://post.baidu.com/f?kz=9882580

◆递归求组合定值:http://post.baidu.com/f?kz=5824841

◆递归求元素和:http://post.baidu.com/f?kz=6380549

◆全排列:http://post.baidu.com/f?kz=7336872

◆擂台赛--求1000000素数:http://post.baidu.com/f?kz=6221885

◆擂台赛--大数运算:http://post.baidu.com/f?kz=6279195

◆字符串编辑时光标的控制:http://post.baidu.com/f?kz=6230397

◆在指定位置输出字符:http://post.baidu.com/f?kz=12059970

◆光盘启动菜单的问题:http://post.baidu.com/f?kz=6093143

◆NOIP复赛文件名大小写问题:http://post.baidu.com/f?kz=6270393

◆程序的带参运行 http://post.baidu.com/f?kz=3545215

◆关于main 的参数:http://post.baidu.com/f?kz=7535662

◆main 函数返回值问题:http://post.baidu.com/f?kz=11161360

◆一个主函数参数问题:http://post.baidu.com/f?kz=9495695

◆函数参数中引用别名问题:http://post.baidu.com/f?kz=9299395

◆函数调用返回多个值:http://post.baidu.com/f?kz=5536004

◆函数中参数调用的问题:http://post.baidu.com/f?kz=6035295

◆函数参数按址传送的问题:http://post.baidu.com/f?kz=5558840

◆assiss谈宏定义及条件编译:http://post.baidu.com/f?kz=6193259

◆输出格式*号控制符:http://post.baidu.com/f?kz=7149608

◆输出格式的空格问题:http://post.baidu.com/f?kz=5147346

◆输出格式中#代表什么:http://post.baidu.com/f?kz=11993035

◆程序代码的上传与下载:http://post.baidu.com/f?kz=6566895

◆++i和i++的问题:http://post.baidu.com/f?kz=6712609

◆ASCII字符输出问题:http://post.baidu.com/f?kz=6771317

◆Fdisk的源程序:http://post.baidu.com/f?kz=6790551

◆正则替换:http://post.baidu.com/f?kz=6775253

◆自我保护----“程序自杀”:http://post.baidu.com/f?kz=6682850

◆编辑框问题:http://post.baidu.com/f?kz=6953560

◆西文环境下显示汉字:http://post.baidu.com/f?kz=2144548

◆读取汉字库中的汉字:http://post.baidu.com/f?kz=7359496

◆三种排序:http://post.baidu.com/f?kz=6769579

◆far 远程指针简述:http://post.baidu.com/f?kz=7742757

◆指针悬空的危险错误:http://post.baidu.com/f?kz=7130531

◆指针作参数的问题:http://post.baidu.com/f?kz=6922977

◆判断字符串是否回文: http://post.baidu.com/f?kz=7624806

◆编程中遇到的小困扰:http://post.baidu.com/f?kz=8002835

◆UNIX下面怎么编译C程序:http://post.baidu.com/f?kz=8046512

◆C如何调用其他程序:http://post.baidu.com/f?kz=8355281

◆C游戏中控制键盘:http://post.baidu.com/f?kz=4902906

◆C语言控制应用:http://post.baidu.com/f?kz=8399030

◆C项目工程(unix下)注意事项:http://post.baidu.com/f?kz=9087043

◆make file(unix下)易错地方:http://post.baidu.com/f?kz=9362741

◆补码问题:http://post.baidu.com/f?kz=11189164

◆DOS仿多线程问题:http://post.baidu.com/f?kz=11553963

◆栈的push和pop操作:http://post.baidu.com/f?kz=10820691

◆头文件如何理解:http://post.baidu.com/f?kz=7566720

◆编程解IQ测试:http://post.baidu.com/f?kz=11359491

◆逻辑破案的编程处理:http://post.baidu.com/f?kz=11283225

◆VC++中浮点数与字符串转化:http://post.baidu.com/f?kz=12061615

◆为何VC++6.0无法运行某些C程序:http://post.baidu.com/f?kz=11123696

◆逆序输出:http://post.baidu.com/f?kz=11484218

◆scanf:floating points format not linked:http://post.baidu.com/f?kz=12999839

◆c输出到打印机:http://post.baidu.com/f?kz=12482547

◆源代码-自我产生的程序:http://post.baidu.com/f?kz=14261864

◆PC 底层系统编程:http://post.baidu.com/f?kz=14071636

◆C中怎么制作函数库:http://post.baidu.com/f?kz=14190938

◆有关 FreeBSD 的网站:http://post.baidu.com/f?kz=14828500

◆一个画图程序:http://post.baidu.com/f?kz=15165712

◆算法--贪心法:http://post.baidu.com/f?kz=15321632

◆合并排序:http://post.baidu.com/f?kz=15330626

◆射击游戏:http://post.baidu.com/f?kz=15417872

◆怎样编一个螺旋数组:http://post.baidu.com/f?kz=15384659

C中怎么制作函数库:http://post.baidu.com/f?kz=14190938

10发90环有多少种可能:http://post.baidu.com/f?kz=15878635

Dev-C++4.9.9.2下载&使用教程:http://post.baidu.com/f?kz=40893628

FinC国人开发的嵌入式编程语言:http://post.baidu.com/f?kz=41127825

C语言的通讯录:http://post.baidu.com/f?kz=41627304

炸弹超人c语言简版:http://post.baidu.com/f?kz=37461531

求因子:http://post.baidu.com/f?kz=41674487

C语言中常见错误:http://post.baidu.com/f?kz=40525835

WPS Office 2005个人版免费下载:http://post.baidu.com/f?kz=41108925

TC2使用图解:http://post.baidu.com/f?kz=40504833

posted @ 2007-12-06 21:36 MEYE 阅读(2941) | 评论 (2)编辑 收藏

[url:]http://www.yuanma.org/data/2006/1228/article_2024.htm
SkyEye是一个可以运行嵌入式操作系统的硬件仿真工具,这样就可以在没有硬件条件下来进行嵌入式系统的开发。

以下操作均在Fedora Core 1.0里通过。

Skyeye项目资源列表
http://gro.clinux.org/projects/skyeye/


文档摘要:
1、什么是SkyEye?
2、SkyEye可以做什么事情?
3、安装SkyEye
4、安装arm-elf交叉编译器
5、测试你的arm-elf-gcc编译器
6、执行你的hello程序
7、编译并运行uClinux-dist-20030909.tar.gz
8、加入网络功能
9、安装完成SkyEye后,下一步将做什么?


1、什么是SkyEye?

SkyEye 是开源软件的一个项目,SkyEye的目标是在Linux和Windows操作系统里提供一个完全的仿真环境。SkyEye仿真环境相当于一个嵌入式计算 机系统,你可以在SkyEye里运行一些嵌入式Linux操作系统,如ARMLinux,uClinux,uc/OS-II(ucos-ii)等,并能分 析和调试它们的源代码。

如果你想知道关于SkyEye和嵌入式系统更详细的信息,请访问下面的站点:
www.SkyEye.org
http://www.skyeye.org/index_cn.html

通过SkyEye能仿真下面的硬件:
CPU核心:ARM7TDMI, ARM720T, ARM9, StrongARM, XScale
CPU: Atmel AT91/X40, Cirrus CIRRUS LOGIC EP7312, Intel SA1100/SA1110, Intel XScale PXA 250/255, CS89712, samsung 4510B, samsung 44B0(还不全)
内存: RAM, ROM, Flash
周边设备: Timer, UART, ne2k网络芯片, LCD, 触摸屏等

目前能在SkyEye上运行下面的操作系统和系统软件:
uC/OSII-2.5.x(支持网络)
uClinux(基于Linux2.4.x内核, 支持网络)
ARM Linux 2.4.x/2.6.x
lwIP on uC/OSII
基于uC/OSII, uClinux, ARM Linux的应用程序


2.SkyEye可以做什么事情?
1. 通过SkyEye可以帮助促进嵌入式系统的学习,在不需要额外硬件的情况下学习和分析uclinux操作系统和其它嵌入式操作系统,如ucosII等。
2. SkyEye可用于嵌入式系统的教学。
3. 希望通过skyeye促进操作系统的研究,如ucosII,uclinux+RTAI,uclinux2.5.x等。
4. 可以基于SkyEye进行仿真特定硬件模块的研究。
5. SkyEye可以作为嵌入式集成开发环境开发嵌入式系统(当然需要对SkyEye做大量的工作)。
注:引自陈渝《SkyEye Project FAQ》


3、安装SkyEye

http://gro.clinux.org/projects/skyeye/下载skyeye-0.7.0.tar.bz2包:

tar jxvf skyeye-v0.7.0.tar.bz2

进入解压后的skyeye目录,如果SkyEye的版本低于0.6.0,则运行下面的命令:

./configure --target=arm-elf --prefix=/usr/local --without-gtk-prefix --without-gtk-exec-prefix --disable-gtktest

如果SkyEye的版本高于0.6.0,则运行下面的命令:

./configure --target=arm-elf --prefix=/usr/local

接下来执行:

make
make install

安装完成后执行skyeye

注意:
a.如果你使用的是Mandrake Linux发行版,那么你在编译SkyEye时遇到错误,并且错误与readline, ncurse, termcap等有关,你可以试试下面的方法:

ln -s /usr/include/ncurses/termcap.h /usr/local/include/termcap.h

接着再make和make install看能否成功!
b.如果你的Linux发行版是Debian Linux,那么不要使用gcc 2.95或是gcc 3.0,请使用gcc 3.2+
c.gcc的版本要在2.96或以上
d.如果SkyEye的版本大于0.6.0,那么使用LCD仿真需要在Linux系统里安装GTK软件。


4、安装arm-elf交叉编译器

下载arm-elf-tools-20030314.sh
ftp://166.111.68.183/pub/embed/uclinux/soft/tools/arm
或到
ftp://166.111.8.229/OS/Embeded

执行:
chmod a+x arm-elf-tools-20030314.sh
然后:
./arm-elf-tools-20030314.sh

ls /usr/local/bin/

你应能看到以arm-elf开头的可执行文件,其中arm-elf-gcc就是用来编译你目标平台的编译器的,当然还有一些小工具,后面将一一讲来。


5、测试你的arm-elf-gcc编译器

先写一个小程序hello.c
PHP代码:
#include <stdio.h>

int main(void)
{
    
int i;

    for(
i = 0; i < 6; i++){

        
printf("i = %d  ",i);

        
printf("Hello, embedded linux!\n");
    }

    return
0;
}

然后执行:

arm-elf-gcc -Wl,-elf2flt -o hello hello.c

-elf2flt参数是将elf文件格式转为flat文件格式,这个工具是在你安装交叉编译器产生的。

或者你可以写个Makefile文件,执行:

make

这里是我的Makefile文件,仅供参考:
PHP代码:
# begin

CC = arm-elf-gcc

CFLAGS
= -D__PIC__ -fpic -msingle-pic-base -O2 -pipe -Wall -g
LDFLAGS
= -Wl,-elf2flt

LIBS
=
OBJS = hello.o

all
:    hello

hello
:  $(OBJS)
        $(
CC) $(CFLAGS) $(LDFLAGS) -o hello $(OBJS) $(LIBS)

clean:
        
rm -rf *.o *.elf *.gdb hello

# end

如果编译通过,就会产生hello可执行文件。用下面的命令:

file hello

你会发现,它是BFLT(binary FLAT),你目标平台所支持的文件格式。


6、执行你的hello程序

这里,我们将借助genromfs这个小工具来完成测试,这个工具就是你在安装交叉编译器时产生的,你可以直接使用它。

http://gro.clinux.org/projects/skye...0.4.tar.bz2包:

tar jxvf skyeye-binary-testutils-1.0.4.tar.bz2

cd testsuits/at91/uclinux2(当然你还可以用别的)

mkdir romfs(建一个目录,后面用)

mount -o loop boot.rom /mnt/xxx

cp -r /mnt/xxx/* romfs

另外,把你编译好的可执行程序拷贝到/romfs/bin目录里,这里就是hello了!

genromfs -f boot.rom -d romfs/

注:可以用genromf -h来获得帮助!

OK!执行下面的命令:

skyeye linux

(skyeye)target sim

(skyeye)load

(skyeye)run

kernel start.....

很熟悉了吧。。。

cd /bin

hello

可以看到结果了吗?

其实到了这一步,你就可以开发自己的程序了!


7、编译并运行uClinux-dist-20030909.tar.gz

ftp://166.111.68.183/pub/embed/uclinux/soft/
或到ftp://166.111.8.229/OS/Embeded/uclinux/pub/uClinux/dist下载
uClinux-dist-20030909.tar.gz

假设把它下载到/usr/src/目录下,然后依次执行下面的命令:

tar zxvf uClinux-dist-20030909.tar.gz
cd uClinux-dist/

在图形方式下可用命令make xconfig

在命令行方式下用命令make menuconfig

vendor/product中选择GDB/ARMulator
kernel版本选择2.4
然后save and exit

运行下面这两条命:
make dep
make

此时在/usr/src/uClinux-dist/linux-2.4.x目录下会生成可执行文件linux
在/usr/src/uClinux-dist/images/会生成romfs.img等文件

在uClinux-dist目录下建立仿真AT91的skyeye配置文件skyeye.conf,内容如下:
cpu: arm7tdmi
mach: at91
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000
mem_bank: map=M, type=RW, addr=0x01000000, size=0x00400000
mem_bank: map=M, type=R, addr=0x01400000, size=0x00400000, file=images/romfs.img
mem_bank: map=M, type=RW, addr=0x02000000, size=0x00400000
mem_bank: map=M, type=RW, addr=0x02400000, size=0x00008000
mem_bank: map=M, type=RW, addr=0x04000000, size=0x00400000
mem_bank: map=I, type=RW, addr=0xf0000000, size=0x10000000


这个时候就可以用skyeye来调试运行kernel了,在/usr/src/uClinux-dist执行如下命令:

skyeye linux-2.4.x/linux

(skyeye)target sim

(skyeye)load

(skyeye)run

kernel start.....

注意:
要在skyeye.conf所在目录下执行skyeye linux-2.4.x/linux


8、加入网络功能
a.用root用户进行操作。
b.你要看你的/lib/modules/'uname -r'/kernel/drivers/net/目录里有没有tun.o
如果没有的话你就需要编译你的linux内核来获得tun.o了。
c.(1)运行tun设备模块:

#insmod /lib/modules/'uname -r'/kernel/drivers/net/tun.o

如果你没有该设备,那你就要用下面的命令来创建它:

#mkdir /dev/net
#mknod /dev/net/tun c 10 200

(2)运行vnet(虚拟集线器)设备模块(这一步不是必需的):
获取vnet的源码,然后创建设备:

#mknod /dev/net/vnet c 10 201
#chmod 666 /dev/net/vnet

创建vnet.o
#make vnet.o

插入模块vnet.o
#insmod vnet.o

进入test目录,用test来测度vnet.o
#cd test
#make
#./testvnet1

d.配置skyeye.conf文件

cpu: arm7tdmi
mach: at91
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000
mem_bank: map=M, type=RW, addr=0x01000000, size=0x00400000
mem_bank: map=M, type=R, addr=0x01400000, size=0x00400000, file=images/romfs.img
mem_bank: map=M, type=RW, addr=0x02000000, size=0x00400000
mem_bank: map=M, type=RW, addr=0x02400000, size=0x00008000
mem_bank: map=M, type=RW, addr=0x04000000, size=0x00400000
mem_bank: map=I, type=RW, addr=0xf0000000, size=0x10000000
# format: state=on/off mac=xx:xx:xx:xx:xx:xx ethmod=tuntap/vnet hostip=dd.dd.dd.dd
net: state=on, mac=0:4:3:2:1:f, ethmod=tun, hostip=10.0.0.1


下面将对上面的一些参数作下说明:
state=on/off意思是仿真的NIC(网络接口板)是有线的还是无线的;
mac=仿真适配器的MAC地址;
ethmod=tuntap/vnet在主机环境里使用的虚拟设备;
hostip=意思是主机环境与keyeye交互用的IP
格式: state=on/off mac=xx:xx:xx:xx:xx:xx ethmod=tuntap/vnet hostip=dd.dd.dd.dd

For example:
#set nic info state=on/off mac=xx:xx:xx:xx:xx:xx ethmod=tuntap/vnet hostip=dd.dd.dd.dd
net: state=on, mac=0:4:3:2:1:f, ethmod=tun, hostip=10.0.0.1

net: state=on, mac=0:4:3:2:1:f, ethmod=vnet, hostip=10.0.0.1

注意:
如果你想在同一时刻运行两个或更多的skyeye,那么请为每一个skyeye使用不同的skyeye.conf

e.运行skyeye linux-2.4.x/linux

9、安装完成SkyEye后,下一步将做什么?

1、 对于嵌入式操作系统的初学者和入门者和入门的学生而言,他们可以先看一些有关操作系统和嵌入式操作系统方面的教材和书籍,如与uC/OS、Minix、 uClinux、Linux相关的书籍等。然后可以在Skyeye上开发一些简单的应用程序例子(如进程间通信、进程优先级、死锁情况、网络应用等),对 某些操作系统功能(如进程调度、内存管理、网络子系统、文件子系统等)进行简单的修改和扩展,并通过Skyeye进行运行和调试,看看会发生什么情况。

2、 对于有一定经验的软件工程师而言,在SkyEye上完成一定的应用系统原型开发是值得一做的事情。比如移植或开发一个文件子系统或网络子系统到一个特定的 操作系统中,相信比在一个真实的开发板上开发要容易一些。在Skyeye上进行一些操作系统的移植和开发(如移植RTLinux、RTAI等其它操作系统 到Skyeye上)也是很有挑战性的工作。

3、对于硬件工程师而言,对Skyeye进行扩充,设计新的硬件仿真(如USB、IDE硬盘等)使得Skyeye的硬件仿真功能更加强大,支持更多功能的软件,是很有意义的事情。

参考:
SkyEye项目站点里的一篇中文文档;
陈渝《SkyEye Project FAQ》;
skyeye-0.7.0中的README文档。

后记:
为了让大家能快速上手,进行实际的开发工作,我赶凑了一篇文档,很粗糙。但我坚信随着更多的有经验的人的加入;随着我们自己水平的提高,一定会出现更多、更好的文章来。就让我们快点行动起来吧!

最后,我再次建议大家看一下《嵌入式Linux技术与应用》这本书。

可以到http://www.skyeye.org/document.htm或是
ftp://166.111.68.183/pub/embed/skyeye/document/或是
http://www.huihoo.org/mirrors/skyeye/
下载文档,可以获得更多有关skyeye和嵌入式Linux开发的知识和经验。

posted @ 2007-12-06 20:09 MEYE 阅读(628) | 评论 (0)编辑 收藏

01) shell编程入门及脚本测试
02) shell脚本欣赏区
03) TCSH shell编程入门
04) Bash命令行处理[详解]
05) shell命令基础
06) Linux命令大集合
07) sed/awk与unix命令等价代码欣赏
08) 如何将数字转换为大写数字?
09) 出道算术题考考你?
10) 考考你?[关于数组]
11) 如何横排变竖排?
12) 关于屏幕定位显示
13) 如果确定某个特定字符在一个字串中的位置
14) 如何用shell产生随机数组
15) 如何处理键盘输入超时
16) 1到999999999的阵列,如何用shell实现?
17) 用dd命令去备份文件指定的部分
18) 一个自动解压缩rar的脚本
19) UNIXshell/LINUXshell--实例精解源代码
20) 常用的关机和重新启动命令
21) GNU 文本实用程序教程
22) 关于array中的变量替换? [分享]
23) 在bash下实现双窗口或多窗口的方法
24) awk引用变量的问题
25) awk命令实用详解
26) RPM常用命令及RPM中文手册
27) [精彩讨论]sed/awk的新问题
28) 优先级[nice/renice实例]
29) 制作像 nvidia驱动包 那样的可执行安装包
30) Shell的命令行编辑[vi&emacs命令行技巧征集]
31) 如何把一个命令的输出放进多个管道里去,并让那些管道命令并行化
32) 有什么好办法在解压缩过程中同时获取压缩包的内容目录结构的顶层目录呢?
33) Linux Shell简介(入门)
34) BASH最常见的激活模式
35) 论坛是否有expect的技术介绍[附:Expect中文教程]
36) 变态vi问答
37) 如何产生一个随机的字母和一个一位的数字?[已解决]
38) shell编程中${ }的用法[转]
39) 适用于ADSL的连接脚本。
40) 文本模式下手动画表格的脚本
41) grep,sed,awk命令实例大练习[大力推荐]
42) 一个小脚本,帮助你清除无用的rpm包(zt)
43) 关于网络流量统计
44) bash_profile和.bashrc有什么区别?[附:几个bash配置文件的说明]
45) 一个连网的实用脚本
46) ADSL上网脚本
47) slackware添加用户adduser脚本欣赏
48) Gawk手册
49) latex2pdf的脚本
50) BASH中字符串的处理[转]


51) 这个脚本怎么写?[about find&xargs]
52) ulimit使用方法
53) 几个shell自动化脚本
54) 判断XDSL上网方式的用户的网络工作情况的脚本
55) 自动ftp脚本[附录ftp命令大全]
56) 关于zero及NULL设备的讨论
57) 硬连接和软连接的区别的讨论[附:ln中文文档]
58) 将某一目录下以main开头的100个文件的文件名分别改为main1到main100
59) 搜索一首歌并调用XMMS播放的脚本
60) 关于如何设定控制台的彩色显示?
61) 我用DF命令后看到这样的信息是咋回事[附:各种文件系统介绍]
62) Linux [系统管理命令中文详解][转]
63) bash脚本调试器
64) 使用 /proc 文件系统来控制系统[转贴]
65) 如何在shell中将unix时间戳转换为系统时间
66) "2>&1" 是什么意思?[重定向问题合并]
67) 拿到一个好的五笔98码表+awk一例[合并]
68) rh9自动运行X程序的方法
69) MOUNT命令中各个参数的含义
70) 如何从HTML文件中提取charset
71) BASH shell set命令详解
72) VI高级命令集锦及VIM应用实例
73) Linux/UNIX命令dd简介
74) 怎么让cp显示拷贝的进度或者速度?
75) 如何将一个输出中的若干行分别赋值给变量?
76) 修改了一下startx,用于窗口管理器的选择
77) 我想把下面的人名改成第一个字母大字,其它小写
78) 系统备份用的脚本
79) [转贴]编译APACHE+PHP+MYSQL的一个脚本
80) shell脚本是否可编译成二进制文件????<讨论>
81) 如何阻止非root用户再shell下用Ctrl+Alt+Delete重启电脑
82) tr的使用方法[转贴]
83) 设置终端--stty使用方法[转贴]
84) BASH-HOWTO文档
85) 解读startx
86) 写了一个显示目录树的脚本,可输出不对
87) 如何開一term ?K在里头顯某個文件的內容??
88) 如何在脚本中应用dialog命令<欢迎讨论>
89)
90) find和xargs使用详解[转自《shell编程和unix命令》]
91) Redhat8 下脚本的一些问题
92) 删除文件跟恢复文件系列。
93) 防止误删文件的脚本
94) 熟练运用命令所必须的<正则表达式语法>
95) linux shell trap信号表
96) shell入门基础必备
97) 如何快速把带有大写字母的文件名改为全部小写?
98) Unix Shell 介绍 (author:S. R. Bourne)
99) 技巧:提示行魔术
100) 禁止用户登录脚本


101) 一个自动挂载dos分区的脚本
101) bash快捷键盘使用心得,非转载~~~
102) 几个可以加在SHELL配置脚本里面的小函数
103) 如何用bash提取网卡ip地址?
104) shell技巧交流区
105) 适合初学练习的一组小脚本
106) Linux 终端的彩色显示
107) 一个自动解压缩rar的脚本
108) 一道算术题
109) 如何把一个文件倒着读出来?
110) source命令的一个妙用
111) 压缩-分段-备份的实现
112) 设置命令提示符下的热键[转]
113) BASH教学实例
114) 用sed/awk合并两行
115) stty中文手册
116) VIM速查手册
117) VIMset选项详解
118) 自动mount各类分区的脚本
119) shell十三问(简体版PDF)
120) dialog中文man手册
121) 怎样得到终端的参数如长宽行数?
122) 判断一个数是否2的幂[讨论awk的扩展用途]
123) tr:超级工具:为数据做外科手术(dd, head, tail...)
124) 服务器诊所: Expect 超出预期
125) 再来一个tree脚本(原创)
126) 几种shell里的小括号,大括号结构和有括号的变量,命令的用法
127) bash中字符串的处理(参阅CU一贴后重整理)
128) Linux与unix shell编程学习体会(根据书和其他帖子整理)
129) 管理脚本语言
130)***sed新手使用进阶全功略!***
131) Linux解释器原理
132) RE,grep,sed,awk论坛题目总结!(不断整理中......)
待续...


posted @ 2007-12-05 21:43 MEYE 阅读(753) | 评论 (0)编辑 收藏
嵌入式系统设计的新发展及其挑战

摘要:综述嵌入式系统设计的最新发展情况;论述当前嵌入式系统设计技术发展的特点;从嵌入式系统设计开发的复杂度,开发形式、手段和工具,开发平台和开发语言等方面嵌入式系统设计发生的各种变化,并提出应对这些变化的各种挑战。  
       关键字:嵌入式系统;设计技术;SoC
1 嵌入式系统设计技术发展的特点
随着微电子技术的飞速发展,CPU已经变成低成本器件。在可能的情况下,各种机电设备已经或者正在嵌入CPU构成的嵌入式系统。据Virginia Tech公司报告,嵌入式系统中所使用的CPU数量已经超过通用PC中CPU数量的30倍。
现在系统研究的重点已从通用系统转向专用系统,以及从一般性能转向可靠性、可用性、安全性、自主性、可扩展性、功能性、灵活性、成本、体积、功耗及可管理性上。
1.1 32位嵌入式处理器比例快速升高
InStat/MDR曾预测在2001~2006年期间,32位向控制器(MCU)的复合年增长率可达22.6%。而全球32位MCU市场在2003年的增长幅度实际已走过30%,在2004年预计将达到38%。增长的驱动因素主要有两个方面。
一方面因为像数码相机、MP3播放机、PDA、游戏机和移动电话手机等手持设备以及各种信息家电等有更高性能要求的多媒体和通信设备的推出。在这些应 用中,庞大的多媒体数据必然需要更大的存储空间,目前许多32位微控制器都可以使用SDRAM,因此可极大地降低使用更大容量数据存储器的成本;而8位微 控制器一般只能使用成本较高的SRAM作为数据在座 器。此外除了处理应用控制功能之外,需支持互联网接入的应用在MCU运行TCP/IP或其它通信协议的情况下,要求系统建立在RTOS上就必然成为一种现 实需求。另外,有越来越多的像电视机、汽车音响及电子玩具等传统应用也与时俱进地提出数字化和“硬件软化”的要求,它们对计算性能的要求及存储器容量的需 求都超出绝大多数8位微控制器能提供的范围。
另一方面由于IT技术发展的推动,32位ARM体系结构已经成为一种事实上的标准,随着高端32位CPU价格的不断下降和开发环境的成熟,促使32位 嵌入式处理器日益挤压原先由8位微控制器主导的应用空间。随着ARM处理器在全球范围的流行,32位的RISC嵌入式处理器已经开始成为高中端嵌入式应用 和设计的主流。
8位机除MCS-51外,其它的8位机和16位机都没有一种能为标准或准标准产品。32位嵌入式处理器一度被认为只适用于高端应用场合的看法正在改 变。有更多、更复杂特点和功能需求的便携式电子设备正促使嵌入式系统工程师考虑用32位MCU取代8/16位MCU。另外,越来越多的设计师认识到,转用 32位架构不令能提升性能,还能降低相同成本下的系统功耗和节约总成本以及缩短产品上市时间。这个转变为设计师提供了可随着产品的性能和需求不断扩展而升 级的方案。
1.2 可供选择的可编程计算部件方案增多
(1)GPP-EP-MCU-DSP-ASP/ASSP-ASIC/SoC
嵌入式系统的核心是可编程计算部件,即处理器。这可以有很多种选择,而且近几年又增加了一些新的选择:除过去常用的通用处理器GPP(Gereral Purpose Processor)、嵌入式处理器EP(Embedded Processor)、微控制器MCU(Micro-Control Unit)、数字信号处理器DSP(Digital Signal Processor)外,目前发展很快、可以给我们提供新的选择的还有各种专用处理器ASP(Application Specific Processor)或专用标准产品ASSP(Application Specific Standard Product)。它们都是针对一些特定应用而设计的,如用于HDTV、ADSL、Cable Modem等的专用处理器。与MCU相比,ASP/ASSP集成的资源可能比一般MCU更多、更专业化,所以ASP的价格要高于MCU;但因为它的应用在 相关领域中又是通用、标准和开放的,所以任一个公司都能应用它构成自己的系统或产品,而不存在侵犯知识产权的问题。另一种有知识产权保护的在应用上较封闭 的专用集成电路ASIC(Application Specific IC)类的定制片上系统SoC(System on Chip)的投入成本就要比ASP高得多。但这可以根据设计人员的要求来构建定制SoC,这样就可为设计人员提供满足量体载衣式应用需求的灵活性。SoC 技术使嵌入式系统应用发生了革命性的变化,这个变化就是嵌入式系统的设计技术,已从选择厂家提供的标准产品时代进入了用户具有个性的自行开发设计器件的时 代。
(2)PsoC/SoPC/CsoC
采用定制SoC有两大缺点:一是高昂的一次性工程费用(NRE);二是从产品概念到生产阶段需要很长的前置开发时间。目前的一个发展趋势是以FPGA 为代表的现场可编程技术在迅速崛起。这是由于市场对通用可配置处理器的呼声越来越高,传统的MCU在市场需求中显得越来越力不从心。可配置、可扩展处理器 逐渐浮出水面。利用半定制器件可以构成基本FPGA的硬核处理器或基于FPGA的软核处理器。并由此可编程片上系统(PsoC或SOPC)应运而生。这是 一种面向消费电子、工业、办公自动化、电信和汽车应用中的嵌入式控制功能而开发的高性能、现场可编程、混合信号阵列。它集MCU和FPGA/CPLD的优 点于一身,实现可配置SoC,既适应了设计人员对系统部件集成的需要,又能实现可配置需求的灵活性。从而为许多现实应用提供一种平衡解决方案。
不同的厂家依据自己本来的优势,从两个不同方向异途同归地实现这种“可配置”性。一种是FPGA厂商在现有的FPGA架构中加入微处理器核与其它IP 功能模块,使其兼备功能性和灵活性。例如,Altera公司为嵌入式应用先后推出的Nios和Nios II软核嵌入式处理器,就是一种可特许的通用RISC CPU。它可与各种各样的外围接口、用户自定义指令和硬件加速单元相组合,构成一个定制的可编程片上系统(SoPC),并能够根据需要选择配置。 Xilinx也同样推出一个类似的32位哈佛结构的MicroBlaze软核嵌入式处理器。而另一种是微处理器厂家从微处理器出发,再加入可编程逻辑模 块。例如Triscend公司推出一种波称为是CsoC(Configurable SoC)的技术,是在一个以ARM架构微处理器核为核心的SoC中嵌放工可编程逻辑模块,构成可配置的SoC平台。
1.3 微控制器的发展特点
尽管由于市场对多功能产品需求的增加和IT技术的推动,使32位MCU产品日益成为市场的热点;但目的8位MCU仍然是技术市场的主流,并且还有相当 广阔的应用空间和旺盛的生命力,16位MCU也占有一定的市场份额。各种MCU根据自己在市场上的定位,也都有了很大发展,MCU总的发展具有以下一些特 点。
(1)微控制器SoC化
微控制器(MCU)已可集成越来越多的内置部件。常用的部件有存储器类,包括程序存储器 MROM/OTPROM/EPROM/EEPROM/Flash和数据存储器SRAM/SDRAM/SSRAM;有串行接口类,包括UART、SPI、 I2C、CAN、IR、Ethernet、HDLC;有并行接口类,包括Centronics、PCI、IDE、GPIO等;有定时和时钟类,包括 Timer/Counter、RTC、Watchdog、Clock out;有专用和外围接口类,包括Comparer(比较器)、ADC、DAC、LCD控制器、DMA、PWM、PLL、MAC、温度传感器等  
。甚至有的MCU,例如NS公司的MCU,已把语音、图像部件也集成到单片机中,目的就是在单个器件中集成所有所需要用到的部件,构成片上系统 (SoC)。由于Cygnal公司推出的C8051F系列的MCU在一个芯片中集成了构成数据采集系统或控制系统所需要的几乎所有的数字和模拟外围接口和 功能部件,所以这种混合信号芯片被其称作SoC。  
(2)多核结构处理器
随着嵌入式应用的深入,特别是在数字通信和网络中的应用,对处理器提出了更高的要求。为适应这种情况,现在已出现多核结构的处理器。
Motorola公司研发的MPC8260 PowerQUICC II就是是一种先进的为电信和网络市场而设计的集成通信微处理器。它融合了两个CPU——嵌入式PowerPC内核和通信处理模块(CPM)。由于CPM 分担了嵌入式PowerPC核的外围工作任务,这种双处理器体系结构功耗反而要低于传统体系结构的处理器。
Infineon公司推出的TC10GP和增强型TC1130都是三核(TriCore)结构的微处理器。它同时具备RISC、CISC和DSP功 能,是一种建立在SoC概念上的结构。这种单处机由三个核组成:微控制器和DSP核、数据和程序存储器核、外围专用集成电路(ASIC)。这种单片机的最 大特点是把DSP和微控制器愈合成一个单内核,大大提高了微控制器的功能。具有类似结构的还有Hitachi公司的SH7410、SH7612等。它们用 于既需要MCU又需要DSP功能的场合,比使用单独MCU和DSP的组合提供了更优势的性能。
(3)更低功耗
现在新推出的MCU的功耗越来越小,很多MCU都有多种工作方式,包括等待、暂停、休眠、空闲、节电等工作方式。例如Philips的 P87LPC762,空闲状态下的电流为1.5mA,而在节电方式下电流只有0.5mA。很多MCU还允许在低振荡频率下以极低的功耗工作。例如, P87LPC764在32.768kHz低频下,正常工作电流仅为Idd=16μA(VDD=3.6V),空闲模式下Idd=7μA(VDD= 3.6V)。
(4)更宽工作电压范围
扩大电源电压范围以及在较低电压下仍然能工作是现在新推出的MCU的一个特点。目前一般MCU都可以在3.3~5.5V的范围内工作,有些产品则可以 在2.2~6V的范围内工作。例如,Fujitsu的MB8919X、MB8912X和MB89130系列以及F2MC-8L系列MCU,绝大多数工作电 压范围都为2.2~6V;而TI的MSP430X11X系列的工作电压可以低达2.2V。Motorola针对长时间处在待机模式的装置所设计的超省电 HCS08系列MCU,已经把可工作的最低电压降到了1.8V。
(5)更先进的工艺和更小的封装
现在MCU的封装水平已大大提高,有越来越多的MCU采用了各种帖片封装形式,以满足便携式手持设备的需要。Microchip公司推出了目前世界上 体积最小的6引脚PIC10F2XX系列MCU。为了适应各种应用的需要,减少驱动电路,很多MCU的输出能力都有了很大提高,Motorola MCU的I/O口灌电流可达8mA以上,而Microchip的MCU可达20~25mA,其它如AMD、Fujitsu、NEC、Infineon、 Hitachi、Toshiba等都在8~20mA之间。
(6)低噪声布线技术
在过去一般MCU中,电源与地引脚是安排在芯片封装的对角上,即左上、右下或右上、左下位置上。这种安排会使电源噪声对MCU的内部电路造成相对最大 干扰。现在很多MCU都把电源和地引脚安排在两个相邻的引脚上。这样既降低了干扰,还便于在印制电路板上对去耦电容器进行布线,降低系统的噪声。
2 嵌入式系统设计的新挑战
要求更高的应用需求推动嵌入式设计正在8/16位转向功能更强大的32位MCU。这种升级给工程师带来性能空间和处理裕度提升的同时也带来了严峻的挑 战,提出了一系列前所未有的全新问题。首先,要对开发工具和软件进行新的投资,并对设计流程进行重新定义;另外,要对原软件能多大程度地用于新架构、要把 已有软件移植到32位的新架构上还必须做多少工作,以及器件和开发工具的成本、存储器的种类、规模、性能和容量、可选器件的种类等进行评估。是否向32位 升级主要取决于经过综合考虑后的总的系统成本等。
2.1 发生了哪些变化
原来国内熟悉8位MCU开发的工程师大部分出身于电子工程和其他机电专业,而非计算机专业。随着嵌入式系统设计技术的发展,已经在很多方面发生了很大 的变化。在这此与传统的8位MCU的开发有着许多明显的不同:首先是开九牛二虎之力复杂度大为提高,其次开发形式、手段和工具也有了很大不同;另外系统越 来越多地是建立在RTOS平台上,使用的开发程序设计语言不再是开始效率很低的汇编语言,而越来越多地使用开发效率很高的高级语言。C语言已成为主流通用 开发语言。
(1)开发的复杂度
各种多媒体和通信手持设备、信息家电和复杂系统都需要更强大的MCU来完成复杂大数据量实时处理。例如,目前移动电话手机需要多屏显示、网页浏览、文 本信息发送、带查找功能的大容量地址簿和语音拨号等功能;最新数码相机及摄像机的高效率数据压缩、自动识别和各种智能处理等,需要增加DSP功能;电话交 换机需要分布式处理而采用多处理器结构。
(2)开发形式、手段和工具
随着开发对象复杂度的提高,硬件和软件设计比例发生了很大变化。软件开发的比重越来越大,复杂系统的设计已不可能由一个设计师包括硬件和软件,而必须 由一个团队来分工合作完成。由此也推出了开发形式、手段和工具的发展,特别是硬件/软件协同设计和验证技术、设计管理技术(如软件版本管理软件)和各种嵌 入式系统设计工具软件的发展。
过去,几乎所有4/8/16位MCU的开发都必须要有用于实时调试的专用在线仿真器(IC E),其开发过程总是先设计、制作和调试好硬件,同时进行 软件编程,在调试好硬件电路板之前,对软件最多仅能进行关于纯逻辑和计算的调试;只有在已调试好的硬件基础上,才能进行系统应用软件的调试,所有可以提供 的程序库或应用软件包都是专用的。
对于32位嵌入式处理器来说,随着时钟频率越来越高(50~400MHz以上),加上复杂的封装形式(如BGA),ICE已越来越难胜任开发工具的工 作。目前替代的基本方法是借助于JTAG接口构成JTAG调试器,直接从CPU获取调试信息而使得产品的设计简化,从而使得开发工具的价格反而要低于 ICE。
软件和硬件工程师并行工作是一种发展潮流。通过协同设计,特别是协同验证技术,软件工程师能尽早在真实硬件上测试,而硬件工程师能尽早在原形设计周期中验证他们的设计。
因为嵌入式系统的复杂性和多样性,不可能有一个包打天下的统一的完整解决方案,所以不同的EDA供应商推出了各种商用嵌入式系统设计环境。如有 Synopsys公司的Co-Centric System Studio、Cadence公司的“虚拟元件协同设计”(VCC)、CoWare公司的“CoWare N2C”等,还有世界各地的大学也为嵌入式系统设计开发出各种用于特定应用的免费工具。
(3)开发平台
能让产品可靠和迅速上市是嵌入式系统普通要求。为了提高时效,过去“一切自行设计”的模式已逐渐被“尽量采用具有IP的产品”所代替。这又推动了标准实时操作系统(RTOS)和相应的调试技术的发展。
由于32位架构的MPU/MCU的资源丰富,指令集相对庞大,而且系统软件也更加复杂,特别当系统有多任务实时保证的要求时,通常要选用一种RTOS 作为开发平台来对应用软件中的多任务进行调度。当系统需要连接Intenet网/实现图形用户界面(GUI)或文件系统(FS)时,若采用支持 TCP/IP协议栈/GUI/FS的嵌入式操作系统,可极大地降低复杂多任务系统开发的难度。
RTOS的引入解决了嵌入式软件开发标准化的难题,促进嵌入式开发软件的模块化和可移植化,为软件工程化打下基础。随着嵌入式系统中软件比重不断上 升、应用程序越来越大,这对开发人员的知识结构、应用程序接口和程序档案的组织管理等都提出了新的要求。引入RTOS相当于引入了一种新的管理模式,对于 开发单片机和开发人员都是一个飞跃。
(4)开发语言
在从8/16位MCU向32位转换时,所用软件开发语言也发生了变化。过去大部分8/16位MCU都没有太多的性能冗余,软件编写必须完全适合其有限的处理功能,因此软件开发大部分用汇编语言编写。
在8/16位MCU上采用C、PL/M等高级语言编程,再用相关编译器转换成相应机器语言执行,早在十几年前就已尝试并推广;但由于当时编译器的编译 效率还不够高,高级语言程序的额外开销相对比较大、运行效率下降,再加上8/16位MCU本身处理裕度有限,失言进度缓慢。最近几年,就8/16位MCU 而言,随着C编译器效率和MCU性能的大幅度提高,用高级语言代替汇编语言也渐成趋势,典型的MCU都推出了自己的C编译器。其中Keil C51的编译效率已达到很高水平,经过优化的用Keil C51编写的程序编译后的运行效率甚至要高于普通开发者直接用汇编语言编写的程序。
2.2 设计者面对的新挑战
(1)转变观念,需要熟悉新的开发模式
嵌入式系统应用不再是过去单一的单片机应用模式,而是越来截止多样化,这可为用户提供更多的不同层次的选择方案。嵌入式系统实现的最高形式是片上系统 SoC,而SoC的核心技术是重用和组合IP核构件。从单片机应用设计到片上系统设计及其中间的一系列的变化,从底层大包大揽的设计到利用FPGA和IP 模块进行功能组合PsoC/SOPC设计,这是一个观念的转变。学习和熟悉新的开发模式将会事半功倍地构建功能强大和性能卓越的嵌入式系统,但同时也给系 统的设计验证工作提出了许多新的挑战。
(2)进入的技术门槛提高,需要学习全新的RTOS技术
现代高端嵌入式系统都是建立在RTOS基础上的。这对于未受过计算机专业训练的各专业领域的工程技术人员来说,需要学习全新的RTOS技术,深入了解 RTOS的工作机制和系统的资源配置,掌握底层软件、系统软件和应用软件的设计和调试方式。进入的技术门槛要比所熟悉的开发方法高得多。这对于开发者来 说,也是一个新的挑战。
(3)选择适合的开发工具,熟悉新的开发环境
目前从8位升级到32位的一个最大障碍就是开发工具的投入。32位开发工具要比8位开发工具复杂得多,使用的技术门槛要高得多,同时其投资也要高得 多。进入32位系统开发的工程师不得不面对与8位系统很不相同的开发环境。如何正确选择处理器架构、评估嵌入式操作系统,以及使用陌生的开发工具,都是一 个新的挑战。
(4)熟悉硬件/软件协同设计和验证技术、设计管理技术
软/硬件并行设计是嵌入式系统设计的一项关键任务。在设计过程中的主要问题,是软硬件设计的同步与集成。这要求控制一致性与正确性,但随着技术细节不 断增加,需要消耗大量时间。目前,业界已经开发Polis、Cosyma及Chinook等多种方法和工具来支持集成式软硬件协同设计。目标是提供一种统 一的软硬件开发方法,它支持设计空间探索,并使系统功能可以跨越硬件和软件平台复用。
团队开发的最大问题就是设计管理问题。现在有越来越多的公司开始重视技术管理,利用各种技术管理软件(例如软件版本管理软件)对全过程进行监督管理。 这对每一个参与开发的人来说,似乎增加了不少麻烦,但是对整个公司的产品上市、升级、维护以及战略利益都具有长远的效益。
(5)SoC设计所面临的巨大的挑战
SoC已经开始成为新一代应用电子技术的核心,这已成为电子技术的革命标志。过去应用工程师面对的是各种ASIC电路,而现在越来越多所面对的是巨大 的IP模块库,所有设计工作都是以IP模块为基础。SoC设计技术使嵌入式系统设计工程师变成了一个面向应用的电子器件设计工程师。随着SoC应用的日益 普及,在测试程序生成、工程开发、硅片查错、量产等领域对SoC测试技术提出了越来越高的要求。掌握新的测试理念及新的测试流程、方法和技术,是对单片机 应用工程师提出的新挑战。



推荐阅读:嵌入式MPEG-4解码系统的设计与实现

ARM程序设计优化策略与技术

ARM的介绍与选择


ARM开发经典学习网站推荐


1.  EG3

关于嵌入式开发的站点,提供非常多关于嵌入式开发的资料。包括开发公司,技术文档,免费资源等等。版面包括busses & boards,embedded software,dsp,embedded systems,open source,rtos,embedded chips,system-on-a-chip 等等。

强烈推荐

http://www.eg3.com/ - 外文


2.  The First Stop for the Latest ICs and Components

非常好的关于微处理器,DSP,可以编程控制器资讯的网站,更新非常快。强烈推荐一些领导级别的人常去,了解行业动态!

http://www.eeproductcenter.com/ - 外文


3.  Programmers Heaven - Assembler programming zone

大量的源代码,分类清晰,强烈推荐。但是有很多好像已经不再更新了。

http://www.programmersheaven.com/zone5/index.htm - 外文


4.  吐血推荐的关于ARM开发的网站,收集了非常多ARM开发工具,而且是免费的。

http://www.gnuarm.com/resources.html - 外文


5.  ARM的中文网站,官方网站

http://www.arm.com/chinese/ - 中文


6.  美国Cornell University课程ECE476所完成的项目。

这些项目都具有详细学习资料。共有200多个项目,看看这些东西,就能感觉国内与国外教学实践的差别。我们国家很多高校的电子相关专业的设计就是搞个键 盘,搞个MAX7219显示,搞个DS1302时钟,'一百年不变'。看了它是我记得很不舒服。大家好好研究研究吧。特别是老师们,一定要深思。

一毛

http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/ - 外文


7.  Build Your Own Microcontroller Projects

This page provides schematic and software for hobbyists to practice "learn by doing", build a simple microcontroller projects at home. For those who would like to contribute projects, please prepare HTML files whatever you like to see but keep all files small and informative. I shall provide for others. DIY的好地方,强烈推荐.

http://www.kmitl.ac.th/~kswichit/ - 外文


8.  LPC2000 Tools from the LPC2000 Yahoo! Group 推荐

http://www.gnuarm.com/~lpc2000/body.html - 外文


9.  GNU ARM? toolchain for Cygwin, Linux and MacOS .推荐

这里是它的实用资源 http://www.gnuarm.com/resources.html

讨论组 http://groups.yahoo.com/group/gnuarm/

文件下载 http://www.gnuarm.com/files.html

http://www.gnuarm.com/ - 外文


10.  ARMuC Wiki.大量的开发资料,强烈推荐

http://www.open-research.org.uk/ARMuC/ - 外文


11.  来自www.mikrocontroller.net大量实用链接

这里有许多所用链接关于AVR,8051,ARM,PIC.它收集的AVR信息是我看到的最好的。遗憾的是网站语言是德文。

http://www.mikrocontroller.net/articles/Linksammlung - 外文


12.  LPC2000 information page featuring the Philips ARM microcontrollers

关于LPC2100的专业网站

http://www.lpc2100.com/ - 外文


13.  ARMboot

ARMboot is an Open-Source firmware suite for ARM based platforms. ARMboot is heavily based on the sister-project PPCboot, which provides similar functionality on PowerPC based systems. ARMboot shall be a common, easy-to-use and easy-to-port boot platform

http://armboot.sourceforge.net/ - 外文


14.  周立功单片机

国内知名的民营企业,他主要是代理 PHILIPS 公司的 ARM微控制器与单片机,在该网站上可以下载大量的相关资料。推荐看看

http://www.zlgmcu.com - 中文


15.  ARMphetamine

ARMphetamine is a project to create a fast and accurate ARM processor emulator. A technique known as "dynamic recompilation" will be used so that the highest possible speed can be achieved for emulated code - ARM code programs are translated into native code as they are being emulated. The current development platform is Linux/x86

http://armphetamine.sourceforge.net/ - 外文


16.  Linux for all ARM based machines

一种LINUX操作系统,适合移植在ARM结构上。

http://www.arm.linux.org.uk/ - 外文


17.  Universal Bootloader

Universal Bootloader project provides firmware with full source code under GPL. Many CPU architectures are supported: PowerPC(MPC5xx, MPC8xx, MPC82xx, MPC7xx, MPC74xx, 4xx), ARM(ARM7, ARM9, StrongARM, Xscale), MIPS(4Kc,5Kc), x86, ...

http://sourceforge.net/projects/u-boot - 外文


18.  SkyEye Project

SkyEye是一个开源软件(opensource software)项目,中文名字是“天目”。SkyEye的目标是在通用的Linux和Windows平台实现一个模拟集成开发环境,模拟基于ARM的 嵌入式计算机系统;可在SkyEye上运行ARM Linux,uclinux以及uC/OS-II等多种嵌入式操作系统,并对它们进行源码级的分析和测试

http://www.skyeye.org/index_cn.html - 外文


19.  uclinux-elf-tools

一个优秀的交叉编译工具。m68k系统,ARM系统下有很好的性能。

http://www.uclinux.org/pub/uClinux/uclinux-elf-tools/ - 外文


20.  MCUserver

一个比较专业的关于电子开发的网站,但是我也不知道网站是什么语言,但看一勉强看懂。它的下载区有很多实用资料,需要注册才可以下载。它提供很多DIY电路,比如PIC,AVR,MSP430,FPGA,ARM,8051等等编程电路。推荐

http://www.mcu.cz/modules/news/ - 外文


21.  Embeder's Family--嵌入者之家

个人站点,但是这里有些相关资源下载http://www.embeder.com/bbs/showforum.asp?forumid=10

它的ARM论坛还可以.http://www.embeder.com/bbs/

http://www.embeder.com/ - 中文


22.  ArmTime Technology

推荐.比较不错的ARM网站,比较专业的网站.

http://www.armtime.com/ - 中文


23.  GNU Toolchain for ARM Processors

http://www.codesourcery.com/arch ... ounce/maillist.html

http://www.codesourcery.com/archives/arm-gnu/maillist.html

http://www.codesourcery.com/gnu_toolchains/arm/ - 外文


24.  ARMLinux Resources

Here are links to various resources for ARMLinux. Mostly off-site but some are maintained here.

http://www.aleph1.co.uk/armlinux/

http://www.aleph1.co.uk/armlinux/resources.html - 外文


25.  www.ulrichradig.de

一个非常好的德国个人网站,有些电子制作.比较经典的就是

1,利用AVR单片机做的WEB服务器.RTL8019芯片.

2,利用CPLD产生视频信号VGA.

3,μClinux - mini Linux for the Philips's ARM LPC2294

http://www.ulrichradig.de/ - 外文


26.  boot

Booting on any device needs a boot-loader and some means to get the boot-loader installed in the first place. Here we look at the specifics for ARM architecture devices booting Linux, covering available boot-loaders and their capabilities, some general principles and mechanisms for uploading the Linux kernel and root filesystem, giving specific examples with Jflash-linux and Blob.

http://www.aleph1.co.uk/armlinux/docs/ARMbooting/t1.html - 外文


27.  武汉创维特嵌入式沙龙

主要是关于ARM的开发.

下载页面有些好东西:http://www.cvtech.com.cn/cvtech/down_index.asp

http://www.cvtech.com.cn/ - 中文


28.  Debian GNU/Linux on ARM

On these pages you'll find information about the ongoing effort of porting Debian GNU/Linux to the ARM architecture which is often found in embedded systems

http://www.debian.org/ports/arm/ - 外文


29.  ARM Documentation 来自官方网站

http://www.arm.com/documentation/ - 外文


30.  ARM Devlopments

http://www.ap-systems.co.uk/index.htm - 外文


31.  RTLinux for StrongARM

http://www.imec.be/rtlinux/ - 外文


32.  PIC,AVR,ARM,MSP430开发DIY

该网站提供很多的PIC,AVR,ARM,MSP430的开发资料,特别适合自己制作开发系统,它的ARM开发(利用LPC21**系列)是非常号的资料。推荐。

http://www.olimex.com/dev/index.html - 外文


33.  杭州莱顿科技有限公司

尽管是买方ARM(主要是三星的芯片)开发板的,但是里面也有不少开发资料下载,开发三星ARM不容错过。

http://www.jzx51.com/index.htm - 中文


34.  嵌入式开源项目

是一个适合初学者学习嵌入式开发的技术网站,lumit 名称取自 let us make it together 这句话的首字母缩写。我们期待对嵌入式技术有兴趣的朋友能和我们一起学习、动手制作、相互探讨、共同进步。

lumit 也是一个软硬件资料可以完全免费下载的开源项目,目前主要目标是制作一个基于arm7tdmi s3c4510开发板的可以实用的u盘,未来我们希望还能做出 mp3、pda 甚至是 dc,dv 等。

http://www.lumit.org/ - 中文


35.  ARM时代

提供:ARM仿真器|ARM开发板|ARM技术 项目 方案 成型产品,还有一些ARM开发资料供下载

http://www.arm9e.com/ - 中文


36.  广州友善之臂的ARM资料下载

http://www.arm9.net/m4-download.asp - 中文


37.  Aeolus Development - Embedded Hardware and Software

http://www.aeolusdevelopment.com/ - 外文


38.  阿冰BLOG : ARM与嵌入式开发

http://ustcers.com/blogs/devzhao/articles/category/65.aspx - 中文


39.  中国单片机公共实验室.--可以看看.

http://www.bol-system.com/ - 中文


40.  52ARM微电通讯技术网

http://www.52arm.com/ - 中文


41.  思恒科技-DSP、ARM、FPGA等开发的电子综合网站

公司网站,资料还不是很多,有时间可以看看。

http://www.siheng.cn/ - 中文


42.  三星官方网站的ARM芯片资料下载

http://www.samsung.com/Products/ ... family_cd=LSI090101 - 外文


43.  西安建华科技实业有限公司

提供ARM开发板,同时也有少量的ARM开发文档.

http://www.jhembed.com/ - 中文


44.  小章电子技术网 -很多实用电子资料下载。

http://www.zyjmcu.com/zlxz.htm - 中文


45.  ARM专栏

http://www.baite-group.com/chinese_simple/bbs/arm.htm - 中文


46.  Instruction set quick finder

his document describes, as completely as I am aware of, the ARM instruction set. If, however, you are only interested in the instructions relating to programming under RISC OS, you may prefer to read the shorter quick finder document...

http://www.heyrick.co.uk/assembler/qfinder.html - 中文


47.  ARM学习网

http://218.78.211.237:8088/ - 中文


文章来源: http://wuqidongxing.blog.163.com ... 495020079284363574/



几本linux学习的书籍

本人正在进行linux 的学习 希望这些资料对linux爱好者有用
linux 教材大全 ftp://down.eshuba.com/eshuba/xitongxiangguan/Linuxjcdq.rar


linux 使用大全 http://down.eshuai.cn/shuba/xito ... %C3%B4%F3%C8%AB.rar
linux 学习宝典 http://down1.cnhacker.com/booksdown/07013103050c8cb659a28f9ff.rar

        
linux 从入门到精通 http://www.gouhuo.com/study/linuxbook.zip
练成linux 高手 http://www.jz5u.com/download.asp?id=15590&downid=0
送给linux 初学者 ftp://211.95.73.26/hl/送给初学Linux的穷人Linux系统指令大全.pdf  

         
linux 系统管理 ftp://211.95.73.26/1zxhlinux.rar
linux 命令大全 http://ftpgz5.pconline.com.cn/exam/it/Linux061114.rar
linux 软件工程师 ftp://222.214.218.42/book3/20060 ... 81-4941bcee1f11.pdf  

  
基础学习 http://www.00083.com/soft/upload ... 84b69a63c2ed2a47af3
基础教程完整版 http://download.chinaitlab.com/download.asp?id=34873
命令全集 http://down.linuxmine.com/soft/0/1/01000001.rar  


  使用学习教程 ftp://222.214.216.57/book2/20061 ... 16-c8b5facb0654.chm
网络安全配置 http://vip.hackbase.com/vipsoft/vipteacher/20050305linux29.rar
linux 从入门到精通 ftp://down.eshuba.com/eshuba/200601/Linux ??????.rar  


  http://ftpgz13.pconline.com.cn/pub/download/200205/linuxsite.rar
新手管理员手册 http://www.00083.com/soft/upload ... fc01983a9ded8943b62
安装与配置简明手册 http://cpss.zz.ha.cn/study/linux ... %f7%ca%d6%b2%e1.zip
网络实际操作 thunder://QUFodHRwOi8vZG93bmxvYWQuY2hpbmFpdGxhYi5jb20vZG93bmxvYWQuYXNwP2lkPTM3MTM3Wlo=
红旗linux 中文版初级教程 http://down.hack58.com/fzw_hack58/sohu/11-23linux.rar
linux 核心源代码分析PDG http://www.00083.com/soft/uploadsoft/linux核心源代码分析.rar?6103004891303x1174341082x6103009877379-15c492eb5c3033c99a07c2fba419c496
破解根用户密码 http://www.942d.com/shipin/bbs/linuxsn.rar
Red Hat Linux Fedora傻瓜书 httP://book1.ibook8.com/ibook8co ... 5/041113/fedora.rar  


Linux知识宝库典藏版  ftp://222.214.218.42/book3/20060 ... 35-0c5492042030.chm
Linux程序设计  ftp://down.eshuba.com/eshuba/xitongxiangguan/Linuxcxsj.rar
Linux参考大全  httP://book1.ibook8.com/ibook8com/pc2005/701/1/521hacker-20.zip
linux编程初学者入门  ftp://222.214.216.57/book2/20061 ... 00-a603302e0466.rar  


LINUX应用技术精华{面向初学Linux朋友的书籍}   http://www.linuxfans.org/nuke/software/LINUX应用技术精华{面向初学Linux朋友的书籍}/LINUX应用技术精华{面向初学Linux朋友的书籍}.rar
redhat9从入门到精通  http://down.315safe.com:315/redhat9从入门到精通.rar  


Linux C函数库参考手册  http://cnc-http.xpbook.com:81/200506/Linux%20C函数库参考手册.rar?6102881127298x1150968278x6102884440460-71dc8cd6d874db99d29888002914a4d5
Linux 内核完全注释   httP://book1.ibook8.com/ibook8co ... 113/linuxsystem.rar
Linux2006年9月 总第三期  http://www.linuxer.cn/magazine/linuxer3-2006-09.pdf
Linux_network_manage-3245      http://down.csdn.net/down2//2006 ... ork_manage-3245.rar
一周内学会Linux系统管理   http://download1.csdn.net/down2/2006/10/499/1zxhlinux-2605.rar
linux编程白皮书   http://download1.csdn.net/down//2006/webdown/004/Linuxbcbps.rar
linux上的c编程   http://www.cinchina.com/Soft/Sho ... lID=1&SoftID=12
linux宝典  thunder://QUFodHRwOi8vZG93bmxvYWQuY2hpbmFpdGxhYi5jb20vZG93bmxvYWQuYXNwP2lkPTM3MDk3Wlo=
《Linux内核完全注释》 V1.9.5版  http://oldlinux.qbang.org/download/clk011c-1.9.5.pdf
linux教材  thunder://QUFodHRwOi8vd3d3Lmp6NXUuY29tL2Rvd25sb2FkLmFzcD9pZD0xNDUxNSZkb3duaWQ9MFpa
linux命令全集Shell_manual  http://www.uplinux.com/php/downl ... ZWxsX21hbnVhbC56aXA 


推荐一个很好的文献检索资源网站

诺贝尔学术资源网为您提供:国内外文献检索资源、文献代理、文献互助等。文献资源一切都是免费的。
  诺贝尔学术资源网您提供一个学习最新的文献检索技术,获得最新文献资源的平台。
网址是:http:// bbs. ok6ok. com
http:// www .i-nobel .com(教育网)




posted @ 2007-12-02 11:38 MEYE 阅读(2340) | 评论 (0)编辑 收藏
音乐网站大全

现代摇滚单曲排行榜——更新较快,20首最TOP现代摇滚单曲下载,免费
http://www.fwcn.com/billboard/

音乐天使——来自天堂的声音,来自天使的声音,如梦似幻,与你分享……
http://music.angelyaya.net/gs/

英语之声——可下载欧美经典3辑99首mp3格式音乐
http://www.english.ac.cn/songs/index.htm

yepoo音乐——收集有六张欧美音乐专辑,mp3格式,192.0Kpbs码率(速度超级快)
http://www.yepoo.com/main.asp

嘎雅NEWAGE音乐——提供大量NEWAGE音乐下载,mp3格式,音质不错
http://gaea.hit.edu.cn/m3uplay/nvmake/nc.asp

震撼音乐——淄博供电公司提供的154首经典音乐,主要是欧美mp3音乐下载
http://61.156.17.162/MP3/

蚂蚁的欧美歌曲 1 4 5 ——提供30多张近1000首欧美歌曲下载,全部mp3格式
http://qol.qdc.com.cn/mp3/omlmjd/ANTS.HTM
http://media.gdpc.edu.cn/music/cdvolume/ant4/ant4.htm
http://media.gdpc.edu.cn/music/cdvolume/ant5/ant5.htm

古典圣殿——提供70张音乐专辑在线试听
http://210.34.4.3/cd-bible/gudian/gudian.htm

天外之音——免费提供40CD的WMA格式音乐下载,大部分为欧美音乐
http://www.zhzx.net.cn/students/studentpage/bright/index.htm

电影画廊——免费提供30多张电影主要是欧美电影原声音乐下载,全部mp3格式
http://202.103.25.159/cine/music/mp3.htm

第一城市——免费提供两张M2M的专辑和一张007专辑下载,全部mp3格式
http://www.ecityboy.com/03down/index-3.htm

影视先锋——提供较多欧美、日韩电影原声下载赏析 Midi格式 MP3格式 RM格式
http://202.102.230.12/movie/music/mp3/notting/mp3.htm
http://202.102.230.12/movie/music/shang.htm
http://202.102.230.12/movie/music/midi.htm
http://202.102.230.12/movie/music/mp3.htm
http://202.102.230.12/movie/music/rm.htm

LOW摇滚音乐网——免费提供Linkin Park,Limp Bizkit,Foo Fighters,Silverchair等14位歌手的专辑下载
http://www.low69.com/download.html
http://www.low69.com/mp3/LinkinPark.html
http://www.low69.com/mp3/LimpBizkit.html
http://www.low69.com/mp3/FooFighters.html
http://www.low69.com/mp3/Silverchair.html

古典音乐厅——收集肖邦、斯特劳斯、柴可夫斯基、贝多芬、巴赫等17位世界音乐大师的主要作品,提供rm、mp3下载
http://bds.cetin.net.cn:81/cetin2/sp/music-hall/music-1.htm

百度mp3论坛精华—顾名可思义,可以找到很多欧美音乐,且下载很方便
http://forum.baidu.com/cgi-bin/f ... id=16&age=0

欧美影视金曲——提供134首经典欧美影视金曲mp3下载
http://brightsun.hr.hl.cn/xiuxian/yjt/ysjq/

歌曲集萃——厦门6中音乐网,有经典老歌、英文金曲、影视名曲、童声合唱、世界经典名曲下载,全部mp3格式
http://www.liuzhong.xm.fj.cn/music2/
http://www.liuzhong.xm.fj.cn/music2/song/song.htm
http://www.liuzhong.xm.fj.cn/music2/song/english/english.htm
http://www.liuzhong.xm.fj.cn/music2/filmsong/filmsong.htm
http://www.liuzhong.xm.fj.cn/music2/song/song03.htm
http://www.liuzhong.xm.fj.cn/music2/xfmq/shijie01.htm

悠长密道——原声书馆。黑魔法影视音乐城!美丽的声音,美丽的故事……等待着您与蓝衣演绎!
http://www.soundo.net/yc_index.htm

雅尼的主页——我只知道这个网站提供单曲在线视听,还有什么,你去看了就知道
http://www.yanni.com/

理查德·克莱德曼浪漫钢琴曲——本站论坛收集的《理查德·克莱德曼浪漫钢琴曲》119首mp3音乐,免费免注册提供下载
http://www.asweiren.org/bbs/lunt ... u=4&num=204

名家名作——收集理查德·克莱德曼、肯尼吉、雅尼、詹姆斯高威、保罗摩利亚的作品
http://www.charlesonline.org/music/famous_artist.htm

Huya音乐——网站制作精美,有特色,有九个欧美音乐专辑,音乐虽少了点,但都是精华  
http://www.huya.net/music/music.htm

水滴音乐——提供欧美音乐mp3下载,音乐也不是很多,但有很多歌词,也是一个不错的网站
http://music.nbjyc.com.cn

魅力吉他——百度论坛精华,由100free收集,实际是德翁的帖子,提供63首吉他曲下载
http://forum.baidu.com/cgi-bin/f ... pg=4&age=60

加州旅馆——百度论坛精华帖,是德翁的帖子,13种版本,附带一个网址,可下载更多的版本
http://forum.baidu.com/cgi-bin/f ... 0&h=1#54135

欧美音乐——一个人气较旺的欧美音乐站点,免费提供mp3下载,同时打开一个音乐论坛,可以找到一定数量的音乐
http://www.oumei.net/index.html

披头士精选——中文披头士专门网站,提供100首披头士音乐下载,链接速度较慢
http://211.101.197.94/beatles/download.asp

神秘园——神秘园音乐4CD,提供mp3下载,但不太稳定,我下载过
http://yini.lili.cc/secretgarden/download.htm

Winamp Radi——Winamp网络电台,128Kpbs,音质好,我觉得不错
http://www.shoutcast.com

   
天碟落地——提供6张经典音乐大碟mp3下载,在恐怖海峡有3张专辑下载,请在晚上(11点钟以前)下载
http://yfok.vicp.net/fan/fan.htm

苏俄音乐——有丰富的苏俄音乐,可惜的是mp3格式不多,大部分是asf格式,凑合着听吧
http://xue-fan.y365.com/download.html

音乐地图,爱听音乐的朋友不要错过。
cn.51.net/online.php>http://pengwcn.51.net/online.php

部分杰出的音乐公司及杂志与音响技术等站点
http://www.thinktip.com/bbs/music.htm
Namm新纪元音乐杂- http://go4.163.com/namm/index1.htm
日本音乐信息中心- http://www.jamic.org/
我爱Mp3搜索引擎- http://www.5imp3.com/

=======英文音乐站=======
Download.com- http://download.com.com/
21st Century Mp3- http://www.21century-mp3.com/
MP3.com- http://www.mp3.com/
水滴音乐- http://music.nbjyc.com.cn/
Chinto Music Lover- http://chinto.hypermart.net/
CrazyEMusic.com 欧美流行风- http://61.139.37.148/music/
Music Cool- http://www.musiccool.net/
音乐城市- http://www.musiccity.com
MP3.BOX.SK- http://mp3.box.sk/
Your Digital Music Oasis- http://www.dmusic.com/
Lycos Music- http://music.lycos.com/
VH1.com- http://www.vh1.com/
AMG All Music Guide- http://www.allmusic.com/
country.com- http://www.country.com/
MP3 Search- http://music.salon.com.cn/
leon83.com- http://www.leon83.com/
Welcome to Fast Search & Transfer- http://www.fast.no/
MusicSearch.com The Internet's Music-Only Search
Site!- http://www.musicsearch.com/
welcome to sonico.com homepage- http://en.sonico.com/
AudioFind- http://www.allmp3.com/
it's craptastic!(该站友情链结极好,音乐下载在线站极
多)- http://www.punkasspunk.com/
VITAMINIC_the music evolution- http://www.vitaminic.com/
MP3 Search- http://www.look4sound.com/
4AD- http://www.4ad.com/

=======古典音乐=======
古典音乐网- http://www.classical.net.cn/
水妖的岛- http://shuitou.net/
巴洛克音乐圣殿- http://baroque.yeah.net/
追月寻风- http://coralgz.51.net/gudian/shangshui.htm
中国音乐剧网- http://www.chinamusical.com/normal/chinamusical.html
歌剧音乐下载站- http://malei.vip.sina.com/classicaldownload.html
古典音乐下载网- http://malei.vip.sina.com/
黑暗放逐(推荐)- http://www.dzbbs.com/
星乐钢琴手(推荐)- http://www.xygqs.com/
音乐岛- http://cell.my169.com/
瞬间,永恒- http://person.zj.cninfo.net/~sanio/index.html
音乐与音响- http://music_sound.myetang.com/index.htm
..:::贝多芬爱好者同盟:::..- http://www.beethovenian.net/
古典音- http://www.chinakongzi.com/2550/music/
中国音乐教育- http://xiaoyv.myrice.com/
哆来咪- http://www.duolaimi.com/
艺声在线- http://yszxmp3.126.com/
Here is Music- http://www.hereismusic.com
=======品味音乐=======
诗歌音乐室- http://www.lifespring.com.hk/gb/music.htm
音域派(强烈推荐)- http://audio.zjg.jsinfo.net/
吉它秀- http://www.51guitar.com/
雅燃音乐天空(戏子强烈推荐)- http://www.flamesky.org/
新世纪网·纯音乐天堂(戏子强烈推荐)- http://www.cnnewage.com/
短歌行(戏子强烈推荐- http://www.audio100.com/
爵士当铺- http://www.jazzsky.cc/
R o c k Y e a r 摇滚年音乐网- http://rockyear.yeah.net/
DYING ART UNDERGROUND CDR LABEL- http://www.underfm.com.cn/
Music Game Zone 2ndMix- http://www.m-g-z.com/
我爱摇滚乐- http://www.sorock.com/
佛乐,永远开放,不着边际(强烈推荐)- http://fofilm.org/qianxiang/
爱尔兰音乐大全- http://www.drunkencrew.com/primary.htm
天籁音乐网- http://www.ynfox.com/music/index.htm
革命音乐空间- http://hong6666.myetang.com/
James Studio- http://jamesy.533.net/
大同音乐- http://61.134.13.16/mp3/omusic/index.php3
沉没的蟋蟀(强烈推荐)- http://61.136.63.120/rem/home.htm
=======歌词站=======
炫网资讯- http://music.liuxuan.com/
中文LRC歌词库- http://lrcman.yeah.net/
放肆音乐通歌词子站- http://www.yemusic.com/
歌词吾爱- http://www.51lrc.com/
=======在线MUSIC=======
彭彭听吧(强烈推荐)- http://www.oo-xx.com/
音乐红茶馆- http://www.musictea.com/
512city音乐时空- http://www.512city.net/music
MTV.com- http://www.mtv.com/
听吧音乐网- http://www.tingbar.com/
天虎音乐网- http://music.tyfo.com/
MTV-CHINA.com- http://www.mtv-china.com/feature
中国音乐在线- http://202.98.223.68/mtvtop/index2.htm
Realplay music- http://www.ahbb.net/music/realindex.htm
听听音乐- http://www.ting365.com/
网蛙- http://www.wanwa.com/
红尘驿站- http://www.thepasser.com/music/default.asp
華?#123;線上音樂雜誌- http://www.warnermusic.com.tw/
阿穆的感性音乐- http://www.amusicday.com/radio.htm
宽频音乐- http://www.c-mtv.com/
求索音乐无限- http://research.swufe.edu.cn/new/music.php
http://www.163ie.net/music/
=======下载音乐网站=======
BoxUp Music- http://www.boxup.com/
MP3 Download- http://www.finder.com.cn/mp3finder/
Soyou实达所有- http://idp.soyou.com/MP3/head
中文音乐- http://www.xuxule.com/
张雨生音乐大全- http://www.kkttkk.com/indexdown/
大陆mp3音乐超市- http://www.cdjmp3.com/
天籁村- http://music.qu-zhou.com/homepage/indexall.html
音乐极限- http://www.chinamp3.com/
mp3秀- http://www.mp3xu.com/
丽声世界- http://www.lssj.net/
汉源音乐- http://music.hyinfo.net/
MP3搜集网- http://www.88u8.com/mp3
弦音歌语- http://music.21youth.com/
mp3- http://cdp2331170.home.chinaren.com/mp3/mp3.htm
音乐先锋- http://music.188.net/
中文网络音乐资源中心- http://www.topmusic.net.cn/
天籁阁- http://www.99mp3.com/
365佳音网- http://music.ganzhou.com/
音乐磁场- http://www-jl.jl.cninfo.net/jlweb/music/
音乐加油站- http://www.yereal.com/
9SKY九天音乐网- http://www.9sky.com/
非常音乐网- http://www.verymusic.net/
摇滚音乐网- http://www.xmusics.net/
玩易音乐- http://www.jninfo.net.cn/music/
久久音乐- http://www.99music.net/index.htm
搜刮(强烈推荐)- http://www.sogua.com/
Bseven韩流娱乐网- http://www.bseven.com/
54dj俱乐部- http://www.54djclub.com/
DJ街区- http://www.dj-street.com/
飛行網- http://www.music.com.tw/
華人全球音樂網- http://www.mtvstar.com.tw/
混音电台- http://www.yesdj.com/Default.asp
娱乐在线- http://music.yn.cninfo.net/index.shtml
私人地方請立即離開- http://pop169.com/
我找我歌MP3搜索网- http://www.5find.com/
Music Heaven- http://www.charmusic.com/
Music site- http://music.zsnet.com/
中文音乐星空- http://hotcd.126.com/
中国乐坛欢迎您- http://www.cmusic.com.cn/
听者有心(强烈推荐)- http://www.musicool.com.cn/index.htm
音乐无极限- http://www.limitlessmusic.net/
浪琴音乐网- http://www.langqin.net/
轻音飞扬- http://music.stu.edu.cn/
吉通音乐在线- http://www.weihai.cngb.com/music/first.asp
飞天网景- http://music.lz.gs.cninfo.net/
亿兆音乐网之“音乐E+亿- http://music.emsky.com/
花木兰音- http://www.wmacn.com/
:::音乐之声::- http://music.ty.sx.cn/
济宁宽带数码港MP3音乐- http://tv.jninfo.net.cn/mp3/
金山网景-缤纷乐坛- http://music.jsol.net/index.html
网娱一派- http://song.beelink.com.cn/
======= 收集的音乐论坛=======
http://www.bluedown.net/cgi-bin/forums.cgi?forum=21

======= 专属音乐站点=======
穾唯,幻梦天水- http://www.douwei.net/
齐秦驿站扉页- http://www.kl.gz.cn/~flyingcg
BANDARI- http://bandari.dhs.org/
deflower.cn.st- http://deflower.cn.st/
音乐网站列表
九天音乐网 http://www.9sky.com
boxup music http://www.boxup.com
音乐听厅 http://www.nowok.net
搜刮音乐 http://www.sogua.com
嘻嘘音乐 http://www.xuxule.com
网蛙音乐网 http://www.wanwa.com
音乐极限 http://www.chinamp3.com
pop169.com http://pop169.com
音乐加油站 http://www.yemp3.com
音乐加油站(new) http://www.yevery.com
海盗音乐网 http://www.yuechen.com/index1.htm
中国音乐在线 http://www.mtvtop.com
音乐视听 http://www.real2000.org
久久音乐 http://www.99music.net
frankmp3 http://www.frankmp3.com
mp3秀 http://www.mp3xu.com
音乐天籁村 http://www.mp3boat.com
163音乐网 http://www.ting163.net/index.php
网易--唱片介绍
http://ent.163.com/new_entertainment/third_dir/010808_85399.html
音乐殿堂 http://www.91music.com
高阳MP3 http://www.gaomp3.net
听者有心 http://www.musicool.com.cn/index.htm
Soyou实达所有 http://idp.soyou.com/MP3/head/
紫龙歌词 http://www.51geci.com
天虎音乐网 http://music.tyfo.com
吉林信息港妙即刻网乐 http://music.jl.cninfo.net
中国音乐库 http://www.5460m.net
音乐的力量 http://music.gzinfo.net
269音乐频道 http://music.269.net
音乐前卫 http://music.yn.cninfo.net
音乐时空 http://www.sinofeng.com/music/
数码网 音乐频道 http://www.yes2.net/music/
网络音乐频道 http://mp3.attin.com/
焦作音乐无限 http://music.jztele.com
汉源音乐频道 http://music.hyinfo.net
Music site http://music.zsnet.com/
100mp3 http://www.100mp3.com/
视听频道 http://music.km169.net/
雅燃音乐天空 http://www.flamesky.com/
中华好歌网 http://www.haoge-china.com/index.html
短歌行 http://www.audio100.com
mp3火力网 http://garden.2118.com.cn/xu_allmp3/
音乐先锋 http://www.5see.com/mp3/
无限音乐网 http://kenfr.topcool.net/main1.html
天空音乐 http://99fun.com/skymusic/musicsky/index.asp
欧美流行风 http://61.139.37.148/music/
韩国音乐网 http://www.koreanll.com
彭彭听吧 http://www.pp-mp3.com
http://www.xuxule.com
http://www.9sky.com
http://www.chinamp3.com
http://www.audio100.com
http://hff.21cn.com:84
http://www.sogua.com
http://www.musiccool.net
http://music.tyfo.com
http://202.96.107.40/music
http://music.21youth.com
http://mp3download.myetang.com
http://www.99music.net
http://ent.sdinfo.net/music
http://music.qu-zhou.com
http://www.cardio.ru/~teehonya/mp3
http://www.mp3boat.com
http://www.tyclub.com
http://www.5566.org/music3-1.htm
http://www.wfinfo.net.cn/music/
http://www.hebnet.net/mp3/lp.htm
http://www.c-mtv.com
http://music.trueice.net/
http://music.zixia.net/
http://www.coolsong.com/bbs/index.asp
ftp://mp3:mp3@feng.d2g.com
http://www.koreanll.com/main.html#
http://www.beethoven.com
http://www.269.net
http://www.snepc.com

中文MP3网站
1.九天音乐 http://www.9sky.com/) [简体]
音乐站就该音乐多多。
2.听吧 http://www.tingbar.com/musichome/sinasearch.asp) [简体]
国内最大曲库,在线试听及网上送歌,流媒体音乐电台。
3.寂寞男孩--全新数字音乐 http://lonelyboy.yeah.net/)[简体]
mp3好站,按歌手和专辑分类,另有歌迷聊天、论坛、点歌区。
4.天籁村 http://tdk.126.com/)[简体]
mp3歌曲下载、歌迷档案、音乐故事,还有动漫音乐、古典音乐等类别。
5.mp3 Finder http://www.finder.com.cn/mp3finder/)[简体]
流行音乐网站,网罗中外流行歌曲和音乐,乐迷不容错过的好站。
6.100mp3 http://www.100mp3.com/)[繁体]
收集各种mp3网站,包括中港台的mp3。
7.中文MP3日报 http://www.sundaily.com/)[繁体]
主要提供港台歌曲的mp3下载。
8.所有MP3 http://idp.soyou.com/MP3/head/)[简体]
MP3无限,所有包揽。
9.5460中华mp3音乐库 http://www.5460m.net/)[简体]
华语mp3下载试听。
10.中国大陆mp3音乐超市 http://www.cdjmp3.com/)[简体]
大陆港台mp3歌曲大全,包括中外流行、摇滚、古典、民族等各种音乐。
11.mp3下载中心 http://mp3s.cnroot.com/)[简体]
mp3下载,mp3导航,mp3搜索引擎,mp3工具,mp3歌词。
12.mp3秀 http://www.mp3xu.com/)[简体]
港台,大陆,欧美mp3,midi,ram。
13.MP3-SKY.com http://www.mp3-sky.com/)[简体]
收录MP3音乐,包括流行,古典,摇滚,电影原声,轻音乐。
14.古典音乐网站《艺声在线MP3》 http://yszxmp3.cn99.com/)[简体]
古典音乐MP3和大量古典吉它曲MP3。
15.中国摇滚mp3站 http://chinarock.163.net/)[简体]
摇滚mp3下载,摇滚乐队,摇滚评论等。
16.MP3音乐空间 http://shiper.126.com/)[简体]
提供几千首中文MP3下载,MP3精品软件,MP3搜索引擎等!
17.Mp3音乐秀 http://mp3show.126.com/)[简体]
音乐下载和歌词下载。
18.吉他秀[Guitar show] http://www.51guitar.com/)[简体]
吉他大师、世界名琴、mp3、效果器、音箱、原创音乐和文章征集。
19.古典音乐网 http://www.classical.net.cn/)[简体]
古典乐新闻、音乐家、名曲介绍、入门、唱片、midi、mp3。
20.乌托邦摇滚 http://maogbl.at.china.com/)[简体]
前卫摇滚资讯、MP3下载、歌词下载、歌手&乐队发展史。
21.伊莎贝拉音乐网 http://my.soyou.net/~gegege/)[简体]
mp3下载,音乐排行榜,在线视听,歌词搜索。
22.汉源音乐频道 http://music.hyinfo.net/)[简体]
大量的 mp3 和 ra 歌曲。
23.赣州音乐天堂 http://music.ganzhou.com/)[简体]
MP3下载库。
24.音乐磁场 http://www.jl.jl.cn/jlweb/music/)[简体]
MP3下载,音乐软件,歌词查询。
25.什么都有—音乐站 http://music.ahbb.net/)[简体]
提供古典、流行、NewAge、摇滚以及电影原声MP3下载。
26.亚洲流行音乐广场 http://www.asiamp3.com/)[繁体]
包含歌曲推介,MP3资讯,工具和教学。
27.海盗音乐网 http://www.hdmusic.net/)[简体]
mp3下载,歌词,CD相片,MTV下载,娱乐资讯。
28.哆来咪--中国器乐曲 http://www.duolaimi.com/classic/duolaimi/my/)[简体]
中国民乐MP3下载基地。
29.天籁阁 http://tlg.ccoo.com/)[简体]
齐全的歌手资料、迅速的娱乐快报、打包的歌词下载、COOL MP3。
30.音乐听厅 http://music.nowok.com/)[简体]
音乐MP3,在线试听。
31.弦音歌语 http://music.21youth.com/)[简体]
歌星档案,排行榜,MIDI,mp4,MP3,mtv,游戏音乐,词曲查询
32.全新音乐栏目——天籁回寰 http://music.iszero.com/)[简体]
MP3和MIDI下载,乐坛新闻和排行榜及音乐播放软件等。
33.网络音乐资源中心 http://www.topmusic.net.cn/)[简体]
提供mp3、rm、vqf格式的歌库、曲库,明星档案。
34.mp3其他女歌手 http://www.only.net.cn/mp3/ow.htm) [简体]
欢迎来 only 网站,本站中文名为 绝无仅有 ! only网 ...
35.女歌手 http://playsite.myrice.com/mp3/female-9.htm)[简体]
36.mp3 http://www1.huali-cn.com/~spiderx/mp3_1.htm)[简体]
香港男歌手 香港女歌手 台湾男歌手 台湾女歌手
37.mp3 http://cdp2331170.home.chinaren.com/mp3/mp3.htm)[简体]
不要看这版内容这么少.其实里边的内容很丰富哦!作为记录着年轻人
梦想与激情的音乐篇章,校园民谣,以真诚与纯洁为标志。
38.电影原声音乐 http://www.redb52.com/musiccg15.asp)[简体]
一个详细介绍电影原声音乐的网站。
39.音乐马前炮 http://music.188.net/)[简体]
MP3下载,歌手资料,新闻,排行,以及网友点播,影视歌曲。
40.水滴音乐 http://drip.cnnb.net/)[简体]
提供英文歌词及查询,欧美乐队情况及娱乐资讯,排行榜,MP3下载。
41.日本娱乐新干线 http://japmusic.yesky.net/)[简体]
介绍关于日本娱乐的方方面面,影视音乐及jpop MP3下载。
42.海外一族,四海一家 http://chinto.isme.net/)[简体]
英文MP3s下载,加拿大华人生活点滴。
43.mp3 jukebox 点唱机 http://mpage.musicpage.com/)[繁体]
点唱站、灵温室、桌布店,主要收录港台、日本的最新流行歌曲。
44.天籁空间 http://61.134.13.16/mp3/omusic/index.php3
音乐欣赏、原创天地、歌星档案、mp3软硬件、音乐文化、音乐论坛
45.音乐极限 http://www.chinamp3.com/
中文MP3下载。歌曲排行,歌词下载,专辑碟库、留言点歌。
46.世纪青年mp3音乐站 http://music.21youth.com/
3000首以上的各类精选mp3和相关音乐评论。
47.飞行网音乐下载 http://media.music.com.tw/download/down.asp)[繁体]
台湾著名音乐站点音乐下载基地。
48.MP3 World-MP3世界 http://www.bseven.com/mp3/
韩国MP3中国MP3日本、西洋、法国、民族、的士高、影视等MP3。
49.时代音乐天地 http://www.shanghai-window.com/shan...ter/magazine/
流行音乐的天地。
50.mp3下载中心 http://www.skyhits.com/mp3.htm
mp3下载,mp3导航,mp3搜索引擎,mp3工具,mp3歌词。
51.mp3搜集网 http://www.88u8.com/mp3/
最新MP3下载。
52.MP3歌曲经典 http://aimer.home.chinaren.net/
歌迷的家园,有大量MP3经典歌曲。
53.流行mp3大全 http://www.asia-top.com/click/?account=googoo1
一千多首大陆、港台MP3歌曲下载,并提供强大的搜索引擎。
54.流行MP3音乐库 http://www.kl.gz.cn/~sunshine/music/
流行MP3音乐高速下载。
55.Popmp3 http://popmp3.6to23.com/
Mp3歌曲下载。
56.kump3 http://kump3.myetang.com/
mp3下载,收听。
57.MP3大放送 http://www.5find.com/index.htm
MP3音乐下载.
58.mp3在线酷听 http://musicword.51.net/
MP3下载尽在MP3在线酷听。
59.MP3之恋 http://go3.163.com/~mp3love/index.html
娱乐新闻、音乐社区、最新MP3音乐下载、音乐排行榜。
60.mp3大世界 http://pmp3.home.sohu.com/
娱乐新闻.最新mp3下载试听.中文mp3金曲.国外流行mp3。
61.MP3下载站 http://mp3xiu.myetang.com/
大量MP3下载,在线收听。
62.月歌心曲 http://go4.163.com/~youyueer/
原创音乐。
63.汉源音乐频道 http://music.hyinfo.net/
大量的 mp3 和 ra 歌曲。
64.精彩影室 http://jchp.edu.chinaren.com/
本站提供影视下载和在线播放,电视剧,动画片,经典MP3。
65.海盗音乐网 http://musicol.edu.chinaren.com/index1.htm
66.娱乐基地之音乐基地 http://www.etbase.net/music/
流行音乐下载,明星档案,mp3下载。
67.星易资讯网 http://www.starea.com/
娱乐新闻,MP3下载,音乐欣赏,名星档案,名星靓相,名星聊天室。
英文MP3网站
1.MP3.COM http://www.mp3.com/) [英文]
MP3入门、下载、工具及相关新闻。提供详细分类目录查询歌曲。
2.mp3site http://www.mp3site.com/) [英文]
介绍优秀的mp3网站
3.Mp3 Box http://mp3.box.sk/) [英文]
MP3下载、在线试听、歌词等项,还提供MP3搜索功能
4.Music4free.com http://www.music4free.com/) [英文]
国外优秀mp3网站。
5.dmusic.com http://www.mp3extreme.com/) [英文]
荟萃国外优秀mp3网站、相关软硬件、新闻、mp3搜索引擎。
6.MP3boy http://mp3boy.yeah.net/)[英文]
欧美音乐,MP3,音乐专辑。
7.Best of MP3 http://www.crankpuppy.com/)[英文]
大量mp3下载,提供mp3下载、歌词搜索、CD搜索等。
8.emp3 http://www.emp3dance.com/)[英文]
最新mp3舞曲下载。
9.数码音乐 http://www.cybertropix.com/)[英文]
通过它,你可以找到关于mp3的新闻、软件、网站以及mp3音乐
10.MUSIC.TUCOWS.COM http://tucows.mp3.com.cn/)[英文]
提供大量的MP3下载。
11.MP3搜索(Lycos MP3 Search) http://music.lycos.com/downloads/)[英文]
可按歌名和歌手名字查寻MP3歌曲。
12.马友友(Ma Yo-Yo) http://www.yo-yoma.com/)[英文]
著名大提琴手。
13.电影音乐(FilmMusic) http://www.filmmusic.com/)[英文]
内容包括问题解答,电影作曲家,购买等。
14.电影声线 http://www.filmtracks.com/)[英文]
电影音乐人、新老电影音乐作品等.
15.梦之园电影音乐 http://www.fod-online.com/)[英文]
电影音乐在线出版物.
16.Seasons Greetings.org http://www.seasonsgreetings.org/)[英文]
圣诞老人的传说,传统和现代故事及庆祝圣诞的音乐电影。
posted @ 2007-12-02 11:35 MEYE 阅读(2678) | 评论 (1)编辑 收藏
标准网址大全:

国际性标准化组织
ATIS-世界无线通讯解决方案联盟 BIPM 国际计量局 BISFA国际人造纤维标准局
CAC 食品法规委员会 CCSDS太空数据系统咨询委员会 CIB国际建筑结构研究革新委员会
CIE 国际照明委员会 CIMAC 国际燃气轮机委员会 EIA 世界电气工业协会
FAO 联合国粮农组织 FDI 世界口腔联盟 FID 国际信息文档联盟
GSM-全球移动通讯系统 IAEA 国际原子能机构 IAF 国际认证论坛
IATA 国际航空运输协会 ICAO 国际民航组织 ICC 国际谷物科技协会
ICID 国际水利委员会 ICJ 国际法院 ICRP 国际辐射防护委员会
ICRU 国际辐射单位与测量委员会 IDF 国际乳品业联合会 IEC 国际电工委员会
IETF国际互联网工程师作业规程 IFAN 国际标准用户联盟 IFLA国际图书馆及馆员联合会
IGU 国际气体联盟 IHO 国际水文组织 IIR 国际制冷学会
ILAC 国际实验室鉴定协作联合会 ILO 国际劳工组织 IMF 国际货币基金组织
IMO 国际海事组织 INMARSAT 国际海事卫星组织 ISO 国际标准化组织
ISTA 国际种子测试协会 ITU 国际电讯联盟 IUPAC 国际提纯及化学应用联盟
IWTO 国际毛纺组织 JTC1 国际标准技术联合会 MIGA 国际多边投资担保代理
OIE 国际动物流行病学局 OIML 国际法定计量组织 OIV 国际葡萄与葡萄酒局
RILEM国际材料与结构研究
实验联合会
UIC 国际铁路联合会 UMTS 全球移动通讯系统论坛
UNDP 联合国开发计划署 UNCTAD 联合国贸易与发展会议 UNEP 联合国环境规划署
UNESCO 联合国教科文组织 UNFPA 联合国人口基金 UNICEF 联合国儿童基金会
UPU 万国邮联 UWC 全球无线通讯协会 WCO 世界关税组织
WHO 国际卫生组织 WIPO 国际知识产权组织 WMO 世界气象组织
WTO 世界贸易组织 OITAF 国际索道协会



区域性标准化组织
欧洲标准化委员会(CEN) 欧洲电讯标准化协会(ETSI) 欧洲质量组织(EOQ)
北大西洋公约组织(NATO) 欧洲认证协会(EA) 欧洲标准计量协会(EUROMET)
欧洲电工标准化委员会(CENELEC) 欧洲海事数据模型产品交换标准协会(EMSA) 联合国欧洲经济委员会(UNECE)
欧洲国家法定计量服务组织(WELMEC) 欧亚标准计量认证委员会(EASC) 太平洋地区标准议会(PASC)
泛美标准化委员会(COPANT) 阿拉伯工业发展与矿业组织(AIDMO) 南亚国家协会(ASEAN) 
亚太经合组织(APEC)  




地方标准化站点
浙江质量网 海南质量网 上海标准化服务信息网
北京标准网上书店 宁波标准网 嘉兴标准网
辽宁标准信息网 广西农业质量标准网 无锡标准服务网
河南工业信息网 赛宝标准城 台湾机电产品标准 CED
福建省标准文献中心 上海环境热线



http://www.21ic.com/
http://www.alldatasheet.net/


posted @ 2007-12-02 10:10 MEYE 阅读(1068) | 评论 (3)编辑 收藏

[转]http://www.e-gov.org.cn/wangluoanquan/shujuhuifu/200710/76868.html
    介绍两个数据恢复软件:TestDisk 和 PhotoRec。其中,TestDisk 主要用来恢复损坏的分区以及拯救无法引导的磁盘;而 PhotoRec 则主要用于恢复损坏的数据文件,包括文档、图片、视频等。

  TestDisk 及 PhotoRec 皆支持在 Windows、Linux、Unix、Mac OS 等系统上执行。TestDisk 还支持包括 FAT、NTFS、Ext2、Ext3、ReiserFS、RAID 等在内的广泛的文件系统。而 PhotoRec 也能够在硬盘、光盘、优盘等各种存贮介质上工作。

  虽然数据恢复软件可以尽最大可能帮助我们挽回损失,但我们还是应该养成时常备份的习惯。只有真正做到有备无患,才能确保万无一失。

  由于错误的使用分区工具而带来的分区丢失,硬盘磁盘分区遭到损坏的情况下,使用叫做「TestDisk」的工具可以复原已损坏的分区。下面就介绍一下如何使用TestDisk急性恢复(注)。

  注:可以使用TestDisk进行复原的场合,也就是硬盘HDD上的分区(该分区有原有数据纪录)已经损坏的情形。但是如果损坏之后,重新再次做成了新分区的话,复原的可能性比较小,很困难。

  TestDisk可以从http://www.cgsecurity.org/wiki/PhotoRec下在(注)。下载Fedora Core 6 对应的RPM包文件。例如、如果使用GNOME的分区管理软件「GParted」(Gnome Partition Editor)误删除了/dev/hda5分区。

  注:Linux下恢复误删除的文件 中介绍了使用「PhotoRec」对误删除的文件进行恢复。

  注:TestDisk是恢复分区信息的软件、针对分区表被删除以及MBR(master boot record)被修改的恢复分区信息软件:TestDisk、使用前请先确认。

  对于安装和配置请参照Linux下恢复误删除的文件。

  以root权限登陆,启动TestDisk。

  # testdisk

  首先,选择恢复操作中的log文件(testdisk.log)的纪录方式。

  [Create]新建
  [Append]追加
  [No Log]不纪录


  选择log文件的记录方式

  选择了log文件的记录方式后、显示了处于连接状态的磁盘设备。然后选择要恢复的磁盘分区、选择[Proceed]。在这里选择装有Linux/Windows XP的硬盘HDD「Disk /dev/hda」。

  在列出的磁盘设备中,选择要恢复的分区,然后选择磁盘分区的种类。Linux/Windows就选[Intel]。

  下示画面中选择[Analyse],对分区进行分析。



  显示了当前分区的状态。然后选择[Proceed]、显示分析結果。


  分区状态表示

  分区结构以绿色文字表示。和分析之前的画面相比、Linux的分区增加了一项,这个就是被误删除了的分区,选择之。

  按[P]键,该分区根部的文件和索引被表示出来,如果显示正确的画,分析结果就可以正确的推算。然后用这个方法,对其他的盘符进行操作。

  分区的分析结果

  按[Enter]键,显示分析结果被反映到磁盘。并且被恢复。

  现在的状态,恢复的信息还没有被写到硬盘上,必须选择[Write],才能真正的被写到磁盘上。写操作执行的确认信息显示的时候,按[Y]键确认之。


  写操作执行完毕,需要重新启动,按[Enter]键。

  最后退出[Quit],TestDisk结束。系统重新启动。

posted @ 2007-11-24 14:12 MEYE 阅读(666) | 评论 (0)编辑 收藏
软件测试工具网址大全

压力测试工具集工具相关网址

LoadRunner  http://www.mercuryinteractive.com/products/loadrunner/

SilkPerformer  http://www.segue.com/products/lo ... e-testing/index.asp

QALoad      http://www.compuware.com/products/qacenter/qaload.htm

WebLoad

OpenSTA开源

Jmeter开源


自动测试工具集工具相关网址

WinRunner   http://www.mercuryinteractive.com/products/winrunner/

SilkTest         http://www.segue.com/products/fu ... esting/silktest.asp

QARun          http://www.compuware.com/products/qacenter/qarun.htm

SAFS             http://safsdev.sourceforge.net/Default.htm

Bug追踪系统工具相关网址

JIRA         http://www.atlassian.com/software/jira/

Bugzilla     http://www.bugzilla.org

TestDirector    http://www.mercuryinteractive.com/products/testdirector/

GNATS           http://www.gnu.org/software/gnats/

TestTrackPro      http://www.seapine.com/ttpro.html

类型 名称 公司 网址

测试设计工具

ALLPAIRS http://satisfice.com/

Caliber-RBT http://www.tbi.com

Caliber-RM http://www.tbi.com

DARTT http://home.t-online.de/home/bsse.info/

Datatect http://www.datatect.com

DGL http://www.csee.usf.edu/~maurer/

McCabe Test http://www.mccabe.com

McCabe TestCompress http://www.mccabe.com

Multi http://www.testing.com/

Panorama C/C++ http://www.softwareautomation.com

Reactis Tester http://www.reactive-systems.com

TDGEN http://www.soft.com/Products/index.html

T-VEC Test Generation System http://www.t-vec.com

GUI测试驱动器 Android http://www.smith-house.org/open.html

Atesto Functional Testing Service "http://www.atesto.com/ "

AutoTester for Windows http://www.autotester.com

AutoTester for OS/2 http://www.autotester.com

CAPBAK http://www.soft.com/Products/index.html

Certify http://www.worksoft.com/

CitraTest http://www.tevron.com

e-Monitor http://www.empirix.com/

e-Tester http://www.empirix.com/

eValid http://www.e-valid.com/

imbus GUI Test Case Library http://www.imbus.de

QARunTM http://www.compuware.com/qacenter

Panorama-2 "http://www.softwareautomation.com "

QC/Replay http://www.centerline.com

QES/EZ for GUI http://www.qestest.com

Monitor Master http://www.argogroup.com

SilkTest http://www.segue.com

Smalltalk Test Mentor http://www.silvermark.com

Test Now http://www.stlabs.com/

TestQuest Pro Test Automation System http://www.testquest.com

TestRunner http://www.qronus.com/

WinRunner Mercury Interactive http://www.merc-int.com

xrc - X Remote Control http://www.absol.com/

Xrunner http://www.merc-int.com

负荷和性能工具 ANTS - Advanced .NET Testing System http://www.red-gate.com/

Atesto Automated Load Test http://www.atesto.com/

AutoController http://www.autotester.com

AutoController with Virtual DirectTest http://www.autotester.com

Benchmark FactoryTM http://www.quest.com

Capacity Calibration http://www.capcal.com

Chariot? http://www.ganymedesoftware.com

CYRANO ServerPack http://www.cyrano.com

e-Load http://www.empirix.com/

FORECAST http://www.facilita.co.uk

ITF - Internetworking Test Facility http://www.acomtech.com

Load http://www.pushtotest.com

Load Runner Product Family http://www.merc-int.com

Microsoft Web Application Stress Tool (WAS) http://webtool.rte.microsoft.com/

NetPressure http://www.syntheticnets.com

PegasusTM http://www.ganymedesoftware.com

Portent http://www.loadtesting.com

preVue-ASCII http://www.rational.com/products/prevue/

preVue-X http://www.rational.com/products/prevue/

"PureLoad" http://www.minq.se

QALoadTM http://www.compuware.com

Rational Suite PerformanceStudio http://www.rational.com/products/pstudio/

"Rational SiteLoad" http://www.rational.com/products/siteload/

RemoteCog Product Family http://www.fiveninesolutions.com

Scapa StressTest for Citrix MetaFrame http://www.scapatech.com

SilkPerformer http://www.segue.com/

Teleprocessing Network Simulator http://www.networking.ibm.com/tns/tnsprod htm

WebLoad 3.0 http://www.radview.com

Web Roller http://webapplicationstesting.com

Webserver Stress Tool http://www.paessler.com

WebSpray http://www.redhillnetworks.com

非GUI测试驱动器

"AdaTEST" http://www.qcsltd.com

ANVL http://www.midnight.com/

AutoAdviser http://www.autotester.com

AutoTester Client/Server for use with SAP R/3 http://www.autotester.com

Cantata http://www.qcsltd.com

"CONVEX Integrated Test Environment (CITE)" http://www.cirr.com/

CTA++ http://www.testwell.fi

CTB http://www.testwell.fi

ITF - Internetworking Test Facility http://www.acomtech.com/

OTF - An Object Testing Framework "http://www.mcgsoft.com/ "

QADirector? http://www.compuware.com/qacenter

"QCIT" http://www.qistest.com

QES/Architect http://www.qestest.com

QES/EZ http://www.qestest.com

QMTest http://www.codesourcery.com/

SilkPilot http://www.segue.com

SMARTS http://www.soft.com/Products/index.html

SDTF - SNA Development Test Facility http://www.acomtech.com

TALC2000 http://www.talc2000.com

TBGEN http://www.testwell.fi

TEO http://www.gako.fr

Test Manager http://www.launchsoftware.com

Test Mentor - Java Edition http://www.javatesting.com

Test Library Manager http://www.autotester.com

"Test Station" http://www.autotester.com

TestWorks http://www.soft.com/Products/index.html

VectorCAST http://www.vectors.com

VersaTest http://www.softsell.com

测试实现工具 Access for DB2 http://www.princetonsoftech.com/

Aprobe http://www.ocsystems.com

Aqtest http://www.automatedqa.com/

BoundsChecker compuware http://www.numega.com/

C++Test http://www.parasoft.com

DateWise FileCompare http://www.datewise.com/mt

dmalloc http://www.dmalloc.com/

EXDIFF http://www.soft.com/Products/index.html

"fakesmtpd" http://www.jera.com/

"FREstimate" http://www.softrel.com/

HeapAgent http://www.microquill.com

InCtrl5 http://www.zdnet.com/downloads/stories/info/0,77424,.html

JSUnit http://www.edwardh.com/jsunit/

Junit http://www.junit.org/

MDBDiff http://jupiter.drw.net/matpie/PB ... s/retired/MDBDiff.h tml

Move for DB2 http://www.princetonsoftech.com/

mpatrol http://www.cbmamiga.demon.co.uk/mpatrol/

"ObjectTester" http://www.obsoft.com

Inuse http://www.parasoft.com

Rational Purify http://www.rational.com/products/purify_unix/index.jtmpl

Rational Test RealTime http://www.rational.com

SilkRealizer http://www.segue.com

WhenToStop http://www.softrel.com/

ZeroFault http://www.tkg.com

测试评估工具

AdaTEST95 http://www.qcsltd.com

Aonix Validator/Req http://www.aonix.com/

C-Cover http://www.bullseye.com

Cantata++ http://www.qcsltd.com

CodeTEST http://www.amc.com

CTC++ http://www.testwell.fi

GlassJARToolkit http://glassjartoolkit.com/gjtk.html

"Hindsight/TCA"http://www.integrisoft.com

Hindsight/TPA http://www.integrisoft.com

"Insure++"http://www.parasoft.com

"Java Test Coverage" http://www.semdesigns.com/Products/TestCoverage/index.html

LDRA Testbed http://www.ldra.com

"LOGISCOPE toolset" http://www.telelogic.com/

ObjectCoverage http://www.obsoft.com

Panorama C/C++ "http://www.softwareautomation.com "

Rational PureCoverage http://www.rational.com/products/purecoverage/index. jtmpl

"TCMON" http://www.testwell.fi

TCA "http://www.parasoft.com "

TCAT C/C++ http://www.soft.com/Products/index.html

TCAT for Java http://www.soft.com/Products/index.html

TCAT-PATH http://www.soft.com/Products/index.html

T-SCOPE http://www.soft.com/Products/index.html

TestWorks/Coverage http://www.soft.com/Products/index.html

静态分析工具

AccVerify SE for FrontPage http://www.hisoftware.com/msacc/

Aivosto Project Analyzer http://www.aivosto.com/vb.html

ASSENT http://www.tcs.com

ccount "http://www.cs.umd.edu/users/cml/resources/cmetrics/ "

"Cleanscape lint-Plus" http://www.cleanscape.net/stdprod/lplus/index.html

ClearMaker http://www.balthazar.hu

"CMT++" http://www.testwell.fi

CodeCompanion http://www.jenssoft.com

CodeSurfer http://www.grammatech.com

"Dependency Walker" http://www.dependencywalker.com/

floppy/fflow http://netlib2.cs.utk.edu/floppy/

ftnchek http://www.dsm.fordham.edu/~ftnchek

Hindsight/SQA http://www.integrisoft.com

Krakatau http://www.powersoftware.com/

McCabe QA http://www.mccabe.com

METRIC http://www.soft.com/Products/index.html

ObjectDetail http://www.obsoft.com

CodeWizard http://www.parasoft.com

Jtest http://www.parasoft.com

PC-lint/FlexeLint http://www.gimpel.com/

PC-Metric http://www.molalla.net/~setlabs

PolySpace Verifier http://www.polyspace.com

Plum Hall SQS http://www.plumhall.com

QA C http://www.prqa.co.uk

QA C++ http://www.prqa.co.uk

"QA Fortran" http://www.prqa.co.uk

"QStudio Java" http://www.qa-systems.com

Safer C Toolset http://www.oakcomp.co.uk/SoftwareProducts.html

SofAudit http://www.soring.hu/index.html

STATIC http://www.soft.com/Products/index.html

TestBed http://www.easternsystems.com

TestWorks/Advisor http://www.soft.com/Products/index.html

缺陷跟踪工具

1CR http://www.plus-one.com/+1CR_fact_sheet.html

Aardvark http://www.red-gate.com/

AdminiTrack http://www.adminitrack.com

Alcea Fast BugTrack http://www.alceatech.com/

AllChange 2000 http://www.intasoft.co.uk/intasoft/

BugAware http://www.bugaware.com

"Bugbase 2000" http://www.threerock.com

"Bugcentral.com" http://www.bugcentral.com/

BugCollector Pro http://www.nesbitt.com/

Bug/Defect Tracking Expert http://www.bug-defect-tracking-expert.com/

"Buggit" http://www.pb-sys.com/

Buggy http://www.novosys.de/Buggy/Buggy.html

"Bugzero" http://www.websina.com/bugzero/

Bugzilla http://www.mozilla.org/projects/bugzilla/

"Census" http://www.metaquest.com/

"ClearQuest" http://www.rational.com/products/clearquest/

CustomerFirst http://www.custfirst.com/products.html

Debian Bug Tracking System http://www.chiark.greenend.org.uk/~ian/debbugs/

Defect Tracker (New Fire) http://www.newfire.com/

Defect Tracker (Pragmatic) http://www.Pragmaticsw.com/Pragmatic/DefectTrac ker.asp

Defect Tracking System (DTS) http://www.open.com.au/dts/

"defectX" http://www.defectx.com/

DevTrack http://www.techexcel.com/

"d-Tracker" http://www.empirix.com/

elementool http://elementool.com/

"ExtraView" http://www.extraview.com/extraview_home.html

FogBUGZ http://www.fogcreek.com/FogBUGZ/

JitterBug http://samba.anu.edu.au/cgi-bin/jitterbug

Keystone Problem Tracking System http://www.stonekeep.com/

NeumaPT http://www.neuma.com/

SWBTracker http://www.softwarewithbrains.com/swbtrack.htm

"Squish" http://www.squishlist.com

T-Plan Incident Manager http://www.t-plan.co.uk

TeamTrack http://www.teamshare.com

TeamTrack Workgroup http://www.teamshare.com

Team Tracker http://www.hstech.com.au/TeamTracker/

TestTrack http://www.seapine.com

"TrackWeb Defects" http://www.soffront.com/

Trackgear http://www.logigear.com/

TrackRecord http://www.numega.com/devcenter/tr.shtml

"Trackwise" http://www.sparta-systems.com/


posted @ 2007-11-21 20:21 MEYE 阅读(915) | 评论 (0)编辑 收藏

一些非常有用的内核网站!

2.6內核的开发过程:
http://linux.tar.bz/articles/2.6-development_process

kenreltraffic, 有很多内核的资料,以及lkml的digestion
http://www.kerneltraffic.org/kernel-traffic/index.html

lkml的Web主页:
http://lkml.org/


http://www.tuxmagazine.com/

一个Linux Cross-Referrence站点,可以浏览、搜索内核源代码
http://lxr.linux.no/source/


http://vger.kernel.org/majordomo-info.html#subscription

linuxjournal
http://www.linuxjournal.com/

以设备驱动开发为主题的:
http://www.linuxdevices.com/index.html

Linux Weekly News, 精彩技术每周回顾(部分内容不免费):
http://lwn.net/

http://www.linux-mag.com/frontpage/Itemid,1/

Kerneltrap, 有关于Linux和*BSD的内核的新闻, 和对社区黑客的采访。
http://kerneltrap.org/

2.4内核的VM Documentation:
http://www.skynet.ie/~mel/projects/vm/

内核模块的移植:
http://lwn.net/Articles/driver-porting/

内核的官方站点:
http://www.kernel.org/

2.6各个子版API的变化都在这里:
http://lwn.net/Articles/2.6-kernel-api/

http://www.uwsg.indiana.edu/hypermail/linux/kernel/

google的Group页面, 它比lkml本身速度快, 对搜索的支持也好:
http://groups.google.com/group/linux.kernel?hl=zh-CN

关于Linux下的汇编编程:
http://linuxassembly.org/

Device Drivers

http://www.alsa-project.org/

http://lwn.net/Kernel/LDD3/

http://lwn.net/Articles/driver-porting/

Kernel Hackers' HomePages

Andrew Morton的主页:
http://www.zipworld.com.au/~akpm/

Ulrich Drepper的主页:
http://people.redhat.com/drepper/

Robert Love的blog:
http://rlove.org/log/2005011801.html

Greg KH的主页:
http://www.kroah.com/linux/

Ingo Molnar的主页:
http://people.redhat.com/mingo/

David Miller的主页:
http://vger.kernel.org/~davem/


下面這個最全, 它收錄了大部分內核黑客的個人主頁地址。
ftp://ftp.nl.kernel.org/pub/linux/kernel/people/




linux常用网站详单(转)

LINUX资源网
http://www.fanqiang.com  在这里可以学到很多哟!
http://www.Linuxhq.com/,Linux总部,主要负责核心的开发工作。  
http://freesoft.cei.gov.cn/,中国Linux的资源宝藏  
http://xchina.cLinux.org/,包括Linux程序下载,窍门,技术资料,内容丰富。  
http://www.Linuxaid.com.cn/,提供技术支持服务,也有很多面向初学者的资料  
http://www.Linux.org.cn/  
http://www.cLinux.org/,收集了各类Linux中文资料  
http://lark.ihep.ac.cn/,内容包罗万象,有中文软件,软件仓库等。  
http://Linux.joyo.com:3000/,有很多内容,还可以打包下载Linux公报。  
http://home.jjinfo.com/personal/Linuxboy/,Linux发展介绍及资源荟萃。  
http://www.xteamLinux.com.cn/  
http://www.turboLinux.com.cn/  
http://www.hklug.org/,了解香港Linux的好网站  
http://chinese.Linux.org.tw/,为台湾中文化Linux计划(Chinese  Linux Project)正式网站。
http://cle.Linux.org.tw/CLE/,中文Linux扩展(CLE),基于Red  Hat和KDE的中文解决
http://ccss.cc.nccu.edu.tw/  
http://www.Linuxers.com.tw/,一本不错的Linux网络杂志。  
http://www.redhat.com/,是搜索Linux各类资源的上好网站。  
http://www.debian.org/,Debian  Linux 的官方网站
http://www.suse.com/,S.U.S.E.  Linux 的官方网站
http://www.pht.com/,Turbo  Linux 国外的官方网站
http://li.org/,有大量的Linux资源列表。  
http://www.Linuxresources.com/,Linux网站,软件,文档,支持等等,内容应有尽有。  
http://sunsite.unc.edu/Linux-source/,包含了几乎所有Linux分类的源代码。  
http://Linux.box.ck/,资源全面的Linux宝箱。  
http://www.Linuxsupportline.com/,Linux网上技术支持的网站。  
http://lsd.Linux.cz/,Linux驱动程序的源代码  
http://www.kde.org/,KDE的大本营。  
http://www.kernel.org,齐全的Linux的核心的各种版本。  
http://www.sendmail.org,Linux世界下最广泛使用的软件之一,这里就是它的老家。  
ftp://sunsite.unc.edu/pub/Linux/,有着极丰富的软件资源  
http://www.slackware.com/,Slackware  Linux的网站,
LINUX学习网(从初学到高级)
http://www.fanqiang.com  老大的站点强烈推荐
http://Linux.ccpi.gov.cn/Linux/,有很多Linux安装、管理、释疑和指南类文章。  
http://www.Linuxforum.net/,国内Linux爱好者的一个相互学习和交流的场所。  
http://www.Linux.org.tw/,台湾的Linux爱好者组织,列有翻译的Linux  HOWTO 中文版。
http://evon.el.cycu.edu.tw/,列有Linux简介及操作说明。  
http://www.tvds.com.tw/Linux/,定期推出  Linux 应用的相关文章同时有线上讨论区。
http://www.Linux.com/,学习Linux的最好网站,也是Linux使用经验  
http://www.caldera.com/,Caldera  的官方网站
http://www.Linux-howto.com/,查找Linux-Howto的最佳网站,包括了最  
新最全的Linux-Howto的各种版本。
http://www.Linuxhelp.org/,最大最全的Linux在线帮助网站  
http://www.Linuxgazette.com/,著名的免费在线杂志技巧,是Linux用户交流中心之一  
http://www.Linuxfocus.org/,免费电子杂志《Linux  focus》
,特色是每期集中讨论一个话题。
http://www.Linuxjournal.com/,很棒的Linux专业杂志  
LINUX论坛
http://bbs.linuxmine.com liinux宝库论坛
http://www.chinaunix.net  老大的强劲论坛
http://Linux.inhk.net/,包含新闻、初学入门、技巧、资源和讨论等。  
http://www.cLinuxworld.com/,中文门户网站,设有论坛、新闻栏目,还提供主页空间。  
http://Linux.arecool.net/  ,有很丰富的中文分类文档。还有论坛,编程等。
http://www.Linux.org/,最权威的Linux网站,  文章讨论无所不包,软件硬件应有尽有。
http://bbs.tsinghua.edu.cn  水木清华BBS
http://bbs.ustc.edu.cn  上海交大BBS
http://bbs.sjtu.edu.cn  中国科技大学BBS
http://www.sina.com.cn  新浪网BBS
http://bbs.nease.net  广州网易BBS站
http://news.freesoft.cei.gov.cn,由宫敏博士主持,人气很旺,Linux爱好者的交流好场所。  
http://news.cLinux.ml.org,是国内规模较大的新闻服务器,  
http://cn.bbs.comp.Linux是各大学BBS站Linux版与News的连接。  
http://202.38.64.2,国内最大的Linuxv新闻组之一  
http://www.gb2312.com  ,下载密码是 www.gb2312
著名的FTP网站:
ftp://ftp.cdrom.com    
ftp://ftp.pku.edu.cn/pub/slackware  
ftp://ftp.ihep.ac.cn/pub/Linux  
ftp://ftp.synet.edu.cn/pub/Linux  
ftp://ftp.sepc.ac.cn/pub/Linux  
ftp://ftp.buptnet.edu.cn/pub/slackware   
ftp://net.tamu.edu/pub/Linux  
ftp://freesoft.cei.gov.cn/pub/Linux,国内最大的Linux  FTP站。
(下载大全)
BSD学习网
http://fbsd.8800.org/freebsd.lab.mlc.edu.tw/default.htm  
http://fbsd.8800.org/freebsd.lab.mlc.edu.tw/index.html  
http://freebsd.sinica.edu.tw  
http://ns1.study-area.org/phpBB/  
http://ohaha.ks.edu.tw/  
http://www.gocar.idv.tw/  
http://w3.fjy.idv.tw/index.htm  
http://freebsd.csie.nctu.edu.tw/  
http://person.zj.cninfo.net/~syx/index.html  
http://redhat.ecenter.idv.tw/bbs ... e757&forumid=65  
http://www.freebsd.org.hk/modules/news/  
http://freebsd.ntu.edu.tw/  
http://www.freebsd.org.hk/modules/news/  
鼻祖网:
http://www.freebsd.org  
http://www.netbsd.org  
http://www.openbsd.org  
BSD资源网
ftp://ftp2.freebsd.org/  
ftp://freebsd.nctu.edu.tw/  
http://www.yesnew.com/~yangyi/chandbook.zip  
http://www.freebsd.org /doc/en_US.ISO8859-1/books/handbook/index.html
http://www.yesnew.com/~yangyi/The_Complete_FreeBSD.zip  
http://www.yesnew.com/~yangyi/TCP-IP1.zip  
http://www.freebsdchina.org  
SOLARIS(X86、SPARC)
http://202.108.44.140  
ftp://202.108.44.140  user:unix2002 pass:unix2002
OTHERS:
http://linux.softhouse.com.cn  软件屋-Linux之家http://www.bluepoint.com.cn  蓝点Linux
http://cnheasa.org/linux  Linux 中文资料
http://linux.ccpi.gov.cn/linux  Linux操作指南 http://www.linuxzyd.com  Linux专营
http://www.turbolinux.com.cn  Turbo
http://www.linuxaid.com.cn  Linux技术支持网站http://member.netease.com/~yzp  Linux工作室http://www.linuxforum.net/  中国Linux论坛
http://www.redflag-linux.com  红旗Linux
http://www.pocketix.com  嵌入式Linux
http://www.xteamlinux.com.cn  XteamLinux
http://timzen.go.163.com  Linux菜鸟入门
http://linux.tcpip.com.cn  Linux非常新闻
http://zlinux.spedia.net  JJ的Linux世界
http://lslnet.com/linux  自由软件Linux
http://member.netease.com/~yzp  Linux工作室
http://giny.4y.com.cn/  自由的精灵
http://linuxcity.com.cn/linuxstore  Linux 精品店
http://www.linux21cn.com/  21世纪linux
http://www.asplinux.com.cn  asplinux中国网站
http://www.ibm.com/developerworks/cn/linux/  IBM--linux专区
http://www.medboo.com/~jj  jj的linux世界
http://linux21cn.com  21世纪linux
http://www.linuxnow.com  linux now
http://www.linux.org  linux www
http://www.linuxgazette.com  linux gazette
http://www.linux.org .cn linux 中国用户协会
http://www.linuxbyte.net/softwared.php  LinuxByte 软件中心
http://linuxcity.com.cn/linuxstore /cd/cd.asp linuxcd精品光盘店
http://www.linuxhq.com  Linux HeadQuarters
http://www.linuxmall.com  LinuxMall.com
http://linux.ccpi.gov.cn  linux操作指南
http://www.linuxdby.com/  linux大本营站
http://www.cstc.org.cn/anounce/linux/index.asp  linux开放实验室 http://www.linuxcd.com.cn  linux刻录网
http://free.prohosting.com/~lslnet  linux蓝色小组
http://netsword.net/linux  linux学习
http://www.linuxeden.com  linux伊甸园
http://www.nodevice.com  linux园地
http://linuxhome.my163.com  linux之家(my163.com
http://members.tripod.com/~clinux  linux中文手册
http://www.linuxzy.com  linux专营
http://www.linuxwatch.org  Linuxwatch
http://www.penguin64.com.cn/  penguin64中文网
http://www.redhat.com  Red Hat
http://www.suse.com  SuSE LINUX
http://www.unixaid.net  unix中文社区
http://www.263bbs.net/  博识网
http://www.westdata.net/linux/  大漠驼铃--中文Linux学习
http://www.rce.com.cn/  红旗linux培训与考试中心
http://www.hhcn.org  华恒嵌入式Linux技术资料网站
http://www.lslnet.com/linux  蓝森林
http://www.mamiyami.com  麻米亚资讯站
http://www.freelamp.com  FreeLAMP.com
http://www.sinolinux.com  思凌网
http://linux.online.tj.cn  Linux中心
http://badfish.3322.net  Badfish's Linux
http://www.wanhenet.com  嵌入式Linux开发网
http://www.linuxbyte.net  LinuxByte
http://www.cmpp.net  中国linux论坛
http://www.yaboy.org  yaboy.org
http://www.iwork.f2s.com  linux computing
http://www.linuxfocus.org  linux focus
http://www.linuxjournal.com  linux journal
http://www.yesky.com/72350081310785536/index.shtml  天极网--Linux园地
http://linux.ccidnet.com  赛迪网--Linux

posted @ 2007-10-20 18:19 MEYE 阅读(716) | 评论 (0)编辑 收藏
Linux下的串口编程(ZT)

Linux下的串口编程(ZT)

Linux 操作系统从一开始就对串行口提供了很好的支持,本文就 Linux 下的串行口通讯编程进行简单的介绍。
串口简介
串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换 接口技术标准"该标准规定采用一个 25 个脚的 DB25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。传输距离在码元畸变小于 4% 的情况下,传输电缆长度应为 50 英尺。
Linux 操作系统从一开始就对串行口提供了很好的支持,本文就 Linux 下的串行口通讯编程进行简单的介绍,如果要非常深入了解,建议看看本文所参考的《Serial Programming Guide for POSIX Operating Systems》

计算机串口的引脚说明

序号 信号名称 符号 流向 功能
2 发送数据 TXD DTE→DCE DTE发送串行数据
3 接收数据 RXD DTE←DCE DTE 接收串行数据
4 请求发送 RTS DTE→DCE DTE 请求 DCE 将线路切换到发送方式
5 允许发送 CTS DTE←DCE DCE 告诉 DTE 线路已接通可以发送数据
6 数据设备准备好 DSR DTE←DCE DCE 准备好
7 信号地

    信号公共地
8 载波检测 DCD DTE←DCE 表示 DCE 接收到远程载波
20 数据终端准备好 DTR DTE→DCE DTE 准备好
22 振铃指示 RI DTE←DCE 表示 DCE 与线路接通,出现振铃
串口操作

串口操作需要的头文件

#i nclude     <stdio.h>      /*标准输入输出定义*/
#i nclude     <stdlib.h>     /*标准函数库定义*/
#i nclude     <unistd.h>     /*Unix 标准函数定义*/
#i nclude     <sys/types.h>  
#i nclude     <sys/stat.h>   
#i nclude     <fcntl.h>      /*文件控制定义*/
#i nclude     <termios.h>    /*PPSIX 终端控制定义*/
#i nclude     <errno.h>      /*错误号定义*/
打开串口
在 Linux 下串口文件是位于 /dev 下的
串口一 为 /dev/ttyS0
串口二 为 /dev/ttyS1
打开串口是通过使用标准的文件打开函数操作:

int fd;
/*以读写方式打开串口*/
fd = open( "/dev/ttyS0", O_RDWR);
if (-1 == fd){
/* 不能打开串口一*/
perror(" 提示错误!");
}
设置串口
最基本的设置串口包括波特率设置,效验位和停止位设置。
串口的设置主要是设置 struct termios 结构体的各成员值。

struct termio
{        unsigned short  c_iflag;        /* 输入模式标志 */       
        unsigned short  c_oflag;                /* 输出模式标志 */       
        unsigned short  c_cflag;                /* 控制模式标志*/       
        unsigned short  c_lflag;                /* local mode flags */       
        unsigned char  c_line;                    /* line discipline */       
        unsigned char  c_cc[NCC];    /* control characters */
};
设置这个结构体很复杂,我这里就只说说常见的一些设置:
波特率设置
下面是修改波特率的代码:

struct  termios Opt;
tcgetattr(fd, &Opt);
cfsetispeed(&Opt,B19200);     /*设置为19200Bps*/
cfsetospeed(&Opt,B19200);
tcsetattr(fd,TCANOW,&Opt);
  设置波特率的例子函数:

/**
*@brief  设置串口通信速率
*@param  fd     类型 int  打开串口的文件句柄
*@param  speed  类型 int  串口速度
*@return  void
*/
int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300,
                                        B38400, B19200, B9600, B4800, B2400, B1200, B300, };
int name_arr[] = {38400,  19200,  9600,  4800,  2400,  1200,  300, 38400,  
                                        19200,  9600, 4800, 2400, 1200,  300, };
void set_speed(int fd, int speed){
        int   i;
        int   status;
        struct termios   Opt;
        tcgetattr(fd, &Opt);
        for ( i= 0;  i < sizeof(speed_arr) / sizeof(int);  i++) {
                if  (speed == name_arr) {     
                        tcflush(fd, TCIOFLUSH);     
                        cfsetispeed(&Opt, speed_arr);  
                        cfsetospeed(&Opt, speed_arr);   
                        status = tcsetattr(fd1, TCSANOW, &Opt);  
                        if  (status != 0) {        
                                perror("tcsetattr fd1");  
                                return;     
                        }   
                        tcflush(fd,TCIOFLUSH);   
                }  
        }
}
效验位和停止位的设置:
无效验 8位 Option.c_cflag &= ~PARENB;
Option.c_cflag &= ~CSTOPB;
Option.c_cflag &= ~CSIZE;
Option.c_cflag |= ~CS8;
奇效验(Odd) 7位 Option.c_cflag |= ~PARENB;
Option.c_cflag &= ~PARODD;
Option.c_cflag &= ~CSTOPB;
Option.c_cflag &= ~CSIZE;
Option.c_cflag |= ~CS7;
偶效验(Even) 7位 Option.c_cflag &= ~PARENB;
Option.c_cflag |= ~PARODD;
Option.c_cflag &= ~CSTOPB;
Option.c_cflag &= ~CSIZE;
Option.c_cflag |= ~CS7;
Space效验 7位 Option.c_cflag &= ~PARENB;
Option.c_cflag &= ~CSTOPB;
Option.c_cflag &= &~CSIZE;
Option.c_cflag |= CS8;
设置效验的函数:

/**
*@brief   设置串口数据位,停止位和效验位
*@param  fd     类型  int  打开的串口文件句柄
*@param  databits 类型  int 数据位   取值 为 7 或者8
*@param  stopbits 类型  int 停止位   取值为 1 或者2
*@param  parity  类型  int  效验类型 取值为N,E,O,,S
*/
int set_Parity(int fd,int databits,int stopbits,int parity)
{
        struct termios options;
        if  ( tcgetattr( fd,&options)  !=  0) {
                perror("SetupSerial 1");     
                return(FALSE);  
        }
        options.c_cflag &= ~CSIZE;
        switch (databits) /*设置数据位数*/
        {   
        case 7:               
                options.c_cflag |= CS7;
                break;
        case 8:     
                options.c_cflag |= CS8;
                break;   
        default:   
                fprintf(stderr,"Unsupported data sizen"); return (FALSE);  
        }
switch (parity)
{   
        case 'n':
        case 'N':   
                options.c_cflag &= ~PARENB;   /* Clear parity enable */
                options.c_iflag &= ~INPCK;     /* Enable parity checking */
                break;  
        case 'o':   
        case 'O':     
                options.c_cflag |= (PARODD | PARENB); /* 设置为奇效验*/  
                options.c_iflag |= INPCK;             /* Disnable parity checking */
                break;  
        case 'e':  
        case 'E':   
                options.c_cflag |= PARENB;     /* Enable parity */   
                options.c_cflag &= ~PARODD;   /* 转换为偶效验*/     
                options.c_iflag |= INPCK;       /* Disnable parity checking */
                break;
        case 'S':
        case 's':  /*as no parity*/   
            options.c_cflag &= ~PARENB;
                options.c_cflag &= ~CSTOPB;break;  
        default:   
                fprintf(stderr,"Unsupported parityn");   
                return (FALSE);  
        }  
/* 设置停止位*/  
switch (stopbits)
{   
        case 1:   
                options.c_cflag &= ~CSTOPB;  
                break;  
        case 2:   
                options.c_cflag |= CSTOPB;  
           break;
        default:   
                 fprintf(stderr,"Unsupported stop bitsn");  
                 return (FALSE);
}
/* Set input parity option */
if (parity != 'n')   
        options.c_iflag |= INPCK;
tcflush(fd,TCIFLUSH);
options.c_cc[VTIME] = 150; /* 设置超时15 seconds*/   
options.c_cc[VMIN] = 0; /* Update the options and do it NOW */
if (tcsetattr(fd,TCSANOW,&options) != 0)   
{
        perror("SetupSerial 3");   
        return (FALSE);  
}
return (TRUE);  
}
需要注意的是:
如果不是开发终端之类的,只是串口传输数据,而不需要串口来处理,那么使用原始模式(Raw Mode)方式来通讯,设置方式如下:

options.c_lflag  &= ~(ICANON | ECHO | ECHOE | ISIG);  /*Input*/
options.c_oflag  &= ~OPOST;   /*Output*/
读写串口
设置好串口之后,读写串口就很容易了,把串口当作文件读写就是。
  • 发送数据

    char  buffer[1024];int    Length;int    nByte;nByte = write(fd, buffer ,Length)
  • 读取串口数据 使用文件操作read函数读取,如果设置为原始模式(Raw Mode)传输数据,那么read函数返回的字符数是实际串口收到的字符数。
    可以使用操作文件的函数来实现异步读取,如fcntl,或者select等来操作。

    char  buff[1024];int    Len;int  readByte = read(fd,buff,Len);
关闭串口
关闭串口就是关闭文件。

close(fd);
例子
下面是一个简单的读取串口数据的例子,使用了上面定义的一些函数和头文件

/**********************************************************************代码说明:使用串口二测试的,发送的数据是字符,
但是没有发送字符串结束符号,所以接收到后,后面加上了结束符号。我测试使用的是单片机发送数据到第二个串口,测试通过。
**********************************************************************/
#define FALSE  -1
#define TRUE   0
/*********************************************************************/
int OpenDev(char *Dev)
{
        int        fd = open( Dev, O_RDWR );         //| O_NOCTTY | O_NDELAY       
        if (-1 == fd)       
        {                        
                perror("Can't Open Serial Port");
                return -1;               
        }       
        else       
                return fd;
}
int main(int argc, char **argv){
        int fd;
        int nread;
        char buff[512];
        char *dev  = "/dev/ttyS1"; //串口二
        fd = OpenDev(dev);
        set_speed(fd,19200);
        if (set_Parity(fd,8,1,'N') == FALSE)  {
                printf("Set Parity Errorn");
                exit (0);
        }
while (1) //循环读取数据
{   
        while((nread = read(fd, buff, 512))>0)
        {
                printf("nLen %dn",nread);
                buff[nread+1] = '';   
                printf( "n%s", buff);   
        }
}
        //close(fd);  
        // exit (0);
}
参考资料


posted @ 2007-10-20 18:14 MEYE 阅读(518) | 评论 (0)编辑 收藏
嵌入式开发网站集锦!

国内站点:

电子设计信息网,尽管是个业界新秀,但潜力无量!这里能带给你无限精彩和希望!
http://www.edires.net/
华恒公司的主页,里面有很多的相关资料,有待大家去发现
http://www.hhcn.com/chinese/embedlinux-res.html
SkyEye嵌入式硬件仿真项目
www.skyeye.org
http://gro.clinux.org/projects/skyeye/
公社的SkyEye项目专栏
http://www.linuxfans.org/nuke/modul...=viewforum&f=58
Pday水清木华,一个国内看嵌入式新闻的好地方!
http://www.pday.com.cn/
中国单片机公共实验室
http://www.bol-system.com/
中国Linux论坛的嵌入式版,有很多开发板原理图的资料
http://openarm.linuxforum.net/
嵌入开发网
http://www.embed.com.cn/
微芯力科技
http://www.winsilicon.com
驱动开发网之嵌入式版块,挺综合的一个网站
http://www.driverdevelop.com/index.php

国外站点

Linux设备网站,由Rick Lehrbaum创建和维护,是一个嵌入式Linux入门网站,其中包含嵌入式Linux行业的每日新闻、完整系列的快速参考指南、由重要开发者撰写的大量文章,还包括一个交互论坛。
http://www.linuxdevices.com/
下载嵌入式Linux交叉编译工具链的好地方——SnapGear Embedded Linux Distribution Home Page
http://www.snapgear.org/snapgear/index.html
http://www.uclinux.org/pub/uClinux/...lf-tools/gcc-3/
嵌入式Linux联盟(ELC),一个非盈利性的厂商中立的同业工会,其目标是在整个嵌入式、应用和设备市场中发展和推广Linux。
www.embedded-linux.org
Beyond Logic公司主页,提供了许多嵌入式Linux系统开发的资料。
http://www.beyondlogic.org
嵌入式Linux期刊(ELJ,Embedded Linux Journal),主要关注Linux和其他开源软件在嵌入式系统中的应用。 其中有很多业界领导者为ELJ撰写文章。
embedded.linuxjournal.com
有几本写嵌入式Linux系统的书
http://www.embeddedlogic.com/ELSweb/booklinks.html
有关PowerPC体系的嵌入式
www.mvista.com
www.denx.de/e/index1.php
IXP4XX Open Source Developers Guide
http://ixp4xx-osdg.sourceforge.net/
uClinux/ARM项目
http://adam.kaist.ac.kr/~hschoe/notice.html
个人主页

一个业余爱好者代礼周的个人主页,都是实践出来的
http://www.lomx.net/index.htm
D_J嵌入式个人主页,有很多资料!
http://staff.ustc.edu.cn/~wangzhuo/index.html
renbagshoes的个人主页,有些资料可能你会用的到!
http://timity.nease.net

嵌入式Linux操作系统
小型化的嵌入式Linux版本
uClinux —— 在没有 MMU 的系统上运行的 Linux。目前支持 Motorola 68K、MCF5206 和MCF5207 ColdFire 微处理器。
http://www.uclinux.org/index.html
Etlinux —— 设计用于在小型工业计算机,尤其是 PC/104 模块上运行的 Linux 的完全分发版
http://www.prosa.it/etlinux/index.html
Tiny Linux ── 可以运行在 386 上的 Linux 分发版。
http://tiny.seul.org/en/
ThinLinux ── 面向专用的照相机服务器、X-10 控制器、MP3 播放器和其它类似的嵌入式应用的最小化的 Linux 分发版。
www.thinlinux.org
LRP(Linux Route Project)
http://www.linuxrouter.org
Peeweelinux一个小的嵌入式Linux发行版
http://freshmeat.net/projects/peeweelinux
具有实时扩展功能的嵌入式Linux版本
RT-Linux主页
http://www.fsmlabs.com
http://www.rtlinux.com
RTAI
http://www.rtai.org

嵌入式GUI

Microwindows 由Century Software的CEO Greg Haerr主持开发的一个公开源码(LGPL)的项目。Microwindows致力于为一些小型设备和平台提供现代图形窗口环境。 Microwindows支持许多硬件平台,移植性很强。Microwindows的主要目的之一便是运行在嵌入式Linux上,并且提供了基于 Win32/X的两套API接口。
http://www.microwindows.org
http://microwindows.org
MiniGUI 由原清华大学教师魏永明先生开发,是中国人做的得较好的自由软件之一。MiniGUI 是一种面向嵌入式系统或者实时系统的公开源码(LGPL)的图形用户界面支持系统。它主要运行于Linux控制台,实际可以运行在任何一种具有POSIX 线程支持的POSIX兼容系统上。
http://www.minigui.org
飞漫软件的MiniGUI项目
http://www.minigui.com/company/cindex.shtml
Qt/Embedded 是著名的QT库开发商Trolltech正在进行的面向嵌入式系统的QT版本。Qt/Embedded对于各种硬件接口到 GUI工具包提供了完整的图形栈。Qt/Embedded的API同Qt/X11和Qt/Windows的相同,但它并不是基于X11库的。 Qt/Embedded是公开源码(LGPL)项目。
http://www.trolltech.com
OpenGUI基于一个用汇编实现的x86图形内核,提供了一个快速的、32位的、高层的C/C++图形接口。OpenGUI也是一个公开源码(LGPL)项目。OpenGUI提供了二维绘图原语,消息驱动的API和BMP文件格式支持。
http://www.tutok.sk/fastgl
PicoGUI 是一个可以工作在包括手持式设备等各种硬件上的小型的、可移植的、基于客户/服务器结构的GUI。同X Window系统一样,它具有客户—服务器结构的灵活性,但又不同于X Window系统,它将字体、BMP文件、控件以及一些应用程序所需要的其它的一些资源直接集成在服务器。虽然减少了系统的灵活性,但在速度上有了很大的 提高,并且减小了程序大小。
http://picogui.org
Tiny-X是一个为嵌入式系统而开发的紧缩型的X Window服务器。它由SuSE赞助,由XFree86的核心成员Keith Packard开发。Tiny-X的目标是可以在小内存或几乎无内存的情况下良好运行。
http://www.pps.jussieu.fr/~jch/software/kdrive.html
PIXIL提供嵌入式在高级因特网中应用程序的应用。它虽然是为商业化准备的,但它提供GPL协议下的版本,区别是没有技术支持。
http://www.pixil.org
NxZilla - Mozilla on NanoX
http://nxzilla.sourceforge.net
Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. It is used by MPEG playback software, emulators, and many popular games, including the award winning Linux port of "Civilization: Call To Power."
http://www.libsdl.org/index.php
GtkFB: GTK+ for the Linux Framebuffer
http://www.linuxdevices.com/articles/AT9024868021.html

嵌入式Linux与Java

Java 2 Micro Edition(J2ME官方站点)
http://www.javasoft.com/j2me/
waba为小设备提供一个编程平台。它被定义为一种语言,一个虚拟机,一个类文件格式以及功能类的设置。
http://wabasoft.com/products.shtml
Kaffe is a clean room implementation of the Java virtual machine, plus the associated class libraries needed to provide a Java runtime environment. The Kaffe virtual machine is free software, licensed under the terms of the GNU General Public License.Kaffe is a great choice as a base for virtual machine education and/or research, or if you need a virtual machine as an integral component of an open source or free software Java distribution.
http://www.kaffe.org
Wonka(一个java虚拟机,超小)
http://www.acunia.com/wonka


嵌入式综合性网站 http://www.eg3.com (英文)
丰富的产品介绍、丰富的链接(嵌入式领域)。
http://altair.ihep.su/~kulemzin/index.html (英文)
为嵌入式开发人员提供大量的信息资源。
http://www.embedded-directory.com (英文)
嵌入式产品、工具介绍,包括硬件、软件、开发工具、开发服务商、测试设备、单板、处理器、信号处理器、分析仪等。
http://www.siliconpenguin.com (英文)
嵌入式Linux资源网站
http://cs-www.bu.edu/pub/ieee-rts/Home.html (英文)
IEEE计算机协会实时系统技术分会主页,提供该组织研究文档、实时系统研究组织名录以及书刊、杂志、产品的链接。
http://www.es-mag.com (英文)
欧洲关于嵌入式设计的杂志《EmbeddedSystems》网站
http://www.esofta.com (英文)
按处理器提供嵌入式产品、工具索引介绍。
奔微实时操作系统--KarlOS微内核
KarlOS 是一种小型且可靠的实时内核,特别是针对嵌入式系统而设计。内核自身能被非常灵活地修改到任一平台,因为它用于硬件抽象层(HAL)来隐藏任一硬件的特定功能,以至于可以协调内核的功能。同时KarlOS象一些传统的内核,用于平台抽象层(PAL)技术。
http://www.embeddedtechnology.com (英文)
包含大量的嵌入式产品、开发工具、产品提供商介绍。
http://www.realtime-info.com (英文)
实时系统综合性信息网站,《Real-Time Magazine》杂志主办者。提供实时操作系统及其它相关产品购买指导,实时技术研究组织机构介绍,业界新闻和重要活动消息发布,《Real-Time Magazine》杂志网上介绍。
http://www.electronic-forecast.com (英文)
提供嵌入式工业市场、产品研究信息,向用户提供产品购买指导。
http://www.primenet.com/~magpub/ (英文)
实时系统杂志网站,内容广泛。
http://www.ifi.unizh.ch/groups/ailab/links/embedded.html (英文)
提供大量的嵌入和实时系统链接资源。
http://www.forthinc.demon.co.uk/info/links/index.htm (英文)
提供丰富的嵌入式开发链接。
http://www.embedded-systems-messe.de (英文)
嵌入式产品展览会Internet发布网站。
http://www.embeddedinternet.com (英文)
嵌入式产品展览Internet发布。
Windows CE下载区
微软最新Windows CE.Net 4.1下载试用。
http://www.embedded.com (英文)
美国一家关于嵌入式系统的综合性网站,《EMBEDDED SYSTEMS》杂志主办者。提供嵌入式产品和工具购买指导,嵌入式产品Demo下载,业界新闻及各类活动报道,包含大量的资源链接和嵌入式开发文章,以及丰富的业界广告。

嵌入式Linux 嵌入式LINUX硬件板卡供应商
嵌入式LINUX硬件板卡供应商嵌入式LINUX开发套件供应商

嵌入实时操作系统 http://linux-embedded.com/links.php3 (英文)
提供嵌入式Linux链接
http://www.cs.umd.edu/~fwmiller/etc/realtime/code.html (英文)
实时软件概要

嵌入论坛 白云黄鹤站
白云黄鹤站嵌入版,国内较热闹的嵌入开发论坛,很值得拜访
科大瀚海风云嵌入式论坛
中国科技大学嵌入式论坛
星运网络-----电子工程师论坛
电子相关方面论坛,目前内容较少

民间团体 嵌入式Linux
主要是关于嵌入式Linux的内容
北京 Linux 俱乐部
主要是关于linux的内容
清华AKA
主要是关于linux的内容,有一些嵌入式系统的介绍
操作系统开发者
主要是关于linux的内容

链接资源 可编程逻辑器件网站
可编程逻辑器件网站致力于PLD/FPGA及VHDL技术在中国的推广。
电子网站之家
各地各类电子网站!电子网站大全!
IPANEL 嵌入式浏览器网站
详细介绍IPANEL嵌入式浏览器性能指标,用途等

科研团体 中国单片机公共实验室
内容主要集中在8位单片机,有一些值得一看的资料
中科院计算所RTOS主页
嵌入式系统软件研究组的主页,内容不多,但值得一看

开发工具 http://www.idiom.com/free-compilers/ (英文)
免费编译器目录
http://www.delorie.com/gnu/docs/gcc/gcc_44.html (英文)
介绍用GNU CC构造交叉编译器
http://www.gnu.org (英文)
GNU 自由软件组织

个人主页 iMCU--网络单片机
8月20日,全面改版,新版正式运行。目前尚有部分功能未完成。永久域名:http://imcu.126.com
电子网站大全
电子网站大全
开放的ColdFire网站 (英文)
完全开放原码,电路图的个人ColdFire网站。包括Free的TCPIP原码,uClinux和uCOS操作系统等等
嵌入式系统及器件论坛
内容少了点
51单片机世界
网站内容与网站名称描述相同,首页链接了大部分内容
汉东单片机实验室
关于单片机的个人网站中,是目前内容较丰富的一个
嵌入式RTOS
内容主要集中在嵌入式实时操作系统
单片机家园
一个单片机方面的个人网站。
嵌入式Linux个人网站
内容较少,仅一些文章和资源推荐!
电子工程师园地
有一些单片机和处理器的内容,主要是8051系列和X86系列,嵌入领域内容不多,内容有点杂
嵌入系统
主要内容包括MCS51\96系列和X86系列,BIOS的网络资源,简单的实时操作系统介绍,还有部分开发人员联合开发的实时操作系统介绍
电子工程师
内容主要集中在C51系列单片机
美国一位大学副教授的个人主页 (英文)
关于嵌入式处理器方面的个人工作项目介绍,有很多源码。

单片机 电子世纪
电子基础 mcu技术 mcu论坛 软件下载 数据手册 帮你开发 mcu解密 程序设计 校友挚友 招聘&人才 电子英语
单片机技术网
介绍单片机技术,开发和应用的专业网站,有众多应用文章,电子网站联接,产品项目介绍和部分产品网上销售等。内容包括单片机,工业控制,仪器仪表,信息家电,IC卡应用,防盗监控等

处理器类 http://www.bdti.com (英文)
提供大量DSP处理器信息。
http://www.mdronline.com/events/epf99/ (英文)
嵌入式处理器论坛。

产品信息 闻亭公司DSP产品
主要是dsp仿真器。
奔微实时操作系统--KarlOS微内核
KarlOS是一种小型且可靠的实时内核,特别是针对嵌入式系统而设计。内核自身能被非常灵活地修改到任一平台,因为它用于硬件抽象层(HAL)来隐藏任一硬件的特定功能,以至于可以协调内核的功能。同时KarlOS象一些传统的内核,用于平台抽象层(PAL)技术。
北京灵思信息系统有限公司
定位于嵌入式linux技术服务和提供解决方案的公司
广州中杰嵌入式计算平台
提供基于嵌入式硬件平台的产品级到系统级的完整解决方案,以满足用户嵌入式应用需求。

测试工具 http://www.rstcorp.com/marick/faqs/tools.htm (英文)
分类介绍各种测试工具产品。
http://www.stqe.net (英文)
软件测试资源网站。
http://www.testingstuff.com (英文)
一个介绍了大量测试工具的个人网站。
http://www.methods-tools.com/tools/frames_testing.html (英文)
提供大量的测试工具列表,包含简介与链接。



1. The Linux Kernel Module Programming Guide
http://www.dirac.org/linux/writing/lkmpg/2.6/lkmpg-2.6.0.html
2. Linux Device Drivers, 3rd Edition
By Jonathan Corbet, Greg Kroah-Hartman, Alessandro Rubini
http://linuxdriver.co.il/ldd3/
3. Writing Linux kernel modules
http://www.staerk.de/thorsten/index.php/Writing_Linux_kernel_modules


1. Building Embedded Linux System(英文)
http://oss.lzu.edu.cn/modules/wfdownloads/visit.php?cid=6&lid=87

2. 构建嵌入式Linux系统(中文)
http://oss.lzu.edu.cn/modules/wfdownloads/visit.php?cid=6&lid=51

转自:http://blog.chinaunix.net/u/21948/showart_354391.html

一、门户网站

1 ChinaUnix
网址: http://www.chinaunix.net
描述: C版块和shell版块很不错
C/C++论坛:http://bbs.chinaunix.net/forumdisplay.php?fid=23
shell论坛:http://bbs.chinaunix.net/forumdisplay.php?fid=24
man文档:http://man.chinaunix.net

2 中国Linux论坛
网址: http://www.linuxforum.net/
描述: 嵌入式Linux技术提高
Linux嵌入技术:http://www.linuxforum.net/forum/postlist.php?Cat=&Board=embedded
Linux内核技术:http://www.linuxforum.net/forum/postlist.php?Cat=&Board=linuxK
Linux设备驱动程序:http://www.linuxforum.net/forum/postlist.php?Cat=&Board=driver
C/C++编程版:http://www.linuxforum.net/forum/postlist.php?Cat=&Board=program

3 The ARM Linux Project
网址: http://www.arm.linux.org.uk/
描述: Linux for all ARM based machine

4 ARM官方网站
网址: http://www.arm.com/
描述: 提高ARM水平的最佳地方。文档和技术笔记均为英语,慢慢锻炼。
Document:http://www.arm.com/documentation/
Software:http://www.arm.com/community/software.php?PageTitle=Software&Categories=4&display=3

5 The Linux Kernel Archives
网址: http://www.kernel.org/
描述: Linux Kernel官方网站

6 IBM developerWorks
网址: http://www-128.ibm.com/developerworks/cn/
描述: 技术文档低中高级很丰富,作为系统学习的参考补充。

7 SourceForge
网址: http://sourceforge.net/
描述: 开源软件的入口。
U-boot:http://sourceforge.net/projects/uboot/

8 Linux fans
网址: http://www.linuxfans.org/nuke/index.php
描述: 国内很出名的Linux站点,人气很高。

二、技术博客

1 陈莉君
网址: http://www.lupaworld.com/26540
http://www.kerneltravel.net/
描述: 操作系统(Linux)研究。《深入理解Linux内核》的译者。kerneltravel里面关于kernel有很多精彩的文章,入门深入都可以在这里找到资料,可以讨论提高。

2 飞翔,嵌入式Linux
网址: http://blog.chinaunix.net/u/30686/index.html
描述: 嵌入式Linux方向

3 cnsLinux
网址: http://blog.chinaunix.net/u/13329/index.php
描述: Linux与程序设计

4 todaygood
网址: http://blog.chinaunix.net/u/24474/
描述: 嵌入式Linux方向

5 嵌入式Linux博客圈
网址: http://blog.chinaunix.net/group/group_25.html
描述: 我建立的嵌入式Linux方向的博客圈

6 Richard Stevens
网址: http://www.kohala.com/start/
描述: Richard Stevens的个人主页。

三、资料下载

1 Free Datasheet PDF Download
网址: http://www.ic-on-line.cn/
描述: 硬件芯片Datasheet可以在此下载

四、开发板厂商

1 北京恒颐
网址: http://www.hyesco.com/

2 华恒科技
网址: http://www.hhcn.com/chinese/cnindex.html

3 广州联智
网址: http://www.devicegate.com/

4 周立功单片机
网址: http://www.zlgmcu.com/home.asp

五、开发工具

1 GNU AS: Using AS---the GNU Assembler
http://sourceware.org/binutils/docs-2.16/as/index.html#Top

2 GNU LD: Using LD---the GNU Linker
http://www.gnu.org/software/binutils/manual/ld-2.9.1/html_mono/ld.html

3 GNU MAKE
http://www.gnu.org/software/make/manual/make.html

4 GNU GCC: Using the GNU Compiler Collection
http://gcc.gnu.org/onlinedocs/gcc-4.2.1/gcc/

5 GNU GDB: Debugging with GDB
http://sourceware.org/gdb/current/onlinedocs/gdb_toc.html

6 GNU CVS
http://ximbiot.com/cvs/manual/

7 VIM
英文:http://vimdoc.sourceforge.net/htmldoc/usr_toc.html
中文:http://vcd.gro.clinux.org/doc/usr_toc.html

8 几本重要的书
《Using and Porting the GNU Compiler Collection》
http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc.html
《Linkers and Loaders》
http://www.iecc.com/linker/

9 交叉编译工具链
http://www.codesourcery.com/gnu_toolchains/arm
备注:CodeSourcery公司提供的GNU Tools交叉编译工具,性能优越。我现在使用的是arm-2007q1,编译了U-boot-1.2.0,并且成功移植到s3c2410(2007-09-19)

六、程序设计

1 《The Art of UNIX Programming》
http://www.faqs.org/docs/artu/

2 《UNIX Programming FAQ》(中文版)
http://www.linuxforum.net/books/upfaq/book1.htm

PS: 这是从super兄(实际上只发过一次邮件交流过哦)的博客上摘录的,他的博客地址是(http://blog.chinaunix.net/u/21948/),主要是嵌入式方面的日志。记得刚上CU的时候因为找嵌入式方面的资源,跑到他的博客上,发现他也在学嵌入式,不过到现在他长进很大,可我还只是学了毛皮。回想起来,可能是这段时间东学学、西弄弄,没有一个主线,所以得静下心来好好学习和研究啦。


1. HOWTO BUILD A CROSS COMPILER WITH EMERGE !(gentoo)

http://dev.gentoo.org/~vapier/CROSS-COMPILE-HOWTO

2. Very Simple Guide for Building Cross Compilers Tips(Recommend)

http://www.ifp.uiuc.edu/~nakazato/tips/xgcc.html

3.cross compiler mini howto

http://linux.bytesex.org/cross-compiler.html

4. How to build a cross compiler for Linux/MIPS

http://www.village.org/villagers/imp/build.html

5. Building a cross-compiler

http://www.nongnu.org/thug/cross.html

6. Cross Compiling Gcc for PowerPC(like 2)

http://www.pages.drexel.edu/~sg64/stuff/cross-compile.htm

7. ARM cross-compiling howto(Recommend)

http://www.ailis.de/~k/archives/19-ARM-cross-compiling-howto.html

8. Building and Testing gcc/glibc cross toolchains

http://www.kegel.com/crosstool/

9. Building the x86_64 cross-compiling toolchain(Recommend)

http://home.ix.netcom.com/~ejohns/glfs-amd64/toolchain.html

10. Building a GCC Cross Compiler for the PowerPC

http://www.cs.duke.edu/~irwin/gcc_ppc.html

11. The PARISC-Linux Cross Compiler How TO

http://www.parisc-linux.org/toolchain/PA-Linux-XC-HOWTO-01.html

12. Cross compiling a 64-bit PowerPC Linux Kernel

http://wiki.ppckernel.org/w/Cross_compiling_a_64-bit_PowerPC_Linux_Kernel

13. x86 -> Alpha Cross Compiler HOWTO(Recommend)

http://www.cse.unsw.edu.au/~cgray/crossdev/x86-alpha-xcc.html

14. HOWTO Cross Compile(gentoo)

http://gentoo-wiki.com/HOWTO_Cross_Compile

15. Building a GNU/Linux ARM Toolchain (from scratch)

http://www.schnozzle.org/~coldwell/toolchain/



[转帖] 嵌入式Linux驱动程序开发要点

转自:一塌糊涂的BLOG

在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。
字 符设备与块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生。块设备则不然,它利用一块系统内存作为缓冲区,若用户进程 对设备的请求能满足用户的要求,就返回请求的数据;否则,就调用请求函数来进行实际的I/O操作。块设备主要是针对磁盘等慢速设备设计的,以免耗费过多的 CPU时间用来等待。网络设备可以通过BSD套接口访问数据。
每个设备文件都有其文件属性(c/b),表示是字符设备还是块设备。另外每个文件都 有2个设备号,第一个是主设备号,标识驱动程序;第二个是从设备号,标识使用同一个设备驱动程序的、不同的硬件设备。设备文件的主设备号必须与设备驱动程 序在登记时申请的主设备号一致,否则用户进程将无法访问驱动程序。

系统调用时操作系统内核与应用程序之间的接口,设备驱动程序是操作系统内核与机器硬件之间的接口。设备驱动程序是内核的一部分,它完成以下功能:
●对设备初始化和释放
●把数据从内核传送到硬件和从硬件读取数据
●读取应用程序传送给设备文件的数据和回送应用程序请求的数据
●检测和处理设备出现的错误

MTD(Memory Technology Device)设备是闪存芯片、小型闪存卡、记忆棒之类的设备,它们在嵌入式设备中的使用正在不断增加。MTD驱动程序是在Linux下专门为嵌入式环境 开发的新的一类驱动程序。相对于常规块设备驱动程序,使用MTD驱动程序的优点在于他们能更好的支持、管理给予闪存设备,有基于扇区的擦除和读/写操作的 更好的接口。

驱动程序结构
Linux的设备驱动程序可以分为3个主要组成部分:
1. 自动配置和初始化子程序,负责监测所要驱动的硬件设备是否存在和能否正常工作。如果该设备正常,则对这个设备及其相关的设备驱动程序需要的软件状态进行初始化。这部分驱动程序仅在初始化时被调用一次。
2. 服务于I/O请求的子程序,又称为驱动程序的上半部分。调用这部分程序是由于系统调用的结果。这部分程序在执行时,系统仍认为是与进行调用的进程属于同一 个进程,只是由用户态变成了核心态,具有进行此系统调用的用户程序的运行环境,因而可以在其中调用sleep()等与进行运行环境有关的函数。
3. 中断服务子程序,又称为驱动程序的下半部分。在Linux系统中,并不是直接从中断向量表中调用设备驱动程序的中断服务子程序,而是由Linux系统来接 收硬件中断,再由系统调用中断服务子程序。中断可以在任何一个进程运行时产生,因而在中断服务程序被调用时,不能依赖于任何进程的状态,也就不能调用任何 与进程运行环境有关的函数。因为设备驱动程序一般支持同一类型的若干设备,所以一般在系统调用中断服务子程序时,都带有一个或多个参数,以唯一标识请求服 务的设备。

在系统内部,I/O设备的存/取通过一组固定的入口点来进行,这组入口点是由每个设备的驱动程序提供的。具体到Linux系统,设备驱动程序所提供的这组入口点由一个文件操作结构来向系统进行说明。file_operation结构定义于linux/fs.h文件中。

struct file_operation{
int (*lseek)(struct inode *inode, struct file *filp, off_t off, int pos);
int (*read)(struct inode *inode, struct file *filp, char *buf, int count);
int (*write)(struct inode *inode, struct file *filp, const char *buf, int count);
int (*readdir)(struct inode *inode, struct file *filp, struct dirent *dirent, int count);
int (*select)(struct inode *inode, struct file *filp, int sel_type, select_table *wait);
int (*ioctl)(struct inode *inode, struct file *filp, unsigned int cmd, unsigned int arg);
int (*mmap)(void);
int (*open)(struct inode *inode, struct file *filp);
int (*release)(struct inode *inode, struct file *filp);
int (*fasync)(struct inode *inode, struct file *filp);
};

file_operation结构中的成员几乎全部是函数指针,所以实质上就是函数跳转表。每个进程对设备的操作都会根据major、minor设备号,转换成对file_operation结构的访问。
常用的操作包括以下几种:
●lseek, 移动文件指针的位置,只能用于可以随机存取的设备。
●read, 进行读操作,参数buf为存放读取结果的缓冲区,count为所要读取的数据长度。返回值为负表示读取操作发生错误;否则,返回实际读取的字节数。对于字符型,要求读取的字节数和返回的实际读取字节数都必须是inode-i_blksize的倍数。
●write, 进行写操作,与read类似
●readdir, 取得下一个目录入口点,只有与文件系统相关的设备程序才使用。
●select, 进行选择操作。如果驱动程序没有提供select入口,select操作会认为设备已经准备好进行任何I/O操作。
●ioctl, 进行读、写以外的其他操作,参数cmd为自定义的命令
●mmap, 用于把设备的内容映射到地址空间,一般只有块设备驱动程序使用
●open, 打开设备准备进行I/O操作。返回0表示打开成功,返回负数表示失败。如果驱动程序没有提供open入口,则只要/dev/driver文件存在就认为打开成功。
●release, 即close操作。
在 用户自己的驱动程序中,首先要根据驱动程序的功能,完成file_operation结构中函数实现。不需要的函数接口可以直接在 file_operation结构中初始化为NULL。file_operation变量会在驱动程序初始化时注册到系统内部。当操作系统对设备操作时, 会调用驱动程序注册的file_operation结构中的函数指针。
Linux对中断的处理

在Linux系统里,对中断的处理是属于系统核心部分,因而如果设别与系统之间以中断方式进行数据交换,就必须把该设备的驱动程序作为系统核心的一部分。设备驱动程序通过调用request_irq函数来申请中断,通过free_irq来释放中断。它们被定义为:
#i nclude <linux/sched.h>
int request_irq(unsigned int irq,
void (*handler)(int irq, void dev_id, struct pt_regs *regs),
unsigned long flags,
const char *device,
void *dev_id);
void free_irq(unsigned int irq, void *dev_id);
参 数irq表示所要申请的硬件中断号;handler为向系统登记的中断处理子程序,中断产生时由系统来调用,调用时所带参数irq为中断号;dev_id 为申请时告诉系统的设备标识;regs为中断发生时的寄存器内容;device为设备名,将会出现在/proc/interrupts文件里;flag是 申请时的选项,它决定中断处理程序的一些特性,其中最重要的是中断处理程序是快速处理程序还是慢速处理程序。快速处理程序运行时,所有中断都被屏蔽,而慢 速处理程序运行时,除了正在处理的中断外,其他中断都没有被屏蔽。在Linux系统中,中断可以被不同的中断处理程序共享。

作为系统核心的一部分,设备驱动程序在申请和释放内存时不是调用malloc和free,而代之以调用kmalloc和kfree,它们被定义为:
#i nclude <linux/kernel.h>
void *kmalloc(unsigned int len, int priority);
void kfree(void *obj);
参数len为希望申请的字节数;obj为要释放的内存指针;priority为分配内存操作的优先级,即在没有足够空闲内存时如何操作,一般用GFP_KERNEL。




posted @ 2007-10-18 14:29 MEYE 阅读(1744) | 评论 (0)编辑 收藏
     摘要: Linux编译内核 准备工作 通常要运行的第一个命令是: #cd /usr/src/linux;make mrproper 该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖 配置 接下来的内核配置过程比较烦琐,但是配置的适当与否与日后Linux的运行直接相关,有必要了解一下一些主要的且经常用到的选项的设置。 配置内核可以根据需要与爱好使用下面命...  阅读全文
posted @ 2007-10-18 11:31 MEYE 阅读(2761) | 评论 (0)编辑 收藏

Linux中文件查找技术大全

出处:LINUXDOOR


  每一种操作系统都是由成千上万个不同种类的文件所组成的。其中有系统本身自带的文件,用户自己的文件,还有共享文件等等。我们有时候经 常忘记某份文件放在硬盘中的哪个地方。在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击“开始”-“搜索”中就能按照 各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档。


  可是使用Linux的用户就没有那么幸运了,在Linux上查找某个文件确实是一件比较麻烦的事情。毕竟在Linux中需要我们使用专 用的“查找”命令来寻找在硬盘上的文件。Linux下的文件表达格式非常复杂,不象WINDOWS,DOS下都是统一的AAAAAAA.BBB格式那么方 便查找,在WINDOWS中,只要知道要查找的文件的文件名或者后缀就非常容易查找到。Linux中查找文件的命令通常为“find”命令,“find” 命令能帮助我们在使用,管理Linux的日常事务中方便的查找出我们需要的文件。对于Linux新手来说,“find”命令也是了解和学习Linux文件 特点的方法。因为Linux发行版本繁多,版本升级很快,在Linux书籍上往往写明某个配置文件的所在位置,往往Linux新手按图索骥还是不能找到。 比如说REDHAT Linux 7.O和REDHAT Linux 7.1中有些重要的配置文件所在的硬盘位置和文件目录就有了很大的改变,如果不学会使用“find”命令,那么在成千上万的Linux文件中要找到其中的 一个配置文件是相当困难的,笔者在没有精通“find”命令之前就吃过这样的苦头。好,下面就详细为大家介绍强大的“find”命令的全部使用方法和用 途。


  1.通过文件名查找法:


  这个方法说起来就和在WINDOWS下查找文件一样容易理解了。如果你把这个文件放在单个的文件夹里面,只要使用常见的“ls"命令就 能方便的查找出来,那么使用“find”命令来查找它就不能给你留下深刻的印象,毕竟“find”命令的强大功能不止这个。如果知道了某个文件的文件名, 而不知道这个文件放到哪个文件夹,甚至是层层套嵌的文件夹里。举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录下,甚至在系统的某个 地方也不知道,则这是可以使用如下命令:




find / -name httpd.conf


  这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求系统按照文件名查找,最后写上httpd.conf这个目标文件名即可。稍等一会系统会在计算机屏幕上显示出查找结果列表:




etc/httpd/conf/httpd.conf


  这就是httpd.conf这个文件在Linux系统中的完整路径。查找成功。


  如果输入以上查找命令后系统并没有显示出结果,那么不要以为系统没有执行find/ -name httpd.conf命令,而可能是你的系统中没有安装Apache服务器,这时只要你安装了Apache Web服务器,然后再使用find / -name httpd.conf就能找到这个配置文件了。


  2.无错误查找技巧:


  在Linux系统中“find”命令是大多数系统用户都可以使用的命令,并不是ROOT系统管理员的专利。但是普通用户使用 “find”命令时也有可能遇到这样的问题,那就是Linux系统中系统管理员ROOT可以把某些文件目录设置成禁止访问模式。这样普通用户就没有权限用 “find”命令来查询这些目录或者文件。当普通用户使用“find”命令来查询这些文件目录是,往往会出现"Permissiondenied."(禁 止访问)字样。系统将无法查询到你想要的文件。为了避免这样的错误,我们可是使用转移错误提示的方法尝试着查找文件,输入




find / -name access_log 2>/dev/null


  这个方法是把查找错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误的信息就直接输送到stderrstream 2 中,access_log 2就是表明系统将把错误信息输送到stderrstream 2中,/dev/null是一个特殊的文件,表明空的或者错误的信息,这样查询到的错误信息将被转移了,不会再显示了。


  在Linux系统查找文件也会遇到这样一个实际问题。如果我们在整个硬盘,这个系统中查找某个文件就要花费相当长的一段时间,特别是大 型Linux系统和容量较大的硬盘,文件放在套嵌很深的目录中的时候。如果我们知道了这个文件存放在某个大的目录中,那么只要在这个目录中往下找就能节省 很多时间了。使用find /etc -name httpd.conf 就可以解决这个问题。上面的命令就是表示在etc目录中查询httpd.conf这个文件。这里再说明一下“/ ”这个函数符号的含义,如果输入 “find/ ”就是表示要求Linux系统在整个ROOT目录下查找文件,也就是在整个硬盘上查找文件,而“find/etc”就是只在 etc目录下查找文件。因为“find/etc”表示只在etc目录下查找文件,所以查找的速度就相应要快很多了。


  3.根据部分文件名查找方法:


  这个方法和在WINDOWS中查找已知的文件名方法是一样的。不过在Linux中根据部分文件名查找文件的方法要比在WINDOWS中 的同类查找方法要强大得多。例如我们知道某个文件包含有srm这3个字母,那么要找到系统中所有包含有这3个字母的文件是可以实现的,输入:




find /etc -name *srm*


  这个命令表明了Linux系统将在/etc整个目录中查找所有的包含有srm这3个字母的文件,比如 absrmyz, tibc.srm等等符合条件的文件都能显示出来。如果你还知道这个文件是由srm 这3个字母打头的,那么我们还可以省略最前面的星号,命令如下:




find/etc -name srm*


  这是只有像srmyz 这样的文件才被查找出来,象absrmyz或者 absrm这样的文件都不符合要求,不被显示,这样查找文件的效率和可靠性就大大增强了。


  4.根据文件的特征查询方法:


  如果只知道某个文件的大小,修改日期等特征也可以使用“find”命令查找出来,这和WINDOWS系统中的"搜索"功能是基本相同 的。在微软的"搜索"中WINDOWS中的"搜索助理"使得搜索文件和文件夹、打印机、用户以及网络中的其他计算机更加容易。它甚至使在Internet 上搜索更加容易。"搜索助理"还包括一个索引服务,该服务维护了计算机中所有文件的索引,使得搜索速度更快。使用"搜索助理"时,用户可以指定多个搜索标 准。例如,用户可以按名称、类型及大小搜索文件和文件夹。用户甚至可以搜索包含特定文本的文件。如果用户正使用 Active Directory,这时还可以搜索带有特定名称或位置的打印机。


  例如我们知道一个Linux文件大小为1,500 bytes,那么我们可是使用如下命令来查询find / -size 1500c,字符 c 表明这个要查找的文件的大小是以bytes为单位。如果我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查找方式来解决。例如我们输 入find/ -size +10000000c 这个命令,则标明我们指定系统在根目录中查找出大于10000000字节的文件并显示出来。命令中的“+”是表示要求系统只列出大于指定大小的文件,而使 用“-”则表示要求系统列出小于指定大小的文件。下面的列表就是在Linux使用不同“ find"命令后系统所要作出的查找动作,从中我们很容易看出在Linux中使用“find"命令的方式是很多的,“ find"命令查找文件只要灵活应用,丝毫不必在WINDOWS中查找能力差。


  find / -amin -10 # 查找在系统中最后10分钟访问的文件


  find / -atime -2 # 查找在系统中最后48小时访问的文件


  find / -empty # 查找在系统中为空的文件或者文件夹


  find / -group cat # 查找在系统中属于 groupcat的文件


  find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件


  find / -mtime -1 #查找在系统中最后24小时里修改过的文件


  find / -nouser #查找在系统中属于作废用户的文件


  find / -user fred #查找在系统中属于FRED这个用户的文件


  下面的列表就是对find命令所可以指定文件的特征进行查找的部分条件。在这里并没有列举所有的查找条件,参考有关Linux有关书籍可以知道所有find命令的查找函数。


  -amin n


  查找系统中最后N分钟访问的文件


  -atime n


  查找系统中最后n*24小时访问的文件


  -cmin n


  查找系统中最后N分钟被改变状态的文件


  -ctime n


  查找系统中最后n*24小时被改变状态的文件


  -empty


  查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹


  -false


  查找系统中总是错误的文件


  -fstype type


  查找系统中存在于指定文件系统的文件,例如:ext2 .


  -gid n


  查找系统中文件数字组 ID 为 n的文件


  -group gname


  查找系统中文件属于gnam文件组,并且指定组和ID的文件


  5.Find命令的控制选项说明:


  Find命令也提供给用户一些特有的选项来控制查找操作。下表就是我们总结出的最基本,最常用的find命令的控制选项及其用法。


  选项 用途描述


  -daystart .测试系统从今天开始24小时以内的文件,用法类似-amin


  -depth 使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容


  -follow 遵循通配符链接方式查找; 另外,也可忽略通配符链接方式查询


  -help 显示命令摘要


  -maxdepth levels 某个层次的目录中按照递减方法查找


  -mount 不在文件系统目录中查找, 用法类似 -xdev.


  -noleaf 禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查找


  -version 打印版本数字


  使用-follow选项后,find命令则遵循通配符链接方式进行查找,除非你指定这个选项,否则一般情况下find命令将忽略通配符链接方式进行文件查找。


  -maxdepth选项的作用就是限制find命令在目录中按照递减方式查找文件的时候搜索文件超过某个级别或者搜索过多的目录,这样 导致查找速度变慢,查找花费的时间过多。例如,我们要在当前(.)目录技巧子目录中查找一个名叫fred的文件,我们可以使用如下命令




find . -maxdepth 2 -name fred


  假如这个fred文件在./sub1/fred目录中,那么这个命令就会直接定位这个文件,查找很容易成功。假如,这个文件在. /sub1/sub2/fred目录中,那么这个命令就无法查找到。因为前面已经给find命令在目录中最大的查询目录级别为2,只能查找2层目录下的文 件。这样做的目的就是为了让find命令更加精确的定位文件,如果你已经知道了某个文件大概所在的文件目录级数,那么加入-maxdepth n 就很快的能在指定目录中查找成功。


  6.使用混合查找方式查找文件


  find命令可以使用混合查找的方法,例如我们想在/tmp目录中查找大于100000000字节并且在48小时内修改的某个文件,我们可以使用-and 来把两个查找选项链接起来组合成一个混合的查找方式。




find /tmp -size +10000000c -and -mtime +2


  学习过计算机语言的朋友都知道,在计算机语言里,使用and ,or 分别表示“与”和“或”的关系。在Linux系统的查找命令中一样通用。


  还有这样的例子,




find / -user fred -or -user george


  我们可以解释为在/tmp目录中查找属于fred或者george这两个用户的文件。


  在find命令中还可以使用“非”的关系来查找文件,如果我们要在/tmp目录中查找所有不属于panda的文件,使用一个简单的




find /tmp ! -user panda


  命令就可以解决了。很简单。


  7.查找并显示文件的方法


  查找到某个文件是我们的目的,我们更想知道查找到的文件的详细信息和属性,如果我们采取现查找文件,在使用LS命令来查看文件信息是相当繁琐的,现在我们也可以把这两个命令结合起来使用。




find / -name "httpd.conf" -ls


  系统查找到httpd.conf文件后立即在屏幕上显示httpd.conf文件信息。




12063 34 -rw-r--r-- 1 root root 33545 Dec 30 15:36 /etc/httpd/conf/httpd.conf


  下面的表格就是一些常用的查找文件并显示文件信息的参数和使用方法


  选项 用途描述


  -exec command; 查找并执行命令


  -fprint file 打印文件完整文件名


  -fprint0 file 打印文件完整文件名包括空的文件


  -fprintf file format 打印文件格式


  -ok command; 给用户命令执行操作,根据用户的Y 确认输入执行


  -printf format 打印文件格式


  -ls 打印同种文件格式的文件.


  总结:到这里为止我们已经学习了这名多关于find命令的使用方法,也列出了很多常用的find命令的选项,如果我们能熟练掌握在Linux中find命令的使用方法,那么在Linux中查找文件也不是一件困难的事情。

posted @ 2007-10-18 11:26 MEYE 阅读(428) | 评论 (0)编辑 收藏

Linux C编程---网络编程

摘要

  网络编程,一定离不开套接口;那什么是套接口呢?在Linux下,所有的I/O操作都是通过读写文件描述符而产生的,文件描述符是一个 和打开的文件相关联的整数,这个文件并不只包括真正存储在磁盘上的文件,还包括一个网络连接、一个命名管道、一个终端等,而套接口就是系统进程和文件描述 符通信的一种方法。目前最常用的套接口是字:字节流套接口(基于TCP)和数据报套接口(基于UDP),当然还有原始套接口(原始套接口提供TCP套接口 和UDP套接口所不提供的功能,如构造自己的TCP或UDP分组)等,我们这里主要介绍字节流套接口和数据报套接口。




By Wing


  网络编程,一定离不开套接口;那什么是套接口呢?在Linux下,所有的I/O操作都是通过读写文件描述符而产生的,文件描述符是一个 和打开的文件相关联的整数,这个文件并不只包括真正存储在磁盘上的文件,还包括一个网络连接、一个命名管道、一个终端等,而套接口就是系统进程和文件描述 符通信的一种方法。目前最常用的套接口是字:字节流套接口(基于TCP)和数据报套接口(基于UDP),当然还有原始套接口(原始套接口提供TCP套接口 和UDP套接口所不提供的功能,如构造自己的TCP或UDP分组)等,我们这里主要介绍字节流套接口和数据报套接口。


  要学习网络编程,一定离不开网络库的函数,在Linux系统下,可以用"man 函数名"来得到这个函数的帮助,不过为了照顾E文不大好的朋友,下面就将常用的网络函数和用法列出来供大家参考:


  1、socket函数:为了执行网络输入输出,一个进程必须做的第一件事就是调用socket函数获得一个文件描述符。






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



#include <sys/socket.h>



int socket(int family,int type,int protocol);    



返回:非负描述字---成功   -1---失败



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




  第一个参数指明了协议簇,目前支持5种协议簇,最常用的有AF_INET(IPv4协议)和AF_INET6(IPv6协议);第二个 参数指明套接口类型,有三种类型可选:SOCK_STREAM(字节流套接口)、SOCK_DGRAM(数据报套接口)和SOCK_RAW(原始套接 口);如果套接口类型不是原始套接口,那么第三个参数就为0。


  2、connect函数:当用socket建立了套接口后,可以调用connect为这个套接字指明远程端的地址;如果是字节流套接口,connect就使用三次握手建立一个连接;如果是数据报套接口,connect仅指明远程端地址,而不向它发送任何数据。






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



#include <sys/socket.h>      



int connect(int sockfd,const struct sockaddr * servaddr,socklen_t



addrlen);  



返回:0---成功   -1---失败



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




  第一个参数是socket函数返回的套接口描述字;第二和第三个参数分别是一个指向套接口地址结构的指针和该结构的大小。


  这些地址结构的名字均已“sockaddr_”开头,并以对应每个协议族的唯一后缀结束。以IPv4套接口地址结构为例,它以“sockaddr_in”命名,定义在头文件<netinet/in.h>;以下是结构体的内容:






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



struct in_addr {



in_addr_t s_addr;      /* IPv4地址 */



};



struct sockaddr_in {



uint8_t sin_len; /* 无符号的8位整数 */



sa_family_t sin_family;



/* 套接口地址结构的地址簇,这里为AF_INET */



in_port_t sin_port; /* TCP或UDP端口 */



struct in_addr sin_addr;



char sin_zero[8];



};   



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




  3、bind函数:为套接口分配一个本地IP和协议端口,对于网际协议,协议地址是32位IPv4地址或128位IPv6地址与 16位的TCP或UDP端口号的组合;如指定端口为0,调用bind时内核将选择一个临时端口,如果指定一个通配IP地址,则要等到建立连接后内核才选择 一个本地IP地址。






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



#include <sys/socket.h>  



int bind(int sockfd,const struct sockaddr * myaddr,socklen_t



addrlen);



返回:0---成功   -1---失败 



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




  第一个参数是socket函数返回的套接口描述字;第二和第第三个参数分别是一个指向特定于协议的地址结构的指针和该地址结构的长度。


  4、listen函数:listen函数仅被TCP服务器调用,它的作用是将用sock创建的主动套接口转换成被动套接口,并等待来自客户端的连接请求。






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



#include <sys/socket.h>



int listen(int sockfd,int backlog);   



返回:0---成功   -1---失败



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




  第一个参数是socket函数返回的套接口描述字;第二个参数规定了内核为此套接口排队的最大连接个数。由于listen函数第二个参 数的原因,内核要维护两个队列:以完成连接队列和未完成连接队列。未完成队列中存放的是TCP连接的三路握手为完成的连接,accept函数是从以连接队 列中取连接返回给进程;当以连接队列为空时,进程将进入睡眠状态。


  5、accept函数:accept函数由TCP服务器调用,从已完成连接队列头返回一个已完成连接,如果完成连接队列为空,则进程进入睡眠状态。






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



#include <sys/socket.h>         



int accept(int sockfd,struct sockaddr *



cliaddr,socklen_t * addrlen);  



回:非负描述字---成功   -1---失败



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




  第一个参数是socket函数返回的套接口描述字;第二个和第三个参数分别是一个指向连接方的套接口地址结构和该地址结构的长度;该函数返回的是一个全新的套接口描述字;如果对客户段的信息不感兴趣,可以将第二和第三个参数置为空。


  6、inet_pton函数:将点分十进制串转换成网络字节序二进制值,此函数对IPv4地址和IPv6地址都能处理。






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



#include <arpa/inet.h>



int inet_pton(int family,const char * strptr,void * addrptr);



返回:1---成功 0---输入不是有效的表达格式 -1---失败



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




  第一个参数可以是AF_INET或AF_INET6:第二个参数是一个指向点分十进制串的指针:第三个参数是一个指向转换后的网络字节序的二进制值的指针。


  7、inet_ntop函数:和inet_pton函数正好相反,inet_ntop函数是将网络字节序二进制值转换成点分十进制串。






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



#include <arpa/inet.h>  



const char * inet_ntop(int family,const void *



addrptr,char * strptr,size_t len);  



返回:指向结果的指针---成功   NULL---失败



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




  第一个参数可以是AF_INET或AF_INET6:第二个参数是一个指向网络字节序的二进制值的指针;第三个参数是一个指向转换后的点分十进制串的指针;第四个参数是目标的大小,以免函数溢出其调用者的缓冲区。


  8、fock函数:在网络服务器中,一个服务端口可以允许一定数量的客户端同时连接,这时单进程是不可能实现的,而fock就分配一个子进程和客户端会话,当然,这只是fock的一个典型应用。






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



#include <unistd.h>  



pid_t fock(void);



返回:在子进程中为0,在父进程中为子进程ID   -1---失败



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




  fock函数调用后返回两次,父进程返回子进程ID,子进程返回0。


  有了上面的基础知识,我们就可以进一步了解TCP套接口和UDP套接口


  1、TCP套接口


  TCP套接口使用TCP建立连接,建立一个TCP连接需要三次握手,基本过程是服务器先建立一个套接口并等待客户端的连接请求;当客户 端调用connect进行主动连接请求时,客户端TCP发送一个SYN,告诉服务器客户端将在连接中发送的数据的初始序列号;当服务器收到这个SYN后也 给客户端发一个SYN,里面包含了服务器将在同一连接中发送的数据的初始序列号;最后客户在确认服务器发的SYN。到此为止,一个TCP连接被建立。


  下面就用一个例子来说明服务器和客户是怎么连接的






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



/* client.c */



#include <stdio.h>



#include <stdlib.h>



#include <errno.h>



#include <string.h>



#include <netdb.h>



#include <sys/types.h>



#include <netinet/in.h>



#include <sys/socket.h>



int main(int argc,char *argv[]) {



int sockfd,numbytes;



char buf[100];



struct hostent *he;



struct sockaddr_in their_addr;



int i = 0;



//将基本名字和地址转换



he = gethostbyname(argv[1]);



//建立一个TCP套接口



if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1) {



perror("socket");



exit(1);



}



//初始化结构体,连接到服务器的2323端口



their_addr.sin_family = AF_INET;



their_addr.sin_port = htons(2323);



their_addr.sin_addr = *((struct in_addr *)he->h_addr);



bzero(&(their_addr.sin_zero),8);



//和服务器建立连接



if(connect(sockfd,(struct sockaddr *)&their_addr,



sizeof(struct sockaddr))



==-1){



perror("connect");



exit(1);



}



//向服务器发送字符串"hello!"



if(send(sockfd,"hello!",6,0)==-1) {



perror("send");



exit(1);



}



//接受从服务器返回的信息



if((numbytes = recv(sockfd,buf,100,0))==-1) {



perror("recv");



exit(1);



}



buf[numbytes] = '';



printf("result:%s",buf);



close(sockfd);



return 0;



}



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



/* server.c */



#include <stdio.h>



#include <stdlib.h>



#include <errno.h>



#include <string.h>



#include <sys/types.h>



#include <netinet/in.h>



#include <sys/socket.h>



#include <sys/wait.h>



main() {



int sockfd,new_fd;



struct sockaddr_in my_addr;



struct sockaddr_in their_addr;



int sin_size;



//建立TCP套接口



if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1) {



perror("socket");



exit(1);



}



//初始化结构体,并绑定2323端口



my_addr.sin_family = AF_INET;



my_addr.sin_port = htons(2323);



my_addr.sin_addr.s_addr = INADDR_ANY;



bzero(&(my_addr.sin_zero),8);



//绑定套接口



if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct



sockaddr))==-1)



{



perror("bind");



exit(1);



}



//创建监听套接口



if(listen(sockfd,10)==-1) {



perror("listen");



exit(1);



}



//等待连接



while(1) {



sin_size = sizeof(struct sockaddr_in);



perror("server is run");



//如果建立连接,将产生一个全新的套接字



if((new_fd = accept(sockfd,(struct sockaddr *)



&their_addr,&sin_size))==-1)



{



perror("accept");



exit(1);



}



//生成一个子进程来完成和客户端的会话,父进程继续监听



if(!fork()) {



//读取客户端发来的信息



if((numbytes = recv(new_fd,buff,strlen(buff),0))==-1)



{



perror("recv");



exit(1);



}



printf("%s",buff);



//将从客户端接收到的信息再发回客户端



if(send(new_fd,buff,strlen(buff),0)==-1)



perror("send");



close(new_fd);



exit(0);



}



close(new_fd);



}



close(sockfd);



}



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




   现在让我们来编译这两个程序:






root@linuxaid#gcc -o server server.c



root@linuxaid#gcc -o client client.c




然后在一台计算机上先运行服务器程序,再在另一个终端上运行客户端就会看到结果;如果不运行服务器程序而先运行客户程序将立即提示"Connect: Connection refused",这就是TCP套接口的好处,如果是UDP套接口将会有一个延时才会得到错误信息(UDP套接口后面有介绍)。


  建立一个TCP连接需要三次握手,而断开一个TCP则需要四个分节。当某个应用进程调用close(主动端)后(可以是服务器端,也可 以是客户端),这一端的TCP发送一个FIN,表示数据发送完毕;另一端(被动端)发送一个确认,当被动端待处理的应用进程都处理完毕后,发送一个FIN 到主动端,并关闭套接口,主动端接收到这个FIN后再发送一个确认,到此为止这个TCP连接被断开。


  2、UDP套接口


  UDP套接口是无连接的、不可靠的数据报协议;既然他不可靠为什么还要用呢?其一:当应用程序使用广播或多播是只能使用UDP协议;其 二:由于他是无连接的,所以速度快。因为UDP套接口是无连接的,如果一方的数据报丢失,那另一方将无限等待,解决办法是设置一个超时。


  在编写UDP套接口程序时,有几点要注意:建立套接口时socket函数的第二个参数应该是SOCK_DGRAM,说明是建立一个 UDP套接口;由于UDP是无连接的,所以服务器端并不需要listen或accept函数;当UDP套接口调用connect函数时,内核只记录连接放 的IP地址和端口,并立即返回给调用进程,正因为这个特性,UDP服务器程序中并不使用fock函数,用单进程就能完成所有客户的请求。



IO::Socket简介

另一个构造socket库,使用对象构造模式。如果您看过wawa老大的动网EXPLOIT与isno大哥的WEBDAVX,您就会发现这些EXPLOITS都是使用这个库做的,所以如果您想写EXPLOITS的话,不妨看看此文。

以前我写的是传统的C语言‘遗留’下了的SOCKET库它使用了部分C库的二进制格式,导致PERL无法完全使用它。而这篇文所介绍的IO::Socket库是IO::Handle的子类,完全对象编程,一切就会‘自由’很多了......

使用格式与常用方法(父类IO::Handle与IO::File的通用方法就不在下文中说明了):
=============================================================================
-----------------------------------------------------------------------------
导入IO::Socket包:
use IO::Socket;

讲解:
IO::Socket下又有两个子类IO::Socket::INET与IO::Socket::UNIX,我们现在用的当然是IO::Socket::INET了。
-----------------------------------------------------------------------------

new()方法:
SOCKET对象变量=IO::Socket::INET->new(SOCKET变量值);

实例:
$sock=IO::Socket::INET->new('192.168.1.2:23');

讲解:
所有的PERL对象编程都把对象‘形象化’为某个变量,这里的SOCKET句柄对象也不例外,调用此方法的返回值便为SOCKET对象变量 了。这里使用参数为简单参数模式,在双引号或但引号内的socket地址结构为'主机IP或域名:端口号或服务名称',也可以是'主机IP或域名:服务名 称(端口号)'。

除了最简单的单参数调用外,new方法还有很多参数可以选择性调用的,下面就对这些参数作出一个简单的概括吧:
***********************************************************************
参数 描述 值类型
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
PeerAddr 远程主机的地址 主机地址[:端口或服务]
PeerHost 与PeerAddr相同
PeerPort 远程端口或服务 端口或服务
LocalAddr 本地地址 主机地址[:端口或服务]
LocalHost 与LocalAddr相同
LocalPort 本地端口 端口或服务
Proto 所使用的协议 协议名或协议号
Type 套接字类型 SOCK_STREAM/SOCK_DGRAM...
Listen 监听的队列长度 整形数
Reuse 用于避免重启时BIND时间间隙 布尔值
Timeout 超时值 整形数
MultiHomed 用于连接多IP地址 布尔值
***********************************************************************

参数PeerAddr(远程主机地址)与PeerHost(远程主机名)基本相同,调用方式也相同,其值格式除了标准的格式外,还可以加':'号后再加端口或服务,这样的的话,后面的参数PeerPort(远程主机端口或服务)的值就无效了。

参数PeerPort(远程主机端口或服务),其值的格式可以是端口,还可以是服务名,更可以是‘组合’,如:"telnet(23)";当PeerAddr(远程主机地址)或
PeerHost(远程主机名)的值格式中指明了端口,再调用此参数时,此参数的值无效。

参数LocalAddr(本地主机地址)、LocalHost(本地主机名)、LocalPort(本地主机端口或服务)之间的关系与调用方 式与上面介绍的三个参数PeerAddr(远程主机地址)、PeerHost(远程主机名)、PeerPort(远程主机端口或服务)相当。

还有一种情况,就是如果只定义了LocalPort(本地主机端口或服务),而没有定义LocalAddr(本地主机地址)或 LocalHost(本地主机名),那IO::Socket会将本地机器的地址的值默认为INADDR_ANY通配符,也就是不定义本地主机的地址值的话 就定义为允许所有接口。

Proto(协议类型)的值可以用两种方式表示。一种是直接的字符串表示方式,如:

proto=>"tcp"

表示该协议类型为TCP。第二种方式就是直接使用协议号了,EGP---8、HMP---20、ICMP---1、RAW---255、RDP- --27、RVD---66、TCP---6、UDP---17、XNS-IDP---22、其他---22、ALL---0;也可以使用 getprotobyname函数加协议名为参数调用获的该值,如:

proto=>getprotobyname('tcp')

该形式也表示该协议的类型为TCP。建议还是使用第一种方式比较方便。

Type(套接字类型)的值通常为SOCK_STREAM(流套接字)、SOCK_DGRAM(数据报套接字)、SOCK_RAW(原始套接字)等,不用说大家都知道,TCP用的是流套接字,UDP用的是数据报套接字,构造IP包用的是原始套接字。

如果上面的参数Proto(协议类型)与Type(套接字类型)的值都不定义的话,IO::Socket::INET就会通过程序中上下‘文’部分猜估它们的值,猜估不到的话就会默认为'tcp'。

参数Listen(监听队列的长度)的值是一个整形数。它代表能接受的连接主机数量。如果您要构造服务端的话,Listen这个步骤是必不可少的。

调用Reuse(在绑定前设置SO_REUSEADDR)可以免去服务器在终止到重启之间的所停留的时间。

Timeout(超时值)以秒计算,用于连接中的connect与accept这两个步骤,调用目的是为了在连接远程主机不可到达时限制连接的挂起时间。

MultiHomed(用于连接多IP地址)的值是一个布尔值,当其值为真时,如果要连接的主机拥有多个IP地址,则本机的new方法调用gethostbyname()穷举其所有IP地址,直到能成功调用为止。

从楼上的列表中可以看到IO::Socket与传统C库的Socket API接口在调用上有什么不同了:

1)控制范围不同。C库提供的接口在生成SOCKET句柄时只能控制的只有域、套接字类型、协议这几个参数。而IO::Socket接口的创建语句(调用new方法)几乎能决定这个套接字的所有参数。

2)调用所使用的‘协议’定义部分不同。IO::Socket接口调用new方法中的参数'Proto'的值可以直接定义为'tcp',这比传统C库的Socket定义更为简便。

3)IO::Socket在定义时能直接定义本地主机地址、本地端口与远程主机地址、远程端口在一个Socket中,如果是这种情况的服务端 就无需调用accept了,在I/O读写部分可以直接向这个Socket进行读写操作,而无需再定义远程客户端的Socket了。
-----------------------------------------------------------------------------

accept()方法:
远程连接套接字对象变量=服务端套接字对象变量->accept();

实例:
$remote_sock=$sock->accept();

讲解:
此方法的调用环境与传统C中SOCKET库调用原理一样,用于服务端的等待监听过程。无参数,返回值为远程连接的套接字对象变量。调用此方法 也是一个生成套接字的过程,只不过此套接字为远程连接的套接字而已,它以对象变量方式存在,据有与本地套接字变量相同的属性与方法。

accept()方法在IO::Socket包里还提供另一种双返回值的调用方法:

(远程连接套接字对象变量,远程主机压缩地址变量)=服务端对象变量->accept();

实例:
($remote_sock,$remote_addr)=$sock->accept();

讲解:
与楼上一个返回值的调用方式基本相同,只是返回值中多了一个变量而已,返回值中多了个变量------远程主机压缩地址变量。
-----------------------------------------------------------------------------

bind()方法:
返回值变量=服务端套接字对象变量->bind(本地端口号,本地主机网络地址);

实例:
$result=$sock->bind(80,'127.0.0.1');

讲解:
bind方法用于在服务器端绑定主机的地址与端口。它使用的两个参数都为未压缩值,第一个为端口,第二个为主机的网络适配器接口地址(可以使 用默认的保留字INADDR_ANY,此保留字包括了主机的所有网络适配器接口地址,调用它时,它会以穷举的方法穷举所有的网络适配器接口地址,直到找到 为止);返回值为布尔值,用于检测这次调用是否成功。
-----------------------------------------------------------------------------

connect()方法:
返回值变量=套接字对象变量->connect(压缩地址变量);

实例:
$result=$sock->connect($pack_addr);

讲解:
常用于TCP连接(也可用于UDP,不过不常用),调用将向远程主机发送连接请求。参数‘压缩地址变量’为sockaddr_in形式值,返 回值为布尔值。若调用此方法则建立IO::Socket::INET对象时不能赋予参数'PeerAddr'或'PeerHost'、 'PeerPort',否则就会出现程序逻辑错误。

connect()方法也有双参数调用方式,使用起来更简单:
返回值变量=套接字对象变量->connect(远程端口号,远程主机地址);

实例:
$result=$sock->connect($remote_port,$remote_host);

讲解:
调用的目的与楼上单参数的调用方式相当。第一个参数为远程需要连接的主机的端口(等于new方法的参数'PeerPort'),第二个参数为需要连接的主机地址(等于new方法的参数'PeerAddr'或'PeerHost'),返回值为布尔值。
-----------------------------------------------------------------------------

listen()方法:
返回值变量=套接字对象变量->listen(请求队列的最大长度值);

实例:
$result=$sock->listen(20);

讲解:
TCP服务端不可缺少的方法。单参数,参数为此服务端接受远端请求队列的最大长度值,返回值为布尔值。调用此方法等同于在建立IO:: Socket::INET对象时定义参数'Listen'的值,所以若在new方法中定义了参数'Listen'再调用此方法的话就会出现‘程序定义冲突 ’这样的逻辑错误了。
-----------------------------------------------------------------------------

shutdown()方法:
返回值变量=套接字对象变量->shutdown(控制参数);

实例:
$result=$sock->shutdown(2);

讲解:
此方法是除了close外的另一个关闭套接字对象的方法。单参数,参数值为外加参数定义,下为此方法的外加参数列表:
***********************************************************************
参数值 描述
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
0 关闭对象套接字的读操作
1 关闭对象套接字的写操作
2 关闭对象套接字的所有操作
***********************************************************************
其返回值为布尔值。
-----------------------------------------------------------------------------

send()方法:
成功发送的数据值变量=套接字对象变量->send(发送数据,标志值,目标地址值);

实例:
$succ_bytes=$sock->send('hihi\n',0,$pack_host);

讲解:
send方法是专门为SOCKET发送数据的特殊方法,调用格式与参数格式也基本与C库的SOCKET API中的send函数相同。第一个参数是需要发送的数据;第二参数是标志值,不添的话默认为0;第三个参数通常只用于UDP连接,是需要连接的 sockaddr_in格式地址值(注意:当第三个参数有必要一定要写时,第二个参数也一定要加上);返回值为成功发送的数据值大小(以byte为单 位)。
-----------------------------------------------------------------------------

recv()方法:
压缩远程地址地址=套接字对象变量->recv(接收数据变量,接收数据值长度,标志值);

实例:
$remote_pack_address=$sock->recv($mem,100,0);

讲解:
recv方法是专门为SOCKET接收数据的特殊方法,调用格式与参数格式也与C库的SOCKET API基本一样。第一个参数是存放接收后的数据的变量值;第二个参数是接收的数据的长度值;第三个参数是标志值,默认为0就可以了(省略此值不填,系统默认也为0)。
-----------------------------------------------------------------------------
===================================================================================

IO::Socket接口的常用方法就介绍完了,不过还有一个问题是需要注意的: 作为一个简单的客户端,它的步骤只需要先调用new方法,然后立刻就可以进行基本I/O操作(使用print与getline等基本I/O方法)了,最后 只需调用close方法结束会话,那么整个SOCKET会话就算完成了。

典型使用例子:
wawa's dvbbs exploit: http://haowawa.8866.org/wawa/new/tech/dvbbs.pl
isno's webdavx exploit: http://www.xfocus.net/tools/200304/webdavx3.pl

究竟C库的传统SOCKET接口与本文介绍的IO::Socket接口哪个比较好用呢???我只能回答你:"萝卜青菜,各有所爱"......:P



posted @ 2007-10-18 11:18 MEYE 阅读(820) | 评论 (0)编辑 收藏
     摘要:     嵌入式系统开发学习:             随着现代社会信息化进程的加快,嵌入式系统被广泛的地应用于军事、家用、工业、商业、办公、医疗等社会各个方面,表现出很强的投资价值。从国际范围来看,作为数字化电子信息产品核心的嵌入式系统目前其硬件和软件开发工具市场已经突破2...  阅读全文
posted @ 2007-10-17 19:16 MEYE 阅读(1965) | 评论 (0)编辑 收藏
56本管理精粹书

附件: CI革命—塑造企业个性与美感的法宝.pdf (2007-7-10 23:55, 434.68 K)
该附件被下载次数 54


附件: M的奇迹——麦当劳商法.pdf (2007-7-10 23:55, 335.92 K)
该附件被下载次数 42


附件: STP营销—市场细分、目标市场选择与产品定位.pdf (2007-7-10 23:55, 405.66 K)
该附件被下载次数 29


附件: 百川入海—分销渠道决策.pdf (2007-7-10 23:55, 355.67 K)
该附件被下载次数 19


附件: 财会革命—会计电算化.pdf (2007-7-10 23:57, 425.62 K)
该附件被下载次数 20


附件: 长袖善舞——管理者人际关系谋略.pdf (2007-7-10 23:57, 317.57 K)
该附件被下载次数 37


附件: 成功有约—高效会计手册.pdf (2007-7-10 23:57, 297.69 K)
该附件被下载次数 15


附件: 从封闭走向开放—企业涉外经贸合作实务.pdf (2007-7-10 23:57, 298.46 K)
该附件被下载次数 16


附件: 高位竞争—企业形象管理艺术.pdf (2007-7-11 00:00, 411.5 K)
该附件被下载次数 21


附件: 管理导航—企业目标管理手册.pdf (2007-7-11 00:00, 365.32 K)
该附件被下载次数 21

附件: 帮你订合同—企业签约实务.pdf (2007-7-10 23:56, 402.08 K)
该附件被下载次数 15


附件: 别让你的权力睡着了—公司结构与领导权力.pdf (2007-7-10 23:56, 383.05 K)
该附件被下载次数 16


附件: 会当凌绝顶——成功领导典范.pdf (2007-7-11 00:02, 427.39 K)
该附件被下载次数 18


附件: 稽核与控制——企业审计手册.pdf (2007-7-11 00:02, 264.43 K)
该附件被下载次数 14


附件: 尖兵—门市经理手册.pdf (2007-7-11 00:02, 336.67 K)
该附件被下载次数 17


附件: 蛟龙出水——台湾成功企业管理模式.pdf (2007-7-11 00:02, 440.52 K)
该附件被下载次数 15


附件: 魔道斗法—成功讨债技巧.pdf (2007-7-12 23:28, 304.1 K)
该附件被下载次数 9


附件: 能挣钱巧开支—企业出纳手册.pdf (2007-7-12 23:28, 336.58 K)
该附件被下载次数 8


附件: 拍板—企业领导决策方法.pdf (2007-7-12 23:28, 459.24 K)
该附件被下载次数 9


附件: 钱生钱—企业金融手册.pdf (2007-7-12 23:28, 303.78 K)
该附件被下载次数 10

附件: 点燃心火—员工激励手册.pdf (2007-7-10 23:58, 443.75 K)
该附件被下载次数 18


附件: 放飞的龙——海外华侨成功商法.pdf (2007-7-10 23:58, 425.02 K)
该附件被下载次数 17


附件: 金钱魔杖——现代犹太商法.pdf (2007-7-11 00:03, 440.78 K)
该附件被下载次数 19


附件: 金算盘—经理人会计.pdf (2007-7-11 00:03, 308.73 K)
该附件被下载次数 11


附件: 经理人笔记本.pdf (2007-7-11 00:03, 290.5 K)
该附件被下载次数 25


附件: 经营之神——松下幸之助商法.pdf (2007-7-11 00:03, 281.03 K)
该附件被下载次数 17


附件: 樱花与剑——日本商业智慧.pdf (2007-7-12 23:41, 309.84 K)
该附件被下载次数 9


附件: 中国商训—传统生意经.pdf (2007-7-12 23:41, 424.69 K)
该附件被下载次数 9


附件: 纵横捭阖—哈佛谈判术.pdf (2007-7-12 23:41, 316.98 K)
该附件被下载次数 10


附件: 蛛丝马迹—企业管理弊病的觉察与诊治.pdf (2007-7-12 23:41, 483.92 K)
该附件被下载次数 7


附件: 飞钱—企业票据管理手册.pdf (2007-7-10 23:58, 291.44 K)
该附件被下载次数 11


附件: 分享与分担—员工入股理论与实践.pdf (2007-7-10 23:58, 259.61 K)
该附件被下载次数 13


附件: 精英风采——管理者形象设计手册.pdf (2007-7-12 23:23, 422.36 K)
该附件被下载次数 7


附件: 决胜千里—市场营销战略与战术.pdf (2007-7-12 23:23, 384.72 K)
该附件被下载次数 10


附件: 流金岁月—时间管理艺术.pdf (2007-7-12 23:23, 322.58 K)
该附件被下载次数 11


附件: 路路通——企业办证指南.pdf (2007-7-12 23:23, 395 K)
该附件被下载次数 7


附件: 商战护身符—企业法律实务指南.pdf (2007-7-12 23:42, 221.02 K)
该附件被下载次数 8


附件: 神奇的PR——商用公关手册.pdf (2007-7-12 23:42, 352.34 K)
该附件被下载次数 9


附件: 生命线—质量管理手册.pdf (2007-7-12 23:42, 433.62 K)
该附件被下载次数 8


附件: 无敌保险箱—会计错弊防范手册.pdf (2007-7-12 23:42, 283.79 K)
该附件被下载次数 7


附件: 心灵之光——经理人心理健康指南.pdf (2007-7-12 23:42, 358.49 K)
该附件被下载次数 8


附件: 新编一千零一夜—故事中的管理.pdf (2007-7-12 23:42, 271.78 K)
该附件被下载次数 11


附件: 复眼—企业管理信息系统.pdf (2007-7-11 00:00, 280.04 K)
该附件被下载次数 15


附件: 干戈玉帛—顾客抱怨处理艺术.pdf (2007-7-11 00:00, 270.74 K)
该附件被下载次数 16


附件: 卖手—冠军推销手册.pdf (2007-7-12 23:27, 422.08 K)
该附件被下载次数 8


附件: 漫步地球村——管理者国际交往手册.pdf (2007-7-12 23:27, 452 K)
该附件被下载次数 9


附件: 名牌与金牌—商标管理实务.pdf (2007-7-12 23:27, 310.08 K)
该附件被下载次数 7


附件: 明察秋毫—现代查帐手册.pdf (2007-7-12 23:27, 287.06 K)
该附件被下载次数 7


附件: 强者风采——现代商用礼仪.pdf (2007-7-12 23:31, 362.31 K)
该附件被下载次数 15


附件: 商业担保—信用证ABC.pdf (2007-7-12 23:31, 275.15 K)
该附件被下载次数 9


附件: 商用兵法—管理实践韬略.pdf (2007-7-12 23:31, 297.32 K)
该附件被下载次数 7


附件: 商用战典——西方兵法与经营谋略.pdf (2007-7-12 23:31, 282.9 K)
该附件被下载次数 7


附件: 新官上任——新任经理人工作指南.pdf (2007-7-12 23:46, 385.07 K)
该附件被下载次数 10


附件: 艳阳半边天—女职员管理艺术.pdf (2007-7-12 23:46, 311.88 K)
该附件被下载次数 7


附件: 一代天骄——世界著名企业家成功典范.pdf (2007-7-12 23:46, 368.75 K)
该附件被下载次数 10


附件: 以人为本—企业劳动保护.pdf (2007-7-12 23:46, 294.26 K)
该附件被下载次数 7

国外编程网址

www.codeproject.com
www.codegugu.com
http://www.devx.com/


用google 突破

首先打开Google,在关键词输入框中输入"index of/"inurl:lib(双引号为英文状态下),选择“搜索简体中文网页”选项,回车搜索,得到了一些网页,不要以为这是一些普通的页面,其实它们是一些图书网站的资源列表,点击打开它来看看,怎么样?是不是所有资源一收眼底了?

使用其他关键字可能得到更多的资源
在搜索框上输入:"index of /"cnki
再按搜索你就可以找到许多图书馆的CNKI、VIP、超星等入口!
在搜索框上输入:"index of /" ppt
再按搜索你就可以突破网站入口下载powerpint作品
在搜索框上输入:"index of /"mp3
再按搜索你就可以突破网站入口下载mp3、rm等影视作品
在搜索框上输入:"index of /"swf
再按搜索你就可以突破网站入口下载flash作品
在搜索框上输入:"index of /"加上要下载的软件名

再按搜索你就可以突破网站入口下载软件
到这里,大家也许都明白了,其实就是"index of /"这个关键词在起的作用,使用它可以直接进入网站首页下的所有文件和文件夹中,不必在通过HTTP的网页形式了,从而避免了那些网站的限制,作到了突破限制下载




超级P2P搜索引擎让所有收费网站破产!
搜索Google大家都用过吧?我们正是利用它强劲的搜索功能来突破封锁下载,Google搜索和限制下载有什么关系,没可能实现吧?不要不相信哦,往下看哦!

http://www.google.com/intl/zh-CN/
http://www.3721.com/
http://www.baidu.com/

首先打开Google,在关键词输入框中输入"index of/"inurl:lib(双引号为英文状态下),选择“搜索简体中文网页”选项,回车搜索,得到了一些网页,不要以为这是一些普通的页面,其实它们是一些图书网站的资源列表,点击打开它来看看,怎么样?是不是所有资源一收眼底了?

使用其他关键字可能得到更多的资源:

在搜索框上输入:"index of /"cnki

再按搜索你就可以找到许多图书馆的CNKI、VIP、超星等入口!

在搜索框上输入:"index of /" ppt

再按搜索你就可以突破网站入口下载powerpint作品!

在搜索框上输入:"index of /"mp3

再按搜索你就可以突破网站入口下载mp3、rm等影视作品!

在搜索框上输入:"index of /"swf

再按搜索你就可以突破网站入口下载flash作品!

在搜索框上输入:"index of /"加上要下载的软件名

再按搜索你就可以突破网站入口下载软件!

在搜索框上输入:"index of /"AVI

再按搜索你就可以突破网站入口下载AVI视频

你会找到什么呢?同理,把AVI换为MPEG看看又会找到什么呢?呵呵!接下来不用我再教了吧?那就试一下你的手气吧!

"index of /" RMVB
"index of /" WMA
"index of /" MTV
"index of /" MPEG
以下是百度搜索排名
1. index of mpeg4
3. index of mp3
4. index of cnki
5. index of rmvb
6. index of rm
7. index of movie
8. index of swf
9. index of jpg
10. index of admin
12. index of pdf
13. index of doc
14. index of wmv
15. index of mdb
16. index of mpg
17. index of mtv
18. index of software
19. index of mov
20. index of asf
23. index of lib
24. index of vod
25. index of rar
27. index of exe
28. index of iso
29. index of video
30. index of book
31. index of soft
32. index of chm
33. index of password
34. index of game
35. index of music
36. index of dvd
37. index of mid
38. index of ebook
40. index of download

到这里,大家也许都明白了,其实就是"index of /"这个关键词在起的作用,使用它可以直接进入网站首页下的所有文件和文件夹中,不必在通过HTTP的网页形式了,从而避免了那些网站的限制,作到了突破限制下载。

怎么回事?点鼠标右键直接用网际快车下不了,都是网页,链接地址是乱码。别灰心懈气,可以在新窗口中打开页面中的超链接,真实地址不就出来了。


posted @ 2007-10-07 22:14 MEYE 阅读(671) | 评论 (0)编辑 收藏
音乐网站大全

现代摇滚单曲排行榜——更新较快,20首最TOP现代摇滚单曲下载,免费
http://www.fwcn.com/billboard/

音乐天使——来自天堂的声音,来自天使的声音,如梦似幻,与你分享……
http://music.angelyaya.net/gs/

英语之声——可下载欧美经典3辑99首mp3格式音乐
http://www.english.ac.cn/songs/index.htm

yepoo音乐——收集有六张欧美音乐专辑,mp3格式,192.0Kpbs码率(速度超级快)
http://www.yepoo.com/main.asp

嘎雅NEWAGE音乐——提供大量NEWAGE音乐下载,mp3格式,音质不错
http://gaea.hit.edu.cn/m3uplay/nvmake/nc.asp

震撼音乐——淄博供电公司提供的154首经典音乐,主要是欧美mp3音乐下载
http://61.156.17.162/MP3/

蚂蚁的欧美歌曲 1 4 5 ——提供30多张近1000首欧美歌曲下载,全部mp3格式
http://qol.qdc.com.cn/mp3/omlmjd/ANTS.HTM
http://media.gdpc.edu.cn/music/cdvolume/ant4/ant4.htm
http://media.gdpc.edu.cn/music/cdvolume/ant5/ant5.htm

古典圣殿——提供70张音乐专辑在线试听
http://210.34.4.3/cd-bible/gudian/gudian.htm

天外之音——免费提供40CD的WMA格式音乐下载,大部分为欧美音乐
http://www.zhzx.net.cn/students/studentpage/bright/index.htm

电影画廊——免费提供30多张电影主要是欧美电影原声音乐下载,全部mp3格式
http://202.103.25.159/cine/music/mp3.htm

第一城市——免费提供两张M2M的专辑和一张007专辑下载,全部mp3格式
http://www.ecityboy.com/03down/index-3.htm

影视先锋——提供较多欧美、日韩电影原声下载赏析 Midi格式 MP3格式 RM格式
http://202.102.230.12/movie/music/mp3/notting/mp3.htm
http://202.102.230.12/movie/music/shang.htm
http://202.102.230.12/movie/music/midi.htm
http://202.102.230.12/movie/music/mp3.htm
http://202.102.230.12/movie/music/rm.htm

LOW摇滚音乐网——免费提供Linkin Park,Limp Bizkit,Foo Fighters,Silverchair等14位歌手的专辑下载
http://www.low69.com/download.html
http://www.low69.com/mp3/LinkinPark.html
http://www.low69.com/mp3/LimpBizkit.html
http://www.low69.com/mp3/FooFighters.html
http://www.low69.com/mp3/Silverchair.html

古典音乐厅——收集肖邦、斯特劳斯、柴可夫斯基、贝多芬、巴赫等17位世界音乐大师的主要作品,提供rm、mp3下载
http://bds.cetin.net.cn:81/cetin2/sp/music-hall/music-1.htm

百度mp3论坛精华—顾名可思义,可以找到很多欧美音乐,且下载很方便
http://forum.baidu.com/cgi-bin/f ... id=16&age=0

欧美影视金曲——提供134首经典欧美影视金曲mp3下载
http://brightsun.hr.hl.cn/xiuxian/yjt/ysjq/

歌曲集萃——厦门6中音乐网,有经典老歌、英文金曲、影视名曲、童声合唱、世界经典名曲下载,全部mp3格式
http://www.liuzhong.xm.fj.cn/music2/
http://www.liuzhong.xm.fj.cn/music2/song/song.htm
http://www.liuzhong.xm.fj.cn/music2/song/english/english.htm
http://www.liuzhong.xm.fj.cn/music2/filmsong/filmsong.htm
http://www.liuzhong.xm.fj.cn/music2/song/song03.htm
http://www.liuzhong.xm.fj.cn/music2/xfmq/shijie01.htm

悠长密道——原声书馆。黑魔法影视音乐城!美丽的声音,美丽的故事……等待着您与蓝衣演绎!
http://www.soundo.net/yc_index.htm

雅尼的主页——我只知道这个网站提供单曲在线视听,还有什么,你去看了就知道
http://www.yanni.com/

理查德·克莱德曼浪漫钢琴曲——本站论坛收集的《理查德·克莱德曼浪漫钢琴曲》119首mp3音乐,免费免注册提供下载
http://www.asweiren.org/bbs/lunt ... u=4&num=204

名家名作——收集理查德·克莱德曼、肯尼吉、雅尼、詹姆斯高威、保罗摩利亚的作品
http://www.charlesonline.org/music/famous_artist.htm

Huya音乐——网站制作精美,有特色,有九个欧美音乐专辑,音乐虽少了点,但都是精华  
http://www.huya.net/music/music.htm

水滴音乐——提供欧美音乐mp3下载,音乐也不是很多,但有很多歌词,也是一个不错的网站
http://music.nbjyc.com.cn

魅力吉他——百度论坛精华,由100free收集,实际是德翁的帖子,提供63首吉他曲下载
http://forum.baidu.com/cgi-bin/f ... pg=4&age=60

加州旅馆——百度论坛精华帖,是德翁的帖子,13种版本,附带一个网址,可下载更多的版本
http://forum.baidu.com/cgi-bin/f ... 0&h=1#54135

欧美音乐——一个人气较旺的欧美音乐站点,免费提供mp3下载,同时打开一个音乐论坛,可以找到一定数量的音乐
http://www.oumei.net/index.html

披头士精选——中文披头士专门网站,提供100首披头士音乐下载,链接速度较慢
http://211.101.197.94/beatles/download.asp

神秘园——神秘园音乐4CD,提供mp3下载,但不太稳定,我下载过
http://yini.lili.cc/secretgarden/download.htm

Winamp Radi——Winamp网络电台,128Kpbs,音质好,我觉得不错
http://www.shoutcast.com

   
天碟落地——提供6张经典音乐大碟mp3下载,在恐怖海峡有3张专辑下载,请在晚上(11点钟以前)下载
http://yfok.vicp.net/fan/fan.htm

苏俄音乐——有丰富的苏俄音乐,可惜的是mp3格式不多,大部分是asf格式,凑合着听吧
http://xue-fan.y365.com/download.html

音乐地图,爱听音乐的朋友不要错过。
cn.51.net/online.php>http://pengwcn.51.net/online.php

部分杰出的音乐公司及杂志与音响技术等站点
http://www.thinktip.com/bbs/music.htm
Namm新纪元音乐杂- http://go4.163.com/namm/index1.htm
日本音乐信息中心- http://www.jamic.org/
我爱Mp3搜索引擎- http://www.5imp3.com/

=======英文音乐站=======
Download.com- http://download.com.com/
21st Century Mp3- http://www.21century-mp3.com/
MP3.com- http://www.mp3.com/
水滴音乐- http://music.nbjyc.com.cn/
Chinto Music Lover- http://chinto.hypermart.net/
CrazyEMusic.com 欧美流行风- http://61.139.37.148/music/
Music Cool- http://www.musiccool.net/
音乐城市- http://www.musiccity.com
MP3.BOX.SK- http://mp3.box.sk/
Your Digital Music Oasis- http://www.dmusic.com/
Lycos Music- http://music.lycos.com/
VH1.com- http://www.vh1.com/
AMG All Music Guide- http://www.allmusic.com/
country.com- http://www.country.com/
MP3 Search- http://music.salon.com.cn/
leon83.com- http://www.leon83.com/
Welcome to Fast Search & Transfer- http://www.fast.no/
MusicSearch.com The Internet's Music-Only Search
Site!- http://www.musicsearch.com/
welcome to sonico.com homepage- http://en.sonico.com/
AudioFind- http://www.allmp3.com/
it's craptastic!(该站友情链结极好,音乐下载在线站极
多)- http://www.punkasspunk.com/
VITAMINIC_the music evolution- http://www.vitaminic.com/
MP3 Search- http://www.look4sound.com/
4AD- http://www.4ad.com/

=======古典音乐=======
古典音乐网- http://www.classical.net.cn/
水妖的岛- http://shuitou.net/
巴洛克音乐圣殿- http://baroque.yeah.net/
追月寻风- http://coralgz.51.net/gudian/shangshui.htm
中国音乐剧网- http://www.chinamusical.com/normal/chinamusical.html
歌剧音乐下载站- http://malei.vip.sina.com/classicaldownload.html
古典音乐下载网- http://malei.vip.sina.com/
黑暗放逐(推荐)- http://www.dzbbs.com/
星乐钢琴手(推荐)- http://www.xygqs.com/
音乐岛- http://cell.my169.com/
瞬间,永恒- http://person.zj.cninfo.net/~sanio/index.html
音乐与音响- http://music_sound.myetang.com/index.htm
..:::贝多芬爱好者同盟:::..- http://www.beethovenian.net/
古典音- http://www.chinakongzi.com/2550/music/
中国音乐教育- http://xiaoyv.myrice.com/
哆来咪- http://www.duolaimi.com/
艺声在线- http://yszxmp3.126.com/
Here is Music- http://www.hereismusic.com
=======品味音乐=======
诗歌音乐室- http://www.lifespring.com.hk/gb/music.htm
音域派(强烈推荐)- http://audio.zjg.jsinfo.net/
吉它秀- http://www.51guitar.com/
雅燃音乐天空(戏子强烈推荐)- http://www.flamesky.org/
新世纪网·纯音乐天堂(戏子强烈推荐)- http://www.cnnewage.com/
短歌行(戏子强烈推荐- http://www.audio100.com/
爵士当铺- http://www.jazzsky.cc/
R o c k Y e a r 摇滚年音乐网- http://rockyear.yeah.net/
DYING ART UNDERGROUND CDR LABEL- http://www.underfm.com.cn/
Music Game Zone 2ndMix- http://www.m-g-z.com/
我爱摇滚乐- http://www.sorock.com/
佛乐,永远开放,不着边际(强烈推荐)- http://fofilm.org/qianxiang/
爱尔兰音乐大全- http://www.drunkencrew.com/primary.htm
天籁音乐网- http://www.ynfox.com/music/index.htm
革命音乐空间- http://hong6666.myetang.com/
James Studio- http://jamesy.533.net/
大同音乐- http://61.134.13.16/mp3/omusic/index.php3
沉没的蟋蟀(强烈推荐)- http://61.136.63.120/rem/home.htm
=======歌词站=======
炫网资讯- http://music.liuxuan.com/
中文LRC歌词库- http://lrcman.yeah.net/
放肆音乐通歌词子站- http://www.yemusic.com/
歌词吾爱- http://www.51lrc.com/
=======在线MUSIC=======
彭彭听吧(强烈推荐)- http://www.oo-xx.com/
音乐红茶馆- http://www.musictea.com/
512city音乐时空- http://www.512city.net/music
MTV.com- http://www.mtv.com/
听吧音乐网- http://www.tingbar.com/
天虎音乐网- http://music.tyfo.com/
MTV-CHINA.com- http://www.mtv-china.com/feature
中国音乐在线- http://202.98.223.68/mtvtop/index2.htm
Realplay music- http://www.ahbb.net/music/realindex.htm
听听音乐- http://www.ting365.com/
网蛙- http://www.wanwa.com/
红尘驿站- http://www.thepasser.com/music/default.asp
華?#123;線上音樂雜誌- http://www.warnermusic.com.tw/
阿穆的感性音乐- http://www.amusicday.com/radio.htm
宽频音乐- http://www.c-mtv.com/
求索音乐无限- http://research.swufe.edu.cn/new/music.php
http://www.163ie.net/music/
=======下载音乐网站=======
BoxUp Music- http://www.boxup.com/
MP3 Download- http://www.finder.com.cn/mp3finder/
Soyou实达所有- http://idp.soyou.com/MP3/head
中文音乐- http://www.xuxule.com/
张雨生音乐大全- http://www.kkttkk.com/indexdown/
大陆mp3音乐超市- http://www.cdjmp3.com/
天籁村- http://music.qu-zhou.com/homepage/indexall.html
音乐极限- http://www.chinamp3.com/
mp3秀- http://www.mp3xu.com/
丽声世界- http://www.lssj.net/
汉源音乐- http://music.hyinfo.net/
MP3搜集网- http://www.88u8.com/mp3
弦音歌语- http://music.21youth.com/
mp3- http://cdp2331170.home.chinaren.com/mp3/mp3.htm
音乐先锋- http://music.188.net/
中文网络音乐资源中心- http://www.topmusic.net.cn/
天籁阁- http://www.99mp3.com/
365佳音网- http://music.ganzhou.com/
音乐磁场- http://www-jl.jl.cninfo.net/jlweb/music/
音乐加油站- http://www.yereal.com/
9SKY九天音乐网- http://www.9sky.com/
非常音乐网- http://www.verymusic.net/
摇滚音乐网- http://www.xmusics.net/
玩易音乐- http://www.jninfo.net.cn/music/
久久音乐- http://www.99music.net/index.htm
搜刮(强烈推荐)- http://www.sogua.com/
Bseven韩流娱乐网- http://www.bseven.com/
54dj俱乐部- http://www.54djclub.com/
DJ街区- http://www.dj-street.com/
飛行網- http://www.music.com.tw/
華人全球音樂網- http://www.mtvstar.com.tw/
混音电台- http://www.yesdj.com/Default.asp
娱乐在线- http://music.yn.cninfo.net/index.shtml
私人地方請立即離開- http://pop169.com/
我找我歌MP3搜索网- http://www.5find.com/
Music Heaven- http://www.charmusic.com/
Music site- http://music.zsnet.com/
中文音乐星空- http://hotcd.126.com/
中国乐坛欢迎您- http://www.cmusic.com.cn/
听者有心(强烈推荐)- http://www.musicool.com.cn/index.htm
音乐无极限- http://www.limitlessmusic.net/
浪琴音乐网- http://www.langqin.net/
轻音飞扬- http://music.stu.edu.cn/
吉通音乐在线- http://www.weihai.cngb.com/music/first.asp
飞天网景- http://music.lz.gs.cninfo.net/
亿兆音乐网之“音乐E+亿- http://music.emsky.com/
花木兰音- http://www.wmacn.com/
:::音乐之声::- http://music.ty.sx.cn/
济宁宽带数码港MP3音乐- http://tv.jninfo.net.cn/mp3/
金山网景-缤纷乐坛- http://music.jsol.net/index.html
网娱一派- http://song.beelink.com.cn/
======= 收集的音乐论坛=======
http://www.bluedown.net/cgi-bin/forums.cgi?forum=21

======= 专属音乐站点=======
穾唯,幻梦天水- http://www.douwei.net/
齐秦驿站扉页- http://www.kl.gz.cn/~flyingcg
BANDARI- http://bandari.dhs.org/
deflower.cn.st- http://deflower.cn.st/
音乐网站列表
九天音乐网 http://www.9sky.com
boxup music http://www.boxup.com
音乐听厅 http://www.nowok.net
搜刮音乐 http://www.sogua.com
嘻嘘音乐 http://www.xuxule.com
网蛙音乐网 http://www.wanwa.com
音乐极限 http://www.chinamp3.com
pop169.com http://pop169.com
音乐加油站 http://www.yemp3.com
音乐加油站(new) http://www.yevery.com
海盗音乐网 http://www.yuechen.com/index1.htm
中国音乐在线 http://www.mtvtop.com
音乐视听 http://www.real2000.org
久久音乐 http://www.99music.net
frankmp3 http://www.frankmp3.com
mp3秀 http://www.mp3xu.com
音乐天籁村 http://www.mp3boat.com
163音乐网 http://www.ting163.net/index.php
网易--唱片介绍
http://ent.163.com/new_entertainment/third_dir/010808_85399.html
音乐殿堂 http://www.91music.com
高阳MP3 http://www.gaomp3.net
听者有心 http://www.musicool.com.cn/index.htm
Soyou实达所有 http://idp.soyou.com/MP3/head/
紫龙歌词 http://www.51geci.com
天虎音乐网 http://music.tyfo.com
吉林信息港妙即刻网乐 http://music.jl.cninfo.net
中国音乐库 http://www.5460m.net
音乐的力量 http://music.gzinfo.net
269音乐频道 http://music.269.net
音乐前卫 http://music.yn.cninfo.net
音乐时空 http://www.sinofeng.com/music/
数码网 音乐频道 http://www.yes2.net/music/
网络音乐频道 http://mp3.attin.com/
焦作音乐无限 http://music.jztele.com
汉源音乐频道 http://music.hyinfo.net
Music site http://music.zsnet.com/
100mp3 http://www.100mp3.com/
视听频道 http://music.km169.net/
雅燃音乐天空 http://www.flamesky.com/
中华好歌网 http://www.haoge-china.com/index.html
短歌行 http://www.audio100.com
mp3火力网 http://garden.2118.com.cn/xu_allmp3/
音乐先锋 http://www.5see.com/mp3/
无限音乐网 http://kenfr.topcool.net/main1.html
天空音乐 http://99fun.com/skymusic/musicsky/index.asp
欧美流行风 http://61.139.37.148/music/
韩国音乐网 http://www.koreanll.com
彭彭听吧 http://www.pp-mp3.com
http://www.xuxule.com
http://www.9sky.com
http://www.chinamp3.com
http://www.audio100.com
http://hff.21cn.com:84
http://www.sogua.com
http://www.musiccool.net
http://music.tyfo.com
http://202.96.107.40/music
http://music.21youth.com
http://mp3download.myetang.com
http://www.99music.net
http://ent.sdinfo.net/music
http://music.qu-zhou.com
http://www.cardio.ru/~teehonya/mp3
http://www.mp3boat.com
http://www.tyclub.com
http://www.5566.org/music3-1.htm
http://www.wfinfo.net.cn/music/
http://www.hebnet.net/mp3/lp.htm
http://www.c-mtv.com
http://music.trueice.net/
http://music.zixia.net/
http://www.coolsong.com/bbs/index.asp
ftp://mp3:mp3@feng.d2g.com
http://www.koreanll.com/main.html#
http://www.beethoven.com
http://www.269.net
http://www.snepc.com

中文MP3网站
1.九天音乐 http://www.9sky.com/) [简体]
音乐站就该音乐多多。
2.听吧 http://www.tingbar.com/musichome/sinasearch.asp) [简体]
国内最大曲库,在线试听及网上送歌,流媒体音乐电台。
3.寂寞男孩--全新数字音乐 http://lonelyboy.yeah.net/)[简体]
mp3好站,按歌手和专辑分类,另有歌迷聊天、论坛、点歌区。
4.天籁村 http://tdk.126.com/)[简体]
mp3歌曲下载、歌迷档案、音乐故事,还有动漫音乐、古典音乐等类别。
5.mp3 Finder http://www.finder.com.cn/mp3finder/)[简体]
流行音乐网站,网罗中外流行歌曲和音乐,乐迷不容错过的好站。
6.100mp3 http://www.100mp3.com/)[繁体]
收集各种mp3网站,包括中港台的mp3。
7.中文MP3日报 http://www.sundaily.com/)[繁体]
主要提供港台歌曲的mp3下载。
8.所有MP3 http://idp.soyou.com/MP3/head/)[简体]
MP3无限,所有包揽。
9.5460中华mp3音乐库 http://www.5460m.net/)[简体]
华语mp3下载试听。
10.中国大陆mp3音乐超市 http://www.cdjmp3.com/)[简体]
大陆港台mp3歌曲大全,包括中外流行、摇滚、古典、民族等各种音乐。
11.mp3下载中心 http://mp3s.cnroot.com/)[简体]
mp3下载,mp3导航,mp3搜索引擎,mp3工具,mp3歌词。
12.mp3秀 http://www.mp3xu.com/)[简体]
港台,大陆,欧美mp3,midi,ram。
13.MP3-SKY.com http://www.mp3-sky.com/)[简体]
收录MP3音乐,包括流行,古典,摇滚,电影原声,轻音乐。
14.古典音乐网站《艺声在线MP3》 http://yszxmp3.cn99.com/)[简体]
古典音乐MP3和大量古典吉它曲MP3。
15.中国摇滚mp3站 http://chinarock.163.net/)[简体]
摇滚mp3下载,摇滚乐队,摇滚评论等。
16.MP3音乐空间 http://shiper.126.com/)[简体]
提供几千首中文MP3下载,MP3精品软件,MP3搜索引擎等!
17.Mp3音乐秀 http://mp3show.126.com/)[简体]
音乐下载和歌词下载。
18.吉他秀[Guitar show] http://www.51guitar.com/)[简体]
吉他大师、世界名琴、mp3、效果器、音箱、原创音乐和文章征集。
19.古典音乐网 http://www.classical.net.cn/)[简体]
古典乐新闻、音乐家、名曲介绍、入门、唱片、midi、mp3。
20.乌托邦摇滚 http://maogbl.at.china.com/)[简体]
前卫摇滚资讯、MP3下载、歌词下载、歌手&乐队发展史。
21.伊莎贝拉音乐网 http://my.soyou.net/~gegege/)[简体]
mp3下载,音乐排行榜,在线视听,歌词搜索。
22.汉源音乐频道 http://music.hyinfo.net/)[简体]
大量的 mp3 和 ra 歌曲。
23.赣州音乐天堂 http://music.ganzhou.com/)[简体]
MP3下载库。
24.音乐磁场 http://www.jl.jl.cn/jlweb/music/)[简体]
MP3下载,音乐软件,歌词查询。
25.什么都有—音乐站 http://music.ahbb.net/)[简体]
提供古典、流行、NewAge、摇滚以及电影原声MP3下载。
26.亚洲流行音乐广场 http://www.asiamp3.com/)[繁体]
包含歌曲推介,MP3资讯,工具和教学。
27.海盗音乐网 http://www.hdmusic.net/)[简体]
mp3下载,歌词,CD相片,MTV下载,娱乐资讯。
28.哆来咪--中国器乐曲 http://www.duolaimi.com/classic/duolaimi/my/)[简体]
中国民乐MP3下载基地。
29.天籁阁 http://tlg.ccoo.com/)[简体]
齐全的歌手资料、迅速的娱乐快报、打包的歌词下载、COOL MP3。
30.音乐听厅 http://music.nowok.com/)[简体]
音乐MP3,在线试听。
31.弦音歌语 http://music.21youth.com/)[简体]
歌星档案,排行榜,MIDI,mp4,MP3,mtv,游戏音乐,词曲查询
32.全新音乐栏目——天籁回寰 http://music.iszero.com/)[简体]
MP3和MIDI下载,乐坛新闻和排行榜及音乐播放软件等。
33.网络音乐资源中心 http://www.topmusic.net.cn/)[简体]
提供mp3、rm、vqf格式的歌库、曲库,明星档案。
34.mp3其他女歌手 http://www.only.net.cn/mp3/ow.htm) [简体]
欢迎来 only 网站,本站中文名为 绝无仅有 ! only网 ...
35.女歌手 http://playsite.myrice.com/mp3/female-9.htm)[简体]
36.mp3 http://www1.huali-cn.com/~spiderx/mp3_1.htm)[简体]
香港男歌手 香港女歌手 台湾男歌手 台湾女歌手
37.mp3 http://cdp2331170.home.chinaren.com/mp3/mp3.htm)[简体]
不要看这版内容这么少.其实里边的内容很丰富哦!作为记录着年轻人
梦想与激情的音乐篇章,校园民谣,以真诚与纯洁为标志。
38.电影原声音乐 http://www.redb52.com/musiccg15.asp)[简体]
一个详细介绍电影原声音乐的网站。
39.音乐马前炮 http://music.188.net/)[简体]
MP3下载,歌手资料,新闻,排行,以及网友点播,影视歌曲。
40.水滴音乐 http://drip.cnnb.net/)[简体]
提供英文歌词及查询,欧美乐队情况及娱乐资讯,排行榜,MP3下载。
41.日本娱乐新干线 http://japmusic.yesky.net/)[简体]
介绍关于日本娱乐的方方面面,影视音乐及jpop MP3下载。
42.海外一族,四海一家 http://chinto.isme.net/)[简体]
英文MP3s下载,加拿大华人生活点滴。
43.mp3 jukebox 点唱机 http://mpage.musicpage.com/)[繁体]
点唱站、灵温室、桌布店,主要收录港台、日本的最新流行歌曲。
44.天籁空间 http://61.134.13.16/mp3/omusic/index.php3
音乐欣赏、原创天地、歌星档案、mp3软硬件、音乐文化、音乐论坛
45.音乐极限 http://www.chinamp3.com/
中文MP3下载。歌曲排行,歌词下载,专辑碟库、留言点歌。
46.世纪青年mp3音乐站 http://music.21youth.com/
3000首以上的各类精选mp3和相关音乐评论。
47.飞行网音乐下载 http://media.music.com.tw/download/down.asp)[繁体]
台湾著名音乐站点音乐下载基地。
48.MP3 World-MP3世界 http://www.bseven.com/mp3/
韩国MP3中国MP3日本、西洋、法国、民族、的士高、影视等MP3。
49.时代音乐天地 http://www.shanghai-window.com/shan...ter/magazine/
流行音乐的天地。
50.mp3下载中心 http://www.skyhits.com/mp3.htm
mp3下载,mp3导航,mp3搜索引擎,mp3工具,mp3歌词。
51.mp3搜集网 http://www.88u8.com/mp3/
最新MP3下载。
52.MP3歌曲经典 http://aimer.home.chinaren.net/
歌迷的家园,有大量MP3经典歌曲。
53.流行mp3大全 http://www.asia-top.com/click/?account=googoo1
一千多首大陆、港台MP3歌曲下载,并提供强大的搜索引擎。
54.流行MP3音乐库 http://www.kl.gz.cn/~sunshine/music/
流行MP3音乐高速下载。
55.Popmp3 http://popmp3.6to23.com/
Mp3歌曲下载。
56.kump3 http://kump3.myetang.com/
mp3下载,收听。
57.MP3大放送 http://www.5find.com/index.htm
MP3音乐下载.
58.mp3在线酷听 http://musicword.51.net/
MP3下载尽在MP3在线酷听。
59.MP3之恋 http://go3.163.com/~mp3love/index.html
娱乐新闻、音乐社区、最新MP3音乐下载、音乐排行榜。
60.mp3大世界 http://pmp3.home.sohu.com/
娱乐新闻.最新mp3下载试听.中文mp3金曲.国外流行mp3。
61.MP3下载站 http://mp3xiu.myetang.com/
大量MP3下载,在线收听。
62.月歌心曲 http://go4.163.com/~youyueer/
原创音乐。
63.汉源音乐频道 http://music.hyinfo.net/
大量的 mp3 和 ra 歌曲。
64.精彩影室 http://jchp.edu.chinaren.com/
本站提供影视下载和在线播放,电视剧,动画片,经典MP3。
65.海盗音乐网 http://musicol.edu.chinaren.com/index1.htm
66.娱乐基地之音乐基地 http://www.etbase.net/music/
流行音乐下载,明星档案,mp3下载。
67.星易资讯网 http://www.starea.com/
娱乐新闻,MP3下载,音乐欣赏,名星档案,名星靓相,名星聊天室。
英文MP3网站
1.MP3.COM http://www.mp3.com/) [英文]
MP3入门、下载、工具及相关新闻。提供详细分类目录查询歌曲。
2.mp3site http://www.mp3site.com/) [英文]
介绍优秀的mp3网站
3.Mp3 Box http://mp3.box.sk/) [英文]
MP3下载、在线试听、歌词等项,还提供MP3搜索功能
4.Music4free.com http://www.music4free.com/) [英文]
国外优秀mp3网站。
5.dmusic.com http://www.mp3extreme.com/) [英文]
荟萃国外优秀mp3网站、相关软硬件、新闻、mp3搜索引擎。
6.MP3boy http://mp3boy.yeah.net/)[英文]
欧美音乐,MP3,音乐专辑。
7.Best of MP3 http://www.crankpuppy.com/)[英文]
大量mp3下载,提供mp3下载、歌词搜索、CD搜索等。
8.emp3 http://www.emp3dance.com/)[英文]
最新mp3舞曲下载。
9.数码音乐 http://www.cybertropix.com/)[英文]
通过它,你可以找到关于mp3的新闻、软件、网站以及mp3音乐
10.MUSIC.TUCOWS.COM http://tucows.mp3.com.cn/)[英文]
提供大量的MP3下载。
11.MP3搜索(Lycos MP3 Search) http://music.lycos.com/downloads/)[英文]
可按歌名和歌手名字查寻MP3歌曲。
12.马友友(Ma Yo-Yo) http://www.yo-yoma.com/)[英文]
著名大提琴手。
13.电影音乐(FilmMusic) http://www.filmmusic.com/)[英文]
内容包括问题解答,电影作曲家,购买等。
14.电影声线 http://www.filmtracks.com/)[英文]
电影音乐人、新老电影音乐作品等.
15.梦之园电影音乐 http://www.fod-online.com/)[英文]
电影音乐在线出版物.
16.Seasons Greetings.org http://www.seasonsgreetings.org/)[英文]
圣诞老人的传说,传统和现代故事及庆祝圣诞的音乐电影。
posted @ 2007-10-07 21:07 MEYE 阅读(1851) | 评论 (0)编辑 收藏

[分享]余世维、曾士强、陈安之经济类讲座

经济类-成功经理人讲座
余世维

余世维-有效沟通(MP3版本)   
http://www.so138.com/so/so138.aspx?id=4320     
余世维-市场竞争策略分析与最佳策略选择(MP3版本)
http://www.so138.com/so/so138.aspx?id=4310     
余世维-企业变革与企业文化(MP3版本)   
http://www.so138.com/so/so138.aspx?id=4306     
余世维-领导商数(MP3版本)   
http://www.so138.com/so/so138.aspx?id=4302     
余世维-成功经理人(MP3版本)   
http://www.so138.com/so/so138.aspx?id=4298     
余世维 -赢在执行(MP3版本)   
http://www.so138.com/so/so138.aspx?id=4292     
余世维-时代光华-市场竞争策略分析与最佳策略选择
http://www.so138.com/so/so138.aspx?id=3     
余世维-管理者商情EQ   
http://www.so138.com/so/so138.aspx?id=736     
余世维-企业变革与文化^   
http://www.so138.com/so/so138.aspx?id=664   
余世维-领导商数LQ   
http://www.so138.com/so/so138.aspx?id=2     
余世维-职业经理人常犯的11种错误   
http://www.so138.com/so/so138.aspx?id=631     
余世维 - 突破中小企业瓶颈   
http://www.so138.com/so/so138.aspx?id=663     
余世维-如何成为一个成功的职业经理人   
http://www.so138.com/so/so138.aspx?id=633     
余世?赢在执行   
http://www.so138.com/so/so138.aspx?id=4     
余世维-如何提升企业经理人的执行力   
http://www.so138.com/so/so138.aspx?id=1466     
余世维《成功经理人》厦门版 MP3   
http://www.so138.com/so/so138.aspx?id=437     
余世维成功经理人(精彩)   
http://www.so138.com/so/so138.aspx?id=1     



陈安之

赢商系列 陈安之 超速创业(音频)   
http://www.so138.com/so/so138.aspx?id=4806      
陈安之-如何成为行业营销第一名推广演讲   
http://www.so138.com/so/so138.aspx?id=4838   
陈安之新概念绝不裸奔视频   
http://www.so138.com/so/so138.aspx?id=3608   
陈安之-新加坡财经追踪频道   
http://www.so138.com/so/so138.aspx?id=3614   
陈安之-超级成功学(音频)   
http://www.so138.com/so/so138.aspx?id=2325      
陈安之---行销法则   
http://www.so138.com/so/so138.aspx?id=309   
陈安之--创业法则   
http://www.so138.com/so/so138.aspx?id=307   
陈安之---领导法则
http://www.so138.com/so/so138.aspx?id=308   
陈安之-人才法则   
http://www.so138.com/so/so138.aspx?id=311   
陈安之《超级NAC心理学》mp3   
http://www.so138.com/so/so138.aspx?id=580      
陈安之_做个赚钱的总裁
http://www.so138.com/so/so138.aspx?id=2695   
陈安之_孙子兵法成功学   
http://www.so138.com/so/so138.aspx?id=398   
陈安之老师出席法拉利跑车盛典   
http://www.so138.com/so/so138.aspx?id=2326   
陈安之-时间管理mp3   
http://www.so138.com/so/so138.aspx?id=2004   
陈安之-要你成功-中央电视台访问记录   
http://www.so138.com/so/so138.aspx?id=874   
陈安之_台湾乔治亚人寿保险演讲   
http://www.so138.com/so/so138.aspx?id=399   
陈安之_如何永远成功   
http://www.so138.com/so/so138.aspx?id=397   
陈安之_如何成功致富   
http://www.so138.com/so/so138.aspx?id=395   
陈安之_快速致富的秘诀
http://www.so138.com/so/so138.aspx?id=394   
陈安之_超级成功学(12集视频)   
http://www.so138.com/so/so138.aspx?id=393
陈安之 超级说服力(音频)
http://www.so138.com/so/so138.aspx?id=392
陈安之系列 超速创业
http://www.so138.com/so/so138.aspx?id=5433
陈安之-选对行业赚大钱(内训资料)
http://www.so138.com/so/so138.aspx?id=863
陈安之-说服力=财富
http://www.so138.com/so/so138.aspx?id=5327   

曾仕强
曾仕强点评胡雪岩(48集)   
http://www.so138.com/so/so138.aspx?id=14   
中道.齐家三部曲之二 家庭教育-曾仕强   
http://www.so138.com/so/so138.aspx?id=4724   
中道.齐家三部曲之一 爱情与婚姻-曾仕强   
http://www.so138.com/so/so138.aspx?id=4719   
《台湾商界之父曾仕强中国式管理 VCD》   
http://www.so138.com/so/so138.aspx?id=865   
曾仕强-中国式管理-总裁领导学   
http://www.so138.com/so/so138.aspx?id=113   
曾仕强-人性管理   
http://www.so138.com/so/so138.aspx?id=542   
曾仕强-发挥潜能超越自我   
http://www.so138.com/so/so138.aspx?id=542   
曾仕强 - 超世纪大易管理学^   
http://www.so138.com/so/so138.aspx?id=572   
曾仕强-组织行为学-中层管理~   
http://www.so138.com/so/so138.aspx?id=585   
曾仕强-《中国式管理:管理vs领导--卓越经理人必修课》
http://www.so138.com/so/so138.aspx?id=1493   
曾仕强-中国管理哲学六字真言   
http://www.so138.com/so/so138.aspx?id=405
http://dl.njfiw.gov.cn/books/

http://www.zxbc.cn/  
posted @ 2007-10-07 19:47 MEYE 阅读(625) | 评论 (0)编辑 收藏

莎士比亚经典全部!!!!

《麦克白》http://book.zxrs.net/shashi/down/maikebai.chm
《裘力斯·凯撒》http://book.zxrs.net/shashi/down/qiulisi.chm
《诗选》http://book.zxrs.net/shashi/down/shashibi.chm
《泰尔亲王配力克里斯》http://book.zxrs.net/shashi/down/taierqin.chm
《泰特斯·安德洛尼克斯》http://book.zxrs.net/shashi/down/taitesi.chm
《特洛伊罗斯与克瑞西达》http://book.zxrs.net/shashi/down/teluoyi.chm
《威尼斯商人》http://book.zxrs.net/shashi/down/weinisi.chm
《维洛那二绅士》 http://book.zxrs.net/shashi/down/weiluona.chm
《温莎的风流娘儿们》http://book.zxrs.net/shashi/down/wenshade.chm  
《无事生非》http://book.zxrs.net/shashi/down/wushisheng.chm
《辛白林》http://book.zxrs.net/shashi/down/xinbailin.chm
《驯悍记》http://book.zxrs.net/shashi/down/xunhanji.chm
《雅典的泰门》http://book.zxrs.net/shashi/down/yadiande.chm
《一报还一报》http://book.zxrs.net/shashi/down/yibaohuan.chm
《约翰王》 http://book.zxrs.net/shashi/down/yuehanwang.chm
《终成眷属》http://book.zxrs.net/shashi/down/zongchengjuan.chm
《仲夏夜之梦》 http://book.zxrs.net/shashi/down/zongxiaye.chm
《爱的徒劳》 http://book.zxrs.net/shashi/down/aidetulao.exe
《奥瑟罗》 http://book.zxrs.net/shashi/down/aoshailuo.chm
《暴风雨》 http://book.zxrs.net/shashi/down/baofengyu.chm  
《错误的喜剧》 http://book.zxrs.net/shashi/down/cuowudexiju.chm
《第十二夜》  http://book.zxrs.net/shashi/down/dishierye.chm
《冬天的故事》  http://book.zxrs.net/shashi/down/dongtiandegushi.chm
《哈姆雷特》 http://book.zxrs.net/shashi/down/hamuleite.chm
《亨利八世》  http://book.zxrs.net/shashi/down/henglibashi.chm
《亨利六世上篇》  http://book.zxrs.net/shashi/down/hengliliushishangpian.chm
《亨利六世中篇》 http://book.zxrs.net/shashi/down/hengliliushizhongpian.chm
《亨利六世下篇》 http://book.zxrs.net/shashi/down/hengliliushixiapian.chm
《亨利四世上篇》  http://book.zxrs.net/shashi/down/henglisishishangpian.chm
《亨利四世下篇》 http://book.zxrs.net/shashi/down/henglisishixiapian.chm
《亨利五世》 http://book.zxrs.net/shashi/down/hengliwushi.chm
《皆大欢喜》  http://book.zxrs.net/shashi/down/jiedahuanxi.chm
《科利奥兰纳斯》 http://book.zxrs.net/shashi/down/keliaolannasi.chm
《李尔王》 http://book.zxrs.net/shashi/down/lierwang.chm
《理查二世》http://book.zxrs.net/shashi/down/lichaershi.chm
《理查三世》http://book.zxrs.net/shashi/down/lichasanshi.chm
《罗密欧与朱丽叶》http://book.zxrs.net/shashi/down/luomiouyuzhuliye.chm

《60分钟企业经营战略》 和《运筹帷幄-诸葛亮兵法》

《运筹帷幄-诸葛亮兵法》 :http://www.qiouzhiniao.cn/html/d ... i/20070430/312.html
《60分钟企业经营战略》 :http://www.qiouzhiniao.cn/html/d ... i/20070430/313.html

[下载]几本linux学习的书籍

本人正在进行linux 的学习 希望这些资料对linux爱好者有用
linux 教材大全 ftp://down.eshuba.com/eshuba/xitongxiangguan/Linuxjcdq.rar

linux 使用大全 http://down.eshuai.cn/shuba/xito ... %C3%B4%F3%C8%AB.rar
linux 学习宝典 http://down1.cnhacker.com/booksdown/07013103050c8cb659a28f9ff.rar

linux 从入门到精通 http://www.gouhuo.com/study/linuxbook.zip
练成linux 高手 http://www.jz5u.com/download.asp?id=15590&downid=0
送给linux 初学者 ftp://211.95.73.26/hl/送给初学Linux的穷人Linux系统指令大全.pdf

linux 系统管理 ftp://211.95.73.26/1zxhlinux.rar
linux 命令大全 http://ftpgz5.pconline.com.cn/exam/it/Linux061114.rar
linux 软件工程师 ftp://222.214.218.42/book3/20060 ... 81-4941bcee1f11.pdf

 

基础学习 http://www.00083.com/soft/upload ... 84b69a63c2ed2a47af3
基础教程完整版 http://download.chinaitlab.com/download.asp?id=34873
命令全集 http://down.linuxmine.com/soft/0/1/01000001.rar

使用学习教程 ftp://222.214.216.57/book2/20061 ... 16-c8b5facb0654.chm
网络安全配置 http://vip.hackbase.com/vipsoft/vipteacher/20050305linux29.rar
linux 从入门到精通 ftp://down.eshuba.com/eshuba/200601/Linux ??????.rar

 

http://ftpgz13.pconline.com.cn/pub/download/200205/linuxsite.rar
新手管理员手册 http://www.00083.com/soft/upload ... fc01983a9ded8943b62
安装与配置简明手册 http://cpss.zz.ha.cn/study/linux ... %f7%ca%d6%b2%e1.zip
网络实际操作 thunder://QUFodHRwOi8vZG93bmxvYWQuY2hpbmFpdGxhYi5jb20vZG93bmxvYWQuYXNwP2lkPTM3MTM3Wlo=
红旗linux 中文版初级教程 http://down.hack58.com/fzw_hack58/sohu/11-23linux.rar
linux 核心源代码分析PDG http://www.00083.com/soft/uploadsoft/linux核心源代码分析.rar?6103004891303x1174341082x6103009877379-15c492eb5c3033c99a07c2fba419c496
破解根用户密码 http://www.942d.com/shipin/bbs/linuxsn.rar
Red Hat Linux Fedora傻瓜书 httP://book1.ibook8.com/ibook8co ... 5/041113/fedora.rar

Linux知识宝库典藏版  ftp://222.214.218.42/book3/20060 ... 35-0c5492042030.chm
Linux程序设计  ftp://down.eshuba.com/eshuba/xitongxiangguan/Linuxcxsj.rar
Linux参考大全  httP://book1.ibook8.com/ibook8com/pc2005/701/1/521hacker-20.zip
linux编程初学者入门  ftp://222.214.216.57/book2/20061 ... 00-a603302e0466.rar

 

LINUX应用技术精华{面向初学Linux朋友的书籍}   http://www.linuxfans.org/nuke/software/LINUX应用技术精华{面向初学Linux朋友的书籍}/LINUX应用技术精华{面向初学Linux朋友的书籍}.rar
redhat9从入门到精通  http://down.315safe.com:315/redhat9从入门到精通.rar

 

Linux C函数库参考手册  http://cnc-http.xpbook.com:81/200506/Linux%20C函数库参考手册.rar?6102881127298x1150968278x6102884440460-71dc8cd6d874db99d29888002914a4d5
Linux 内核完全注释   httP://book1.ibook8.com/ibook8co ... 113/linuxsystem.rar
Linux2006年9月 总第三期  http://www.linuxer.cn/magazine/linuxer3-2006-09.pdf
Linux_network_manage-3245      http://down.csdn.net/down2//2006 ... ork_manage-3245.rar
一周内学会Linux系统管理   http://download1.csdn.net/down2/2006/10/499/1zxhlinux-2605.rar
linux编程白皮书   http://download1.csdn.net/down//2006/webdown/004/Linuxbcbps.rar
linux上的c编程   http://www.cinchina.com/Soft/Sho ... lID=1&SoftID=12
linux宝典  thunder://QUFodHRwOi8vZG93bmxvYWQuY2hpbmFpdGxhYi5jb20vZG93bmxvYWQuYXNwP2lkPTM3MDk3Wlo=
《Linux内核完全注释》 V1.9.5版  http://oldlinux.qbang.org/download/clk011c-1.9.5.pdf
linux教材  thunder://QUFodHRwOi8vd3d3Lmp6NXUuY29tL2Rvd25sb2FkLmFzcD9pZD0xNDUxNSZkb3duaWQ9MFpa
linux命令全集Shell_manual  http://www.uplinux.com/php/downl ... ZWxsX21hbnVhbC56aXA

EDN电子技术http://www.ednchina.com/
磁动力http://www.cdle.net/bbs/
大学生电子http://211.86.58.23/ziliao/index.asp
电子产品世界http://www.eepw.com.cn/
电子论坛http://www.avrw.com/learn.htm
研发网www .52rd .com

 

中学生的学习网站大全
http://www.cen114.com

托福考试和出国留学类网站

托福考试
1         托福考试报名
          http://www.bj262toefl.com.cn/
2         托福考试网上报名
          http://www.bj262toefl.com.cn/
3         托福训练中心
          http://www.toeflpro.com/
4         新东方托福培训
          http://www.neworiental.org/class/toefl.asp
5         中青网托福考试
          http://www.cycnet.com/education/chuguo/tofel/
6         IELTS网站
          http://www.fronttraining.com/
7         商业托福考试
          http://exam.studa.com/classhtml/sytf.html


出国留学网站

1          国家留学网
          http://www.csc.edu.cn/gb/
2         无忧雅思网
          http://www.51ielts.com/
3         留学澳大利亚
          http://www.dyo.com.cn/australia/
4         DIY留学家园
          http://www.imm-diy.com/htm/
5         滴答出国资讯
          http://www.tigtag.com/community/whatsnew.asp
6         美国校园网站
          http://www.uscampus.com.cn/index.asp
7         德国大学信息网
          http://www.netbig.de
8         北美国际网校
          http://www.summerpond.org
9         出国在线
          http://www.chuguo.org.cn/
10         北美国际教育网
          http://www.summerpond.org
11         星华出国网
          http://www.starglory.com/
12         上海青年报社--留学指南
          http://www.why.com.cn/abroad/index.asp
13         学在法国
          http://www.paris-beijing.com/Cover/Education/Education.htm
14         欧览留学
          http://www.ouline.com/education/
15         德国留学指南
          http://www.lookinfo.com/study/default.asp
16         天津留学人才网
          http://www.tjscse.com/
17         澳际出国留学
          http://www.globeedu.com/index.shtml
18         国旅留学
          http://www.globaledu.com.cn/
19         爱尔兰中国学生之家
          http://www.kina.cc/ie/
20         环球雅思连锁学校
          http://www.ielts.com.cn
21         皖华留学
          http://www.ahwanhua.com/
22         贵州省出国留学服务中心
          http://www.gossc.com/
23         达瑞出国
          http://www.direxe.com/menu_13/index.shtml
24         新西兰留学服务中心
          http://www.study-nz.com/
25         加拿大环球教育咨询中心思洋教育咨询网
          http://www.education-overseas.com/
26         育路留学网
          http://lx.yuloo.com
27         菲律宾留学网
          http://www.phi-edu.com
28         武汉英中教育
          http://www.whbc2000.com
29         武汉英中出国留学培训中心
          http://www.whbc2000.cn
30         SIK留学韩国
          http://www.studyinkorea.com.cn
31         你我日语综合网
          http://www.youican.com

经济管理类网站


管理类、经济商业网站

帖子的作者给我们推荐了上“千个全球管理类、经济商业网站”

财务会计类

1          中国会计网
          http://www.canet.com.cn/info/
2         财会教研工作室
          http://www.ckjy.any2000.com
3         中国财务纵横网
          http://www.172cpa.com/
4         中华会计网校
          http://www.chinaacc.com/
5         中国财会网
          http://www.kj2000.com/
7         应试精华财会网
          http://www.yingshijh.com/
8         中国会计资讯
          http://www.accinfo.net/
9         中国财经教育网
          http://www.cfeenet.com/
10         中国注册会计师协会
          http://www.cicpa.org.cn/
11        金融会计网
          http://www.fa.net.cn/
12         东方会计网
          http://www.accgo.com/
13         中国财税网
          http://www.edu110.com/index0.asp
14        网络注册会计师
          http://www.netcpa.com.cn/
15         中国会计视野网
          http://www.esnai.com/

 

考研类网站

极力推荐考研导航网(这里有很全的比较专业的考研网站)
     中国教育考试在线http://www.eduexam.com.cn/index.jsp BBSEE

     考研共济站http://bbs.kaoyantj.net/kaoyanshitiboo ... 9/476304ab4c56892f.html

     考研论坛http://bbs.kaoyan.com/forumdisplay.php?fid=66&page=1

     亚非拉http://www.yafeila.com/art_list.asp?cat_id=46

     中国考研网http://www.cnky.net/

     考研ok网http://www.kaoyanok.com/

     考研365天http://www.kaoyan365.com/

     研路通http://www.yanlutong.com/

     51考研http://www.51kaoyan.com.cn/

     复旦考研http://www.yikao.com/

     上海考研同路人http://club.17ky.com/index.asp?boardid=9&page=

     共享天下考研http://bbs.kaoyansky.cn/forumdisplay.php?fid=117

     无忧考研http://51ky.com/default.htm

     考研教育网http://www.cnedu.cn/

     中国考研网http://www.chinakaoyan.com/article.php/1974

     qq考研http://edu.qq.com/kaoyan/

==================================================

大量C语言、C++、C#、VC编程相关书籍下载
http://dl.njfiw.gov.cn/books/( 很多计算机书籍,绝对经典!)

 

计算机类网站

电脑方面的一些网站

http://dl.njfiw.gov.cn/books/ (很多计算机方面的书,可以直接阅读)

操作系统类
http://os.rdxx.com/ (最全面的操作系统网站)
http://www.nohack.cn/jsj/system/20061007/36010.html(黑客手册)
http://tech.163.com/school/(网易学院)
http://www.gbunix.com/ (Unix中文)
http://os.yesky.com/ (天极)
http://www.debian.org/ (环球操作系统,是一个有点另类的操作系统)
http://it.xtzj.com/ (系统之家)

编程开发类
http://www.csdn.net/ (Csdn开发者)
http://www.java-cn.com/ (java中文站)
http://www.programfan.com/  (编程爱好者)
http://www.bc-cn.net/index.html (编程中国)
http://www.zxbc.cn/  (自学编程网)
WWW.MLDN.CN (学java的好地方)
计算机故障维修学习
http://www.wxdn.net/ (电脑维修之家)
http://www.pc-hospital.net/ (电脑医院)
http://www.biosrepair.com/ (bios维修)
http://www.cnfix.com (电脑维修网)

数学类网站


专业数学网址大全



http://www.madio.net/  (数学中国)
http://www.shumo.com/main/html/bbs.html (数学建模网)
http://www.mathfan.com/ (数学爱好者论坛)
http://www.844844.com/xinyun/index.html (高中数学课件网)
http://www.sx999.net/  (数学之家,适合初高中生)
http://www.gzjzes.net/forum/ (数学论坛)

英语类网站


一些优秀的英文信息资源(一)


一些优秀的英文信息资源(二)



帖子作者: 悉想者


英语的一些学习网站

帖子作者:tianzaibianlan

英语学习导航网 (关于英语学习的各类网站,英语学习的网站知道这一个就足够了)

http://www.oifree.com/fourandsix.html (英语考试免费资源)

 

 

 几本linux学习的书籍

本人正在进行linux 的学习 希望这些资料对linux爱好者有用
linux 教材大全 ftp://down.eshuba.com/eshuba/xitongxiangguan/Linuxjcdq.rar


linux 使用大全 http://down.eshuai.cn/shuba/xito ... %C3%B4%F3%C8%AB.rar
linux 学习宝典 http://down1.cnhacker.com/booksdown/07013103050c8cb659a28f9ff.rar

        
linux 从入门到精通 http://www.gouhuo.com/study/linuxbook.zip
练成linux 高手 http://www.jz5u.com/download.asp?id=15590&downid=0
送给linux 初学者 ftp://211.95.73.26/hl/送给初学Linux的穷人Linux系统指令大全.pdf  

         
linux 系统管理 ftp://211.95.73.26/1zxhlinux.rar
linux 命令大全 http://ftpgz5.pconline.com.cn/exam/it/Linux061114.rar
linux 软件工程师 ftp://222.214.218.42/book3/20060 ... 81-4941bcee1f11.pdf  

  
基础学习 http://www.00083.com/soft/upload ... 84b69a63c2ed2a47af3
基础教程完整版 http://download.chinaitlab.com/download.asp?id=34873
命令全集 http://down.linuxmine.com/soft/0/1/01000001.rar  


  使用学习教程 ftp://222.214.216.57/book2/20061 ... 16-c8b5facb0654.chm
网络安全配置 http://vip.hackbase.com/vipsoft/vipteacher/20050305linux29.rar
linux 从入门到精通 ftp://down.eshuba.com/eshuba/200601/Linux ??????.rar  


  http://ftpgz13.pconline.com.cn/pub/download/200205/linuxsite.rar
新手管理员手册 http://www.00083.com/soft/upload ... fc01983a9ded8943b62
安装与配置简明手册 http://cpss.zz.ha.cn/study/linux ... %f7%ca%d6%b2%e1.zip
网络实际操作 thunder://QUFodHRwOi8vZG93bmxvYWQuY2hpbmFpdGxhYi5jb20vZG93bmxvYWQuYXNwP2lkPTM3MTM3Wlo=
红旗linux 中文版初级教程 http://down.hack58.com/fzw_hack58/sohu/11-23linux.rar
linux 核心源代码分析PDG http://www.00083.com/soft/uploadsoft/linux核心源代码分析.rar?6103004891303x1174341082x6103009877379-15c492eb5c3033c99a07c2fba419c496
破解根用户密码 http://www.942d.com/shipin/bbs/linuxsn.rar
Red Hat Linux Fedora傻瓜书 httP://book1.ibook8.com/ibook8co ... 5/041113/fedora.rar  


Linux知识宝库典藏版  ftp://222.214.218.42/book3/20060 ... 35-0c5492042030.chm
Linux程序设计  ftp://down.eshuba.com/eshuba/xitongxiangguan/Linuxcxsj.rar
Linux参考大全  httP://book1.ibook8.com/ibook8com/pc2005/701/1/521hacker-20.zip
linux编程初学者入门  ftp://222.214.216.57/book2/20061 ... 00-a603302e0466.rar  


LINUX应用技术精华{面向初学Linux朋友的书籍}   http://www.linuxfans.org/nuke/software/LINUX应用技术精华{面向初学Linux朋友的书籍}/LINUX应用技术精华{面向初学Linux朋友的书籍}.rar
redhat9从入门到精通  http://down.315safe.com:315/redhat9从入门到精通.rar  


Linux C函数库参考手册  http://cnc-http.xpbook.com:81/200506/Linux%20C函数库参考手册.rar?6102881127298x1150968278x6102884440460-71dc8cd6d874db99d29888002914a4d5
Linux 内核完全注释   httP://book1.ibook8.com/ibook8co ... 113/linuxsystem.rar
Linux2006年9月 总第三期  http://www.linuxer.cn/magazine/linuxer3-2006-09.pdf
Linux_network_manage-3245      http://down.csdn.net/down2//2006 ... ork_manage-3245.rar
一周内学会Linux系统管理   http://download1.csdn.net/down2/2006/10/499/1zxhlinux-2605.rar
linux编程白皮书   http://download1.csdn.net/down//2006/webdown/004/Linuxbcbps.rar
linux上的c编程   http://www.cinchina.com/Soft/Sho ... lID=1&SoftID=12
linux宝典  thunder://QUFodHRwOi8vZG93bmxvYWQuY2hpbmFpdGxhYi5jb20vZG93bmxvYWQuYXNwP2lkPTM3MDk3Wlo=
《Linux内核完全注释》 V1.9.5版  http://oldlinux.qbang.org/download/clk011c-1.9.5.pdf
linux教材  thunder://QUFodHRwOi8vd3d3Lmp6NXUuY29tL2Rvd25sb2FkLmFzcD9pZD0xNDUxNSZkb3duaWQ9MFpa
linux命令全集Shell_manual  http://www.uplinux.com/php/downl ... ZWxsX21hbnVhbC56aXA  

posted @ 2007-10-07 19:38 MEYE 阅读(722) | 评论 (0)编辑 收藏
下载]中国目前最好的卡拉OK点歌系统(适合个人和歌厅使用)

 


一直以来我们只有去歌厅才能享受到的卡拉OK点歌系统,现在可
以简单的安装到普通的家用电脑上面,我偶然在网上发现了一个
好软件,贴出来和大家分享,在这里卡拉OK搬回家,让K歌更具自
由。进入个人欢唱,您在自我陶醉之余,可以录歌,还有评分功能,
让你不段提升自己的K歌水平,马上体验KTV包房效果,把KTV搬回家。
 
520)this.width=520;" src="http://www.xdlvod.com/Skin/dvd11/main_b.jpg" width=520 onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>

还集成了小游戏
520)this.width=520;" src="http://www.xdlvod.com/Skin/dvd11/game_b.jpg" width=520 onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>

目前有三个版本供大家下载
dvd版本下载地址:点击下载
VCD版本下载地址:点击下载
MPEG版本下载地址:点击下载

http://tk.mumayi.net/CYRJ03.htm
ftp://download:download@210.40.7.232/
posted @ 2007-10-04 13:21 MEYE 阅读(1088) | 评论 (0)编辑 收藏
     摘要: 分享]著名大学在线视频教学,授课汇集大全 [北方交通大学][数字电路][网页] http://61.131.25.2/course/hep/shuzidianlu 北京理工大学在线教学 ...  阅读全文
posted @ 2007-10-04 12:38 MEYE 阅读(6302) | 评论 (3)编辑 收藏


[下载]刻画精品--三维立体图像制作等14款

1. 制作三维图像的工具-Cult3D Designer
V5.3.0.117-绿色汉化版
软件大小:10.77 MB
软件语言:简体中文
软件类别:国外软件 / 免费软件 / 3D制作类
运行环境:Win2003, WinXP, Win2000
添加时间:2006-12-15 12:33:20
更新时间:2006-12-15
12:33:20
软件简介:
是一个制作三维图像的虚拟现实软件,它可以导入由 3ds max 和 MAYA 制作的三维模型,然后在
Cult3D
Designer 中给模型加入互动效果,事件和声音最后生成可以在互联网上浏览的三维立体图像(需要 Internet Explorer
安装相应的插件),或者嵌入到 Word、PowerPoint、Acrobat
文件中,是当前几种较为流行的虚拟现实软件之一。
小提示:需要拉协议到底部,才可进入主界面!
注册信息:
Code:1UED41YT0HJLUPS4BHQYBJC8N0
520)this.width=520;" src="http://www.caicai.org/ewebeditor/uploadfiles/2006-12/20061215_124258.GIF" width=520 onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
http://www.caicai.org/downinfo/30528.html
2.让你开开眼界:(刑事模拟画像软件)智能画像专家
2.0版
软件类型 特别软件
运行环境 Win9X/WinXP/Win2000/
软件语言 简体中文
授权方式 免费软件
整理时间 2006-5-14 21:50:55
软件大小 12 MB
下载统计 本日下载:13 本周下载:13 本月下载:250
总共下载:3818
软件简介∷
这是一个刑事模拟画像软件,有演示版可以下载,就是图库只有几十种,正式版有上万种。
在1024*768分辨率下运行
智能画像 功能强大

独创智能画像技术,根据目击者的描述,选择确认特征后,电脑即刻自动生成符合特征的人像连续显示。也可从发型、脸型、眉毛、眼睛、鼻子、胡须、嘴型库中选择合适的五官人工组像,五官位置、肤色自动匹配,并可随意修改调整。七大类上千种典型五官涵盖东南西北男女老少中国人。
特征添加 方便快捷
● 任意添加皱纹、色斑、胎记、黑痣、痤疮等等个性特征,并配备了各式帽子、眼镜、耳环、项链和服装,和五官随意组合,即刻显现。
● 提供画笔、喷枪、复制、涂抹、橡皮等常用绘图工具,使你创造任何相貌特征都得心应手。
● 能使画像富有喜怒哀愁等表情变化,更准确地把握被画者的气质特征。
多种画像效果
多种打印模式
● 彩色、素描双模式成像,随时变成黑白、彩绘、素描或版画效果。

成像可以添加文字说明,并以多种形式打印出来,一像多幅,*作方便快捷。
人性化设计

创新模拟画像一机双屏,同步显示,主屏供画像人员观察*作,辅屏去掉功能按纽并使画像放大显示,让目击者观看得更清楚,思维更集中。
● 十种典型相貌模版随你调用,成像可以保存成通用图象格式方便其他调用,也可保存为你自己创作的模版,效率更高,效果更好。

所有*作无限次撤消恢复,灵活方便。无需具有电脑知识和专业绘画技巧,一看就会,一用就行,人人都能成为模拟画像高手!
解压密码:www.jz5u.com
520)this.width=520;" src="http://www.jz5u.com/upimages/2006-5/200651383175921.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
520)this.width=520;" src="http://www.jz5u.com/upimages/2006-5/200651383394921.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
520)this.width=520;" src="http://www.jz5u.com/upimages/2006-5/200651383275561.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
http://www.jz5u.com/Codelist/Catalog173/3864.html
3.三维立体图像制作大师
v3.10 特别版
软件类型: 特别软件/特别软件
软件语言: 简体中文
运行环境:
Win9X/WinME/NT/Win2000/WinXP/Win2003
软件大小: 2.58 MB
整理时间: 2006-1-8
15:01:02
下载次数: 本日:79 本周:79 本月:79 总计:79  
软件简介:
三维立体画是利用人眼立体视觉现象制作的绘画作品。三维立体画充分利用人的双眼立体视觉,带给你一个层次分明的3D世界。
如果你不仅仅满足于观赏三维立体画,并且希望自己亲手制作,那么这款专业的三维立体画制作软件将帮助你完成一幅幅多层次立体感的精美图画..
520)this.width=520;" src="http://www.orsoon.com/upimages/2006-1/20061854052909.JPG" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
http://www.orsoon.com/Software/Catalog114/5486.html
4.3DXara3D文字动画制作工具v5.02绿色汉化版
软件大小:1.25
MB
软件语言:简体中文
软件类别:国外软件 / 免费软件 / 3D制作类
运行环境:Win2003, WinXP,
Win2000,
NT, WinME
添加时间:2005-11-16 18:29:54
更新时间:2005-11-16
18:29:54
软件简介:
太强大了!支持所有英文、中文字库,拥有几十个动画效果,拥有几十种质材(木纹,砂跞等等),可以输出avi(视频)、gif、swf(flash)、ani(动画光标)等文件,可直接输出屏保,几乎不可想象,这都是出自一个不到2M文件!
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
 
http://www.caicai.org/downinfo/23794.html
5.方正画苑3.0
软件类型: 国产软件/破解软件
软件语言: 简体中文
运行环境: Win9X/Win2000/WinXP/
软件大小:
481 MB
整理时间: 2005-7-23 1:11:49 解压密码: 默认密码:124132  
软件简介:
中文名称:方正画苑3.0
英文名称:FOUNDER ARTWORLD VERSION
3.0
别名:画苑3.0
资源类型:ISO
版本:方正画苑3.0完美破解版本
发行时间:2003年
制作发行:北大方正
地区:大陆
语言:普通话
简介:
方正画苑
--集版面设计、图形创意、文字排版,
图像处理于一体的平面设计软件
运行环境: 简体中文所有windows系统
PC兼容机PENTIUMⅡ以上
128M以上内存(建议128M)
4GB以上硬盘
24位真彩色显示
包含《方正兰亭》GB版V2.00
把破解文件解压出来拷贝到安装目录下覆盖相同文件即可使用
方正画苑是北大方正推出的一个面向商业印刷领域集图象编辑、版面设计、图形创意、文字排版于一体的制版软件,特别适合于制作高档画册、期刊封面、彩插、挂历台历、条码标签、门票、宣传单、包装、大幅面海报、广告及各种卡片等。尤其是在喷绘广告、短版快速印刷、日历条码制作方面有很大的优势。可以全面地帮助用户完成复杂的设计和创意工作,主要面向彩印厂、广告公司、输出中心等专业用户。
●宗旨
深悉印前行业特点、优化平面设计与制作流程、提高专业用户生产效率、兼容相关软件的设计结果。 
●适用的制作种类
图形、图像、文字相互融合的作品:画册、书刊封面、彩插、广告传单等;日历的设计与制作:挂历本册、台历等;大幅面作品:艺术包装、大幅面海报、灯箱广告等;家庭或个人的自由创意作品:个性化的年历、月历,风格各异的生日卡、贺卡、精美考究的请柬、名片等。
●特别支持
方正画苑对平面设计与制作过程中最常用、最耗时费力的工序有特别支持:日历设计,提供灵活的日历工具,可自动排年历、月历、周历;画册制作中多页拼大版,方正画苑提供自动拼大版工具,生成符合实际生产需要的拼版结果;极耗耐心的发丝类图象裁剪问题,方正画苑提供细节蒙版工具,保证裁剪边沿的准确、细腻。
方正画苑使用流程:
方正画苑使用流程:
目标用户: 出版社照排中心、彩色印刷厂、制版中心、广告公司、个人设计者
主要特点:
1、针对印前工序设计的优化的设计排版软件。集成了图形、图像、文字处理和专业排版功能,一个软件即可完成整个文图处理、编排工作。
2、专业的挂历、台历、条码制作功能;专业的商标、包装盒拼版和
拼大版功能。
3、图像创意功能实用高效,快捷菜单轻松完成特效制作(如边框、软边、渐融、阴影等)。
4、独一无二的发丝裁剪和最优的自动路径勾画
5、具有色彩管理、作业管理、图片管理功能。
方正画苑在印前领域的优势
  
方正技术研究院在对印前平面设计领域进行多年的研究之后,推出的方正画苑软件在系统速度、使用方便性、专业性、兼容性等方面都具有明显的特色,形成了系统的综合优势。在进行图象处理过程中,方正画苑针对印前领域图象数据量大的特点,对用户常用的功能进行算法优化,突破图象处理的速度瓶颈,提高了整个系统的运行效率。为了方便用户的*作,方正画苑实现了多种功能的完全自动化,如日历、条码、阴影、发光、铺底、透明、渐融、加边框等效果都仅需一条菜单命令即可完成。同时,对于实际制作中经常使用的路径勾画功能,方正画苑特别设计了半自动路径和全自动路径两种勾画方式,帮助用户轻松自如地完成复杂路径的勾画。方正画苑是一个非常专业的平面设计软件,日历自动生成功能可以生成市面上常见的各种日历样式;符合国家标准的条形码自动生成使书刊、杂志、包装盒上的条码更加规范;连拷功能对商标、纸杯、包装拼版及模切数据的输出提供强有力的支持;交互及全自动拼大版功能全面支持画册、台历等的折手整版输出。方正画苑对其它软件的兼容性非常突出。在系统兼容性方面,方正画苑可以支持多达15种图象格式的输入输出,可以接收多种流行软件生成的EPS,形成一个开放的*作环境。在使用兼容性方面,方正画苑充分借鉴和吸收了常用平面设计软件的*作特点,使用户可以很快领略方正画苑的精髓。
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
http://cuurjz.com/Software/Catalog45/82.html
6.文泰刻绘2002+千年图库
软件语言: 简体中文
软件类型: 软件工具 / 设计软件
运行环境: RAR
授权方式: 免费软件
软件大小:
832 MB  
整理时间: 2005-9-11 19:51:00
下载次数: 本日:8 本 周:471 本月:471
总计:13627
软件简介:
文泰刻绘2002+千年图库
转述原帖说明如下:
一、*作界面。容易上手。Word风格*作界面,只要您有使用Windows*作系统和Word的基本知识,使用本软件就会有亲切感。同时,本软件还吸收了FreeHand、PageMaker、CorelDraw等优秀西文软件的优点,增加了键盘功能、全自动(傻瓜型)*作,使用时直接、简单、方便。
二、图形库。丰富多彩、量大面广。除随本软件系统光碟配置的原文泰新图库、文泰实用图库(著名商标、中国民俗图库)、文泰国际图库、国家标准图库(公共标志、提示标志、交通标志等13种)等共有图形近万种外,又增加了千年图库光碟,极大地增加了用户选择应用的可能范围和方便灵活性,节省时间、提高效益。这些图库共同组成了本行业目前最新、最全、最实用的图形库。
三、中英文字库。多而全:
1、汉字库:字型和字体是目前最多的。字型用三次曲线精心制作,是真正的轮廓汉字,笔划经过处理后更加粗厚,可任意放大而不变形。字体有近百种,均按简体、繁体区分,支持GBK大字符集。
2、中英文匹配:为您的汉字库配套了相近的英文字体和标点,并配置了相应的英文基线调整,使用更方便。
3、可挂接Windows底层中英文TTF
(Windows True Type Font)
字库。通过特有的去交叉算法处理,您不必担心输出Windows底层交叉笔划的汉字时会将笔划刻断。
4、新增6款单线字,其中文泰单线简体4种、文泰单线繁体2种。
四、速度和设备利用率:采用32位编程,软件运行速度大大提高。独特的后台输出功能:不管刻字机内存大小如何,只要刻字机一开始工作,就可以把计算机解放出来,使您能在刻字机刻字的过程中充分利用计算机进行其它的工作。
五、与其它软件的兼容性:可与其它软件的EPS与PLT、DXF文件交换,可以读入TIF图与BMP图及文泰刻绘5.X版本的文件。
六、图形输入和编辑
1、直接支持图形扫描:可在本软件内直接挂接扫描仪。
2、彩色、灰度图像条块化,使输出更形象、更逼真。
3、简单实用的节点编辑:增加了批量处理节点的功能和对线段直接*作功能,效率更高。
4、弧排、沿线排版功能强大:提供多种方式弧形画法。弧形排版功能,去除了多余的参数设置,使用更简单,方便。
5、图形扫描曲线化描边:对扫描的彩色图像可以直接处理成用曲线描述的轮廓图,以供刻字机或雕刻机输出。
6、新增调色板功能:用户可以在调色板中任意调配颜色,并可对所需内容全色或分色输出。
7、图形的任意组合:特有的交、并、叉算法和方便的节点编辑,使您的图形制作更简单快捷。
8、最新优化的图象矢量化,速度快、效果好,可以处理大幅面图象。
9、整图自动光顺功能,无需进行节点编辑,轻松到只需轻轻按一下键,就能输出更加光顺圆滑的大幅面图形,有效地避免锯齿现象,而且保证尖角分明。
七、文字录入和编辑:
1、支持汉字大批量录入的即打即排方式录入,可插入以.txt
为后缀的文本文件,并可使用Windows其它软件直接链接到本程序。
2、汉字曲线勾边和加粗功能:用户可以将您需要的汉字任意加粗,并可刻出扩边效果,完全不用担心会产生笔划交叉。
3、对任意文字增加曲线的内外轮廓,来改变文字的粗细程度。
4、汉字的变形及特技效果:可以将汉字做任意形状的变形,可以制作球形、圆柱形等各种特技效果。
5、多国、多民族语言支持。在Windows
2000 下,安装相应的True Type
字库(用户自行安装),即可在同一版面上同时输入中文、俄文、阿拉伯文、韩文等语言文字。
八、整体排版
1、随意的缩放功能:输出版面任意缩放,不需要重新制作版面。
2、人性化的刻绘输出:输出前可以将区域及内容预显在屏幕上,页面可以任意移动及任意定义原点。
3、多页排版,分页输出功能。
九、输出功能
1、随意裁切功能:用小幅面刻字机完成大幅面输出。用户可以随意使用裁切功能,将大字,图形从任何位置,以任何方式裁切输出,并提供裁切区域重复功能,真正做到方便迅速,无缝连接。
2、省纸方式输出:最大限度节省您的纸张,为您节省每一分钱。
3、批量复制输出:同一内容可以批量复制后一次输出。
4、支持任意Windows下的打印设备,任意大小输出、实心彩色输出。
5、支持喷绘机巨幅打印输出。
6、通过特有的排序算法,使输出速度更快,质量更好。
7、支持国产刻字机补偿输出:刻绘输出时,本软件独有的曲线补偿功能使国产的刻字机刻绘输出效果完全等同于进口的刻字机。
8、可以单独设置输出页面的纵横比,确保最终产品的尺寸误差最小。
9、海报制作及彩色打印输出功能:支持Windows底层彩色和黑白打印机直接输出排版结果,组合后批量复制不再有内存限制,并支持图像打印。
10、支持Windows98、2000、XP各版本的直接输出。
1、主机
处理器(CPU):486或486以上。
内存:16M或以上。(内存越大,系统的运行速度越快)
硬盘:840M或以上(文泰刻绘软件全部安装后需将近600M的空间;光盘图库全部安装需300M左右的空间)。
显示器:14VGA彩显或以上,分辨率最好在800×600以上。
光驱:Windows支持的光盘驱动器支持长名文件读取。
2、*作系统
Windows9X/Me/2000/XP*作系统
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
http://www.pigbt.com/SoftView/SoftView_11544.html
7.E-尺
V1.1 破解版
软件语言: 简体中文
软件类别: 国产软件 / 破解版 / 计算器类
运行环境:
Win9x/WinNT/Win2000/WinME
整理时间: 2005-10-22 11:18:44
页面刷新:
2005-10-22
11:18:46
软件简介:
E-尺是一个用来测量的工具软件,可以用来测量屏幕上两点或多点的距离和角度,特别适合从事网页或美工工作的您。E-尺带有一个能从2X到6X可调的放大镜,使瞄准更精确。有了E-尺,测量只用一个按钮
特色 测量两点的距离测量多点的总长度测量角度带有一个2X至6X的放大镜可以进行厘米,英寸间的转换
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
http://down5.tiansha.net/20051001/tiansha.net-ecr.rar
http://down4.tiansha.net/20051001/tiansha.net-ecr.rar
8.老夫子漫画作品全集
软件类型: 本站推荐/免费软件
软件语言: 简体中文
运行环境: Win9X/WinME/NT/Win2000/WinXP/
软件大小: 52.9 MB
整理时间: 2005-8-30 10:27:23
下载次数: 本日:17 本周:2341 本月:17
总计:2341
软件简介:
注意:要是用ie点击不能下载的请用flashget或者迅雷下载。
520)this.width=520;" src="http://www.orsoon.com/upimages/2005-8/200583037358737.JPG" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
http://www.orsoon.com/Software/catalog213/3654.html
9.《文泰2002+》(artcut2002+)(2CD)正版完美镜像
软件/行业软件
发布时间: 2005-04-01 03:34
最新更新时间: 2005-04-01 23:38
中文名称:文泰2002+
英文名称:artcut2002+
版本:(2CD)正版完美镜像
发行时间:2002年
地区:大陆
语言:普通话
简介:
文泰刻绘2002版软件是在1992年推出的文泰刻绘1.0版软件的基础上,经过10多年的不断开发完善而成的。该产品曾获两项大奖:
  -北京市新技术实验区拳头产品奖;
  -全国优秀软件奖,
最新升级:文泰刻绘2002版软件介绍
  1、包括了此前历次出版的文泰刻绘软件的全部功能,
还增加了许多新功能,修正了部分错误,提高了部分功能的性能,能够完成用户刻字绘图的全部需要!
  2、可以在Win9X,Win2000,WinMe,WINDOWS
XP下运行!
  3、多国语言支持。在同一版面上可以同时输入中文,俄文,希腊文,韩文,日文等,方便多民族聚集地使用。
  4、最新优化的图象矢量化,速度快、效果好,可以处理大幅面图象!
  5、整图自动光顺功能,无须进行节点编辑,松快到只轻轻按一键,就能输出更加光顺圆滑的大幅面图形,有效避免锯齿现象,而且保证尖角分明!
  6、赠送文泰千年图库光盘,内含上万种各类图库。例如中国的祥禽瑞兽、吉祥装饰艺术、卡通图片等等。
  7、独特的输出精度补偿,可以有效地分别纠正机械精度误差,从而提升你的刻字机精度。
  8、最新优化的顺序输出功能,在顺序输出的同时,又以字为单位,有效解决部分刻绘机失步,纸前
进方向误差的问题,又能提高输出的效率。
  9、弧排和沿线排版的位置和角度均可任意修正,方便使用,任你摆布。
  10、独特的替换复制功能,方便快速制作各种胸牌,号码牌等。
  11、沿线排版功能,能够让任意图形和文字沿您所指定的路线排列。
第一次发东西。有不如意的地方请大家见谅。学习ing
一般24小时在线,偶尔关机做个系统备份。
Artcut6PRC是官方的升级补丁
WENTAI.iso是安装盘
WENTAI
1是千年图库(钥匙盘)
都是原版100%克隆,未做任何改动,已经测试了很久,使用正常。
520)this.width=520;" src="http://www.kw2000.com/software/image/wt2002_1.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
http://lib.verycd.com/2005/04/01/0000044451.html
10.超级画笔
PowerPaint 2.1
软件大小:4024KB
软件语言:英文
软件类别:国产软件 / 注册版 /
图像制作
运行环境:Win9x/NT/2000/XP/
软件更新:2005-5-9 7:26:55
页面刷新:2005-5-9
9:41:10
下载次数:2516
软件介绍:
代替Windows画笔的最好工具:1、近百种图形样式(似Microsoft
Office 中的
Word); 2、对图形有10种渐变填充方案、50种图案填充方案、几十种线型..; 3、程序自带几千个标微库;
4、对图像有20种渲染优化方案(似Photoshop,如改变三基色、调整亮度对比度、风化效果、马赛克效果、指定透明颜色等)
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>超级画笔 PowerPaint v2.1:http://www.piaodown.com/down/down.asp?id=7002&no=1
超级画笔
PowerPaint v1.26 注册机:http://www.piaodown.com/down/down.asp?id=7002&no=2
11.创新儿童魔力画匠(Creative
Painter) 3.3 完全版
运行环境 Win9X/WinXP/Win2000/ 软件语言 简体中文
整理时间
2005-5-23 2:31:20 软件类型 破解软件
授权方式 免费软件
软件大小 14.09 MB
下载统计 本日:4
本周:266
本月:337 总计:1052
软件简介∷
Creative Painter
一款专为儿童设计的魔力画匠软件。它将帮助孩子们实现成为艺术家的梦想!即刻开始,利用拖放就可得到一幅美好的图画。拥有Creative
Painter,孩子们就将喜欢上绘画!媲美金山画王。简直太像了,也不知道谁克隆谁的。魔术棒、动画设计和静态画面设计、涂色图库等功能更具特色。全鼠标*作,虽然没有一个文字,但是图标化设计,简单明了,儿童一看就会!
小孩子天真可爱,他们的绘画往往创意独特。要在电脑上让他们发挥自己的创意,这对将来培养他们学电脑非常有帮助。Creative
Painter
2004是一款特别适合于儿童卡通动画制作的工具,它既可以使用手绘方式在画布上涂鸦,还可以直接调用软件里内置的各种静态和动态素材,随意拖曳就可以生成自己的卡通画或动画片。
Creative
Painter
的界面简洁活泼,全部工具均以图标方式设置,没有任何的菜单命令,孩子们会很快上手。在画布窗口的底部有一排十分形象的工具箱,这里内置了毛笔、铅笔、油笔、喷枪、局部变形(放大镜)等绘画工具,尽可以在这里充分发挥你的想象力,在画布上信手涂鸦,练习各种工具的使用,画出你喜欢的图画。
孩子没有绘画基础怎么办?别急,你只要在主窗口右下角点击,就能切换到模型模式,这里内置了大量的背景、卡通和动画模板,小朋友们可直接调用。选择类别后窗口右侧就会弹出该类的全部模板,选择一种模板后直接拖曳到画布上就可以了。
值得一提的是系统内置的“素描”素材和“动画”素材,“素描”素材是一些线条勾勒的图画,小朋友可以用它作为基底,使用手绘工具练习填色,增加自己的色彩表达能力;而“动画”素材可以让小朋友们在背景图片上,根据自己的喜好添加一些栩栩如生的卡通动画,制作自己的动画片,而且只须拖曳即可。由于未注册版本没有提供保存功能,小朋友可在爸爸妈MD指导下使用SnagIt
屏幕抓图工具,把你的作品保存下来。SnagIt不仅可以保存静态图片,还可以定义为任意区域视频捕捉方式,将屏幕上活动的动画片截取下来。由于素材动画的动作周期不超过5秒,只要截取几秒钟的视频就可以了,保存为AVI文件也不过几百KB,发给别的小朋友看一看,是不是很有成就感呢?
创新儿童魔力画匠(Creative
Painter) 3.3 Final 正式版
Code:KeAPJWVhVhAf4cFPbXB7
520)this.width=520;" src="http://soft.mumayi.net/upimages/2005-3/200531279696609.jpg" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
http://soft.mumayi.net/Software/Catalog176/828.html
12.FlexiSIGN
Pro V7.5v5 (雕刻软件)
软件分类: 国外软件 / 破解版 / 辅助设计
适用平台:
Win9x/NT/2000/XP/Win2003
文件大小: 131M
整理日期: 2005-1-30 5:30:03
程序语言: 英文
总计下载: 5232
软件介绍:
美国彩艺软件,世界一流彩艺刻绘软件fdsa
FlexiSIGN Pro
V7.5v5
电脑切割系统,在台湾也已经有超过 1000家的使用者,
更适合所有需要将影像图形或商标转换成向量格式的行业,
全世界叫她
Flexisign,在台湾你可以叫她【美国大割大】
SCANVEC 和 AMIABLE Technologies Inc.
为全球最受 欢迎之专业广告创作软件
生产商。全球用户超过 90,000。于 1998 年,两公司决定合并成为 SCANVEC
-
AMIABLE。
SCANVEC - AMIABLE 之产品以致力开发多功能,领先科技之尖端产品,采用大量
CAD
工业之复染技术,高精度的数字运算溶合于创新之图形介面之中。所有软件
提供 Windows 及 Macintosh
的平台*作系统版本及提升高级版本。现时,产品
范围包括电脑切割系统,其主力产品为FlexiSIGN Pro
V7.5v5,广泛的应用于美工切
割系统之中
英文产品详细介绍请至
http://www.scanvecamiable.com/Products/flexi75.htm
520)this.width=520;" src="http://avtonim.ru/images/soft/flexiscr.jpg" width=520 onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
520)this.width=520;" src="http://www.aeromatrix.com/products/x06scnxx.jpg" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
分卷1:http://www.9iv.com/down/down.asp?id=1978&no=1
分卷2:http://www.9iv.com/down/down.asp?id=1978&no=2
分卷3:http://www.9iv.com/down/down.asp?id=1978&no=3
破解:http://www.9iv.com/down/down.asp?id=1978&no=4
13.Poser6 光盘镜像
软件类型: 行业软件/注册软件
软件语言: 英文
运行环境: Win9X/Win2000/WinXP/
软件大小:
765 MB
整理时间: 2005-9-30 13:58:00
软件简介:
poser6 光盘版
人物三维动画专业建模软件。
Curious Labs 近日发布关于 Poser 6
的消息,并称作为出色的角色及其动画制作软件的最新版 Poser 6 ,将在今春正式发布,同时出售它的特别版以志祝贺Poser
6的推出,这个特别版将把Poser
6及Winter Queen Figure Pack角色包、Shade 7 designer
LE一同捆绑销售,仅需要239美元 / 219欧元 /
150英镑,就能得到价值超过400美元的上述软件及附属品甚至更多。而Poser
6单独的定位价格将是249美元 / 229欧元 /
157英镑。
新特性
#1 新的影子捕捉
#2 新的灯光特性
#3
增强渲染效果
#4 新的光影效果
#5
新的软件加速和OPENGL加速
Poser6,是面向艺术家和动画片制作者的3D人物设计&动画片的工具。
从预先准备的丰富多彩的人物,动物模型可以制作3D人物。因为Poser的革新性接口,可以简单高速地进行人物设计,暂停和动画片的设定。脸部写真,可调节长度和风格的头发,与动作相协调的动态服饰等使制作的3D人物更加具有真实感。所制作的人物,可以作为静止画或者电影,在WEB,印刷,录象作品中快速地导出。
可以自在设定的3D模型能够极大拓展你的3D表现幅度。
520)this.width=520;" src="http://219.146.83.50:8080/toolsimg/050930/po06.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
http://down.kittygd.com/Software/Catalog23/551.html
14.精灵画笔之大天使
Wizardbrush V6.5
软件大小:3689KB
软件语言:简体中文
软件类别:国产软件 / 破解版 /
图像制作
运行环境:Win9x/NT/2000/XP/
软件更新:2005-3-10 1:18:48
页面刷新:2005-3-10
1:18:49
下载次数:3461
软件介绍:
精灵画笔系列软件拥有功能卓越的各种绘画工具,不仅可以创作出与常规画法一样的作品,最有用的就是可以制作出常规情况下无法实现的作品,比如同时使用油画和水彩画的技巧,在油画中实现透明技巧等。由于随时可以Undo,并且可以使用橡皮擦,创作国画更加得心应手,完全改变国画需要一气呵成的创作方法。优软对自己产品的要求近乎苛求,绝不好大喜功,我们在细节的地方体现对您的服务:风格独特*作方便的用户界面,第一等流畅平滑自然的绘画线条,对压力感应绘图板,立体声卡,扫描仪,数码相机等设备的出色支持,让您充分享受现代化绘画创作的乐趣。
Name:piaodown
Code:PAS8-SG64-P4KA-KQN3
520)this.width=520;" src="http://www.pconline.com.cn/download/images/download_now.gif" onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
精灵画笔之大天使
Wizardbrush
V6.5:http://www.piaodown.com/down/down.asp?id=9051&no=1
精灵画笔之大天使
V5.86 破解补丁:http://www.piaodown.com/down/down.asp?id=9051&no=2
精灵画笔之大天使
Wizardbrush V6.06 简体中文版:http://www.piaodown.com/down/down.asp?id=9051&no=3


[推荐]学驾驶视频(六集)

高速下载汽车驾驶视频教程(共六集)

要下趁快(用网际快车下载)

点击下载->第一集

点击下载->第二集

点击下载->第三集

点击下载->第四集

点击下载->第五集

点击下载->第六集

posted @ 2007-10-04 12:05 MEYE 阅读(2802) | 评论 (4)编辑 收藏
[推荐]以色列最强大的英文翻译软件Babylon-Pro6.0.1注册版


来自以色列最强大的英文翻译软件 - Babylon Pro,在全球已有超过 70 个国家 2 千 2 百万人使用。Babylon-Pro 提供最专业英文翻译,有别于一般的翻译软件,Babylon 最迷人的是可外加其它语言字典,提供让您翻译一次可同时得到其它语言的翻译。例如您的字典清单中有英英、英中、英德、英日、英韩的字典时。当您查询一个英文单字时,她便同时一次给您所有英中德日韩文的翻译用法:

USER: Andr Forum
SERIAL: A7330D950A66F5830A66D740

下载地址:http://www.mikebox.com/get_code.php?code=35437b5c6d86cd49b06902cb3a5a1148

黑客工具: http://bbs.1g.cn/Announce/Announce.asp?BoardID=102&ID=97892&p=2&q=1&r=24308










PerfectDisk v8.0 汉化注册版[高效专业的磁盘碎片整理工具]
520)this.width=520;" style="CURSOR: hand" onclick=javascript:window.open(this.src); src="http://a.uu1001.com/uu/2chao/Mon_0701/2_1_6a6b4ce81675462.gif" width=520 onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>
520)this.width=520;" style="CURSOR: hand" onclick=javascript:window.open(this.src); src="http://a.uu1001.com/uu/2chao/Mon_0701/2_1_93489c07bcd23ac.gif" width=520 onload="javascript:if(this.width>520)this.width=520;" align=absMiddle border=0>

运行环境:Win9X/Win2000/WinXP/Win2003
软件语言:简体中文
软件类型:国外软件 - 系统工具 - 磁盘工具
授权方式:免费软件
软件大小:8.5 MB
推荐星级:★★★★

PerfectDisk下载介绍:这个软件是打着比 DiskKeeper 又快又好的口号来宣传!经过试用,这个程序比那个 VOptXP 整理效果绝对好多了!说实话,后者整理很快是个假象而已,其实磁盘文件很多都没有经过优化,况且软件加密方面也恶心得很。强烈建议大家改用这个软件!还可透过网络连线对远端电脑做硬盘或软盘重整功能。无论磁盘文件是 FAT 或是 NTFS 格式皆可以聪明地分析磁盘文件格式,安全、快速地将硬盘或软盘不同磁区的文件和目录作重整,保持硬盘或软盘文件的连续,存取文件更有效率。

下载地址:http://www.mikebox.com/get_code.php?code=312a869e9c955b6b64ec0552ea8e2a6a
posted @ 2007-10-04 11:30 MEYE 阅读(784) | 评论 (0)编辑 收藏

世界上最好的帖子, 经典网址合并于此

世界上最好的帖子, 经典网址合并于此
1、搜索网站:
  http://www.google.com 全球最强大的搜索网站。在语言学习中,它的功能至少包括:
  搜索新词可用之语境、确认某种搭配或用法是否准确、通过同时输入中文及"English"寻找可能存在的双语介绍、查询文学作品译本、了解某一类事物的相关知识等。
  http://www.yahoo.com 雅虎分类检索。
  
2、汉英、英汉、英英、汉汉词典:
  http://www.iciba.net/ 金山词霸网站,可以下载部分字典软件的共享版,英汉之间各种转换都有。词条数一般在百万以上。建议还是直接去买软件好,作为案头常备工具,还可随点随译。
  http://sunrain.net/ 太阳雨汉英英汉词典,内容丰富,可以添加词汇,并有水平不错的论坛。
  http://www.m-w.com/ 韦氏大词典,英英,韦氏字典家族尽览。
  http://www.thesaurus.com/
http://www.dictionary.com 综合词典,同义词/反义词,分类,英英。
  http://dico.isc.cnrs.fr/dico/en/search 同义词电子词典,英英。
  
3、百科辞典
  http://www.bartleby.com/reference/ 美国最大的免费在线参考网站。下有Columbia Encyclopedia, Roget's Thesauri, American Heritage Dictionary, Columbia History of English and American Literature等众多参考词典。更新快,内容丰富。英文。
  http://www.encycolpedia.com 在线简明哥伦比亚百科全书,有5万多词条。英文。
  http://education.yahoo.com/reference/encyclopedia/index.html 在线简明牛津百科全书。英文。
  http://s9.com/biography/search.html 人名词典,可通过名字、关键词或时间查询28,000位世界著名人物的简要介绍。英文。
  http://www.getty.edu/research/tools/vocabulary/tgn/index.html 地名大词典。英文。
  http://www.db66.com/index.shtm 新近开通的知识在线,号称网上最大中文知识库,有世界知识、中国文物、音乐、体育、历史等百科全书。需要注册。
  http://www.xingfusi.com/fxd/lookup.htm 六合一佛学大词典,每个词条都有详介及英语译法。
  http://www.al-islam.org/encyclopedia/index.html 英文伊斯兰教百科全书。
  http://www.carm.org/dictionary.htm 英文基督教神学词典。
  http://www.ask.com/ 最常用的提问网站,可以通过查询分类查找问题答案,也可上帖提问。
  
4、翻译
  http://www.bilinguist.com 汉英论坛,高手云集,可上贴提问,回答率高。
  http://www.chinatranslate.net 中国翻译网,号称全国最大的翻译专业网站。知识全面,但更新较慢。
  http://gb.transea.com/ 机器即时翻译,适合整体翻译网站及段落,但不够准确。适合一般人。
  http://www.cn-trans.com/ 译者俱乐部,个人网站,其精选短文与翻译论坛尚可。更新慢。
  http://www.jbfeng.com 自由翻译者冯京葆的个人网站,包括翻译知识、译坛趣事等。更新慢。
  http://www.rahul.net/lai/companion.html 翻译者家庭助手。英文。
http://www.word2word.com/free.html 免费网上翻译服务
www.worldLingo.com 免费网上翻译服务

  
5、语法、阅读、教学、写作
  http://wfwok.topcool.net/grammar.htm 比较详尽的语法教程,包括练习,可下载。
  http://home.njenet.net.cn/ewriting/w/ewriting.htm 东南大学研究生写作课程,只有7单元,对提高阅读和写作能力却很有帮助。
  http://www.edufind.com/english/grammar/subidx.cfm 英文在线教学网站的语法部分,120条。
  http://www.englishchina.com/ 英语中国,有丰富的站点链接,更新较慢。
  http://webster.commnet.edu/writing/writing.htm 英文写作助手。多种国外资源链接。
  
6、社区、听力、口语、演讲
  http://www.crazyenglish.org 疯狂英语俱乐部。英语学习方法、教程、各种最新资料。
  http://www.hongen.com/eng/index.htm 洪恩在线。英语学习社区。外教讲座。
  http://edu.china.com/zh_cn/elearn/second/test/index.html 提高英语听力的方法。
  http://www.tingli.com/ 听力网,众多时文,可下载收听,用REALPLAYER。
  http://www.listeningexpress.com/ 部分VOA、BBC、NCE的听力材料.
  http://yyenglish.myrice.com/pages/data1.htm 羊羊的听力资料库,网况良好时请多多下载。
  http://www.un.org/av/ 联合国广播,需待网况良好时使用。
  http://broadcast.yahoo.com雅虎广播站,多个频道。需相应网速。
  http://www.historychannel.com/speeches/ 美国历史频道演说集,需要REALPLAYER。
  http://www.americanrhetoric.com/speechbank.htm 强大的名人演说集(文本+录音)。可搜索。
http://library.westmont.edu/bibinst/Search...惭萁擦废白试础?/a>
  http://www.lunli.com/index.html 赛博风:在网络中听英语(EXCELLENT)
  http://www.listeningexpress.com/ 英语听力特快
    
7. 综合类
  http://www.360abc.com/ 世博英语
  http://www.icansay.com/ 英文锁定, 精彩我来说
  http://language.chinadaily.com.cn/index.html chinadaily--Language Tips
  http://groups.google.com/groups? ... .humor.funny.reruns 英语笑话NEWSGROUP,都是精品
  http://english.chinaschool.net/main.html 天天英语
  http://www.chineseworld.com/publish/37_9999.r/r.asp 世界日报-生活美语
  http://www.iselong.com/ 万千英语族
  http://www.englishww.com/ 旺旺英语
  http://www.5ixx.com/ 51XX英语资料下载
  
8. 英语考试
  专门是针对各种英语考证TOFEL,GRE,GMAT,IELTS,ESL www.51ielts.com
  ESL 学习 http://www.eslweb.net/
  DOWNDOWDOWN -很多可下载考试资料 http://www.downdowndown.net
  寄托天下 www.gter.net
  托福上游 http://vip.6to23.com/toptoefl/
  太傻 http://www.taisha.org/
  Test Tutor http://www.testtutor.com
  免费学习GRE的好网站(E) www.number2.com
  TestMagic.com(E) http://www.testmagic.com/
  
9. 英语电台 这类专门是提供各种优质英语电台
  http://webcri.cri.com.cn:8000/news/expenew 中国国际广播电台英文页
  http://210.77.152.231/dianbo.asp 中央人民广播电台第二套节目 阳光英语时段,包括〈大家说英语〉和〈初级美国英语〉 网上随时听!!!
  http://www.cnradio.com 中央台第一套网络直播节目每晚 22:30 空中英语教室(一、三、五);美国英语教程 (二、四、六)。中央台第二套网络直播节目每天清晨 6:00 阳光英语!
  http://www.shanghai-window.com/sbc/abc/teach/index.html 上海人民广播电台 英语教室
  http://www.taichungnet.com.tw/home/live.ram 台湾台中生活资讯广播 每天清晨6:00---7:00 《大家说英语》《英语空中教室》
  http://www.csbc.com.tw/menu8.htm 台湾正声广播公司 FM调频台Windows media Player 按时LIVE 收听 清晨:06:00--07:00 〈What's up What's new> <大家说英语〉 晚间:21:30--23:30 〈大家说英语〉〈空中美语文摘(高级)〉〈我爱英文杂志广播课程〉〈活用空中美语〉
  http://www.twr.org.hk/gb/OnAirF.html 香港环球电台学英语节目〈轻轻松松学英语〉内容丰富,趣味横生 主持人:安平
  http://www.dwelle.de/chinese/Welcome.html 德国之声,这是我听到的音质最好的网络广播!有德语教学
  http://www.rcinet.ca/Scripts/default.asp?s1=CoursDeLangues 加拿大对华广播,有英语教学和法语教学
  http://www.abc.net.au/ra/mand/education/default.htm 澳洲对华广播,有英语教学
  http://www.rfi.fr/ 法国对华广播,收听法广新闻,世界就在你家里!
  http://www.voa.gov/chinese/ 美国之音,有英语教学(需要代理访问)
  http://news.bbc.co.uk/hi/chinese/learn_english/default1.stm 英国BBC,BBC的英语教学办得最好!(需要代理访问)
  http://rki.kbs.co.kr/Chinese/index.asp 南韩网络广播中文页,有韩国流行音乐!!!TOP TEN 立体声REALPLAYER收听,大量影 音资料,棒极了!!!
  http://www.raweb.com.tw/ 全球地方网络广播大全!点击之间,你能听到来自世界各个城市广播电台的即时声音,有 瞬间置身异域之感!个别电台没有声音,你可以在打开Listen Live的REAL地址里,找到所属电台的主页.
  http://www.rsi.com.sg/ch/ 新加坡国际广播电台,有英语教学,双 语 桥 系 列,Windows media Player收听。
  http://www.cctv.com/life/hopeeng/2001NO10/lookworld.html CCTV央视希望英语杂志,双语页面!同步电视节目:二套周日19:00首播 一套周六16:10重播
  http://www.rthk.org.hk/special/ome/watch.htm 香港无线翡翠台《英语一分钟》
  http://www.cts.com.tw 台湾华视 《英语教学》及《英语听讲练习》,《每日一句英语》等。。。有课程下载!
  
  多伦多电视台 http://211.101.4.110/chuanyu/51ielts/tv/duolunduo.htm
  温哥华晚间新闻 http://211.101.4.110/chuanyu/51ielts/tv/wengehua.htm
  澳大利亚音乐电视 http://211.101.4.110/chuanyu/51ielts/tv/aumusic.htm
  CCTV9(English) http://211.101.4.110/chuanyu/51ielts/tv/cctv9.htm
  news 1130 http://207.194.6.179/ckwx.asx
  98.1 CHFI: http://www.chfi.com/audio/chfi.asx offers contests, special features, a music chart, and more
  KOL fm: http://members.home.net/waveradio/listenli...en/wavelive.m3u
CFRB1010: http://www.cfrb.com/cfrb.asx includes news, sports, traffic, and weather.
  Kiss 92: http://kiss92.fm/ciss/content/mediaplayer/...index-kiss.html KISS92 Toronto's #1 Music Station
  Fan590: http://livefan.tetraconnect.com/livefan great news, talk, feature and live event programming.
  
10. 中国 常用背景材料(外交、政治、经济、文化)
  http://www.fmprc.gov.cn 外交部网站。双语,有针对各国的外交政策及概况等,案头必备。
  http://www.moftec.gov.cn 外经贸网站。双语,了解我国对外经贸情况必备。翻译园地颇具规模。
  http://www.peopledaily.com.cn/item/zgjgk/main.html 中国机构及主要领导人资料。有英文。
  http://www.china.com.cn www.china.org.cn )中国互联网信息中心,由国新办合外文局领导。多语言网站。有中国知识、政府白皮书、中国文化产业报告等。
  http://www.ccnt.com.cn 中华文化信息网,由文化部领导,综合性强。英文部分属<中国文化艺术丛书>之英译本。
  http://www.chinavista.com/entravel/culture.php 介绍中国文化的双语网站,语言地道,内容丰富,包括各种菜谱等。但更新不快。
  http://www.chinapage.com/classic1.html 中国典籍,部分有英文版,特别是四书。
  
12、国际 常用背景材料(外交、政治、经济、文化)
  http://www.un.org 联合国。五种语言对照。包括新闻、发言、文件、活动等大量内容。
  http://www.unesco.org 联合国教科文组织。五种语言。材料丰富。
  http://www.europa.eu.int/index_en.htm 欧盟网站。
  http://www.oau-oua.org/ 非统组织。
  http://education.yahoo.com/reference/factbook/ 雅虎的世界知识网站,综合性强。
  http://www.countryreports.org/ 介绍世界各国情况的英文网站,有地区论坛。
  http://www.ispa.org 国际演艺界协会。有世界艺术网站链接。
  http://whitehouse.gov 美国白宫。了解美国政治必备。
  
13、 主要媒体、英语杂志
  http://www.peopledaily.com.cn 人民日报。多种语言。背景知识丰富。旗下多个热门论坛,包括英文论坛ChinaForum。
  http://www.xinhuanet.com/english 新华社。新闻量丰富,分类详尽。多种语言。
  http://www.chinadaily.com.cn 中国日报。国内最大英语新闻媒体。适合新闻搜索。
  http://www.cri.com.cn 中国国际广播电台。多种语言。内容丰富。文化内容多。下载方便。
  http://www.cctv.com.cn 央视国际网站。可提前一周下载节目预告。英语频道纪录片不错。
  http://www.scmp.com/ 香港南华早报。英文报纸,需注册。
  http://www.zaobao.com/bilingual/bilingual.html 新加坡《联合早报》汉英双语专辑,既有关于当代英语用法的讨论,也可了解亚洲人对于世界的若干观点。
  http://www.iht.com/frontpage.html 国际先驱论坛报。英文。
  http://www.worldpress.org/index.shtm 世界新闻综合评论。英文。
  http://www.nytimes.com 纽约时报。需要注册。英文。
  http://www.feer.com/ 远东经济评论。英文。
  http://dsc.discovery.com/ 探索杂志。
  http://www.nationalgeographic.com/ 美国国家地理杂志。
  http://www.discover.com <发现>科学月刊。英文。
  http://www.aldaily.com 世界文化、艺术、出版界动态及丰富的评论与知识。强大链接。英文。
  http://www.newyorker.com <纽约客>文化评论杂志
14.中英文歌词对照
http://www.english.ac.cn/songs/index.htm
http://music.liuxuan.com
15. 看童话,学英语!
http://www.fairybay.com.cn/jialin
16. 赴美留学网站
www.pku.edu.cn/resource/university/university.html
www.petersons.com/graduate/galpha.html
www.itc.com.cn/Foreign/college/state.html
www.liuxueguide.com/
www.usnews.com/usnews/edu/grad99/
www.studyabroad.com
www.SchoolsintheUSA.com (Undergraduate US programs)
www.GradSource.com (Graduate schools in Canada and the US)

www.GraduateBusiness.com(Graduate business and management programs)

www.GradSciEng.com (Graduate engineering and sciences programs)

www.GradFineArts.com (Graduate fine arts programs)

www.GraduateHealth.com (Graduate nursing and health programs)

www.GradEducation.com (Graduate teacher education programs)

www.CampusStarter.com
www.studyusa.com
www.usastudyguide.com
www.embark.com/grad/Choose/intro.asp
17. 法律英语词典
www.dictionary.law.com
18. 词汇学习网站
http://www.hungryforwords.com
posted @ 2007-09-06 11:19 MEYE 阅读(1290) | 评论 (0)编辑 收藏
培养数字敏感力的20个习惯
数学不好的人,数字能力就不好吗?对数字敏感的人,成本掌控能力就一流吗?虽然答案未必是肯定的,但想在工作上事半功倍,就必须养成对数字敏感的20个好习惯。
每每说到数字,人们下意识地就会说:「我数学最烂了!」而既然数学很烂,显然也就不会懂得太艰深的数学公式或原理,更别说是怎么应用了。所以,我们或许可以说,数学烂的人就无法将太高深的数学用在职场上,但有没有另一种可能的状况是:商场上所用到的数学,其实都不会很难,有专家说是不会超过高中数学程度;也有人说,只要会加减乘除即可。
这很容易得到验证,因为我们很少听到什么经营之神是数学家,反倒经常听到没读过什么书的杰出企业人士,对于财报数字了如指掌。
在工作场合里,我们会看到很多数字,但是我们不见得要计算这些数字,重点是对于数字要有一种「感觉」。感觉也许还是太过抽象,具体一点地说,就是要在心中对于数字所反映出来的真实,依据自己的专业与经验,建立起一套评断的标准,然后据以做出行动。
以下这20个数字力,不只是观念,更要养成一种习惯。如果在逐一检视之下,你发现自己已经多半具备,那恭喜你堪称「数字达人」,但如果发现自己缺了很多项,也不要觉得自己是「数字白痴」,因为它们都不难学会。
1.体认数字的重要性
「在商业世界里,数字非常重要。」这句话看似抽象,却很真切。数字就像是体检表,是行动的结果和评量的工具;数字也像是仪表板,可以指引方向和预测未来。
2.养成凡事附上数据与参考数据的习惯
数字是沟通、说服及谈判的重要依据。例如,如果你想建请增加设备,但是多次呈报申请书却都未经核可。可试着加上「增加投资设备,可达到总费用节省多少钱的结果」,让数字为你说话,或许就能提高通过的机率。
3.在评估或分析任何情况时,都试着将其数字化
简单明了的数字,十分有助于记录、信息传达、比较检讨及分析等商业行为。这就像是学习做一个「重视金额」的人,凡事不以感情(感觉、印象、善恶)做判断,而是以「金额」「数字」「比率」做为衡量的尺度。例如,如果认为举办宣传活动可提升产品知名度,那就试着将「知名度」换算成「金额」。
4.将PDCA循环应用在工作上
 在采取任何行动前,都要拟定计划(Plan),然后实际执行(Do),接着再检核(Check)结果与计划之间的落差,做为修正行动(Action)的参考。
5.经常以矩阵图思考问题
面临错综复杂的问题时,可以矩阵图加以展开,从中可发掘出未曾发现的问题点,然后再依据问题点的急迫性与重要性,研拟对策。
6.有时间观念
假设A公司1小时能处理1单位的工作量,B公司则是1小时10单位,这个10倍的差异,可换算成B公司1年处理的工作量,A公司得耗时10年。时间既可以换算成金钱、效率,更速度的展现。因此,有数字力的人不会虚度光阴,也会守时、守信用。
7.有效运用资金
要发挥金钱的价值,就必须在使用金钱之前,预测效果或效益如何,使用之后更要详细确认。在日常生活中,养成大小事情都必以「损益计算」的方式来思考。
8.养成计算「合计值」的习惯
许多人都有类似经验,那就是错误的数字往往像滚雪球一般,进货量、销售量或库存量的登记,有时候是一个项目出错,就连带一直错下去一样。因此,对于图表内的数字或金额,习惯性地进行加总,方便于在做整体控管时,能够依重要程度判定优先级。
9.将所有目标都数据化
日产汽车(Nissan)执行长卡洛斯‧高恩(Carlos Ghosn)曾说:「无法数据化的目标,我无法执行。」有时候,组织的愿景或任务,都是较为抽象的,因此要落实为具体的数字,才能执行与评量。
例如,可将「拓展人脉」这项目标,转化为「每个月与人交换30张名片,而且日后与其中5位保持联系」;或是将「加强广告活动」转化为「向15家媒体宣传,达到8家确实刊载」。
有时候,如果目标较为远大,则为了让目标具体可行,最好能将目标区分为近程、中程和长程三阶段,然后再决定每一段时期要达成的目标。这个过程就是所谓的「倒算力」,亦即为了达成远程的目标,往回推算中程、近程应该做什么,甚至近到这个月、这星期或现在就该做什么,做为达成目标的查核点。
10.追究数字出错的原因
数字出错时,不是更正即可,更要探究导致错误的原因,并且提出预防过失再度发生的对策。
11.保留数字修正的纪录
将错误的数字更正后,仍要保留原本(错误)的数字,一方面可供日后检视修正过程的原委,另一方面可做为重要的检核点,因为修正过的数字,仍有可能出错,因此「修改纪录」可做为审慎计算的重要提醒。
12.随时掌握最新的数据
过时的数据不但没有意义,甚至会造成误导,因此一定要迅速、正确地处理数据,随时将数字的纪录更新成最新的数据。
13.数字是两面刃
数字固然是沟通与说服的利器,但是若恶意扭曲,则会成为欺诈的工具。许多企业弊案就是起因自窜改财报数字,试图欺骗视听。
14.计算会议成本,检视费用与成果之间的关系
英特尔(Intel)董事长安迪‧葛洛夫(Andy Grove)曾以「经理人的时薪 × 会议时数」计算会议的成本,藉以说明会议的召开必须有效率和具体成果,否则就是浪费人力与资源。换言之,与会者的位阶愈高、人数愈多、时数愈常,则会议的成本就愈高。因此,若会议成本低于回收成果,就没有开会的必要。
15.计算公司各部门的成本开销
这是一种「磨练经营感觉」的好方法,因为无论是各行各业,以及组织内的各个部门,都要做成本控管。成本可以决定产品售价(成本+利润=售价),而透过成本内容的分析,则有助于了解哪些项目成本过高或效率不彰。
16.了解公司的基本损益构造,并且知道问题所在
会计的最基本原则就是简单的减法:利润(损失)=营业额-费用;现金=收入-支出。懂得了这个简单的算式,就可以感觉与现实的之间差异,同时找到企业为何亏损的关键。企业想提升利润,唯一的方法就是增加收入、减少费用,但如果二者相减之后为负,就会出现亏损。
这样虽然简化了公司的损益构造,但是却可以做为思考问题的起点和线索。例如,如果公司都没赚钱,但还是会产生费用,那为了不让损失扩大,可以减少哪些开销,进而构思对策与采取行动。
17.制订重大投资的决策时,能评估效益和风险
无论是设备投资或其它金额庞大的投资计划,在预估收益和现金流量时,至少都要估计出乐观与悲观的情势,而且最后在做判断时,通常是依据悲观的案子做决定,亦即有做好面对失败的准备(最大的损失就是这个程度)。
18.从经营者的角度分析公司的财务报表
不只是看懂各类财务指标而已,还要能够看出背后的管理意涵,找出公司的优势与弱点。此外,也要尽可能掌握同业竞争者及其它产业的财务报表上的经营要点。
看懂财报的基本技巧是,财报不要用「读」的,而用「找」的方式,亦即立刻找出财报中有问题的关键数字。
最重要的则是「比较」,因为比较与竞争是一体两面的事,因此不但要比较公司过去一年的财报数据中,什么数字攀升或骤跌,也要比较同业竞争者或其它行业在财报上显现的重要数字。
19.对于公司的税务有基本的认识
我们对于自己的所得当中,有哪些可以减税或不用报税都会斤斤计较,对于公司也要抱持同样的心态。比方说,如果你知道超过一定金额的交际费用,就无法在税法上被视为是经费,那么在使用交际费时,就要有如同花了账单上1.5倍金额的自觉。
20.数字不是绝对的
数字是决算或预估的数值或假设,但不是绝对的标准。例如,我们现在都已经知道智商高的人,不见得就会是杰出的工作者,我们还要将其它的人格特质纳入考虑。因此,真正有数字力的人,不是将数字的力量无限上纲,反而是更懂得数字有其限制。
posted @ 2007-09-05 20:38 MEYE 阅读(339) | 评论 (0)编辑 收藏
求职最受欢迎的十大技能
一个人掌握何种技能取决于他的兴趣、能力和聪明程度,也取决于他所能支配的资源以及制定的事业目标,拥有过硬技能的人有更多的工作机会。但是,由于经济发展前景不确定,掌握对你的事业有所帮助的技能显得尤为重要。以下是美国劳工部公布的最受雇主欢迎的十种技能。

  一、解决问题的能力

  每天,我们都要在生活和工作中解决一些综合性的问题。那些能够发现问题、解决问题并迅速作出有效决断的人行情将持续升温,在商业经营、管理咨询、公共管理、科学、医药和工程领域需求量骤增。

  二、专业技能

  现在,技术已经进入了人类活动的所有领域。工程、通讯、汽车、交通、航空航天领域需要大量能够对电力、电子和机械设备进行安装、调试和修理的专业人员。

  三、沟通能力

  所有的公司都不可避免地面临内部雇员如何相处的问题。一个公司的成功很多时候取决于全体职员能否团结协作。因此,人力资源经理、人事部门官员和管理决策部门必须尽量了解职员的需求并在允许的范围内尽量予以满足。

  四、计算机编程技能

  如果你能够利用计算机编程的方法满足某个公司的特定需要,那么你获得工作的机会将大大增加。因此,你需要掌握C++, Java, HTML, Visual Basic, Unix和SQL Server等计算机语言。

  五、培训技能

  现代社会一天产生和搜集到的数据比古代社会一年的还要多。因此,能够在教育、社区服务、管理协调和商业方面进行培训的人才的需求量逐年增加。

  六、科学与数学技能

  科学、医学和工程领域每天都在取得伟大的进展。拥有科学和数学头脑的人才的需求量也将骤增,以应对这些领域的挑战。

  七、理财能力

  随着平均寿命的延长,每个人都必须仔细审核自己的投资计划以保证舒适的生活以及退休后的生活来源。投资经纪人、证券交易员、退休规划者、会计等职业的需求量也将继续增加。

  八、信息管理能力

  信息是信息时代经济系统的基础,掌握信息管理能力在绝大多数行业来说都是必须的。系统分析员、信息技术员、数据库管理员以及通信工程师等掌握信息管理能力的人才将会非常吃香。

  九、外语交际能力

  美国需要从别国进口原材料和商品,美国的商品和服务也要出口到全球市场。掌握一门外语将有助于你得到工作的机会。现在热门的外语是俄语、日语、汉语和德语(对于中国人来说,掌握英语显得尤为重要)。

  十、商业管理能力

  在美国,生意就是生意,掌握成功运作一个公司的方法是至关重要的。这方面最核心的技能一方面是人员管理、系统管理、资源管理和融资的能力;另一方面是要了解客户的需要并迅速将这些需要转化为商机。ZT
posted @ 2007-09-05 20:35 MEYE 阅读(326) | 评论 (0)编辑 收藏


我想金山词霸应该是每个开发者都必装的软件吧,但有几个是正版的呢?

金山词霸越来越霸了,启动慢占资源,并且每次一不小心就给你安装一堆不需要的东西
最重要的是还是收费软件

灵格斯词霸,就像他的名字一样,轻盈灵巧(仅1.9M),运行十分快速,界面清新,完全免费,没有不实用的功能和插件。官网上也有很多的词库可供扩展安装,安装极为方面,强烈推荐使用。

安装辞典的时候请注意,安装好词典後,把 "加入索引 add to index"选中,不然搜索单词的时候,左边的索引无法应用新的词库,会不显示搜到的单词。
安装好词库後,也可以在词库的设置里增加/去除 词库的索引设置



2。程序员之家 : http://www.youku.com/club_showClub/id_11939.html

http://www.embed.com.cn/

http://www.xxlinux.com/bbs/index.php

http://www.chineselinuxuniversity.net/courses/kernel/
posted @ 2007-08-16 21:06 MEYE 阅读(317) | 评论 (0)编辑 收藏
Thinking in C++(English) 点击直接下载 http://ir.hit.edu.cn/~car/programming/c_cpp/TICPP-2nd-ed-Vol-two/code.zip 点击再线阅览 http://ir.hit.edu.cn/~car/programming/c_cpp/TICPP-2nd-ed-Vol-two/
posted @ 2007-08-02 10:10 MEYE 阅读(340) | 评论 (0)编辑 收藏



http://www.linuxsir.org/bbs/showthread.php?s=2c3a68e2e3a84740061d1207f84fc215&t=32052


http://www.linuxsir.org/bbs/showthread.php?t=108946

http://blog.csdn.net/fhmsha/

http://www.ibm.com/developerworks/cn/linux/l-linux-kernel/index.html?S_TACT=105AGX52&S_CMP=techcsdn
posted @ 2007-07-07 20:24 MEYE 阅读(352) | 评论 (0)编辑 收藏
剖析Linux系统启动过程 本文以RedHat9.0和i386平台为例,剖析了从用户打开电源直到屏幕出现命令行提示符的整个Linux启动过程。并且介绍了启动中涉及到的各种文件。   阅读Linux源代码,无疑是深入学习Linux的最好方法。在本文对Linux启动过程的介绍中,我们也尝试从源代码的视角来更深入的剖析Linux的启动过程,所以其中也简单涉及到部分相关的Linux源代码,Linux启动这部分的源码主要使用的是C语言,也涉及到了少量的汇编。而启动过程中也执行了大量的shell(主要是bash shell)所写脚本。为了方便读者阅读,笔者将整个Linux启动过程分成以下几个部分逐一介绍,大家可以参考下图:   当用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设备上安装的引导程序lilo或grub开始引导Linux,Linux首先进行内核的引导,接下来执行init程序,init程序调用了rc.sysinit和rc等程序,rc.sysinit和rc当完成系统初始化和运行服务的任务后,返回init;init启动了mingetty后,打开了终端供用户登录系统,用户登录成功后进入了Shell,这样就完成了从开机到登录的整个启动过程。 下面就将逐一介绍其中几个关键的部分:   第一部分:内核的引导(核内引导)   Red Hat9.0可以使用lilo或grub等引导程序开始引导Linux系统,当引导程序成功完成引导任务后,Linux从它们手中接管了CPU的控制权,然后CPU就开始执行Linux的核心映象代码,开始了Linux启动过程。这里使用了几个汇编程序来引导Linux,这一步泛及到Linux源代码树中的“arch/i386/boot”下的这几个文件:bootsect.S、setup.S、video.S等。   其中bootsect.S是生成引导扇区的汇编源码,它完成加载动作后直接跳转到setup.S的程序入口。setup.S的主要功能就是将系统参数(包括内存、磁盘等,由BIOS返回)拷贝到特别内存中,以便以后这些参数被保护模式下的代码来读取。此外,setup.S还将video.S中的代码包含进来,检测和设置显示器和显示模式。最后,setup.S将系统转换到保护模式,并跳转到 0x100000。   那么0x100000这个内存地址中存放的是什么代码?而这些代码又是从何而来的呢?   0x100000这个内存地址存放的是解压后的内核,因为Red Hat提供的内核包含了众多驱动和功能而显得比较大,所以在内核编译中使用了“makebzImage”方式,从而生成压缩过的内核,在RedHat中内核常常被命名为vmlinuz,在Linux的最初引导过程中,是通过"arch/i386/boot/compressed/"中的head.S利用misc.c中定义的decompress_kernel()函数,将内核vmlinuz解压到0x100000的。   当CPU跳到0x100000时,将执行"arch/i386/kernel/head.S"中的startup_32,它也是vmlinux的入口,然后就跳转到start_kernel()中去了。start_kernel()是"init/main.c"中的定义的函数,start_kernel()中调用了一系列初始化函数,以完成kernel本身的设置。start_kernel()函数中,做了大量的工作来建立基本的Linux核心环境。如果顺利执行完start_kernel(),则基本的Linux核心环境已经建立起来了。   在start_kernel()的最后,通过调用init()函数,系统创建第一个核心线程,启动了init过程。而核心线程init()主要是来进行一些外设初始化的工作的,包括调用do_basic_setup()完成外设及其驱动程序的加载和初始化。并完成文件系统初始化和root文件系统的安装。   当do_basic_setup()函数返回init(),init()又打开了/dev/console设备,重定向三个标准的输入输出文件stdin、stdout和stderr到控制台,最后,搜索文件系统中的init程序(或者由init=命令行参数指定的程序),并使用 execve()系统调用加载执行init程序。到此init()函数结束,内核的引导部分也到此结束了。 第二部分:运行init   init的进程号是1,从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序,。init程序需要读取配置文件/etc/inittab。inittab是一个不可执行的文本文件,它有若干行指令所组成。在Redhat系统中,inittab的内容如下所示(以“###"开始的中注释为笔者增加的):   #   # inittab This file describes how the INIT process should set up   # the system in a certain run-level.   #   # Author: Miquel van Smoorenburg,   # Modified for RHS Linux by Marc Ewing and Donnie Barnes   #   # Default runlevel. The runlevels used by RHS are:   # 0 - halt (Do NOT set initdefault to this)   # 1 - Single user mode   # 2 - Multiuser, without NFS (The same as 3, if you do not havenetworking)   # 3 - Full multiuser mode   # 4 - unused   # 5 - X11   # 6 - reboot (Do NOT set initdefault to this)   #   ###表示当前缺省运行级别为5(initdefault);   id:5:initdefault:   ###启动时自动执行/etc/rc.d/rc.sysinit脚本(sysinit)   # System initialization.   si::sysinit:/etc/rc.d/rc.sysinit   l0:0:wait:/etc/rc.d/rc 0   l1:1:wait:/etc/rc.d/rc 1   l2:2:wait:/etc/rc.d/rc 2   l3:3:wait:/etc/rc.d/rc 3   l4:4:wait:/etc/rc.d/rc 4   ###当运行级别为5时,以5为参数运行/etc/rc.d/rc脚本,init将等待其返回(wait)   l5:5:wait:/etc/rc.d/rc 5   l6:6:wait:/etc/rc.d/rc 6   ###在启动过程中允许按CTRL-ALT-DELETE重启系统   # Trap CTRL-ALT-DELETE   ca::ctrlaltdel:/sbin/shutdown -t3 -r now   # When our UPS tells us power has failed, assume we have a few minutes   # of power left. Schedule a shutdown for 2 minutes from now.   # This does, of course, assume you have powerd installed and your   # UPS connected and working correctly.   pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"   # If power was restored before the shutdown kicked in, cancel it.   pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"   ###在2、3、4、5级别上以ttyX为参数执行/sbin/mingetty程序,打开ttyX终端用于用户登录,   ###如果进程退出则再次运行mingetty程序(respawn)   # Run gettys in standard runlevels   1:2345:respawn:/sbin/mingetty tty1   2:2345:respawn:/sbin/mingetty tty2   3:2345:respawn:/sbin/mingetty tty3   4:2345:respawn:/sbin/mingetty tty4   5:2345:respawn:/sbin/mingetty tty5   6:2345:respawn:/sbin/mingetty tty6   ###在5级别上运行xdm程序,提供xdm图形方式登录界面,并在退出时重新执行(respawn)   # Run xdm in runlevel 5   x:5:respawn:/etc/X11/prefdm -nodaemon  以上面的inittab文件为例,来说明一下inittab的格式。其中以#开始的行是注释行,除了注释行之外,每一行都有以下格式:   id:runlevel:action:process   对上面各项的详细解释如下:   1. id   id是指入口标识符,它是一个字符串,对于getty或mingetty等其他login程序项,要求id与tty的编号相同,否则getty程序将不能正常工作。   2. runlevel   runlevel是init所处于的运行级别的标识,一般使用0-6以及S或s。0、1、6运行级别被系统保留:其中0作为shutdown动作,1作为重启至单用户模式,6为重启;S和s意义相同,表示单用户模式,且无需inittab文件,因此也不在inittab中出现,实际上,进入单用户模式时,init直接在控制台(/dev/console)上运行/sbin/sulogin。在一般的系统实现中,都使用了2、3、4、5几个级别,在Redhat系统中,2表示无NFS支持的多用户模式,3表示完全多用户模式(也是最常用的级别),4保留给用户自定义,5表示XDM图形登录方式。7-9级别也是可以使用的,传统的Unix系统没有定义这几个级别。runlevel可以是并列的多个值,以匹配多个运行级别,对大多数action来说,仅当runlevel与当前运行级别匹配成功才会执行。   3. action   action是描述其后的process的运行方式的。action可取的值包括:initdefault、sysinit、boot、bootwait等:   initdefault是一个特殊的action值,用于标识缺省的启动级别;当init由核心激活以后,它将读取inittab中的initdefault项,取得其中的runlevel,并作为当前的运行级别。如果没有inittab文件,或者其中没有initdefault项,init将在控制台上请求输入runlevel。   sysinit、boot、bootwait等action将在系统启动时无条件运行,而忽略其中的runlevel。   其余的action(不含initdefault)都与某个runlevel相关。各个action的定义在inittab的man手册中有详细的描述。   4. process   process为具体的执行程序。程序后面可以带参数。   第三部分:系统初始化   在init的配置文件中有这么一行:   si::sysinit:/etc/rc.d/rc.sysinit   它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。   rc.sysinit约有850多行,但是每个单一的功能还是比较简单,而且带有注释,建议有兴趣的用户可以自行阅读自己机器上的该文件,以了解系统初始化所详细情况。由于此文件较长,所以不在本文中列出来,也不做具体的介绍。   当rc.sysinit程序执行完毕后,将返回init继续下一步。 第四部分:启动对应运行级别的守护进程   在rc.sysinit执行后,将返回init继续其它的动作,通常接下来会执行到/etc/rc.d/rc程序。以运行级别3为例,init将执行配置文件inittab中的以下这行:   l5:5:wait:/etc/rc.d/rc 5   这一行表示以5为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个Shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些链接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。   /etc/rc.d/rc5.d/中的rc启动脚本通常是K或S开头的链接文件,对于以以S开头的启动脚本,将以start参数来运行。而如果发现存在相应的脚本也存在K打头的链接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。   至于在每个运行级中将运行哪些守护进程,用户可以通过chkconfig或setup中的"System Services"来自行设定。常见的守护进程有:   amd:自动安装NFS守护进程   apmd:高级电源管理守护进程   arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库   autofs:自动安装管理进程automount,与NFS相关,依赖于NIS   crond:Linux下的计划任务的守护进程   named:DNS服务器   netfs:安装NFS、Samba和NetWare网络文件系统   network:激活已配置网络接口的脚本程序   nfs:打开NFS服务   portmap:RPC portmap管理器,它管理基于RPC服务的连接   sendmail:邮件服务器sendmail   smb:Samba文件共享/打印服务   syslog:一个让系统引导时起动syslog和klogd系统日志守候进程的脚本   xfs:X Window字型服务器,为本地和远程X服务器提供字型集   Xinetd:支持多种网络服务的核心守护进程,可以管理wuftp、sshd、telnet等服务   这些守护进程也启动完成了,rc程序也就执行完了,然后又将返回init继续下一步。 第五部分:建立终端   rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。init接下来会打开6个终端,以便用户登录系统。通过按Alt+Fn(n对应1-6)可以在这6个终端中切换。在inittab中的以下6行就是定义了6个终端:   1:2345:respawn:/sbin/mingetty tty1   2:2345:respawn:/sbin/mingetty tty2   3:2345:respawn:/sbin/mingetty tty3   4:2345:respawn:/sbin/mingetty tty4   5:2345:respawn:/sbin/mingetty tty5   6:2345:respawn:/sbin/mingetty tty6   从上面可以看出在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。   第六部分:登录系统,启动完成   对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入KDE、Gnome等窗口管理器。而本文主要讲的还是文本方式登录的情况:   当我们看到mingetty的登录界面时,我们就可以输入用户名和密码来登录系统了。   Linux的账号验证程序是login,login会接收mingetty传来的用户名作为用户名参数。然后login会对用户名进行分析:如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。   在分析完用户名后,login将搜索/etc/passwd以及/etc/shadow来验证密码以及设置账户的其它信息,比如:主目录是什么、使用何种shell。如果没有指定主目录,将默认为根目录;如果没有指定shell,将默认为/bin/bash。   login程序成功后,会向对应的终端在输出最近一次登录的信息(在/var/log/lastlog中有记录),并检查用户是否有新邮件(在/usr/spool/mail/的对应用户名目录下)。然后开始设置各种环境变量:对于bash来说,系统首先寻找/etc/profile脚本文件,并执行它;然后如果用户的主目录中存在.bash_profile文件,就执行它,在这些文件中又可能调用了其它配置文件,所有的配置文件执行后后,各种环境变量也设好了,这时会出现大家熟悉的命令行提示符,到此整个启动过程就结束了。   希望通过上面对Linux启动过程的剖析能帮助那些想深入学习Linux用户建立一个相关Linux启动过程的清晰概念,进而可以进一步研究Linux接下来是如何工作的。 http://blog.chinaunix.net/u/304/showart_206813.html
posted @ 2007-05-26 13:10 MEYE 阅读(385) | 评论 (0)编辑 收藏
google 真好 google 你真好(Google Hack) □Evil[xiaoyu] 发表于 2006-1-13 23:41:00 其实早应该发出来的,国内关于google技巧方面的整理,我大概算是最早一批人吧,后来sniper都写了google hack,就更懒的发了。如今帮老婆找论文,关键字匹配累的要死。这些技巧是我整理以后淘汰的后的,最好的那些如有兴趣可以找我直接索取 Http://www.feelids.com By swap (慕容小雨) 站内搜索地址为: http://www.google.com/custom?domains=(这里写我们要搜索的站点,比如feelids.com) 进去可以选择www和feelids.com, 当然再选我们要的站内搜索哦! 黑客专用信息和资料搜索地址为: http://www.google.com/custom?hl=xx-hacker 这里是google关键字的用法,要设置它为中文,则是 http://www.google.com/custom?hl=zh-CN 英文则是http://www.google.com/custom?hl=en 常用的google关键字: foo1 foo2 (也就是关联,比如搜索xx公司 xx美女) operator:foo filetype:123 类型 site:foo.com 相对直接看网站更有意思,可以得到许多意外的信息 intext:foo intitle: fooltitle 标题哦 allinurl:foo 搜索xx网站的所有相关连接。(踩点必备) links:foo 不要说就知道是它的相关链接 allintilte:foo.com 我们可以辅助"-" "+"来调整搜索的精确程度 直接搜索密码:(引号表示为精确搜索) 当然我们可以再延伸到上面的结果里进行二次搜索 "index of" htpasswd / passwd filetype:xls username password email "ws_ftp.log" "config.php" allinurl:admin mdb service filetype:pwd ....或者某个比如pcanywhere的密码后缀cif等 越来越有意思了,再来点更敏感信息 "robots.txt" "Disallow:" filetype:txt inurl:_vti_cnf (FrontPage的关键索引啦,扫描器的CGI库一般都有地) allinurl: /msadc/Samples/selector/showcode.asp /../../../passwd /examples/jsp/snp/snoop.jsp phpsysinfo intitle:index of /admin intitle:"documetation" inurl: 5800(vnc的端口)或者desktop port等多个关键字检索 webmin port 10000 inurl:/admin/login.asp intext:Powered by GBook365 intitle:"php shell*" "Enable stderr" filetype:php 直接搜索到phpwebshell foo.org filetype:inc ipsec filetype:conf intilte:"error occurred" ODBC request WHERE (select|insert) 说白了就是说,可以直接试着查查数据库检索,针对目前流行的sql注射,会发达哦 intitle:"php shell*" "Enable stderr" filetype:php "Dumping data for table" username password intitle:"Error using Hypernews" "Server Software" intitle:"HTTP_USER_AGENT=Googlebot" "HTTP_USER_ANGET=Googlebot" THS ADMIN filetype:.doc site:.mil classified 直接搜索军方相关word 检查多个关键字: intitle:config confixx login password "mydomain.com" nessus report "report generated by" "ipconfig" "winipconfig" google缓存利用(hoho,最有影响力的东西)推荐大家搜索时候多"选搜索所有网站" 特别推荐:administrator users 等相关的东西,比如名字,生日等……最惨也可以拿来做字典嘛 cache:foo.com 可以查阅类似结果 先找找网站的管理后台地址: site:xxxx.com intext:管理 site:xxxx.com inurl:login site:xxxx.com intitle:管理 site:a2.xxxx.com inurl:file site:a3.xxxx.com inurl:load site:a2.xxxx.com intext:ftp://*:* site:a2.xxxx.com filetype:asp site:xxxx.com //得到N个二级域名 site:xxxx.com intext:*@xxxx.com //得到N个邮件地址,还有邮箱的主人的名字什么的 site:xxxx.com intext:电话 //N个电话 intitle:"index of" etc intitle:"Index of" .sh_history intitle:"Index of" .bash_history intitle:"index of" passwd intitle:"index of" people.lst intitle:"index of" pwd.db intitle:"index of" etc/shadow intitle:"index of" spwd intitle:"index of" master.passwd intitle:"index of" htpasswd "# -FrontPage-" inurl:service.pwd allinurl:bbs data filetype:mdb inurl:database filetype:inc conn inurl:data filetype:mdb intitle:"index of" data …… 一些技巧集合: 3) "http://*:*@www" domainname 找一些ISP站点,可以查对方ip的虚拟主机 3 4) auth_user_file.txt 不实用了,太老了 5) The Master List 寻找邮件列表的 6) intitle:"welcome.to.squeezebox" 一种特殊的管理系统,默认开放端口90 7) passlist.txt (a better way) 字典 8) "A syntax error has occurred" filetype:ihtml 9) ext:php program_listing intitle:MythWeb.Program.Listing 10) intitle:index.of abyss.conf 11)ext:nbe nbe 12)intitle:"SWW link" "Please wait....." 13) 14) intitle:"Freifunk.Net - Status" -site:commando.de 15) intitle:"WorldClient" intext:"? (2003|2004) Alt-N Technologies." 17) intitle:open-xchange inurl:login.pl 20) intitle:"site administration: please log in" "site designed by emarketsouth" 21) ORA-00921: unexpected end of SQL command 22)intitle:"YALA: Yet Another LDAP Administrator" 23)welcome.to phpqladmin "Please login" -cvsweb 24)intitle:"SWW link" "Please wait....." 25)inurl:"port_255" -htm 27)intitle:"WorldClient" intext:"? (2003|2004) Alt-N Technologies." 这些是新的一些漏洞技巧,在0days公告公布 ext:php program_listing intitle:MythWeb.Program.Listing inurl:preferences.ini "[emule]" intitle:"Index of /CFIDE/" administrator "access denied for user" "using password" ext:php intext:"Powered by phpNewMan Version" 可以看到:path/to/news/browse.php?clang=../../../../../../file/i/want inurl:"/becommunity/community/index.php?pageurl=" intitle:"ASP FileMan" Resend -site:iisworks.com "Enter ip" inurl:"php-ping.php" ext:conf inurl:rsyncd.conf -cvs -man intitle: private, protected, secret, secure, winnt intitle:"DocuShare" inurl:"docushare/dsweb/" -faq -gov -edu "#mysql dump" filetype:sql "allow_call_time_pass_reference" "PATH_INFO" "Certificate Practice Statement" inurl:(PDF | DOC) LeapFTP intitle:"index.of./" sites.ini modified master.passwd mysql history files NickServ registration passwords passlist passlist.txt (a better way) passwd passwd / etc (reliable) people.lst psyBNC config files pwd.db signin filetype:url spwd.db / passwd trillian.ini wwwboard WebAdmin inurl:passwd.txt wwwboard|webadmin "# -FrontPage-" ext:pwd inurl:(service | authors | administrators | users) "# -FrontPage-" inurl:service.pwd "AutoCreate=TRUE password=*" "http://*:*@www" domainname "index of/" "ws_ftp.ini" "parent directory" "liveice configuration file" ext:cfg -site:sourceforge.net "powered by ducalendar" -site:duware.com "Powered by Duclassified" -site:duware.com "Powered by Duclassified" -site:duware.com "DUware All Rights reserved" "powered by duclassmate" -site:duware.com "Powered by Dudirectory" -site:duware.com "powered by dudownload" -site:duware.com "Powered By Elite Forum Version *.*" "Powered by Link Department" "sets mode: +k" "Powered by DUpaypal" -site:duware.com allinurl: admin mdb auth_user_file.txt config.php eggdrop filetype:user user etc (index.of) ext:ini eudora.ini ext:ini Version=... password ext:txt inurl:unattend.txt filetype:bak inurl:"htaccess|passwd|shadow|htusers" filetype:cfg mrtg "target[*]" -sample -cvs -example filetype:cfm "cfapplication name" password filetype:conf oekakibbs filetype:conf sc_serv.conf filetype:conf slapd.conf filetype:config config intext:appSettings "User ID" filetype:dat "password.dat" filetype:dat wand.dat filetype:inc dbconn filetype:inc intext:mysql_connect filetype:inc mysql_connect OR mysql_pconnect filetype:inf sysprep filetype:ini inurl:"serv-u.ini" filetype:ini inurl:flashFXP.ini filetype:ini ServUDaemon filetype:ini wcx_ftp filetype:ini ws_ftp pwd filetype:ldb admin filetype:log "See `ipsec copyright" filetype:log inurl:"password.log" filetype:mdb inurl:users.mdb filetype:mdb wwforum filetype:netrc password filetype:pass pass intext:userid filetype:pem intext:private filetype:properties inurl:db intext:password filetype:pwd service filetype:pwl pwl filetype:reg reg +intext:"defaultusername" +intext:"defaultpassword" filetype:reg reg HKEY_CURRENT_USER SSHHOSTKEYS filetype:sql ("values * MD" | "values * password" | "values * encrypt") filetype:sql ("passwd values" | "password values" | "pass values" ) filetype:sql +"IDENTIFIED BY" -cvs filetype:sql password filetype:url +inurl:"ftp://" +inurl:";@" filetype:xls username password email htpasswd htpasswd / htgroup htpasswd / htpasswd.bak intext:"enable secret $" intext:"powered by Web Wiz Journal" intitle:"index of" intext:connect.inc intitle:"index of" intext:globals.inc intitle:"Index of" passwords modified intitle:dupics inurl:(add.asp | default.asp | view.asp | voting.asp) -site:duware.com ---------------------------------------------------------------------------------------------------------------------- intitle:index.of intext:"secring.skr"|"secring.pgp"|"secring.bak" inurl:"GRC.DAT" intext:"password" inurl:"slapd.conf" intext:"credentials" -manpage -"Manual Page" -man: -sample inurl:"slapd.conf" intext:"rootpw" -manpage -"Manual Page" -man: -sample inurl:"wvdial.conf" intext:"password" inurl:/db/main.mdb inurl:chap-secrets -cvs inurl:config.php dbuname dbpass inurl:filezilla.xml -cvs inurl:lilo.conf filetype:conf password -tatercounter -bootpwd -man inurl:nuke filetype:sql inurl:ospfd.conf intext:password -sample -test -tutorial -download 路由配置 inurl:pap-secrets -cvs inurl:perform filetype:ini inurl:secring ext:skr | ext:pgp | ext:bak inurl:vtund.conf intext:pass -cvs inurl:zebra.conf intext:password -sample -test -tutorial -download "Generated by phpSystem" "generated by wwwstat" "Host Vulnerability Summary Report" ] "HTTP_FROM=googlebot" googlebot.com "Server_Software=" "Index of" / "chat/logs" 聊天室 "Installed Objects Scanner" inurl:default.asp "Mecury Version" "Infastructure Group" "Microsoft (R) Windows * (TM) Version * DrWtsn Copyright (C)" ext:log "Most Submitted Forms and Scripts" "this section" "Network Vulnerability Assessment Report" "not for distribution" confidential "phone * * *" "address *" "e-mail" intitle:"curriculum vitae" "phpMyAdmin" "running on" inurl:"main.php" "produced by getstats" "Request Details" "Control Tree" "Server Variables" "robots.txt" "Disallow:" filetype:txt "Running in Child mode" "sets mode: +p" "sets mode: +s" "Thank you for your order" +receipt "This is a Shareaza Node" "This report was generated by WebLog" ( filetype:mail | filetype:eml | filetype:mbox | filetype:mbx ) intext:password|subject (inurl:"robot.txt" | inurl:"robots.txt" ) intext:disallow filetype:txt -site:php.net -"The PHP Group" inurl:source inurl:url ext:pHp FBR "ADOBE PHOTOSHOP" AIM buddy lists allinurl:/examples/jsp/snp/snoop.jsp allinurl:servlet/SnoopServlet cgiirc.conf data filetype:mdb -site:gov -site:mil exported email addresses ext:asp inurl:pathto.asp ext:cgi inurl:editcgi.cgi inurl:file= ext:conf inurl:rsyncd.conf -cvs -man ext:conf NoCatAuth -cvs ext:dat bpk.dat ext:gho gho ext:ini intext:env.ini ext:ldif ldif ext:log "Software: Microsoft Internet Information Services *.*" ------------------------------------------------------------------------------------------ ext:mdb inurl:*.mdb inurl:fpdb shop.mdb filetype:bkf bkf filetype:blt "buddylist" filetype:blt blt +intext:screenname filetype:cfg auto_inst.cfg filetype:conf inurl:firewall -intitle:cvs filetype:config web.config -CVS filetype:ctt ctt messenger filetype:fp fp filetype:fp fp -site:gov -site:mil -"cvs log" filetype:inf inurl:capolicy.inf filetype:lic lic intext:key filetype:myd myd -CVS filetype:ns ns filetype:ora ora filetype:ora tnsnames filetype:pdb pdb backup (Pilot | Pluckerdb) filetype:pot inurl:john.pot ------------------------------------------------------------------------------------------------------------------ filetype:pst inurl:"outlook.pst" filetype:pst pst -from -to -date filetype:qbb qbb filetype:rdp rdp filetype:reg "Terminal Server Client" filetype:vcs vcs filetype:wab wab filetype:xls -site:gov inurl:contact filetype:xls inurl:"email.xls" Financial spreadsheets: finance.xls Financial spreadsheets: finances.xls Ganglia Cluster Reports haccess.ctl (one way) haccess.ctl (VERY reliable) ICQ chat logs, please... iletype:log cron.log intext:"Session Start * * * *:*:* *" filetype:log intext:"Tobias Oetiker" "traffic analysis" intext:(password | passcode) intext:(username | userid | user) filetype:csv intext:gmail invite intext:http://gmail.google.com/gmail/a intext:SQLiteManager inurl:main.php intitle:"Apache::Status" (inurl:server-status | inurl:status.html | inurl:apache.html) intitle:"AppServ Open Project" -site:www.appservnetwork.com intitle:"ASP Stats Generator *.*" "ASP Stats Generator" "- weppos" intitle:"FTP root at" intitle:"index of" +myd size intitle:"Index Of" -inurl:maillog maillog size intitle:"Index Of" cookies.txt size intitle:"index of" mysql.conf OR mysql_config intitle:"Index of" upload size parent directory intitle:"index.of" .diz .nfo last modified intitle:"Multimon UPS status page" intitle:"PHP Advanced Transfer" (inurl:index.php | inurl:showrecent.php ) intitle:"PhpMyExplorer" inurl:"index.php" -cvs --------------------------------------------------------------------- intitle:"statistics of" "advanced web statistics" intitle:"System Statistics" +"System and Network Information Center" intitle:"Usage Statistics for" "Generated by Webalizer" intitle:"wbem" compaq login "Compaq Information Technologies Group" intitle:"Web Server Statistics for ****" intitle:"web server status" SSH Telnet intitle:"welcome.to.squeezebox" intitle:admin intitle:login intitle:index.of "Apache" "server at" intitle:index.of cleanup.log intitle:index.of dead.letter intitle:index.of inbox intitle:index.of inbox dbx intitle:intranet inurl:intranet +intext:"phone" inurl:"/axs/ax-admin.pl" -script inurl:"/cricket/grapher.cgi" inurl:"bookmark.htm" inurl:"cacti" +inurl:"graph_view.php" +"Settings Tree View" -cvs -RPM inurl:"newsletter/admin/" inurl:"newsletter/admin/" intitle:"newsletter admin" inurl:"putty.reg" inurl:"smb.conf" intext:"workgroup" filetype:conf conf ---------------------------------------------------------------------------------------------------------- Welcome to ntop! "adding new user" inurl:addnewuser -"there are no domains" (inurl:/cgi-bin/.cobalt/) | (intext:"Welcome to the Cobalt RaQ") filetype:php HAXPLORER "Server Files Browser" intitle:"Web Data Administrator - Login" inurl:ConnectComputer/precheck.htm | inurl:Remote/logon.aspx PHP Shell (unprotected) PHPKonsole PHPShell filetype:php -echo Public PHP FileManagers "index of" / picasa.ini "index of" inurl:recycler "Index of" rar r nfo Modified "intitle:Index.Of /" stats merchant cgi-* etc "Powered by Invision Power File Manager" (inurl:login.php) | (intitle:"Browsing directory /" ) "Web File Browser" "Use regular expression" filetype:ini Desktop.ini intext:mydocs.dll intext:"d.aspx?id" || inurl:"d.aspx?id" intext:"Powered By: TotalIndex" intitle:"TotalIndex" intitle:"album permissions" "Users who can modify photos" "EVERYBODY" intitle:"Directory Listing For" intext:Tomcat -intitle:Tomcat intitle:"HFS /" +"HttpFileServer" intitle:"Index of *" inurl:"my shared folder" size modified ------------------------------------------------------------------------------------------------------------------- "File Upload Manager v." "rename to" ext:asp "powered by DUForum" inurl:(messages|details|login|default|register) -site:duware.com ext:asp inurl:DUgallery intitle:"." -site:dugallery.com -site:duware.com ext:cgi inurl:ubb_test ezBOO "Administrator Panel" -cvs filetype:cgi inurl:cachemgr.cgi filetype:cnf my.cnf -cvs -example filetype:inc inc intext:setcookie filetype:php inurl:"viewfile" -"index.php" -"idfil filetype:wsdl wsdl intitle:"ASP FileMan" Resend -site:iisworks.com intitle:"Index of /" modified php.exe intitle:"phpremoteview" filetype:php "Name, Size, Type, Modify" inurl:" WWWADMIN.PL" intitle:"wwwadmin" inurl:"nph-proxy.cgi" "Start browsing through this CGI-based proxy" inurl:"plog/register.php" inurl:cgi.asx?StoreID inurl:robpoll.cgi filetype:cgi The Master List "More Info about MetaCart Free" 原文地址 http://www.blog.edu.cn/user2/61451/archives/2006/1093748.shtml
posted @ 2007-05-26 13:08 MEYE 阅读(1449) | 评论 (0)编辑 收藏

 

 

http://blog.csdn.net/lin_bei/archive/2007/05/09/1601895.aspx

http://www.openfans.net/main.html

http://dev.yesky.com/javagaoji/




Unix-Center.Net

Unix体验中心

http://www.unix-center.net/?page_id=2


在 IBM Systems 上安装 Linux 服务器,第 1 部分: Linux 服务器的基本安装和配置



C++的罗浮宫你应当如何学习C++(以及编程

http://blog.csdn.net/pongba/archive/2007/05/16/1611593.aspx


谷歌跃居大学生最理想雇主排行第一

2007年美国大学生最理想雇主排行榜出炉

  谷歌打败迪斯尼跃居第一

  今年调查结果显示,美国大学生择业有两个主要趋势:从事公益活动或者追求高薪,但看起来,这是互为矛盾的两种选择。

  本报讯5月12日,美国著名雇主品牌管理公司优信咨询(Universum)公布了最新一期的“2007年美国大学生最理想雇主排行榜”。

  前五名包括:两个政府机构———美国国务院和美国和平队(PeaceCorps美国志愿服务组织);两个高利润的科技创新公司———谷歌和苹果公司以及一个媒体巨头———迪斯尼公司。谷歌跃居第一今年的排行榜上,谷歌打败了去年第一名的迪斯尼公司,成为大学生心中最理想的雇主。

  此次调查还发现,学生们没有以往那么青睐于制药产业和消费品产业。比如,以往一直居于排行榜前十位的强生公司从第8名跌至18名,而雅培实验室由第54名滑至百名之外。同时,消费品领域的公司排名也开始下滑,如宝洁公司(从14名下降到21名)和欧莱雅公司(从27名滑落到35名)。

  据统计,参与此次调查的大学生人数达到44064人。当大学生列出理想雇主的名单时,他们倾向于填写能够让自己发挥潜能并且有一定成就的组织。此次调查还包括了前200名理想雇主和名次下降明显的前50名雇主,涉及文科、信息技术、工程学和工商学等领域。热衷公益组织今年调查结果显示,美国大学生择业的两个主要趋势:从事公益活动或者为高薪而工作,但看起来,这是互为矛盾的两种选择。不过,优信咨询公司的CEO克劳迪亚·塔塔内里(ClaudiaTattanelli)表示:这两者的初衷是一致的,都是为未来成功铺路的聪明之举。例如,有良好口碑的美国公共服务机构美国和平队和“为美国而教”教育项目,在2006年甚至根本没有上榜,而今年却直接闯进了前十名。

  “这些非赢利组织的声誉会使简历看起来更加漂亮。”塔塔内里说。这两个组织的员工承担着一定的义务,而这常常是政府官员和雇主在招收毕业生时非常看重的一点。事实上,和“为美国而教”项目合作的许多公司会让雇员先为公益组织工作两年,再开始正式工作。(谢婷)

  美国和平队(PeaceCorps)

  一个联邦政府组织,美国的志愿者经训练后被派往国外帮助发展中国家人民提高技术、农业和教育水平。有过这种经历的人回归到自身的文化环境后,就具有了跨文化的工作能力。“为美国而教”(TeachforAmerica)教育项目

  该项目组是由肤色各异、专业各异的美国大学生组成的。他们奔赴到城市或农村的学校,完成两年的教书工作。与中国的大学生毕业后支教西部的活动相似。

  前10名最理想雇主

  公司或组织投票率谷歌(google)13.37%

  迪斯尼公司(Walt Disney Co.)10.03%

  苹果()8.47%

  美国国务院(State Dept.)6.87%

  和平队(Peace Corps)6.87%

  中央情报局(Central Intelligence Agency)6.72%

  普华永道(Pricewaterhouse Coopers)6.44%

  微软(Microsoft)6.31%

  联邦调查局(Federal Bureauof Investigation)6.27%

  “为美国而教”项目(Teach For America)6.26%



身为开发人员的您,准备好迎接Widows Mobile 6了吗? 

http://blog.csdn.net/donggua123/archive/2007/05/21/1619405.aspx



 

posted @ 2007-05-21 19:03 MEYE 阅读(379) | 评论 (0)编辑 收藏



http://www.disound.com/zblog/rss.asp?cate=3


<?xml version="1.0" encoding="UTF-8" ?>
<canvas>
 <script>
  function checkIt(){
   if(canvas.input.inputname.name.getText()==""){
    canvas.input.checkView.setText("姓名不能为空")
    return 0;
    
   }
   else{
    return 1;
   }

  }
 </script>
 <simplelayout axis="x" spacing="30"/>
 <view name="input" x="30" y="30"   width="50%" height="100%">
  <simplelayout axis="y" spacing="10"/>
  <view  name="inputname" x="10">
   <simplelayout axis="x" spacing="10"/>
   <text>请输入姓名</text>
   <edittext name="name"></edittext>
  </view>
  <view  name="inputpassword" x="10">
   <simplelayout axis="x" spacing="10"/>
   <text>请输入密码</text>
   <edittext name="password" password="true"></edittext>
  </view> 
  <view name="inputage" x="10">
   <simplelayout axis="x" spacing="10"/>
   <text>请输入年龄</text>
   <edittext name="age" pattern="[1,2,3,4,5,6,7,8,9,0]*" ></edittext>
  </view> 
  <view name="inputsex" x="10">
   <simplelayout axis="x" spacing="10"/>
   <text>请输入性别</text>
    <combobox  name="sex" editable="false" defaulttext="请选择">
       <textlistitem text="男" />
       <textlistitem text="女" />
     </combobox>
  </view> 
  <view name="inputmail" x="10">
   <simplelayout axis="x" spacing="10"/>
   <text>请输入E-Mail</text>
   <edittext name="mail"></edittext>
  </view> 
  <button isdefault="true">
   重置
   <method event="onclick">
    parent.inputname.name.setText("");
    parent.inputpassword.password.setText("");
    parent.inputage.age.setText("");
    parent.inputsex.sex.setText("请选择");
    parent.inputmail.mail.setText("");
   </method>
  </button>
  <button isdefault="true">
   提交
   <method event="onclick">
    if(!checkIt()){}
    else{
     if(canvas.look.dataView.getText != ""){
      canvas.look.dataView.clearText();
     }
     canvas.look.dataView.addText("姓  名:" + parent.inputname.name.getText()+"\n");
     canvas.look.dataView.addText("年  龄:" + parent.inputage.age.getText()+"\n");
     canvas.look.dataView.addText("性  别:" + parent.inputsex.sex.getText()+"\n");
     canvas.look.dataView.addText("E-Mail:" + parent.inputmail.mail.getText()+"\n");
    }
   </method>
  </button>
  <text name="checkView" multiline="true" maxlength="1000"/>
 </view>
 <view name="look" y="30" width="50%" height="100%">
  
  <text name="dataView" multiline="true" maxlength="1000">


  </text>
 </view>
</canvas>


http://www.openria.cn/posts/list/38.page


http://www.wujianrong.com/archives/2007/02/laszlo.html

http://www.onjava.com/pub/a/onjava/2005/06/15/laszlo.html

http://blog.csdn.net/xray_gu


http://www.xml.com/pub/a/2006/10/11/introducing-open-laszlo.html?page=2
posted @ 2007-04-19 15:22 MEYE 阅读(414) | 评论 (0)编辑 收藏
[转帖]一个人分别在“国企,外企,民企”的工作经历       

本人大学毕业以后被分配到医院工作,在医院做为医生工作过7年,后来应聘到外企,先后在世界著名的医药公司工作过7年,分别是:瑞士,德国,美国公司。然后出国2年,回国后在一家民营企业工作了7个月。可以说经历了个总类型的企业,包括当海龟的经历。很想在这里和朋友们分享,也给正在找工作的朋友提供一些参考。
  先从国营单位说起。
  国营单位人际关系比较复杂,在国营单位要想生存的舒服,能力不是主要的,人际关系,裙带关系比较关键。因为国营单位的效益增加与否,与所谓领导的political利益关系不大。也就是说,单位效益不好,不会动摇领导者的领导地位,他的既得利益不会受影响。业务能力不过是领导控制下属的一个工具,不是考核工具。因此想靠业务能力在国营单位有所发展,比较难。一个业务能力不强,但是八面玲珑的人,更容易受到重用。国企从工作量上讲,比较轻松。也不需要什么主观能动性,也没有什么激励机制,属于不费体力,但累心的单位。比较适合中年,保持混的心态的人工作。因此对于年轻人来说,在国营单位工作,要学会与人相处,学会察言观色,当然业务不能丢。这样你学会了如何与人相处,再拥有了一定的业务,你就具备了挑选自己职业生涯的能力,留下还是跳槽,就全有你选择了。如果你没有业务能力,那么你也就只能留在国营单位。因为外企和国企完全不同。那里是靠能力发展的地方。
再说说外企。
  从我所工作过的外企和自己职业生涯的上升过程。个人认为,外企人际关系比较简单,特别是那种外国人作为直接老板的外企(以欧美公司为例,本人没有亚洲企业的工作经理)。外国人比较烦中国人之间复杂的人际关系,对于爱汇报别人不好的员工,外国人比较看不起。因此外国人更重视员工的工作能力。在外企一切都是拿工作业绩说话。如果你业绩不好,你再会拍马屁也没有用。因为外国老板的职位也是要靠业绩来巩固的。如果他的业绩不好,他也要失业,所以员工的业绩与他的前途密切挂钩。也许搞技术的不同,我是搞销售,市场的,所以能力的表现就显得特别重要。比如提升,一定是提拔工作业绩好的。还有一点,就是在外企,个人利益是要自己主动争取的。如果老板不给你长工资,而你的业绩做得好,你可以直接找老板谈条件。往往最终是可以达到目的的。外企如果在底层,一般没有什么political,但是做到中,高层,就会有political,当然大部分也是老外之间斗。或者是一些中国人之间斗。我的经验是,从不参加任何人的拉帮结派。做好自己的工作,拿业绩说话。同时也还是要和各部门同事之间搞好关系。这样对自己协调工作有利。在外企工作的人一定要明白自己的地位,永远不可能替代外国老板的位置。所以没有必要在同事之间树敌。只要你能拿到你希望的薪水,得到提升就可以了。但是在外企一定要有一个好的工作态度。在外企工作,老板最讨厌和公司讨价还价,斤斤计较的人,这样的人,看似可以得到眼前的小利,却会失去自己希望得到的更大的利益。比如,我在德国公司工作的时候,我们出差的标准是我们这个级别的人,可以住5星级酒店。和我一个级别的男同事们从来不肯让自己吃亏,不管离办公室多远,一定要住够档次的酒店,而我不在乎酒店的级别,我觉得不过就是睡一觉,在那里都可以,我只想住离办公室近的地方,方便上班。3星级的我也可以住。结果是我出差的费用总是比其他同事少,可是我却完成和别人一样的事情。看似我好像亏了,结果是等到提升的时候,老板提升了我,理由就是我懂得为公司节省费用,并完成了同样的事,他们认为这是作为一个管理者应该具备的财务观念。外企考核人的标准是非常注意人品的,老板从来不轻易的批评员工,但是他们比中国人更细的观察员工。因此在外企工作,绝对不能偷奸耍滑,很多外企工作的人抱怨在外企没有前途,我想与他们那种典型中国人的喜欢占小便宜的思想有关。说到年龄,我是30岁才到外企,从销售做起,到37岁离开外企出国已经是市场总监了。我想如果我不辞职,我照样可以继续干下去。所谓个人认为,外企比较适合有能力,有创意的年轻人工作。外企,特别是世界级的大公司,都非常重视培训。而这个培训是无价的。不过有一点可以告诉大家,就是越大,越有名气的公司,基础员工的工资反而并不高。因为公司的名气就是一种无形资产。也就是说,你在大公司的工作经历,可以使你很容易得找到付给你高工资的其他低一级的企业。公司非常清楚自己知名度的品牌价值。所以建议那些想进入大公司的年龄人,如果你想未来有所发展,就不要在乎起始工资,进入大公司,接受他们的培训,比什么都重要,因为这个才是你以后增值,要高价的基础。如果是世界一流的大公司,就是给500块,也要进去。如果你相信自己有能力,你就要努力干,你就能得到提升,你才有挣5万块的资本。

最后,说说民营企业。出国两年后,回国。在第一个月之内,猎头公司就知道我回来了,给我推荐了3个公司。一个是国内的药厂,一个是合资的药厂,另一个是民营企业。由于民营企业开的价格比较高,而且单位距离我家也很近,我就选择了这个单位。那年我39岁。我想他们从4个合适的人选中,最后选中我,一来是我以前在国内外企医药市场多年的经验,二来,这个企业是个所谓的高科技企业,也需要一些嘴里能蹦外国话的人来冲门面。来吸引投资人投资。然而我发现,我不能适应那里的文化。特别不能让我接受的就是,员工的素质。同事之间勾心斗角,而且男女关系混乱。特别是管理层素质很差。公司评价员工是以能喝酒,能吹牛为标准的。惩罚,奖励机制没有。作为的总经理也是投资人聘用的,以浪费投资人的钱为手段。没有看到开发出什么新产品,但是总是靠写各种投资报告吸引有资金的人投资。而且员工之间相互不懂的尊重,吵架,乱搞得很常见。因此我觉得很难融入这样“原始状态”的工作环境,因此在工作半年的时候提出辞职。对民企的感觉就是,看起来,又打卡,又计分的,其实根本没有管理概念,不但没有企业管理理念,也没有人事,财务管理理念,各项管理都比较混乱,带有很强的私营和国营杂交的特质。所有的经营都是短期概念。不适合作为长期发展的目标。也许是我没有遇到好的民营企业吧?不过对我来说,有这一次经历也就够了。我个人认为可以作为实在找不到工作暂时落脚的地方,对于年轻人切不可久留,否则不但什么都学不到,而且还会造成对职业非常错误的理念。
  
  总结一下就是,外企是适合年轻人学东西,学本领的地方,如同一个非常好的能力培训基地。国企是个锻炼中国式人际交往的地方,也是可以通向仕途的唯一通路。民企是个暂时的收容所,不能久留。以上纯属个人意见,可供讨论




程序员 :超越软件蓝领的七种武器 [转]  
信息技术的发展时间虽然不长,但其爆炸式的发展速度使信息技术迅速覆盖社会和人类生活的各个角落。程序员们是这场信息化浪潮的见证者之一,更是其中的主要参与者,这是时代赋予每个程序员的机会和责任。 

信息技术的更新速度是惊人的,程序员的职业生涯则是一个要求不断学习的过程,永远不能固步自封。本人在工作期间曾看见过很多程序员只要有闲暇时间就浏览一些没有太大作用的网页,在网上聊天,打游戏,浪费了大量的时间,十分不可取。而另外一种情况是,IT技术的日新月异使很多程序员眼花缭乱,什么都想学,却又不知从何学起,今天看看这个,明天学学那个,贪多不熟。 

虽然IT技术发展迅速,但很多技术都是有规律可循,一些基本的概念、原理和方法还很通用,可以举一反三。本人根据自己的体会和经验,向那些刚刚踏入IT行业的新程序员们或正在迷茫的程序员们推荐程序员必须掌握的七种武器,有了这七种武器,虽不敢说笑傲江湖,但将自己立于不败之地还是可以的。 

第一种武器:开发工具 

至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是我重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而本人对SUN公司的“网络即计算机”的概念相当欣赏,并相信JAVA即其相关的技术集JAVA One会成为未来的主流开发工具之一。其次,如果能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,C++ Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。 

第二种武器:数据库 

为什么数据库是如此重要?很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。 

第三种武器:操作系统 

当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。 

第四种武器:网络协议TCP/IP 

在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。 

第五种武器:DCOM/CORBA/XML/WEB Services 

随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间件平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。 

第六种武器:软件工程与CMM 

现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。 

第七种武器:强烈的好奇心 

什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。 

其?学好一种就够用了。
posted @ 2007-04-09 21:31 MEYE 阅读(766) | 评论 (0)编辑 收藏

几本linux学习的书籍

本人正在进行linux 的学习 希望这些资料对linux爱好者有用
linux 教材大全 ftp://down.eshuba.com/eshuba/xitongxiangguan/Linuxjcdq.rar


linux 使用大全 http://down.eshuai.cn/shuba/xito ... %C3%B4%F3%C8%AB.rar
linux 学习宝典 http://down1.cnhacker.com/booksdown/07013103050c8cb659a28f9ff.rar
 
       

linux 从入门到精通 http://www.gouhuo.com/study/linuxbook.zip
练成linux 高手 http://www.jz5u.com/download.asp?id=15590&downid=0
送给linux 初学者 ftp://211.95.73.26/hl/送给初学Linux的穷人Linux系统指令大全.pdf 
 
        
 
linux 系统管理 ftp://211.95.73.26/1zxhlinux.rar
linux 命令大全 http://ftpgz5.pconline.com.cn/exam/it/Linux061114.rar
linux 软件工程师 ftp://222.214.218.42/book3/20060 ... 81-4941bcee1f11.pdf 
 
 
 基础学习 http://www.00083.com/soft/upload ... 84b69a63c2ed2a47af3
基础教程完整版 http://download.chinaitlab.com/download.asp?id=34873
命令全集 http://down.linuxmine.com/soft/0/1/01000001.rar 
 

  使用学习教程 ftp://222.214.216.57/book2/20061 ... 16-c8b5facb0654.chm
网络安全配置 http://vip.hackbase.com/vipsoft/vipteacher/20050305linux29.rar
linux 从入门到精通 ftp://down.eshuba.com/eshuba/200601/Linux ??????.rar 
 


  http://ftpgz13.pconline.com.cn/pub/download/200205/linuxsite.rar
新手管理员手册 http://www.00083.com/soft/upload ... fc01983a9ded8943b62
安装与配置简明手册 http://cpss.zz.ha.cn/study/linux ... %f7%ca%d6%b2%e1.zip
网络实际操作 thunder://QUFodHRwOi8vZG93bmxvYWQuY2hpbmFpdGxhYi5jb20vZG93bmxvYWQuYXNwP2lkPTM3MTM3Wlo=
红旗linux 中文版初级教程 http://down.hack58.com/fzw_hack58/sohu/11-23linux.rar
linux 核心源代码分析PDG http://www.00083.com/soft/uploadsoft/linux核心源代码分析.rar?6103004891303x1174341082x6103009877379-15c492eb5c3033c99a07c2fba419c496
破解根用户密码 http://www.942d.com/shipin/bbs/linuxsn.rar
Red Hat Linux Fedora傻瓜书 httP://book1.ibook8.com/ibook8co ... 5/041113/fedora.rar 
 


Linux知识宝库典藏版  ftp://222.214.218.42/book3/20060 ... 35-0c5492042030.chm
Linux程序设计  ftp://down.eshuba.com/eshuba/xitongxiangguan/Linuxcxsj.rar
Linux参考大全  httP://book1.ibook8.com/ibook8com/pc2005/701/1/521hacker-20.zip
linux编程初学者入门  ftp://222.214.216.57/book2/20061 ... 00-a603302e0466.rar 
 


LINUX应用技术精华{面向初学Linux朋友的书籍}   http://www.linuxfans.org/nuke/software/LINUX应用技术精华{面向初学Linux朋友的书籍}/LINUX应用技术精华{面向初学Linux朋友的书籍}.rar
redhat9从入门到精通  http://down.315safe.com:315/redhat9从入门到精通.rar 
 

 

Linux C函数库参考手册  http://cnc-http.xpbook.com:81/200506/Linux%20C函数库参考手册.rar?6102881127298x1150968278x6102884440460-71dc8cd6d874db99d29888002914a4d5
Linux 内核完全注释   httP://book1.ibook8.com/ibook8co ... 113/linuxsystem.rar
Linux2006年9月 总第三期  http://www.linuxer.cn/magazine/linuxer3-2006-09.pdf
Linux_network_manage-3245      http://down.csdn.net/down2//2006 ... ork_manage-3245.rar
一周内学会Linux系统管理   http://download1.csdn.net/down2/2006/10/499/1zxhlinux-2605.rar
linux编程白皮书   http://download1.csdn.net/down//2006/webdown/004/Linuxbcbps.rar
linux上的c编程   http://www.cinchina.com/Soft/Sho ... lID=1&SoftID=12
linux宝典  thunder://QUFodHRwOi8vZG93bmxvYWQuY2hpbmFpdGxhYi5jb20vZG93bmxvYWQuYXNwP2lkPTM3MDk3Wlo=
《Linux内核完全注释》 V1.9.5版  http://oldlinux.qbang.org/download/clk011c-1.9.5.pdf
linux教材  thunder://QUFodHRwOi8vd3d3Lmp6NXUuY29tL2Rvd25sb2FkLmFzcD9pZD0xNDUxNSZkb3duaWQ9MFpa
linux命令全集Shell_manual  http://www.uplinux.com/php/downl ... ZWxsX21hbnVhbC56aXA 
 


这些资源用迅雷下载可能会快一些
PDF 格式的支持在线观
 

posted @ 2007-04-03 21:59 MEYE 阅读(1972) | 评论 (4)编辑 收藏


(找工作)如何给自己定位:


一份好工作应该是自己所喜欢的工作。走自己的路,做自己喜欢的事情,选择自己感兴趣的职业,选择适合自己兴趣的职业,使自己的才知和天性得以最大程度的发挥,是每个求职者首先应该考虑的一个重要问题。切不可轻易放弃这一标准而盲目追求热门工作、进大城市或高收入等等。

 

Ⅱ,其次,一份好的工作应该是有利于自身发展的工作。从发展的眼光看前景,这是求职者必须加以考虑的,在选择具体单位时,任何一个单位都会有利有弊。在权衡利弊过程中也要从有利于自身发展的角度考虑,或者是能为你进一步提高自己提供条件,或者是能帮助你积累经验,或者是能使你开拓一个新领域,或者是为你深造赢得了时间等等。

 

Ⅲ,一份好的工作应该是你力所能及的工作。你所向往的好工作可能很多,但能不能选择一份力所能及的工作却是决定成败的一个关键。其中包含两层意思,一是指你是否能胜任这份工作,二是你是否能得到这份工作。首先要选择你能够胜任的工作。也许你有门路、有办法进入一个相当有实力的单位,但在竞争日趋激烈的今天,如果你无法胜任这份工作,即使这份工作再好,也最好不要问津,免得被工作所累,免得在激烈的竞争中被淘汰出局。再者,大学生在求职择业时普遍存在着期望值过高的倾向,不少朋友动辄非几千元月薪不去,正是由于这种不切实际的期望值,使得一次一次在求职中失败,待到认清自己的定位时,合适的工作却被别人占去了,这种教训应该认真汲取。就业是一件时效性很强的工作,只要调整好自己,把握好标准,抓住机遇,对多数朋友来说,找份好工作并不难。



写给即将走向职场的大学毕业生朋友们

写给即将走向职场的大学毕业生朋友们
                       ——读“尘世流沙”的《狮子和绵羊》的故事有感

         我很感谢 “尘世流沙”网友在百度贴吧里发的题为《狮子和绵羊》的寓言故事。楼主用凄美、悲怆的笔触叙述了寓言故事里的精美画面和动人情节。读罢全文,不禁让我联想到两个问题:
        其一:有着“革命的将军”之称的拿破仑说的“狮子统帅的绵羊的部队,能够打败绵羊统帅的狮子的部队”的话。将军告诉人们“三军易得,一将难求”的道理,同时也告诫世人当我们遭遇到事业发展的“瓶颈期”,是否更该冷静反省一下“自己是缺乏狮子般的勇气还是自己仅有被驯服的绵羊般的温顺和能力”呢?
       其二、大学毕业生步入职场是寻找能够充分展露自己在大学熔炉里锻造出来的“特殊商品”的功效,还是先解决自己的温饱的生存问题呢?
随着近年来国家教育制度的改革,大学教育也转入普及化、大众化的教育,因此,曾经风光一时的“香饽饽”现今却面临着很严峻的就业问题。我们不应该无谓地去责备政府,因为这是我国国力和人口发展进程中必然出现的社会问题。诚然,人民政府必须为大学毕业生创造良好的创业发展平台,但更需要广大的大学生必须持着积极冷静的心态思考这个问题。
         今天我正好在腾讯网中看到两则新闻:清华大学高材生黄剑林“弃甲归田、投笔从锅”回家开小挡卖炒粉,他“挥锅舞铲”一炒就是6年。而且,目前有了妻儿的他表现出依依不舍“三尺灶台”之慨;清华大学保卫科副科长、在读博士生毅然决然地辞职“摆地摊”修理电动车。
          对于这两条似乎“惊爆”无比的消息我丝毫不感到震惊。想当初春秋战国时期吴越大战,“陶侏公”范蠡为帮助越王勾践复国雪耻,经过十年图聚,卧薪尝胆,最终打败吴王夫差而为世人所颂扬。但他功成名就之后不是选择做“乱世之英雄、治世之贤臣”,却选择归隐江湖、经商论道,成就了一个声名显赫的一代富商,而没有沦为“兔死狗烹、鸟死弓藏”、不能同富贵的刀下冤魂!
         我不是知识无用论者,我始终捍卫“科学技术是第一生产力”的伟大旗帜。 “ 物竞天择,适者生存”。纵然 “时势造英雄”是不辩的事实,然而,英雄可以改变历史但不能创造历史,广大人民群众才是历史的真正创造者,古今皆然。所以,生存规则是适者生存而非强者生存!早在20世纪80年初期就有媒体报道一个大学教授沿街摆起卖茶叶蛋的小铺。现如今,岁月的年轮翻滚到21世纪为什么莘莘学子就不能“炒粉修车”呢?没有今日求得生存哪来明日的发展和辉煌呢?谁能料今日的“洋打工”不是明日的“陶侏公”呢?
         若是要我选择作吃草的温顺绵羊,还是作饕餮食肉的狮子?我就会边吃草边寻找森林———是金子总会闪光的!

                                                                                                              海坛枭雄  于非洲
                                                                                                                 2007年4月3日  
   
                                               《  狮子和绵羊》

  [原文链接]     一天,两只狮子赛跑,越跑越远,离开了森林;越跑越远,迷失了方向,来到了辽阔的草原。它们努力地想辨清方面,但东奔西跑了一整天也找不到来时的路,再也回不到它们熟悉的森林。


  第二天,饿了,慌了。两只狮子一向在森林中要风得风,要雨得雨,从来不晓得挨饿的滋味究竟如何。放眼过去,辽阔的草原上空无一物,见不到任何小动物的踪影。


  “你可以变成羊。”天空忽然传来一个声音。


  其中一只狮子心念一动,果然变成了绵羊,立刻饥不择食地吃草去。原先有点抗拒和无奈,不过吃着吃着,它也逐渐习惯了。为了温饱,有些无奈是可以习惯的。


  另一只狮子尽管已精疲力竭,却并不甘心。它由衷地鄙视自己的同伴,“我是万兽之王,不能吃草啊!”它望了望远方,可能草原的尽头还有另一片森林。”说完头也不回地奔向天边。


  草原似乎没有尽头,天空不时还传来同样的声音:“你可以变成羊——你可以变成羊——”固执的狮子越跑越慢,沉重的脚步没有停过。从白天跑到黑夜,终于倒下,再也站不起来。月亮升起来了,星星在夜空中眨眼。草原上不知从何处冒出来许许多多的绵羊,大家沉默、知足地低头吃着草。青草不好吃,总好过饿死啊。那座倒下的身影,在月光下越发显得伟岸、悲壮。


  换作是你,你会选择吃草,还是继续奔跑?   
                                                                      



人生成功生涯规划100诀

文章来源:http://www.kaifulee.com/modules/bbs/viewthread.php?tid=22206

  生涯规划是新时代的潮流,现代人的课题,生涯规划愈早做愈好,胜算也愈大,而且愈到老愈受用,自己不但要早做生涯规划,让自己活出快乐人生,而且要做子女、学生、员工的生涯贵人,为他们生涯点灯,协助指导他们适性发展。
  生涯规划诀窍100则,系从江文雄:生涯规划一书中,摘要其重点内容供参考。如果您能将这100诀,经常阅读、反思,人生必然不断成长、精进,更为圆融、得众。愿彼此共勉之。

  01. 生涯即人生、生涯即竞争,生涯规划就是个人一生的竞争策略规划。

  02. 生涯要规划,更要经营,起点是自己,终点也是自己,没有人能代劳。

  03. 生涯规划就是规划人生的远景,彩绘生命的蓝图,发挥自己的才能,写出人生的剧本。

  04. 生涯规划包括如何成长、学习、谋生及生活,是一连串思考、选择、计划、打拼、发展的终生历程。

  05. 生涯规划的目的,在于掌握住现在。看得见未来;促进自我暸解、自我定位、自我发展及自我实现。

  06. 成功的人生,需要自己去经营,别再说了,莫再等了,现在就为自己的人生做好规划,为人生点亮一盏明灯,赢在人生起跑点上。

  07. 人生是一趟旅行,只卖是单程票,不卖回程票。

  08. 时间就是生命,人生何其短暂,请珍惜有限岁月,活出自己,活出生命。

  09. 人生之路要自己走,要过怎样的人生,完全是自己的选择,只有自己才能赋予生命最佳的诠释。

  10. 人生像演员,不同的场合,不同的阶段,扮演不同的角色,重要的是,无论演什么,就要像什么。

  11. 人生的愿望,在于:成为自己的老板,掌握自己的命运,主宰自己的时间,创造自己的快乐,追求自己的幸福。

  12. 人生的标的,在于:感觉被欣赏,人格被尊重,成就被肯定,生而能尽欢,死而能无憾。

  13. 生活的目的,在于:活得实在,活得自在,活出健康,活出品味,活出快乐,活出豪气,活出尊严。

  14. 人生最重的事,不是您现在站在何处,而是您今后要朝那个方向,只要方向对,找到路,就不怕路远。

  15. 成功的人生,胜于成功的事业,一味追求事业的赢家,最后可能变成人生的输家。

  16. 佛前的灯,不必刻意去点,最重要的是,点亮自己的心灯,知道自己的起跑点及目的地,想出最适合自己的方式,按部就班跑向目的地。

  17.人的一生,是一连串决定交织而成的过程,其精华在于自己如何选择。生命的最高境界,就是选对舞台,尽情挥洒才华,走出自己的路。

  18.人生成功的定义,要自己去找寻;人生快乐的感觉,要自己去诠释;千万不要迷失在别人的看法中。

  19.价值观,就是我们对事物好与坏、对与错的看法,我们觉得好的、对的、重要的、应该的,都代表了我们的价值观,因人而异,系于一念之间。

  20.在对人、对事方面,如果能尽量选择朝愉的方向去想,就会愈来愈感到愉快。

  21.一个人只要想法愿意改变,事情就有转机,改变的意念会愈强,胜算就愈大,成功的机会,远留给拥抱变化、渴望改变的人。

  22.人生是计划的过程,计划的主人是自己,计划做得具体,执行做得确实,胜算必然属于自己。

  23.积极的人,充满乐观,展现活力,总是知道自己的方向,要的是什么?更清楚地知道,自己该如何去做。

  24.人在高潮时,千万不可得意忘形,否则骄兵必败;人处低潮时,千万不可灰心丧志,否则郁卒自灭。

  25.一个人如果心态开放,保持好奇,破除成见,不断进修,求新求变,将会使视野开阔,拥有创意人生。

  26.快不快乐在自己,快乐从心起,自己求,要学习。

  27.当一个人感到很知足,心不烦,身不疲,无所求,心能安的时候,快乐就在其中。

  28.当一个人感到吃得下,玩得动,睡得好,没牵挂,很满足的时候,幸福就在其中。

  29.快乐的源泉在于:知足、无求。尽责、无怨、宽容、感恩、舍得、放下、忘记。

  30.生涯规划的步骤是:先觉知、有意愿、量己力、衡外情、订目标、找策略、重实践、善反省、再调整、重出发的循环历程。

  31.生涯规划的前提在于:主角是自己,愿意改变自己,要量力适性,参考家人意见,有求好心,有企图心,有行动决心。

  32.一个人就算饱学之士,如果不能暸解自己,掌握自己,就称不上是个有智慧的人。

  33.知己是生涯规划的起点,唯有充分了解自己,生涯规划才能做到量力适性,人生才能过得如自己所想。

  34.要暸解自己,就要勤于自我生涯对话,认清我是谁?我是怎样的一个人?我有那些生涯资产及战力?我要到那里去?我要如何达到目的?

  35.目标代表个人的愿景,是心中的罗盘,人生因有目标,才会执着去追求,才会有成功的希望。

  36.人生有梦,筑梦踏实,将自己的梦想,以阶段性的小目标,落实在具体的计划中,然后身体力行,积极实践,就是生涯规划最具体的表现。

  37.人生是连续的过程,珍视过程,就是钟爱自己;渴望、信心及行动是圆梦三部曲。

  38.人生以40岁为分水岭,前20年,为人作嫁,工作以量为中心;后20年, 为己多活,工作要以质为中心。

  39.人生幸福三诀:一、不要拿自己的错误惩罚自己﹔二、不要拿自己的错误惩罚别人﹔三、不要拿别人的错误惩罚自己。

  40.人生虽有终点,生命却是无涯,生活可以随便,生命却要认真,怎样安排此生,是自己的责任。

  41.圆满人生的八大领域是:婚姻美满、家庭和乐、道德修养、终身学习、事业发展、身体健康、理财得法、善缘广结。

  42.全方位的生涯规划,至少包括四个领域:缤纷生活路、快乐工作路、丰富学习路、职涯成功路。

  43. 缤纷生活路包括:美满婚姻、和乐家庭、健康生活、休闲生活、人际关系、时间管理、消费理财等。

  44.快乐工作路包括:善尽职责,纾解压力、精益求精、工作丰富、寻找乐趣、追求创新等。

  45. 丰富学习路包括:修身养性、自我进修、短期进修、在职进修、学艺专精、网络学习等。

  46.职涯成功路包括:终身受雇、职位晋升、专长发展、绩效创高等。

  47.人生的地图,画满了各式各样的关卡,每过一关都是成长,能够过关便是幸运,经历种种关卡所累积的教训及经验,更是人生的智慧。

  48.人生的关卡,成败在于自己,过关的是自己,卡住的也是自己,人生自古谁无关,只要过关就是赢家。

  49.生涯警讯要觉醒,生涯危机要诊断,生涯挫败要探因,逆转危机为转机,生涯革命要进行。

  50.挫败是人生必修的学分,除了勇敢面对它、接受它、处理它,没有第二绦路。

  51.中年,是一个充满压力、挑战及危机的时期,如何破茧而出,在困境中突破成长,是人生的重要课题。

  52.中年转折是一个危机与机会并存的时机,也是一个真真实实的转折点,只要勇敢面对,因应有方,还是能够活得像一条龙。

  53.破浪扬帆全靠信心、决心、毅力,福祸无门,无一事不可转圜,一切操之在己。

  54.灰心丧志是失败之源;患得患失是痛苦之源;焦虑忧愁是疾病之源;知足、感恩、善解、包容是快乐之源;健康、平安、心安是幸福之源。

  55.舍得才能获得;放下才能去烦;忘记才能心宁;宽容才能得众;反求诸己,做到无念无私,就是踏实自在。

  56生涯路上满布陷阱,每个人要以如履薄冰的心情,踏实的跨出每一步,坚持向前,充满自信和决心,只要行得正,走得稳,终会达成目标。

  57.成功不自满,常怀企图心;改善是求进步的动力,自满是走下坡的起点;为了成功而停下脚步的人,失败就在不远处等您。

  58.真正的裒退,不在白发皱纹,而是停止了学习进取,因此,抱持希望,不断学习,落实行动,是成功人生的保证。

  59.现代人的工作守则:流汗不流血,卖力不卖命,做事不坐牢,争气不争功,凡事求合理,凡事求心安,过程兼结果,时效即绩效。

  60.一个人的品德操守最重要,也是唯一自保之道。表现好,别人不一定肯定;表现不好,别人肯定不轻饶;那里差,别人就往那边挑;那里脏,别人就往那边扫;那里臭,别人就往那边清。

  61.一个人如果忙得抽不出一点时间,常把忙碌一词成为口头禅,那就表示自己已被时间锁住,成了时间的奴隶。

  62.人生有输有赢,得势顺境时,千万不要得意忘形,放纵自己;失势逆境时,千万不可消极颓唐,放弃自己;人生成功的定义,要自己去找,别迷失在别人的看法中。

  63.人生如起伏波浪,唯有培养辨识障碍意识与能力,坚定面对挫折勇气与决心,设法及时反省与补救,才是在茫茫人生大海中,安稳航行的不二法门。

  **.聪明人看退休:不是人生的结束,而是另一阶段的开始;不是工作的退出,而是工作的再参与;不是从此坐享清福,而是人生再定位;不是依靠别人,而是人生再出发;不足自然凋谢的过程,而是有计划的过程。

  65.退休是放松自己,让自己更有时间,去做一些年轻时想做,而没时间去做的事情,来满足自我,活出精彩人生。

  66.在年轻的时候,如果能尽早预筹生涯发展,先期进行生涯管理,生涯路上,必然走得实在,活得快意。

  67.早备六老,愈老愈受用:老健、老伴、老本、老友、老趣、老傻。

  68.老身要健,勤于运动:要活就要动,动则得救;力行生活规律,饮食适当,营养均衡,定期健检;注重休闲,保持心情愉快,便是健康保证。

  69.老伴要好,爱要及时:年轻的夫妻,要及早培养默契,好为老年的生活,累积相爱相守的本钱;空巢中的老人,虽然抓不住孩子的翅膀,但别忘了劳苦功高的老伴,只要巢中有温情,永远不会空。

  70.老本要保,善于理财:年轻的时候,要量入为出,懂得理财,为后半生早作准备;人老了,没钱万万不能,千万要守住老本,懂得活用,善待自己。

  71.老友要交,广结善缘:老友愈陈愈香,年轻的朋友,要及早培养人脉,以便为老年的生活,营造谈天说笑的空间;人愈老愈需要朋友,借着老友的互动联谊,可排遣寂寞,打发时间。

  72.老趣要多,及时培养:一个人的兴趣愈多,朋友就愈多,生活就愈有情趣,生命也就更充实,能为兴趣而活,是人生最大乐事。

  73.老傻要装,涵养心性:人活得愈老,愈要装傻,与配偶、子女、媳妇、好友相处,少说两句、少批毛病、少发脾气,多让一点、多想一二、多说好话,和和乐乐,皆大欢喜。

  74.装傻的最高境界在于:拿得起、放得下、看得开、不动气、知足、感恩、善解、包容。

  75.临老宣言:多运动保健康,心和谐增愉快,不要委屈自己,不要为难子女,没钱万万不能,多陪伴老伴,活到老学到老,有余力多奉献,可以预立遗嘱,多做还愿还债,从容准备后事,恬然接纳死亡。

  76.临老警语:不做老病号,不做老番颠,不做孤独者,不做守财奴,不做落伍者,不做依赖者,不做等死者。

  77.银发族的养生秘诀:知老、认老、抗老、忘老、返老、惜老。

  78.老当知老,规律自找,青春永保;老当认老,不要过劳,剔去烦恼;老当抗老,养身有道,永不嫌老;老当忘老,不停用脑,永不枯槁;抗当返老,心境要好,自乐陶陶;老当惜老,及时行乐,潇洒逍遥。

  79.潇洒人生六得:来得、做得、玩得、舍得、放得、走得。

  80.活到老,学到老,动到老,玩到老,乐到老,永不老。

  81.悲观者抱怨风向,乐观者期待转向,聪明者调整风帆。

  82.对人生的种种,要抱持「看得见、想出来、知改变、能行动」的态度,才能对自己的人生有所交待。

  83.自我管理的警语:既尊己又尊人,站稳脚再冲刺,识时务知进退,存善心做好事,己不欲勿施人,有余力多助人,重修行求心安,善尽责留怀思,再卖力有批评,疼自己做自己。

  84.有效工作的警语:流汗不流血,卖力不卖命,做事不坐牢,争气不争功,有始也有终,过程兼结果,时效即绩效。

  85.人际关系的警语:时存五心(诚心、宽心、同理心、肋人心、感恩心);力行五好(心地好、态度好、表情好、言语好、行为好)。

  86.开心生活的警语:时时开放心胸,保持乐观心情,全力冲刺目标,运动休闲兼顾,营养力求均衡,生活加点创意。

  87.心灵保育的警语:常运动以健心,多静省以收心,戒酒色以清心,去物欲以养心,诵古训以警心,悟至理以明心,厉行善以爱心。

  88.在人生的奋斗过程中,就像一场场的球赛,有输有赢;人生之路崎岖难行,但凭毅力、决心,勇往直前,才能战胜命运,成为生涯赢家。

  89.所谓生涯赢家,就是对自己了解很清楚,知道自己想要什么,想做什么,想过怎样人生的人。

  90.生涯赢家的画像:快乐风光享余年:活动自如身体健,经济独立不靠人,亲情友情乐融融,云淡风轻随己性,生活快乐不知老,退休计划做得巧,养老压力自然小。

  91.赢家的相对就是输家,凡是对自己不了解,任由环境塑造,糊里胡涂生活的人,都算是人生的输家。

  92.生涯输家的画像:病弱孤独度残生:插管躺卧在病榻,如影随形文明病,亲情友情渐疏离,精神空虚难自处,早未准备悔已迟,退休计划做得差,养老压力自然大。

  93.人生使命宣言:家庭第一,健康至上;劲在工作,知足感恩;乐善好施, 广结善缘;信然重诺,心安理得;终身学习 回馈社会。

  94.不怕计划失败,只怕不去计划,嬴家的头衔,是苦干得来,汗水换来的。

  95.生涯是连续的,终生的,与成功有约,有梦的人终会摘星。

  96.主角是自己,只有自己才能决定成败,掌握命运,突破困境,使美梦成真,没有人可以代劳。

  97.新好父母或老师,要为孩子或学生生涯点灯:点燃心灯、智慧之灯、希望之灯。

  98.新好父母或老师,要做子女或学生的生涯贵人:要做心理学家、顾问、拉拉队长、向导。

  99.让孩子或学生,找到自己,掌握自己,肯定自己,走出自己的路,比什么重要。

  100.快乐人生的根源,在于用心经营家庭;事业成功的人,也是家中的模范生,筑一个自己喜欢的巢,爱情及亲情就在家里.

 



受益终生的十大经典管理学定律

文章来源:http://www.kaifulee.com/modules/bbs/viewthread.php?tid=103922&extra=page%3D1


1、彼得原理 

  每个组织都是由各种不同的职位、等级或阶层的排列所组成,每个人都隶属于其中的某个等级。彼得原理是美国学者劳斯·彼得在对组织中人员晋升的相关现象研究后,得出一个结论:在各种组织中,雇员总是趋向于晋升到其不称职的地位。彼得原理有时也被称为向上爬的原理。 这种现象在现实生活中无处不在:一名称职的教授被提升为大学校长后,却无法胜任;一个优秀的运动员被提升为主管体育的官员,而无所作为。对一个组织而言,一旦相当部分人员被推到其不称职的级别,就会造成组织的人浮于事,效率低下,导致平庸者出人头地,发展停滞。因此,这就要求改变单纯的根据贡献决定晋升的企业员工晋升机制,不能因某人在某个岗位上干得很出色,就推断此人一定能够胜任更高一级的职务。将一名职工晋升到一个无法很好发挥才能的岗位,不仅不是对本人的奖励,反而使其无法很好发挥才能,也给企业带来损失。

2、酒与污水定律

  酒与污水定律是指把一匙酒倒进一桶污水,得到的是一桶污水;如果把一匙污水倒进一桶酒,得到的还是一桶污水。在任何组织里,几乎都存在几个难弄的人物,他们存在的目的似乎就是为了把事情搞糟。最糟糕的是,他们像果箱里的烂苹果,如果不及时处理,它会迅速传染,把果箱里其他苹果也弄烂。 烂苹果的可怕之处,在于它那惊人的破坏力。一个正直能干的人进入一个混乱的部门可能会被吞没,而一个无德无才者能很快将一个高效的部门变成一盘散沙。组织系统往往是脆弱的,是建立在相互理解、妥协和容忍的基础上的,很容易被侵害、被毒化。破坏者能力非凡的另一个重要原因在于,破坏总比建设容易。一个能工巧匠花费时日精心制作的陶瓷器,一头驴子一秒钟就能毁坏掉。如果一个组织里有这样的一头驴子,即使拥有再多的能工巧匠,也不会有多少像样的工作成果。如果你的组织里有这样的一头驴子,你应该马上把它清除掉,如果你无力这样做,就应该把它拴起来。

3、木桶定律

  水桶定律是讲一只水桶能装多少水,这完全取决于它最短的那块木板。这就是说任何一个组织,可能面临的一个共同问题,即构成组织的各个部分往往是优劣不齐的,而劣势部分往往决定整个组织的水平。水桶定律与酒与污水定律不同,后者讨论的是组织中的破坏力量,最短的木板却是组织中有用的一个部分,只不过比其他部分差一些,你不能把它们当成烂苹果扔掉。强弱只是相对而言的,无法消除,问题在于你容忍这种弱点到什么程度,如果严重到成为阻碍工作的瓶颈,你就不得不有所动作。

4、马太效应

  《新约·马太福音》中有这样一个故事:一个国王远行前,交给3个仆人每人一锭银子,吩咐道:你们去做生意,等我回来时,再来见我。国王回来时,第一个仆人说:主人,你交给我的一锭银子,我已赚了10锭。于是,国王奖励他10座城邑。第二个仆人报告:主人,你给我的一锭银子,我已赚了5锭。于是,国王奖励他5座城邑。第三仆人报告说:主人,你给我的1锭银子,我一直包在手帕里,怕丢失,一直没有拿出来。于是,国王命令将第三个仆人的1锭银子赏给第一个仆人,说:凡是少的,就连他所有的,也要夺过来。凡是多的,还要给他,叫他多多益善,这就是马太效应,反应当今社会中存在的一个普遍现象,即赢家通吃。对企业经营发展而言,马太效应告诉我们,要想在某一个领域保持优势,就必须在此领域迅速做大。当你成为某个领域的领头羊时,即便投资回报率相同,你也能更轻易地获得比弱小的同行更大的收益。而若没有实力迅速在某个领域做大,就要不停地寻找新的发展领域,才能保证获得较好的回报。

5、零和游戏原理

  零和游戏是指一项游戏中,游戏者有输有赢,一方所赢正是另一方所输,游戏的总成绩永远为零,零和游戏原理之所以广受关注,主要是因为人们在社会的方方面面都能发现与零和游戏类似的局面,胜利者的光荣后面往往隐藏着失败者的辛酸和苦涩。 20世纪,人类经历两次世界大战、经济高速增长,科技进步、全球一体化以及日益严重的环境污染,零和游戏观念正逐渐被双赢观念所取代。人们开始认识到利已不一定要建立在损人的基础上。通过有效合作皆大欢喜的结局是可能出现的。但从零和游戏走向双赢,要求各方面要有真诚合作的精神和勇气,在合作中不要小聪明,不要总想占别人的小便宜,要遵守游戏规则,否则双赢的局面就不可能出现,最终吃亏的还是合作者自己。

6、华盛顿合作规律

  华盛顿合作规律说的是一个人敷衍了事,两个人互相推诿,三个人则永无成事之日。多少有点类似于我们三个和尚的故事。人与人的合作,不是人力的简单相加,而是要复杂和微妙得多。在这种合作中,假定每个人的能力都为1,那么,10个人的合作结果有时比10大得多,有时,甚至比1还要小。因为人不是静止物,而更像方向各异的能量,相互推动时,自然事半功倍,相互抵触时,则一事无成。 我们传统的管理理论中,对合作研究得并不多,最直观的反映就是,目前的大多数管理制度和行为都是致力于减少人力的无谓消耗,而非利用组织提高人的效能。换言之,不妨说管理的主要目的不是让每个人做得更好,而是避免内耗过多。

7、手表定理

  手表定理是指一个人有一只表时,可以知道现在是几点钟,当他同时拥有两只表时,却无法确定。两只手表并不能告诉一个人更准确的时间,反而会让看表的人失去对准确时间的信心。手表定理在企业经营管理方面,给我们一种非常直观的启发,就是对同一个人或同一个组织的管理,不能同时采用两种不同的方法,不能同时设置两个不同的目标,甚至每一个人不能由两个人同时指挥,否则将使这个企业或这个人无所适从。手表定理所指的另一层含义在于,每个人都不能同时选择两种不同的价值观,否则,你的行为将陷于混乱。

8、不值得定律

  不值得定律最直观的表述是:不值得做的的事情,就不值得做好。这个定律再简单不过了,重要性却时时被人们忽视遗忘。不值得定律反映人们的一种心理,一个人如果从事的是一份自认为不值得做的事情,往往会保持冷嘲热讽,敷衍了事的态度,不仅成功率低,而且即使成功,也不觉得有多大的成就感。 因此,对个人来说,应在多种可供选择的奋斗目标及价值观中挑选一种,然后为之奋斗。选择你所爱的,爱你所选择的,才可能激发我们的斗志,也可以心安理得。而对一个企业或组织来说,则要很好地分析员工的性格特性,合理分配工作,如让成就欲较强的职工单独或牵头完成具有一定风险和难度的工作,并在其完成时,给予及时的肯定和赞扬;让依附欲较强的职工,更多地参加到某个团体*同工作;让权力欲较强的职工,担任一个与之能力相适应的主管。同时要加强员工对企业目标的认同感,让员工感觉到自己所做的工作是值得的,这样才能激发职工的热情。

9、蘑菇管理

  蘑菇管理是许多组织对待初出茅庐者的一种管理方法,初学者被置于阴暗的角落(不受重视的部门,或打杂跑腿的工作),浇上一头大粪(无端的批评、指责、代人受过),任其自生自灭(得不到必要的指导和提携)。相信很多人都有过这样一段蘑菇的经历,这不一定是什么坏事,尤其是当一切刚刚开始的时候,当几天蘑菇,能够消除我们很多不切实际的幻想,让我们更加接近现实,看问题也更加实际。一个组织,一般对新进的人员都是一视同仁,从起薪到工作都不会有大的差别。无论你是多么优秀的人才,在刚开始的时候,都只能从最简单的事情做起,蘑菇的经历,对于成长中的年轻人来说,就象蚕茧,是羽化前必须经历的一步。所以,如何高效率地走过生命的这一段,从中尽可能汲取经验,成熟起来,并树立良好的值得信赖的个人形象,是每个刚入社会的年轻人必须面对的课题。

10、奥卡姆剃刀定律

  12世纪,英国奥卡姆的威廉主张唯名论,只承认确实存在的东西,认为那些空洞无物的普遍性概念都是无用的累赘,应当被无情地剃除。他主张如无必要,勿增实体。这就是常说的奥卡姆剃刀。这把剃刀曾使很多人感到威胁,被认为是异端邪说,威廉本人也因此受到迫害。然而,并未损害这把刀的锋利,相反,经过数百年的岁月,奥卡姆剃刀已被历史磨得越来越快,并早已超载原来狭窄的领域,而具有广泛、丰富、深刻的意义。奥卡姆剃刀定律在企业管理中可进一步演化为简单与复杂定律:把事情变复杂很简单,把事情变简单很复杂。这个定律要求,我们在处理事情时,要把握事情的主要实质,把握主流,解决最根本的问题,尤其要顺应自然,不要把事情人为地复杂化,这样才能把事情处理好。

posted @ 2007-04-03 20:51 MEYE 阅读(3724) | 评论 (1)编辑 收藏



 

Eclipse及其插件下载网址大全

1  Eclipse下载
EMF,GEF - Graphical Editor Framework,UML2,VE - Visual Editor都在这里下载
http://www.eclipse.org/downloads/index.php

2  lomboz J2EE插件,开发JSP,EJB
http://forge.objectweb.org/projects/lomboz

3  MyEclipse J2EE开发插件,支持SERVLET/JSP/EJB/数据库操纵等
http://www.myeclipseide.com

4  Properties Editor  编辑java的属性文件,并可以自动存盘为Unicode格式
http://propedit.sourceforge.jp/index_en.html

5  Colorer Take  为上百种类型的文件按语法着色
http://colorer.sourceforge.net/

6  XMLBuddy 编辑xml文件
http://www.xmlbuddy.com

7  Code Folding  加入多种代码折叠功能(比eclipse自带的更多)
http://www.coffee-bytes.com/servlet/PlatformSupport

8  Easy Explorer  从eclipse中访问选定文件、目录所在的文件夹
http://easystruts.sourceforge.net/

9  Fat Jar 打包插件,可以方便的完成各种打包任务,可以包含外部的包等
http://fjep.sourceforge.net/

10  RegEx Test 测试正则表达式
http://brosinski.com/stephan/archives/000028.php

11  JasperAssistant 报表插件(要钱的哦~)
http://www.jasperassistant.com/

12  Jigloo GUI Builder JAVA的GUI编辑插件
http://cloudgarden.com/jigloo/

13  Profiler 性能跟踪、测量工具,能跟踪、测量B/S程序
http://sourceforge.net/projects/eclipsecolorer/

14  AdvanQas 提供对if/else等条件语句的提示和快捷帮助(自动更改结构等)
http://eclipsecolorer.sourceforge.net/advanqas/index.html

15  Log4E Log4j插件,提供各种和Log4j相关的任务,如为方法、类添加一个logger等
http://log4e.jayefem.de/index.php/Main_Page

16  VSSPlugin VSS插件
http://sourceforge.net/projects/vssplugin

17  Implementors 提供跳转到一个方法的实现类,而不是接口的功能(实用!)
http://eclipse-tools.sourceforge.net/implementors/

18  Call Hierarchy 显示一个方法的调用层次(被哪些方法调,调了哪些方法)
http://eclipse-tools.sourceforge.net/call-hierarchy/index.html

19  EclipseTidy 检查和格式化HTML/XML文件
http://eclipsetidy.sourceforge.net/

20  Checkclipse 检查代码的风格、写法是否符合规范
http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm

21  Hibernate Synchronizer Hibernate插件,自动映射等
http://www.binamics.com/hibernatesync/

22  VeloEclipse  Velocity插件
http://propsorter.sourceforge.net/
 
23  EditorList 方便的列出所有打开的Editor
http://editorlist.sourceforge.net/
 
24  MemoryManager 内存占用率的监视
http://cloudgarden.com/memorymanager/
 
25  swt-designer java的GUI插件
http://www.swt-designer.com/
 
26  TomcatPlugin 支持Tomcat插件
http://www.sysdeo.com/eclipse/tomcatPlugin.html
 
27  XML Viewer
http://tabaquismo.freehosting.net/ignacio/eclipse/xmlview/index.html
 
28  quantum 数据库插件
http://quantum.sourceforge.net/
 
29  Dbedit 数据库插件
http://sourceforge.net/projects/dbedit
 
30  clay.core 可视化的数据库插件
http://www.azzurri.jp/en/software/index.jsp
http://www.azzurri.jp/eclipse/plugins
 
31  hiberclipse hibernate插件
http://hiberclipse.sourceforge.net
http://www.binamics.com/hibernatesync
 
32  struts-console Struts插件
http://www.jamesholmes.com/struts/console/
 
33  easystruts Struts插件
http://easystruts.sourceforge.net
 
34  veloedit Velocity插件
http://veloedit.sourceforge.net/
 
35  jalopy 代码整理插件
http://jalopy.sourceforge.net/
 
36  JDepend 包关系分析
http://andrei.gmxhome.de/jdepend4eclipse/links.html
 
37  Spring IDE Spring插件
http://springide-eclip.sourceforge.net/updatesite/
 
38  doclipse 可以产生xdoclet 的代码提示
http://beust.com/doclipse/

39  SQLExplorer,在Eclipse 中连接各种数据库进行操作使用
http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=124&threadID=31124


40 Eclipse 插件Implementors 在Eclipse 中的使用。
问题提出:
  如果你想看看某个类或者方法的实现,一般是Ctrl + 鼠标左键,单击即可以打开这个类或者方法的具体实现代码。但是如果碰到接口时,只是到达接口而已,不能到达具体的实现类里。
解决方法:利用Eclipse 的Implementors 插件。
  当追踪方法代码时,Eclipse 默认是转到方法的接口类,而接口中是只有方法名称没有具体的实现代码,此插件提供了追踪到具体实现类的实现代码的功能。
  另外还有Call Hierarchy 插件: 显示一个方法的调用层次,可以从中看到它被哪些方法调用了,以及它调用了哪些方法,是代码追踪比较实用的工具。Eclipse 3.1 中已经自带有这个功能了。这个插件就不用另加介绍了。
下载地址:
http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=124&threadID=30441
或者
http://www.cjsdn.net/post/view?bid=7&id=165547&sty=1
Eclipse插件之SQLExplorer- -

本文介绍如何利用Eclipse 插件SQLExplorer 在Eclipse 中连接各种数据库进行操作使用。
Eclipse 是目前非常流行的开发平台,开放扩展的架构让很多程序员找到了自己个性化的工作环境。
下载地址:
http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=124&threadID=31124
或者
http://www.cjsdn.net/post/view?bid=7&id=164702&sty=1

    用links方法加载Eclipse插件
    eclispe想必大家都很熟悉了,一般来说,eclipse插件都是安装在plugins目录下。不过这样一来,当安装了许多插件之后,eclipse变的很大,最主要的是不便于更新和管理众多插件。用links方式安装eclipse插件,可以解决这个问题。
        当前配置XP SP1,eclipse3.0.1
        现在假设我的eclipse安装目录是D:\eclipse,待安装插件目录是D:\plug-in ,我将要安装LanguagePackFeature(语言包)、emf-sdo-xsd-SDK、GEF-SDK、Lomboz这四个插件。
        先把这四个插件程序全部放在D:\plug-in目录里,分别解压。如Lomboz3.0.1.zip解压成Lomboz3.0.1目录,这个目录包含一个plugins目录,要先在Lomboz3.0.1目录中新建一个子目录eclipse,然后把plugins目录移动到刚建立的eclipse目录中,即目录结构要是这样的:D:\plug-in\Lomboz3.0.1\eclipse\plugins
Eclipse 将会到指定的目录下去查找 eclipse\features 目录和eclipse\plugins 目录,看是否有合法的功能部件和(或)插件。也就是说,目标目录必须包含一个 \eclipse 目录。如果找到,附加的功能部件和插件在运行期配置是将是可用的,如果链接文件是在工作区创建之后添加的,附加的功能部件和插件会作为新的配置变更来处理。
         其它压缩文件解压后若已经包含eclipse\plugins目录,则不需要建立eclipse目录。
         然后在 eclipse安装目录D:\eclipse目录中建立一个子目录links,在links目录中建立一个link文件,比如 LanguagePackFeature.link,改文件内容为  path=D:/plug-in/LanguagePackFeature  即这个link文件要对应一个刚解压后的插件目录。
说明:
     1. 插件可以分别安装在多个自定义的目录中
     2. 一个自定义目录可以安装多个插件。
     3. link文件的文件名及扩展名可以取任意名称,比如ddd.txt,myplugin都可以。
     4. link文件中path=插件目录的path路径分隔要用\\或是/
     5. 在links目录也可以有多个link文件,每个link文件中的path参数都将生效。
     6. 插件目录可以使用相对路径。
     7. 可以在links目录中建立一个子目录,转移暂时不用的插件到此子目录中,加快eclipse启动。
     8.  如果安装后看不到插件,把eclipse 目录下的configuration目录删除,重启即可。



jadclips插件网站:http://jadclipse.sourceforge.net/
一、下载:
 下载插件:
   下载jadclipse_3.1.0.jar版本,该版本支持eclipse3.1M6以上
   下载jadclipse_3.2.0.jar版本,该版本支持eclipse3.2M3和eclipse3.2M4。
   下载jadclipse_3.2.2.jar版本,该版本支持eclipse3.2M5以上。
 下载Jad反编译工具:
   http://www.kpdus.com/jad.html#download,在该页中找到适合自己操作系统平台的jad下载。下载后解压,然后将解压后的jad.exe文件复制到%JAVA_HOME%\BIN目录下面(可以将jad.exe随便放到哪,只要记住路径就好,下面要用到)。
二、安装:
   方法1、直接将jadclipse_3.1.0.jar复制到%ECLIPSE_HOME%\plugins目录下。
   方法2、使用link方式安装,建立E:\eclipse3.1plugins\jadclipse3.1.0\eclipse\plugins的目录结构,将jadclipse_3.1.0.jar放到plugins目录下面(注:其中E:\eclipse3.1plugins为你自己定义的一个专门放置插件的目录)。再在%ECLIPSE_HOME%\links目录下面建立一个jadclipse3.1.0.link文件(该文件名随便取,保证后缀为.link就OK).文件里面内容为:path=E:\\eclipse3.1plugins\\jadclipse3.1.0。
   启动eclipse,打开Window->Preferences->Java->JadClipse,如果没有找到JadClipse,检查插件安装的版本是否与你安装的eclipse版本对应。我安装的eclipse是:eclipse3.1.2
三、设置参数:
   启动eclipse,打开:Window->Preferences->Java->JadClipse。
   1、Path to decompiler,这里设置反编译工具jad的全路径名,比如:%JAVA_HOME%\bin\jad.exe。
   2、Directory for temporary files,这里设置临时文件路径。
   至于Window->Preferences->Java->JadClipse目录下的Debug,Directives,Formatting,Misc目录中的参数设置,就不罗嗦。
四、安装完成后,eclipse自动将JadClipse Class File Viewer设置成class文件的缺省打开方式。如果没有默认,可以在Eclipse的Windows--> Perference-->General->Editors->File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer”。设置完成后,双击*.class文件,eclipse将自动反编译。

注: 对于存在源代码的类,它不会强行反编译,也就是说它还是会用eclipse自带的Class File Viewer查看class文件




 log4j.rootLogger=DEBUG,CONSOLE,A1,im
 log4j.addivity.org.apache=true

 # 应用于控制台

 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 log4j.appender.Threshold=DEBUG
 log4j.appender.CONSOLE.Target=System.out
 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
 log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
 #log4j.appender.CONSOLE.layout.ConversionPattern=
[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n

 #应用于文件

 log4j.appender.FILE=org.apache.log4j.FileAppender
 log4j.appender.FILE.File=file.log
 log4j.appender.FILE.Append=false
 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
 log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
 # Use this layout for LogFactor 5 analysis

 # 应用于文件回滚

 log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
 log4j.appender.ROLLING_FILE.Threshold=ERROR
 log4j.appender.ROLLING_FILE.File=rolling.log  //文件位置,也可以用变量${java.home}、rolling.log
 log4j.appender.ROLLING_FILE.Append=true       //true:添加  false:覆盖
 log4j.appender.ROLLING_FILE.MaxFileSize=10KB   //文件最大尺寸
 log4j.appender.ROLLING_FILE.MaxBackupIndex=1  //备份数
 log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
 log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


 #应用于socket
 log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
 log4j.appender.SOCKET.RemoteHost=localhost
 log4j.appender.SOCKET.Port=5001
 log4j.appender.SOCKET.LocationInfo=true
 # Set up for Log Facter 5
 log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
 log4j.appender.SOCET.layout.ConversionPattern=
[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n


 # Log Factor 5 Appender
 log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
 log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

 # 发送日志给邮件

 log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
 log4j.appender.MAIL.Threshold=FATAL
 log4j.appender.MAIL.BufferSize=10
 log4j.appender.MAIL.From=test@sina.com.cn
 log4j.appender.MAIL.SMTPHost=smtp.sina.com.cn
 log4j.appender.MAIL.Subject=Log4J Message
 log4j.appender.MAIL.To=test@sina.com.cn
 log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
 log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

 # 用于数据库
 log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
 log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
 log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
 log4j.appender.DATABASE.user=root
 log4j.appender.DATABASE.password=
 log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
 log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
 log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


 log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.A1.File=SampleMessages.log4j
 log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
 log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout

 #自定义Appender

 log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender

 log4j.appender.im.host = mail.cybercorlin.net
 log4j.appender.im.username = username
 log4j.appender.im.password = password
 log4j.appender.im.recipient = test@test.com

 log4j.appender.im.layout=org.apache.log4j.PatternLayout
 log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n




netBeans不仅可以编辑java甚至可以编辑c/c++.今天又发现netBeans还有javascript和css编辑器。dreamweaver可以很好的编辑css可是对javascript的支持却不是很强大。

第一步

工具->选项->高级选项->IDE配置->系统->自动更新类型
在上面单击右键,选择“新建”->一般更新中心
输入一个名字,比如“javascriptAndCss”(这个自己随便写),然后确定。你会发现在自动更新类型下面多出了我们刚建立的项目,单击它,在右面的设置里面将服务器url 里填入
http://www.liguorien.org/download/jseditor/updates.xml
关闭

第二步

工具->选项->更新中心->选中javascriptAndCss ->下一步

        过一会儿就会出现javascript和css插件,选择添加,然后下一步,接下来重启netBeans就可以使用了







posted @ 2007-04-03 20:19 MEYE 阅读(3908) | 评论 (0)编辑 收藏

网络工程师必看书籍和知识要点 

http://www.54bk.com/user1/5139/archives/2006/20069354940.html


网络知识是电脑技术的十分重要的分支,除了网络之外,我们有更多更广的知识当然好。即使不愿意承认,我们也必须认可这样一点,那就是有些知识对于通过网工考试几乎没有用。举一个例子:哪怕是对ASP精通无比,对于你通过网工考试的上下午试题几乎没有任何帮助。
   
    网工考试和大部分英语水平考试一样,几乎没有办法通过突击专攻或者参加短期培训班来提高水平,主要只能依靠自己平时扎实的积累。有好多朋友都问,具体该如何复习。那么我们就尝试着讨论一下,哪些资料在我们学习范围之内,不过有一点必须声明,此处主要针对的是网工考试。

    考试资料的主流永远是书籍,我个人这些书籍的来源除有部分是买的外,绝大部分都是学校图书馆查阅的。因此,我强烈建议有这个条件的同志多多利用这个资源,毕竟还是那句古话:“书非借不能读也”。要是个人经济情况允许的话,多买些好书也是不错的选择。还有就是,没有哪个说以下这些书绝对就是好的,关键是要根据个人的情况来选择。感觉适合自己,那就是好的;感觉不适合自己,那么别人再多的人说好,对你来说那也是垃圾。
    好了,废话少说,我就列出如下一些书籍和其他资料的来源:   

1、《网络工程师教程》;必看,当作指导性的大纲来看,它可以使你网络知识的结构更加清晰与合理。由于教程不完全覆盖考试内容,获取其他资料作为知识的深化和补充是绝对必须的,下面的推荐与大纲介绍的基本同步。

2、《数据通信原理》;包括通信原理和交换技术的内容,在上午肯定有一二道大题,只看教程不够。对这本书不一定看得太深,即使没有任何基础通上一两遍也不困难,可以让你提高一大步。这部分相关的内容还包括《信号与系统》,不想做硬件的朋友我觉得就不用看了。

3、网络体系结构和协议;这部分看教程即可。另外,作为教材的参考书,建议两本书,这两本书的名字都叫《计算机网络》,目前都已经发行到第四版了,只不过一本是清华大学出版社出版的,一本是由电子工业出版社出版的。后一本的作者是谢希仁。前一本的知识点介绍的比较深一点、广一点,和网工考试相对结合要紧密一些,比较适合有一定基础的考生;后一本相对来说介绍的要通俗易懂一些,比较适合初学者或是基础不是很扎实的人。

4、局域网技术;先看教程,然后找一本CCNA英文教材看一遍。这样有三个好处:比教程更深入;同时提高专业英语水准;顺便学习CISCO路由器和交换机的基础知识。

5、广域网技术看教程;这部分ATM是重点,需要找别的资料深化一下(因为它流行,如CISCO流行一个道理)。另外广域网的基本组网原理还是要弄清楚,再就是其用到的基本协议等,了解就行了。

6、网络互连;先看教程。路由方面的知识教程上不够,建议有Linux环境,看看UNIX系统中的路由配置。CCNP的教程不必要全看,路由和交换看看就行,中文的也可以。
7、网络操作系统;如上,研究linux就可以。上午题目里面会有。

8、网络管理;前面对局域网的管理部分非常好,是每一个网络管理员都应该耳熟能详的经验。后面的SNMP不太深,但是也差不多够了。

9、网络安全;教程很概念化,如果想深入一点,看看《计算机密码学》,对加密技术能有更多感性认识(如RSA的加密、解密原理),但不用太深入。如果有条件,还可以感受一下win2000在安全方面对身份认证,鉴别,访问控制等技术的具体实现。我觉得其中有两个重要问题,访问控制和防火墙,但是这两年都没考,最好结合Cisco的学习去深化一下。


10、后面章节的内容光看教程还是不行的。建议多上网查找相关项目资料和实践技术文档补充。此部分涉及到的实践知识和项目环境在下午的考试题中出现的频率还是比较高的,不过总的来说还是对考生综合运用技能和知识能力的考核。一句话--还是看大伙对前面知识掌握的如何。

11、Linux教程必看,包括各种网络服务的配置(WWW,FTP),CGI现在不太时髦,可以不用看。另外如果有时间,把《网络操作系统》看一遍也很不错。

12、网络程序设计,只要有相当C语言能力,越高越好,不需要C++(有的话更好),在Linux环境下,学习socket就可以,书方面看UNIX或LINUX网络程序设计都可以,置顶帖子里的UNIX网络程序设计是我看过的最好的。这方面的资料最好从网上下载,不过书店也有的卖,要根据自己的实际情况来,我好象看到书店有一本铁道出版社出版了一本这样的书,看起来不错。

13、网设教程有一本配套的同步辅导,作一遍也好,但感觉没有本质进步,另外有一本网络设计师重点分析,潜臼楦挥茫ㄓ谐樱U嬲耐ぬ饽客枰愕淖酆夏芰Γ芄辉擞米约焊鞣矫娴幕≈督饩鑫侍猓热?001年上午题目有一个有关路由表的问题。

14、如果感觉专业英语有欠缺,可以找一本清华的《计算机英语》,不过这不是专门面向网络英语的,可以考虑从www.mcseguide.com订阅一份CCNA的邮件,既能学英语,又能做做题目。网上其他计算机英语读物,或是英文网站都不错,自己动手去找找,绝对可以丰衣足食。

15、越多的实践对你帮助越大,能在一个单位作网络管理最好啦。没有机会就尽量创造机会啦。如果时间和金钱允许的话,建议去参加CCNA培训,这样是最好的。最没有办法的办法那就是象我一样,疯狂的积累理论知识,当积累到一定程度后,对付考试中的实践题还是绰绰有余的!

16、多了解目前一些最流行的网络新技术(如,WAP、CDMA、PHS、GPRS等等),这方面具体的知识最好是到网上查找。

17、一定要善于利用网络资源,
posted @ 2007-04-02 22:19 MEYE 阅读(415) | 评论 (0)编辑 收藏
你的定位,你的一生--解读IT人从业方向(转感觉个人想法居多只能作为参考)
一、关于企业计算方向

  企业计算(Enterprise Computing)是稍时髦较好听的名词,主要是指企业信息系统如:ERP 软件(企业资源规划)、CRM 软件(客户关系管理)、SCM 软件(供应链管理,即物流软件),银行证券软件财务软件电子商务/政务(包括各种网站),数据仓库,数据挖掘,商务智能等企业信息管理系统。

  企业计算领域对人才的需求显然永远是数量最大的因为这是计算机应用最多的领域。搞这方面的好处是:

  (1)人才需求量极大从事企业计算的公司在IT企业中占了大多数。除非在专业上一无特长一般在这一领域总能找到工作。

  (2)这方面的入门门槛相对较低(如果你的软件功底不是很深可考虑这一领域)

  (3)这方面的大公司较多大公司要赚大钱所以多将精力花在企业计算业务上.如与正规高校软件学院同学目前实习的CitiCorp、HP、IBM、SAP、NEC等公司都属这一领域的公司。如果将来想到大公司找一份相对稳定的工作,从事这方面机会要大很多。

  但从事这一领域的缺点也是明显的:

  由于这方面的入门门槛相对较低,虽然这方面的人才需求量是最大的,但将来竞争对手会较多。您会发现,即使他原不是学IT专业的人,也许他突击几个月后,做得照样像模像样。特别是当您年纪渐大后,您可能会发现,后面的年轻人可能很容易追上你的水平。如果您将来到国外去工作,你可能会发现从事这领域的人更多且高手如云。当然,若您在这一领域经过多年企业经验,达到较高境界(如能设计软件架构),则身价永远是高的。国内在这方面人才领域的主要问题是,有经验的高手太少,皮毛了解的人太多。

  从事企业计算领域,最重要的技能型技术课程是

  (1) J2EE架构与程序设计

  (2) 大型数据库系统(如Oracle)

  (3) 基于UML的系统分析与设计。

  如果说还有什么重要的技能,还可将XML与Web Service技术包含进来,若您在这几个领域掌握较好,则不愁找不到工作。其中尤其以J2EE最为重要,目前J2EE已成为企业计算软件开发的最主要平台,也是正规高校软件学院的最重要课程之一。

  尽管该课程只能作为选修课,我们希望正规高校软件学院同学无论将来想从事何种方向,都应学一下J2EE课程,至少可为将来找工作备一手关键功夫。包括想从事嵌入式或其它领域的同学,也是很有必要学一下J2EE的,毕竟J2EE是目前最重要的平台之一,即使您将来不想从事企业计算领域,了解一下J2EE也是必要的,就像一门常识课程一样。

  其它与企业计算关系较密切的技能还包括: Dot Net架构与程序设计、软件测试技术、软件配置管理,该领域较高层次的技能包括数据仓库技术、构件与中间件技术、设计模式等。像通信协议分析与网络程序设计,Unix系统管理等也属有些关系的课程。02级本学期开设的企业计算课程不多,主要是J2EE、Oracle/MSSQL、UML等企业计算领域的最关键技能型技术课程都已学完了。

  您应在空余时间将J2EE,DB、UML等技术再深入地钻研下去,一定要在某个领域有深入的掌握。只是跟着听课,即使学了再多课程也是没用处的,自己钻研下去才是最重要的。只一个J2EE便是博大精深的,足够你啃下去的,钻研下去,您会发现你还要学的相关知识还有很多(包括EJB、XML、Web Service、Design Pattern等)。

  虽然从事企业计算的人才很多,但以下企业计算领域无论国内外都属稀缺人才:

  (1) 掌握大型ERP系统,主要是SAP系统,包括SAP Basis(系统管理)或SAP ABAP(编程)或SAP功能模块实施(特别是财务模块FI的实施)。SAP顾问身价是最高的,而且非常难找。其它大型ERP系统,掌握PeopleSoft、Oracle Finacial、J.D.Edward、Siebel等大型ERP软件系统的人也很值钱。这方面的人之所以身价奇高,主要是因为这些软件很专业,特别大,很难有D版可学习,只有特大企业(如世界500强,90以上使用SAP)才用得起,而且必须有实际工作经验才能掌握。如果是一个个人人都很容易有机会接触的软件,那么这方面的人通常就不会稀缺。如果大家将来有机会接触学习这些大型ERP软件系统的机会,建议毫不犹豫地抓住,那将捧上一辈的金饭碗。

  在国外,会SAP的人特别值钱。物以稀为贵,这永远是颠扑不破的真理。SAP的价值不仅是因为他是一个ERP软件, 而是其中体现的现代企业管理理念(如根据订货需求自动安排原料采购和生产计划等)。一般500强公司绝不会像国内很多企业那样,用J2EE从头设计企业的ERP系统(即将是怎样的人力投入,而且设计出来的系统怎么可能是完善的),一定都会使用SAP这样成熟的ERP软件。用不起SAP的公司可能会用J2EE设计ERP系统。

  (2) 掌握IBM大型机技术的人,如S/390主机,MVS操作系统,JCL作业控制语言,COBOL程序设计语言,DB2关系数据库或IMS层次数据库,CISC中间件交易控制系统等IBM大型机专用技术。国内五大银行,以及国外绝大多数银行的后台系统使用的都是以上平台。IBM大型机号称永不宕机而且平台相对封闭(这样最安全),所以这些要求在24*7环境中连续运行的关键应用(术语叫mission critical applications)都采用IBM大型机。

  这方面的人才之所以稀缺,是因为会大型机的人都是老人(90年代以前搞IT的人),全世界新毕业的IT毕业生不可能再去学IBM大型机(这是一种相对“古老“的技术)没有新人补上而银行的系统必须维持下去而且银行还要不断开发新业务(如新的存款品种)虽然对IBM大型机人才的绝对需求量不很大但相对恒定银行到哪里找这方面的新人很难找到. 若好找花旗软件也不会花那么大的代价去培训我们的实习同学了(去年培训20多个人听说公司就花了数十万元培训费). 如果您将来到国外找工作会IBM大型机可能是最好找工作的领域之一了而且保证找的都是大银行等好工作我以前教过的计算机专业90-94级的一些同学凡是毕业后从事大型机开发的现多在国外一些很好的公司工作(有几位同学在各国各公司跳来跳去简直如履平地).

  其实我觉得我们最幸福的同学就是在花旗软件做IBM大型机银行软件的同学这样的机会太难得了.正规高校软件学院00级22班一位同学当初放弃保研看准在花旗软件做大型机并且非常努力还未毕业公司便派她到国外参加一个项目的开发成了项目骨干我觉得她当初选择是完全正确的,01级一位女同学刚刚也自愿放弃了保研机会去花旗做大型机,我们祝愿她将来也能有好的前景。其实像花旗软件主动安排并鼓励员工读在职研究生,这样开明的公司目前并不多的,在职读研也是一种不错的选择,又不会失去自己喜欢的实习工作机会,能兼顾)读书的最终目地还是为了工作. 如果您将来在国外找工作根本没人管您是什么文凭国外企业绝不会花冤枉钱只会招有领域工作经验能立即上手的人用最少的钱在限定的时间完成项目. 而在国内因为人力成本较低公司招聘一很多高学历的人才尽管可能根本用不到这么高的学历但国内的人力太便宜了为什么不高消费一下人才呢这样公司的门面还要好看些。

  (3) 其它如掌握数据仓库技术的人在国内也很少. 目前最主流的数据仓库平台应是ORACLE的数据仓库工具. 在国外会一些特殊数据仓库的人如NCR/TEREDATA的人非常难找.

  年轻人充满热情喜欢追逐一些热门技术,这当然正确的毕竟学习SAP和大型机的机会毕竟不多毕业时先能找到一份工作是重要的. 但我相信随着年纪的增长大家将来慢慢都会思考的掌握一项竞争对手较少的绝技的重要性将来如果自己到国外工作什么技术最好找工作(对搞软件的人到国外工作或移民是最容易的也许您现在不想但我相信工作多年以后很大一部分同学可能想到国外闯荡一下)你要考虑你今后一生的出路什么样的绝技是最稳定最轻松最高收入的. 搞软件的人当年纪大些时您可能更向住像搞医学人的那样能更多靠经验吃饭而不须整天像年轻人那样不得不去追逐不断出现的软件新技术这个时候也许您也许会发现如果您在SAP或大型机等方面有些绝技您会有很大优势因为这些较偏的领域其技术变化是相对很缓慢的.

  我还记得在2002年时我曾在业余时间与一位德国人合作面试一些IT人才到德国去那时德方各公司发来的需求有很多是SAP和IBM大型机的我们在众多应聘者中最后也未找到一个在这方面有经验甚至是有一点经验的. 相反掌握流行技术的人因太多而不很值钱.

  找工作时不仅要盯着国内市场还要有一种放眼全球的眼光,对搞软件的人您将来完全可能到其它国家去工作. 尤其是在欧美、日本、新加坡等国家,对SAP(包括IBM大型机)人才的需求是很大的。毕竟比同学见得多些提醒同学将来多留意有学习这些绝技的机会一旦有机会建议当仁不让. 国内的人才市场可访问www.51job.com,国外的IT人才需求可访问www.hotjobs.com、www.workopolis.com、www.monster.com等著名网站。应经常访问这些网站,以了解市场对人才的具体需求,早做准备。 www.uiok.net

  以上对企业计算领域的观点供大家参考.虽然观点未必正确但确是直言不讳. 总之每个人的脑袋都长在自己脖子上每个人都应有自己的判断.

  还要注意我以上纯粹是从将来就业的角度谈问题. 如果您将来准备到国外读书则应重视基础课像CAssemblyOOPDiscrete MathData StructureOpeating SystemDatabase PrincipleNetworkSoftware EngineeringCompilerDigital CircuitComputer GraphicsComputer Component and Architecture等基础课在国外大学IT专业中一般都能找到相同课程若国内学过到国外读书时一般可申请免修一部分. 但我也想提醒同学如果您将来毕业时万一申请国外大学不成不得不去找工作时,若只将精力花在这些IT专业学生都会的基础课上(传统IT教育模式) 未掌握一些像J2EE等技能型技术是不容易找到一份工作的我们已有同学有这样的教训。从找工作的角度讲,企业关心的不是您学过什么课程,而是关心您能做什么,有什么技能,能做什么项目。

  二、关于嵌入式系统方向

  嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电刂葡低场⒁搅埔瞧鳌⒑教旌娇丈璞傅鹊榷际堑湫偷那度胧较低场?

  嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类。

  一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、Board Support Package(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)。

  另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有“花头“可做的),所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。

  从事嵌入式软件开发的好处是:

  (1) 目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业IT人员很难切入这一领域另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如ARM处理器、嵌入式操作系统、MPEG技术、无线通信协议等),掌握这些新技术的人当然很找。嵌入式人才稀缺,身价自然就高,越有经验价格就越高。其实嵌入式人才稀少根本原因可能是大多数人无条件接触这需要相应的嵌入式开发板和软件另外需要有经验的人进行指导开发流程。

  (2) 与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。搞企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个用户的需求和完成时间都得按客户要求改变,往往疲于奔命,重复劳动。相比而言,搞嵌入式系统的公司,都有自己的产品计划,按自己的节奏行事。所开发的产品通常是通用的,不会因客户的不同而修改。一个产品型号开发完了,往往有较长一段空闲时间(或只是对软件进行一些小修补),有时间进行充电和休整。另外,从事嵌入式软件的每个人工作范围相对狭窄,所涉及的专业技术范围就是那些(ARM、RTOS、MPEG、802.11等),时间长了这些东西会越搞越有经验,卖卖老本,几句指导也够让那些初入道者琢磨半年的。若搞应用软件,可能下一个客户要换成一个完全不同的软件开发平台,那就苦了。

  (3) 哪天若想创业,搞自已的产品,那么嵌入式是一个不错的主意,这可不像应用软件那样容易被盗版。土木学院有一个叫启明星的公司开发出一个好象叫“工程e”的掌上PDA,施工技术人员用该PDA可当场进行土木概预算和其它土木计算,据说销路特好。我认识的某大学老师,他开发的饭馆用的点菜PDA(WinCE平台,可无线连网和上网),据他说销路不错,饭馆点点PDA让客户点菜,多显派头档次。当年有一组同学在学Windows程序设计课程时用VC设计了一个功能很强的点菜系统做为课程项目,当时真想建议他们将这个软件做成PDA,估计会有些销路(上海火车站南广场的Macdonald便使用很漂亮的PDA给用户点食品,像摸像样的)。这些PDA的硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。

  从事嵌入式软件开发的缺点是:

  (1) 入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。

  (2) 这方面的企业数量要远少于企业计算类企业。特别是从事嵌入式的小企业数量较多(小企业要搞自己的产品创业),知名大公司较少(搞嵌入式的大公司主要有Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半导体、Microtek、研华、华为、中兴通信、上广电等制造类企业)。这些企业的习惯思维方式是到电子、通信等偏硬专业找人。由于正规高校软件学院以前毕业生以企业计算为主,所以正规高校软件学院与这些企业联系相对较少。正规高校软件学院正积极努力,目前已与其中部分公司建立了联系,争取今后能有正规高校软件学院同学到这些企业中实习或就业。

  (3) 有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。

  正规高校软件学院同学若学习嵌入式,显然应偏重于嵌入式软件,特别是嵌入式操作系统方面,应是我们的强项。对于搞嵌入式软件的人,最重要的技术显然是(实际上很多公司的招聘广告上就是这样写的):

  (1) 掌握主流嵌入式微处理器的结构与原理

  (2) 必须掌握一个嵌入式操作系统

  (3) 必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目。

  正规高校软件学院在嵌入式软件方面最重要的课程包括:

  (1) 嵌入式微处理器结构与应用:这是一门嵌入式硬件基础课程,正规高校软件学院用这门课取代了传统的“微机原理与接口”课程(目前国内已有少部分高校IT专业这样做了,因为讲x86微机原理与接口很难找到实际用处,只为教学而已)。我们说过,嵌入式是软硬件结合的技术,搞嵌入式软件的人应对ARM处理器工作原理和接口技术有充分了解,包括ARM的汇编指令系统。

  若不了解处理器原理,怎么能控制硬件工作,怎么能写出节省内存又运行高速的最优代码(嵌入式软件设计特别讲究时空效率),怎么能写出驱动程序(驱动程序都是与硬件打交道的)很多公司招聘嵌入式软件人员时都要求熟悉ARM处理器,将来若同学到公司中从事嵌入式软件开发,公司都会给你一本该设备的硬件规格说明书 (xxx Specification),您必须能看懂其中的内存分布和端口使用等最基本的说明(就像x86汇编一样),否则怎么设计软件。有些同学觉得嵌入式处理器课程较枯燥,这主要是硬件课程都较抽象的原因,等我们的嵌入式实验室10月份建好后,您做了一些实验后就会觉得看得见摸得着。还有同学对ARM汇编不感兴趣,以为嵌入式开发用C语言就足够了。其实不应仅是将汇编语言当成一个程序设计语言,学汇编主要是为了掌握处理器工作原理的。一个不熟悉汇编语言的人,怎么能在该处理器写出最优的C语言代码。

  在嵌入式开发的一些关键部分,有时还必须写汇编,如Bootloader等(可能还包括BSP)。特别是在对速度有极高要求的场合(如DSP处理器的高速图像采集和图像解压缩),目前主要还要靠汇编写程序(我看到过很多公司是这样做的)。当您在一个嵌入式公司工作时,在查看描述原理的手册时,可能很多都是用汇编描述的(我就遇到过),这是因为很多硬件设计人员只会写或者喜欢用汇编描述,此时您就必须看懂汇编程序,否则软硬件人员可能就无法交流。很多嵌入式职位招聘时都要求熟悉汇编。

  (2) 嵌入式操作系统类课程

  除了WinCE的实时性稍差外,大多数嵌入式操作系统的实时性都很强所以也可称为实时操作系统Real Time Operating System.从事嵌入式的人至少须掌握一个嵌入式操作系统(当然掌握两个更好)这在嵌入式的所有技术中是最为关键的了。目前最重要的RTOS主要包括:

  第一类、传统的经典RTOS:最主要的便是 Vxworks 操作系统,以及其Tornado开发平台。Vxworks因出现稍早,实时性很强(据说可在1ms内响应外部事件请求),并且内核可极微(据说最小可8K),可靠性较高等,所以在北美,Vxworks占据了嵌入式系统的多半疆山。特别是在通信设备等实时性要求较高的系统中,几乎非Vxworks莫属。Vxworks的很多概念和技术都和Linux很类似,主要是C语言开发。像Bell-alcatel、Lucent、华为等通信企业在开发产品时,Vxworks用得很多。但Vxworks因价格很高,所以一些小公司或小产品中往往用不起。目前很多公司都在往嵌入式Linux转(听说华为目前正在这样转)。但无论如何,Vxworks在一段长时间内仍是不可动摇的。与Vxworks类似的稍有名的实时操作系统还有pSOS、QNX、Nucleus等RTOS。

  第二类、嵌入式 Linux 操作系统:Linux的前途除作为服务器操作系统外,最成功的便是在嵌入式领域的应用,原因当然是免费、开源、支持软件多、呼拥者众,这样嵌入式产品成本会低。Linux本身不是一个为嵌入式设计的操作系统,不是微内核的,并且实时性不强。目前应用在嵌入式领域的Linux系统主要有两类:一类是专为嵌入式设计的已被裁减过的Linux系统,最常用的是uClinux(不带MMU功能),目前占较大应用份额,可在ARM7上跑另一类是跑在ARM 9上的,一般是将Linux 2.4.18内核移植在其上,可使用更多的Linux功能(当然uClinux更可跑在ARM 9上)。

  很多人预测,嵌入式Linux预计将占嵌入式操作系统的50以上份额,非常重要。缺点是熟悉Linux的人太少,开发难度稍大。另外,目前我们能发现很多教材和很多大学都以ucOS/II为教学用实时操作系统,这主要是由于ucOS/II较简单,且开源,非常适合入门者学习实时操作系统原理,但由于ucOS/II功能有限,实用用得较少,所以正规高校软件学院不将其作为教学重点,要学习就应学直接实用的,比如 uClinux就很实用。况且熟悉了Linux开发,不仅在嵌入式领域有用,对开发Linux应用软件,对加深操作系统的认识也有帮助,可谓一举多得。据我所知,目前Intel、Philip都在大搞ARMLINUX的嵌入式开发,Fujitum则是在自己的处理器上大搞Linux开发。目前在嵌入式Linux领域,以下几个方面的人特别难找,一是能将Linux移植到某个新型号的开发版上二是能写Linux驱动程序的人三是熟悉Linux内核裁减和优化的人。正规高校软件学院在该嵌入式Linux方面的课程系列是:本科生操作系统必修课,然后是Linux程序设计选修课,最后是嵌入式Linux系统选修课。正规高校软件学院在Linux方面目前已有较强力量,魏老师和张老师熟悉Linux开发,金老师和唐老师熟悉Linux系统管理。

  第三类、 Windows CE 嵌入式操作系统:Microsoft也看准了嵌入式的巨大市场,MS永远是最厉害的,WinCE出来只有几年时间,但目前已占据了很大市场份额,特别是在PDA、手机、显示仪表等界面要求较高或者要求快速开发的场合,WinCE目前已很流行(据说有一家卖工控机的公司板子卖得太好,以至来不及为客户裁减WinCE)。WinCE目前主要为4.2版(.NET),开发平台主要为WinCE Platform Builder,有时也用EVC环境开发一些较上层的应用,由于WinCE开发都是大家熟悉的VC环境,所以正规高校软件学院学过Windows程序设计课程的同学都不会有多大难度,这也是WinCE容易被人们接受的原因,开发环境方便快速,微软的强大技术支持,WinCE开发难度远低于嵌入式Linux。

  对于急于完成,不想拿嵌入式Linux冒险的开发场合,WinCE是最合适了(找嵌入式Linux的人可没那么好找的),毕竟公司不能像学生学习那样试试看,保证开发成功更重要。根据不同的侧重点 ,WinCE还有两个特殊版本,一个是MS PocketPC操作系统专用于PDA上(掌上电脑),另一个是MS SmartPhone操作系统用于智能手机上(带PDA功能的手机),两者也都属于WinCE平台。

  在PDA和手机市场上,除WinCE外,著名的PDA嵌入式操作系统还有Palm OS(因出现很早,很有名)、Symbian 等,但在WinCE的强劲冲击下,Palm和Symbian来日还能有多长正规高校软件学院可能是全国高校中唯一一家开设专门的“Windows CE嵌入式操作系统“课程的学校,这主要是基于以下原因:正规高校软件学院本身前面便有Windows程序设计课程,同学学过VC后再学WinCE非常方便自然,通过学习WinCE同样也可了解嵌入式软件的一般开发过程,对Linux有惧怕心理的同学也很合适。

  很显然,嵌入式Linux永远不可能替代WinCE,而且将来谁占份额大还很难讲,毕竟很多人更愿意接受MS的平台,就像各国政府都在大力推LINUX已好长时间,但您能看到几个在PC机上真正使用LINUX的用户据我观察目前在嵌入式平台上LINUX是叫得最响但还是WinCE实际用得更多.嵌入式LINUX可能更多地是一些有长远产品计划的公司为降低成本而进行长远考虑 二是微软亚洲研究院对正规高校软件学院WinCE课程的支持计划,我们也很希望将来正规高校软件学院能有同学通过微软的面试去实习。WinCE和多媒体(如MPEG技术)是微软亚洲工程院目前做得较多的项目领域之一他们很需要精通WinCE的人。

  总结关于嵌入式操作系统类课程,若您觉得自己功底较深且能钻研下去,则可去学嵌入式Linux若您觉得自己VC功底较好且想短平快地学嵌入式开发,则正规高校软件学院的WinCE课程是最好的选择。

  (3) 嵌入式开发的其它相关软件课程

  搞嵌入式若能熟悉嵌入式应用的一些主要领域,这样的人更受企业欢迎。主要的相关领域包括:

  A、数字图像压缩技术:这是嵌入式最重要最热门的应用领域之一,主要是应掌握MPEG编解码算法和技术,如DVD、MP3、PDA、高精电视、机顶盒等都涉及MPEG高速解码问题。为此,正规高校软件学院已预订了一位能开设数字图像处理课程的博士。

  B、通信协议及编程技术:这包括传统的TCP/IP协议和热门的无线通信协议。首先,大多数嵌入式设备都要连入局域网或Internet,所以首先应掌握TCP/IP协议及其编程,这是需首要掌握的基本技术其次,无线通信是目前的大趋势,所以掌握无线通信协议及编程也是是很重要的。无结通信协议包括无线局域网通信协议802.11系列,Bluetooth,以及移动通信(如GPRS、GSM、CDMA等)。

  C、网络与信息安全技术:如加密技术,数字证书CA等。正规高校软件学院有这方面的选修课。

  D、DSP技术:DSP是Digital Signal Process数字信号处理的意思,DSP处理器通过硬件实现数字信号处理算法,如高速数据采集、压缩、解压缩、通信等。数字信号处理是电子、通信等硬件专业的课程,对于搞软件的人若能了解一下最好。目前DSP人才较缺。如果有信号与系统、数字信号处理等课程基础,对于学习MPEG编解码原理会有很大帮助。

  (4) 嵌入式开发的相关硬件基础

  对于软件工程专业的学生,从事嵌入式软件开发,像数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程是较重要的。另外,汇编语言、C/C、数据结构和算法、特别是操作系统等软件基础课也是十分重要的。我们的主要目地是能看懂硬件工作原理,但重点应是在嵌入式软件,特别操作系统级软件,那将是我们的优势。

  我们的研究生里有些是学电子、通信类专业过来的,有较好的模拟电路和单片机基础,学嵌入式非常合适。嵌入式本身就是从单片机发展过来的,只是单片机不带OS,而现在很多嵌入式应用越来越复杂,以至不得不引入嵌入式操作系统。另外,为追求更高速的信号处理速度,现在在一些速度要求较高的场合,有不少公司是将一些DSP算法,如MPEG压缩解压缩算法等用硬件来实现,这就涉及到HDL数字电路设计技术及其FPGA/IP核实现技术,这方面的人目前市场上也很缺。

  (5) 题外话

  另外,能写驱动程序的人目前是非常紧缺的(驱动程序也可归于嵌入式范畴),包括桌面Windows中的DDK开发环境和WDM驱动程序。公司每时每刻都要推出新产品,每一个新产品出来了,要能被操作系统所使用,是必须写驱动程序的。写驱动程序就必须掌握操作系统(如Windows或Linux)的内部工作原理,还涉及到少量硬件知识,难度较大,所以这方面的人很难找。想成为高手的同学,也可从驱动程序方面获得突破。

  我可说一下自己的经历,三年前我曾短暂地在一家公司写过WinCE驱动程序(正是因为知道这方面的人紧缺,所以才要做这方面的事),尽管那以前从未做过驱动程序,应聘那个职位时正是看准了公司是很难招聘到这方面的人,既然都找不到人,驱动还得有人做,这正是可能有机会切入这一领域的大好机会。面试时大讲自己写过多少万行汇编程序,对计算机工作原理如何清楚,简历中又写着我曾阅读完两本关于Windows Driver Model的两本英文原版书,写过几个小型的驱动程序练习程序(其实根本没写过,我们的同学将来千万不要像我这样,早练就些过硬功夫,就不至于沦落到我这等地步,就不用像我那样去“欺骗”公司了,我这是一个典型的反面教材),居然一切都PASS(当然最重要的是笔试和面试问题还说得过去),这只能说明这一领域找人的困难程度。公司本就未指望找到搞过驱动的人,找个有相关基础的人就算不错了。做了以后,发现也并不是怎样难的。其实搞驱动程序的工作是很舒服的,搞完一个版本就会空一段时间,只有等公司新的芯片推出或新的OS出现后,才需要再去开发新一版驱动,那时有将近一个月时间空闲着在等WinCE .NET Beta版推出,准备将驱动程序升级到CE .NET上,现在在软件学院工作整日忙,无限怀念那段悠闲时光。

  很巧合,最近本人无意中再次体会到了嵌入式的迷人之处。上周我那用了3年的手机终于不能WORK了。此次更新,除要求有手机常见功能外,最好有MP3功能(现在很多英语听力都有MP3文件),最好有英汉词典,最好还能读WORD文档。最后选了个满足以上条件的最便宜的手机DOPOD 515(斩了我2.2K,但想想这也算自己对嵌入式事业的支持,这样便也想开了),算得上最低档的智能手机了。回来一查,手机的about显示,本手机Processor是ARM,其OS是MS Smartphone(即WinCE .NET 4.2),这么巧合,简直可做为学习嵌入式课程的产品案例了(等我们的WinCE课程开得有声有色后,希望能从微软研究院搞些Smartphone来开发开发)。有OS的手机果然了得,金山词霸、WORD、EXCEL、REGEDIT等居然都有smartphone版的,PC上的MP3、DOC等居然在download时都可被自动转换成smartphone格式,真是爽。完全可用Windows CE自己开发一些需要的程序download到自己的手机上。现在市面销售PDA智能手机火爆,MS总是财源滚滚。但我已发现国产的ARMLINUX手机出现在市面上,价格只1.2K。

  在GOOGLE网上能搜索太多的关于嵌入式系统的讨论了,我刚发现一个http:www.embyte.com 非常不错,有很多有经验者谈自己的体会投入到其中的论坛中,你会切身感到嵌入式学习的热潮。

  要么走ARMWinCE,要么走ARMLINUX,要么走ARMVXWORKS。每个搞嵌入式的人都可选一条路,条条大路通罗马。

三、关于游戏软件方向

  将游戏软件人才称为数字媒体软件人才可能更好听些,包括游戏软件策划(最缺游戏策划的人)、游戏软件美术设计、游戏软件程序设计等多方面的人才,对软件学院,游戏软件程序设计当然是最合适的了。

  游戏软件人才的确目前很缺,听说很多游戏软件公司苦于没新人才补充,特别是没有高手补充,不得不相互挖人才,以至将游戏软件人才身价越抬越高。网上说日本教育部刚刚批准成立了日本第一家专门培养四年制游戏软件人才的本科大学。其实国内很多大学,特别是软件学院都有搞游戏软件人才的设想,但目前很少有做成的,主要原因是找不到能上游戏软件课的教师,听说有个学校只能花很大的价钱从Korea找老师来上课,果真缺到此等地步

  已有很多青少年沉湎于网游而颓废的实例,好在还不至于上升到制造精神鸦片的高度,所以开发游戏软件的人也不必每日惭悔(但开发儿童益智类游戏软件的人是不需惭悔的),如果想想这是为发展民族软件产业做贡献,那反倒是一件有意义的事情了。不过听一家游戏软件公司的老板讲,搞游戏软件开发是非常辛苦的。

  若想自己创业,搞搞游戏软件是不错的主意。现在网上网站或公司都在收购游戏软件(特别是手机游戏软件,因为手机游戏用户可选从网站上download到手机上,不像网游那么复杂),按download次数分成或一次性收购的都有。我们的同学在校期间是否也可发点小财搞得好,说不定可卖到国外网站,直接挣$$$呢。

  大致游戏分成以下几类:

  (1) PC类游戏,包括单机和网游。这类游戏开发平台基本上都是基于VC和DitrectX(如DirectShow,DirectDraw,D3D等,DirectX资料可直接到MS网站上查)。DirectX和OpenGL是两个主要的图形标准,OpenGL跨平台(Unix/Windows上都可跑),尽管很多搞研究的人对OpenGL赞不绝口,将DirectX骂得一文不值,但事实是,在Windows平台上,DirectX是最快最方便的,所以在Windows平台上的游戏还是DirectX当家。

  (2) 手机游戏:目前手机游戏主要开发平台有两类:

  第一类手机游戏是 J2ME 平台(Java 2 Micro Edition),J2ME本是为嵌入式平台设计的Java,但由于Java生来就需要Java虚拟机(JVM)来解释,所以在嵌入式产品很少用J2ME(太慢太耗内存)。但在手机游戏中J2ME倒有用武之地,我想这可能主要是Java可跨OS平台的原因,因为手机的OS是千奇百怪的。我对J2ME完全外行,但上次听Square Enix 公司的人说,J2ME与我们同学学过的J2EE还是有较大差别的。据我所知,目前手机中用的较多的是KJava语言,KJava是运行在一种叫K Java Virtual Machine的解释器上(K JVM是SUN早期为演示J2ME在嵌入式系统应用而开发的一个虚拟机),所以将在K JVM上运行的J2ME叫KJava。尽管SUN说今后不保证支持K JVM,将开发新的更高性能的J2ME虚拟机取而代之,但由于KJava出现较早,很多早期的手机游戏软件都将K JVM假想成J2ME虚拟机的标准了,所以目前有大量的KJava手机游戏软件存在,而且还在用KJava继续开发。特别是日本的手机游戏软件由于开发较早(像叫什么docomi的日本最大的电信运营商手机游戏搞得很火),多是基于KJava的。所以目前市场上在招聘手机游戏软件人才时,很多要求掌握KJava。有关J2ME请到Sun的网站上找资料。

  另一类手机游戏是 BREW 平台,BREW是美国高通公司(Qualcomm,CDMA核心技术都是该公司开发的,有无数移动通信技术专利)发明的,据说可编译成二进制代码,那当然快了。主要的开发语言是C/C。但迫于被指责为较封闭的压力,目前Qualcomm已推出BREW平台上的J2ME虚拟机(但可想像那将是怎样慢的速度)。Qualcomm搞定了很多手机制造商签定BREW授权许可协议,最狠的是Qualcomm与中国联通绑在一起大堆基于BREW的手机游戏,所以有些公司招聘时要求掌握BREW也就不奇怪了。

  去年00级22班毕业答辩时,有一位同学讲的是在公司做的KJava游戏(那是一家日本游戏软件公司),还一位同学讲的是另一家公司做的BREW游戏,看来不同的公司有不同的选择。将来谁会更火,我估计随着手机硬件资源的不断提高,不会在乎一个JVM的开销,J2ME应更有前途,毕竟它是更开放的。

  (3) 专用游戏机:如电视游戏,XBOX,PS2等。

  从著名游戏公司发来的对网游和手机游戏的人才需求,很有代表性。从中我们可看出,游戏公司对人才的需求主要是以下技术:

  (1) 计算机图形学,特别是3D编程与算法,包括DirectX 或 OpenGL。开发平台是 VC/DIRECTX 或 KJAVA。

  (2) 公司说,手机游戏因手机资源有限,必须对图像进行压缩,所以若有一些图像压缩算法知识比较好。像若能有MPEG压缩算法较好,手机上采用的是比MPEG压缩得更狠的一些特殊算法,但触类旁通。

  (3) TCP/IP Socket编程是搞网游开发的人必须掌握的。

  (4) 人工智能知识:复杂游戏可能需要一些AI算法。

  (5) 网络与信息安全知识: 网游要防外挂。

  一般游戏公司的网游服务器是基于 Linux 平台的,所以还提出了对游戏服务器端软件工程师的技术需求(精通MSSQL、ORACLE、MYSQL等数据库,精通Linux Programming,特别是Socket编程)。还有对维护游戏、网站人才需求(ASP.NET和数据库)。注意一条,最好有自己的游戏软件作品,若您应聘时能带一个 DirectX 作品,那将有多强的竞争力,所以最重要的是现在就要行动,实践,实践,再实践。



半键时刻露一手

  安德烈·卡耐基是美国宾夕法尼亚州一座停车场的电信技工。一天早上,调车场的线路因为偶发的事故,陷于混乱。 

  此时,他的上司还没上班,该怎么办?他并没有“当列车的通行受到阻碍时,应立即处理引起的混乱”这种权力。如果他胆大包天地发出命令,轻则可能卷铺盖走路,重则可能锒裆入狱。 

  一般人可能说:“这并不干我的事,何必自惹麻烦?”可是卡耐基并不是平平之才,他并未畏缩旁观! 

  他私自下了一道命令,在文件上签了上司的名字。 

  当上司来到办公室时,线路已经整理得同从来没有发生过事故一般。这个见机行事的青年,因为露了漂亮的这一手,大受上司的称赞。 

  公司总裁听了报告,立即调他到总公司,升他数级,并委以重任。从此以后,他就扶摇直上,谁也挡不住了。 

  卡耐基事后回忆说: 

  “初进公司的青年职员,能够跟决策阶层的大人物有私人的接触,成功的战争就算是打胜了一半——当你做出份外的事,而且战果辉煌,不被破格提拔,那才是怪事!” 

  有这样的情形,主持会议的领导是一个铁腕人物,大家因崇拜而磨灭了自己的见识,于是会议顺利进行。 

  “智者千虑,必有一失,愚者千虑,必有一得”,当你发现决议有问题,若按此办将来可能出大漏子,就应该鼓足勇气提出来。要知道,你可能穷尽毕生努力,也不会得到别人的赏识,而抓住这一机会,就可能把你的能力和价值展现给同事和领导,特别是意见未采纳,人们更会在后来的失败中忆起你的表现,赞叹你的英明。 

  请务必谨记,看准了就说,千万不要顾忌面子。如果在这时你还想“我说出来大家会难堪的”,那么说明你是一个注定没有什么作为的人。



高效经理的五个常用工具(转)
□浮云 发表于 2006-9-12 13:58:00
要想获得管理的高效率,经理必须熟知并熟练运用以下几个工具:

工具A:招聘面试的STAR原则

  招聘面试是经理工作的一项重要内容,每个成功的经理人都必须具备高超的招聘面试技巧,以招聘到合适的人充实到工作团队中,使合适的人在合适的岗位上,创造岗位员工的高绩效。

  所谓STAR原则,即Situation(背景)、Task(任务)、Action(行动)和Result(结果)四个英文单词的首字母组合。

  在对应聘人员进行面试的时候,你不妨试试STAR原则。

  STAR原则是面试过程中涉及实质性内容的谈话程序,任何有效的面试都必须遵循这个程序。

  在与应聘人员交谈时,首先了解应聘人员以前的工作背景,尽可能多了解他先前供职公司的经营管理状况、所在行业的特点、该行业的市场情况,即所谓的背景调查(Situation),然后着重了解该员工具体的工作任务(Task)都是哪些,每一项工作任务都是怎么做的,都采取了哪些行动(Action),所采取行动的结果如何(Result)。通过这样四个步骤,你基本可以控制整个面试的过程,通过策略性的交谈对应聘人员的工作经历与持有的知识和技能做出判断,招聘到更为合适的人才。

SATR原则是经理招聘面试的一个很好的工具,里面蕴涵着大量的细节性的技巧,经理应该在招聘工作不断摸索,提高运用能力。

工具B:职责清晰的6W1H原则

  职责清晰是管理工作的基本准则,任何的管理都是从管理职位开始的,其基本的要求就是职责清晰,权责明确。

  但是,在实际管理中,职责不清,权责不明的现象还大量存在。作为一个高效的经理,必须对这个问题做出更为深入的思考,有效地加以解决,使员工都明确自己的职责所在,在其位谋其政,学会自我负责,自我管理,使经理从繁忙的事务性工作解脱出来。

  要想使员工的职位说明书更加准确,职责更加清晰,经理就必须再一次复习一下6W1H这个致关重要的原则。

  所谓6W1H,即是:

  1. Who—工作的责任者是谁?

  2. For whom—工作的服务和汇报对象是谁?

  3. Why—为什么要做该项工作?

  4. What—工作是什么?

  5. Where—工作的地点在哪里?

  6. When—工作的时间期限?

  7. How—完成工作所使用的方法和程序?

  只有对上述问题逐一做出了回答,员工才能对工作更加清楚,才更愿意负责,更敢于负责,在工作中不断得到锻炼和提高。进而,你也才能抽出更多的时间对规划与发展的问题做出更多的思考,占据工作的主动,使未来的工作更有前瞻性。

工具C:目标管理的SMART原则

  目标管理是使经理的工作变被动为主动的一个很好的手段,实施目标管理不但是有利于员工更加明确高效地工作,更是为未来的绩效考核制定了目标和考核标准,使考核更加科学化、规范化,更能保证考核的公开、公平与公正。毕竟,没有目标你是无法考核员工的。

  制定目标看似一件简单的事情,每个人都有过制定目标的经历,但是如果上升到技术的层面,经理必须学习并掌握SMART原则。

  所谓SMART原则,即是:

  1. 目标必须是具体的(Specific);

  2. 目标必须是可以衡量的(Measurable);

  3. 目标必须是可以达到的(Attainable);

  4. 目标必须和其他目标具有相关性(Relevant);

  5. 目标必须具有明确的截止期限(Time-based);

  无论是制定团队的工作目标还是员工的绩效目标都必须符合上述原则,五个原则缺一不可。

  制定的过程也是你能力不断增长的过程,经理必须和员工一起在不断制定高绩效目标的过程中共同提高绩效能力。

工具D:有效管理的PDCA原则

  这是产品质量控制的一个原则,但是它不仅仅能控制产品质量管理的过程,它同样可以有效控制工作质量和管理质量。

  所谓PDCA即是计划(Plan)、实施(Do)、检查(Check)、调整(Adjustment)的首字母组合。

  无论哪一项工作都离不开PDCA的循环,每一项工作都需要经过计划、执行计划、检查计划、对计划进行调整并不断改善这样四个阶段。

  对经理来说,这是一个有效控制管理过程和工作质量的工具。采用PDCA可以使你的管理向良性循环的方向发展,通过实施并熟练运用,经理一定能在工作中不断提高效率,更加有效地驾御工作,获得更大的成功。

工具E:经理职业化的MKASH原则

  现代化的管理要求经理必须职业化,人们不会仅仅因为一纸委任书而信任你,而是更愿意因你的职业化水平而维护你的权威,接受你的领导。惟有使自己的表现不断职业化你才能不断提高管理效率,创建优秀的管理团队,创造管理高绩效的团队文化。

  现代化的经理必须是职业化、高效能的经理。

  所谓MKASH原则,即是:

  1.动机(Motivation):动机就像一部汽车车轮的轴心,处于核心的地位,动机的大小和强弱决定了车轮的运转速度和运行状况。积极心态影响下的动机会加速车轮的运转,从而加速经理的成功;反之,消极心态影响下的动机则不但对经理的成长不利,反而可能起到很大的破坏作用。

  所以你必须正确认识积极动机对成功的激励性作用,不断调整自己的心态,以积极的动机面对工作和挑战,不断激励与超越自我,在积极动机的引领下去实现所制定的目标和远景

  2.知识(Knowledge):知识经济时代的经理首先必须具备从事那份工作的专业知识,而且应该比下属员工更为专业,职业化必须以专业化为基础和背景。

  做任何一项工作,首先要具备的就是应对那份工作的专业知识,要做的好还得具备与其相关的其他知识,以形成完整的知识体系,支持工作的开展和拓展。

  惟有不断获取专业化的知识,经理才能做到职业化,才能在激烈的竞争中得到不断得到认可,获得更多的发展机会更大发展空间。

  3.技能(Skill):技能是经理赖以开展工作必要手段。

  只有知识,没有技能,也是寸步难行。试想,一个经理如果不具备沟通的技能,怎么与人沟通,怎么开展工作,没有人际交往技能,怎么与同事合作,怎么和下属建立和谐的人际关系?

  技能的锻炼应该提高到与知识同等的高度,高度重视,不断将知识转化为技能,转化为能力。

  4.行动(Action):具备了良好的动机,专业化的知识,熟练的技能水平是不是就可以了呢?显然还不够。

  高效能的经理还必须具备快速行动的能力,具备强劲的执行力。有的人方方面面都比较优秀,知识水平很高,能力很强,可就是做不出出色的工作业绩,原因就出在行动能力的欠缺上。

  汤姆彼得斯说,“快速制定计划并采取行动应该成为一种修养”。要想成为一个职业化的人才,就必须改掉犹豫不觉,瞻前顾后,拖拖拉拉的办事作风,在自己认准的事情上认认真真地采取行动,用行动来证明一切,不断提高自己的执行力。

  5.习惯(Habit):习惯决定命运,这句话一点都不夸张。良好的习惯给人好的印象和感觉,能在很大程度上帮助你成功。

  职业化的人才必须具备良好的习惯,无论是生活还是工作,都要时刻注意自己的习惯,改掉曾经的不好的习惯,养成职业化的行为习惯,使你的一举一动都体现出你职业的风采。

  关于成功者应具备的习惯,柯维先生在《高效能人士的七个习惯》有非常精彩、非常深入的论述,经理不妨拿来一读,相信收获一定不匪。

  以上简单描述了一些常用的工作准则,不够深入,还需要我们继续在工作当中不断地加以强化,更加熟练地加以运用,使之成为帮助我们获取高绩效的有效工具。



办公室赢取人心7大高招
惜缘 发表于 2006-9-10 19:51:00
如何赢取人心人际关系对事业的发展有极大帮助,公司的制度多完善,亦需要各同事配合。

    和睦的工作环境,同事间亲和融洽,上下一心,直接促成业务的成功。能否成功,关键亦在于能否跟同事打成一片,和睦共处,尽得人心。知道自己属于哪类人,就必须积极努力改善不足之处,与同事打好关系。

    1.合作和分享:

    多跟别人分享看法,多听取和接受别人意见,这样你才能获得众人接纳和支持,方能顺利推展工作大计。

    2.微笑:

    无论他是茶水阿姨、暑期练习生或总经理,无时无刻向人展示灿烂友善的笑容,必能赢取公司上下的好感。年轻的同事视你为大师姐,年长的把你当女儿看待,如此亲和的人事关系必有利事业的发展。

    3.善解人意:

    同事感冒你体贴地递上药丸,路过饼店顺道给同事买下午茶,这些都是举手之劳,何乐而不为?你对人好人对你好,在公司才不会陷于孤立无援之境。

  4.不搞小圈子:

    跟每一位同事保持友好的关系,尽量不要被人卷标为你是属于哪个圈子的人,这无意中缩窄了你的人际网络,对你没好处。尽可能跟不同的人打交道,避免牵涉入办公室政治或斗争,不搬事弄非,自能获取别人的信任和好感。

  5.有原则而不固执:

    应以真诚待人,虚伪的面具迟早会被人识破的。处事手腕灵活,有原则,但却懂得在适当的时候采纳他人的意见。切勿万事躬迎,毫无主见,这样只会给人留下懦弱、办事能力不足的坏印象。

    6.勿阿谀奉承:

    只懂奉迎上司的势利眼一定犯众憎。完全没把同事放在眼里,苛待同事下属,你无疑是在到处给自己树敌。

    7.勿太严厉:

    也许你态度严厉的目的只为把工作做好,然而看在别人眼里,却是刻薄的表现。你平日连招呼也不跟同事打一个,跟同事间的惟一接触就是开会或交待工作,试问这样的你又怎会得人心?
posted @ 2007-04-02 21:46 MEYE 阅读(856) | 评论 (0)编辑 收藏
优秀是一种习惯

第一句 优秀是一种习惯

  这句话是古希腊哲学家亚里士多德说的。如果说优秀是一种习惯,那么懒惰也是一种习惯。人出生的时候,除了脾气会因为天性而有所不同,其他的东西基本都是后天形成的,是家庭影响和教育的结果。所以,我们的一言一行都是日积月累养成的习惯。我们有的人形成了很好的习惯,有的人形成了很坏的习惯。到20岁左右的时候,我们已经有了自觉意识,已经开始明白什么样的习惯会使我们终身受益。所以我们从现在起就要把优秀变成一种习惯,使我们的优秀行为习以为常,变成我们的第二天性。让我们习惯性地去创造性思考,习惯性地去认真做事情,习惯性地对别人友好,习惯性地欣赏大自然。我的很多习惯都是在办“新东方”的这十几年中逐渐养成的,包括我对待老师和员工的态度,对很多事情的看法。你养成了优秀的习惯,在人们眼中你就会显得优秀。比如,让我们今天就学会微笑,把悲伤留给自己,把快乐带给别人。不管你是真心的还是职业性的微笑,只要你笑了,就会很美丽很好看,就会给人留下美好的印象。在西方社会,你走到很多地方人们都在微笑,尽管你知道那是职业性的,阋廊荒芨芯跽庑┪⑿Φ娜嗣呛芮浊小H绻颐恰靶露健钡脑惫っ扛鋈硕及遄帕成习啵蠹揖突岣芯跸裰舷⒘艘谎赡芪颐歉俣嗟那膊灰欢ㄔ凇靶露健备闪耍撬歉鱿不妒芷氖芘翱瘛?/FONT>

第二句 生命是一种过程

  事业的结果尽管重要,但是做事情的过程更加重要,因为我们是在每一天的过程中生活,每一天都不幸福,就等于整个生命都不幸福。所以尽管我们注重事业的结果,因为结果好了我们会更加快乐,但过程使我们的生命充实。

  人生命最后的结果一定是死亡,我们不能因此说我们的生命没有意义。欢乐是生命本身的渴望,人类是世界上惟一会笑的动物,但不是惟一懂得欢乐的动物。所有的动物都有欢乐的天性,这从很多小动物欢乐地奔跑和嬉戏中能够看出来。人类的生存常常必须有比维持生存更高的目标,因为人类除了物质生活,还必须要有精神生活的满足,因此人类必须比动物付出更艰辛的劳动。在物质方面,我们希望今年2000元一个月的工资,明年通过自己的努力变成3000元一个月,毕竟2000元和3000元给我们带来的生活质量是不一样的。但除此之外,我们还必须使精神生活大获全胜。

  曾国藩说过:“但问耕耘,莫问收获”。他并不是说我们不要收获。曾国藩的意思很简单,把种子撒进地里,种子自然会成长,长到最后自然会有收获,但是在维护庄稼成长的过程中给它浇水和施肥更为重要。因为只有这样,庄稼才会长得健壮,收获才会更好。另外,你每天日出而作,日落而息的劳动过程是你人生最美好的体验。迎着太阳的你走向美丽的大地,看着夕阳西下,你扛着锄头回家,这种感觉难道不是很美好吗?差不多到了陶渊明的“采菊东篱下,悠然见南山”的境界了。

  所以大家一定要寻求每一天的充实。世界上很少有永恒,大学生谈恋爱,每天都在信誓旦旦地说我会爱你一辈子,这实际上是不真实的,只是在表达一种愿望而已。但我们还是在说,因为至少在那一刻,我们这样的表达是真实感情的流露。追求永恒的爱是人类共同的梦想,因为人在爱中永远充实。但现实生活并不是这样的,统计数据表明,大学生谈恋爱的100对里有90对最后会分手,最后结婚了的还有一半会离婚。你说爱情能永恒吗?所以最真实的说法是:“我今天,此时此刻正在真心地爱着你。”明天也许你会失恋,失恋后我们会体验到失恋的痛苦。那我们就去体会,去体验,这种体验也是丰富你生命的一个过程。

第三句 两点之间最短的距离并不一定是直线

  特别是在人与人的关系以及做事情的过程中,我们很难直截了当就把事情做好。我们有时需要等待,有时需要合作,有时需要技巧。也许飞机能够在两点之间直飞,但即使飞机飞行,如果前面有个大气流,也通常只能绕过那个大气流飞行。我们做事情会碰到很多困难和障碍,有时候我们并不一定要硬挺、硬冲,我们可以选择有困难绕过去,有障碍绕过去,也许这样做事情更加顺利。大家想一想,我们和别人说话还得想想哪句话更好听呢。尤其在中国这个比较复杂的社会中,大家要学会想办法谅解别人,要让人觉得你这个人很成熟,很不错,你才能把事情做成。

第四句 只有知道如何停止的人才知道如何加快速度

  汽车的质量越高,开得就越快。比如像奔驰和宝马这一类车,它们的高质量不仅体现在发动机系统上,还体现在刹车系统上。你开这些车的时候,就敢于高速行驶,因为你知道,只要你踩刹车,车就能稳稳地停下来,不至于翻车或跑到马路外面去。但当我们开夏利车的时候,我们一定不会开得和奔驰车一样快,因为我们知道如果让它跑得太快了,就很难刹车了,说不定就会撞栏杆或者翻了。所以说,没有把握停下来的人是跑不快的人。

  我在滑雪的时候,最大的体会就是停不下来。我刚开始学滑雪时没有请教练,看着别人滑雪,觉得很容易,不就是从山顶滑到山下吗?于是我穿上滑雪板,哧溜一下就滑下去了,结果我从山顶滑到山下,实际上是滚到山下,摔了很多个跟斗。我发现我根本就不知道怎么停止,怎么保持平衡。最后我反复观察别人是怎么停,怎么滑的,然后再一点点地学,反复练习怎么在雪地上、斜坡上停下来。练了一个星期,我终于学会了在任何坡上停止、滑行、再停止。这个时候我就发现自己会滑雪了,就敢从山顶高速地往山坡下冲。因为我知道只要我想停,一转身就能停下来。只要你能停下来,你就不会撞上树、撞上石头、撞上人,你就不会被撞死。因此,只有知道如何停止的人,才知道如何高速前进。

最后一句 放弃是一种智慧,缺点是一种恩惠

  有一次我在一本书上读到这句话,开始不理解,但在生活和工作中,终于开始明白其中的意义。在生活中,我们最愚蠢的行为就是太执著于自己的东西,把自己的东西捏着不放,不愿意放弃。结果呢,你捏着不放,别人就不会把他的东西和你一起分享。没有放弃就没有得到,这是再明白不过的道理。我在这里给大家讲一下分享理论。当你拥有六个苹果的时候,千万不要把它们都吃掉,因为你把六个苹果全都吃掉,你也只吃到了六个苹果,只吃到了一种味道,那就是苹果的味道。如果你把六个苹果中的五个拿出来给别人吃,尽管表面上你丢了五个苹果,但实际上你却得到了其他五个人的友情和好感。以后你还能得到更多,当别人有了别的水果的时候,也一定会和你分享,你会从这个人手里得到一个橘子,那个人手里得到一个梨,最后你可能就得到了六种不同的水果,六种不同的味道,六种不同的颜色,六个人的友谊。人一定要学会用你拥有的东西去换取对你来说更加重要和丰富的东西。在人与人之间学会交换和分享,这个收获百倍于你一个人把六个苹果吃掉的收获。这是因为你放弃了五个苹果而获得的,所以大家想一想,放弃是不是一种智慧?

  那什么叫“缺点是一种恩惠”呢?就像我们刚开始说的那样,如果我们是完美的,我们就没有了发展的空间。一生下来就什么都有了,这人还有什么活头?做人最大的乐趣在于通过奋斗去获得我们想要的东西。所以有缺点意味着我们可以进一步完美,有匮乏意味着我们可以进一步努力。我在美国看过一部电视片,讲的是一位富翁给后代留下了用不尽的遗产,结果他的后代全都变成了吸毒的、自杀的、进监狱的,或者精神病患者。为什么会这样呢?因为这位富翁给自己后代留下的钱太多了,以致他们不需要劳动就可以继承一大笔财产。继承一大笔财富,就几乎什么都能买到。大家都知道钱的作用在于能买到物质世界上你所需要的全部东西,但惟一买不到的就是你心灵的充实、别人的友情以及你真诚的爱情。由于这些都是买不到的,所以你越有钱,心灵就越空虚,你就会极力用钱来填补自己的空虚,最后没有办法了就只能以吸毒来代替,使自己进入一个虚幻的世界。所以我说,当一个人什么都不缺的时候,他的生存空间就被剥夺掉了。如果我们每天早上醒过来,感到自己今天缺点儿什么,感到自己还需要更加完美,感到自己还有追求,那是一件多么值得高兴的事情啊!

posted @ 2007-04-02 20:03 MEYE 阅读(394) | 评论 (0)编辑 收藏
     摘要: 软件,让世界变平 [转贴] http://gocom.primeton.com/modules/techresource/article1075.htm ...  阅读全文
posted @ 2007-04-02 19:33 MEYE 阅读(700) | 评论 (0)编辑 收藏


微软公司的董事长比尔·盖茨,曾送给职场新人10句话

Posted on 星期五 2007年03月30日

  微软公司的董事长比尔·盖茨,曾送给职场新人10句话:

  1.人生是不公平的,习惯去接受它吧。

  2.这个世界不会在乎你的自尊,这个世界期望你先做出成绩,再去强调自己的感受。

  3.你不会一离开学校就有百万年薪,你不会马上就是副总裁,两者你都必须靠努力赚来。

  4.如果你觉得你的老板很凶,等你当了老板就知道了,老板是没有工作任期保障的。

  5.在速食店煎个汉堡并不是作贱自己,你的祖父母对煎汉堡有完全不同的定义。

  6.如果你一事无成,不是你父母的错,所以不要只会对自己犯的错发牢骚,要从错误中去学习。

  7.在你出生前,你的父母并不像现在这般无趣,他们变成这样是因为忙着付你的开销,洗你的衣服,听你吹嘘自己有多了不起,所以在你拯救被父母这代人破坏的热带雨林前,先整理一下自己的房间吧。

  8.在学校里可能有赢家和输家,在人生中却还言之过早,学校可能会不断给你机会找到正确的答案,现实人生中却完全不是这么回事。

  9.人生不是学期制,人生没有寒假,没有哪个雇主有兴趣协助你寻找自我,请用自己的空暇做这件事吧。

  10.电视上演的并不是真实的人生,真实人生中每个人都要离开咖啡厅去上班。





论Java外观模式
转贴   

前言,有好多朋友曾经问我如何做出很美观的用户界面程序,比如做个苹果的界面,做个XP的界面,当时我也很头疼,因为jdk当时只是1.3,Sun并没有像今天那样把java做的如此成功,所以当时似乎解决不了,现在好了,jdk1.4开始支持java自定义外观,那我们就开始研究吧.自定义呢网上有教材,可以自己找,而且看看plf.LookAndFeel的实现类,自己可以研究一下,这里不谈论,主要讨论第三方组件的实现.

1. Mac及Office2003  Windows xp等外观模式  OS:   Windows XP 

                     JDK:  5.0 Update 6   所用到的组件   substance.jar

御览图片:   https://substance.dev.java.net/

下载地址:   http://my.mofile.com/xqsoft

2. 好看的各种外观组件    l2fprod-common-all.jar

御览图片:  https://l2fprod-common.dev.java.net/

下载地址:  http://my.mofile.com/xqsoft

3. OfficeLnFs - Microsoft Office XP & 2003 Look and Feels for Java Swing

   用到的组件    OfficeLnFs.jar

御览图片:   http://officelnfs.sourceforge.net/

下载地址:   http://my.mofile.com/xqsoft

4. 漂亮的跨平台Swing 界面外观模式

用到的组件   Quaqua 3.5_3.jar

御览图片 :  https://pgslookandfeel.dev.java.net/

下载地址:   http://my.mofile.com/xqsoft

以上的应该够了,把他们打包到你的application里我想会给你的软件增色不少,另外如果你下载不到以上的组件,请联系我并留E-mail,我会给你们发过去. 

        另外提供大家一个很全的组件库http://www.open-open.com基本上是想到的就有~~~
http://blog.hexun.com/xqsoft
 
让你的Java会说话-用Java实现IRC文本到语音转换
bublle 转贴   更新:2006-03-01 10:52:39  版本: 1.0   

摘要:
Internet Relay Chat(IRC)是一个被全世界数百万人所使用的网络聊天系统。多年以来,它为朋友、程序员、大学甚至银行之间的讨论、交换意见和协作研究提供了方便。本文将展示如何建立一个跨平台的IRC机器人(一个自动化的客户端),它使用FreeTTS Java语音合成库来将IRC消息转换成听得见的语音。 文章工具
收藏
投票评分
发表评论
复制链接
Internet Relay Chat(IRC)是一个被全世界数百万人所使用的网络聊天系统。多年以来,它为朋友、程序员、大学甚至银行之间的讨论、交换意见和协作研究提供了方便。

版权声明:任何获得Matrix授权的网站,转载时请务必保留以下作者信息和链接
作者:Paul Mutton;jlearner(作者的blog:http://blog.matrix.org.cn/page/jlearner)
原文:http://www.onjava.com/pub/a/onjava/2004/09/08/IRCinJava.html
译文:http://www.matrix.org.cn/resource/article/44/44237_Text+Speech+Java+IRC.html
关键字:Text;Speech;Java;IRC

由于IRC是一个完全实时的聊天系统,所以你将很难从中受益,除非你能密切关注聊天时对话产生的顺序。不幸的是,这将会导致生产力的低下,这就是为什么很多雇主不赞成使用IRC的原因。然而,如果IRC得到了恰当的使用,它能够使雇员与远程的同事们一起高效地工作,不管他们是位于地球的另一端,或者只是在隔壁的大厦。像IRC这样的实时群组聊天系统使组织会议(甚至可以实现视频会议)、提问问题或是商量去哪里吃午餐这样的小事都变得更加容易。

很多老板也许会争辩说,在工作场所提高生产力的最显而易见的方法是完全避免使用IRC。在某些情况下这也许是正确的,但是在很多场合IRC可以是非常有用的。当你使用IRC进行交流时??即使是跟同一办公室中的某个人??在别处的同事将能够看到你们两个谈话的内容。当你不在办公桌旁的时候,你也可以了解同事们在讨论什么。这是电话或常规的点对点聊天系统所不容易实现的两个重要方面。

理想的解决方案是设计一种无需经常查看是否有新消息就可以明了IRC对话的方法。只要你的IRC频道不是很繁忙,那么一个文本语音转换系统将会提供给你优秀的解方案。它会将新消息自动朗读出来,这样你就可以继续工作,只在有绝对必要的时候才转移注意力到IRC上面来。

本文将展示如何建立一个跨平台的IRC机器人(一个自动化的客户端),它使用FreeTTS Java语音合成库来将IRC消息转换成听得见的语音。

FreeTTS库可以在freetts.sourceforge.net下载。为了连接到IRC服务器上,你需要在www.jibble.org/pircbot.php下载PircBot Java IRC API。

当你下载了所需的两个库之后,建立一个lib目录,然后将下列.jar文件拷贝到里面。
?cmu_time_awb.jar 
?cmu_us_kal.jar 
?cmulex.jar 
?cmutimelex.jar 
?en_us.jar 
?freetts.jar 
?pircbot.jar 

现在,写IRC机器人已经变成了一个简单的任务,因为这些库将为你完成多数的困难工作。建立一个名为SpeechBot.java的文件:
import org.jibble.pircbot.*;import com.sun.speech.freetts.*;import com.sun.speech.freetts.audio.*;import javax.sound.sampled.*;import java.io.File;public class SpeechBot extends PircBot {    private Voice voice;        public SpeechBot(String name) {        setName(name);        // Choose the voice for the speech synthesizer.        // 选择语音合成器的话音        String voiceName = "kevin16";        VoiceManager voiceManager = VoiceManager.getInstance();        voice = voiceManager.getVoice(voiceName);        if (voice == null) {            System.out.println("Voice not found.");            System.exit(1);        }        voice.allocate();        // Set up the output format.        // 设置输出格式        AudioPlayer voicePlayer = new JavaClipAudioPlayer();        voicePlayer.setAudioFormat(new AudioFormat(8000, 16, 1, false, true));        voice.setAudioPlayer(voicePlayer);    }            public void onMessage(String channel, String sender, String login, String hostname, String message) {        // Send all IRC messages to the voice synthesizer.        // 发送所有的IRC消息到语音合成器        message = message.trim();        String input = sender + " on " + channel + " says: " + message;        voice.speak(input);    }    public static void main(String[] args) throws Exception {        if (args.length < 2) {            System.out.println("Usage: java SpeechBot <server> <channel>");            System.exit(1);        }        SpeechBot bot = new SpeechBot("SpeechBot");        bot.connect(args[0]);        bot.joinChannel(args[1]);    }}

现在可以编译IRC机器人了。要确定在类路径中包含了必需的.jar文件:

javac -classpath .;./lib/pircbot.jar;./lib/freetts.jar 
SpeechBot.java

注意这种指定类路径的方式只在Windows系统下有效。在Unix/Linux系统上,你需要使用冒号(:)而不是分号(;)来作为分隔符。在运行IRC机器人的时候你也需要指定类路径。

当运行机器人的时候,你需要提供两个命令行参数来告诉它连接哪个IRC服务器以及加入哪个IRC频道:

java -classpath .;./lib/pircbot.jar;./lib/freetts.jar 
SpeechBot irc.freenode.net #irchacks

注意:确定你的目录名不包含任何空格,因为该版本的FreeTTS在从含有空格的路径中读取自身代码时似乎存在问题。

当你启动了机器人之后,它将立刻加入指定的IRC频道(范例中是在freenode IRC网络上的#irchacks)。现在你可以向频道中发送一条消息来测试机器人了。如果一切都设置正确,你就会听见机器人对你说:

"Jibbler on #irchacks says: Hello, world!"

现在你可以在收听IRC的同时继续努力工作了!

Paul Mutton是PircBot IRC框架及另外一些Java程序的作者,这些程序可以在他的网站上找到。

在2004年7月,O'Reilly Media出版了IRC Hacks
posted @ 2007-03-31 21:36 MEYE 阅读(528) | 评论 (0)编辑 收藏
一篇关于JSF的入门文章
转贴 

摘要:JavaServer Faces作为一种新兴的Web表现层框架,正在受到越来越多的关注。本文描述了JSF的几大优势,以及这些优势所带来的Web开发的重大变革,从而试图说明JSF将会在众多竞争者中脱颖而出,成为Web表现层框架的主流。

  1. 引子:我与JSF的第一次亲密接触

  2004年3月,当我着手开发我的第一个Web程序时,我选择了JSP。作为一个传统的桌面程序员,而且是老程序员,向Web程序员的转变是异常痛苦的。3个月的时间,程序总算完成了,但从此对JSP恨之入骨。凌乱的书写格式,数据和界面的混杂,尤其是嵌入到页面里的Scriptlet,让我搞不清自己是编程序的还是写网页的。 

  因此,当接到第二版的开发任务时,我毫不犹豫地放弃了JSP,寻找一种替代技术。上网一搜,却发现框架多如牛毛,评论文章各执一词,莫衷一是,让我彻底迷失了。犹豫摇摆不定之际,sun的J2EE Tutorial文档中关于JavaServer Faces技术的介绍吸引了我:UI、component、event、listener这些在桌面程序中熟悉的字眼,让我在Web开发中找到了桌面程序员的一些感觉。

  象开发桌面程序那样开发web程序,这是我选择JSF的初衷。基于这样肤浅的认识,跌跌撞撞上路了,在工期和新技术的双重压力之下,超负荷的工作令人透不过气来,但每每从JSF中发掘出令人惊喜的新特性,又给我带来极大的满足感。第二版终于完成时,日历恰好翻过一个整月。JSF带来的效率提升是显著的。

  事实上,到现在为止,我对于JSF还只能说是初步了解,远未达到掌握,更谈不上精通,但这并不妨碍我视JSF为Web开发的首选框架。尤其是对于新手,如果还没有在Struts、Tiles、Spring、Tapestry等框架中走得太远,那么,集中你有限的精力踏上JSF之路吧。 

  2. JSF优势之一:UI组件(UI-component)

  UI组件(UI-component)一直是桌面程序的专利,web程序中,虽然HTML定义了基本的UI标签,但要使这些UI标签像UI组件那样工作,还需要很多代码片断来处理数据及其表现形式,而且有效地组织这些代码片断使其协调一致也是一件繁琐的工作。JSF的UI组件是真正意义上的UI组件,能极大地简化程序员的工作,例如,在页面上放置一个文本输入框,这个输入框立即具备了数据填充、界面更新、事件侦听、动作触发、有效性检查和类型转换的功能。更为重要的是,程序员只需根据业务逻辑编写核心业务代码,JSF会保证代码在合适的时候被执行,完全不用考虑代码与代码之间该如何来配合。 

  3. JSF优势之二:事件驱动模式

  事件是面向对象方法的重要组成部分,对象之间通过事件进行沟通和交流,使得一个或多个对象能够对另一个对象的行为作出响应,共同合作去完成一项业务逻辑。通常,编写Web程序时,程序员要为对象之间的沟通设计机制,编写代码。虽然沟通的内容属于业务逻辑,但沟通的机制显然与业务没有太大关系,程序员因此为业务逻辑之外的功能浪费了时间。JSF改变了这种状况。JSF的事件和侦听模式与大家熟悉的Javabean的事件模式类似,有Java基础的程序员并不需要学习任何新的东西。JSF的UI组件可以产生事件,例如,当页面上一个文本输入框的内容被修改时,会发出一个“值改变事件”。另一个对象如果对“值改变事件”感兴趣,只需注册为该对象的侦听者,并编写处理例程,即可命令JSF在事件发生时自动调用处理例程。JSF做了所有该做的事,留给程序员的只有业务逻辑代码的编写。 

  4. JSF优势之三:用户界面到业务逻辑的直接映射

  举个例子,表单提交是Web编程最常见的任务,也是最复杂的任务之一。当用户在网页上点击“确定”按钮时,浏览器将生成一个HTTP请求,发往服务器端的某个Servlet,执行该Servlet的service方法。在service方法中,HTTP请求需要经历解码、类型转换、有效性验证、状态保存、数据更新等环节,处理这些环节的所有细节,对程序员来说是沉重的负担。在JSF下,这些工作的很大一部分都由框架承担了,在程序员看来,这个过程是透明的,用户界面端的HTTP请求可以直接映射到后端的一个事件处理例程,JSF起到了承前启后的作用。 

  5. JSF优势之四:程序员和网页设计人员的分工

  在JSP中,程序员和网页设计人员的工作有时候是互相交织、无法区分的。这是因为JSP页面中掺入了网页设计人员所不熟悉的一些JSP标签,甚至是晦涩的Java代码。要求网页设计人员理解这些标签和代码是不现实的,不符合分工合作的原则。在JSF中,框架为网页设计人员提供了一套标准的UI组件,在工具的支持下,可以通过拖放简单地添加到网页上,然后设置某些显示属性来满足视觉要求。网页设计人员不需要知道UI组件背后的复杂代码,那是程序员的事,而程序员也不需要再处理任何与视觉相关的细节,程序员所做的只是给UI组件绑定类的属性或方法。虽然程序员和网页设计人员需要修改同一份文件,但他们各司其职,各得其所,互不干扰。程序员和网页设计人员工作的明确划分,是JSF在易用性方面迈出的一大步。

  6. JSF优势之五:请求处理生命周期的多阶段划分

  虽然都是建立在Servlet基础之上,但JSF的生命周期要比JSP复杂得多。JSP的生命周期非常简单,页面被执行时,HTML标记立即被生成了,生命周期随即结束。而一个完整的JSF请求-处理生命周期被精心规划为6个阶段,典型的JSF请求需要经历所有阶段,某些特殊的请求也可以跳过一些阶段。阶段的细分,显然引入了更多的处理,但JSF框架会管理这一切,所以,程序员在获得更多控制能力的同时,工作量并没有增加。 

   7. JSF优势之六:伴随工具而生存

  JSF带来了Web编程的巨大变革,变革的强烈程度超出了很多工具厂商的预料,以至于现在可供JSF使用的工具非常缺乏。缺乏工具支持的JSF只会令人敬而远之,因此,JSF在设计之初就为工具厂商预留了用武之地。在为数不多的JSF工具中,sun的Java Studio Creator是一个优秀的开发环境;Borland的Jbuilder在JSF1.1时曾经是非常好用的开发工具,可惜现在对JSF1.2的支持没有跟上;Eclipse下JSF的插件很多,但真正支持所见即所得的JSF插件都是收费的,例如Bea的Workshop for JSF、Exadel的JSF Studio等等;此外,Oracle和IBM也有JSF的开发工具。随着工具的不断涌现,用JSF开发Web程序将会越来越方便和快速。 

   8. JSF优势之七:全面的用户自定义支持

  前面提到,JSF将极大地简化Web程序的开发,作为一个相对复杂的框架,JSF是如何做到这点的呢?原来JSF为程序员提供了很多默认的组件和类,通常情况下,JSF的这些默认组件和类足以满足Web开发的需要了。但是,考虑到在某些应用场合,框架的默认行为也许不符合业务的要求,JSF特别允许程序员编写自己的组件和类,来满足客户的特殊需求。例如,程序员可以编写自己的UI组件,甚至可以创建自己的EL解释器,来支持非标准的EL表达语言。 

  9. JSF优势之八:Web开发的官方标准之一

  JSF的1.0版本发布于2004年2月份,当时是作为一项独立的Web技术推出的。经过1.1版到现在最新的1.2版,短短的两年多时间,JSF终于在2006年年中成为Java EE 5的组成部分,上升为Web开发的官方标准之一。Java EE 5最重要的使命就是简化Java的开发,而JSF无疑为这一使命立下了汗马功劳。在Web框架层出不穷甚至有些泛滥成灾的今天,Sun以JSF来树立标准,对Java的发展是有益的。Sun在Java领域的领袖地位不容动摇,对于Java程序员来说,始终追随业界领袖的步伐,也许是避免技术落伍的最好方法。

  10. 结束语:该你了,JSF!

  考察某项技术的流行程度,google的关键字搜索不失为一种简便易行的方法。为了便于说明,我们选择目前最热门的Struts与JSF进行比较。在google中分别输入关键字“Struts”和“JSF”,看看google返回的网页数量。令我们感兴趣的不是网页的绝对数量,而是JSF网页数量与Struts网页数量的比值。我们看到,对于英文网页,这个比值是0.6,日文网页是1.0,繁体中文网页是0.8,而简体中文网页只有0.4。表1列出了具体的数据和比值。

  英文网页数量(万) 日文网页数量(万) 繁体网页数量(万) 简体网页数量(万)

  JSF Struts JSF Struts JSF Struts JSF Struts

  719 1170 145 140 10 13 59 138

  JSF / Struts = 0.6JSF / Struts = 1.0JSF / Struts = 0.8JSF / Struts = 0.4

  虽然这样的比较方法不够严谨,但0.4的比例从一个侧面说明JSF在国内还没有流行起来,用“方兴未艾”四个字来描述JSF的这种状况,是再合适不过了。由于历史的原因,国内的软件技术一直亦步亦趋地跟着国外跑,这不是我们希望的,但我们不得不承认,因此,从国外的情况来推论,我们有理由相信,JSF必将成为国内程序员追捧的对象。正如某位哲人说的那样,JSF是早晨八、九点钟的太阳,希望寄托在JSF身上。 

  11. 后记:不同的声音

  客观地说,JSF并非完美,业界对JSF的评价也褒贬不一。例如,由于JSF过于复杂,其学习曲线明显长于其他框架如Struts等,这在一定程度上妨碍了JSF的推广;此外,JSF的推出略显仓促,1.0版在使用中发现很多bug,以至于sun匆忙发布的1.1版主要是为了修正这些bug;还有,在JSF1.2版之前,JSP和JSF的融合有严重的缺陷,这主要是由于二者不同的生命周期造成的,不过,1.2版在这方面作出了改进,现在,JSP和JSF可以在一个项目中相安无事了。 

  JSF的不足之处还有很多,比如UI组件不够丰富、具体实现的可选择余地过窄、使用JSF开发的实际项目不多、sun的参考实现还存在诸多bug、短期内缺乏工具支持等等,尤其是在国内,JSF的中文文档和书籍相当缺乏。但是,不管怎样,这些都是JSF成长道路上必须经历的磨难,我相信,Sun会努力的。




EJB的理想
yongbing 转贴   更新:2007-01-03 16:50:45  版本: 1.0   

摘要:
EJB是一种企业应用技术,旨在建立一个企业应用开发框架,但从其诞生之日起,质疑之声一直不断。EJB是企业应用框架的先驱,在企业应用框架的方法论上有独到的见解,虽然存在不少缺陷,但仍不失为企业应用框架的理想。

1. 备受争议的EJB

  EJB也许是Java领域里中最受争议的技术了。有人说EJB是最伟大的发明,也有人说EJB完全是多此一举;当一些人陶醉于EJB的深奥理论时,另外一些人却正被EJB的繁琐复杂所折磨;尝到EJB甜头的人,在EJB的每个新版本中,都能发现盼望已久的惊喜,而被EJB拒之门外的人,则随着EJB的升级,愈发对EJB敬而远之了。

  EJB的全称是Enterprise JavaBeans,JavaBeans很普通,不过Enterprise就不那么简单了。什么技术,一旦被冠以Enterprise的名头,就像男人走入婚姻殿堂一样,身上的责任与单身汉不可同日而语了。从定义上看,JavaBeans只是J2SE平台上的一个组件架构,包含一些业务逻辑,并且可以被重用。

  EJB不同,作为企业级的JavaBeans,Sun对EJB的定位要远远高于JavaBeans,所以EJB的目标也比JavaBeans要远大得多,除了作为一个包含业务逻辑的可重用组件外,EJB更被赋予了诸如“可移植”、“安全”、“可伸缩”、“交易性”等特征。

  所有这些EJB必须具备的特征,其实正是企业应用所要求的。这也是Enterprise一词所代表的技术上的含义。企业应用不同于普通应用,企业应用是大规模的、高复杂度的和关键的,它所面临的挑战,要比普通应用艰巨得多。比如,企业应用对可移植性的要求非常高,这是因为,企业都不愿意将自己的未来绑定到某个供应商的身上,除非是不得已而为之;又比如,安全性对企业应用至关重要,谁能使用什么功能、哪些数据哪些人可以看到,都有严格的限制;更不用说的是企业应用的可伸缩性了,当业务规模变大时,你希望全盘推翻旧系统,采购一批崭新的软件和硬件,对IT系统来个彻底的革命吗?增加一台服务器就能应付更多的客户,我想这是头脑正常的企业家都希望的。

  企业应用的需求,就是EJB的目标。用EJB开发的应用,完全符合企业应用的特征。EJB是一个规范,只要符合这个规范,EJB可以在不同的操作系统、不同的应用服务器中无缝地移植;EJB允许开发者在EJB部署描述文件中进行方法级的、基于角色的安全性配置,以统一的方式保护企业应用和数据的安全性;只要你愿意,EJB应用可以全部部署在一台单独的服务器上,也可以任何组合方式分布在一组服务器群中,满足你扩大规模和均衡负载的要求;如果你想保持事务的完整性,那么,EJB的事务管理是一个可靠的、稳健的解决方案。

  这就是EJB,一个企业应用的集大成者,多种技术的浓缩精华,全能的框架和基础结构。可就是这样一个将企业应用的开发简化到了前所未有之程度的技术,却成为许多人口诛笔伐的对象。复杂、难以使用、性能低下、繁琐等等,从1998年EJB诞生之日起,各种各样的恶名就伴随左右,直到八年后的今天,当EJB迎来它的第三次大变脸时,质疑之声依然不绝于耳。EJB真的那么糟糕吗?

  2. EJB是企业应用的先驱

  笔者接触第一个企业应用,是在1997年。那时PowerBuilder风头正劲,不过,多数人使用PowerBuilder,是因为它的数据窗口。当时笔者在一个项目中遇到一个难题,那就是如何把一台服务器上的应用一分为二,跑在两台服务器上,以提高性能。这是典型的分布式应用,虽然不是一个完整意义上的企业应用,不过,因为应用中需要用到分布式的概念,多少也算和企业应用沾上边了。

  PowerBuilder其实是个非常不错的开发工具,在1997年的时候,已经提出了分布式应用的概念,并且付诸实施了。在PowerBuilder中,一个组件可以有一个称为代理的对象,这个对象可以运行在与组件不同的机器上,其他组件通过代理可以访问该组件的功能。

  这是一个很初级的分布式应用框架,不过,那时已经给了笔者很大的震动。我试着编了一个实验性质的程序,当我在一台机器上按下一个按钮时,另外一台机器上赫然弹出一个预期中的对话框,着实让我大吃一惊。没有任何Socket编程,也不需要关心实际的应用跑在哪台机器上,PowerBuilder让我首次见识了分布式应用框架的巨大威力。

  PowerBuilder解决了分布的问题,但安全性和事务控制,仍然需要程序员自己想办法。十个程序员可以有十种解决方案,每种都不同,而每种都可能含有未经发现的缺陷。在EJB之前,企业应用的开发没有规范可循,每个公司都有自己的一套方案,尽管每个公司都对自己的方案充满信心,但其实这些未经大量应用考验的方案,都有着这样那样的不足或局限。

  J2EE是第一个为业界所广为接受的完整的企业应用框架,而EJB在其中扮演重要角色。在J2EE框架的支持下,运行在EJB容器中的EJB,完全符合企业应用关于分布、移植、安全和交易的要求。这对于企业应用的开发者来说,意义非同寻常。首先,现在大家可以在一个公共的平台技术上构建自己的企业应用,不必绞尽脑汁“发明”自己的“轮子”,从而节省大量无谓的、重复性的技术和时间投入;其次,一个公开的平台,让大量的企业应用开发者有了共同语言,可以相互交流平台的使用经验和教训,这样,随着平台之上企业应用的不断增加,平台的优劣得失一览无遗,有利于平台的改进和发展。

  这就是EJB为企业应用作出的贡献。在EJB之前,多数人不知企业应用为何物,或者虽然有企业应用的模糊概念,但要编写一个企业应用,谈何容易。不同的操作系统、不同的开发语言、不同的网络环境、不同的应用终端,开发一个企业应用,程序员面临着两难的抉择:要么限定应用的软硬件平台,或者牺牲应用的安全性、分布性或交易性,开发一个“伪”企业应用;要么下决心开发一个真正的企业应用,然后累死自己。

  3. EJB是一种思想

  EJB让程序员编写真正意义上的企业应用而不必累死,应该说,EJB已经是企业应用开发领域的一大进步,让企业应用和普通应用的开发差距缩短到了前所未有的程度,可是,为什么还有很多人抱怨EJB过于复杂呢?EJB的复杂性其实是个伪命题。所谓复杂,一定是相对的。如果和普通应用相比,EJB当然要复杂很多,因为人们对于普通应用没有企业应用那么苛刻的要求。但是,如果将EJB之前和EJB之后的企业应用开发的难度相比,相信人们就会对EJB赞誉有加了。举个不准确的例子,假如EJB之前,企业应用的难度是普通应用的10倍,那么,EJB之后,这个比例缩小到了5倍,批评EJB复杂者,只看到了还剩下的5倍复杂度,却没有看到EJB所减去的5倍复杂度。

  关于EJB过于复杂的论断,还来自于与其竞争技术的比较。例如,Spring就是一个声称比EJB更简单的、轻量级的企业应用框架。Spring确实简单,很多人喜欢Spring,也正是因为Spring简单。可是,Spring的支持者们,忽略了一个基本的事实,那就是Spring的功能要比EJB弱,也就是说,Spring是通过放弃某些不常用的功能来达到简化目的的。Spring好比一辆没有安全气囊的车,尽管依然可以拉客跑运输,但一旦发生碰撞事故,也许司机会陪上性命。没有安全气囊的Spring,在制造上当然要比有安全气囊的EJB简单,而且轻便,跑得快,不过,Spring始终不适合投入正式营运。这就是为什么不推荐在大型企业应用上采用Spring的原因。没有完善的事务处理,不能提供7X24小时的服务,Spring迈不过关键企业应用的门槛。

  与Spring形影不离的是Java对象持久化的“红人”Hibernate。Hibernate的矛头直指EJB的Entity Bean。Entity Bean,尤其是它的持久化技术,是最为程序员所诟病的,成为EJB挥之不去的阴影,并最终促成了Hibernate的辉煌。Hibernate其实并不精深,在技术上也没有太多值得称道的创新,但它的文档非常优秀。我知道很多程序员就是被Hibernate的文档所吸引的,他们只学过一些SQL初步,没有系统的关系数据库理论知识,Hibernate关于数据库表间关系的论述,深入浅出,十分精彩,让他们在对关系数据库的理解上有了迅猛突破的同时,Hibernate轻易的俘虏了他们的心。

  Hibernate的成功,反衬了EJB在持久化方面的失败,但在我看来,这并不影响EJB的伟大。与其说EJB是一种技术,不如说EJB的是一种思想更恰当,而不论Hibernate还是Spring,只不过是一种工具,他们只是跟在EJB后面,发现了EJB的某些不足,然后有针对性地加以改进,以迎合普通程序员对于“技术快餐”的需求。

  他们既没有从形形色色的企业应用中,抽象出隐藏在不同表现后面的本质特征,也没有创造性地用Stateless Session Bean和Stateful Session Bean来描述千变万化的现实世界。工具只是工具,不出两年就会有新的后起之秀,取而代之,但思想的光辉将长久地照亮技术的未来。EJB是一种思想,更是一种理想,尽管理想和现实总是存在差距,但这不能成为我们放弃EJB的理由。一种满足企业应用分布性、扩展性、安全性和交易性要求的、方便使用的框架技术,既是EJB的理想,也是广大程序员的理想。
当前流行的J2EE WEB应用架构分析
xuyy_cn 原创   更新:2006-09-14 13:04:12  版本: 1.0   

1. 架构概述 


J2EE体系包括java server pages(JSP) ,java SERVLET, enterprise bean,WEB service等技术。这些技术的出现给电子商务时代的WEB应用程序的开发提供了一个非常有竞争力的选择。怎样把这些技术组合起来形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤。完成这个步骤可以形成一个主要里程碑基线。形成这个基线有很多好处: 


各种因数初步确定 

为了形成架构基线,架构设计师要对平台(体系)中的技术进行筛选,各种利弊的权衡。往往架构设计师在这个过程中要阅读大量的技术资料,听取项目组成员的建议,考虑领域专家的需求,考虑赞助商成本(包括开发成本和运行维护成本)限额。一旦架构设计经过评审,这些因数初步地就有了在整个项目过程中的对项目起多大作用的定位。 

定向技术培训 

一旦架构师设计的架构得到了批准形成了基线,项目开发和运行所采用的技术基本确定下来了。众多的项目经理都会对预备项目组成员的技术功底感到担心;他们需要培训部门提供培训,但就架构师面对的技术海洋,项目经理根本就提不出明确的技术培训需求。怎不能够对体系中所有技术都进行培训吧!有了架构里程碑基线,项目经理能确定这个项目开发会采用什么技术,这是提出培训需求应该是最精确的。不过在实际项目开发中,技术培训可以在基线确定之前与架构设计并发进行。 

角色分工 

有了一个好的架构蓝图,我们就能准确划分工作。如网页设计,JSP 标签处理类设计,SERVLET 设计,session bean设计,还有各种实现。这些任务在架构蓝图上都可以清晰地标出位置,使得项目组成员能很好地定位自己的任务。一个好的架构蓝图同时也能规范化任务,能很好地把任务划分为几类,在同一类中的任务的工作量和性质相同或相似。这样工作量估计起来有一个非常好的基础。 

运行维护 

前面说过各个任务在架构图上都有比较好的定位。任何人能借助它很快地熟悉整个项目的运行情况,错误出现时能比较快速地定位错误点。另外,有了清晰的架构图,项目版本管理也有很好的版本树躯干。 

扩展性 

架构犹如一颗参天大树的躯干,只要躯干根系牢,树干粗,长一些旁支,加一些树叶轻而易举无疑。同样,有一个稳定的经得起考验的架构,增加一两个业务组件是非常快速和容易的。 

大家都知道这些好处,一心想形成一个这样的J2EE应用程序架构(就像在windows平台中的MFC)。在这个路程中经历了两个大的阶段: 


1.1. 模型1 


模型1其实不是一个什么稳定架构,甚至谈不上形成了架构。模型1的基础是JSP文件。它从HTTP的请求中提取参数,调用相应的业务逻辑,处理HTTP会话,最后生成HTTP文档。一系列这样的JSP文件形成一个完整的模型1应用,当然可能会有其他辅助类或文件。早期的ASP 和 PHP 技术就属于这个情况。 


总的看来,这个模型的好处是简单,但是它把业务逻辑和表现混在一块,对大应用来说,这个缺点是令人容忍不了的。 


1.2. 模型2 


在经过一番实践,并广泛借鉴和总结经验教训之后,J2EE应用程序终于迎来了MVC(模型-视图-控制)模式。MVC模式并不是J2EE行业人士标新立异的,所以前面我谈到广发借鉴。MVC的核心就是做到三层甚至多层的松散耦合。这对基于组件的,所覆盖的技术不断膨胀的J2EE体系来说真是福音和救星。 


它在浏览器(本文对客户代理都称浏览器)和JSP或SERVLET之间插入一个控制组件。这个控制组件集中了处理浏览器发过来的HTTP请求的分发逻辑,也就是说,它会根据HTTP请求的URL,输入参数,和目前应用的内部状态,把请求分发给相应的WEB 层的JSP 或SERVLET。另外它也负责选择下一个视图(在J2EE中,JSP,SERVLET会生成回给浏览器的html从而形成视图)。集中的控制组件也有利于安全验证,日志纪录,有时也封装请求数据给下面的WEB tier层。这一套逻辑的实现形成了一个像MFC的应用框架,位置如图: 


1.3. 多层应用 


下图为J2EE体系中典型的多层应用模型。 


Client tier客户层 

一般为浏览器或其他应用。客户层普遍地支持HTTP协议,也称客户代理。 

WEB tier WEB应用层 

在J2EE中,这一层由WEB 容器运行,它包括JSP, SERVLET等WEB部件。 

EJB tier 企业组件层 

企业组件层由EJB容器运行,支持EJB, JMS, JTA 等服务和技术。 

EIS tier 企业信息系统层 

企业信息系统包含企业内传统信息系统如财务,CRM等,特点是有数据库系统的支持。 


应用框架目前主要集中在WEB层,旨在规范这一层软件的开发。其实企业组件层也可以实现这个模型,但目前主要以设计模式的形式存在。而且有些框架可以扩充,有了企业组件层组件的参与,框架会显得更紧凑,更自然,效率会更高。 


2. 候选方案 


目前,实现模型2的框架也在不断的涌现,下面列出比较有名的框架。 


2.1. Apache Struts 


Struts是一个免费的开源的WEB层的应用框架,apache软件基金致力于struts的开发。Struts具是高可配置的性,和有一个不断增长的特性列表。一个前端控制组件,一系列动作类,动作映射,处理XML的实用工具类,服务器端java bean 的自动填充,支持验证的WEB 表单,国际化支持,生成HTML,实现表现逻辑和模版组成了struts的灵魂。 


2.1.1. Struts和MVC 


模型2的目的和MVC的目的是一样的,所以模型2基本可以和MVC等同起来。下图体现了Struts的运作机理: 


2.1.1.1. 控制 


如图所示,它的主要部件是一个通用的控制组件。这个控制组件提供了处理所有发送到Struts 的HTTP请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。另外控制组件也负责用相应的请求参数填充 From bean,并传给动作类。动作类实现核心商业逻辑,它可以通过访问java bean 或调用EJB。最后动作类把控制权传给后续的JSP 文件,后者生成视图。所有这些控制逻辑利用一个叫struts-config.xml文件来配置。 


2.1.1.2. 模型 


模型以一个或几个java bean的形式存在。这些bean分为三种: 


Form beans(表单Beans) 

它保存了HTTP post请求传来的数据,在Struts里,所有的Form beans都是 ActionFrom 类的子类。 

业务逻辑beans 

专门用来处理业务逻辑。 

系统状态beans 

它保存了跨越多个HTTP 请求的单个客户的会话信息,还有系统状态。 

2.1.1.3. 视图 


控制组件续传HTTP请求给实现了视图的JSP文件。JSP能访问beans 并生成结果文档反馈到客户。Struts提供JSP 标签库: Html,Bean,Logic,Template等来达到这个目的,并有利于分开表现逻辑和程序逻辑。 


2.1.2. Struts的细节分析 


2.1.2.1. 视图-控制-模型 


用户发出一个*.do的HTTP请求,控制组件接收到这个请求后,查找针对这个请求的动作映射,再检查是否曾创建过相应的动作对象(action实例),如果没有则调用actionmapping生成一个动作对象,控制组件会保存这个动作对象供以后使用。接着调用actionmapping的方法得到actionForm对象。之后把actionForm作为参数传给动作对象的perform方法,这个方法结束之后会返回给控制组件一个 actionforward对象。控制组件接着从这个对象中获取下一个视图的路径和重定向属性。如果为重定向则调用HTTPSERVLETREPONSE的方法来显示下一个视图,否则相继调用requestdispatcher, SERVLETcontext的方法续传HTTP请求到下一个视图。 


当动作对象运行perform方法时,可能出现错误信息。动作对象可以保存这些错误信息到一个error对象中,接着调用自身的saveerrors方法把这个错误保存到request对象的属性中。接着动作对象调用actionmapping对象的getInput方法从动作映射中获取input参数,也就是产生输入的视图,并以这个input为参数生成一个actionforward对象返回。这个input参数的JSP中一般有HTTP:errors定制标签读取这些错误信息并显示在页面上。 


2.1.2.2. 模型到视图 


模型到视图指视图在显示之前装载系统数据到视图的过程。系统数据一般为模型内java bean的信息。示意图表现了由控制组件forward过来的有html:form定制标签的JSP 的处理逻辑。 


html:form定制标签处理对象从application scope(通过查询SERVLETCONTEXT对象的属性来实现)获取先前由控制组件actionSERVLET放在那里的动作映射等对象,由html:form 的action属性查得actionform名字、类型和范围等信息,在相应的范围内查找actionform,如果有则利用它的信息填充html form表单[实际填充动作在嵌套的html:text等定制标签的处理对象中]。否则在相应范围内创建一个actionform 对象。 


2.1.3. 优缺点 


优点: 


一些开发商开始采用并推广这个框架 

作为开源项目,有很多先进的实现思想 

对大型的应用支持的较好 

有集中的网页导航定义 

缺点: 


不是业届标准 

对开发工具的支持不够 

复杂的taglib,需要比较长的时间来掌握 

html form 和 actionform的搭配比较封闭,但这也是它的精华所在。 

修改建议 

把actionform属性的设置器和访问器修改成读取或生成xml文档的方法,然后 html form和actionform之间用xml文档进行数据交换,使之松散耦合,适应数据结构易变化的应用。 


2.2. JATO 


JATO应用程序框架是iPlanet 应用程序框架的旧名。它是一个成熟的、强大的,基于J2EE标准的面向于开发WEB应用程序的应用框架。结合了显示字段、应用程序事件、组件层次和以页面为中心的开发方法、以及MVC和服务到工作者service-to-workers的设计模式等概念。JATO可适用于中、大、超大规模的WEB应用。但是它也不是一个企业层的应用框架,也就是说它不会直接提供创建EJB, WEB services等企业层组件的方法,但用它可以构造出访问企业层组件的客户应用。 


这个框架功能主要有三部分组成: 


iPlanet应用框架核心; 

iPlanet应用框架组件; 

iPlanet应用框架扩展。 

应用框架核心定义了基本接口、对象协议、简单组件,以及iPlanet应用框架程序的最小核心。包括视图简单组件、模型简单组件、请求分发组件和可重用命令对象。iPlanet应用框架组件利用框架核心定义的基本接口、协议和组件向开发者提供高层的重用组件,这些组件既有与特定视觉效果无关的水平组件,同时也有适应特定实用环境、提高可用性而特意提供的垂直型组件。框架扩展实现了用框架相容的方法访问非J2EE环境的方法。通常情况下,扩展被框架应用程序用来无缝访问J2EE容器特定功能。JATO平台栈图很清楚地表达了这个情况。 


JATO最大的威力在:对于快速开发用户,你能利用框架组件和扩展提高生产率,对于要求更大灵活性的用户,你能实现框架核心提供的接口来保持应用的框架兼容性。 

此图表示实现一个JATO应用程序,可以简单地实现控制组件module1Servlet,视图组件ListCustomersViewBean和模型组件CustomersModuleImpl,以及一个给客户代理显示界面的ListCustomers.jsp文件。并清楚地表明这些组件与JATO框架组件的继承关系。 


JATO标签库提供了VIEW对象与JSP文件的接口。库中标签处理程序负责实现VIEW对象和JSP产生地客户端文档的信息同步和交换。这个图清楚地表达了这种对应关系 


2.2.1. MVC分析 


前端控制组件接收用户发来的任何请求,这个可在WEB.xml中指定请求分发组件负责视图管理和导航,和前端控制组件封装在ApplicationSERVLETBase一起实现。应用程序开发者需要为每一个子系统(人力资源,财务,CRM等)实现一个此类的继承。 


请求分发组件分发请求给工作者,工作者实现了command接口。应用开发者可以实现这个接口。JATO提供了一个缺省实现:DefaultRequestHandingCommand,这个实现会把请求传给视图组件的特定事件。 


组合视图是指视图组件在显示给用户时的层次关系:根视图是一个ViewBean类的对象字段是一个DisplayField类的对象,容器视图是一个ContainerView类的对象。视图组件类的层次关系如下图: 


2.2.2. 优缺点分析 


优点: 


这种框架的适应范围大,即提供了底层接口,也有立即可用的组件 

具有与客户端RAD开发工具相似的开发概念如页为中心(等同于VB的FORM),事件处理等. 

对大型的应用支持较好 

缺点: 


不是业届标准 

目前还没有开发工具的支持(然JATO已经为工具支持做好了准备) 

没有定义网页导航,开发者在视图中自己指定具体的导航URL 

修改建议 

把众多的VIEW/MODEL对应修改成xml文档传递数据,加上集中的网页导航定义 


2.3. JSF(JavaServer Faces) 


JSF是一个包括SUN在内的专家组正在定义的开发WEB应用用户界面的框架,JSF 技术包括: 


一组API,它实现UI了组件,管理组件的状态,处理事件,输入校验,定义页面导航,支持国际化和访问; 

一个JSP定制标签库实现与JSP的接口。 

JSF非常简单,是一个定义良好的编程模型。利用这个技术,开发者通过在页面内组合可重用的UI组件,在把这些组件和应用的数据源相连,路由客户产生的事件到服务器端的事件处理器进行编程。JSP处理了所有幕后的复杂工作,使得开发者把关注重点放在应用代码上。 


2.3.1. STRUTS、JATO和JSF比较 


它们之间有部分重叠,但重点不一样。 


STRUTS和JATO都提供了一个MVC式的应用模型,而JSF只在用户界面上提供编程接口。这意味着前两者涉及的范围比后者广。JSF可以成为前两者在UI开发的部分。 

JSF的规范的发布版将在 2002年底发布,实现可能要比这个时间晚些。另外将会有工具支持这个框架的应用开发。 

2.4. WAF 


WAF是WEB APPLICATION FRAMWORK的简称,是SUN蓝皮书例子程序中提出的应用框架。它实现了 MVC和其他良好的设计模式。 


2.4.1. 细节分析 



2.4.2. 视图-控制-模型 


如图所示,开发人员编写的两个xml配置文件定义了WAF的运作参数。Screendefinition.xml定义了一系列的屏幕(screen)。Mapping.xml则定义了某个动作之后应该显示的屏幕,但没有指定屏幕到哪里拿数据。 


用户发出一个HTTP请求(*.screen),由TemplateSERVLET屏幕前端控制组件接收,它提取请求信息,设置request对象CurrentScreen属性,再把请求发到模版JSP。模版JSP收到请求后,JSP中的Template标签察看这个当前屏幕,并从屏幕定义文件(Screendefinition.xml)中获取这个屏幕的具体参数,再生成html返回给客户。 


假设返回给客户的html中包括了html表单,用户在输入一定数据之后提交,发出一个HTTP请求(*.do)。这个请求被MainSERVLET接收,它提取请求信息,察看动作映射文件(mapping.xml),设置处理这个请求的动作对象(HTTPAction对象),交给requestprosessor对象处理。Requestprosessor对象调用动作对象完成任务,如果需要进一步处理,requestprosessor对象会调用WEBclientcontroler对象的事件处理机制。MainSERVLET在处理完请求之后,从屏幕流管理对象那里得到下一个屏幕,并把请求传给这个屏幕的JSP文件。 


值得一提的是WEBclientcontroler事件处理机制最终把HTTP请求的数据传到了EJBAction对象那里处理。这样HTTPAction对象和EJBAction对象形成了两级处理机制,前一级与request对象紧密相关,把数据封装起来形成一个Event对象,再传给了EJBAction对象,后者与Request对象无关。这个方式可以形成一个session级别的数据处理机制。下图显示了这个方法。HTTPAction1对象处理一个请求,并把数据放到一个状态SessionBean内,HTTPAction2也如此,当HTTPAction3接收到HTTP请求之后,把控制传给EJBAction, 后者获取状态SessionBean数据,处理请求,成功后清控状态SessionBean的内容。这个机制非常适应多个输入页面才能满足一个业务的输入数据的情况(比如购物车)。 


2.4.3. 优缺点分析 


优点 


屏幕导航定义明确 

为框架的扩展提供了一个空间 

缺点 


源码比较乱,稳定性和可靠性没人验证。 

只是一个框架躯干,没有正式的model层,视图的概念不强 

没有模型到视图的定义 

修改意见 

只有一个框架躯干,正为实现自己的应用框架提供了灵活性。没有僵化的视图概念,提供了在网页输入到模型的扩充接口,比如插入XML数据交换。 
Java EE 常见性能问题解决手册
xuyy_cn 转贴   更新:2006-09-14 13:25:57  版本: 1.0   

这篇文章,是PRO JAVA EE 5 Performance Management and Optimization 的一个章节,作者Steven Haines分享了他在调优企业级JAVA应用时所遇到的常见问题。

  Java EE(Java企业开发平台)应用程序,无论应用程序服务器如何部署,所面对的一系列问题大致相同。作为一个JAVAEE问题解决专家,我曾经面对过众多的环境同时也写了不少常见问题的观察报告。在这方面,我觉得我很象一个汽车修理工人:你告诉修理工人发动机有声音,他就会询问你一系列的问题,帮你回忆发动机运行的情形。从这些信息中,他寻找到可能引起问题的原因。

  众多解决问题的方法思路基本相同,第一天我同要解决问题的客户接触,接触的时候,我会寻找已经出现的问题以及造成的负面的影响。了解应用程序的体系结构和问题表现出的症状,这些工作很够很大程度上提高我解决问题的几率。在这一节,我分享我在这个领域遇过的常见问题和他们的症状。希望这篇文章能成为你JAVAEE的故障检测手册。

  内存溢出错误

  最常见的折磨着企业级应用程序的错误是让人恐惧的outofmemoryError(内存溢出错误)

  这个错误引起下面这些典型的症状:

  ----应用服务器崩溃 
  ----性能下降 
  ----一个看起来好像无法结束的死循环在重复不断的执行垃圾收集,它会导致程序停止运行,并且经常导致应用服务器崩溃
  不管症状是什么,如果你想让程序恢复正常运行,你一般都需要重新启动应用服务器。

  引发out-of-memory 错误的原因

  在你打算解决out-of-memory 错误之前,首先了解为什么会引发这个错误对你有很大的帮助。如果JVM里运行的程序, 它的内存堆和持久存储区域的都满了,这个时候程序还想创建对象实例的话,垃圾收集器就会启动,试图释放足够的内存来创建这个对象。这个时候如果垃圾收集器没有能力释放出足够的内存,它就会抛出OutOfMemoryError内存溢出错误。

  Out-of-memory错误一般是JAVA内存泄漏引起的。回忆上面所讨论的内容,内存泄漏的原因是一个对象虽然不被使用了,但是依然还有对象引用他。当一个对象不再被使用时,但是依然有一个或多个对象引用这个对象,因此垃圾收集器就不会释放它所占据的内存。这块内存就被占用了,堆中也就少了块可用的空间。在WEB REQUESTS中这种类型的的内存泄漏很典型,一两个内存对象的泄漏可能不会导致程序服务器的崩溃,但是10000或者20000个就可能会导致这个恶果。而且,大多数这些泄漏的对象并不是象DOUBLE或者INTEGER这样的简单对象,而可能是存在于堆中一系列相关的对象。例如,你可能在不经意间引用了一个Person对象,但是这个对象包含一个Profile对象,此对象还包含了许多拥有一系列数据的PerformanceReview对象。这样不只是丢失了那个Person对象所占据的100 bytes的内存,你丢失了这一系列相关对象所占据的内存空间,可能是高达500KB甚至更多。

  为了寻找这个问题的真正根源,你需要判断是内存泄漏还是以OutOfMemoryError形式出现的其他一些故障。我使用以下2种方法来判断:

  ----深入分析内存数据 
  ----观察堆的增长方式
  不同JVM(JAVA虚拟机)的调整程序的运作方式是不相同的,例如SUN和IBM的JVM,但都有相同的的地方。

  SUN JVM的内存管理方式

  SUN的JVM是类似人类家族,也就是在一个地方创建对象,在它长期占据空间之前给它多次死亡的机会。

  SUN JVM会划分为:

  1 年轻的一代(Young generation),包括EDEN和2个幸存者空间(出发地和目的地the From space and the To space) 
  2 老一代(Old generation) 
  3 永久的一代(Permanent generation)
图1 解释了SUN 堆的家族和空间的详细分类

对象在EDEN出生就是被创建,当EDEN满了的时候,垃圾收集器就把所有在EDEN中的对象扫描一次,把所有有效的对象拷贝到第一个幸存者空间,同时把无效的对象所占用的空间释放。当EDEN再次变满了的时候,就启动移动程序把EDEN中有效的对象拷贝到第二个幸存者空间,同时,也将第一个幸存者空间中的有效对象拷贝到第二个幸存者空间。如果填充到第二个生存者空间中的有效对象被第一个生存者空间或EDEN中的对象引用,那么这些对象就是长期存在的(也就是说,他们被拷贝到老一代)。若垃圾收集器依据这种小幅度的调整收集(minor collection)不能找出足够的空间,就是象这样的拷贝收集(copy collection),就运行大幅度的收集,就是让所有的东西停止(stop-the-world collection)。运行这个大幅度的调整收集时,垃圾收集器就停止所有在堆中运行的线程并执行清除动作(mark-and-sweep collection),把新一代空间释放空并准备重启程序。

  图2和图3展示的是了小幅度收集如何运行

图2。对象在EDEN被创建一直到这个空间变满。

图3。处理的顺序十分重要:垃圾收集器首先扫描EDEN和生存者空间,这就保证了占据空间的对象有足够的机会证明自己是有效的。
图4展示了一个小幅度调整是如何运行的

图4:当垃圾收集器释放所有的无效的对象并把有效的对象移动到一个更紧凑整齐的新空间,它将EDEN和生存者空间清空。

  以上就是SUN实现的垃圾收集器机制,你可以看出在老一代中的对象会被大幅度调整器收集清除。长生命周期的对象的清除花费的代价很高,因此如果你希望生命周期短的对象在占据空间前及时的死亡,就需要一个主垃圾收集器去回收他们的内存。

  上面所讲解的东西是为了更好的帮助我们识别出内存泄漏。当JAVA中的一个对象包含了一个并不想要的一个指向其他对象的引用的时候,内存就会泄漏,这个引用阻止了垃圾收集器去回收它所占据的内存。采用这种机制的SUN 虚拟机,对象不会被丢弃,而是利用自己特有的方法把他们从乐园和幸存者空间移动到老一代地区。因此,在一个基于多用户的WEB环境,如果许多请求造成了泄漏,你就会发现老一代的增长。

  图5显示了那些潜在可能造成泄漏的对象:主收集器收集后遗留下来占据空间的对象会越来越多。不是所有的占据空间的对象都造成内存泄漏,但是造成内存泄漏的对象最终都占据者空间。如果内存泄漏的确存在,这些造成泄漏的对象就会不断的占据空间,直至造成内存溢出。

  因此,我们需要去跟踪垃圾收集器在处理老一代中的运行:每次垃圾收集器大幅度收集运行时,有多少内存被释放?老一代内容是不是按一定的原理来增长?

 图5。阴影表示在经过大幅度的收集后幸存下来的对象,这些对象是潜在可能引发内存泄漏的对象

  一部分这些相关的信息是可以通过跟踪API得到,更详细的信息通过详细的垃圾收集器的日志也可以看到。和所有的跟踪技术一样,日值记录详细的程度影响着JVM的性能,你想得到的信息越详细,付出的代价也就越高。为了能够判断内存是否泄漏,我使用了能够显示辈分之间所有的不同的较权威的技术来显示他们的区别,并以此来得到结果。SUN 的日志报告提供的信息比这个详细的程度超过5%,我的很多客户都一直使用那些设置来保证他们管理和调整垃圾收集器。下面的这个设置能够给你提供足够的分析数据:

  ?verbose:gc ?xloggc:gc.log ?XX:+PrintGCDetails ?XX:+PrintGCTimeStamps

  明确发现在整个堆中存在有潜在可能泄漏内存的情况,用老一代增长的速率才比较有说服力。切记调查不能决定些什么:为了能够最终确定你内存泄漏,你需要离线在内存模拟器中运行你的应用程序。

IBM JVM内存管理模式

  IBM的JVM的机制有一点不同。它不是运行在一个巨大的继承HEAP中,它仅在一个单一的地区维护了所有的对象同时随着堆的增长来释放内存。这个堆是这样运行的:在一开始运行的时候,它会很小,随着对象实例不断的填充,在需要执行垃圾收集的地方清除掉无效的对象同时把所有有效的对象紧凑的放置到堆的底部。因此你可能猜测到了,如果想寻找可能发生的内存泄漏应该观察堆中所有的动作,堆的使用率是在提高?

  如何分析内存泄漏

  内存泄漏非常难确定,如果你能够确定是请求导致的,那你的工作就非常简单了。把你的程序放入到运行环境中,并在内存模拟器中运行,按下面的步骤来:

  1. 在内存模拟器中运行你的应用程序 
  2. 执行使用方案(制造请求)以便让程序在内存中装载请求所需要的所有的对象,这可以为以后详细的分析排除不必要的干扰 
  3. 在执行使用方案前对堆进行拍照以便捕获其中所有运行的对象。 
  4. 再次运行使用方案。 
  5. 再次拍照,来捕获使用方案运行之后堆中所有对象的状态。 
  6. 比较这2个快照,找出执行使用方案后本不应该出现在堆中的对象。
  这个时候,你需要去和开发者交流,告诉他你所碰到的棘手的请求,他们可以判断究竟是对象泄漏还是为了某个目的特地让对象保留下来的。如果执行完后并没有发现内存泄漏的情况,我一般会转到步骤4再进行多次类似的跟踪。比如,我可能会将我的请求反复运行17次,希望我的泄漏分析能够得到17个情况(或更多)。这个方法不一定总有用,但如果是因为请求引起的对象泄漏的话,就会有很大的帮助。

  如果你无法明确的判断泄漏是因为请求引发的,你有2个选择:

  1. 模拟每一个被怀疑的请求直至发现内存泄漏 
  2. 存配置一个内存性能跟踪工具
  第一个选项在小应用程序中是确实可用的或者你非常走运的解决了问题,但对大型应用程序不太有用。如果你有跟踪工具的话第二个选择是比较有用的。这些工具利用字节流工具跟踪对象的创建和销毁的数量,他们可以报告特定类中的对象的数量状态,例如把Collections类作为特定的请求。例如,一个跟踪工具可以跟踪/action/login.do请求,并在它完成后将其中的100个对象放入HASHMAP中。这个报告并不能告诉你造成泄漏的是代码还是某个对象,而是告诉你在内存模拟器中应该留意那些类型的请求。把程序服务器放到产品环境中并不会使他们变敏感,而是跟踪性能的工具可以使你的工作变的更简单化。

  虚假内存泄漏

  少数的一些问题看起来是内存泄漏实际上并非如此。

  我将这些情况称为假泄漏,表现在下面几种情况:

  1. 分析过早 
  2. Session泄漏 
  3. 异常的持久区域
  这章节对这些假泄漏都进行了调查,描述了如何去判断这些情况以及如何处理.

  不要过早分析

  为了在寻找内存泄漏的时候尽量减少出现判断错误的可能性,你应当在适当的时候分析堆。危险是:一些生命周期长的对象需要装载到堆中,因此在堆达到稳定状态且包含了核心对象之前具有很大的欺骗性。在分析堆之前,应该让应用程序达到稳定状态。

  为了判断是否过早的对堆进行分析,持续2个小时对跟踪到的分析快照进行分析,看堆的使用率是上升还是下降。如果是下降,保存这个时候的内存记录。如果是上升,这个时候就需要分析内存中的SESSION了。
发生泄漏的session

  WEB请求经常导致内存泄漏,在一个WEB请求中,对象会被限制存储在有限的几个区域。这些区域就是:

  1. 页面区域 
  2. 请求区域 
  3. 上下文区域 
  4. 应用程序区域 
  5. 静态变量 
  6. 长生命周期的变量,例如SERVLET
  当实现一些JSP(JAVASERVER页面)时,在页面上声明的变量在页面结束的时候就被释放,这些变量仅仅在这个单独的页面存在时存在。WEB服务器会向应用程序服务器传送一系列参数和属性,也就是在SERVLET和JSP之间传输HttpServletRequest中的对象。你的动态页面依靠HttpServletRequest在不同的组件之间传输信息,但当请求完成或者socket结束的时候,SERVLET控制器会释放所有在HttpServletRequest 中的对象。这些对象仅在他们的请求的生命周期内存在。

  HTTP是无状态的,这意味着客户向服务器发送一个请求,服务器回应这个请求,这个传递就完成了,就是会话结束了。我们应该感激WEB页面帮我们做的日志,这样我们就能向购物车放置东西,并去检查它,服务器能够定义一个跨越多请求的扩展对话。属性和参数被放在各自用户的HttpSession对象中,并通过它让程序的SERVLET和JSP交流。利用这种办法,页面存储你的信息并把他们添加到HttpSession中,因此你可以用购物车购买东西,并检查商品和使用信用卡付帐。作为一个无状态的协议,它总是客户端发起连接请求,服务器需要知道一个会话存在多长时间,到时候就应该释放这个用户的数据。超过这个会话的最长时间就是会话超时,他们在程序服务器中设置。除非明确的要求释放对象或者这个会话失效,否则在会话超时之前会话中的对象会一直存在。

  正如session是为每个用户管理对象一样,ServletContext为整个程序管理对象。ServletContext的有效范围是整个程序,因此你可以利用Servlet中的ServletContext或者JSP应用程序对象在所有的Servlet和JSP之间让在这个程序中的所有用户共享数据。ServletContext是最主要的存放程序配置信息和缓存程序数据的地方,例如JNDI的信息。

  如果数据不是存储这个四个地方(页面范围,请求范围,会话范围,程序范围)那就可能存储在下面的对象中:

  1. 静态变量 
  2. 长生命周期的类变量
  每个类的静态变量被JVM(JAVA虚拟机)所控制,他们存在与否和类是否已经被初始化无关。一个类的所有实例共用一个存储静态变量的地方,因此在任何一个实例中修改静态变量会影响这个类的其他实例。因此,如果一个程序在静态变量中存放了一个对象,如果这个变量生命周期没有到,那么这个对象就不会被JVM释放。这些静态对象是造成内存泄漏的主要原因。

  最后,对象能够被放到内部数据类型或者长生命周期类中的成员变量中,例如SERVLET。当一个SERVLET被创建并且被装载到内存,它在内存中仅有一个实例,采用多线程去访问这个SERVLET实例。如果在INIT()方法中装载配置信息,将他存储于类变量中,那么当需要维护的时候就可以随时读出这些信息,这样所有的对象就用相同的配置。我常碰到的一个问题就是利用SERVLET类变量去存储象页面缓存这样的信息。在他们自己内部本身存贮这些缓存配置是个不错的选择,但存贮在SERVLET中是最糟糕的情况。如果你需要使用缓存,你最好使用第三方控制插件,例如 TANGOSOL的COHERENCE。

  当在页面或者请求范围中利用变量存放对象的时候,在他们结束的时候这些对象会自动释放。同样,在SESSION中存放对象的时候,当程序明确说明此SESSION失效的或者会话执行超时的时候,这些对象才会自动被释放。

  很多看起来象内存泄漏的情况都是上面的那些会话中的泄漏。一个造成泄漏的会话并不是泄漏了内存而是类似于泄漏,它消耗了内存,但最终这些内存都会被释放的。如果程序服务器发生内存溢出,判断是内存泄漏还是内存缺乏的最好的方法就是:停止所有向这个服务器所发的请求的对象,等待会话超时,看内存时候会被释放出来。这虽然不会一定能够达到你要的目的,但是这是最好的分段处理方法,当你装载测试器的时候,你应该先挂断你内容巨大的会话而不是先去寻找内存泄漏。

  通常来说,如果你执行了一个很大的会话,你应该尽量去减少它所占用的内存空间,如果可以的话最好能重构程序,以减少session所占据的内存空间。下面2种方法可以降低大会话和内存的冲突:

  1. 增大堆的空间以支持你的大会话 
  2. 缩短会话的超时时间,让它能够快速的失效
  一个巨大的堆会导致垃圾回收花费更多的时间,因此这不是一个好解决方法,但总比发生OutofMemoryError强。增加足够的堆空间以使它能够存储所有应该保存的有效值,也意味着你必须有足够的内存去存储所有访问你站点的用户的有效会话。如果商业规则允许的话最好能缩短会话超时的时间,以减少堆占用空间的冲突。

总结下,你应该依据合理性和重要性按下面的步骤依次去执行:

  1. 重构程序,尽量减少拥有session范围的变量所存储的信息量 
  2. 鼓励你的客户在他们使用完后,明确的释放会话 
  3. 缩短超时的时间,以便于让你内存尽快的得到回收 
  4. 增加你堆空间的大小
  无论如何,不要让程序范围级的变量,静态变量,长生命周期的类存储对象,事实上,你需要在内存模拟器中去分析泄漏。

  异常的持久空间

  容易误解JVM为持久空间分配内存的目的。堆仅仅存储类的实例,但JVM在堆中创建类实例之前,它必须把字节流文件(.class文件)装载到程序内存中。它利用内存中的字节流在堆中创建类的实例。JVM利用程序的内存来装载字节流文件,这个内存空间称为持久空间。图6显示了持久空间和堆的关系:它存在于JVM程序中,并不是堆的一部分。

Figure 6. The relationship between the permanent space and the heap

  通常,你可能想让你的持久空间足够大以便于它能够装载你程序所有的类,因为很明显,从文件系统中读取类文件比从内存中装载代价高很多。JVM提供了一个参数让你不的程序不卸载已经装载到持久空间中的类文件:

  ?noclassgc

  这个参数选项告诉JVM不要跑到持久空间去执行垃圾收集释放其中已经装载的类文件。这个参数选项很聪明,但是会引起一个问题:当持久空间满了以后依然需要装载新文件的时候JVM会怎么处理呢?我观测到的资料说明:如果JVM检测到持久空间还需要内存,就会调用主垃圾收集程序。垃圾收集器清除堆,但它并不会对持久空间进行任何操作,因此它的努力是白费的。于是JVM就再重新检测持久空间,看它是否满,然后再次执行程序,一遍的一遍重复。
 我第一次碰到这种问题的时候,用户抱怨说程序性能很差劲,并且在运行了几次后就出现了问题,可能是内存溢出问题。在我调查了详细的关于堆和程序内存利用的收集器的记录后,我迅速发觉堆的状态非常正常,但程序确发生了内存溢出。这个用户维持了数千的JSP页面,在装载到内存前把他们都编译成了字节流文件放入持久空间。他的环境已经造成了持久空间溢出,但是在堆中由于用了 -noclassgc 选项,于是JVM并不去释放类文件来装载新的类文件。于是就导致了内存溢出错误,我把他的持久空间改为512M大小,并去掉了 -noclassgc 参数。

  正像图7显示的,当持久空间变满了的时候,就引发垃圾收集,清理了乐园和幸存者空间,但是并不释放持久空间中的一点内存。

Figure 7. Garbage collection behavior when the permanent space becomes full. Click on thumbnail to view full-sized image.

  注意

  当设置持久空间大小时候,一般考虑128M,除非你的程序有很多的类文件,这个时候,你就可以考虑使用256M大小。如果你想让他能够装载所有的类的时候,就会导致一个典型的结构错误。设置成512M就足够了,它仅仅是暂时的时间的花费。把持久空间设置成512M大小就象给一个脚痛的人吃止痛药,虽然暂时缓解了痛,但是脚还是没有好,依然需要医生把痛治疗好,否则只是把问题延迟了而已。

  线程池

  外界同WEB或程序服务器连接的主要方法就是向他们发送请求,这些请求被放置到程序的执行次序队列中。和内存最大的冲突就是程序服务器所设置的线程池的大小。线程池的大小就是程序可以同时处理的请求的数量。如果池太小,请求就需要在队列中等待程序处理,如果太大,CPU就需要花费太多的时间在这些众多的线程之间来回的切换。

  每个服务器都有一个SOCKET负责监听。程序把接受到的请求放到待执行队列中,然后将这个请求从队列移动到线程中被程序处理。

  图8显示了服务器的处理程序。

Figure 8. 服务器处理请求的次序结构
线程池太小

  每当我碰到有人抱怨装载速度的性能随着装载的数量的增加变的越来越糟糕的时候,我会首先检查线程池。特别是,我在看到下面这些信息的时候:

  1.线程池的使用 
  2.很多请求等待处理(在队列中等待处理)
  当一个线程池被待处理的请求装满的时候,响应的时间就变的极其糟糕,因为这些在队列中等待处理的请求会消耗很多的额外时间。这个时候,CPU的利用率会非常低,因为程序服务器没有时间去指挥CPU工作。这个时候,我会按一定幅度增加调节池的大小,并在未处理请求的数量减少前一直监视程序的吞吐量,你需要一个合理甚至更好的负载量者,一个精确的负载量测试工具可以准确的帮你测试出结果。当你观测吞吐量的时候,如果你发现吞吐量降低了,你就应该把池的大小下调一个幅度,一直到找到让它保持最大吞吐量的大小为止。

  图9显示了连接池太小的情况

Figure 9. 所有的线程都被占用了,请求就只能在队列中等待

  每当我阅读性能调整手册的时候,最让我头疼的就是他们从来不告诉你特殊情况下线程池应该是多大。由于这些值非常依赖程序的行为,他们只告诉你大普通情况下正确的大小,但是他们给了你一个范围内的值,这对用户很有利的。例如考虑下面2种情况::

  1. 一个程序从内存中读出一个字符串,把它传给JSP页面,让JSP页面去显示 
  2. 另一个程序从数据库中读出1000个数值,为这些不规则的数值求平均。第一个程序对请求的回应会很块,大概仅需要不足0.25秒的时间,且不怎么占据CPU。第二个程序可能需要3秒去回应,同时会占据CPU。因此,为第一个程序配置的池大小是100就有点太小了,因为程序能够同时处理200个;但为第二个程序配置的池是100,就有点太大了,因为CPU可能就能应付50个线程。
  但是,很多程序并没有在这种情况下动态的去调整的功能。多数情况下是做相同的事,但是应该为他们划分范围。因此,我建议你为一个CPU分配50到75个左右的线程。对一些程序来说,这个数量可能太少,对另一个些来说可能太多,我刚开始为每个CPU分配50到75个线程,然后根据吞吐量和CPU的性能,并做适当的调整。

  线程池太大

  除了线程池数量太小之外的情况外,环境也可能把线程数量配置的过大。当这些环境中的负载量不断增大的时候,CPU的使用率会持续无法降低,就没有什么响应请求的时间了,因为CPU只顾的在众多的线程之间来回的切换跳动,没时间让线程去做他们应该做的事了。

  连接池过大的最主要的迹象就是CPU的使用率一直很高。有些时候,垃圾收集也可能导致CPU使用率很高,但是垃圾收集导致的CPU使用率很高和池过大导致的使用率有一个主要的区别就是:垃圾收集引起的只是短时间的高使用率就象个钉子,而池过大导致的就是一直持续很高呈线性。

  这个情况发生的时候,请求会被放在队列中不被处理,但是不会始终如此,因为请求占用CPU的情况和程序占用的情况造成的后果不同。降低线程池的大小可能会让请求等待,但是让请求等待总比为了处理请求而让CPU忙不过来的好。让CPU保持持续的高使用率,同时性能不降低,新请求到来的时候放入到队列中,这是最理想的程序。考虑下面这个很类似的情况:很多高速公里有交通灯来保证车辆进入到拥挤的公里中。在我看来,这些交通灯根本没用,道理很充分。比如你来了,在交通灯后面的安全线上等待进入到高速公路上。如果所有的车辆都同时涌向公里,我们就动弹不得,但是只要减缓涌向高速公路车辆的速度,交通迟早会畅通。事实上,很多的大城市都有这样功能,但根本没用,他们真正需要的是一些更多的小路(CPU),涌向高速公路的速度真的降低了,那么交通会变的正常起来。

设置一个饱和的池,然后逐步减少连接池大小,一直到CPU占用率为75%到85%之间,同时用户负载正常。如果等待队列大小实在无法控制,考虑下面2中建议:

  1.把你的程序放入代码模拟器运行,调整程序代码 
  2.增加额外的硬件
  如果你的用户负载超过了环境能承受的范围,你应该考虑修正代码减少和CPU的冲突或者增加CPU。

  JDBC连接池

  很多JAVA EE 程序连接到一个后台数据源,大多数是通过JDBC(JAVA DATABASE CONNECTIVITY)将程序和后台连接起来。由于创建数据库连接的代价很高,程序服务器让在同一个程序服务器实例下的所有程序共享特定数量的一些连接。如果一个请求需要连接到数据库,但是数据库的连接池无法为这个请求创建一个新连接,这个时候请求就会停下来等待连接池完成自己的操作再给她分配一个连接。反过来,如果数据库连接池太大程序服务器就会浪费资源,并且程序有可能强迫数据库承受过量的负荷。我们调试的目的就是尽量减少请求的等待时间和饱和的资源之间之间的冲突,让一个请求在数据库外等待要比强迫数据库好的多。

  一个程序服务器如果设置连接的数量不合理就会有下面这些特征:

  1.程序运行速度缓慢 
  2.CPU使用率低 
  3.数据库连接池使用率非常高 
  4.线程等待数据库的连接 
  5.线程使用率很高 
  6.请求队列中有待处理的请求(潜在的) 
  7.数据库CPU使用率很低(因为没有足够的请求能够让他繁忙起来)
  JDBC prepared statements

  和JDBC相关的另一个重要的设置就是:为JDBC使用的statement 所预设的缓存的大小。当你的程序在数据库中运行SQL statement 的时候三下面3个步骤进行:

  1.准备 
  2.执行 
  3.返回数值
  在准备阶段,数据库驱动器让数据库完成队列中的执行计划。执行的时候,数据库执行语句并返回指向结果的引用。在返回的时候,程序重新描述这些结果并描述出这些被请求的信息。

  数据库驱动会这样优化程序:首先,你需要去准备一个statement ,这个statement 它会让数据库做好执行和缓存结果的准备。在此同时,数据库驱动会从缓存中装载已经准备好的statement ,而不用直接连接到数据库。

  如果prepared statement 设置太小,数据库驱动器会被迫去查询没有装载进缓存区的statement ,这就会增加额外的连接到数据库的时间。prepared statement 缓存区设置不恰当最主要的症状就是花费大量的时间去连接相同的statement。这段被浪费的时间本来是为了让它去装载后面的调用的。

  事情变的稍微复杂了点,缓存prepared statement 是每个statement的基础,就是说在一个statement连接之前都应当缓存起来。这个增加的复杂性就产生了一个冲突:如果你有100个prepared statement需要去缓存,但你的连接池中有50个数据库连接,这个时候你就需要有存放5000条预备语句的内存。

  通过跟踪性能,确定出你程序所执行的不重复的statement 的数量,并从这些statement 中找出哪些条是频繁执行的。

  Entity bean(实体BEAN)和stateful session bean的缓冲

  无状态(stateless)对象可以被放入到池中共享,但象Entity beans和 stateful session bean这样的有状态的对象就需要被缓存,因为这些bean的每个实例都是不相同的。当你需要一个有状态对象时,你需要明确创建这个对象的特定实例,普通的实例是不能满足的。类似的,你考虑一个超市类似的情况,你需要个售货员但他叫什么并不重要,任何售货员都可以满足你。也就是,售货员被放入池中共享,因为你只需要是售货员就可以,而不是一个叫做史缔夫的这个售货员。当你离开超市的时候,你需要带上你的孩子,不是其他人的孩子,而是你自己的。这个时候,孩子就需要被缓存。

Figure 10. The application requests an object from the cache that is in the cache, so a reference to that object is returned without making a network trip to the database
当你的缓存区太小的时候,缓存的性能就会明显的受到影响。特别是,当一个请求去一个已经满了的缓存区域去请求一个对象的时候,下面的步骤就会执行,这些步骤会在图11中显示:

  1. 程序请求一个对象 
  2. 缓存检测这个对象是否已经存在于缓存中 
  3. 缓存决定把一个对象开除出缓存(一般采用的算法是遗弃最近使用次数最少的对象) 
  4. 把这个对象扔出缓存(称为passivated) 
  5. 把从数据库中装载这个新对象并放入到缓存(称为activated) 
  6. 把指向这个对象的引用返回给程序

 Figure 11. Because the requested object is not in the cache, an object must be selected for removal from the cache and removed from it.

  如果多数的请求都需要执行这些步骤的话,那你采用缓存技术就不是好的选择了!如果这些处理步骤频繁发生的话,你就需要重新推敲下你的缓存了。回忆一下:从缓存中去除一个对象称为passivation,从持久存储区取出一个对象放入缓存称为activation。能在缓存中找到的请求(缓存中有此请求的对象)的百分率称为hit ratio,相反找不到的请求的百分率称为miss ratio。

  缓存刚被初始化的时候,hit ratio是0,它的activation数量非常高,因此在初始化后你需要去观察缓存的性能。初始化以后,你应该跟踪passivation的数量并把它和与向缓存请求对象的请求的总量相比较,因为passivations只会发生在缓存被初始化以后。但一般来说,我们更需要关心缓存的miss ratio。如果miss ratio超过25%,那么缓存可能是太小了。因此,如果missratio的数量超过75%,那么不是你的缓存设置的太小就是你不需要缓存这个技术。

  一旦你觉得你的缓存太小,就去尝试着增大大小,并测试增加的性能。如果miss ration下降到20%以下,那你的缓存的大小就非常棒了,如果没有什么效果,那么你就需要和这个程序的技术员联系,看是这个对象是不是需要缓存或者是否应该修正程序中这个对象的代码。

  Staless session bean和message-driven bean池

  Stateless session bean 和message-driven bean 在商业应用方面很重要,不要期望它们会保持自己特有的状态信息。当你的程序需要使用这些BEAN的商业功能的时候,它就从一个池中取出一个BEAN实例,用这个实例来调用一个个方法,用完后再将BEAN的实例再放回到池中。如果你的程序过了一会又需要这个一摸一样的BEAN,就从池中再得到一个实例,但不能保证你得到的就是上一个实例。池能够让程序共享资源,但是会让你的程序付出潜在的等待时间。如果你无法从池中得到想要的BEAN,请求就会等待,一直到这个BEAN被放入到池中。很多程序服务器都会把这些池调整的很好,但是我碰到过因为在环境中把他们设置的太小而引发的不少麻烦。Stateless bean池的大小应该和可执行线程池的大小一般大,因为一个线程同时只能使用一个对象,再多了就造成浪费的。因此,一些程序服务器把池的大小和线程的数量设置成同样的数量。为了保险起见,你应该亲自把它设置成这个数。
事务

  使用Enterprise Java的一个好处就是它天生就支持事务。通过JAVAEE 5 EJB(Enterprise javaBeans)的注释,你可以控制事务中方法的使用。事务会以下面2中方式结束:

  1. 事务提交 
  2. 事务回滚
  当一个事务被提交的时候,说明它已经完全成功了,但是当它回滚的时候,就说明发生了一些错误。回滚会是下面2种情况:

  1. 程序造成的回滚(程序回滚) 
  2. 非程序造成的回滚(非程序回滚)
  通常,程序回滚是因为商业的规定。比如一个WEB程序做一个素描画的价格的调查,程序可能让用户输入年龄,并且商业规定18岁以上才可以进入。如果一个16岁的提交了信息,那么程序就会抛出一个错误,打开一个网页告诉他,他年龄还不能参与到这个信息的调查。因为程序抛出了异常,因此包含在程序中的事务的就会发生回滚。这只是普通的程序回滚,只有当发生大量的程序回滚才值得我们注意。

  另一方面,非程序回滚是非常糟糕的。有三种情形的非程序回滚:

  1. 系统回滚 
  2. 超时回滚 
  3. 资源回滚
  系统回滚意味着程序服务器中的一些东西非常的糟糕,恢复的几率很渺茫。超时回滚就是当程序服务器中的程序处理请求时超时;除非你把超时设置的很短才会出现这种错误。资源回滚就是当一个程序服务器管理内部的资源的时候发生错误。例如,如果你设置你的程序服务器通过一个简单的SQL语句去测试数据库的连接,但数据库对于程序服务器来说是无法连接的,这个时候任何和这个资源相关的事情都会发生资源回滚。

  如果发生非程序回滚,我们应该立刻注意,这个是不小的问题,但是你也需要留意程序回滚发生的频率。很多时候人们对发生的异常很敏感,因此你需要哪些异常对你程序来说才是重要的。

  总结

  尽管各个程序和他们的环境都各不相同,但是有一些共同的问题困扰着他们。这篇文章的注意力并不是放在程序代码的问题上,因为把注意力放在因为环境的问题而导致的低性能的问题上:

  1.内存溢出 
  2.线程池大小 
  3.JDBC连接池大小 
  4.JDBC预先声明语句缓存大小 
  5.缓存大小 
  6.池大小 
  7.执行事务时候的回滚
  为了有效的诊断性能的问题,你应该了解什么问题会导致什么样的症状。如果主要是程序的代码导致的恶果那你应该带着问题去寻求负责代码的人寻求帮助,但是如果问题是由环境引起的,那么就要依靠你的操作来解决了。

  问题的根源依赖于很多要素,但是一些指示器可以增加一些你处理问题时候的一些信心,依靠他们可以完全排除一些其他的原因。我希望这个文章能对你排解JAVAEE环境问题起到帮助。
posted @ 2007-03-31 21:13 MEYE 阅读(2039) | 评论 (0)编辑 收藏
     摘要: Java怎样调用外部应用程序 [转贴]    ...  阅读全文
posted @ 2007-03-31 20:20 MEYE 阅读(3904) | 评论 (0)编辑 收藏

Java6印象:桌面应用胜出者

         Java beta已经发布了,虽然离正式的FCS还有一段时间,一个朋友还是急不可耐地下载了Java6进行试用,他认为Java6将会给Java桌面开发带来革命性的变化。

         最近发版的Java6(Mustang)beta是功能齐全足够稳定的版本,我下载并在第一周测试了这一版,我尤其被它的桌面功能所吸引,除了命名习惯改变了(2不再Java SE中出现),在许多新功能上都值得探索。改进总的来说分为两类:桌面开发和内核。

         桌面开发改进主要体现在用户界面(UI)效率以及本地操作系统桌面集成上。核心改进主要集中在增加开发效率和Java应用管理上。Sun的Mustang开发小组对Web服务和安全改进做了很多重要的努力。

         总的来说,不管你是应用开发者、系统管理员、工具提供商或者安全专家,Java6都为你提供你想要的。本文描述了一些我用过的有趣新功能。

内核功能和改进

         Java内核是Java的几个部分,包括语言和工具,这些是Java其他方面的基础,从用户界面API到服务类库。下面我细分小类描述Java内核以及Java6的改进。

开发效率

         新的Java编译器API允许在Java应用程序中编译Java代码。在编译的时候,应用程序能够访问格式化的类库依赖信息、警告信息、错误信息以及编译中产生的其他消息(该功能已经被netbeans6.0集成进去,实现新的Javac API,并籍此提高错误信息的提示)。尽管此项功能我不会经常用到,但是我已经发现它的新用处了。比如,用它为应用程序数据库迅速生成数据访问层。我写的代码生成并编译访问应用程序数据库的类,最终生成jar文件,这些jar文件产生、生成之后作为系统的一部分部署到Ant脚本中。在应用程序中生成并编译使得代码生成变得可以互动起来,我可以不断修改并反复生成这些类。

         为使用Java的脚本功能,Java6支持了JSR223,JSR223提供脚本语言访问Java内部的框架,你可以在运行时定位并启动脚本引擎来运行你指定的脚本。另外,Web脚本框架还允许脚本在任何Servlet容器内生成Web页面。

         对于调试来说,Java平台调试接口(JPDA)增强了检测死锁以及为被锁定监控对象产生堆栈跟踪的功能。此外,Java6添加了允许客户程序attach到一个正在运行的虚拟机进行诊断的功能。

应用程序管理

         Java6增强了内存泄漏分析和检测,在java.lang.OutOfMemory异常中包含了所有跟踪栈的信息,并能当堆栈溢出时时产生致命错误的日志。另外,增添了一个新的虚拟机选项允许你当堆栈溢出时调用某段脚本。

         JMX监控API的增强允许应用程序在MBean属性值(包括那些包含在复杂类型内的)超出临界值时发送事件消息。

         对于Solaris10用户,Solaris的Hotspot JVM为Solaris的DTrace系统调试工具提供钩子来追踪和显示虚拟机内部活动,比如垃圾收集器、类加载、线程、锁等等。参加JavaOne大会时,我观看此项功能的演示,深深被DTrace工具调试的深度所吸引。应用程序运行时,DTrace允许你在任何地方中断代码的运行,查看所有加载的库(不仅仅是Java类库,还包含系统类库),跟踪到Solaris内核直至硬件!Java提供的这个令人惊讶的新工具让系统调试成为可能。我现在还记得过去经常会遇到虚拟机中报出Solaris Signal-8的错误,此新功能能帮我一探究竟。

Web服务

          Java6包含了一些新的API来支持Web服务。XML数字签名API允许你对XML数据进行加密,从而安全地使用基于Java的Web服务,Java-XML Web服务(JAX-WS)2.0 API更新了以前称作JAX-RPC的接口。Java-XML绑定(JAXB)2.0的增强包括XML Schecma支持以及将类直接绑定到Schema上。最后,XML流API(STaX)提供了双向应用程序接口通过事件流来读写XML,包括跳过某些部分,只处理于文档的某些部分。

安全

          Java6的安全包括GSS/Kerberos集成,LDAP认证的Java认证及授权服务(JAAS),允许Java应用程序通过多种协议请求安全证书的安全证书请求框架。

桌面功能和改进

         很长一段时间内Java被认为是优秀的服务器段软件语言,而在桌面GUI应用方面被认为是次等公民。Sun的Java桌面开发小组一直致力于改变这种看法,将Java同本地操作系统更紧密的集成,结果在Java6中不仅提高了用户界面效率,还改进了Java GUI应用程序的表现。

         Java6的许多新的桌面功能基于JDIC项目,JDIC项目让Java应用程序可以访问本地操作系统的许多功能,比如浏览器、email编辑器、文件类型关联、系统托盘、应用程序启动以及打印等等。下面是Java6在桌面开发上的明显改进:

启动画面支持

         启动画面告诉用户等待应用程序启动。Java6甚至提供了在虚拟机启动之前展现启动画面的支持。

Java基础类(JFC)以及Swing改进

         Java6调整了Windows API,使Swing既提高了运行速度,又保证了当前Windows版本的Windows外观。

  • 增强了布局管理器,加入了自定义布局管理器以及其他简化界面组件的布局器。
  • 极大的增强了Swing的drag-and-drop功能,使其更加灵活。
  • 真双缓冲机制提供了快速平滑的界面切换。
  • 系统托盘支持,在java.awt中增添了两个新类SystemTray和TrayIcon,允许你在Windows和Gnome Linux系统托盘上添加图标、tool tips、以及弹出菜单。系统托盘是所有应用程序共享的桌面领域,通常位于桌面的左下角,动作事件允许Java应用程序跟踪你放入托盘上图标鼠标点击事件。我发现这个新功能对我的服务器端程序也有用,比如和下文所提到的Desktop API结合使用能容易地为应用程序管理员启动管理页面浏览器。不管是什么操作系统(Linux还是Windows),我不再需要记住应用程序管理端口或者URL,只需要点击图标,页面就出现了。
  • JTable的增强打印的支持。
  • Java2D的增强:增强了文本显示质量,特别是在液晶(LCD)显示器上,同本地桌面字体反走样设置集成确保了文本显示的一致性。
  • 新的java.awt.Desktop的API:Java6新的Desktop包目的是使Java用户界面程序成为一等公民。使用该包,Java应用程序能够启动缺省的浏览器和电子邮件客户端,并且和普通桌面应用程序(比如OpenOffice)集成,能够打开、编辑并且打印特定类型的文件。Desktop包通过动作事件(Desktop.Action)来提供此项功能,让你能集成到你的应用系统中。

国际化

           Java6为某些格式支持可插拔式支持,比如日期格式化、Unicode文本标准化以及资源bundle。

         Java6有可能使Java桌面应用产生革命的变化,就像java 2曾经产生的服务器端革命一样。我们最好为这场风暴做好准备,为早期投入Java桌面市场得到的报偿摆好姿态。

posted @ 2007-03-30 20:32 MEYE 阅读(668) | 评论 (0)编辑 收藏
     摘要: 数据库连接池的原理机制 转贴   ...  阅读全文
posted @ 2007-03-27 22:01 MEYE 阅读(7777) | 评论 (0)编辑 收藏