zoukankan      html  css  js  c++  java
  • JavaEE:Eclipse开发工具的相关使用和XML技术

    Eclipse开发工具的知识点
    1.工程的属性(properties)
    1)Text file encoding  工程编码(在导入其他工程时,注意编码类型一致)
    2)Java build path设置classpath位置,指定当前工程引入类库
    source中指定.java文件和.class文件存放位置(Default output folder是存放.class的)
    Libraries指定当前工程引用类库
    3)Java Compiler指定.java采用哪个版本编译.class文件(指定编译器版本)
     当jre版本低于编译器版本:会抛出Bad version number in .class file的异常
    4)快捷键
    alt+/    Content Assist模板键   用于将代码快速补全
    ctrl+1   Quick Fix快速修复    用于提供代码修改建议
    模板配置方式:window->preferences->java->editor->templates
    *使用alt+/等快捷键无反应时,应修改快捷键设置
    修改方式window->preferences->general->keys
    *设置代码保存时进行格式化 window->preferences->java->editor->save actions

    程序的调试和运行
    1)程序调试思路
    1、当代吗出错了——查看错误信息——找到错误发生位置
    *技巧:从上到下找第一行你写的程序
    2、根据经验猜测错误原因
    例如以下程序,当使用System.out.println((char)b);打印的时候会出现乱码,我们可以根据以往的经验,判断是用System.out.write(b);打印

    package cn.it.lsl;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    public class HelloWorld {
        public static void main(String[] args) throws IOException {
            InputStream fi = new FileInputStream("info.txt");
            int b;
            while((b = fi.read()) != -1){
                //System.out.println((char)b);
                System.out.write(b);
            }
        }
    }

    3.通过System.out或者日志技术打印关键数据信息到控制台
    eg:以下程序将发生错误,我们可以将关键数据输出到控制台,以便判断错误

    package cn.it.lsl;
    public class HelloWorld {
        public static void main(String[] args) {
            String data = "abc";
            int d = convert(data);
        }
        
        public static int convert(String data){
            //通过System.out将关键数据输出到控制台
            System.out.println("data:" + data);
            return Integer.parseInt(data);
        }
    }

    4.通过Eclipse自带断电调试功能,查看关键位置数据——断点调试 Break Point——程序通过Debug as运行
    查看某变量的数值,右键——watch
    F5和F7一般一起使用,查看具体代码实现
    F6单独使用直接跳到代码下一行
    F3查看类代码
    F4查看类继承关系
    open call Hierarchy查看调用关系

    单体测试
    1.关于代码测试有白盒测试和黑盒测试两种
    白盒测试测试代码结构和逻辑(可见代码测试),黑盒测试测试代码功能和性能(不可见代码测试)
    *白盒测试局限性1、白盒测试不可能测试所有代码;2、白盒测试难度比较高
    单体测试是一种白盒测试,测试代码功能模块 —— 测试代码单个功能
    2.junit是java的单体测试技术
    1)编写junit在工程引用junit类库
    Properties-->Java Build Path-->Libraries-->Add Library-->JUnit
    2)编写单体测试用例
    *创建public void无参数的方法、在方法前添加@Test注解
    eg:

    package cn.lsl.test;
    import org.junit.Test;
    public class JunitTest {
        @Test
        public void test1(){
            System.out.println("HelloWorld");
        }
        
        @Test
        public void test2(){
            int sum=0;
            for(int i=1; i<=100; i++){
                sum += i;
            }
            System.out.println(sum);
        }
    }

    3)每个测试方法相当于以前编写main函数,每个测试方法可以单独执行
    3.在使用junit进行测试当方法非常多,每个方法输出内容到控制台,人们无法通过人工进行检查
    *自动化结果检查 --- 断言 Assert
    断言原理:调用方法,调用方法前,准备测试数据,测试数据运行结果 ------ 比较实际结果与预期结果是否相同
    *编写单体测试时,不要仅测试正确的数据和结果,测试不正确数据(非法数据)
    4.一些@XXX的含义
    @Test:测试方法
    @Ignore:被忽略的测试方法
    @Before:在每个测试方法执行之前都要执行一次
    @After:在每个测试方法执行之后要执行一次
    @BeforeClass:所有测试开始之前运行  static
    @AfterClass:所有测试结束之后运行 static

    package cn.lsl.test;
    
    public class Calculator {
        public int add(int a, int b){
            return a+b;
        }
        public int sub(int a, int b){
            return a-b;
        }
        public int mul(int a, int b){
            return a*b;
        }
        public int div(int a, int b){
            if(b == 0){
                throw new RuntimeException("除数不能为0");
            }
            return a/b;
        }
    }
    package cn.lsl.test;
    import junit.framework.Assert;
    import org.junit.After;
    import org.junit.AfterClass;
    import org.junit.Before;
    import org.junit.BeforeClass;
    import org.junit.Ignore;
    import org.junit.Test;
    
    public class CalcuatorTest {
        @Before
        public void before(){
            System.out.println("before.....");
        }
        @After
        public void after(){
            System.out.println("after.....");
        }
        @BeforeClass
        public static void beforeClass(){
            System.out.println("before class...");
        }
        @AfterClass
        public static void afterClass(){
            System.out.println("after class...");
        }
        @Test
        public void testAdd(){
            System.out.println("testAdd....");
            int a = 10;
            int b = 20;
            int expect = 30;
            Calculator calculator = new Calculator();
            int result = calculator.add(a, b);
            //比较实际结果和预期结果的值
            Assert.assertEquals(expect, result);
        }
        
        @Test
        public void testSub(){
            int a = 10;
            int b = 20;
            Calculator calculator = new Calculator();
            int result = calculator.sub(a, b);
        }
        
        @Test
        public void testMul(){
            int a = 10;
            int b = 20;
            Calculator calculator = new Calculator();
            int result = calculator.mul(a, b);
        }
        
        
        @Test
        @Ignore
        public void testDiv(){
            System.out.println("testDiv....");
            int a = 10;
            int b = 20;
            Calculator calculator = new Calculator();
            int result = calculator.div(a, b);
        }
    }

    XML语言
    1.XML技术:与数据相关技术,在企业中xml技术常用来存储数据和传输数据,且XML与任何编程语言无关,可用于php、java、.net等任何编程语言
    *通过标签来标记数据
    2.什么是标记语言?
    例如<xxx>aaa</xxx>,典型标记语言HTML ---- 用标记修饰文本信息
    3.XML是可扩展标记语言,XML标签没有被预定义 (XML标记随意定义 --- 可扩展)
    在HTML中预定义了很多标记,每个标记都有相应显示效果,xml所有标记没有被预定义
    在xml中<name>HLG</name> --- 想确定name标记含义,需要对xml添加约束
    4.XML典型存储和传输应用:
    1)XML充当数据库,保存数据信息
    2)在AJAX传输数据、WebService 网络中传输数据时,格式采用xml
    5.XML语法
    1)文档声明
    任何xml必须具备文档声明 <?xml version="1.0" ?>
    没有指定xml编码集 --- 默认采用ISO-8859-1编码 (不支持中文数据)
    *当xml指定encoding="utf-8"是浏览器查看编码集 --- 浏览器查看编码集必须和文件保存编码集一致
    *新建记事本程序采用默认编码集 --- 默认编码集gbk --- 使用utf-8编码
    例如以下程序若是采用记事本编写,应另存为utf-8
    eg:

    <?xml version="1.0" encoding="utf-8" ?>
    <book>
        <id>100</id>
        <name>java编程思想</name>
    </book>

    当声明standalone="yes"该xml是独立xml,不依赖外面其它文件,standalone="no"该xml依赖外部一些文件
    2)元素
    XML通过元素描述复杂关系模型数据
    xml语法规范
    (1)XML元素指XML文件中出现的标签,一个标签分为开始标签和结束标签,所有xml元素必须结束
    <abc></abc> ---- 在xml文件中如果标签中没有内容也应该用自结束<abc />
    格式良好的XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子孙标签。
    (2)标签不允许交叉嵌套
    (3)有且仅有一个根元素
    (4)xml文件中,空格和换行会被解析器进行解析的
    例如:下面两段内容的意义是不一样的
    第一段:

    <a>www.baidu.com</a>

    第二段

    <a>
       www.baidu.com
    </a>

    注意:由于在XML中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,使用换行和缩进等方式来让文件中的内容清晰可读的“良好”书写习惯可能要被迫改变。
    (5)严格区分大小写,元素和属性名称不能以数字开始
    3)属性
    属性的值必须用单引号或者双引号引起来
    eg:

    <input type="text">

    多学一招:在XML中,标签属性所代表的信息,也可以被改成用子元素的形式来描述,例如:

    <input>
        <type>text</type>
    </input>

    4)注释
    xml注释与html注释相同<!-- -->注释不能嵌套
    5)CDATA块
    CDATA区域内保留不被解析器解析的内容 --- 通常存放特殊代码,这些代码造成xml格式混乱
    eg:

    <?xml version="1.0" encoding="UTF-8"?>
    <exams>
        <exam>
            <subject>测试一下大家HTML学的怎么样</subject>
            <question>
            <![CDATA[
            以下哪个标记不能直接输入内容<input type="text" /> <input type="password" /> <input type="file" /> <input type="hidden" /> <a href="aaa">link</a>
            ]]>
            </question>
            <answer>hidden</answer>
        </exam>
        <exam>
            <subject>测试一下大家HTML学的怎么样</subject>
            <question>
            &lt;a&gt;标记有什么作用
            </question>
            <answer>链接</answer>
        </exam>
    </exams>

    6)处理指令
    通过PI指令控制xml显示样式(指令之前不能有注释)
    当xml使用pi指令引用CSS --- 效果等同于HTML,进行页面数据展示
    *通过xml进行显示数据,通过XSLT修饰xml数据显示(类似CSS)
    eg:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/css" href="1.css"?>
    <exams>
        <exam>
            <subject>测试一下大家HTML学的怎么样</subject>
            <question>
            <![CDATA[
            以下哪个标记不能直接输入内容<input type="text" /> <input type="password" /> <input type="file" /> <input type="hidden" /> <a href="aaa">link</a>
            ]]>
            </question>
            <answer>hidden</answer>
        </exam>
        <exam>
            <subject>测试一下大家HTML学的怎么样</subject>
            <question>
            &lt;a&gt;标记有什么作用
            </question>
            <answer>链接</answer>
        </exam>
    </exams>

    1.css

    @CHARSET "UTF-8";
    subject{
        font-size:30px;
    }
    
    answer{
        color:red;
    }

    DTD
    1.DTD快速入门
    1)编写数据xml --- books.xml
    2)编写dtd文件
    *为文档每一个元素(不同名称) 编写一个 <!ELEMENT
    语法格式:<!ELEMENT 元素名称 子元素>
    如果元素内部为文本,则应该写#PCDATA
    3)将xml文件与dtd文件关联起来
    eg:

    books.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE books SYSTEM "books.dtd">
    <books>
        <book>
            <name>Java编程</name>
            <price>50</price>
        </book>
    </books>
    books.dtd
    <?xml version="1.0" encoding="UTF-8"?>
    <!ELEMENT books (book)>
    <!ELEMENT book (name, price)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT price (#PCDATA)>

    2.DTD与XML三种关联方式
    1)内部DTD ---- 语法 <!DOCTYPE 根元素 []>
    eg:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE books[
        <!ELEMENT books (book)>
        <!ELEMENT book (name, price)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT price (#PCDATA)>
    ]>
    <books>
        <book>
            <name>Java编程</name>
            <price>50</price>
        </book>
    </books>

    2)外部DTD (引用本地DTD) ----  语法 <!DOCTYPE 根元素 SYSTEM "本地DTD文件位置">
    3)公共DTD (引用网络上DTD)  ----  语法 <!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件的URL">
    3.DTD的语法细节
    1)元素
    <!ELEMENT 元素名称 声明内容>
    (1)以下符号的含义
    +:一个到多个
    *:任意个(0到多个)
    ?:0或1个
    |:多选一
    eg:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE books[
        <!ELEMENT books (book+)>
        <!ELEMENT book (name, price?)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT price (#PCDATA)>
    ]>
    <books>
        <book>
            <name>Java编程</name>
        </book>
        <book>
            <name>Java编程</name>
            <price>50</price>
        </book>
    </books>

    (2)元素内容
    文类类型内容:#PCDATA
    EMPTY:子元素内容如果为空,使用EMPTY
    2)属性 (ATTLIST)定义
    语法:<!ATTLIST 元素名称 属性列表>
    属性列表:
    属性名称 类型 约束
    属性类型
    (1)CDATA 文本类型属性
    (2)(值1|值2|值3)三个选一个
    (3)ID表示属性值唯一
    约束:
    (1)#REQUIERD 属性必须
    (2)#IMPLED 属性可选
    (3)fixed value 属性值固定
    (4)default 默认值
    3)实体
    对于xml数据内容重复,可以抽取实体
    语法:<!ENTITY 实体名称 "实体内容">
    引用方式:&实体名称;

    eg:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE books[
        <!ELEMENT books (book+)>
        <!ELEMENT book (name, price+,public)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT price EMPTY>
        <!--ID属性 不能以数字开始-->
        <!ATTLIST book
            bid ID #REQUIRED
            author (金庸|古龙) "古龙"
        >
        <!ELEMENT public (#PCDATA)>
        <!--将公共的重复内容 提取实体-->
        <!ENTITY cbs "出版社">
    ]>
    <books>
        <book bid="b100" author="金庸">
            <name>神雕侠侣</name>
            <price></price>
            <public>&cbs;</public>
        </book>
        <book bid="b200">
            <name>Java</name>
            <price></price>
            <public>&cbs;</public>
        </book>
    </books>

    Schema
    一些概念:
    XML Schema文件本身就是一个XML文件,但它的扩展名通常为.xsd
    和XML文档一样,一个XML Schema文档也必须有一个根节点,但这个根节点的名称为Schema
    1.Schema原理
    预先定义元素和属性--->Schema文档(模式、约束文档)--->XML实例(实例文档)
    步骤:
    1)引用W3C元素和属性的名称空间,为了使用W3C预定义元素和属性
    xmlns="http://www.w3.org/2001/XMLSchema"
    2)定义Schema元素
    想让xml实例使用schema中定义定义元素,为定义元素指定名称空间
    targetNamespace="http://www.lsl.com"
    3)在xml实例文件中引用自定义schema名称空间
    xmlns="http://www.lsl.com"
    4)声明xml文件是一个应用schema技术实例
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    5)指定schema文件位置
    xsi:schemaLocation="http://www.lsl.com books.xsd"
    名称空间:http://www.lsl.com
    schema文件位置:books.xsd

    2.Schema快速入门
    1、编写数据xml文件
    2、编写schema文件 .xsd
    1) 引入 W3C 名称空间 xmlns="http://www.w3.org/2001/XMLSchema"
    每一个元素 对应 <element>
    区分复杂元素和简单元素
    2) 为schema定义元素指定名称空间 URI (URI可以是任何路径)
    3、在xml实例数据文件中 ,引用自定义Schema

    eg:
    books.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <books xmlns="http://www.lsl.com"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.lsl.com books.xsd"
    >
        <book>
            <name>java</name>
            <price>100</price>
        </book>
    </books>

    books.xsd

    <?xml version="1.0" encoding="UTF-8"?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.lsl.com"
        elementFormDefault="qualified"
    >
    <element name="books">
        <complexType>
            <sequence>
                <element name="book" minOccurs="0" maxOccurs="unbounded">
                    <complexType>
                        <sequence>
                            <element name="name" type="string"></element>
                            <element name="price" type="double"></element>
                        </sequence>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
    </schema>

    elementFormDefault="unqualified"
    1.如果schema将elementFormDefault="unqualified",xml文档实例引用名称空间必须使用前缀 --- 前缀修饰根元素
    2.当前xml实例文档所有子元素必须不能用前缀

    名称空间的作用 --- 唯一标识schema当中定义元素

    引用两个schema文件
    company.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <company xmlns="http://www.example.org/company"
        xmlns:dept="http://www.example.org/department"
        xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.example.org/company company.xsd http://www.example.org/department department.xsd"
    >
        <employee age="20">
            <dept:name>人力资源部</dept:name>
            <name>小刘</name>
        </employee>
    </company>

    company.xsd

    <?xml version="1.0" encoding="UTF-8"?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.example.org/company" 
    elementFormDefault="qualified">
        <element name="company">
            <complexType>
                <sequence>
                    <element name="employee">
                        <complexType>
                            <sequence>
                                <any></any>
                                <element name="name"></element>
                            </sequence>
                            <attribute name="age" type="int"></attribute>
                        </complexType>
                    </element>
                </sequence>
            </complexType>
        </element>
    </schema>

    department.xsd

    <?xml version="1.0" encoding="UTF-8"?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.example.org/department"
    elementFormDefault="qualified">
        <element name="name" type="string"></element>
    </schema>
  • 相关阅读:
    c++ 虚继承与继承的差异 (转)
    主题:PageRank解释
    (转)开源爬虫larbin分析
    Django随笔
    原生爬虫小Demo
    SVN
    Python的正则表达式与JSON
    类库 方法 模块等
    笔记
    自动补全Typeahead
  • 原文地址:https://www.cnblogs.com/EvanLiu/p/3303037.html
Copyright © 2011-2022 走看看