java
weixin_42578444
这个作者很懒,什么都没留下…
展开
-
sping全局异常处理器没有工作问题的解决
在xml文件中配置了全局异常,但是运行中抛出异常后,没有返回想要的结果。经过调试,发现是异常根本没有在全局异常处理器中处理。一步步深入调试跟踪,在org.springframework.web.servlet.DispatcherServlet文件的processHandlerException方法中发现,一共有5个异常处理的ExceptionResolver。protected ModelAnd...原创 2018-06-30 09:43:45 · 483 阅读 · 0 评论 -
Spring中构造器、init-method、@PostConstruct、afterPropertiesSet孰先孰后,自动注入发生时间
问题:今天想写一个通用点的方法,根据传入的参数的类型(clazz对象),判断使用哪个mapper来插入mysql数据库。下面是我的写法:public interface BizNeeqCommonService<T> { void save(List<T> records, Class<T> clazz);}@Servicepublic class ...转载 2018-06-30 09:55:38 · 543 阅读 · 1 评论 -
本地缓存ehcache、guava cache和Caffeine
在多线程高并发场景中往往是离不开cache的,需要根据不同的应用场景来需要选择不同的cache,比如分布式缓存如redis、memcached,还有本地(进程内)缓存如ehcache、GuavaCache、Caffeine。一、ehcache在Java项目广泛的使用。它是一个开源的、设计于提高在数据从RDBMS中取出来的高花费、高延迟采取的一种缓存方案。正因为Ehcache具有健壮性(基于java...原创 2018-07-01 23:20:05 · 8435 阅读 · 0 评论 -
谈一谈服务降级
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。之前已经有一些文章介绍过缓存和限流了。本文将详细聊聊降级。当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级。其实降级最关键的还是根据实际支持情况进行降级处理,不同的情况适用不同的降级方法。降级的...转载 2018-07-08 21:46:12 · 7578 阅读 · 1 评论 -
Lists工具包中的Partition方法踩坑记
由于微服务的性能要求,大部分接口对调用做了数量限制,但是在调用时超过限制数量时,就只有通过分页的方式调用。对于List比较好的分页方式就是使用Lists工具包中的Partition方法调用,但是今天在使用时,发现接口调用时发生异常。debug发现是subList导致的。subList的实现逻辑就不谈了,往上追溯发现是Partition方式也使用了subList,所以导致问题发生。public st...原创 2018-07-09 21:26:33 · 8476 阅读 · 2 评论 -
redis与mq的订阅与发布
redis也有订阅与发布,那么和现在常用的mq有什么区别呢?什么场景下应该使用redis的mq?既然存在,那么肯定有他存在的必要性。下面做一些分析:将redis发布订阅模式用做消息队列和rabbitmq的区别:可靠性redis :没有相应的机制保证消息的可靠消费,如果发布者发布一条消息,而没有对应的订阅者的话,这条消息将丢失,不会存在内存中;rabbitmq:具有消息消费确认机制,如果发布一条消息...原创 2018-07-15 22:47:44 · 4190 阅读 · 0 评论 -
Java何时需要使用多线程
多线程使用的主要目的在于:1、吞吐量:你做WEB,容器帮你做了多线程,但是他只能帮你做请求层面的。简单的说,可能就是一个请求一个线程。或多个请求一个线程。如果是单线程,那同时只能处理一个用户的请求。2、伸缩性:也就是说,你可以通过增加CPU核数来提升性能。如果是单线程,那程序执行到死也就利用了单核,肯定没办法通过增加CPU核数来提升性能。鉴于你是做WEB的,第1点可能你几乎不涉及。那这里...转载 2018-09-26 17:37:08 · 1487 阅读 · 0 评论