java开发问题分析
文章平均质量分 71
rhwayfunn
这个作者很懒,什么都没留下…
展开
-
深入探索Java 8 Lambda表达式
作者 Richard Warburton, Raoul Urma, Mario Fusco 译者 段建华 2014年3月,Java 8发布,Lambda表达式作为一项重要的特性随之而来。或许现在你已经在使用Lambda表达式来书写简洁灵活的代码。比如,你可以使用Lambda表达式和新增的流相关的API,完成如下的大量数据的查询处理: int total = invoices.stream()转载 2016-03-29 09:37:08 · 999 阅读 · 2 评论 -
Dubbo Hessian2序列化问题
问题定义了一个接口,返回值为Map<String, Byte>,consumer收到结果后,使用Byte value = map.get(key)获取结果,抛出了如下类型转换异常: 如下:java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Byte at sun.reflect.Native原创 2017-12-22 17:35:00 · 8845 阅读 · 0 评论 -
Spring bean id相同引发的故障
最近因为同事bean配置的问题导致生产环境往错误的redis实例写入大量的数据,差点搞挂redis。经过快速的问题定位,发现是同事新增一个redis配置文件,并且配置的RedisSentinelConfiguration的id是一样的,然后在使用@Autowired注入bean的时候因为spring bean覆盖的机制导致读取的redis配置不是原来的。总结起来,有两点问题:为什么相同bean i原创 2017-09-23 23:02:40 · 6333 阅读 · 1 评论 -
Spring定时任务源码分析
之前在深入浅出spring task详细介绍了spring task的用法与使用示例,这篇文章更近一步,我们从源码的角度看看内部的实现机制。之所以写这篇文章是因为最近因为spring task的误用引发了一次线上的故障。本着一探究竟的精神,源码撸起。先还原下spring task是如何误用的,示例代码如下:package com.rhwayfun.springboot.task;import or原创 2017-08-13 00:21:33 · 5350 阅读 · 1 评论 -
缓存前置实践
说到缓存,可能最熟悉的是缓存的使用和更新策略。使用缓存的好处很多,可以提高响应速度,减轻数据库等存储的读写压力。关键是变“快”了。使用缓存有很多注意的地方,比如何时使用缓存,什么数据适合缓存,缓存什么时候失效。缓存是提高程序性能的“银弹”,不过这里不是将如何使用缓存,而是介绍缓存前置的思路和一些实践。缓存前置这里的缓存指的是应用缓存,或者说本地缓存,那么缓存前置就是指服务端的本地缓存转移到客户端,这原创 2017-07-09 20:32:14 · 2480 阅读 · 0 评论 -
Hibernate Validator参数校验
日常开发中经常会遇到需要参数校验的情况,比如某个字段不能为空、长度不能超过5等都属于参数校验的范围。对于简单的参数校验通过写几个if-else判断语句就搞定,但是对于复杂的多个参数校验的情况,就不是那么简单了,通常是各种循环嵌套+一堆if-else语句。一个字,丑!所以,这就需要引进本文的主人公——Hibernate Validator(下文简称hb)。顾名思义,这是出自ORM框架Hibernate原创 2017-07-29 19:37:48 · 3567 阅读 · 0 评论 -
缺少Log4j依赖导致应用启动失败的教训
最近,公司在做版本升级,所有对aaa(指代某个内部依赖)有依赖的应用需要排除掉。从这点看,几乎不会有什么问题,因为仅仅是排除一些maven依赖而已嘛。但是,一位同学在排除依赖的时候,仅仅是把aaa排除了,而没有在测试环境进行测试,在线上发布的时候,日志报dubbo服务注册失败(抛异常和dubbo admin没有看到注册的服务),导致应用启动失败(回滚后正常),影响正常业务5分钟。事后排查这个问题的时原创 2017-04-03 10:51:57 · 3955 阅读 · 3 评论 -
AspectJ切面执行两次原因分析
背景 转眼之间,发现博客已经将近半年没更新了,甚是惭愧。话不多说,正如标题所言,最近在使用AspectJ的时候,发现拦截器(AOP切面)执行了两次了。我们知道,AspectJ是AOP的一种解决方案,本质上是通过代理类在目标方法执行通知(Advice),然后由代理类再去调用目标方法。所以,从这点讲,拦截器应该只会执行一次。但是在测试的时候发现拦截器执行了两次。问题重现 既然问题已经明了,那么可以通原创 2017-03-19 16:01:06 · 10812 阅读 · 3 评论 -
四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)
原文链接 作者:Alexia(minmin) 众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM、SAX、JDOM和DOM4J下面首先给出这四种方法的jar包下载地址DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里SAX:http://sourceforge.net/projects/sax/JDOM:http://jdom.org/download转载 2015-12-29 18:48:06 · 974 阅读 · 0 评论 -
浅谈多态机制的意义及实现
标题:浅谈多态机制的意义及实现 作者:舒の随想日记在面向对象编程(Object-Oriented Programming, OOP)中,多态机制无疑是其最具特色的功能,甚至可以说,不运用多态的编程不能称之为OOP。这也是为什么有人说,使用面向对象语言的编程和面向对象的编程是两码事。多态并没有一个严格的定义,维基百科上给它下的定义比较宽松: Subtype polymorphism, almos转载 2015-12-29 18:57:15 · 3602 阅读 · 0 评论 -
重构:从方法论到实践
重构:从方法论到实践最近部门内部组织了一次大型重构,刚好借着这个机会学习了重构相关的内容,重构可以说代码优化利器,可以很好改善代码结构和开发效率。个人觉得重构应该是随时进行的,开发阶段、测试阶段、上线后,任何时候你觉得代码写得不够好或者有bug都应该重构。什么是重构通俗讲就是不影响外界访问的前提下,修改代码的行为。这里的修改代码包括重新设计(业务设计和技术设计)和代码结构的调整。...原创 2018-03-17 15:43:33 · 3163 阅读 · 0 评论