iq leung's blog

————记录生活,分享生活,分享工作 

在hosts文件添加上 ##Google Service ##Chrome 网上应用店 203.208.46.146 chrome.google.com 203.208.46.146 clients0.google.com 203.208.46.146 clients1.google.com 203.208.46.146 clients2.google.com 203.208.46.146 clients3.google.com 203.208.46.146 clients4.google.com 203.208.46.146 www.googleusercontent.com 203.208.46.146 lh0.googleusercontent.com 203.208.46.146 lh1.googleusercontent.com 203.208.46.146 lh2.googleusercontent.com 203.208.46.146 lh3.googleusercontent.com 203.208.46.146 lh4.googleusercontent.com 203.208.46.146 lh5.googleusercontent.com 203.208.46.146 lh6.googleusercontent.com 203.208.46.146 clients1.googleusercontent.com 203.208.46.146 clients2.googleusercontent.com ##网页快照 203.208.46.146 webcache.googleusercontent.com ##Google SSL 203.208.46.146 encrypted.google.com 203.208.46.146 encrypted.google.com.hk ##Google Docs 203.208.46.146 docs.google.com 203.208.46.146 docs0.google.com 203.208.46.146 docs1.google.com 203.208.46.146 [...]

分享到腾讯微博 分享到QQ空间 分享到人人网 分享到豆瓣 分享到新浪微博

在ANT中用FTP脚本 action=”put” 表明上传 action=”get” 表明下载

分享到腾讯微博 分享到QQ空间 分享到人人网 分享到豆瓣 分享到新浪微博

数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间。Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕。 如果你是个数据库管理员,你很有可能已经在某个阶段遇到上述情况。因此,本文将介绍对MySQL进行性能优化的技巧和窍门。 1.存储引擎的选择 如果数据表需要事务处理,应该考虑使用InnoDB,因为它完全符合ACID特性。如果不需要事务处理,使用默认存储引擎MyISAM是比较明智 的。并且不要尝试同时使用这两个存储引擎。思考一下:在一个事务处理中,一些数据表使用InnoDB,而其余的使用MyISAM。结果呢?整个 subject将被取消,只有那些在事务处理中的被带回到原始状态,其余的被提交的数据转存,这将导致整个数据库的冲突。然而存在一个简单的方法可以同时 利用两个存储引擎的优势。目前大多数MySQL套件中包括InnoDB、编译器和链表,但如果你选择MyISAM,你仍然可以单独下载InnoDB,并把 它作为一个插件。很简单的方法,不是吗? 2.计数问题 如果数据表采用的存储引擎支持事务处理(如InnoDB),你就不应使用COUNT(*)计算数据表中的行数。这是因为在产品类数据库使用 COUNT(*),最多返回一个近似值,因为在某个特定时间,总有一些事务处理正在运行。如果使用COUNT(*)显然会产生bug,出现这种错误结果。 3.反复测试查询 查询最棘手的问题并不是无论怎样小心总会出现错误,并导致bug出现。恰恰相反,问题是在大多数情况下bug出现时,应用程序或数据库已经上线。的 确不存在针对该问题切实可行的解决方法,除非将测试样本在应用程序或数据库上运行。任何数据库查询只有经过上千个记录的大量样本测试,才能被认可。 4.避免全表扫描 通常情况下,如果MySQL(或者其他关系数据库模型)需要在数据表中搜索或扫描任意特定记录时,就会用到全表扫描。此外,通常最简单的方法是使用 索引表,以解决全表扫描引起的低效能问题。然而,正如我们在随后的问题中看到的,这存在错误部分。 5.使用”EXPLAIN”进行查询 当需要调试时,EXPLAIN是一个很好的命令,下面将对EXPLAIN进行深入探讨。 首先,创建一个简单的数据表: CREATETABLE’awesome_pcq’( ‘emp_id’INT(10)NOTNULL DEFAULT’0′, ‘full_name’VARCHAR(100)NOTNULL, ‘email_id’VARCHAR(100)NOTNULL, ‘password’VARCHAR(50)NOTNULL, ‘deleted’TINYINT(4)NOTNULL, PRIMARYKEY(‘emp_id’) ) COLLATE=’utf8_general_ci’ ENGINE=InnoDB ROW_FORMAT=DEFAULT 这个数据表一目了然,共有五列,最后一列“deleted”是一个Boolean类变量flag来检查帐号是活动的还是已被删除。接下来,您需要用 样本记录填充这个表(比如,100个雇员记录)。正如你看到的,主键是“emp_id”。因此,使用电子邮件地址和密码字段,我们可以很容易地创建一个查 询,以验证或拒绝登录请求,如下(实例一): SELECTCOUNT(*)FROMawesome_pcqWHERE email_id=’blahblah’ANDpassword=’blahblah’ANDdeleted=0 之前我们提到,要避免使用COUNT(*)。代码纠正如下(实例二): SELECTemp_idFROMawesome_pcqWHERE email_id=’blahblah’ANDpassword=’blahblah’ANDdeleted=0 现在回想一下,在实例一中,代码查询定位并返回“email_id”和“password”等于给定值的行数。在实例二中,进行了同样的查询,不同 的是明确要求列出“emp_id”所有满足给定的标准的值。哪个查询更费时? 很显然,这两个实例都是同样费时的数据库查询,因为无意间,两个实例查询都进行了全表扫描。为了更好地读懂指令,执行如下代码: EXPLAINSELECTemp_idFROMawesome_pcqWHERE email_id=’blahblah’ANDpassword=’blahblah’ANDdeleted=0 在输出时,集中在倒数第二列:“rows”。假设我们已经将表填充了100个记录,它会在第一行显示100,这是MySQL需要进行扫描用来计算查询的结 果的行数。这说明了什么?这需要全表扫描。为了克服这个弊端,则需要添加索引。 6.添加索引 先从重要的说起:给每一个可能遇到的次要问题创建索引并不明智。过多的索引会导致效能减慢和资源占用。在进一步讨论之前,在实例中创建一个样本索 引: ALTERTABLE’awesome_pcq’ADDINDEX’LoginValidate’(‘email_id’) 接下来,再次运行该查询: EXPLAINSELECTemp_idFROMawesome_pcqWHERE email_id=’blahblah’ANDpassword=’blahblah’ANDdeleted=0 请注意运行后的值。不是100,而是1。因此,为了给出查询结果,MySQL只扫描了1行,多亏先前创建的索引。你可能会注意到,索引只在电子邮件 [...]

分享到腾讯微博 分享到QQ空间 分享到人人网 分享到豆瓣 分享到新浪微博

spring.jar 是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。   除了spring.jar文件,Spring还包括有其它13个独立的jar包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择组合自己的jar包,而不必引入整个spring.jar的所有类文件。 (1) spring-core.jar 这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 (2) spring-beans.jar 这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行 Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC /DI支持,引入spring-core.jar及spring- beans.jar文件就可以了。 (3) spring-aop.jar 这个jar文件包含在应用中使用Spring的AOP特性时所需的类。使用基于AOP的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。 (4) spring-context.jar   这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。 (5) spring-dao.jar   这个jar文件包含Spring DAO、Spring Transaction进行数据访问的所有类。为了使用声明型事务支持,还需在自己的应用里包含spring-aop.jar。 (6) spring-hibernate.jar   这个jar文件包含Spring对Hibernate 2及Hibernate 3进行封装的所有类。 (7) spring-jdbc.jar   这个jar文件包含对Spring对JDBC数据访问进行封装的所有类。 (8) spring-orm.jar   这个jar文件包含Spring对DAO特性集进行了扩展,使其支持 iBATIS、JDO、OJB、TopLink,因为Hibernate已经独立成包了,现在不包含在这个包里了。这个jar文件里大部分的类都要依赖 spring-dao.jar里的类,用这个包时你需要同时包含spring- dao.jar包。 (9) spring-remoting.jar   这个jar文件包含支持EJB、JMS、远程调用Remoting(RMI、Hessian、Burlap、Http Invoker、JAX-RPC)方面的类。 10) spring-support.jar   该组件提供对Cache(ehcache)、JCA、JMX,邮件服务(Java Mail、COS [...]

分享到腾讯微博 分享到QQ空间 分享到人人网 分享到豆瓣 分享到新浪微博

Spring的依赖关系 ant ant.jar, ant-junit.jar, ant-launcher.jar Spring采用Apache Ant作为其构建工具,还用来完成大量其它任务如文档生成和测试执行等。运行时Ant根本不起作用,因此发布应用时无需包含该JAR文件。 aopalliance aopalliance.jar AOP Alliance(http://aopalliance.sourceforge.net/)是个联合的开源协作组织,在多个项目间进行协作以期提供一套标准的AOP Java接口(interface)。 Spring AOP就是基于AOP Alliance标准API实现的。如果你打算使用Spring的AOP或基于AOP的任何特性,只需这个JAR文件。 axis axis.jar, saaj.jar, wsdl4j.jar Spring采用Apache Axis项目来支持Spring远程调用里的JAXRPC功能。如果使用JAXRPC Remoting,那么只需要这些文件。 caucho burlap-2.1.12.jar, hessian-2.1.12.jar Spring远程调用(remoting)对大量不同种类的协议包括Caucho的Burlap和Hessian提供了支持。要用哪个协议就包含这个分组里相应的JAR文件。 cglib cglib-full-2.0.2.jar CGLIB用来生成动态代理类(dynamic proxy classes),供核心DI和AOP实现之用。由于大量Spring功能的实现都要用到CGLIB,因此你的应用几乎总需包含CGLIB。 cos cos.jar COS代表com.oreilly.servlet,是个实用类的集合,对Servlets和基于web的应用很有用。Spring在两个地方要用到COS:文件上传处理和e-mail发送。不过在这两种情形中,COS都只是实现选择之一,因此只有选用COS而非其它实现方法时,才需包含cos.jar。 dom4j dom4j.jar 使用Hibernate时dom4j不可或缺,因此如果你的应用打算采用Hibernate实现ORM,就需要包含这个JAR文件。 easymock easymock.jar, easymockclassextension.jar Spring的测试套件用到了EasyMock,因此只有构建和运行测试套件时才用到这个JAR,无需随你的应用一起发布。 freemarker freemaker.jar Spring提供了FreeMarker模板引擎的包装类,还为把FreeMarker模板用作web应用的视图提供了支持。只要使用FreeMarker,就需要这个JAR文件。 hibernate ehcache.jar, hibernate2.jar, odmg.jar 如果采用Spring的Hibernate集成和支持类,这些JAR文件不可或缺。如果使用其它ORM工具如iBATIS,则不需要这些JAR文件。如果使用Hibernate,则你的应用还要包含CGLIB JAR文件。 hsqldb hsqldb.jar Spring的示例应用使用了hsqldb.jar文件。 ibatis ibatis-common.jar [...]

分享到腾讯微博 分享到QQ空间 分享到人人网 分享到豆瓣 分享到新浪微博

数据库中字段ORGAN_NO为CHAR(6) 列名称 类型模式 类型名称 长度 小数位 NULL —————————— ——— —————— ——– —– —— ORGAN_NO SYSIBM CHARACTER 6 0 是 值内容 ORGAN_NO = ’001′ 在DB2中如果用 select length(ORGAN_NO) from table 结果为 6 因为字段定义为定长的char类型,虽然值是’001′,但是实际上是会补齐后面的。所以要去掉后面的空格 select length(trim(ORGAN_NO)) from table 结果为 3

分享到腾讯微博 分享到QQ空间 分享到人人网 分享到豆瓣 分享到新浪微博

* 单元测试工具:TestNG、xUnit家族(如JUnit、NUnit)、JMock、BizMock等。 * 功能测试自动化:ThoughtWorks Twist。 * Web功能测试(frontend):Selenium IDE/RC、WatiR、WatiN。 * Web service测试工具(backend):soapUI。 * 性能测试:JMeter+BadBoy。 * 验收测试框架:Fitnesse、Tellurium。 * 敏捷测试过程管理工具:微软的Visual Studio 2010,包括TFS 2010、Scrum模板(MS VS Scrum 1.0)、Test Manager 2010、Coded UI Test等。 * 业务智能(BI)应用的测试框架:Oraylis BI.Quality (+ NUnit)。 * 其他一些协作工具等,如TestLink、BugZilla、BugFree、Wiki等。

分享到腾讯微博 分享到QQ空间 分享到人人网 分享到豆瓣 分享到新浪微博

用python实现查询移动手机余额话费的代码 001 #!/usr/bin/env python 002 #encoding=utf-8 003 004 import Image 005 import sys 006 import urllib, urllib2, cookielib 007 import cmd 008 import re 009 import StringIO 010 011 class Mobile(cmd.Cmd): 012 013 def __init__(self): 014 cmd.Cmd.__init__(self) 015 self.intro= “”” 016 请输入 help 查看帮助 017 “”” 018 self.prompt = “Yidong> ” 019 self.form = { [...]

分享到腾讯微博 分享到QQ空间 分享到人人网 分享到豆瓣 分享到新浪微博

用python实现的一段股市信息下载的代码 import urllib def getURL(url): socket = urllib.urlopen(url) readSocket = socket.read() socket.close() return readSocket def printInfo(listInfo): print “Stock Symbol: ” , listInfo[0] print “Last Trade Price: ” , listInfo[1] print “Last Trade Date: ” , listInfo[2] print “Last Trade Time: ” , listInfo[3] print “Change: ” , listInfo[4] print “Open: ” , listInfo[5] print “Day’s [...]

分享到腾讯微博 分享到QQ空间 分享到人人网 分享到豆瓣 分享到新浪微博

SELECT FUTTYP FROM ( SELECT FUTTYP, ROWNUMBER() OVER( ORDER by FUTTYP asc) AS RN FROM .SM_INTERFACE_CFG_TB WHERE (I_FUCTYP = ” OR FUTTYP=I_FUCTYP)) AS A1 WHERE A1.RN BETWEEN I_BEGIN AND I_END;

分享到腾讯微博 分享到QQ空间 分享到人人网 分享到豆瓣 分享到新浪微博