- 23丨MySQL:数据库级监控及常用计数器解析(下)
ths512
jemter压力测试
上一篇文章中,我们讲了有关数据库的全局分析,那么在今天的文章中,我们继续看看在数据库中,如何做定向分析。还记得我在上篇文章中提到的工具吗?mysqlreport、pt-query-digest和mysql_exportor+Prometheus+Grafana。我们在上一篇中已经讲完了mysqlreport,今天我们来看看剩下的这几个。定向抓取SQL:pt-query-digestpt-query
- MySQL status查看工具mysqlreport
iteye_5617
mysql数据库
[quote]mysqlreportmakesafriendlyreportofimportantMySQLstatusvalues.mysqlreporttransformsthevaluesfromSHOWSTATUSintoaneasy-to-readreportthatprovidesanin-depthunderstandingofhowwellMySQLisrunning.mysqlr
- mysqlreport 中文文档
yishouwangnian
数据库
mysqlreport以很友好的方式显示MySQL状态变。事实上,它几乎报告了所有的状态。不像SHOWSTATUS只是在显示了100多个状态值,mysqlreport则以人性化的方式阐释和格式化了这些状态值,大大增加了其可读性。可以点击这里查看mysqlreport的例子。mysqlreport的好处是可以快速的查看各种状态参数组,从而了解服务器的运行状态情况,而无需从SHOWSTATUS的结果中
- mysql的监控工具mysqlreport安装和说明
幸福丶如此
mysql数据库mysql监控工具mysqlrepor
mysqlreport以很友好的方式显示mysql状态变。事实上,它几乎报告了所有的状态。不像showstatus只是在显示了100多个状态值,mysqlreport则以人性化的方式阐释和格式化了这些状态值,大大增加了其可读性。mysqlreport的好处是可以快速的查看各种状态参数组,从而了解服务器的运行状态情况,而无需从showstatus的结果中人工计算。例如索引读取比率是个重要的参数,但是
- 25、mysqlreport(my.cnf)调优工具
何以.解忧
25.1、mysqlreport介绍:mysqlreport以很友好的方式显示MySQL状态变。事实上,它几乎报告了所有的状态。不像SHOWSTATUS只是在显示了100多个状态值,mysqlreport则以人性化的方式阐释和格式化了这些状态值,大大增加了其可读性。25.2、安装mysqlreport:MySQLReport是用perl语言编写,所以想要运行它首先需要安装perl环境;它还要与My
- 性能分析之MySQL Report分析
软件测试学习提升
MySQLreport分析基本信息mysql当前的版本,运行的时间,以及当前系统时间。MySQL服务器版本信息表明MySQL服务器包含和不包含哪些特点。MySQL服务器运行时间表明报告价值的代表性。服务器运行时间对于评估报告是很重要的,因为如果服务器不运行几个小时的话,输出报告有可能存在曲解和误导性。有时甚至运行几个小时时间都是不够的,比如,MySQL服务器运行了午夜的6个小时几乎没有业务访问过。
- mysqlreport 安装&使用
kaibisky
安装包:mysqlreport-3.5.tgz下载地址:http://hackmysql.com/scripts/mysqlreport-3.5.tgz安装办法:[root@nagios~]#tar-xvfmysqlreport-3.5.tgz使用办法:[root@nagios~]#cdmysqlreport-3.5[
[email protected]]#perlmysqlrep
- mysql innodb的监控(系统层,数据库层)
mysqlinnodb的监控(系统层,数据库层)关于MySQL的监控,mysql提供了数据采集的命令,比如showstatus命令或者读取数据库informat_schema的GLOBAL_STATUS对象;也可以用一些现成的监控工具进行查询,目前用的比较多的innotop、mysqlreport、mtop、mytop,还有淘宝perl语言研发的orzdba。就监控的指标而言,有系统层面的,数据库
- MySQL 线程池
王之子
阅读更多MySQL采用多线程来处理并发的连接,通过mysqlreport中的Threads部分,我们可以看到线程创建的统计结果:每秒创建43.6个线程,虽然创建线程的开销不值一提,但是当系统比较繁忙的时候,我们当然不希望再给它添麻烦。一个比较好的办法是在应用中尽量使用持久连接,这将在一定程度上减少线程的重复创建。另一方面,从上面的Cache=0可以看出,这些线程并没有被复用,我们可以在my.cnf
- MySQL 线程池
王之子
阅读更多MySQL采用多线程来处理并发的连接,通过mysqlreport中的Threads部分,我们可以看到线程创建的统计结果:每秒创建43.6个线程,虽然创建线程的开销不值一提,但是当系统比较繁忙的时候,我们当然不希望再给它添麻烦。一个比较好的办法是在应用中尽量使用持久连接,这将在一定程度上减少线程的重复创建。另一方面,从上面的Cache=0可以看出,这些线程并没有被复用,我们可以在my.cnf
- MySQL 临时表
王之子
阅读更多我们会在一些SQL查询中分析出现Usingtemporary的状态,这意味着查询过程中需要创建临时表来储存中间数据,我们需要通过合理的索引来避免它。另一方面,当临时表在所难免时,我们也要尽量减少临时表本身的开销,通过mysqlreport报告中的CreatedTemp部分,我们可以看到:MySQL可以将临时表创建在磁盘(Disktable),内存(Table)以及临时文件(File)中,显
- MySQL 临时表
王之子
阅读更多我们会在一些SQL查询中分析出现Usingtemporary的状态,这意味着查询过程中需要创建临时表来储存中间数据,我们需要通过合理的索引来避免它。另一方面,当临时表在所难免时,我们也要尽量减少临时表本身的开销,通过mysqlreport报告中的CreatedTemp部分,我们可以看到:MySQL可以将临时表创建在磁盘(Disktable),内存(Table)以及临时文件(File)中,显
- Mysql 之 性能分析(mysqlreport工具)
wx592bc92b285c7
Mysql性能分析关系型数据库
一、mysqlreport作用进行MySQL的配置优化,首先必须找出MySQL的性能瓶颈所在;而SHOWSTATUS输出的报告正是用来计算性能瓶颈的参考数据。mysqlreport不像SHOWSTATUS那样简单的罗列数据,而是对这些参考数据加以融合计算,整理成一个个优化参考点,然后就可以根据这个优化参考点的值以及该点的衡量标准,进行对应调整。一、mysqlreport安装[root@localh
- 运维知识体系之web应用
lnredone
软件web服务器知识应用服务
web服务器软件序号名称版本号备注1apachehttpd-2.4.3.tar.gzlamp2aprapr-1.4.6.tar.bz23apr-utilapr-util-1.5.1.tar.bz24mysqlmysql-5.5.29.tar.gz5cmakecmake-2.6.4-7.el5.i386.rpm6mysqlreportmysqlreport-3.5.gz7phpphp-5.4.11.
- windows下配置mysql数据库监视工具Mysqlreport
reblue520
该工具除了可以监控本机Mysql数据库外,也可以监控远程服务器mysql数据库需要的工具:1:perl脚本解析工具安装:http://www.activestate.com/activeperl/ 2:mysqlreport的perl脚本代码:http://hackmysql.com/mysqlreport3:单独安装apache太麻烦,直接用wamp包步骤:1、windows安装activepe
- The Guide To Understanding mysqlreport
mysqlreport
The Guide To Understanding mysqlreport This guide to understanding
mysqlreport explains everything that mysqlreport can report. It also teaches how to interpret and understand all the values in cont
- MySQL的性能调优工具:比mysqlreport更方便的tuning-primer.sh
mysqlreport
年初的时候收藏过一篇关于mysqlreport的报表解读,和内置的show status,和show variables相比mysqlreport输出一个可读性更好的报表;但Sundry MySQL提供的脚本相比mysqlreport更进一步:除了报表还进一步提供了修改建议。安装和使用非常简单:
wget
http://www.day32.com/MySQL/tuning-primer
- mysqlreport
mysqlreport
原文:http://raocl.wordpress.com/2011/01/10/test/ ,官方也有相关文档http://hackmysql.com/mysqlreportguide。不过我还是习惯看中文的。如果对某些中文翻译有疑惑可以对照着看中英文。
mysqlreport是mysql性能监测时最常用的工具,对了解mysql运行状态和配置调整都有很大的帮助。找了一些mysql的资料,发现大
- MySQL效能监控工具mysqlreport安装和中文说明
mysqlreport
管理 mysql 最让人困扰的就是如何有效的掌握 MySQL 的健康状况,因为 MySQL 虽然有提供许多系统变量值供您参考,但这些零散的数据若要手动搜集与过滤将会是一件十分没有效率的事情(除非您写 Scripts 去分析)。而接下来要介绍的这套 “工具” 其实是由 hackmysql.com 的站长所撰写的 perl Scritps,旨在协助 MySQL
- mysql性能优化工具mysqlreport
mysqlreport
进行MySQL的配置优化,首先必须找出MySQL的性能瓶颈所在;而SHOW STATUS输出的报告正是用来计算性能瓶颈的参考数据。mysqlreport不像SHOW STATUS那样简单的罗列数据,而是对这些参考数据加以融合计算,整理成一个个优化参考点,然后DBA就可以根据这个优化参考点的值以及该点的衡量标准,进行对应调整。这篇文章既不分析mysqlreport的报告含义,也不说明优化参考点的计算
- MySQL的性能调优工具
mysql
转载:MySQL的性能调优工具:比mysqlreport更方便的tuning-primer.sh
年初的时候收藏过一篇关于 mysqlreport 的报表解读,和内置的 show status,和 show variables 相比 mysqlreport 输出一个可读性更好的报表;但 Sundry MySQL 提供的脚本相比 mysqlreport 更进一
- mysql report 使用 转帖
mysql
mysqlreport 详解 2010-05-16 23:16
进行MySQL的配置优化,首先必须找出MySQL的性能瓶颈所在;而SHOW STATUS输出的报告正是用来计算性能瓶颈的参考数据。mysqlreport不像SHOW STATUS那样简单的罗列数据,而是对这些参考数据加以融合计算,整理成一个个优化参考点,然后DBA就可以根据这个优化参考点的值以及该点的衡量标准,进行对
- mysqlreport的使用
guogang83
mysql参数怎么调是个问题,如果是Oracle,数据库报告上有很多建议,非常直观。mysql也有一个小工具mysqlreport,来统计一些信息指导调参数,最好是写一个任务,一个小时执行一次,这样可以看到高峰、低峰时期的统计信息,更有利于参数调优。1.先下载dbi、dbd-mysql、mysqlreport-3.5。2.安装dbi和dbd-mysql,安装之前确认安装过perl。perlM
- 数据库性能优化(MySQL)
liuhao_sh
序: 即使有较长的缓存有效期和较理想的缓存命中率,但是缓存的创建和缓存过期后的重建都是需要访问数据库的。对数据库写操作不是很容易引入缓存策略。11.1查看数据库状态 可以通过showstatus、showinnodbstatus来查看MySQL数据库的状态,使用mysqlreport这个第三方工具可使数据库状态报告更好看(mysqlreport本质是通过MySQL内部命令和工具来统计状
- Mysql查询优化
username2
mysqlreport查看数据库的执行情况 1下载mysqlreport2安装的时候报错,因为没有安装DBD 解决方式:shell>perl-MCPAN-eshell cpan>installDBI cpan>installDBD::mysql安装成功。 3使用http://blog.chinaunix.net/uid-24426415-id-77301.html 4连接数据库 perlmysq
- MySQL优化步骤和my.cnf优化配置
五大三粗
1、查看机器配置,指三大件:cpu、内存、硬盘2、查看mysql配置参数3、查看mysql运行状态,可以用mysqlreport工具来查看4、查看mysql的慢查询依次解决了以上问题之后,再来查找程序方面的问题。my.cnf缓存优化在my.cnf中添加/修改以下选项:#取消文件系统的外部锁skip-locking#不进行域名反解析,注意由此带来的权限/授权问题skip-name-resolve#索
- mysqlreport指南
hongtoushizi
mysqlreport
mysqlreport是mysql性能监测时最常用的工具,对了解mysql运行状态和配置调整都有很大的帮助。找了一些mysql的资料,发现大多数是关于php+mysql开发的,服务配置基本就是固定的几条。干脆找上mysqlreport的官网,啃下来这篇指南。翻译都是随着我个人的语言习惯,对直接能用mysql命令上看到结果的英文则保留下来。方便以后查找:原文地址:http://hackmysql.c
- mysqlreport指南
hongtoushizi
mysqlmysqlreport
mysqlreport是mysql性能监测时最常用的工具,对了解mysql运行状态和配置调整都有很大的帮助。找了一些mysql的资料,发现 大多数是关于php+mysql开发的,服务配置基本就是固定的几条。干脆找上mysqlreport的官网,啃下来这篇指南。翻译都是随着我个人的语言 习惯,对直接能用mysql命令上看到结果的英文则保留下来。方便以后查找:
原文地址:http://hackmys
- mysqlreport使用详解
yan_ruo_gu
mysql调优mysql优化mysqlreport
进行MySQL的配置优化,首先必须找出MySQL的性能瓶颈所在;而SHOWSTATUS输出的报告正是用来计算性能瓶颈的参考数据。mysqlreport不像SHOWSTATUS那样简单的罗列数据,而是对这些参考数据加以融合计算,整理成一个个优化参考点,然后就可以根据这个优化参考点的值以及该点的衡量标准,进行对应调整。一、安装:下载mysqlreport工具,直接解压即可,下载地址: http:/
- mysqlreport使用详解
yan_ruo_gu
mysql优化mysql调优mysqlreport数据库
进行MySQL的配置优化,首先必须找出MySQL的性能瓶颈所在;而SHOWSTATUS输出的报告正是用来计算性能瓶颈的参考数据。mysqlreport不像SHOWSTATUS那样简单的罗列数据,而是对这些参考数据加以融合计算,整理成一个个优化参考点,然后就可以根据这个优化参考点的值以及该点的衡量标准,进行对应调整。一、安装:下载mysqlreport工具,直接解压即可,下载地址:http://ha
- java短路运算符和逻辑运算符的区别
3213213333332132
java基础
/*
* 逻辑运算符——不论是什么条件都要执行左右两边代码
* 短路运算符——我认为在底层就是利用物理电路的“并联”和“串联”实现的
* 原理很简单,并联电路代表短路或(||),串联电路代表短路与(&&)。
*
* 并联电路两个开关只要有一个开关闭合,电路就会通。
* 类似于短路或(||),只要有其中一个为true(开关闭合)是
- Java异常那些不得不说的事
白糖_
javaexception
一、在finally块中做数据回收操作
比如数据库连接都是很宝贵的,所以最好在finally中关闭连接。
JDBCAgent jdbc = new JDBCAgent();
try{
jdbc.excute("select * from ctp_log");
}catch(SQLException e){
...
}finally{
jdbc.close();
- utf-8与utf-8(无BOM)的区别
dcj3sjt126com
PHP
BOM——Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE"。这样如
- JAVA Annotation之定义篇
周凡杨
java注解annotation入门注释
Annotation: 译为注释或注解
An annotation, in the Java computer programming language, is a form of syntactic metadata that can be added to Java source code. Classes, methods, variables, pa
- tomcat的多域名、虚拟主机配置
g21121
tomcat
众所周知apache可以配置多域名和虚拟主机,而且配置起来比较简单,但是项目用到的是tomcat,配来配去总是不成功。查了些资料才总算可以,下面就跟大家分享下经验。
很多朋友搜索的内容基本是告诉我们这么配置:
在Engine标签下增面积Host标签,如下:
<Host name="www.site1.com" appBase="webapps"
- Linux SSH 错误解析(Capistrano 的cap 访问错误 Permission )
510888780
linuxcapistrano
1.ssh -v
[email protected] 出现
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
错误
运行状况如下:
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuratio
- log4j的用法
Harry642
javalog4j
一、前言: log4j 是一个开放源码项目,是广泛使用的以Java编写的日志记录包。由于log4j出色的表现, 当时在log4j完成时,log4j开发组织曾建议sun在jdk1.4中用log4j取代jdk1.4 的日志工具类,但当时jdk1.4已接近完成,所以sun拒绝使用log4j,当在java开发中
- mysql、sqlserver、oracle分页,java分页统一接口实现
aijuans
oraclejave
定义:pageStart 起始页,pageEnd 终止页,pageSize页面容量
oracle分页:
select * from ( select mytable.*,rownum num from (实际传的SQL) where rownum<=pageEnd) where num>=pageStart
sqlServer分页:
 
- Hessian 简单例子
antlove
javaWebservicehessian
hello.hessian.MyCar.java
package hessian.pojo;
import java.io.Serializable;
public class MyCar implements Serializable {
private static final long serialVersionUID = 473690540190845543
- 数据库对象的同义词和序列
百合不是茶
sql序列同义词ORACLE权限
回顾简单的数据库权限等命令;
解锁用户和锁定用户
alter user scott account lock/unlock;
//system下查看系统中的用户
select * dba_users;
//创建用户名和密码
create user wj identified by wj;
identified by
//授予连接权和建表权
grant connect to
- 使用Powermock和mockito测试静态方法
bijian1013
持续集成单元测试mockitoPowermock
实例:
package com.bijian.study;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import or
- 精通Oracle10编程SQL(6)访问ORACLE
bijian1013
oracle数据库plsql
/*
*访问ORACLE
*/
--检索单行数据
--使用标量变量接收数据
DECLARE
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
BEGIN
select ename,sal into v_ename,v_sal
from emp where empno=&no;
dbms_output.pu
- 【Nginx四】Nginx作为HTTP负载均衡服务器
bit1129
nginx
Nginx的另一个常用的功能是作为负载均衡服务器。一个典型的web应用系统,通过负载均衡服务器,可以使得应用有多台后端服务器来响应客户端的请求。一个应用配置多台后端服务器,可以带来很多好处:
负载均衡的好处
增加可用资源
增加吞吐量
加快响应速度,降低延时
出错的重试验机制
Nginx主要支持三种均衡算法:
round-robin
l
- jquery-validation备忘
白糖_
jquerycssF#Firebug
留点学习jquery validation总结的代码:
function checkForm(){
validator = $("#commentForm").validate({// #formId为需要进行验证的表单ID
errorElement :"span",// 使用"div"标签标记错误, 默认:&
- solr限制admin界面访问(端口限制和http授权限制)
ronin47
限定Ip访问
solr的管理界面可以帮助我们做很多事情,但是把solr程序放到公网之后就要限制对admin的访问了。
可以通过tomcat的http基本授权来做限制,也可以通过iptables防火墙来限制。
我们先看如何通过tomcat配置http授权限制。
第一步: 在tomcat的conf/tomcat-users.xml文件中添加管理用户,比如:
<userusername="ad
- 多线程-用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
bylijinnan
java多线程
public class IncDecThread {
private int j=10;
/*
* 题目:用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
* 两个问题:
* 1、线程同步--synchronized
* 2、线程之间如何共享同一个j变量--内部类
*/
public static
- 买房历程
cfyme
2015-06-21: 万科未来城,看房子
2015-06-26: 办理贷款手续,贷款73万,贷款利率5.65=5.3675
2015-06-27: 房子首付,签完合同
2015-06-28,央行宣布降息 0.25,就2天的时间差啊,没赶上。
首付,老婆找他的小姐妹接了5万,另外几个朋友借了1-
- [军事与科技]制造大型太空战舰的前奏
comsci
制造
天气热了........空调和电扇要准备好..........
最近,世界形势日趋复杂化,战争的阴影开始覆盖全世界..........
所以,我们不得不关
- dateformat
dai_lm
DateFormat
"Symbol Meaning Presentation Ex."
"------ ------- ------------ ----"
"G era designator (Text) AD"
"y year
- Hadoop如何实现关联计算
datamachine
mapreducehadoop关联计算
选择Hadoop,低成本和高扩展性是主要原因,但但它的开发效率实在无法让人满意。
以关联计算为例。
假设:HDFS上有2个文件,分别是客户信息和订单信息,customerID是它们之间的关联字段。如何进行关联计算,以便将客户名称添加到订单列表中?
&nbs
- 用户模型中修改用户信息时,密码是如何处理的
dcj3sjt126com
yii
当我添加或修改用户记录的时候对于处理确认密码我遇到了一些麻烦,所有我想分享一下我是怎么处理的。
场景是使用的基本的那些(系统自带),你需要有一个数据表(user)并且表中有一个密码字段(password),它使用 sha1、md5或其他加密方式加密用户密码。
面是它的工作流程: 当创建用户的时候密码需要加密并且保存,但当修改用户记录时如果使用同样的场景我们最终就会把用户加密过的密码再次加密,这
- 中文 iOS/Mac 开发博客列表
dcj3sjt126com
Blog
本博客列表会不断更新维护,如果有推荐的博客,请到此处提交博客信息。
本博客列表涉及的文章内容支持 定制化Google搜索,特别感谢 JeOam 提供并帮助更新。
本博客列表也提供同步更新的OPML文件(下载OPML文件),可供导入到例如feedly等第三方定阅工具中,特别感谢 lcepy 提供自动转换脚本。这里有导入教程。
- js去除空格,去除左右两端的空格
蕃薯耀
去除左右两端的空格js去掉所有空格js去除空格
js去除空格,去除左右两端的空格
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g
- SpringMVC4零配置--web.xml
hanqunfeng
springmvc4
servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置。
ServletContainerInitializer:启动容器时负责加载相关配置
package javax.servlet;
import java.util.Set;
public interface ServletContainer
- 《开源框架那些事儿21》:巧借力与借巧力
j2eetop
框架UI
同样做前端UI,为什么有人花了一点力气,就可以做好?而有的人费尽全力,仍然错误百出?我们可以先看看几个故事。
故事1:巧借力,乌鸦也可以吃核桃
有一个盛产核桃的村子,每年秋末冬初,成群的乌鸦总会来到这里,到果园里捡拾那些被果农们遗落的核桃。
核桃仁虽然美味,但是外壳那么坚硬,乌鸦怎么才能吃到呢?原来乌鸦先把核桃叼起,然后飞到高高的树枝上,再将核桃摔下去,核桃落到坚硬的地面上,被撞破了,于是,
- JQuery EasyUI 验证扩展
可怜的猫
jqueryeasyui验证
最近项目中用到了前端框架-- EasyUI,在做校验的时候会涉及到很多需要自定义的内容,现把常用的验证方式总结出来,留待后用。
以下内容只需要在公用js中添加即可。
使用类似于如下:
<input class="easyui-textbox" name="mobile" id="mobile&
- 架构师之httpurlconnection----------读取和发送(流读取效率通用类)
nannan408
1.前言.
如题.
2.代码.
/*
* Copyright (c) 2015, S.F. Express Inc. All rights reserved.
*/
package com.test.test.test.send;
import java.io.IOException;
import java.io.InputStream
- Jquery性能优化
r361251
JavaScriptjquery
一、注意定义jQuery变量的时候添加var关键字
这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下:
$loading = $('#loading'); //这个是全局定义,不知道哪里位置倒霉引用了相同的变量名,就会郁闷至死的
二、请使用一个var来定义变量
如果你使用多个变量的话,请如下方式定义:
. 代码如下:
var page
- 在eclipse项目中使用maven管理依赖
tjj006
eclipsemaven
概览:
如何导入maven项目至eclipse中
建立自有Maven Java类库服务器
建立符合maven代码库标准的自定义类库
Maven在管理Java类库方面有巨大的优势,像白衣所说就是非常“环保”。
我们平时用IDE开发都是把所需要的类库一股脑的全丢到项目目录下,然后全部添加到ide的构建路径中,如果用了SVN/CVS,这样会很容易就 把
- 中国天气网省市级联页面
x125858805
级联
1、页面及级联js
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
&l