fkjava

BlogJava 首页 新随笔 联系 聚合 管理
  49 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

#

 

需要准备的安装包:

   

    1.      memcache包:memcached-1.4.0.tar.gz

   

    2.      php扩展包:memcache-2.2.5.tgz

   

    memcache安装到/usr/local/lib目录下面:

   

    [plain]

   

    #版本可能不同,选择自己相应的版本

   

    sudo tar zxvf memcached-1.4.0.tar.gz

   

    cd memcached-1.4.0

   

    sudo ./configure --prefix=/usr/local/web/lib/memcache --with-libevent

   

    sudo make

   

    sudo make install

   

    管理memcache:

   

    [plain]

   

    #启动memcache

   

    cd /usr/local/web/lib/memcache/bin/

   

    ./memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211 -c 128 -P /usr/local/web/lib/memcache/memcached.pid

   

    #查看memcache

   

    ps -ef | grep memcached

   

    #停止memcache进程

   

    sudo kill   21039

   

    扩展包安装

   

    [plain]

   

    #根据你自己php的安装目录

   

    sudo tar xzvf memcache-2.2.5.tgz

   

    cd memcache-2.2.5

   

    sudo /usr/local/web/php.5.3.3/bin/phpize

   

    sudo ./configure --enable-memcache --with-php-config=/usr/local/web/php.5.3.3/bin/php-config --with-zlib-dir

   

    sudo make

   

    sudo make install

   

    修改php.ini文件

   

    [plain]

   

    sudo vim /usr/local/web/php.5.3.3/lib/php.ini

   

    #加上:extension=memcache.so

   

sudo kill -USR2 `cat /usr/local/web/ php.5.3.3/var/run/php-fpm.pid` #重启

    您正在看的文章来自疯狂软件教育中心 www.fkjava.org

    信息咨询:Q564205990           星老师

posted @ 2012-08-28 14:13 疯狂软件 阅读(856) | 评论 (0)编辑 收藏

 

对于初学者来讲,在了解Oracle体系结构之前必须掌握以下两个基本的概念: 数据库和实例。

    一、数据库

    数据库(database)是一个数据集合。

    无论数据库是采用关系结构还是面向对象结构, oracle数据库都将

    其数据存放在数据文件中。 在其内部, 数据库结构数据对文件的逻辑

    映射, 使不同的数据分开存储, 这些逻辑划分称为表空间。

    表空间和文件介绍:

    1: 表空间

    表空间(tablespace)是数据库的逻辑划分, 每个数据库至少有一个表空间,叫做系统表空间(system 表空间)。 一个表空间只能属于一个数据库。

    每个表空间由同一个磁盘上的一个或多个文件组成, 这些文件称为数据文件。

    表空间的特性:

    1)控制数据库数据磁盘分配

    2)限制用户在表空间中可以使用的磁盘空间大小

    3)表空间具有 online, offline, readonly, readwrite属性

    修改表空间的属性:

    SQL> alter tablespace 表空间名称 属性;

    查询表空间状态:

    SQL> select tablespace_name, status from dba_tablespaces;

    注意: system, undo, temp表空间不能设为offline属性。

    4)完成部分数据库的备份与恢复

    5)表空间通过数据文件来扩大, 表空间的大小等于构成该表空间的所以数据文件的大小只和。

    查询表空间与数据文件对应关系:

    SQL> select tablespace_name, bytes, file_name from dba_data_files;

    基于表空间的几个操作:

    1)查询用户缺省表空间:

    SQL> select username, default_tablespace from dba_users;

    2)查询表与存储该表的表空间:

    SQL> select table_name, tablespace_name from user_tables;

    3)修改用户缺省表空间:

    SQL> alter user username default tablespace tablespace_name;

    4)将数据从一个表空间移动到另一个表空间:

    SQL> alter table table_name move tablespace tablespace_name;

    2.数据文件

    每个表空间由同一个磁盘上的一个或多个文件组成, 这些文件叫做数据文件(datafile),数据文件只能属于一个表空间。 数据文件创建后可以改变大小。 创建新的表空间需要创建新的数据文件。 数据文件一旦加入到表空间中, 就不能从表空间中移走, 也不能与其他表空间发生联系。

    数据库必须的三类文件是 data file, control file, redolog file. 其他文件 prameter file,password file, archived log files并不是数据库必须的, 他们只是辅助数据库的。

    查看数据库的物理文件组成:

    1)查看数据文件: SQL> select * from v$datafile;

    2)查看控制文件: SQL> select * from v$controlfile;

    3)查看日志文件: SQL> select * from v$logfile;

    二: 实例

    通俗的讲实例就是操作oracle数据库的一种手段。

    数据库实例也称作服务器, 是用来访问数据库文件集的存储结构及后台进程的集合。

    一个数据库可以被多个实例访问(称为真正的应用群集选项)。

    决定实例的大小及组成的各种参数或者存储在名称init.ora的初始化文件中, 或者隐藏

    在数据库内部的服务器参数文件中。 通过spfile引用该文件, spfile存储在spfile.ora文件中。

    实例启动时读取初始化文件, 数据库系统管理员可以修改该文件, 对初始化文件的修改只有在下次启动时才有效。

    Instance分为两部分:

    1: memory structure(内存结构)

    memory structure分为两部分:SGASystem Global Area)区是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息, 它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。

    包括:

    .share pool

    .datafase buffer cache

    .redo log buffer

    .other structures

    PGAProgram Global Area)区包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反PGA 是只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收。

    2: background process(后台进程)

    包括:

    .PMON 负责在一个Oracle 进程失败时清理资源

    .SMON 检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复

    .DBWR 负责将更改的数据从数据库缓冲区高速缓存写入数据文件

    .LGWR 将重做日志缓冲区中的更改写入在线重做日志文件

.CKPT 负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。

     您正在看的文章来自疯狂软件教育中心 www.fkjava.org

     信息咨询:Q564205990              星老师

posted @ 2012-08-27 16:01 疯狂软件 阅读(95) | 评论 (0)编辑 收藏

 

对于初学者来讲,在了解Oracle体系结构之前必须掌握以下两个基本的概念: 数据库和实例。

    一、数据库

    数据库(database)是一个数据集合。

    无论数据库是采用关系结构还是面向对象结构, oracle数据库都将

    其数据存放在数据文件中。 在其内部, 数据库结构数据对文件的逻辑

    映射, 使不同的数据分开存储, 这些逻辑划分称为表空间。

    表空间和文件介绍:

    1: 表空间

    表空间(tablespace)是数据库的逻辑划分, 每个数据库至少有一个表空间,叫做系统表空间(system 表空间)。 一个表空间只能属于一个数据库。

    每个表空间由同一个磁盘上的一个或多个文件组成, 这些文件称为数据文件。

    表空间的特性:

    1)控制数据库数据磁盘分配

    2)限制用户在表空间中可以使用的磁盘空间大小

    3)表空间具有 online, offline, readonly, readwrite属性

    修改表空间的属性:

    SQL> alter tablespace 表空间名称 属性;

    查询表空间状态:

    SQL> select tablespace_name, status from dba_tablespaces;

    注意: system, undo, temp表空间不能设为offline属性。

    4)完成部分数据库的备份与恢复

    5)表空间通过数据文件来扩大, 表空间的大小等于构成该表空间的所以数据文件的大小只和。

    查询表空间与数据文件对应关系:

    SQL> select tablespace_name, bytes, file_name from dba_data_files;

    基于表空间的几个操作:

    1)查询用户缺省表空间:

    SQL> select username, default_tablespace from dba_users;

    2)查询表与存储该表的表空间:

    SQL> select table_name, tablespace_name from user_tables;

    3)修改用户缺省表空间:

    SQL> alter user username default tablespace tablespace_name;

    4)将数据从一个表空间移动到另一个表空间:

    SQL> alter table table_name move tablespace tablespace_name;

    2.数据文件

    每个表空间由同一个磁盘上的一个或多个文件组成, 这些文件叫做数据文件(datafile),数据文件只能属于一个表空间。 数据文件创建后可以改变大小。 创建新的表空间需要创建新的数据文件。 数据文件一旦加入到表空间中, 就不能从表空间中移走, 也不能与其他表空间发生联系。

    数据库必须的三类文件是 data file, control file, redolog file. 其他文件 prameter file,password file, archived log files并不是数据库必须的, 他们只是辅助数据库的。

    查看数据库的物理文件组成:

    1)查看数据文件: SQL> select * from v$datafile;

    2)查看控制文件: SQL> select * from v$controlfile;

    3)查看日志文件: SQL> select * from v$logfile;

    二: 实例

    通俗的讲实例就是操作oracle数据库的一种手段。

    数据库实例也称作服务器, 是用来访问数据库文件集的存储结构及后台进程的集合。

    一个数据库可以被多个实例访问(称为真正的应用群集选项)。

    决定实例的大小及组成的各种参数或者存储在名称init.ora的初始化文件中, 或者隐藏

    在数据库内部的服务器参数文件中。 通过spfile引用该文件, spfile存储在spfile.ora文件中。

    实例启动时读取初始化文件, 数据库系统管理员可以修改该文件, 对初始化文件的修改只有在下次启动时才有效。

    Instance分为两部分:

    1: memory structure(内存结构)

    memory structure分为两部分:SGASystem Global Area)区是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息, 它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。

    包括:

    .share pool

    .datafase buffer cache

    .redo log buffer

    .other structures

    PGAProgram Global Area)区包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反PGA 是只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收。

    2: background process(后台进程)

    包括:

    .PMON 负责在一个Oracle 进程失败时清理资源

    .SMON 检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复

    .DBWR 负责将更改的数据从数据库缓冲区高速缓存写入数据文件

    .LGWR 将重做日志缓冲区中的更改写入在线重做日志文件

.CKPT 负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。

     您正在看的文章来自疯狂软件教育中心 www.fkjava.org

     信息咨询:Q564205990              星老师

posted @ 2012-08-27 16:01 疯狂软件 阅读(111) | 评论 (0)编辑 收藏

 

 jQuery是一款免费且开放源代码的JavaScript代码库,由John Resig创建。授权协议为GPLMIT许可证双协议。

   

    示例代码:$(“p.neat”)。addClass(“ohmy”)。show(“slow”);

   

    特点

   

    轻量级

   

    GZip压缩后传输的代码文件仅14KB,未经压缩传送的代码文件仅26KB. jQuery 1.26版时:

   

    档案

   

    档案行数

    

    档案Size

   

    备注

   

    jquery-1.2.6.pack.js

   

    11

   

    31KB

   

    使用 Notepad++ 4.92版开启时,易导致Notepad++程式当掉。

   

    jquery-1.2.6.min.js

   

    32

   

    55KB

   

    jquery-1.2.6.js

   

    3550

   

    98KB

   

    链式语法

   

    $(“p.surprise”)。addClass(“ohmy”)。show(“slow”);

   

    CSS 1-3 选择器

   

    支持CSS选择器选定DOM对象。

   

    跨浏览器

   

    支持Internet Explorer 6+Opera 9+Firefox 1.5+Safari 2+

   

    简单

   

    较其它JavaScript库更易于入门。

   

    子项目

   

    jQuery UI

   

    基于jQuery的用户界面库,包括菜单、工具条、拖放、缩放、对话框、表格排序等多个组件。

   

    jQuery FX

   

基于jQuery的网页特效库,包括元素渐进式显示、隐藏等功能。

     您正在看的文章来自疯狂软件教育中心 www.fkjava.org

     信息咨询:Q564205990          星老师

posted @ 2012-08-25 17:46 疯狂软件 阅读(137) | 评论 (0)编辑 收藏

 

在使用java线程的时候,特别是初学者总会有几点很常见的误区,下面以以下代码为例:

   

    线程类:

   

    package threadtest1;

   

    public class ReturnThreadInfo extends Thread {

   

    private String str;

   

    public ReturnThreadInfo() {

   

    this.str = “Hello”;

   

    }

   

    public void run(){

   

    try{

   

    this.str = “Hello World!”;

   

    }catchException ex{

   

    }

   

    }

   

    /*返回线程信息:str变量的值*/

   

    public String getThreadInfo(){

   

    return this.str;

   

    }

   

    }

    

    主类:

   

    package threadtest1;

   

    public class Main extends Thread {

   

    public Main() {

   

    }

   

    public static void mainString[] args {

   

    ReturnThreadInfo returnThreadInfo = new ReturnThreadInfo();

   

    returnThreadInfo.start();

   

    System.out.printlnreturnThreadInfo.getThreadInfo());

   

    }

   

    }

   

    大家可以看到这个程序主要功能是返回线程returnThreadInfo对象的变量str的值并输出,那么str的值到底是什么,一些人可能会认为是“Hello world!”或是null,其实如果大家运行下就会知道输出的str的值实际是“Hello.为什么呢?其实认为输出结果是“Hello world”或是null的人存在着两个比较常见的误区:

   

    1、误区一:认为returnThreadInfo对象中的run方法一定在主类的System.out.printlnreturnThreadInfo.getThreadInfo())之间运行。

   

    这是比较常见的一个误区,稍微了解一些java编译原理的人应该清楚,java源文件的代码编译是自上而下的,也就是处在同一文件上面的代码会在下面的代码之间被编译和运行。所以很多人认为returnThreadInfo.start()先被运行,returnThreadInfo线程被启动,然后run()方法被调用,str被赋值:“hello world!,然后线程结束并返回到主类,最后调用System.out.printlnreturnThreadInfo.getThreadInfo())将str的值输出就是“Hello world!.

   

    如果returnThreadInfo不是一个线程而是一个普通类的对象,那么输出的结果是“Hello world,但是正因为returnThreadInfo是一个线程,所以run方法并不一定在System.out.printlnreturnThreadInfo.getThreadInfo())之前运行。因为实际上主类Main在运行时也是一个线程,当调用returnThreadInfo.start()方法来启动returnThreadInfo线程后,此时系统中运行的实际上就是MainreturnThreadInfo两个线程,那么这两个线程就会竞争CPU,谁先抢到CPU的控制权,谁就会先运行(实际上线程谁能优先抢到CPU运行时间是靠优先级来决定的,优先级可以通过线程的setPriorityint newPriority)来设置,newPriority的取值是1-10,newPriority值越大,线程的优先级就越高,优先强占CPU的几率就越大。线程默认的优先级是5)。由于MainreturnThreadInfo的优先级都默认为5,所以它们争抢CPU的几率是相同的。又因为Main线程实际上是比returnThreadInfo线程先启动的,所以在这个程序中,MainSystem.out.printlnreturnThreadInfo.getThreadInfo())反而比returnThreadInforun方法更早运行,所以输出的str值还是初始的“Hello.

   

    2、误区二:认为线程运行完毕后,线程消亡的同时,线程对象也会一并被回收。

   

    下面对ReturnThreadInfo类的源代码进行修改,将ReturnThreadInfo线程的优先级设置为10:

   

    public ReturnThreadInfo() {

   

    this.str = “Hello”;

   

    this.setPriority10);

   

    }

   

    这样returnThreadInfo线程的run()方法就会在Main类的System.out.printlnreturnThreadInfo.getThreadInfo())语句之前被运行。因此有很多人会认为当returnThreadInfo线程的run()方法运行完毕并返回后,线程就会死亡,那么Main类的最后一句System.out.printlnreturnThreadInfo.getThreadInfo())就会出问题,等于调用了已经不存在的对象:returnThreadInfo.

   

实际上这存在着很大的一个误区,线程的死亡并不意味着线程对象的销毁和回收。线程的死亡指的是当线程的run方法结束后,该线程就无法被重用和启动,但它的对象还存在并且它的属性和方法还一样可以被使用,因此System.out.printlnreturnThreadInfo.getThreadInfo())输出的并不是NULL而是“Hello World!,只有当整个应用程序都结束后,returnT

 您正在看的文章来自疯狂软件教育中心 www.fkjava.org

 信息咨询:Q564205990          星老师

posted @ 2012-08-24 16:45 疯狂软件 阅读(146) | 评论 (0)编辑 收藏

 

 

Windows操作系统好几个版本中,都可以把系统日志另存为文本文件、CSV文件等等,以方便系统管理员查询。不过同XP操作系统版本不同,在Windows7 中其日志另存为多了一个格式,即Xml格式。如下图所示,在Windows7中除了有XP操作系统所具有的三种格式外,还多了一个XML文件格式。这个格式也真是很多系统管理员所期待的日志格式。因为采用这个日志格式,能够给我们日常管理带来很大的便利。

便利一:阅读与查询方便。

         Xml格式的文件与其它文件最大的不同,就是Xml文件是一种结构化的数据。通俗的来说,其在保存记录的时候,会采用一些特殊的格式化控制符符号,来保证存储的数据都符合结构化的需要。那么这结构化的数据,对于系统管理员有什么帮助呢?最直接的帮助,就是系统管理员可以将Xml文件的数据轻松的导入到数据库中,进行分析。系统管理员往往需要多几个月、甚至几年的日志信息进行分析,以找到提高操作系统性能与漏洞方面的信息。但是对于这些海量的数据,如果不借助于数据库等专业分析工具,很难得出一个合理的结论。为此系统管理员往往需要把这些日志记录导入到数据库系统中,然后进行纵向与横向的对比,最终得出一些可行的结论。

       而现在如果采用了Xml格式来保存日志信息的话,那么系统管理员就可以轻松的把这些日志信息导入到数据库中。在不需要任何调整的情况下,就可以把XML格式的文件直接导入到数据库系统中。由于XML文件可以直接通过浏览器等工具打开,而这个浏览器又往往是操作系统所必备的一个应用软件。所以其查看就会非常的方便。

便利二:兼容性比较高

       XML文件的另外一个优点,就是其兼容性比较高。现在主流的数据库软件,基本上都支持XML文件。也就是说,系统管理员不仅可以利用微软的SQL Server数据库软件,也可以利用Oracle等非微软的数据库软件,把日志信息导入进去,然后进行分析。通常情况下,大部分系统管理员不怎么喜欢使用SQL Server数据库,因为其相对来说复杂一点,而且安装起来也比较麻烦。再说,对日志记录进行统计分析,使用SQLServer这种大型的数据库系统也有一点大材小用。为此包括笔者在内的系统管理员更加喜欢使用MySQL等小型的数据库系统来进行分析。不仅仅因为其是免费的,主要是其小巧方便,而且也不会占用多大的硬盘空间。而现在Windows7操作系统中,推出了XML格式的文件来保存日志记录,那么我们系统管理员就更加有理由采用MySQL等小型数据库了。因为MySQLXML文件的支持是非常强大的。而且,数据库也可以把相关的统计结果保存为XML文件的格式。

 

       另外XML的兼容性还体现在不同操作系统平台上的兼容。像事件文件,这是微软操作系统提供的一种文件格式,在Linux等操作系统上无法打开。再如文本文件,虽然在Linux操作系统上可以打开。但是通常情况下会出现一个格式的混乱现象,影响系统管理员的正常阅读。除非系统管理员利用一些系统自带的工具进行转换。但是采用XML格式的文件就不会出现这种情况。XML文件看起来就好像是一个网页。其在Windows操作系统下打开是什么样子的,那么在Linux操作系统上打开也是这个样子。不仅格式不会乱掉,而且也不需要用到其它额外的辅助工具。所以说,这个不同操作系统平台上的兼容性,可以提高员工资料的共享。据笔者所知,不少的企业,可能客户端采用的是Windows系统,而在服务器端采用的是Linux等非微软的操作系统。现在这种趋势越来越明显。所以提高这个多操作系统的兼容性,也是非常必要的。即使把日志文件保存在Linux操作系统上的文件服务器中,也不用担心会有什么问题。

便利三:可以实现日志文件的统一管理

        在企业中,不仅操作系统会产生日志文件。其它应用系统也会产生相关的日志文件。如数据库系统、ERP系统、财务管理软件等等也会产生日志文件。当企业应用服务器比较多的时候,分散的管理日志文件不仅效率比较低,而且容易造成关键信息的疏漏。为此通过一个统一的日志服务器平台来管理各个系统与服务产生的日志文件,是一个比较好的解决方法。但是要实现这个目标的话,最大的障碍就是各个系统产生的日志文件格式不兼容。如果Oralce数据库系统、 Windows操作系统等等都以各自的格式来保存日志文件,那么就需要不同的工具来打开这些日志文件进行查询,这处理起来非常的不方便。而如果这些应用软件都支持XML格式的日志文件,那么就会非常的方便。

        自从微软Windows7操作系统推出了XML格式的日志文件,笔者现在正在做一个项目。就是把Windows7操作系统、Oracle数据库系统以及其它一些支持XML日志文件的应用服务的日志文件,实现同一个软件来管理。其实原理很简单,就是把这些系统产生的日志文件自动传送到一台日志服务器中,然后数据库会自动把这些日志文件导入到数据库服务器中。并利用数据库的触发器等等工具来进行一些分析、自动预警等等工作。这可以减少系统管理员不时的查看相关日志所耗用的时间,减轻系统管理员的工作量。

        所以微软推出了采用XML格式的日志文件,这让统一管理操作系统与其它非微软产品的日志文件有了实现的可能性。因为XML格式是一个结构化的数据文件,其支持的厂商有很多。不过XML格式的文件已经出来了好久了,应该在XP操作系统出来之前。为什么在XP操作系统上,没有实现这个技术,笔者对此比较迷惑。不过在Windows7中终于给大家盼来了,迟来总比没有好。

便利四:对于WEB的支持性比较好。

        有时候系统管理员往往一个人不能够完成相关日志记录的分析。而需要跟数据库管理员或者其他应用软件负责人一起完成相关的日志分析工作。这主要是系统管理人员分工的不断细化所造成。现在有不少的项目管理软件,都是基于WEB来实现的。如果把日志文件跟这些WEB项目管理软件结合起来的话,这对系统管理员的工作将会有很大的帮助。

     您正在看的文章来自疯狂软件教育中心 www.fkjava.org

     信息咨询:Q564205990            星老师

posted @ 2012-08-21 17:32 疯狂软件 阅读(116) | 评论 (0)编辑 收藏

 

今天在看用TdataSet生成的XML中第一行里有个standalone,不知道是什么意思,查了一下资料才知道它的作用,下面就把我了解的写下来。

    standalone 用来表示该文件是否呼叫其它外部的文件。若值是 yes 表示没有呼叫外部文件,若值是 no 则表示有呼叫外部文件。默认值是 yes”。

    这里所指的外部文件其实就是查检XML是不是有效的约束文件,或是DTD或是Schema,那这两者又有什么区别呢?

    尽管XML1.0提供了一种机制,即文档类型定义(DTD)来规范XML的格式规则。但是它天生存在一些缺点,比如,它采用了非XML的语法规则、不支持更多的数据类型、扩展性差等,为了克服这些缺点,XML Schema 出现了。W3C推荐在XML中使用XML Schema来代替DTD

    XML Schema(模式) DTD一样,也用于定义 XML 文档的约束。但它与DTD明显不同的是,XML Schema遵循XML语法规则,更好地支持数据类型以及命名空间。W3C称:XML Schema is an XML based alternative to DTD。模式在单独的文件中定义,通常扩展名为 .xsd。每个模式定义都有一个根元素 schema,该元素属于名称空间http://www.w3.org/2001/XMLSchemaschema 元素可以包含可选的属性。

    比如:

    <xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema

    elementFormDefault="qualified" attributeFormDefault="unqualified">

    这表示模式中使用的元素来自http://www.w3.org/2001/XMLSchema名称空间。

    XML 文件使用 schema 名称空间中的 schemaLocation 属性链接到对应的模式。使用 schemaLocation 属性必须定义 schema 名称空间。所有这些定义都出现在 XML 文档的根元素中。

    语法如下:

    <root_element schema_namespace_definition schema_location_definition>

    下面是一个例子:

    <Books xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"

    xs:schemaLocation="http://www.example.com Books.xsd">

    先来看看一个XML文件示例(message.xml),分别用DTDXML Schema 描述这个文件,看看它们之间的区别:

    1、使用DTD

    <?xml version="1.0" standalone="yes"?>

    <!DOCTYPE message[

    <!ELEMENT message to,from,body>

    <!ELEMENT to      #PCDATA>

    <!ELEMENT from    #PCDATA>

    <!ELEMENT body    #PCDATA>

    ]>

    <message>

    <to>rose</to>

    <from>alex</from>

    <body>Hi,My Girl!</body>

   </message>

    2、使用XML Schema

    message.xml:

    <?xml version="1.0" standalone="no"? >

    <message xmlns=http://www.example.com

    xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

    xsi:schemaLocation="http://www.example.com message.xsd">

    <to>Rose</to>

    <from>Alex</from>

    <body>Hi,My Girl!</body>

    </message>

    message.xsd:

    <?xml version="1.0"?>

    <xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema

    targetNamespace=http://www.example.com

    xmlns="http://www.example.com" elementFormDefault="qualified">

    <xs:element name="message">

    <xs:complexType>

    <xs:sequence>

    <xs:element name="to" type="xs:string"/>

    <xs:element name="from" type="xs:string"/>

    <xs:element name="body" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

    </xs:element>

</xs:schema>

     您正在看的文章来自疯狂软件教育中心 www.fkjava.org

     信息咨询:Q564205990             星老师

posted @ 2012-08-19 17:27 疯狂软件 阅读(282) | 评论 (0)编辑 收藏

   tomcat服务器是一种Servlet/jsp容器,更实质性的说是Servlet容器,因为jsp最终还是被编译成servlet来执行的。而对于servlet来说,其最长见的用途是扩展java web服务器功能,为来自web客户的请求提供服务。它完全运行在java虚拟机上。由于它的运行在服务器端,因此他的运行不依赖于浏览器。

   

        tomcat作为servlet容器,负责处理客户请求,把请求传给servlet并把结果返回给客户。servlet容器与servlet之间的接口是由java servlet api定义的,在此api中定义了servlet的各种方法,这些方法在servlet生命周期的不容阶段被servlet容器调用,servlet api还定义了servlet容器传递给servlet的对象类,如请求对象ServletRequest和相应对象ServletResponse

   

       tomcat服务器是由一系列可配置的组件构成,其中核心组件是Catalina Servlet容器,它是所有其他tomcat组件的顶层容器。tomcat的组件可以在conf/server.xml文件当中进行配置,每个tomcat组件在server.xml文件中进行配置,每个tomcat组件在server.xml文件中对应一种配置元素。具体见下:

   

    < server>

   

    < service>

   

    < Connector>

   

    < /Connector>

   

    < Engine>

   

    < Host>

   

    < Context>< /Context>

   

    < /Host>

   

    < /Engine>

   

    < /service>

   

    < /server>

   

    1.顶层类元素:

   

    < Server>< Service>,他们位于整个配置文件的顶层

   

    < Server>元素代表整个Catalina Servlet容器,它是tomcat实例的顶层元素。< Server>元素当中可包含一个或多个< service>元素。

   

    < service>元素中包含一个< Engine>元素,以及一个或多个< Connector>元素,这些< Connector>元素共享同一个< Engine>元素

   

    2.连接器类元素:

   

    connector,它代表了介于客户与服务器之间的通信接口,负责将客户的请求发送给服务器,并将服务器的相应结果传递给客户。

   

    3.容器类元素

   

    < Engine>,< Host>< context

   

    其中< Engine>组件处理在同一个< service>中所有< Connector>元素接受到的客户请求

   

    < Host>组件为特定的虚拟机处理所有客户请求。每个< Host>元素定义了一个虚拟主机,它可以包含一个或多个web应用。

   

    < context>组件为特定的web应用处理所有客户请求。它是使用最频繁的元素。每个< Context>元素代表了运行在虚拟机上的单个web应用,一个< Host>元素中可以包含多个< context>元素

   

        说到< context>元素,java web应用的主要特征之一就是它与Context的关系,每个web应用有唯一的Context.java web应用运行时,Servlet容器为每个web应用创建唯一的ServletContext对象,它被整个web应用中所有的组件共享。

   

    如下代码:

   

    < Context path=“/reglog” docBase=“reglog” debug=“0”

   

    crosscontext=“true” reloadable=“true”>

   

    < /Context>

   

    你可以自己在server.xml当中定义一个context元素,设定你所存在项目的参数及属性。其中path指定访问web应用的url入口

   

    docBase指定web应用的文件路径,可以给定绝对路径,也可以给定向对于hostappBase属性的相对路径

   

    reloadable,如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classesWEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新,服务器会自动重新加载web应用。

   

    另外说一下tomcat的运行脚本

   

        如果仔细研究一下tomcat的启动和关闭脚本,会发现startup.batshutdown.bat都执行同一个目录下的catalina.bat脚本。其实质是这样的:执行startup.bat脚本,相当于执行了catalina start命令,执行shutdown.bat相当于执行了catalina stop命令。

   

    commonlib,serverlib,sharedlib这三个目录相信大家都见过吧,但具体是干什么用的呢?

   

    其中serverlib下的jar文件只能被tomcat服务器访问。

   

    sharedlib下的jar文件可以被所有的web应用访问,但不能被tomcat服务器访问。

   

    commonlib目录下的jar文件可以被tomcat服务器和所有的web应用访问

 

您正在看的文章来自疯狂软件教育中心 www.fkjava.org

信息咨询:Q564205990            星老师

posted @ 2012-08-18 14:51 疯狂软件 阅读(291) | 评论 (0)编辑 收藏

 

    从服务器端促进程序快速开发的Java Server Pages JSP)决定它成为一种广为流行的工具。虽然呆板的一面仍然存在,然而无论它包含多少缺点,JSP能够为Web程序设计者提供很多东西,尤其是与数据库的输入和输出操作与数据的处理。

   

    通过JSP来进行数据库访问不需要太多的引导。问题是如何使开发者能够接受Web程序的数据库访问比传统的本地OLAP系统的数据库访问更加具有吸引力,并且使他们认识到,整洁和简要的数据访问方法才是关键的。在这一点上,JSP可以很好地解决。

   

    你能够做哪些?

   

    如果你正在编写高数据量、数据密度大的Web程序时,你的数据库访问应该具备哪一方面的要求?如果你正在使用JSP,那么你必须处理大量的服务器端的数据。程序也许需要大量的数据,或者很多用户,或者这二者的结合。你所考虑的可能范围还会包括:性能的优化,可检测性,每一用户的多个查询的影响,查询的复杂性,以及当单一的会话处理大量数据时,高等级的类型转换。

   

    这其中包含大规模的处理。但是,JSP能够帮助你很好地处理,因为它能够与Java Database Connectivity API JDBC)很好的兼容。你可以将JDBC包含在JSP代码中,并且JDBC能够传递声明执行类似数据库的命令,只要你能够正确地使用JDBC驱动程序。

   

    开始

   

    这里是一个通常的、抽象的JSP程序执行的体系。首选的JSP设计模式为模型-视图-控制器(MVCModel-View-Controller),即传统三层体系的一种变异,以更好的适合于服务器程序。在JSPMVC设计模式中,Model指的是程序的逻辑与数据,View为查看,以及Controller为请求处理。

   

    当你设计一个JSP程序时,在客户端与服务器交互之间建立第一步骤的页面,这是最好的一个过程。例如,在一个典型程序中,在数据交换中的每一个特定步骤都会有页面:一个数据入口页面,一个验证请求页面,一个数据库响应页面,以及这些页面的子页面(一个更改记录的页面,一个删除记录的页面,等等)。

   

    你可以将JDBC嵌入到每一页面中,以完成被请求的数据库操作。然而,这一操作也会冒很大的风险,因为由于混合了JSPJDBC而混合了整个程序──JDBC是基于SQL.这也就是SQL被封装在JDBC,JDBC也被封装在JSP──这也足够让你晕头转向的。如果你选择这一方法,你将会获得你想要的功能,但一定要保证你的程序逻辑与数据库访问代码的关系非常清晰,这一点格外小心。

   

    嵌入式JDBC

   

    JDBC API不会直接地与数据库进行交流。其中的驱动程序完成的实际的连接,你可以在卖方的Web站点上下载这些驱动程序。除此之外,还有四种JDBC的驱动程序类型,如果你决定使用JDBC,你需要正确地选择最为适合你需要的那种类型。你将使用一个DriverManager类来处理基于驱动程序的连接。

   

    你可以使用一个名为getConnectionDriverManager方法来建立你的数据库连接。你还可以使用它的URL参数来识别数据库:

   

    public static Connection getConnectionjdbc:odbc:nameOfDatabase

   

    现在,告诉DriverManager有关驱动程序的信息(应该在你的classpath中):

   

    Class.forName(“sun.jdbc.odbc.nameOfJDBCDriver”);

   

    你已经将数据库连接到JSP程序,但你仍然不能够执行一个数据库命令。解决这一点,你可以在JSP代码中生成声明以建立数据库命令,如下所示:

   

    public Statement createStatementintresultSetType, intresultSetConcurrency

   

    其中的参数能够让你控制从数据库查询得到的结果。当使用第一个参数时,可以在程序中看到结果;当使用第二个参数时,你可以通过查询来更新数值(这是一个难以相信的功能,在以后的文章中值得进一步讨论)。

   

    A

   

    C#Listing">http://builder.com.com/5100-6387-5172666.html?tag=sC#Listing

   

    AListing A显示列举了下两种方法的复杂性。

   

    声明(Statement)就是SQL命令。PreparedStatement就是SQL的声明,你可以通过其中的参数来控制程序的过程。CallableStatement是用于访问SQL存储程序。你是否开始意识到,如果你没有看到这些说明,你是否觉得这些声明很复杂?请注意到,通过调用rollback方法,你可以撤除交易过程。

   

    如果你想完全使用这些数据库访问的方法,你唯一遗漏的还有:

   

    ResultSetexecuteQuerystring sqlQuery

   

    (你可以使用executeQuery来完成以上过程。你也可以使用一个executeUpdate来完成更新、插入和删除)。你以上的声明接口使你可以使用一些方法来执行SQL声明。ResultSet所做的就是访问从查询得到的数据,所以你可以在JSP程序中使用这些数据。

   

    通过将JSP程序分解成单一的、功能明显的页面,以及在任何给定页面中执行一个单一的数据库操作,可以很大程度地简化你的数据库操作,以及建立可以用于以后程序开发的页面,即使你将SQL嵌入到这些页面的JDBC中。

   

但是你还可以做更多的事情,以使得你的JSP数据库访问更加整洁和容易维护。在JSP代码中嵌入JDBC,以及通过发送SQL命令与数据库通讯,这些过程都很好。但是,它要求在不能增加代码复杂程度下,建立通过接口的SQL命令的程序。当你的SQL处理需要提高灵活性的时候,你可以进一步地分离你的数据库接口代码,以清洁你的JSP程序。

 

     您正在看的文章来自疯狂软件教育中心 www.fkjava.org

     信息咨询:Q564205990            星老师

posted @ 2012-08-17 13:13 疯狂软件 阅读(146) | 评论 (0)编辑 收藏

 

 1)继承第1种方式:对象冒充

2)继承第2种方式:

call方法call方法是Function对象中的方法,因此我们定义的每个函数都拥有该方法。可以通过函数名来调用call方法,call方法的第一个参数会被传递给函数中的this,从第二个参数开始,逐一赋值给函数中的参数。

 

3)继承第3种方式:

 apply方法apply方法与call方法的不同之处在于,apply方法第二个参数传递的是一个数组,而不像call方法那样以离散的形式传递参数。

4)继承第4种方式:

原型链方式该方式的缺点是不能够传递参数。初始化必须要等对象创建之后

5)继承第5种方式:混合方式(推荐)

 

您正在看的文章来自疯狂软件教育中心 www.fkjava.org

信息咨询:Q564205990          星老师

posted @ 2012-08-15 13:43 疯狂软件 阅读(145) | 评论 (0)编辑 收藏

仅列出标题
共5页: 上一页 1 2 3 4 5 下一页