今天又是休息,这样上两天课,接着休息一天,让同学们在上课之外有比较充足的时间来复习和思考,老师每天讲课的信息量很大,有的地方比较难,而且比较细的话,估计的一天都不够,上了四天课了,上了java基础加强, xml, HTTP协议课, 说实话,我不太适应老师讲课的方式的可能是跟自己平时看张老师和方老师的视频有关系的,感觉跟想象中授课不太一样,老师上课的时候将几乎每个知识点都是写在记事本上,但是这样一边写一边授课的话,笔记记得只是只言片语,不太太详细。而且老师讲的少快了,不太注重将原理了,还是想方老师那样画图,将原理图形的方式表示出来,让人一看就一目了然。不过我还是期望老师后面精彩的讲解。
老师边上课,在下面的时候,我会将我那时感觉有一点点模糊的东东记下来,怕下课之后忘记,如果是那样的话,不懂也就越来越多了。把那些自己不懂得记下来,提醒自己下课之后要解决什么问题,我觉得这是比较好的学习方法,这几天记了不少笔记,有的通过自己的思考能回答,有的不能回答,那就只能问老师了。
笔记:
1. 使用断言测试
Assert.assertEquals(expected, actual);
2. 数组顺序反转, 使用Collections.reverseOrder()
3. TreeSet 中构造方法中传递的一个比较器,为什么这个比较器是下限类型 ????
4. Math.random() 生成0-1的小数,包含0, 不包含1
5. 静态导入是导入类中的静态成员和静态方法
6. 在拆箱, 装箱方法调用时,原则:使用jdk5.0与jdk1.4的结果相同
1. 定义一个默认修饰符的构造方法, 使用反射生成一个对象
通过查看API知道,使用反射,若是调用getConstructor()方法不能生成一个对象,因为不是public的,
getConstructor()方法只能是针对public修饰的若是硬要生成一个对象,那么应该是使用getDeclaredConstructor()方法。
2. 使用反射得到构造方法,成员变量, 普通方法的名字
2.1 阅读Class, Method, Field API文档
3. 工厂 + 反射
4. 你给我聊一聊XML
5. 使用反射调用main方法
public class ReflectMainMethod {
public static void main(String[] args) throws Exception, NoSuchMethodException {
Class clazz = Student.class;
Method main = clazz.getMethod("main", String[].class);
main.invoke(null, new String[1]);
}
}
class Student {
public static void main(String[] args) {
System.out.println("main method...");
}
}
6. 使用XML转义和CDATA的区别 ???
7. 通过反射获得泛型的实际参数
8. 在类中, 成员方法和成员变量若不是public, 使用反射都不能访问,除了使用getDeclaredField(), 那么这样反射作用岂不是很有限?????
9. 练习三种dtd的引入方式
1.内部
2.外部
3.公共
10、复习Schema
11. 写一schema文件步骤:
1. 以schema为根元素,并为他声明一个名称空间,这个名称空间要使用官网上已经定义好了的
2. 为自己在schmea文件中定义的元素制定一个名称空间,使用targetNamespace指定
3. 定义schema中的元素,可以定义一个简单类型元素也可以定义一个复杂类型的元素
简单类型:<element name="zzz" type="string" />
复杂类型:<element name="xxx">
<complexType>
<sequence>
<element name="author" type="string"></element>
<element name="bookname" type="string"></element>
<element name="price" type="string"></element>
</sequence>
</complexType>
</element>
12. 在使用schmea约束文档时,schmea文件中的targetNamespace与要约束的xml文档中声明的命名空间要相同, 因为targetNamspace是自己定义的元素来自哪个命名空间
13. 在schmea文件中,使用前缀是什么意思?在schmea文档中声明一个命名空间为什么不指定他来自与那里? 难道是著名的命名空间,不需要指定。
14. 引用复合类型
"employee" 元素可以使用 type 属性,这个属性的作用是引用要使用的复合类型的名称:
<xs:element name="employee" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
如果您使用了上面所描述的方法,那么若干元素均可以使用相同的复合类型,比如这样:
<xs:element name="employee" type="personinfo"/>
<xs:element name="student" type="personinfo"/>
<xs:element name="member" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
15、编写schema文档时,将elementFormDefault设置为qualified, 若在xml文档中没有使用默认名称空间,则搜有的元素必须通过加上声明的名称空间为前缀访问元素;
将elementFormDefault设置为unqualified, 则不要加前缀访问元素
16、练习在xml文档中使用前缀
在xml文档中要使用前缀,那么他的Schema中的elementFormDefault就必须设置为qualified
18、xmlns:tns="http://www.example.org/demo3" 声明这个名称空间有什么作用????
在自动生成的scheme文件中有上面这句代码,这句代码没有别的意思,就是定义了一个命名空间,如果不高兴,可以将这句代码删除。。
19、DOM与SAX的优缺点
DOM的缺点:DOM不适合解析比较大的xml文件,因为在解析之前首先将整个xml文件装载到内存之中,以树状形式存储,占用的内存比较大,优点是:对xml文档增删改查速度比较快
SAX的优点:SAX合适解析比较大的xml文件,缺点:不适合对文件的增删改查
20、dom 和sax默认对DTD支持,不支持Schema
21、web通信详解 (很重要)
web系统通信是这样的:客户在浏览器地址栏中输入要访问的URL地址,这时操作系统会查找C:\WINDOW\system32\drivers\etc下的host文件,查看在host文件中是否注册了域名,在host文件中是ip与域名是映射关系,如果在host文件中没有查找到 要访问的域名,这是操作系统会将这个域名会发送到DNS服务器中,进行域名解析,解析完之后得到目标服务器的ip地址,然后与目标服务器简历连接,通过HTTP协议将要请求的数据发送给目标服务器,服务器接收到请求,然后做出相应的处理, 将相应结果发送给客户浏览器显示
22、服务器既可以指硬件,也可以指软件
23、所谓翻墙就是代理服务器
24、在批处理文件中,pause 表示暂停
25、DTD的数据类型 (PCDATA是元素的标签体的数据类型, CDATA是属性的数据的类型)
26、使用DOM4j练习对xml 的增删改查 ?????
在dom4jcurd时, 有些常用方法:elements()、 elements(Qname)、 fatherNode.elementText(childNodeStr)
27、<Host name="localhost" appBase="webapps"> appBase指这个localhost下的web应用的目录, 他这是指相对路径,他是相对谁的?
配置虚拟主机时,appBase的值是相对路径,也可以是绝对路径,相对路径是相对tomcat安装目录的,默认值webapps, 所以可以这样配置:
28、配置虚拟主机 <Host name="www.itcast.cn" appBase="E:\itcast" ></Host> 将www.itcast.cn映射在本地
1、配置虚拟主机时,appBase的值是相对路径,也可以是绝对路径,相对路径是相对tomcat安装目录的,默认值webapps, 所以可以这样配置:
<Host name="www.baidu.com" appBase="../itcast">
<Context path="/itcast" docBase="main" />
</Host>
配置完之后必须在window的host文件中,进行域名注册,127.0.0.1 www.baidu.com
完了你就可以输入:http://www.baidu.com:8080/itcast/index.html 访问
2、例如你想在浏览器中输入www.baidu.com网址,让他不要访问百度网站,而是访问本地文件
1、配置虚拟主机
<Host name="www.baidu.com" appBase="../baidu">
<Context path="" docBase="main" />
</Host>
2、在main文件夹中新建一个文件夹WEB-INF,再在里面新建一个web.xml, 在web.xml中配置欢迎页面
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
3、在tomcat的web.xml 中修改端口号,改为80
完成以上步骤,就可以是实现在浏览器输入www.baidu.com访问本地文件
29、在telnet启动本地回显快捷键:ctrl+]
30、 在使用BeanUtils copy javabean时, 如果javabean的属性类型不同,需要先注册一个Converter,
ConverterUtils.register(new Converter() {
public void convert(Class type, Object Value) {
}
}, Class TargetType);
比如想将一个字符串形式 ”日期“ 转换成Date类型的日期:
ConvertUtils.register(new Converter() {
public Object convert(Class type, Object value) {
String str = (String) value;
if (str == null || str.trim().equals("")) {
return null;
}
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
return df.parse(str);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}, Date.class);
BeanUtils.copyProperties(destObj, srcObj);