java 语言按照对八种基本类型的支持的不同分为SE  、EE 、ME三大类。

java中类属性的初始化:

对于类属性,jvm会自动初始化,如果给了初始值,则初始化为该值,如果没给,则会初始化为属性所属的数据类型的默认值(int:0 \ float:0.0f ,引用及数组初始化为null:即不指向任何对象 ),static属性在类第一次加载(即在第一次使用该类的时候 )的时候 初始化,而实例属性则会在创建实例的时候初始化。

  java中final修饰的真正含义  

 在java中使用final修饰的变量有两种意思:引用本身不可变和引用所指向的对象不可变。

事实上,final只对引用的“值”(也即他指向的那个对象的内存地址)有效 ,他迫使引用只能指向初始指向的对象  ,改变他的指向,会编译报错,至于他指向的对象的变化,final是不负责的。

Java5新特性Instrumentation 

利用 Instrumentation 可以构建一个代理,用来监测运行在jvm上的程序。监测一般是通过在执行某个文件之前,对该类文件的字节码进行适当的修改。(如;计算函数的执行时间)   每一个代理类必须实现ClassFileTransformer接口 。

ApplicationContext与WebApplicationContext        

WebApplicationContext 继承自 ApplicationContext,ApplicationContext是BeanFactory的子接口其有spring自己实现的几个类:ClassPathXmlApplicationContext、FileSystemXmlApplicationContext 。

 WebApplicationContext的初始化(web.xml):ContextLoaderListener与ContextLoaderServlet。在ContextLoaderListener中用contextloader来初始化WebApplicationContext,即把  WebApplicationContext放在了ServletContext中的的键值为   WebApplication.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,若要用则需根据该键值取出,为此spring提供了WebApplicationContextUtils类。

为了方便,spring提供了ContextLoaderPlugIn,这是一个struts的plug,在struts启动时加载。    

Socket通信

当服务器进程运行时可能会同时监听到多个客户端的链接请求。例如每一个客户进程执行下面的代码:

Socket s =    new Socket(“wwwbaidu.com”,8888);

即意味着baidu的服务器的端口上监听到了一个客户的连接请求。管理客户连接请求的任务是有操作系统来完成的。操作系统先将这些连接请求存储在一个先进先出的队列中。许多操作系统限定了队列的最大长度,一般为50,当队列中的连接请求达到了最大值,服务器会拒绝新的连接请求,只有当服务器的进程通过servletSocket 的accept方法从队列中取出连接请求,是队列有空位置,服务器才会接受新请求。(ServerSocket的构造参数backlog用于指定最大的连接请求数)。

java虚拟机

 栈是程序运行的基本单位,而堆是数据存储的基本单位,程序永远是运行在栈中的,程序运行可以没有堆但不可以没有栈,而堆是为栈存储数据的。

在JS中使用jsp标签或者java代码:

1、如果是在jsp内嵌的js代码,那么jsp文件中能用什么标签,那js中也可以随便用,因为jsp会先在服务器端解释生成相应的js代码,然后丢给客户端执行。

2、若是在单独的js中,则不可以用。因为单独的js并不会被服务器解释,若要用需设法让服务器对js文件进行解释,有两个解决方案:

 1)、将js命名为jsp,文件里写js内容,然后用<script src="XXX.jsp">引入即可。

 2)、直接在js中使用jsp标签

  原理:应用服务器端默认不解释js中的标签,但可以让个别的js文件被解释。

(tomcat中解释jsp的为JspServlet。其名字叫jsp,只要在应用的web.xml中加上:

       <servlet-mapping>

           <servlet-name>jsp</servlet-name>

            <url-pattern>要解释的js文件的路径</url-pattern>

        </servlet-mapping>

JS访问java对象

<% String userName = request.getParameter("username") ;  %>

<script type="javascript">

   var userName = "<%= userName%>"  ;

</script>


JDK下的两个JRE 

 一般安装jdk后会出现连个jre。基于jdk的应用分为两种,一种是jdk自带,一种是用户开发的,这两者使用不同的jre,java目录下的jre运行一般的应用。

JSP编码 :pageEncoding contentType

  pageEncoding是jsp本身的编码, contentType是服务器发送给客户端时的内容的编码。

jsp一般要经过多次编码,第一阶段利用pagEncoding ,第二阶段用utf-8到utf-8,第三阶段就是由tomcat中出来的网页,用的是contentType。

第一阶段:将jsp编译成java文件,此时会根据pagEncoding 的值读取jsp

第二阶段:java到.class文件,此时不论jsp编写的时候 用的是什么编码,经过这一阶段的结果全部是UTF-8的java代码

第三阶段:该阶段是由tomcat载入和执行阶段二的java二进制,输出的结果,也就是客户端看到的网页,这时contentType就起作用了。

一般为了不出现乱码,用到下面的方法进行设置:

request.setCharacterEncoding("编码方式 "):对客户端的请求进行重新编码。

response.setCharacterEncoding("编码方式 ") :对服务器端的响应进行编码。 


UML中的关系:

包含:一般化关系、关联关系、聚合关系、组合关系、以来关系、其中聚合与组合属于关联关系。

1、一般关系:多指类之间的继承实现关系,是 “is  a”关系 。

2、关联关系(has a):使得一个类知道另一个的属性和方法,关联关系表现的是类之间的持久关系, 这种关系表示一种业务逻辑上的关系,一般需要保存到DB,例如,学生与班级。

 (——>)

3、依赖关系:表现为类之间的(use   a) 关系,一个类用到了另一个类 ,但类之间没有业务逻辑上的关系,依赖关系是对程序而言的,表现为局部变量、方法的参数或者对另一个类的方法的调用。(------------->)      


HTTP请求:

一个http请求包三个部分;

 a.方法统一资源标示符(uri)——协议版本

 b.请求的头部

c.请求内容  

e.g.
POST /exteroage/default.jsp  HTTP/1.1
         
Accept: text/plain ; text/html
         
Connection:keep-alive
         
Host:localhost
         
<!--此处为回车换行符("\n\r"),必须的-->
lastname= zhangw & firstname = dfedd

注意:URI通常是相对服务器的跟目录解释的,因此始终以“/”开始 。