`
cyril0513
  • 浏览: 15749 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
关于数据库的事务的特性(ACID): 1:atomicity(原子性):多个操作为一个单元不可分割,要么都成功要么都失败. 2:consitency(一致性):事务结束后,系统的状态是一致的。(一致性处理数据库中所有约束保护) 例如:如果2个表有主外键约束,如果我要删除主表的数据,那么从表的数据也应该被删除. 3:isolation(隔离性):保护2个同时进行的事务,彼此间无法看到中间结果. 例如:如果有个2个事务,A,B,如果A中的数据还没有提交,在B这个事务中是无法看到A所处理过程中的数据变化的。 4:durability(稳定性):保证数据更新时免遭破坏,保证数据能写正确到数据库的文件中。 ...
Spring对开闭原则的体现,提供了大量的回调接口,例如BeanPostProcess,该接口的作用是我们可以添加自己的逻辑来控制Bean的初始化构建行为,如我们不想返回Bean本身而是需要返回他的代理对象,修改所依赖的属性对象等等。 下图是BeanPostProcess的关系结构图: [img] [/img] InstantiationAwareBeanPostProcessor 该接口非常重要,在Spring的Aop自动代理的实现中就需要使用该接口,原因很简单,我们的织入我们需要的我们的一些列的逻辑到目标中,所以我们返回的应该目标对象的代理对象。 public abstract cl ...
ApplicationContext的一系列aware回调接口,是通过实现BeanPostProcessor来实现的,当bean工厂启动后实力化BEAN就会回调这一系列的aware接口 class ApplicationContextAwareProcessor implements BeanPostProcessor { //当bean实例化之前,会调用此方法对bean进行处理 这是官方的解释: Apply this BeanPostProcessor to the given new bean instance <i>before</i> any b ...
最近一个项目,我们应用了Spring的事件机制,它是基于观察者设计模式的思想,但是有点差异的是还需要实现ApplicationContextAware,因为我们要拿到applicationContext来触发我们的事件,然后由Spring回调,将对象传进来,这样我们就可以很方便的访问所有的Bean,或者做一些其他的事情,比如发布事件。 还需要实现一个ApplicationListener,这个就是我们的观察者了,表示当某个事件被触发了,我们该做点什么。 其次就需要去定义事件,例如流程结束事件,一个购物系统当订单流程已经结束了,我们需要通知发货员发货,这个时候我们的这个通知发货,就是一个观察者,我 ...
最近研究了一下公司的底层框架的实现,发现公司对自定义的XML转换为javabean使用了apache betwixt组件,于是乎,就研究了一下,发现这个组件挺强大的。 环境准备: 必不可少的四个jar包 commons-betwixt.jar commons-degester.jar commons-collections.jar commons-beanutils.jar 这里简单的例子就直接去apache的官网上看吧,这里介绍一下实战型复杂的用法. 以下是三个javaBean的代码: public class SysCfgModule implements Serializable { ...
这是在项目中运用HttpURLConnection发送post请求(我们项目中是用来发送soap),完整的处理,包括如何处理异常。需要注意一个小地方,我们把创建URL放在afterPropertiesSet方法中,是因为这个类只是为下游某一个特定的Service服务的,如果要作用共用的,不能这样做。 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStre ...
一般在大型的软件编译,打包,部署都离不开ant,例如我们在执行 ant deploy的command的时候不仅仅要打包成war包,还需要启动tomcat,启动包括直接start,以及debug模式启动,和stop tomcat. <!-- Launches Tomcat --> <target name="tomcat-start" description="Launches Tomcat"> <fail unless="env.TOMCAT_HOME" message= ...
方式1: 可以看到在WSDL中会有一个 <wsdl:portType name="CarShop"> ...................... </wsdl:portType> <service name="CarShopService"> <port name="CarShopPort" binding="tns:CarShopBinding"> <soap:address location="http://cc ...
在开发webservice的时候,我们需要加入自己的控制逻辑,自定义过滤器,对soap消息进行处理,或者是预先进行一些设置,等等。首先介绍一下如何自定义处理类逻辑。 基于JAS-WS有一个重要的文件,sun.jaxws.xml,这个文件是用来定义服务的处理类的,就好比web.xml一样,我们访问某个业务处理,是由哪一个servlet处理一样。 OK,先看文件。 <?xml version="1.0" encoding="UTF-8"?> <endpoints xmlns='http://java.sun.com/xml/ns/jax- ...
之前对并发了解的很少,觉得如果程序存在竞争条件,就直接加一个Synchronized就可以解决。发现越多很多源代码之后,发现别人加锁并不是简简单单的在方法上面加一个synchroized这么简单,先上一段代码. public List<String> lists = Colle ...
public class PrimeGenerator implements Runnable { private final List<BigInteger> list = new ArrayList<BigInteger>(); private volatile boolean cancell; @Override public void run() { BigInteger big = BigInteger.ONE; while (!cancell) { big = big.nextProbablePrime(); ...
public class UnSafeOperation { //直接使用this加锁 public synchronized String get(Vector<String> vector) { if (vector.isEmpty()) { return null; } int index = vector.size() - 1; return vector.get(index); } //对vector加锁 public String get1(Vector<String> vector) { ...
public class Test { public List<String> lists = Collections .synchronizedList(new ArrayList<String>()); //使用不同的锁策略,导致数据出现混乱 public synchronized boolean listIfAbsent(String str) { boolean ifAbsent = lists.contains(str); if (!ifAbsent) { lists.add(str); } ...
public class NumberRange { private AtomicInteger lower = new AtomicInteger(0); private AtomicInteger upper = new AtomicInteger(0); public void setLower(int i) { if (i > upper.get()) { throw new IllegalArgumentException(); } lower.set(i); } public void setUpper(int i) ...
import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.Timer; import java.util.TimerTask; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamCo ...
Global site tag (gtag.js) - Google Analytics