各种杂乱总结

1.关于activemq的随想

发送,通过点对点发送到相应到队列上;接收,通过监听接收mq发来的信息,接收类实现MessageListener接口,在onMessage(Message message)方法中实现对消息的接收及业务的相关处理;一般activemq都是以集群的方式使用,activemq配置的方式一般以zookeeper的方式为注册中心,这样可以达到负载均衡的作用。关于zookeeper的作用是保持负载均衡,数据的唯一性等。关于配置也相应的比较简单。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户

2.spring自动装配

autowired和resource。autowired是按类型自动装配,resource是按name自动装配。一般@Resource(name="aaa"),如果去掉(name="aaa")时,会按默认名字自动装配,如果装配不上时会按类型进行自动装配。如果name不为空,则只能按name进行装配。

3.spring实例化

、@controller 控制器(注入服务)
、@service 服务(注入dao)
、@repository dao(实现dao访问)
、@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean />)

4.spring对bean进行管理

spring对bean进行管理,可以管理bean的生命周期,我们也可以通过实行spring的不同的接口,在干预spring对bean的管理。如InitializingBean接口,里面有

public void afterPropertiesSet() throws Exception {
System.out.println("回调函数,会在bean属性设置完成后调用");
}

方法。可以完成的操作如system里面。还有:

BeanPostProcessor接口和BeanFactoryPostProcessor接口

可以处理不同的业务。

对spring bean来讲,我们默认可以指定两个生命周期回调方法。一个是在ApplicationContextbean初始化,包括注入对应的依赖后的回调方法;另一个是在ApplicationContext准备销毁之前的回调方法。要实现这种回调主要有三种方式:实现特定的接口、在XML配置文件中指定回调方法和使用JSR-250标准的注解。

5.一般bean会在spring容器初始化的时候,会实例化所有的单例bean,如果不想被初始化,则需要在配置bean的时候加上懒加载,lazy-init="true",这个时候会在调用的时候才实例化,但是如果此bean被其他非懒加载的单例bean引用,则也会被实例化.
6.bean的实例化都是通过构造器进行实例化。如果构造器非默认有参数的话,则用constructor-arg来指定对应的参数,多个参数的话,当有多个构造参数时就需要使用多个constructor-arg进行定义,默认会将定义的顺序作为参数的顺序。也可以指定顺序,如
<bean />
</bean>
beanAReplacer替换beanAReplacer中的add方法。BeanAReplacer 要实现MethodReplacer
11.<context:component-scan/>的配置会自动以单例实例化到bean容器中,会自动开启注解,不需要在单独配置<context:annotation-config/>了

12.在spring中#{}和${}的区别是,#{}是spring的SPEL表达式,${}是取配置文件中的key。都支持在注解中使用。

13.jdk7的hashMap和currentmentHashMap.对于hashMap来说,比较简单,就是数组和链表的结构。对于currentmentHashMap来说,是支持并发的,也比较简单,也就是在数组和链表结构上面加一个segment,支持并发的。最多有16个segment,也就是说,jdk7的currentmentHashMap最多支持16个并发。默认为16个,也是可以改的。每个segment下面都有一个数组和链表结构的数据结构。锁机制是加在segment上的,segment也叫段,所以也叫做分段加锁。
jdk8的hashMap和currentmentHashMap。对hashMap来说,与jdk7相比,加入了红黑树,数组+链表+红黑树。节点是node,不是entity了。如下解释:
根据 Java7 HashMap 的介绍,我们知道,查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间复杂度取决于链表的长度,为 O(n)。
为了降低这部分的开销,在 Java8 中,当链表中的元素超过了 8 个以后,会将链表转换为红黑树,在这些位置进行查找的时候可以降低时间复杂度为 O(logN)。

14.quartz默认是并行的,如果要串行,需要配置参数为:

<bean id="transmitTask"   

    <property name="targetObject">  

        <ref bean="transTaskBusiness" />  

    </property>  

    <property name="targetMethod">  

        <value>execute</value>  

    </property>  

    <property name="concurrent">  

        <value>false</value>  

    </property>  

</bean>