- 博客(8)
- 收藏
- 关注
原创 设计模式-策略模式
概念:定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户应用场景:只要在分析中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性...
2022-03-10 20:34:40 110
原创 线上性能问题定位
由于线上经常出现各种各样的性能问题,故记录下查看问题的步骤方便后期查阅1)、在linux下使用TOP命令查看每个进程的情况,因为我们是java应用,只需要关注COMMAND是java的数据即可,如下图,CPU利用率最高的是30420这个进程(CPU利用率越高,性能越差,此处的利用率是当前机器所有核加在一起的CPU利用率)TOP2)、如果要查看每个核的CPU利用率,在此界面按1即可,可以看到Cpu7,说明是8核3)、查看进程下各个线程的性能,可以看出,最耗费cpu的线程id是17.
2022-02-24 20:33:27 526
原创 记一次java.lang.UnsupportedOperationException异常
以下是问题代码:List<Long> departmentIds = Arrays.asList(departmentId);departmentIds.add(1L);在对list进行操作时,抛出java.lang.UnsupportedOperationException异常,反复查看代码,没有发现问题,后来进入源码才发现 Arrays.asList返回的ArrayList是Arrays内部类两个ArrayList异同如下:1、尽管Arrays内部类ArrayList和
2022-02-16 15:59:12 288
原创 java8函数式编程
1、将集合隐射成Map以下构造器对应字段(id,name,age, sex)List<User> userList = new ArrayList<>();Useruser1=newUser("1","zhangsan",23,"nan");Useruser2=newUser("2","lisi",25,"nv");Useruser3=newUser("3","wangwu",28,"nan");userList.add(user1);userL...
2021-09-18 11:09:41 97
原创 获取两个时间之间的所有日期
private List<String> getBetweenDates(String start, String end) { List<String> result = new ArrayList<>(); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date start_date = sdf.parse(start); .
2021-09-18 10:11:23 488
原创 Spring-AOP源码分析
一,要想启用AOP,我们主要要用到注解@EnableAspectJAutoProxy(启用AOP),而我们的分析将从该注解开始,该注解的定义如下:我们可以看到@EnableAspectJAutoProxy上有一个@Import注解,@Import注解注册了BeanAspectJAutoProxyRegistrar,我们进入AspectJAutoProxyRegistrar,该类实现了ImportBeanDefinitionRegistrar(该类主要是用来注册bean),以上的Bean仅仅只是注册B
2020-08-27 10:45:57 87
原创 Spring-@Configuration源码解析
一、我们从AbstractApplicationContext#refresh()#invokeBeanFactoryPostProcessors开始分析,即调用BeanFactory的后置处理器二、进入invokeBeanFactoryPostProcessors方法,调用PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors在该方法中我们按照类型BeanDefinitionRegistryPostProcesso
2020-08-26 11:45:34 200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人