1 写单元测试,模拟用户中心可能发生的各种情况,比如,数据库挂掉,用户中心挂掉,用户中心负载过高,数据库负载过高,请求热点等多种情况,调出最优方案。保证我们应用的FailBack。
在交易中心一定要完成这些单元测试程序,以完成对大并发量访问的性能测试。
从DBA得到的数据,最大每秒有800~1000个事务,查询最大有3W到DB的查询。所以单元测试应该按这个的压力来进行。
2 自定义的Eclipse各种快捷键
3 MBeanServerFactoryBean是什么东西?如何建立一个MBeanServer。
FactoryBean是个Bean工厂,由Spring的Bean来调用,向FactoryBean通过getObject来请求数据。
建立一个MbeanSearver
MBeanServer mbs = ManagementFacotry.getPlatformMBeanServer(); ObjectName name = new ObjectName("MbeanTest:order=first"); ConfigurationMBean mBean = new Configuration(); mbs.registerMBean(mBean,name);
或通过MBeanServerFactory来建立
MBeanServerFactory.createMBeanServer();
在启动的Java参数里面加入,表示按MBeanServer启动。
-Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
4 MBeanExporter是什么东西?
MBeanExporter是Spring提供的一个方法类,Spring可以将任意的类暴露成Mbean,就是通过MBeanExporter来处理的。
5 com.sun.jdmk.comm.HtmlAdaptorServer?是什么东西
SUN提供的HTTP Server,将JMX Server导出成HTML格式,可以直接通过http://localhost:8080访问到MBean的信息。
6 MethodInvokingJobDetailFactoryBean是什么?
Spring提供简化Quartz访问的一个包装Bean,给该FactoryBean注入Object和定时任务到的时候需要执行的方法,就可以了。
Spring配置
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="exampleBusinessObject" /> <property name="targetMethod" value="doIt" /> </bean>
quartz任务定时执行指定Object的指定方法。
7 CronTriggerBean是什么东西?
cron:Linux下的计划任务。 cron的语法和Quartz的语法一样。
8 Quartz机制。
在创建任务安排的时候,HelloWorldJob没有被声明为Public,不能被Factory使用HelloWorldJob.class.newInstance创建新的Object,所以失败。
Quartz的典型任务代码:
//取得Schedule对象 SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sch = sf.getScheduler(); //构造JobDetail对象 JobDetail jd = new JobDetail("HelloWorldJobDetail",Scheduler.DEFAULT_GROUP,HelloWorldJob.class); //构造触发器对象 Trigger tg = TriggerUtils.makeSecondlyTrigger(5); tg.setName("HelloWorldTrigger"); sch.scheduleJob(jd, tg); //开始Scheduler sch.start();
9 一个计划任务在执行的过程中如果遇到了严重错误,比如数据库维护导致不能连接数据库,任务调度机制如何能知道其执行失败并尝试重新执行,
Quartz可以完成对应的操作。
10 守护线程(deamon),
只要有工作线程在运行,Java进程就不会退出运行,但是如果所有工作线程都结束了,那么守护线程也会跟着结束。
可以使用Thread.setDeamon(true),在创建一个线程的时候,来设置一个线程是守护线程。
11 Unix cron命令,CronTrigger的DOC里面有详细的解释。
12 ObjectName是什么?
表示MBean的对象名,可以和一个或多个MBean关联,通常一个MBean对应一个ObjectName域的一个节点。
ObjectName由键和键属性两部分组成。
比如:
com.taobao.jmx.uic.thunder:type=uic,id=counterFilter
12 注入到IncMonitor的各个参数的意义。
notifyCenter。
调用notifyCenter来将需要的信息发送到目标端。
BeanFactoryUtils.beansOfTypeIncludingAncestors(this.context,TTMNotify.class)
将Spring中,有相同接口的所有实现类都得到,比如,通知类型,TTMNotify,实现类有Email通知,手机通知,旺旺通知,但是可能在配置文件里面只配置了需要的通知类型,所以,通过Helper方法将available的通知类型都得到。最后,遍历通知类型就是了。
13 关于MBeanServer连接。
mbeanServerConnectionCenter:
有可能一个Mbean Client连接到多个Server,
JMXConnector是什么?
JMXConnector是一个到JMX Server的连接,通过工厂方法JMXConnectorFactory.connect可以连接到指定的JMXServer上去。
14 MBeanServerConnection是什么?
使用代理,在本地执行的方法都会连接到远程,执行对应的方法,并返回,客户端就就像操作本地对象一样在服务端创建MBean,修改MBean的属性等。
15 JMXServiceURL是什么?service:jmx:rmi://localhost/jndi/rmi://10.1.6.154:1199/myconnector
一个到MBean Server的URL,有点类似于InetAddress。
监控中心从JMX-Server中得到需要监控的对象,然后决定发Email还是发手机短消息。
PS: 关于Eclipse。
Eclipse的工程依赖,类路径的管理方法。
Eclipse的调试,怎么调试多线程的Eclipse程序。
Eclipse3.4的新功能,将View dock在页面上。
Eclipse快捷键编辑,When ____ 这个状态有什么区别。