首页
学习
活动
专区
工具
TVP
发布

不会写文章的程序员不是好厨师

专栏作者
30
文章
30297
阅读量
10
订阅数
记录下多个BeanPostProcessor代理同个Bean的问题
在去年研发XX项目时,需要一种字节码增强机制,用于增强HSF、Tair、TDDL等相关类,用于信息采集。当时考虑了好几种方案,也踩到了一些坑,特别是关于Spring AOP代理机制的一个缺陷,让我最后决定放弃使用Spring AOP,而采用了基于JVM-Sandbox的方案。写此文特地记录下这个坑,避免后人重复入坑(当然这个问题在5.0.5后应该是已经修复了)
LNAmp
2019-06-02
1.3K0
JVM Flags介绍-Heap相关
以下的讨论的heap是这样的heap(堆):基于经典分类,分为young gen, old gen , permanent gen 。1.8已经没有permanent gen,不在该讨论范围
LNAmp
2018-09-05
1.5K0
Spring源码初探-IOC(1)-Bean的初始化
对于一名Java码农来说,Spring真是太重要了。目前Spring的体系已经发展得非常壮大,其底层基石core,beans,context非常牢固。
LNAmp
2018-09-05
3970
Spring源码初探-IOC(2)-Bean的初始化-自定义标签解析
前面一文介绍的是Spring对于DefaultElement的解析,例如bean/import/alias等,但是在Spring体系中也存在很多扩展标签,例如事务、aop等非Default标签。按一般的套路通常是先介绍在Spring体系下如何在XML配置文件中自定义标签,本文先介绍Spring对于自定义标签的解析过程,在知道了Spring怎么“读”XML配置之后,写其能“读懂”的配置就显得非常自然了。
LNAmp
2018-09-05
3710
Spring源码初探-IOC(3)-Bean的初始化-bean的加载
前面两篇文章主要介绍的是xml到BeanDefinition的过程,我们知道在使用Spring的过程中通常直接使用getBean(beanName)的方式,getBean返回的是实例化并且已经完成初始化后的对象。对于我们平时使用来说,创建一个对象通常会使用new,或者使用反射。我们使用反射instantiation对象,使用反射填充field,使用反射调用init方法,最终得到对象使用。Spring也是采用的同样的过程,只不过过程更为复杂,考虑的异常情况更多。
LNAmp
2018-09-05
5940
日志那些事儿——slf4j集成logback/log4j
在日志Logger漫谈中提到了slf4j仅仅是作为日志门面,给用户提供统一的API使用,而真正的日志系统的实现是由logback或者log4j这样的日志系统实现,那究竟slf4j是怎样集成logback或者log4j的呢?
LNAmp
2018-09-05
1.8K0
ThreadLocal解析与最佳实践
用于同一个线程内的方法要共享某些变量或状态的时候,提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度
LNAmp
2018-09-05
1.1K0
日志那些事儿——由一次bug引发的思考-client jar应该如何输出日志
前面几篇“日志那些事儿”讲解了日志的重要性和相关使用。以slf4j+logback的使用为例,我们的步骤为:
LNAmp
2018-09-05
4670
Spring源码初探-IOC(4)-Bean的初始化-循环依赖的解决
在实际工作中,经常由于设计不佳或者各种因素,导致类之间相互依赖。这些类可能单独使用时不会出问题,但是在使用Spring进行管理的时候可能就会抛出BeanCurrentlyInCreationException等异常 。当抛出这种异常时表示Spring解决不了该循环依赖,本文将简要说明Spring对于循环依赖的解决方法。
LNAmp
2018-09-05
5800
日志那些事儿——Logback源码解析
在上篇文章日志漫谈中谈到,日志在监控报警、查错分析等方面有着非常重要的应用。Logback作为目前最火的日志系统,本文就简单分析一下logback日志打印的过程。
LNAmp
2018-09-05
2.1K1
Spring源码初探-IOC(5)-ApplicationContext功能扩展及其扩展点
前面几篇关于Spring的文章简单阐述了使用BeanFactory作为容器时bean的初始化过程。然而在实际使用中,我们并不会直接接触和编码BeanFactory,我们通常会使用另外一个功能更强、更完善的容器ApplicationContext。本文粗略讲述了ApplicationContext对于BeanFactory的功能扩展,并将重点放在了Spring在容器启动和初始化过程中提供的扩展点和事件发布上。扩展点让我们能够“插手和干预”Bean的初始化,通过容器发布的事件得以了解容器的一些内部过程。
LNAmp
2018-09-05
4500
日志那些事儿——日志Logger漫谈
最近在关注限流、降级、监控等系统稳定性方面的技术,反复牵涉到的几个技术名词是日志log,Aop切片。
LNAmp
2018-09-05
1.1K0
记一次"诡异"的git merge错误
今天照常开发,在日常部署测试的时候进行git merge 竟然出现了"代码丢失"的情况,相当诡异,特此记录。
LNAmp
2018-09-05
1.9K0
日志那些事儿——谈谈需要日志输出的client jar应该如何设计
上篇文章提到了应该如何设计需要输出日志的client jar,大概有三个比较重要的点。
LNAmp
2018-09-05
6010
浅析AtomicLong以及Unsafe
最近关注着限流、降级相关的设计,开源的Hystrix提供了一种设计思路。限流降级的前提是需要了解系统的各种状态,服务的响应情况,接口的调用情况,数据库的情况等等。其中很重要的一个指标就是qps,那么如何统计qps?Hystrix中有个设计非常好的类HystrixRollingNumber,非常适合用来统计qps。HystrixRollingNumber中利用了LongAdder来提高效率,所以本文先会介绍AtomicLong,UnSafe,下篇文章介绍LongAdder,下下篇文章介绍HystrixRollingNumber...
LNAmp
2018-09-05
5660
伪共享(False Sharing)和缓存行(Cache Line) 大杂烩
在上篇介绍LongAdder的文章中,我们最后留下了一个问题,为什么Cell中要插入很多个实际上并没有使用的Long变量?这个问题就得从False Sharing和Cache line开始说起。首先我们得知道Cache line是啥,推荐两篇文章:文章1和文章2。
LNAmp
2018-09-05
9990
浅析HystrixRollingNumber(用于qps计数的数据结构)
考虑到一种需求场景,我们需要统计系统qps、每秒平均错误率等。qps表示每秒的请求数目,能想到的最简单的方法就是统计一定时间内的请求总数然后除以总统计时间,所以计数是其中最核心的部分。通常我们的额系统是工作在多线程的环境下,所以计数我们可以考虑使用AtomicInteger/AtomicLong系列,AtomXXX中没有使用锁,使用的是循环+CAS,在多线程的条件下可以在一定程度上减少锁带来的性能损失。但是在竞争特别激烈的情况,会大量出现cas不成功的情况带来性能上的开销。为了更进一步分散线程写的压力,JDK8中引入了LongAdder,前面的博客中介绍了LongAdder,LongAdder会分成多个桶,将每个线程绑定到固定的桶空间中进行读写,计数可以对所有的桶中的值求总数。前面提到求qps最简单的方法就是统计一定时间内的请求总数然后除以总统计时间,这样的方法虽然简单但是对有一定的问题,比如说统计出的qps跳跃性会比较大,不够平滑等。在本文中将介绍HystrixRollingNumber,这个数据结构在统计qps等类似的求和统计的场景下非常有用。
LNAmp
2018-09-05
1.4K0
[翻译]Java 6,7,8中的String.intern
最近一直在关注“故障排查”的相关知识,首先着手的是OOM的异常。OOM异常通常会有Perm区的OOM(java7及以前)和HeapSpace的OOM,这两种各有不同的排查手段,但是在review上述两种案例的过程中,String.intern()是出现很多的一个方法,遂研究之。在网上找到了一篇写得不错的文章,就翻译下来给自己留点印象。原文地址:http://java-performance.info/string-intern-in-java-6-7-8/
LNAmp
2018-09-05
9310
Spring Retry 学习记录
在很多场景中,我们需要“重试”,重试意味着反复执行一段代码直至成功,或者重试多次无果后标记失败。“重试”的出发点有可能是为了保持状态的一致,也有可能是为了容忍被调用方短暂的不可用。“重试”逻辑有可能是同步执行,也有可能是异步执行。异步有可能是将信息存入数据库定时任务重试,也有可能是通过异步消息,利用消息的重试机制,等等,不一而论。
LNAmp
2018-09-05
6030
为Hibiscus写文之定时器篇——HashedWheelTimer
去年一年在简书大约写了25篇,在公司内网写了5篇博客。今年定个小目标吧,在简书产出高质量的博客50篇,加油!
LNAmp
2018-09-05
1.1K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档