暑期学习过程中的几个要点(贴上来有空复习复习)

来源:互联网 发布:opencms访问数据库 编辑:程序博客网 时间:2024/06/05 02:09
1. eclipse 中clean 的作用是将工程中的.class 文件中删除掉,并重新编译。类似于rebuild。
2. 问题g is undefined
断点跑到:g.data[h.name], q, g, p, u, m);
解决:应该是数组,但是我写错了。这里是定义变量,传参的时候参数的类型传错了。
3. extjs中用viewport布局,方便的多。
4.每次部署完或者配置完服务器都要重启,如修改web.xml
5.必须在输出文档内容之前设置文档类型。
6.以下面这个 <!DOCTYPE> 标签为例:


<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


在上面的声明中,声明了文档的根元素是 html,它在公共标识符被定义为 "-//W3C//DTD XHTML 1.0 Strict//EN" 的 DTD 中进行了定义。浏览器将明白如何寻找匹配此公共标识符的 DTD。如果找不到,浏览器将使用公共标识符后面的 URL 作为寻找 DTD 的位置。
7.修改eclipse的编码方式:
1、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Workspace,右侧 Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。
2、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Content Types,右侧Context Types树,点开Text,选择Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8。其他java应用开发相关的文件如:properties、XML等已经由Eclipse缺省指定,分别为ISO8859-1,UTF-8,如开发中确需改变编码格式则可以在此指定。


8.有的时候会看到项目里面明明没有错,但就是会有一个红叉,在window->show view中调出Markers查看错误,发现有这个错误:
Project facet Java 1.6 is not supported by target runtime Apache Tomcat6.
解决方法:找到项目根目录下的.settings点进去找到org.eclipse.wst.common.project.facet.core.xml文件,将里面的<installed facet="java" version="1.6"/>修改为<installed facet="java" version="1.5"/>因为我原来是用1.6现在是使用1.5,但是在eclipse中配置之后,却没有将这个文件中的修改过来,所以会报错。
9.实现SingleThreadModel接口,可以防止对servlet的并发访问。但是也有不足之处。不赞成使用。
10.最好使用synchronized(this){...}来防止并发访问某一个代码段。
11.注意检查数据是否为null或者空字符串。
12.Ajax request对象的success事件表示request过程中没有发生错误,和自己的业务逻辑无关,如果访问不了该链接才会到failure事件的,你需要在success事件中再根据自己的逻辑如responseText == true等去判断业务是否正确。(success参数表示响应成功后的回调函数。failure参数表示响应失败后的回调函数。注意,这里的响应失败并不是指数据库操作之类的业务性失败,而是指HTTP返回404或500错误,请不要把HTTP响应错误与业务错误混淆在一起。)
13.java中函数传递参数的方式都是   『传值』,这是最根本的。  
      对于基本型变量如int、float等来说,传递的是变量的内容,函数中的产生一个新的变量来接收参数的值,它们两个是两个内容一样的   『不同变量』     ,所以在函数中改变不会影响到原来的变量。  
  对于参数是对象来说,传递的是对象引用的一个副本,也就是说,函数中产生了一个引用变量,这个引用变量的值和作为参数传过来的那个变量的值是一样的,这两个不同的变量指向内存中同一个地址,即同一个对象。那么此时就有两种情况,假设a为函数中的接收参数的变量:   
     1.当执行如a=其他对象,a=new等赋值操作时,实际上是将a指向新的位置,那么函数外的原值不改变。   
     2.如果在函数中执行的是对a的成员变量的操作,或者调用对象中修改成员变量的函数,那么就改变了原值。   
   public       class       Test{        
      public       static       void       main(String[]       args){        
      StringBuffer       a=new       StringBuffer("A");        
      StringBuffer       b=new       StringBuffer("B");        
      operate(a,b);        
      System.out.println(a+","+b);        
          }        
      public       static       void       operate(StringBuffer       x,       StringBuffer       y){        
          x.append(y);        
          y=x;        
      }        
      }              
  答案:AB,B  


y=x;     只是表示y和x都指向同一个对象,但是你并没有对y原先所指向的对象作改变,因此实参b所指向的对象也就没有改变,输出当然是B;这个和你在c/c++中传指针是一样的道理,你在函数中改变指针变量本身的值并不会改变指针指向对象的值。
14.用Eclipse建立了一个Web项目,想通过eclipse的JPA Tools为项目生成数据库实体Bean,但右键菜单里看不到JPA Tools选项。于是招到一个类似的项目(能够右键看到JPA Tools),查看其工程路径下.setting/org.eclipse.wst.common.project.facet.core.xml文件,发现<faceted-prject>标签内有这样一句“<installed facet="jpt.jpa" version="1.0"/>”于是copy这句到了新建项目的对应文件中。刷新一下项目,再右键后,于是就看到了希望见到的JPA Tools。
15.遇到过这样的错误:java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory。下载了log4j.jar和commons-logging.jar添加进去之后就不再出现这样的错误了。
16.使用request.getParameter()获取报头的时候要判断是否为null。
17.区分Netscape和Internet Explorer要检查MSIE而不是Mozilla因为两个浏览器都在报头的开始出列出了Mozilla,尽管Mozilla是类Godzilla的Netscape吉祥物,这个特征是为了与JavaScript。
18.报头可以造假,但是servlet无法区分这种情况。
19.HTTP请求由状态行,一个或者多个报头,一个空行以及实际的文档。
20.用debug模式,tomcat才能热加载。自动reload
21.setDataHeader(String header, long milliseconds);
  省去 将java日期(System.currendTimeMillis,Date.getTime或者Calendar.getTimeInMillis都返回该类型的日期)转换为GMD时间字符串的麻烦。
  setIntHeader(String header, int headerValue);
22.字节码文件是经过编译器预处理过的一种文件,是JAVA的执行文件存在形式,它本身是二进制文件,但是不可以被系统直接执行,而是需要虚拟机解释执行,由于被预处理过,所以比一般的解释代码要快,但是仍然会比系统直接执行的慢.
23.个WEB站点每天可能要接收到上百万的用户请求,为了提高系统的效率,HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。但是,这也造成了一些性能上的缺陷,例如,一个包含有许多图像的网页文件中并没有包含真正的图像数据内容,而只是指明了这些图像的URL地址,当WEB浏览器访问这个网页文件时,浏览器首先要发出针对该网页文件的请求,当浏览器解析WEB服务器返回的该网页文档中的HTML内容时,发现其中的<img>图像标签后,浏览器将根据<img>标签中的src属性所指定的URL地址再次向服务器发出下载图像数据的请求。


显然,访问一个包含有许多图像的网页文件的整个过程包含了多次请求和响应,每次请求和响应都需要建立一个单独的连接,每次连接只是传输一个文档和图像,上一次和下一次请求完全分离。即使图像文件都很小,但是客户端和服务器端每次建立和关闭连接却是一个相对比较费时的过程,并且会严重影响客户机和服务器的性能。当一个网页文件中包含 Applet,JavaScript文件,CSS文件等内容时,也会出现类似上述的情况。


为了克服HTTP 1.0的这个缺陷,HTTP 1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。基于HTTP 1.1协议的客户机与服务器的信息交换过程。


可见,HTTP 1.1在继承了HTTP 1.0优点的基础上,也克服了HTTP 1.0的性能问题。不仅如此,HTTP 1.1 还通过增加更多的请求头和响应头来改进和扩充HTTP 1.0 的功能。例如,由于 HTTP 1.0不支持Host请求头字段,WEB浏览器无法使用主机头名来明确表示要访问服务器上的哪个WEB站点,这样就无法使用WEB服务器在同一个IP地址和端口号上配置多个虚拟WEB站点。在HTTP 1.1中增加Host请求头字段后,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,这才实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。HTTP 1.1 的持续连接,也需要增加新的请求头来帮助实现,例如,Connection 请求头的值为Keep-Alive 时,客户端通知服务器返回本次请求结果后保持连接;Connection 请求头的值为close 时,客户端通知服务器返回本次请求结果后关闭连接。 HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。
24.内容类型(Content-Type),这个头部领域用于指定消息的类型。一般以下面的形式出现。
Content-Type: [type]/[subtype]; parameter
type有下面的形式。


    Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;
    Multipart:用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据;
    Application:用于传输应用程序数据或者二进制数据;
    Message:用于包装一个E-mail消息;
    Image:用于传输静态图片数据;
    Audio:用于传输音频或者音声数据;
    Video:用于传输动态影像数据,可以是与音频编辑在一起的视频数据格式。


subtype用于指定type的详细形式。content-type/subtype配对的集合和与此相关的参数,将随着时间而增长。为了确保这些值在一个有序而且公开的状态下开发,MIME使用Internet Assigned Numbers Authority (IANA)作为中心的注册机制来管理这些值。常用的subtype值如下所示:


    text/plain(纯文本)
    text/html(HTML文档)
    application/xhtml+xml(XHTML文档)
    image/gif(GIF图像)
    image/jpeg(JPEG图像)【PHP中为:image/pjpeg】
    image/png(PNG图像)【PHP中为:image/x-png】
    video/mpeg(MPEG动画)
    application/octet-stream(任意的二进制数据)
    application/pdf(PDF文档)
    application/msword(Microsoft Word文件)
    message/rfc822(RFC 822形式)
    multipart/alternative(HTML邮件的HTML形式和纯文本形式,相同内容使用不同形式表示)
    application/x-www-form-urlencoded(使用HTTP的POST方法提交的表单)
    multipart/form-data(同上,但主要用于表单提交时伴随文件上传的场合)
25.refresh头很有用。
26.发送二进制数据的时候要使用输出流。
27.final 终态的,不可再改变的
28. 微软系统各个版本的发布时间:
1990年5月22日 
微软发布Windows3.0 
1995年8月24日 
微软发布Windows95 
1998年6月25日 
微软发布Windows98 
1999年6月10日, 
Windows 98 SE发布 
2000年2月17日 
微软发布Windows2000 
2001年10月25日 
微软发布WindowsXP 
2003年5月22日 
微软发布Windows2003 
2002年9月25日 
Windows XP SP1 
2004年8月21日 
SP2中文版正式发布
29.响应报头必须在任何文档内容发送到客户端之前设置。
30.对于以斜杠开头的URL,服务器和浏览器的解释是不同的。服务器总是相对于当前Web应用对他们进行解释,浏览器总是相对于服务器的根目录对他们进行解释。
例如:<jsp:include page="/..." />这个是按照web应用的对应子目录中查找,而<img src="/..."/>这个是浏览器对它进行解释,所以是按照服务器的根目录来的。
31.要防止包含页被客户单独访问,可以将包含的页面放在WEB-INF目录或者子目录中。
32.在配置tomcat启动参数的时候,eclipse中启动的时候并不会理会tomcat中catalina.bat的配置,可以在Debug Configurations中找到这个server,并修改Arguments,在VM arguments中增加
原创粉丝点击