- 博客(69)
- 资源 (7)
- 收藏
- 关注
原创 Spring Transaction Propagation 原理 [II]
文章目录事务的传播(transaction propagation)场景1——内层事务B失败回滚,外层事务A也一起回滚场景2——内层事务B失败回滚,外层事务A不回滚正常提交场景3——内层事务B提交后,外层事务A异常回滚,要求事务B也一起回滚方案1——放到一个事务内方案2——内嵌事务保存savePointSpring事务的传播的抽象(transaction propagation abstraction)开启事务TransactionStatus简单情况:当前不存在事务事务的传播(transaction p
2022-04-21 08:25:16
499
1
原创 Spring Transaction 原理 [I]
从场景出发,Spring Transaction为什么这么设计,它要解决什么问题,是如何解决的。
2022-04-13 22:14:01
528
翻译 Google Kickstart 2022 Interesting Integers Solution
If we have a function CountInterestingIntegers(N) to get the number of interesting integers between 1 and N, then the number of interesting integers between two positive integers A and B inclusively can be computed by CountInterestingIntegers(B)−CountInter
2022-04-11 19:30:43
335
原创 《How tomcat works》读书笔记_Application
类似第八章的应用,这里也是使用默认连接器,使用Context为其主容器并关联一个Wrapper容器。唯一的区别是在Context类会持有一个StandardManager实例来管理Session对象。我们使用第三个Sevlet SessionServlet来测试这个应用,这个servlet由名这wrapper1的Wrapper容器来表示。
2016-03-11 14:51:07
269
原创 《How tomcat works》读书笔记_Session Stores
StoresStors由org.apache.catalina.Store接口表示,它是一个为Manager所管理的Session提供持久化储存的组件。package org.apache.catalina; import java.beans.PropertyChangeListener; import java.io.IOException; public interface
2016-03-08 15:44:01
220
原创 《How tomcat works》读书笔记_Session Management
Session在servlet中Session对象是由javax.servlet.http.HttpSession接口来表示的。这个接口的实现类为org.apache.catalina.session包中的StandardSession类。然而出于安全考虑管理器并不会将StandardSession实例直接传递给servlet,它会传递一个门面类StandardSessionFacade。
2016-03-03 16:29:58
244
原创 《How tomcat works》读书笔记_加载器_Application
应用程序下面将讨论如何使用一个与Context关联的WebappLoader。Context容器的标准实现是org.apache.catalina.core.StandardContext,程序中将使用StandardContext类作为Context容器。StandardContext类将在后面章节讨论,现在不需要知道太多关于这个类的细节。你只需要知道StandardContext与一个监听器协同
2016-01-20 16:39:17
227
原创 《How tomcat works》读书笔记_加载器
在前面的章节中我们已经看到了一个简单加载器的实现,一个用来加载servlet的简单加载器。本章将讨论的一个在Catalina中的标准网络应用加载器。一个servlet容器需要定制一个加载器,之所以不使用系统的类加载器,是因为在它上面运行的servlet是不受信任的。就像前面的章节那样,我们使用系统的类加载器来加载servlet和servlet使用到的类,那么,这个servlet就可以获取到所有在虚
2016-01-20 14:18:32
263
原创 《How tomcat works》读书笔记_Logger
本章将讨论Logger,一个用来记录信息的组件。Logger一般与一个容器关联,是一个相对比较简单的组件。你可以在org.apache.catalina.logger包中找到很多Tomcat提供的很多种不同的Logger。Logger接口所有Logger必须实现org.apache.catalina.Logger接口。package org.apache.catalina;imp
2016-01-19 09:49:10
202
原创 《How tomcat works》读书笔记_生命周期_应用
应用程序这章的程序是依据上一章建立的,在其中加入了生命周期的支持。下面是这个程序的类图。 SimpleContext本章中的SimpleContext类与上一章中的相似,除了实现Lifecycle接口以外。在这个类中除了声明一个LifecycleSupport类的变量以外,它还声明了一个started的布尔值变量,用来记录Context容器是否已经被启动。SimpleContext类提供了来自Li
2016-01-15 15:25:45
177
原创 《How tomcat works》读书笔记_生命周期
Catalina由很多组件组成,当Catalina启动时,所有组件都需要启用;当Catalina停止时,所有组件也需要停止并在停止之前完成清理工作。比如,当我们停止一个容器时,必须调用所有已加载的servlet的destroy方法,同时会话管理器也需要将session对象存储到辅助存储器中。通过org.apache.catalina.Lifecycle接口可以实现一个启动和停止组件的一致性机制。
2016-01-15 13:10:24
194
原创 《How tomcat works》读书笔记_容器(3)
Context应用在前面的程序中,我们了解了如何仅仅使用wrapper来部署一个简单的Web应用。在前面的程序中只有一个servlet,但是有些Web应用需要的可能不止是一个servlet,大多数的Web应用需要更多的servlet。在这样的应用中,你需要的是另外一种容器而不再是wrapper容器,这种容器就是Context。这个应用将论述如何使用Context来包容两个Wrapper,每个Wrap
2016-01-13 14:45:06
211
原创 《How tomcat works》读书笔记_容器(2)
Wrapper应用这个应用创建了一个最小的容器模型。 类图如上。SimpleLoader在容器Container中加载一个servlet类的任务由Loader的实现类来完成。这里的实现类为SimpleLoader,这个类知道servlet类的class文件的位置,getClassLoader方法返回一个java.lang.ClassLoader类的实例。SimpleLoader类定义了三个变量
2016-01-13 12:24:31
222
原创 《How tomcat works》读书笔记_容器(1)
容器模型主要用于为一个servlet处理request对象,并且为Web客户端返回response对象。容器模型由一个org.apache.catalina.Container接口来表示,一般有四种类型的容器:Engine,Host,Context和Wrapper。这一章节主要讨论Context和Wrapper这两种容器,其它的留在后面的章节讨论。这章首先讨论Container接口,以及在容器中使
2016-01-12 17:03:00
237
原创 《How tomcat works》读书笔记_tomcat默认连接器(2)
创建Request对象 在tomcat默认连接器中request对象是用org.apache.catalina.Request接口来表示的。这个接口由RequestBase类实现,并且它同时也是HttpRequest.接口的父接口。最终的实现类是HttpRequestImpl,它实现了HttpRequest接口。这里还有两个门面类:RequestFacade和HttpRequestFacade。上
2016-01-07 15:47:40
214
原创 《How tomcat works》读书笔记_tomcat默认连接器(1)
以上是默认连接器类UML图。 Connector和Container是一对一的关系,从箭头的方向可以看出Connector是知道Container的,但反过来就不成立了。别外需要注意的是和上一章不同,HttpConnector和HttpProcessor是一对多的关系。HttpConnector类它实现了三个接口:org.apache.catalina.Connector,适配Catalina
2016-01-06 17:34:22
249
原创 《How tomcat works》读书笔记_连接器(3)_Respones
创建HttpResponse对象 HttpResponse类实现了javax.servlet.http.HttpServletResponse。跟随它的是一个叫做HttpResponseFacade的façade类。在前面的例子中创建HttpResponse类中,getWriter方法返回了一个java.io.PrintWriter对象,但是当调用print方法后,这个对象并不会清空缓存,导致部分
2016-01-05 15:45:15
251
原创 《How tomcat works》读书笔记_连接器(2)_Request
创建HttpRequest对象 HttpRequest类实现了javax.servlet.http.HttpServletRequest。跟随它的是一个叫做 HttpRequestFacade的facade类。解析HTTP请求是一个相当复杂的事情,主要有以下几个部分:读取套接字的输入流解析请求行解析头部解析cookies获取参数列表内容列表内容1,读取套接字的输入流byte[] b
2016-01-05 14:41:29
268
原创 《How tomcat works》读书笔记_一个简单的Servlet容器
这个Servlet容器可以处理简单的servlet和静态资源,通过url请求来判断客户端请求的是什么资源。
2015-12-31 14:13:55
293
原创 A child container failed during start:org.apache.catalina.LifecycleException
最近在使用Spring时报出了下面的错误,网上查的资料都是说web.xml中的servlet-mapping配置的问题,这种说法也不尽然,我遇到的情况就不是这样。最后的解决办法是导入commons-logging-1.1.3.jar包就可以了严重: A child container failed during startjava.util.concurrent.ExecutionExceptio
2015-12-22 23:26:20
2365
原创 《How tomcat works》读书笔记_一个简单的Web服务器
这个应用程序的入口点(静态main方法)可以在HttpServer类里边找到。main方法创建了一个HttpServer的实例并调用了它的await方法。await方法,顾名思义就是在一个指定的端口上等待HTTP请求,处理它们并发送响应返回客户端。它一直等待直至接收到shutdown命令。 应用程序不能做什么,除了发送静态资源,例如放在一个特定目录的HTML文件和图像文件。它也在控制台上显示传入的HTTP请求的字节流
2015-12-17 13:01:13
240
原创 算法导论 11.3-5
定义一个从有限集合U到有限集合B上的散列函数簇为ε全域的,对U中所有的不同元素对k和l,都有:其中概率是相对于从函数簇Η中随机抽取的散列函数h而言的。证明:一个ε全域的散列函数簇必须满足:Solution:设b = |B|,u = |U|。如果一个哈希函数能够将U中的u/b个元素映射到B中b个槽中的每一个槽中,那么我们得到的总的碰撞数是最小的。对于给定的一个哈
2015-08-07 16:39:55
997
原创 算法导论 11.3.3
首先,不难发现给定一个字符串通过交换其中一些字符的位置可以产生多种不同的排列。就像是堆排序或是快速排序的主要工作看起来就是交换一对对的字符,所以会产生输入数组的多种排列。因此,这足以说明如果字符串x可以通过交换字符串y中的一对字符产生的话,那么x和y会哈希到同一个值。 设字符串x中的第i个字符为xi,字符串y也同理。字符串x在基数2的p次方的解释下为 所以,
2015-08-07 11:05:25
400
原创 算法导论第三版 11.3.3例题解析
Solution:首先,不难发现给定一个字符串通过交换其中一些字符的位置可以产生多种不同的排列。就像是堆排序或是快速排序的主要工作看起来就是交换一对对的字符,所以会产生输入数组的多种排列。因此,这足以说明如果字符串x可以通过交换字符串y中的一对字符产生的话,那么x和y会哈希到同一个值。设字符串x中的第i个字符为xi,字符串y也同理。字符串x在基数2的p次方的解释下为首先,不难发现给定一个字符串通
2015-08-07 10:51:28
267
转载 CachedRowSetImpl 引用报错 Access restriction
调用CachedRowSetImpl类时,出现以下错误:Access restriction: The type CachedRowSetImpl is not accessible due to restriction on required library C:\glassfish3\jdk7\jre\lib\rt.jar问题原因:1.没有rt.jar包,不过这种情况出
2015-05-05 18:16:49
1015
转载 引用CachedRowSetImpl报错 Access restriction
调用CachedRowSetImpl类时,出现以下错误:Access restriction: The type CachedRowSetImpl is not accessible due to restriction on required library C:\glassfish3\jdk7\jre\lib\rt.jar问题原因:1.没有rt.jar包,不过这种情况出
2015-05-05 17:03:07
257
原创 最大子数组问题
求子数组的最大和题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。
2014-10-16 19:27:01
449
转载 Java对象初始化详解
文章来源:http://mysun.iteye.com/blog/1596959在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本文在最后也会对类的初始化进行介绍,相对于对象初始化来说,类的初始化要相对简单一些)。 1.Java对象何
2013-05-22 10:08:58
537
原创 抽象接口——abstract interface???
关于Abstract Interface与Interface之间的区别,从网查了很多的资料,大部分都是讲这两个之间没有任何的区别。因为,Interface本身就是abstract的的。以下是Java权威书籍中关于这个问题的论述:《Java in nutshell》——"All methods of an interface are implicitly abstract, even i
2013-05-20 19:37:16
1797
原创 wait()与notify()获取对象监视器(锁)的三种方式
在某个线程方法中对wait()和notify()的调用必须指定一个Object对象,而且该线程必须拥有该Object对象的monitor。而获取对象monitor最简单的办法就是,在对象上使用synchronized关键字。当调用wait()方法以后,该线程会释放掉对象锁,并进入sleep状态。而在其它线程调用notify()方法时,必须使用同一个Object对象,notify()方法调用成功后,
2013-05-20 13:58:45
4141
原创 Java线程同步中关键字synchronized详述
synchronized关键可以修饰函数、函数内语句。无论它加上方法还是对象上,它取得的锁都是对象,而不是把一段代码或是函数当作锁。1,当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一段时间只能有一个线程得到执行,而另一个线程只有等当前线程执行完以后才能执行这块代码。2,当一个线程访问object中的一个synchronize
2013-05-17 19:45:10
12636
1
原创 Java中抽象类与接口区别详述
abstract class和interface是Java中对抽象进行定义的两种机制,这两种机制在对抽象定义的支持方面有很大的相似性,有时甚至可以相互替换。因此,对于到底使用哪种机制进行问题的抽象时,很容易产生困惑。1.Java语言中的抽象在面向对象的概念中,所有的对象都是通过类来进行描述的,如果一个类中没有足够的信息来描述一个具体的对象,这样的类就是抽象类(注:这里的抽象类并不是
2013-05-16 14:24:04
708
原创 Java常用修饰符总结
public:可以被任何类访问。final:使用些修饰符的类不可以被继承。abstract:如果要使用abstract类,需要建立一个继承自它的新类,来实现其中的抽象方法。变量:1,Java中没有全局变量,只有方法变量、实例变量(类中非静态变量)、类变量(类中静态变量);2,方法中的变量不可以有访问修饰符,所以访问修饰符只是针对类中定义的变量;3,声明实例变量时,如果没
2013-05-16 10:20:15
2092
原创 java.lang.System.getProperty(String key)
java.lang.System.getProperty(String key)用于获取系统的相关属性。System是java.lang包中的一个类,这个类中存在大量和系统打交道的实用方法,而且一般都是类方法,getProperty()就是其中一个比较常用的方法,用于返回系统参数文件中这个方法指定键所代表的值。以上代码中给出了getProperty()方法的一个应用实例。pac
2013-05-16 10:03:57
294
转载 servlet中传参方法总结
方法一1开始说第一个问题,路径问题 .主要是form表单对应的action里面的路径和web.xml里面的url-pattern里面的路径下面说明几点(1)web.xml里面的url-pattern里面的servlet映射,/ServletTest这里第一个"/"表示的是工程目录.tomcat规定这里必须是"/"开头的.换句话说,这个"/"表示http://
2012-12-15 14:37:37
435
转载 SQL Server 2005 Express 远程访问设置方法
SQL Server 2005 Express 作为微软数据库的低端解决方案,在开发小型应用和WEB应用中有广泛的使用。但是SQL Server 2005 Exrpress在默认安装下只允许本机访问,如何启用网络访问功能就很有必要,现在我简单的介绍一下。1、 确认成功安装SQL Server 2005 Express和 数据库服务已经启动。安装完成后,可以通过随SQL Server 200
2012-12-08 15:19:52
366
原创 Java Map遍历的三种方式
最近经常碰到Map遍历的问题,在网上查找资料后,记录下,权当备忘~~~~~~这里给出了三种遍历的方式,注释中已说明各自方式的优点。package edu.hrbeu.cloud.testIterMap;import java.util.Collection;import java.util.Iterator;import java.util.Map;import java.uti
2012-12-07 11:59:11
679
原创 ExtJs4.0学习笔记(1)——Ext.Loader is not enabled
出现该错误的原因是Ext的自动加载功能没有被开启,常见的修改方式是通过手动添加代码来实现。比如在程序适当的位置加入以下代码段:Ext.Loader.setConfig({enabled:true});但是这个并没有解决我遇到的问题,我的问题主要是出在引用包的顺序上,在这一点具体是什么原因我也不是很清楚,希望有遇到同样问题的高手帮我解答下。以下是我问题的解决方法:在这里我
2012-11-26 16:00:33
3244
《java网络编程》第三版 随书源码
2015-12-16
Delphi获取Form数据
2012-08-09
Delphi 实例 磁盘信息查询
2012-07-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人