版权申明
原创文章:本博所有原创文章,欢迎转载,转载请注明出处,并联系本人取得授权。
版权邮箱地址:[email protected]
SpringIOC启动顺序
加载并且保存Spring配置文件路径信息然后保存到configLocation中
刷新Spring上下文环境
创建并且载入DefaultListableBeanFactory(即BeanFactory)
根据DefaultListableBeanFactory创建XMLBeanDefinitionReader,用于后面读取xml配置文件信息
创建BeanDefinitionDelegate代理类,用于解析xml配置信息
解析xml中配置的
、 、 、 等不同的标签信息,以便于可以使用不同的解析器进行解析 通过XMLBeanDefinitionReader结合location路径信息读取Resources资源信息
使用BeanDefinitionDelegate代理类解析Bean元素并且依次进行实例化操作,实例化完毕之后将Bean信息注册(put)到BeanDefinitionMap中以便于可以下次继续使用
大表在生产环境不停机数据迁移
1、业务系统实现双写;
2、分批次同步历史数据;
3、同步完成后进行数据比对;
具体的实现没想好,预计另外开一篇文章来写了,暂时这边留个坑
检查java代码单元测试覆盖率
可以使用Sonar,这个我用过居然不记得了
Mock框架
这个直接用EasyMock 、Mockito之类就好了,我忘记名字了,没答上来
如何创建线程,有哪些方法
这个简单 可以new Thread()、或者实现Runnable接口,然后new 这个实现类,一般推荐用第二种,不知道为啥面试的时候鬼使神差的去谈到了线程池,又忘记线程池是哪个类了,ExecutorService!!!
然后创建线程池简单就直接用Executors,不过这个工具类的几种实现都有各自的局限性,推荐手动创建线程池,例如
public final static ExecutorService POOL = new ScheduledThreadPoolExecutor(INIT_QUEUE_NUM, new BasicThreadFactory.Builder().namingPattern("thead_pool-%d").daemon(true).build());
反射如何执行方法
method.invoke() 这个记错了,记成excute了
设计理发店排队程序使用设计模式
这个问题没想太清楚,其实功能实现很简单,但是具体用到哪个设计模式一下没反应过来,大概是想要我用组合模式吧,题目大概是说一个理发店有三个理发师,然后最多允许七位顾客来排队,多余的顾客谢绝接待这样子,这边需要使用一个队列作为顾客池,容量设置最大值7,新增顾客超过容量则需要向客户端报错,理发店需要自动工作,分配顾客池的顾客给三个理发师,因此理发师需要有个正忙的状态,分配的工具类会根据各个理发师的状态分配顾客给理发师,具体的设计可能再挖一个坑另开一篇文章写了,这里暂时只记录
ps.因为需要手写代码理发店,所以有一些类、方法等命名当然要用到英文,理发店。。英文是barber shop,嗯,我写成了cut hair house
Java性能问题诊断工具
嗯,大概有jps、jstack、jmap、jstat、jhat、hprof、jvisualvm等jvm自带工具,另外有第三方工具JMC、JFR 、Tprofiler、Jprofiler、Arthas等
MySQL查询数据库表名查询表字段命令
> use database;
> show tables;
> desc table_name;
一个JavaBean,只提供了get方法,没有提供set方法,如何修改私有属性的值
我觉得这个题目比较偏门,当时没答出来,百度了一番,是可以利用反射来实现修改类属性的访问权限,代码样例
// 创建一个JavaBean类的对象
PrivateField privateField = new PrivateField();
// 获取对象的Class
Class> clazz = privateField.getClass();
// 获取指定名字的私有域
Field field = clazz.getDeclaredField("username");
// 设置压制访问类型检查,只有这样,才能获取和设置某个具体类的Field对应的值。
// 参数为 true时 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
// 如果为true是,能够正常运行,如果为false则会抛出异常信息:java.lang.IllegalAccessException
field.setAccessible(true);
System.out.println(field.get(privateField));
// 设置私有域的值
field.set(privateField, "123456");
// 输出被改变的属性值
System.out.println(field.get(privateField));
}
其它还有很多暂时想不起来了,想起来再更新吧,晚安、好梦。