宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒

Linux和Mysql常用命令

本人经常用到的命令,在这里做下记录。
 

.tar.bz2

解压:tar jxvf FileName.tar.bz2 压缩:tar jcvf FileName.tar.bz2 DirName

.gz
解压1:gunzip FileName.gz   解压2:gzip -d FileName.gz 压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz 压缩:tar zcvf FileName.tar.gz DirName

.rpm
解包:rpm2cpio FileName.rpm | cpio -div
.deb
解包:ar p FileName.deb data.tar.gz | tar zxf -

从远程scp到本地:

scp root@192.168.2.100:/opt/test/* /opt/test ,输入远程机器密码后完成

scp -P 3588  root@192.168.2.100:/opt/test/* /opt/test 走特殊端口号


从本地scp到远程:

scp /opt/test/*  root@192.168.2.100:/opt/test ,输入远程机器密码后完成

使用方式 : chmod [-cfvR] [--help] [--version] mode file…

使用方式 :chown jessie:users file1.txt 

Mysql 初始化:chkconfig –add mysqld

正在使用的端口:netstat -ant

挂载USB: mount  /dev/sdc /mnt/usb

Rpm 安装: rpm –ivh filename

www服务配置:/etc/httpd/conf/httpd.conf

网络测试:curl -I http://www.job5156.com

改IP地址:ifconfig eth0 192.168.2.29 netmask 255.255.255.0

改网关:route add default gw 192.168.2.254   查看:route –n

改DNS:nano -w /etc/resolv.conf  

导出表结构:mysqldump -u root -p -d –add-drop-table dbName tableName > /opt/name.sql

导入表结构:mysql dbName < name.sql

修复Mysql表: mysqlrepair –auto-repair -F -r dbName  tableName

给mysql用户加账号权限: grant all on dbName.* to user@’%’ identified by ‘pwd’; FLUSH PRIVILEGES;

加字段:ALTER TABLE table_name ADD field_name field_type;

删字段:alter table t2 drop column c;

字段重命名:alter table t1 change a b integer;

表重命名:alter table t1 rename t2;

加索引:alter table tablename add index 索引名 (字段名1[,字段名2 …]);

删索引:alter table tablename drop index emp_name;

Apache tomcat 日志分析

最近在寻找这方面的资料:

1,查看apache进程:
ps aux | grep httpd | grep -v grep | wc -l

2,查看80端口的tcp连接:
netstat -tan | grep “ESTABLISHED” | grep “:80″ | wc -l

3,通过日志查看当天ip连接数,过滤重复:

cat access_log | grep “24/Jul/2007″ | awk ‘{print $2}’ | sort | uniq -c | sort -nr

4,当天ip连接数最高的ip都在干些什么(原来是蜘蛛):
cat access_log | grep “24/Jul/2007:00″ | grep “61.135.166.230″ | awk ‘{print $8}’ | sort | uniq -c | sort -nr | head -n 10

5,当天访问页面排前10的url:

cat access_log | grep “24/Jul/2007:00″ | awk ‘{print $8}’ | sort | uniq -c | sort -nr | head -n 10

6,用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr
接着从日志里查看该ip在干嘛:
cat access_log | grep 220.181.38.183| awk ‘{print $1″\t”$8}’ | sort | uniq -c | sort -nr | less

7,查看某一时间段的ip连接数:
grep “2006:0[7-8]” www20060723.log | awk ‘{print $2}’ | sort | uniq -c| sort -nr | wc -l

2010-03-04UML

没有评论
1,508 Views

EA与Rose UML建模工具比较

          EA与Rose UML建模工具比较  自从1997年正式发布UML以后,大量商用UML建模CASE工具粉墨登场。这样为我们提供了许多的选择,同时也要求我们在选择正确的UML建模工具以更好地适应我们业务和软件应用程序开发需求,达到最好的投资回报率(ROI)方面做大量的调查。在这篇文章中,我们将比较两款CASE工具的UML建模能力、双向工程特性和项目生命周期支持:Sparx Systems的Enterprise Architect(EA)专业版V.3.51和IBM Rational的Rational Rose企业版V.2002。

  为什么我们需要UML建模CASE工具

  今天,系统的构建变得越来越复杂,UML建模CASE工具为项目相关人员(如,项目经理,分析员,设计者,构架师,开发者等)提供了许多的好处。UML建模CASE工具允许我们应用规范的面向对象分析和设计的方法与理论,远离纠缠不清的源代码,达到构建和设计变得更直观,更容易地理解与修改的层次。在大型项目中,使用CASE工具更重要。通过使用CASE工具:

  * 通过用例模型,业务/系统分析可以捕获到业务/系统需求。

  * 设计者/构架师所作的设计模型能在不同层次的同一层内清晰表达对象或子系统之间的交互(典型的UML图如类图和交互图)。

  * 开发者能快速地将模型转变为一个可运行的应用程序,寻找类和方法的子集,以及理解它们如何交互。

  模型被看作是蓝图和构建系统的最终手册。同样,建模也就是一种从高层并以适当的形式来考虑一个设计的表述和理解它怎样运行的能力。

  出于这些动机,UML CASE工具以及对应的方法论为我们提供了一种因系统太复杂而不能理解下层源代码的描述系统的方法,同时允许我们更快更便宜地开发正确的软件解决方案。

  当然,要考虑CASE工具在UML建模能力,项目生命周期支持,双向工程,数据建模,性能,价格,可支持性,易使用性等方面的不同。这篇文章将探索Rose与EA在UML建模,项目生命周期支持以及双向工程领域的相同点和不同点,希望能帮助你在你的项目中选择正确的工具。

  UML建模特性

  UML标准由三部分组成,即:构造块(如对象,类,消息),构造块间的关系(如关联,泛化)和图(如,活动图)。UML profile使用UML可扩展性机制扩展标准UML符号,即,构造型,标注值和约束。EA专业版V.3.51和Rational Rose V.2002.05都支持UML 1.4 九种图中的八种标准UML图 – 用例图,类图,序列图,协作图,活动图,状态图,实现图(组件)图,部署图,和几种UML Profiles. 如果需要,对象图可以使用协作图来创建。不同点仅仅存在于创建UML图(表1)和扩展UML profiles时所支持的一些特性。

UML图 功能 EA Rose
用例图 建立描述领域的边界 Yes No.但是,一些工作使用文本或包。
序列 协作 序列图与协作图之间的相互转化 No Yes
序列 更改消息的范围 Yes No
序列 显示消息层次号码 Yes No
序列协作 在浏览器中创建对象 Yes No
序列 管理控件的焦点 容易 困难
所有 图的属性 Yes No

                  表1. EA和Rose的UML图建模比较

  Enterprise Architect 有一个通用的UML profile机制用来加载和运行不同的Profiles。Enterprise Architect为UML profiles指定一个特定格式的XML文件。而在Rational Rose中却需要生成一个附加项。

  表2展示了在EA和Rose中UML profiles的可用性。

UML Profiles EA Rose
业务流程建模 支持Eriksson-Penker业务流程建模扩展 使用UML活动图
业务建模 No Yes
数据建模 Yes Yes
用户体验建模 Yes No
Web建模 Yes Yes
Yes No Yes
XML DTD No

                   表2. EA和Rose的UML Profile比较  

EA与Rose UML建模工具比较  自从1997年正式发布UML以后,大量商用UML建模CASE工具粉墨登场。这样为我们提供了许多的选择,同时也要求我们在选择正确的UML建模工具以更好地适应我们业务和软件应用程序开发需求,达到最好的投资回报率(ROI)方面做大量的调查。在这篇文章中,我们将比较两款CASE工具的UML建模能力、双向工程特性和项目生命周期支持:Sparx Systems的Enterprise Architect(EA)专业版V.3.51和IBM Rational的Rational Rose企业版V.2002。

  为什么我们需要UML建模CASE工具

  今天,系统的构建变得越来越复杂,UML建模CASE工具为项目相关人员(如,项目经理,分析员,设计者,构架师,开发者等)提供了许多的好处。UML建模CASE工具允许我们应用规范的面向对象分析和设计的方法与理论,远离纠缠不清的源代码,达到构建和设计变得更直观,更容易地理解与修改的层次。在大型项目中,使用CASE工具更重要。通过使用CASE工具:

  * 通过用例模型,业务/系统分析可以捕获到业务/系统需求。

  * 设计者/构架师所作的设计模型能在不同层次的同一层内清晰表达对象或子系统之间的交互(典型的UML图如类图和交互图)。

  * 开发者能快速地将模型转变为一个可运行的应用程序,寻找类和方法的子集,以及理解它们如何交互。

  模型被看作是蓝图和构建系统的最终手册。同样,建模也就是一种从高层并以适当的形式来考虑一个设计的表述和理解它怎样运行的能力。

  出于这些动机,UML CASE工具以及对应的方法论为我们提供了一种因系统太复杂而不能理解下层源代码的描述系统的方法,同时允许我们更快更便宜地开发正确的软件解决方案。

  当然,要考虑CASE工具在UML建模能力,项目生命周期支持,双向工程,数据建模,性能,价格,可支持性,易使用性等方面的不同。这篇文章将探索Rose与EA在UML建模,项目生命周期支持以及双向工程领域的相同点和不同点,希望能帮助你在你的项目中选择正确的工具。

  UML建模特性

  UML标准由三部分组成,即:构造块(如对象,类,消息),构造块间的关系(如关联,泛化)和图(如,活动图)。UML profile使用UML可扩展性机制扩展标准UML符号,即,构造型,标注值和约束。EA专业版V.3.51和Rational Rose V.2002.05都支持UML 1.4 九种图中的八种标准UML图 – 用例图,类图,序列图,协作图,活动图,状态图,实现图(组件)图,部署图,和几种UML Profiles. 如果需要,对象图可以使用协作图来创建。不同点仅仅存在于创建UML图(表1)和扩展UML profiles时所支持的一些特性。

UML图 功能 EA Rose
用例图 建立描述领域的边界 Yes No.但是,一些工作使用文本或包。
序列 协作 序列图与协作图之间的相互转化 No Yes
序列 更改消息的范围 Yes No
序列 显示消息层次号码 Yes No
序列协作 在浏览器中创建对象 Yes No
序列 管理控件的焦点 容易 困难
所有 图的属性 Yes No

                  表1. EA和Rose的UML图建模比较

  Enterprise Architect 有一个通用的UML profile机制用来加载和运行不同的Profiles。Enterprise Architect为UML profiles指定一个特定格式的XML文件。而在Rational Rose中却需要生成一个附加项。

  表2展示了在EA和Rose中UML profiles的可用性。

UML Profiles EA Rose
业务流程建模 支持Eriksson-Penker业务流程建模扩展 使用UML活动图
业务建模 No Yes
数据建模 Yes Yes
用户体验建模 Yes No
Web建模 Yes Yes
Yes No Yes
XML DTD No

                   表2. EA和Rose的UML Profile比较

双向工程

  双向工程包括正向工程 - 从模型到代码和反向工程 - 从代码到模型。一旦设计完成后,使用模型(设计模型和数据模型)信息能够生成特定编程语言的源代码或者数据库的DDL脚本。当开发人员添加/更改代码或数据库实现时,设计和数据模型能够通过双向工程同步代码或DDL脚本以保持一致。表3显示了EA和Rose双向工程的特征。

语言 EA Rose
ANSI C++ Yes Yes
Visual C++ No Yes
VB6 Yes Yes
Java Yes Yes
C# Yes No
VB.NET Yes No
Delphi Yes No. 第三方附加项.
J2EE/EJB No Yes
CORBA No Yes
Ada83, Ada95 No Yes
Database Yes. 从数据模型到DDL脚本的正向工程。ODBC数据源的反向工程 Yes.DB2,Oracle, SQL 92, SQL Server, Sybase
COM No Yes. 只是反向工程
Web应用程序 No Yes

               表3. EA和Rose的双向工程

  EA为类生成类的源代码文件放在同一个包里。Rational Rose在VC++或VB中更多的涉及到具体的项目。 Rational Rose也可以通过向导和提供代码模板来创建类,这样可以大大增加源代码生成的数量。另外,EA和Rose都可以应用设计模式。当使用EA时,用户必须自己创建模式,而Rose则提供了Java的20种GOF设计模式。

  项目生命周期的支持

  CASE工具应该为团队中的所有队员完成他们的任务提供支持。关于项目生命周期的支持,EA将大量的功能合成一体,而Rose则主要是一个建模工具,它可以与其他的Rational或第三方工具集成,如RequisitePro, Test Manager, Soda, MS Word, MS Project 以达到同样的目标。 表4比较了EA和Rose在不同科目的功能支持。

项目科目 EA Rose
业务建模 Yes. 使用UML Profile为业务流程建模 Yes.使用业务用例模型
需求管理 Yes. 功能和非功能需求;需求跟踪矩阵 合并RequisitePro
分析和设计 Yes;UML类图和交互图,如果需要可以添加一些原型,如<<层>>,<<用例实现>> Yes;UML类图和交互图 框架向导提供了一系列的模板来构造模型
实现 参见表3;适合C++,VB,C#和VB.NET项目 参见表3;支持大多数语言,除了.NET外
测试 Yes No. Quality Architect提供了单元测试,但是它需要其他的Rational工具,如Test Manager,Robot
版本控制 不直接支持。使用控制单元,为将来发布计划。 集成SCC相应版本控制应用程序
项目管理 风险管理、资源分配、项目预算 No
Web发布 Yes Yes
生成报表 Yes No. 使用SoDA.
多用户协作 Yes Yes

                表4 EA和Rose对项目生命周期的支持

 结论

  大体上,EA和Rose在UML建模能力上有相似的功能。 EA和Rational Rose都支持UML九种图中的八种。从表1中可以看出EA在用户友好性的灵活性中比Rose更胜一筹,特别是序列图。 在双向工程中,Rose比EA支持更多的语言,除C#和VB.NET 外(事实上,Rational 开发了另外的工具 – Rational XDE for .NET 就是针对.NET环境的)。表4阐明,在项目生命周期的支持方面,EA相对于Rose来说,是更好的选择。尽管你可以购买其他的Rational工具来协助它,但是绝大部分公司在考虑成本问题时却不认为这是一个可接受的方案。当然,你需要工具上没有或第三方工具不支持的一些其他的特定功能时,这也是要考虑的重要因素。在这一点上,Rational Rose得到了更广的支持。

  最后,经过一系列同类型的比较,是不是费用也不同?是的――非常大的不同!单是Rose花费就是EA的28倍。如果你要比较项目生命周期的支持,假设你是一个Rose用户,你将必须去购买Rational 捆绑的一整套产品,如Requisite Pro, SoDA, Test Manager等。虽然附加的工具比同类的EA提供了更丰富的功能,但是在大部分时间里EA的基本功能已经够用了。在写本文时,EA企业版(最高版本支持 SQL后台)的费用是$179.00(£111.58) 而Rational Rose企业版的费用是$5024(£3140),一天整套开发包(Rational Developer Suite)的费用是$8976(£5610)。

运用JS将搜索的关键字高亮显示

当在文章里头出现这些关键字,就把它加亮显示..
文章是生成静态页面的,而这些关键字是能随时更新的,所以我想用JS来实现…

function highlight(key) {
var key = key.split('|');
for (var i=0; i var rng = document.body.createTextRange();
while (rng.findText(key[i]))
//rng.pasteHTML(rng.text.fontcolor('red'));
rng.pasteHTML('

‘ + rng.text + ‘

‘);
}
}
highlight(‘文章|关键|功能’)

54点提高PHP编程效率

0、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。

1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。

2、$row[’id’] 的速度是$row[id]的7倍。

3、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。

4、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。

5、注销那些不用的变量尤其是大数组,以便释放内存。

6、尽量避免使用__get,__set,__autoload。

7、require_once()代价昂贵。

8、include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。

9、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。

10、函数代替正则表达式完成相同功能

11、str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。

12、如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。

13、使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。

14、用@屏蔽错误消息的做法非常低效,极其低效。

15、打开apache的mod_deflate模块,可以提高网页的浏览速度。

16、数据库连接当使用完毕时应关掉,不要用长连接。

17、错误消息代价昂贵。

18、在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。

19、递增一个全局变量要比递增一个局部变量慢2倍。

20、递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。

21、递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。

22、仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。

23、方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。

24、派生类中的方法运行起来要快于在基类中定义的同样的方法。

25、调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。

26、Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。

27、除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。

28、尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码 (OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。

29、当操作字符串并需要检验其长度是否满足某种要求时,你想当然地会使用strlen()函数。此函数执行起来相当快,因为它不做任何计算,只返回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset() 技巧加速执行你的代码。

(举例如下)

if (strlen($foo) < 5) { echo “Foo is too short”$$ }

(与下面的技巧做比较)

if (!isset($foo{5})) { echo “Foo is too short”$$ }

调用isset()恰巧比strlen()快,因为与后者不同的是,isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。

34、当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或Java代码并指望它们能立即变快,没用的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。后置递增实际上会产生一个临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为一个好主意,因为并不是所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务提供商(ISPs)和服务器。

35、并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。

36、并非要用类实现所有的数据结构,数组也很有用。

37、不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?

38、当你需要时,你总能把代码分解成方法。

39、尽量采用大量的PHP内置函数。

40、如果在代码中存在大量耗时的函数,你可以考虑用C扩展的方式实现它们。

41、评估检验(profile)你的代码。检验器会告诉你,代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。

42、mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%。

43、在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用 file_get_contents,因为他的效率高得多!但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题;

44、尽量的少进行文件操作,虽然PHP的文件操作效率也不低的;

45、优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作(在update上,我被恶批过);

46、尽可能的使用PHP内部函数(但是我却为了找个PHP里面不存在的函数,浪费了本可以写出一个自定义函数的时间,经验问题啊!);

47、循环内部不要声明变量,尤其是大变量:对象(这好像不只是PHP里面要注意的问题吧?);

48、多维数组尽量不要循环嵌套赋值;

49、在可以用PHP内部字符串操作函数的情况下,不要用正则表达式;

50、foreach效率更高,尽量用foreach代替while和for循环;

51、用单引号替代双引号引用字符串;

52、“用i+=1代替i=i+1。符合c/c++的习惯,效率还高”;

53、对global变量,应该用完就unset()掉;

返回顶部