json(JavaScript object notation) 解析数据 var obj = eval(data); 获取数组中的对象 var x = obj["key"];//obj.key 遍历一个js的对象 for(var id in obj){ var oj = obj[id]; }
Spring资料
Spring中定义了7种不同的事物传播规则 1.PROPAGATION_MANDATORY:表示该方法必须运行在一个事务中。如果当前事务不存在,将抛出一个异常 2.PROPAGATION_NESTED:表示如果当前已经存在一个事务,则该方法应当运行在一个嵌套事务中. 表示嵌套的事务可以从当前事务中单独地提交或回滚。如果当前事务不存在,那么他看起来就和PROPAGATION_REQUIRED没有两样。 3.PROPAGATION_NEVER:表示当前的方法不应该运行在一个事务上下文中。如果当前存在一个事务,则会抛出一个异常。 4.PROPAGATION_NOT_SUPPORTED:表示该方法不应在事务中运行。如果一个现有的事务正在运行中,它将在该方法的运行期间被挂起。 5.PROPAGATION_REQUIRED:表示当前方法必须运行在一个事务中。如果一个现有的事务正在运行中,该方法将运行在这个事务中。 否则的话,就要开始一个新的事务。 6.PROPAGATION_REQUIRES_NEW:表示当前方法必须运行在它自己的事务里。它将启动一个新的事务。如果一个现有事务在运行的话, 将在这个方法运行期间被挂起。 7.PROPAGATION_SUPPORTS:表示当前方法不需要事务处理环境,但如果有一个事务已经在运行的话,这个方法也可以在这个事务里运行。 注:事务传播规则回答了一个问题,就是新的事务是否要被启动或是被挂起,或者方法是否要在事务环境中运行。 Spring的事务隔离级别 1.脏读:脏读发生在一个事务读取了被另一个事务改写但还未提交的数据时.如果这些改变在稍后被回滚,那么第一个事务读取的数据就是 无效的。 2.不可重复读:不可重复读发生在一个事务执行相同的查询两次或两次以上,但每一次查询结果都不同时。 这通常是由于另一个并发事务在两次查询之间更新了数据。 3.幻读:幻读和不可重复读相似。当一个事务(T1)读取几行记录后,另一个并发事务(T2)插入一些记录,幻读 就发生了。在后来的查询中,第一个事务(T1)就会发现有一些原来没有的额外的记录。 ISOLATION_DEFAULT:使用后端数据库默认的隔离级别。 ISOLATION_READ_UNCOMMITTED:允许你读取还未提交的改变了的数据。可能导致脏读,幻读或不可重复读 ISOLATION_READ_COMMITTED:允许在并发事务已经移交后读取。可防止脏读,但幻读和不可重复读仍可能发生 ISOLATION_REPEATABLE_READ:对相同字段的多次读取的结果是一致的,除非数据被睡本身改变。可防止脏读和不可重复读,但幻读仍可能发生 ISOLATION_SERIALIZABLE:完全服从ACID的隔离级别,确保不发生脏读,不可重复读和幻读。这在所有的隔离级别中也是最慢的,因为他是典型 的通过完全锁定在事务中涉及的数据表来完成的 ISOLATION_READ_UNCOMMITTED是高效的隔离级别,但是事务的隔离级别程度也是最低的。事务对脏读,不可重复读和幻读是开放的。 在另外一个极端,ISOLATION_SERIALIZABLE防止任何形式的隔离问题,但效率是最低的。 只读 如果一个事务只对后端数据库执行读操作,数据库就可能利用事务只读特性,使用某些优化措施。 通过声明一个事务为只读,你就给了后端数据库一个机会,来应用那些它认为合适的优化措施。 因为只读的优化措施是在事务启动时由后端数据库实施的,所以,只有将那些具有可能 启动新事务的传播行为的方法的事务标记成只读才有意义(PROPAGATION_REQUIRED,PROPAGATION_REQUIRES_NEW,PROPAGATION_NESTED). 事务超时 在事务启动时,超时的时钟就开始滴答响了,所以只有将那些具有可能启动新事务的传播行为的方法的事务 设置超时才有意义(PROPAGATION_REQUIRED,PROPAGATION_REQUIRES_NEW,PROPAGATION_NESTED). spring中的<idref bean=""/>,<ref local=""/>,<idref local=""/>,<ref bean=""/>介绍 idref元素提供了一种速记和检验错误的方式,它用来设置属性为容器中其他bean的id或name,如下: <bean id="beanA" class="...."/> <bean id="beanB" class="..."> <property name="name"> <idref bean="beanA" /> </property> </bean> 如上代码在运行时等同于如下的代码片段: <bean id="beanA" class="...."> </bean> <bean id="beanB" class="..."> <property name="name"> <value>beanA</value> </property> </bean> 可以看到第一种形式要好于第二种形式;通过使用idref,spring在装载的时候就会 检验其他bean是否存在;而第二种形式中,指定了name属性后,spring仅会在实例化 该类时才做检验。 另外,还可以使用local属性,条件是被引用的bean必须定义在同一个xml文件中, 并且,bean的名称就是bean的id。采用这种方式,会更早地在xml文档解析时,就检验bean 的名称,代码如下: <property name="name"> <idref local="beanA" /> </property> ref元素用来设置bean的协作者(引用其他bean作为属性),即一种依赖关系. 使用ref元素的bean属性是最常见的用法,它允许指向位于同一个或父bean工厂的bean(无论是否在同一个xml 文件中)。bean的属性值可以同目标bean的id或name属性相同,如下: <ref bean="someBean"/> local属性用以指定位于同一个文件中的bean,它可以利用xml解析器来验证xml的id引用。 local属性值必须与目标bean的id属性一致。当发现在同一个文件中不存在匹配元素时,将会报错。 为了尽可能早地发现错误,当目标bean位于同一个xml文件中,应当使用local,如下: <ref local="someBean"/>