![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
蓝星蓝
Java程序员,web后台开发
展开
-
如何动态地将对象托管给Spring进行管理
引言IoC可以说是spring最核心的部分,是spring家族任意组件的基本。我们可以将Java Bean托管给Spring,Spring通过其IOC功能可以依次解析出Java Bean依赖的其他实例。能够使我们从复杂繁琐的对象依赖中解脱出来,专注于业务本身。但是有时候我们需要动态地创建一些Java Bean,并且希望将这些对象托管给Spring或者使用Spring的IOC功能对对象依赖的各个...原创 2019-11-21 09:48:15 · 2215 阅读 · 0 评论 -
如何获取某个类的所有子类
如何获取某个类的所有子类引言解决方案(获取基础与IAnimal的所有子类)总结引言在我们写工厂类的时候,可能会根据不同的类型(type)生成不同的对象。但在工厂类初始化的时候,我们需要将某个类型的所有类全部初始化才能达到我们的目的。举个例子,我们定义了很多动物(Animal),我们需要一个AnimalFactory根据动物类型(type)去构建不同的动物实例。如下代码所示:我们先构建一个动...原创 2019-11-14 09:46:16 · 21992 阅读 · 2 评论 -
如何优雅地优化代码中的的if else和switch
引言 一般来说,随着我们项目的迭代以及业务的越来越复杂,项目中的分支判断会原来越多。当项目中涉及到复杂的业务判断或者分支逻辑时,我们就需要考虑是否需要对项目进行重构了,或者if else和switch case是否能够满足当前项目的复杂度。我们举一个简单的例子,假如我们是马戏团的老板,在训练一些动物去做一些指令,刚开始很简单,只训练了一条狗,当狗握了一下手后,给她奖励一些狗粮...原创 2019-11-12 19:10:09 · 362 阅读 · 0 评论 -
闲聊Redis分布式锁
引言:目前很多系统都是使用redis作为分布式锁,如果redis是单节点部署,基本上不会出现什么问题。但如果redis是多节点的集群部署,那么使用redis集群作为分布式锁就会存在一些问题。这两篇文章进行了详细的讲解。http://zhangtielei.com/posts/blog-redlock-reasoning.html http://zhangtielei.com/posts/bl...原创 2019-11-12 18:55:30 · 209 阅读 · 0 评论 -
Java中整形的缓存机制
本文将介绍一下Java中关于Integer的缓存知识,首先看一下下面的代码,猜测一下会输出什么结果。/** * Created by lanxing on 16-3-13. */public class IntegerCache { public static void main(String[] args){ Integer integer1 = 3;原创 2016-03-13 11:34:46 · 1311 阅读 · 0 评论 -
ScheduleThreadPoolExecutor源码分析
ScheduleThreadPoolExecutor源码分析(一) Java中ScheduleThreadPoolExecutor主要用于执行延迟任务或者按照一定的频率执行任务。其中scheduleAtFixedRate函数是按照一定频率执行任务,scheduleWithFixedDelay可以根据延迟一定时间再执行任务。本文将参考ScheduleThreadPoolExecutor的源码原创 2016-07-18 11:13:41 · 558 阅读 · 0 评论 -
ScheduleThreadPoolExecutor源码分析(二)
DelayedWorkQueue: DelayedWorkQueue实现了BlockingQueue接口,因此其可以作为线程池的任务队列。BlockingQueue的主要属性有以下几个:private RunnableScheduledFuture[] queue:作为最小堆的实现数组,主要存储ScheduledFutureTask任务列表。private final Reentra原创 2016-07-18 19:34:57 · 354 阅读 · 0 评论 -
并发编程(volatile和synchronized)
并发编程(volatile和synchronized)大家都知道,并发编程主要是运用多线程来提高程序的运算速度并提高机器的使用率。而并发程序运行的最大挑战就是公共资源的访问冲突。对于公共资源的访问主要分为读和写 公共资源读:需要保证各个线程读到的公共资源时最新的 公共资源写:需要防止多个线程对公共资源的写冲突 在Java中,利用volatile关键字和synchronize...原创 2018-10-20 16:38:43 · 3920 阅读 · 0 评论 -
ThreadLocal的原理及正确使用方法
对于Java程序员来说,相信对于ThreadLocal并不陌生。ThreadLocal是线程本地变量的意思,主要用于多线程对同一个变量的读写操作,且相互之间又不会依赖于原始值的改变而影响线程的业务逻辑。主要表现为以下两个方面:每一个线程对ThreadLocal变量都保存着一份副本,任何一个线程的操作只是对这个副本的操作,并不会对原始数据进行修改。 由于ThreadLocal变量是线程本地变量...原创 2018-10-28 19:49:08 · 3716 阅读 · 0 评论