cookiee session区别
1 客户端服务端
2 session浏览器关闭时无效,cookiee有效期可以设置
db脏读,在spring中托管事务可以配置/代码 SQL标准定义了4类隔离级别
1 脏读,一个事务独到了另外一个事务未commit的但已经保存的数据
2 Read Commited,一个事务只能读取到所有已经commit的数据 MVCC MySQL InnoDB的可重复读并不保证避免幻读,需要应用使用加锁读来保证。而这个加锁度使用到的机制就是next-key locks。
SELECT * FROM child WHERE id < 100 FOR UPDATE;可以锁住100以内的数据,让其他事务排队等候
3 Repeatable Read(可重复读),select始终返回事务开始时候的数据,适合并发读取,但是可能产生幻读,当更新的时候,发现和查到的数据时不一致的
4 Serializable强制事务排序,使之不可能相互冲突会有效率问题
异常分类
1 Throwable 类是 Java 语言中所有错误或异常的超类(这就是一切皆可抛的东西)。它有两个子类:Error和Exception。 Exception又分为两类:一种是CheckedException,一种是UncheckedException。
这两种Exception的区别主要是CheckedException需要用try...catch...显示的捕获,而UncheckedException不需要捕获。
2 Error类对象由Java虚拟机生成并抛出,Exception类对象由应用程序处理或抛出 error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
3 如果是运行时异常,我们可以不用方在 try catch 块中,因为我们根本就不知道该 如何去处理这个异常来保障程序的正常运行。如果是 检查异常,我们就要对这个异常进行处理,既然 是检查异常,
我们应该已经有了处理这个异常的方案,所以就要用 try catch 处理这个异常来保障 程序运行。
IO NIO
http://blog.csdn.net/showwair/article/details/7488523
http://furturestrategist.iteye.com/blog/1463369
NIO和I/O不同
IO基于流,NIO基于块,NIO最重要的两个组件缓冲Buffer和通道Channel,Channel是双向的,Stream是单向的,Channel的读写操作必须通过Buffer来进行
sendRedirect response.redirect 跳转
1 sendRedirect 客户端跳转,客户端发送两次请求,最终地址显示跳转地址
2 response.redirect 服务端跳转,客户端发送一次请求,最终显示地址为初始请求地址
RequestDispatcher reqDispatcher=request.getRequestDispacher("");
reqDispatcher.forward(request,response)
比较
“==”比较两个变量本身的值,即两个对象在内存中的首地址。
“equals()”比较字符串中所包含的内容是否相同。
struts 防止重复提交
1 原理,<s: token />产生一个GUID值的隐藏输入框,将GUID放到会话(session)中;在执行action之前,“token”拦截器将会话token与请求token比较,如果两者相同,
则将会话中的token删除并往下执行,否则向actionErrors加入错误信息 主要用到的是
<%@ tag-lib uri="/struts-tags" prefix="s" %>
<s:form action="tokenAction"> <s:textfield name=""/> <s:token /> <input type="submit" value="发送"/> </s:form>
2 struts2在防止表单重复提交的拦截中有2个,分别是:token,tokenSession。tokenSession继承token而来。 通常情况下,使用tokenSession客户端感觉会比较友好,
因为tokenSession如果重复提交,不会跳转到error.jsp页面
<action name="tokenAction" class=""> <interceptor-ref name="defaultStack" /> <interceptor-ref name="token" />
<result name="invalid.token">/WEB-INF/notfirstsubmit.jsp</result>
</action>
Map Set Collection区别
1 Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量
2 Collection包含List、Set,List以特定次序存储数据,Set数据不可重复;set只能通过itorator遍历元素,List可以使用get();
3 List包含ArrayList、LinkedList、Vector(包含栈),对于需要快速插入,删除元素,应该使用LinkedList
4 Map 包含HashMap、HashTable、TreeMap,HashMap最快,HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null
servlet是什么
将 Servlet 包装成 Context 容器中的 StandardWrapper,这里 StandardWrapper 是 Tomcat 容器中的一部分,它具有容器的特征,
而 Servlet 为了一个独立的 web 开发标准,不应该强耦合在 Tomcat 中。 StandardWrapper 并作为子容器添加到 Context 中,
其它的所有 web.xml 属性都被解析到 Context 中,所以说 Context 容器才是真正运行 Servlet 的 Servlet 容器。
如果 Servlet 的 load-on-startup 配置项大于 0,那么在 Context 容器启动的时候就会被实例化,前面提到在解析配置文件时会读取默认的 globalWebXml,
在 conf 下的 web.xml 文件中定义了一些默认的配置项,其定义了两个 Servlet,分别是:org.apache.catalina.servlets.DefaultServlet
和 org.apache.jasper.servlet.JspServlet 它们的 load-on-startup 分别是 1 和 3,也就是当 Tomcat 启动时这两个 Servlet 就会被启动。
创建 Servlet 实例的方法是从 Wrapper. loadServlet 开始的。loadServlet 方法要完成的就是获取 servletClass 然后把它交给 InstanceManager
去创建一个基于 servletClass.class 的对象。如果这个 Servlet 配置了 jsp-file,那么这个 servletClass 就是 conf/web.xml 中定义的
org.apache.jasper.servlet.JspServlet 了。
Servlet 的确已经能够帮我们完成所有的工作了,但是现在的 web 应用很少有直接将交互全部页面都用 servlet 来实现,而是采用更加高效的 MVC 框架来实现。
什么JSP呢?和Servlet的关系又是什么呢?JSP是Servlets技术的一个扩展。JSP可以做的任何事情,Servlet都可以完成。但是JSP允许你将Java代码轻松地和HTML语言混合在一起使用,并完成强大的功能。可以使你容易的阅读代码并在浏览器中浏览到程序执行的结果。
当第一次访问一个JSP文件时,它会被转换为Java servlet源码,接着被编译成Java字节码,work 存放jsp编译后产生的class文件
REST(Representational State Transfer)的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。
所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。
你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。
综合上面的解释,我们总结一下什么是RESTful架构:
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
最常见的一种设计错误,就是URI包含动词。
另一个设计误区,就是在URI中加入版本号: