自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 资源 (5)
  • 收藏
  • 关注

转载 CentOS-6.3安装Mysql-5.5.29

安装方式分为rpm和源码编译安装两种,本文是采用mysql源码编译方式,编译器使用Cmake。软件需要mysql-5.5.29.tar.gz和cmake-2.8.10.2.tar.gz,请自行下载。下载地址:http://mysql.mirror.kangaroot.net/Downloads/http://www.cmake.org/files/v2.8/cmake-2.8.10.2

2014-08-19 15:22:52 869

转载 HBase迁移数据方案(两个集群不能通信)

两个可以直接通信的集群之间很容易拷贝数据从而迁移HBase数据。但是如果两个集群在不同的网络,没法通信呢?今天测试了一个方案:把某个表(table1)从集群1迁移到集群2(两个集群互相看不见),步骤如下1、拷贝集群1的表文件到本地磁盘 :/app/cloud/Hadoop/bin/hadoop fs -copyToLocal /hbase/table1 /data0/hbase

2014-08-18 10:39:50 1229

转载 hadoop的集群copy

hadoop不同版本之间的集群复制。1.基础使用hadoop distcp 来进行集群间的数据复制。2.实战如果两个集群之间版本不一样,应该这样来复制。hadoop  distcp   hftp://source/source  hdfs://dest:9000/source为啥是hftp呢,因为不同版本rpc不太一样。如果一个集群闲置,尽量使用它的MR能力。有一个要注

2014-08-18 10:30:14 895

原创 Apache 安装配置

一.介绍Apache是世界使用排名第一的Web服务器软件。本身只支持html即普通网页。可以通过插件支持php, 还可以与 Tomcat 连通来支持jsp等。二. Win7安装配置1 .下载Apache下载地址:http://httpd.apache.org/download.cgiwin下安装时可以选择是否包括OpenSSL(SSL协议):httpd-2.2.25-win

2014-05-08 15:29:21 878

原创 jQuery $("input")和$("<input>")的区别

$("input") 是选择 页面里所有 input 标签,就是以 <input 开头的。$("") 是可以分为2部分理解的,在html是一个独立标签,加上$,就生成了一个jquery对象,对象就是这个。有时用于快速生成元素,例如:$('').html('这是新建的div').addClass('classname').appendTo('body'),就在body标签后追加了这个新建的div

2014-04-30 15:55:32 885

转载 easyui tree使用方法

加载数据 $('#treeul').tree({ checkbox:true, url:'initTree.aspx', onLoadSuccess:function(){ //绑定权限 $.ajax({

2014-04-30 15:54:00 843

转载 JSTL C标签用法

JSTL标签用法关键字:JSTL标签、c:choose>、c:forEach>、c:forTokens>、c:if>、c:import>、c:otherwise>、c:out>、c:param>、c:redirect>、c:remove>、c:url>、c:when>、c:set>、c:catch>原来一直没有看过,我说过我是新手,但是好多资料上似乎也不重视 JSTL。我看项目源代

2014-04-16 10:22:12 725

转载 百度电视云,告诉你电视新“看”法

电视盒子、智能电视快速兴起,抢占用户客厅将成为2014年互联网厂商共同发力的方向。从硬件设备到电视系统以及第三方软件应用,再到用户的认可度方面都将更加成熟,并且用户在电视应用的选择上也将更多元化。有人做盒子,有人做应用,那么就有人做用户。作为一名资深用户,下面为大家推荐一款应用在智能电视盒子设备的第三方软件:百度电视云。目前主流的电视系统都基于Android进行深度定制,以小米和乐视两大系

2014-03-26 15:14:26 1139

原创 flume1.4.0安装及简单使用

Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统,flume-ng是flume的新版本的意思,其中“ng”意为new generate(新一代),目前来说,flume1.4.0是最新的版本。1.下载安装包  可以到官网http://www.apache.org/dist/flume/stable/网站下载安装包:apache-flume-1.4.0-bin.tar.g

2014-03-21 13:49:38 1598

转载 Flume使用指南

Flume 1.4.0 User GuideIntroductionOverviewApache Flume is a distributed, reliable, and available system for efficiently collecting, aggregating and moving large amounts of log data from

2014-03-20 16:49:03 2405

转载 Cloudera Flume简介

Flume是Cloudera提供的日志收集系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。 Flume是一个分布式、可靠、高可用的海量日志采集、聚合和传输的系统。上图的Flume的Architecture,在Flume中,最重要的抽象是data flow(数据流),data flow描述了数

2014-03-20 16:43:22 1075

转载 Chukwa在百度的应用实践

从上一篇 chukwa 的简介中,我们知道 chukwa 为日志分析系统提供了一整套的解决方案,其中包含了数据的生成、收集、排序、去重、分析和展示所需要的几乎所有事情,要扩展 chukwa 以实现自己特殊的需求,是很方便的.本文以 chukwa-0.3.0 为例,阐述在 分布式小组内如何以 chukwa 为基础实现"资源状态图"。概述需求"资源状态图"的需求是很明确的,具体分析如下:

2014-03-18 17:14:53 747 1

转载 hadoop状态分析系统chukwa (日志收集存储分析系统)

Apache 的开源项目 hadoop, 作为一个分布式存储和计算系统,已经被业界广泛应用。很多大型企业都有了各自基于 hadoop 的应用和相关扩展。当 1000+ 以上个节点的 hadoop 集群变得常见时,集群自身的相关信息如何收集和分析呢?针对这个问题, Apache 同样提出了相应的解决方案,那就是 chukwa。述 chukwa 的官方网站是这样描述自己的: chukwa 是一

2014-03-18 17:13:03 1811

转载 开源日志采集系统比较:scribe、chukwa、kafka、flume

1. 背景介绍许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:(1)构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;(2)支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统;(3)具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。本文从设计架构

2014-03-14 16:25:09 1954

原创 给easyui datagrid添加搜索栏

效果:源码: Basic DataGrid - jQuery EasyUI Demo 新增 编辑 删除

2014-03-14 11:08:37 4160 5

转载 日志分析方法概述

日志在计算机系统中是一个非常广泛的概念,任何程序都有可能输出日志:操作系统内核、各种应用服务器等等。日志的内容、规模和用途也各不相同,很难一概而论。本文讨论的日志处理方法中的日志,仅指Web日志。其实并没有精确的定义,可能包括但不限于各种前端Web服务器——apache、lighttpd、tomcat等产生的用户访问日志,以及各种Web应用程序自己输出的日志。在Web日志中,每条日志通常代

2014-03-13 10:46:37 760 1

转载 利用hadoop模拟制作百度、360网盘指导

可以带着下面问题来阅读:1.网盘如何实现上传文件?2.网盘如何实现远程操作?3.网盘如何实现删除文件?思考:hadoop如何与Javaweb相结合实现网盘作为云技术爱好者,我们都知道网盘。当然如果非云技术爱好者,也都知道网盘:百度网盘,360网盘等。有一点不同的是,我们在学习云技术,对于非技术人员,感觉网盘是如何神秘。作为从事云技术,不知道网盘是怎么做,

2014-03-12 17:24:47 2727 1

原创 Mybatis之Oracle增删查改示例(含Date、Clob数据类型操作)

oracle表结构create table T_USERS( ID NUMBER not null, NAME VARCHAR2(30), SEX VARCHAR2(3), BIRS DATE, MESSAGE CLOB)create sequence SEQ_T_USERS_IDminvalue 1maxvalue 99999999

2014-03-12 14:13:54 17361 8

原创 oracle中的主键自动增长

1、建用户数据表    create table t_user(           userid number primary key,           name varchar2(20),           sex varchar2(3)           );2、创建自动增长序列    create sequence SEQ_ID_T_USER    

2014-03-11 10:06:01 776

转载 百度网盘:4G大文件高速秒传原理分析,优劣及隐患

前阵子,百度网盘提供免费申请100G空间,当时一则出于好奇,二则自己移动硬盘由于使用了BT,悲催的经常出现报错,就想借此机会将文件传到百度上暂存下,腾出空间好好整理下移动硬盘,就也弄了一个帐号。100G,加上原来的5G,一共105GB到手,正好今天有时间,就准备将移动硬盘数据拷贝上去了。打开百度云-网盘之后,出现下面图:注:此图片来源网上,本地的截图由于已经使用了极速控件,没法操作。下

2014-03-07 09:25:38 2527 1

转载 百度网盘极速秒传

今天登录百度网盘,后台给出一个提示:“百度云盘推出极速上传控件,支持最大4G文件,秒传”。小心脏微微颤过,不由叹道:广告语 真无上限。   从宽带的上行和下行来讲,再好的配置,再牛的软件,都不可能突破带宽额定限值,这是一定的;银子少只能小水管,多少钱决定着你的带宽。那么百度网盘是怎敢谈“秒传”的呢?事实上,他真的做到了,但只是擦边球------   今天用四个文件来测试秒传,大小1个G左右

2014-03-07 09:05:51 4678 1

原创 mysql日期和字符相互转换

mysql日期和字符相互转换 date_format(date,'%Y-%m-%d')    -------------->oracle中的to_char(); str_to_date(date,'%Y-%m-%d')     -------------->oracle中的to_date(); %Y:代表4位的年份 %y:代表2为的年份  %m:

2014-03-06 15:45:29 772

原创 ORA-12545:连接失败的问题

oracle11g:ORA-12545:因目标主机或对象不存在,连接失败的问题        1.找到oracle安装目录,找到这俩个文件 tnsnames.ora和 listener.ora ,        他们的路径如下:如盘符:app\Administrator\product\11.1.0\db_2\NETWORK\ADMIN        他们在同一个目录里,编

2014-03-03 14:47:56 1134

转载 Mybatis与Ibatis

随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis 虽然从正式版发布至今也有近一年时间,官方也非常友好的提供了中文版的使用手册,不过相信很多人还在项目中使用ibatis2.x版本。究竟Mybatis有哪些新特性,能给我们带来哪些好处呢?以下是我看一位大侠研究后1、Mybatis实现了接口绑定,使用更加方便。 在ibatis2.x中我们需要

2014-03-03 13:52:27 1054

原创 easyUi combotree 实现动态加载树节点

easyUi combotree 实现动态加载树节点所属机构:function initUserGroup() {        $('#cc').combotree(                {                        url : "../sysUserGroup/getUserGroupTreeList.do?pid=0",

2014-02-25 14:49:16 3751

原创 createTextRange()的使用(含文本框选中部分文字内容)

function test(){var rng=document.body.createTextRange();alert(rng.text)}function test1(){var rng=document.body.createTextRange();alert(rng.htmlText)}获取指定文本框中的选中的文字:只响应第一个

2014-02-24 13:31:53 2031

原创 java文件下载的中文文件名乱码问题的解决

在Java的web开发中,文件下载功能的文件名文件名乱码问题是经常遇到的。对于这个问题,不同的浏览器,解决的方法不太一样。IE的话,通过URLEncoder对filename进行UTF8编码。而其他的浏览器(firefox、chrome、safari、opera),则要通过字节转换成ISO8859-1了。示例代码(通过测试):if (request.getHeader("Use

2014-02-24 09:51:36 1125

转载 BeanUtils.copyProperties() 用法

一、简介:       org.springframework.beans.BeanUtils提供对Java反射和自身API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。二、用法:        如果你有两个

2014-02-21 11:07:21 834

转载 解决MySQL查询不区分大小写

今天遇到一个情况, 查询数据时查询条件输入不管大小写,都能查到同样的数据。 比如: 输入 aaa  或者aaA ,AAA都能查询同样的结果,说明查询条件是大小写不敏感的。 因为程序使用了hibernate框架访问mysql数据库。 一开始以为是hibernate的问题。 最跟踪了一下hibernate代码没有看到转换大小写的步骤,最后确认hibernate其实只不过是将hql转化为sql。

2014-02-19 09:16:53 872

转载 mysql的表名/字段名/字段值是否区分大小写

1、mysql默认情况下是否区分大小写,使用show Variables like '%table_names'查看lower_case_table_names的值,0代表区分,1代表不区分。2、mysql对于类型为varchar数据默认不区分大小写,但如果该字段以“*_bin”编码的话会使mysql对其区分大小写。3、mysql对于字段名的策略与varchar类型数据相同。即:默

2014-02-19 09:11:17 3485

原创 Mapped Statements collection does not contain value for

Mapped Statements collection does not contain value for后面是什么类什么方法之类的:错误原因有几种:1、mapper.xml中没有加入namespace2、mapper.xml中的方法和接口mapper的方法不对应3、mapper.xml没有加入到mybatis-config.xml中(即总的配置文件),例外:配置了mapper

2014-02-10 17:05:49 1059

原创 JSP下载示例

文档下载保存中转页面<%String root = getServletContext().getRealPath("/"); //得到网站绝对路径//String filepath = "upload_file\\lwfile\\"; //设置文件存放的相对路径(windows)String filepath = "upload

2014-02-10 11:20:00 846

转载 《我的助理辞职了》,最近非常火的一篇文章,受益颇多,共勉!

公司招了大批应届本科和研究生毕业的新新人类。平均年龄25岁。    那个新的助理,是经过多次面试后,我亲自招回来的一个女孩。名牌大学本科毕业,聪明,性格活泼。私下里我得承认,我招她的一个很重要的原因,除了她在大学里优秀的表现之外,还因为她写了一手漂亮的字。女孩能写一手好字的不多,尤其像她,看起来长发飘飘,多么女性化的一个姑娘,一手字却写的铿锵倜傥,让我对她不由多了很多好感。

2014-02-10 08:50:45 1203

原创 屏蔽浏览器左下角的js错误提示

经常遇到网页左下角出现"网页上有错误"的提示,如果访客的IE没有关闭"禁止页面调试"功能,那么还会弹出调试对话框,让人很头疼。通常如果网页运行正常的话,就完全可以忽略这些问题,把IE左下脚那个讨厌的“网页上有错误”提示屏蔽掉,无论你的网页使用什么脚本语言编写,无论是asp.net,asp,还是其他脚本网页,可以把下面的代码加入在和之间,那么就不会在提示网页上有错误了,把该网页小错误忽略了。

2014-01-28 17:05:58 1644

原创 swfupload上传在firefox报错解决方案

在网上找到的: 在项目中要用到FLASH上传,选择了swfupload上传组件。因为一些定制化需求,感觉这个东西做得挺不错的。在IE下测试很正常,但项目组其他成员有的习惯了用FF,结果在FF上报 302 错误。在网上搜索了很多文章,有中文的,也有英文的,都说是session的问题,火狐不保存session,需要传递sessionID,说的很不清楚。其实在前台配置的时候也使用了param

2014-01-28 16:52:43 2056 1

转载 URL短地址压缩算法 微博短地址原理解析

短网址应用已经在全国各大微博上开始流行了起来。例如QQ微博的url.cn,新郎的sinaurl.cn等。我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http://url.cn/2hytQx为什么要这样做的,原因我想有这样几点:微博限制字数为140字一条,那么如果我们需要发一些连接上去,但是这个连接非常的长,以至于将近要占用我们内容的一半篇幅,这肯定是不能被

2014-01-27 10:40:32 1261

转载 EasyUI整站示例系统-SyPro

●SyPro,是一个EasyUI整站示例系统●前台由EasyUI1.3.1编写,后台是JAVA编写,应用框架spring mvc+hibernate4+maven●目前已经过测试通过的数据库有MySql5、Oracle10g、SqlServer2005●Web容器测试通过的有Jetty和Tomcat7●要求JDK1.6+ SyPro示例项目(弹窗修改模式v201

2014-01-26 16:56:06 4683 3

原创 Jquery EasyUI-datagrid 使用介绍

DataGrid 属性覆写了 $.fn.datagrid.defaults.参数名类型         描述默认值titlestring          Datagrid面板的标题nulliconClsstring

2014-01-24 15:33:50 1145

原创 Jquery EasyUI API 中文文档 - Tree树使用介绍

2014-01-23 09:10:30 1450

转载 HBase使用场景和成功案例

1.2 HBase 使用场景和成功案例有时候了解软件产品的最好方法是看看它是怎么用的。它可以解决什么问题和这些解决方案如何适用于大型应用架构,能够告诉你很多。因为HBase有许多公开的产品部署,我们正好可以这么做。本章节将详细介绍一些人们成功使用HBase的使用场景。 注意:不要自我限制,认为HBase只能解决这些使用场景。它是一个初生的技术,根据使用场景进行创新正驱动着系统的发展。如

2014-01-09 10:32:57 1243

swt(SWT.JAR)

swtswtswtswtswtswtswtswtswtswtswtswtswtswt

2008-11-22

jsp经典笔记jsp经典笔记

JSP(java server page) 1.JSP介绍: JSP是服务器端运行的页面,JSP本身就是一个Servlet,他不仅可以包含静态的HTML代码,也可以包含动态的JAVA代码,服务器容器可以将JSP转换成Servlet发布,并接受请求。 Jsp文件只需放在应用文件下就可以了。 JSP例子: &lt;html&gt; &lt;head&gt;&lt;title&gt;time&lt;/title&gt;&lt;/head&gt; &lt;body&gt; &lt;h1&gt;&lt;%=new java.util.Date()%&gt;&lt;/h1&gt; &lt;/body&gt; &lt;/html&gt; 2.JSP运行过程 1,JSP文件先要翻译成Java文件(Servlet),在tomcat中翻译后的java文件在tomcat下的work\Catalina\localhost中相应名字的应用目录里。 2,编译Java文件 3,运行.class文件 3.JSP的特点 1,JSP不需要编译 2,JSP不需要进行配置 3,JSP本质上就是一个Servlet 4,JSP是以静态页面为主的。

2008-09-07

JDBC笔记 JDBC笔记

一、概述: JDBC从物理结构上说就是Java语言访问数据库的一套接口集合。从本质上来说就是调用者(程序员)和实现者(数据库厂商)之间的协议。JDBC的实现由数据库厂商以驱动程序的形式提供。JDBC API 使得开发人员可以使用纯Java的方式来连接数据库,并进行操作。 ODBC:基于C语言的数据库访问接口。 JDBC也就是Java版的ODBC。 JDBC的特性:高度的一致性、简单性(常用的接口只有4、5个)。 1.在JDBC中包括了两个包:java.sql和javax.sql。 ① java.sql 基本功能。这个包中的类和接口主要针对基本的数据库编程服务,如生成连接、执行语句以及准备语句和运行批处理查询等。同时也有一些高级的处理,比如批处理更新、事务隔离和可滚动结果集等。 ② javax.sql 扩展功能。它主要为数据库方面的高级操作提供了接口和类。如为连接管理、分布式事务和旧有的连接提供了更好的抽象,它引入了容器管理的连接池、分布式事务和行集等。 注:除了标出的Class,其它均为接口。 API 说明 java.sql.Connection 与特定数据库的连接(会话)。能够通过getMetaData方法获得数据库提供的信息、所支持的SQL语法、存储过程和此连接的功能等信息。代表了数据库。 java.sql.Driver 每个驱动程序类必需实现的接口,同时,每个数据库驱动程序都应该提供一个实现Driver接口的类。 java.sql.DriverManager (Class) 管理一组JDBC驱动程序的基本服务。作为初始化的一部分,此接口会尝试加载在”jdbc.drivers”系统属性中引用的驱动程序。只是一个辅助类,是工具。 java.sql.Statement 用于执行静态SQL语句并返回其生成结果的对象。 java.sql.PreparedStatement 继承Statement接口,表示预编译的SQL语句的对象,SQL语句被预编译并且存储在PreparedStatement对象中。然后可以使用此对象高效地多次执行该语句。 java.sql.CallableStatement 用来访问数据库中的存储过程。它提供了一些方法来指定语句所使用的输入/输出参数。 java.sql.ResultSet 指的是查询返回的数据库结果集。 java.sql.ResultSetMetaData 可用于获取关于ResultSet对象中列的类型和属性信息的对象。

2008-09-07

商城之家后台管理系统

1管理员登陆 用户登陆界面,输入系统默认的最高权限的管理用户名name:admin ,password:admin,密码无误,正常进入后台管理系统,如果有错误,则会在登陆按钮下方输出相关的提示。例如密码/用户名错误。。。等

2008-09-07

xml入门教程/xml入门教程

&1.XML简介 XML的背景 1) XML代表可扩展的标记语言(eXtensible Markup Language); 2) XML由W3C联盟发展维护; 3) XML是一种元语言,可以用来定义其它标签语言; 4) XML没有定义任何标记,它提供了一种工具定义标记以及它们之间的结构关系; 5) XML是一种用于结构化文本交换的标记语言; 6) XML代表了内容的结构也代表了内容本身; 7) XML继承自SGML(标准通用标记语言)。SGML的前身GML由IBM在1960年发明,用于描述设备无关的文本 8) XML是SGML的子语言,由SGML简化而来,起初的目的是为Web的结构文档提供服务。 9) W3C组织在1998年2月10日发布XML1.0版,第二个版本发布于2000年10月9日。 10)XML是分层的树形结构的自解释的一种可扩展的标记语言。 XML和HTML的关系 1) 事实上,HTML和XML不能够进行比较的。因为XML是一种元语言,而HTML是一种定义好的标记语言。XML是描述数据的语言,HTML是描述数据 外观的语言。 2) HTML有一套确定的标记。在W3C标准规范中定义了HTML标记的含义并由部分浏览器实现了。 3) HTML标记非常适合描述人类易读的可视化文本。 4) HTML定义了许多表现指令用以优化在浏览器中的显示。 5) 在HTML标记中,数据固有的结构丢失了。 6) HTML没有维持数据类型信息的完整性、约束、或实体间的其它关系,而XML提供了这些特征。 对XML文件的要求,格式良好(符合XML的语法要求),有效的XML; XML的用途,数据传输的中间件,做为通用文档格式 1,数据交换 2,web服务 3,内容管理 4,web集成 5,充当配置文件 格式良好的XML文件的规范 XML文档是一种严格规范的语言,必须按照规范来写。 XML文档的框架结构 XML文档=序言+元素+杂项(可选) 1)序言 序言=(XML声明)+(杂项)+(文档类型声明) XML声明 如: 文档类型声明 规定元素的结构和属性列表的取值 如: 2)元素 空元素 非空元素 内容 内容=(子元素|字符数据|字符数据段|引用|处理指令|注释)* 字符数据 字符数据中,不能含有&,,',",需要采用实体引用的方式 字符数据段 引用 3)杂项 处理指令 XML为其它应用程序准备的接口。 注释 空白符指空格、回车等 XML文件事例 ... XML文件的写法 xml文档是有标签和标签中的内容组成的,标签和标签中的内容合成为元素 非空元素 (起始标签) aaa(内容) (结束标签) 空元素 格式良好的XML文档的规范 1)文档声明位于文件的开头 2)文档中只能定义一个唯一的根元素(根元素是在文档声明之后的最外层的元素) 3)标签必须闭合,且不能交叉,有元素的起始标签,就必须有其结束标签(空元素除外) 4)层层嵌套,每一对标签总是出于另一对标签的内或和其处于同一层,不能交叉(根元素chuw) 5)大小写敏感,起始标签和结束标签的名字要一致 6)属性值必须用引号引起来 7)注意特殊字符,使用时需要使用转义字符。 注意: 1.第一行一定要写 2.xml文件是由元素和元素的内容以及属性组成的,一个xml文件中只能有一个根元素,标签和标签的内容加在一起叫作一个元素。xml是大小写 敏感的,只能以字母或下划线开头。 字符转义 &lt; 代表 "" , &quot; 代表双引号。 &amp 代表 "&" , &apos; 代表单引号 字符数据段,不解析 ....的部分不必使用转义,其中内容会直接输出。 引用 实体声明 使用实体,引用 &引用名 事例: (XML文件的声明) (注释) (根元素) (子元素) b) then {return 1} else{return 0} }]]> (空元素) 张三 XSLT,是用于对XML进行文档格式转换,把一个XML文档转换成另一种格式的XML文档,但是其中内容是不变的。 &2.DTD(Document Type Difinition DTD文档是用于规定XML文档的结构。只有结构符合所引用的DTD文件的XML文件才能称之为有效的XML文件。 DTD(文档类型定义) !DOCTYPE 定义DTD文件名 !ELEMENT 定义元素中可用的数据类型 #PCDATA 可解析字符串。 1)DTD的调用 方式一:调用内部文档类型定义。 <!DOCTYPE studinfo[]> 注意点: (1) studinfo与(#PCDATA)有空格 (2) 文档类型名与根元素名必须一致 方式二:调用外部文档类型定义,需要写一个DTD文档 注意点: (1)standalone="no" (2)注意dtd文件的路径 2)DTD的结构 1.元素类型声明 指明元素的名称和元素含有的内容。 元素类型声明= 元素内容说明='EMPTY'|'ANY'|混合内容|元素内容|'#PCDATA' #PCDATA: 只有可析的字符数据才能作为元素的内容 元素内容: 元素内部只能出现指定的子元素 事例:带有子元素的元素结构定义 "?" 表示子元素只可以出现一个,也可以不出现 (0到1) "+" 表示子元素必须出现,可以出现多个 (1到多) "*" 表示子元素可以出现多个,也可以不出现,(0到多) Enumerated:枚举类型,由“|”分隔的可能的子元素,在可能出现的子元素中只能有一个出现。 EMPTY:元素内容为空时才写(空元素,其中不能有内容) (无子元素) ANY:元素内容可以任意,也可以为空 混合内容:标记文本和可析字符串 2.元素属性表声明 属性:由“=”分隔的成对的属性名和属性值构成,只能出现在元素标记的内部。 结束标记不能带属性,一个元素可以具有多个属性 语法: 属性取值类型 1、CDATA:可析字符(文本) 2、Enumerated:枚举类型,由“|”分隔的可能的属性值列表 属性默认值: 注意 1、#REQUIRED:必须提供属性值 2、IMPLIED:可提供也可不提供 3、FIXED:不能修改 事例: zhangshan 实体声明 实体:存储了任意符合规则的xml文档单元片断。 1、内部通用实体 定义格式 引用格式 &实体名; 2、外部通用实体 定义格式 引用格式 &实体名; 事例: <!DOCTYPE studinfo[ ]> zhangshan 20 beijing haidian &schoolinfo; 记号声明 用记号标识非xml格式的数据 定义格式 3)DTD的缺陷,DTD中的类型比较少,有一些约束在DTD中是表达不了的,DTD不支持XML语法. &3.NameSpace(命名空间) namespace是为了解决XML文档中的命名冲突问题的。 DTD不支持命名空间,解析器无法测试命名空间。 1、作用: 解决XML文档中命名冲突的问题,即将 XML文档与引用URI标识的名域相结合,来 限定其中的元素和属性名。 示例: t1 man s1 girl 2、名域的声明 (1)直接定义 xmlns:名域前缀="名域的URI"(唯一性) 类比:名字与身份证 名域的使用,名域前缀:需要限定的元素名 示例: zhangshan man stu1 girl (2)缺省定义 xmlns=名域的URI zhangshan man stu1 girl 3、名域的使用 (1)用名域限定元素 zhangshan man stu1 girl (2)用名域限定属性 zhangshan man caoyang,no1 stu1 girl haidian,no2 4、名域的作用范围 名域能够把声明它的元素和该元素的所有子元素关联起来,除非它们被其他的名域声明所覆盖。 &XML Schema Schema 也是XML文档,用于定义XML文档的结构。 目标名域 使用目标名域中的限制,要只用这个schema文件结构生成XML文档中必须使用者个默认名域。 schema文件的扩展名为 .xsd schema文档的语法和XML的语法相同。 schema文档也有根元素,根元素为schema。 参照类型约束,来约束元素的内容 元素的默认和固定值 1) 简单元素可以有一个默认或固定值: 2) 当没有指定值时,一个默认的值自动分配给元素。在这个例子中,默 认值为red: 3) 一个固定值也是自动分配给元素的,你不能指定 其它值。在这个例子中,默认值为red: ref关键字 参照....定义。 属性结构的定义,属性也可以使用固定值或者是默认值 schema文件中也可以定义元素结构和类型,schema文件中对元素内容加以限制 schema中可以定义元素内容类型 1. 简单类型 2. 自定义类型,复杂类型,子元素组合 简单类型,基本类型加限制 simpleType:简单类型定义 restriction:基本类型引用 enumeration:使用枚举类型,从给定值中选择且必选其一。 minInclusive:简单类型加最小值约束,且包含设定的最小值 maxExclusive:简单类型加最大值约束,且包含设定的最大值 以下是其使用的事例 . 简单类型加限制 只能使用非负整数3到7包含3和7。 . 复杂类型定义 复杂类型定义事例: 整体schema文档事例 演示simpleType用法,即自定义类型 学生(id = "1000") 姓名 年龄(必须是int,并且只能取一定范围的值) 父亲(父母二者选一) 母亲 专业(枚举类型) 知识点: simpleType restriction enumeration minInclusive maxExclusive 针对以上schema文件的有效的XML文件事例 shang zhang 30 lishi computer XML文档的解析 SAX :事件机制驱动。在遇到相应的节点时,会发出一个事件,当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。 SAX的优缺点:   优点: 不用事先调入整个文档,占用资源少; SAX解析器代码比DOM解析器代码小,适于Applet,下载   缺点: 不是持久的;事件过后,若没保存数据,那么数据就丢了,比较消耗时间; 只能顺序处理,不能选择读取。不支持文档的创建和修改。 无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;   使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少 SAX处理流程 UNIX color 分析这个代码片断的 SAX 处理器一般情况下将产生以下事件: startDocument() startElement (samples) characters (white space) startElement (server) characters (UNIX) endElement (server) characters (white space) startElement (monitor) characters (color) endElement (monitor) characters (white space) endElement (samples) SAX API 允许开发人员捕捉这些事件并对它们作出反应。 SAX 处理涉及以下步骤: 创建一个事件处理程序。 创建 SAX 解析器。 向解析器分配事件处理程序。 解析文档,同时向事件处理程序发送每个事件。 要实现SAX解析XML文档的方法, XMLReader和XMLReaderFactory XMLReader read=XMLReaderFactory.createXMLReader();生成XMLReader对象, 使用XMLReader对象的方法parse(File f,ContentHandler handler),ContentHandler是一个定义好事件处理方法的接口, DTDHandler ,EntityResolver ,ErrorHandler这三个接口和 ContentHandler接口相同,但是其中定义的是其他事件处理方法,一般只是实现ContentHandler接口。 使用SAX解析XML文档,需要先有SAXParserFactory对象,他的对象是通过自身的静态方法newInstance(),然后再通过SAXParserFactory对象来创建SAXParser对象,使用SAXParser对象的 parse(File f,DefaultHandler handler),DefaultHandler是用来处理解析时发出的事件的类,就可以进行解析。DefaultHandler实现了ContentHandler,DTDHandler ,EntityResolver ,ErrorHandler,四个接口,但是只给出了空实现,便于使用者覆盖相应的方法。 SAX解析的其他方法请参阅JAVA API文档。(javax.xml.parsers ,org.xml.sax ,org.xml.sax.helpers) DOM (文档对象模型)Document Object Modle 为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。   优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;   缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;   使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU) DOM解析是将整个的XML文档元素结构读入内存,由根元素向下形成子元素分级树状关系。 DOM的解析 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(name); 以上三行代码,使用来生成Document对象的,Document对象就代表了读入内存后结构化的XML文档。 使用Document对象的getDocumentElement()方法获得子节点,可以通过不断的迭代便利所有节点,这些节点就代表了元素,从根元素开始一直到最内层的子元素。 getElementsByTagName(String tagname) 这个方法可以通过元素的名来或得该元素内层元素,也就是或得了这个节点的所有子节点(NodeList)NodeList的方法getLength()(列表中的节点数),通过循环使用 Node item(int index) (返回集合中的第 index 个项)方法,来获得每个子节点。 DOM解析的其他方法请参阅JAVA API文档。(org.w3c.dom) 选择 DOM 还是选择 SAX,这取决于下面几个因素: 应用程序的目的: 数据容量: 数据多少部分会被使用 对速度的需要: DOM4j,JDOM 开源的XML文档解析器,实现DOM,SAX接口,保留了DOM和SAX的基本语法,对解析性能进行了优化。 JDOM 需要jdom.jar和 JDOM的背后使用的是使用SAX对文件进行扫描的。 SAXBuilder builder=new SAXBuilder();//创建解析器 使用SAX扫描之后的结果保存成DOM结构的树。JDOM对解析过程作了简化。 JDOM中的方法便的更加易用。例如:getRootElement(),getChildren("...")方法的返回值是java.util.List类型,getText()方法直接可以返回元素中的内容,他的返回值类型是String类型。 JDOM也可以对XML文档进行写操作。 XMLOutputter类的对象可以向文件中写信息,setEncoding("")设置内码,setNewLine(true),设置换行。output(Document docFileWriter write)方法可以向文件中写入。

2008-09-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除