摘要:
spring mvc的运行流程如下图所示 在这里我们只实现基本功能,对流程做一定的简化。我们需要以下几个步骤: 加载配置文件 获取所有的class名称 获取需要注入的实例 缓存方法映射 注入bean 首先,我们需要新建一个web工程,并创建相应注解,以及添加依赖,工程目录如下所示: 由于是手写自己的 阅读全文
摘要:
特点:有序链表实现,无锁实现,value不能为空,层级越高跳跃性越大,数据越少,理论上查询变快。 新的node是否抽出来作为index,随机决定; index的level由随机数决定(随机数比特位连续为1的数量) 每层的元素,headIndex固定为所有node中最小的 查找数据时,按照从上到下,从 阅读全文
摘要:
ForkJoinPool是ExecutorService接口的实现,它专为可以递归分解成小块的工作而设计。 fork/join框架将任务分配给线程池中的工作线程,充分利用多处理器的优势。 使用fork/join框架的第一步是编写一部分工作的代码。类似的伪代码如下: 将此代码包装在ForkJoinTa 阅读全文
摘要:
AQS全名为AbstractQueuedSynchronizer,为java并发包中提供的类。提供了对资源占用,释放,线程的等待、唤醒等接口和具体实现, 可以用在各种需要控制资源争用的场景中。(ReentrantLock/CountDownLatch/Semphore) AQS中定义了八个比较重要的 阅读全文
摘要:
Java中锁的概念 自旋锁:为了不放弃CPU事件,循环使用CAS尝试对数据进行更新,直至成功。 悲观锁:假定会发生并发冲突,对所有操作加锁 乐观锁:假定没有冲突,在修改数据时如果发现数据与之前获取的不一致,则读取最新数据,修改后重试修改 独享锁(写):给资源加上写锁,线程可以修改资源,其他线程不能再 阅读全文
摘要:
什么是策略模式?其思想是针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换。策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化,从而改变不同的功能。 假如我们有一个根据不同用户类型返回不同折扣的方法,我们的实现可能是这样: 现在我们各个类型的用户折扣耦合在 阅读全文
摘要:
在编码过程中,我们经常会遇到完成一个操作需要多个步骤完成的情况。我们可能会把多个步骤写到一个方法里,假如这个操作需要新增步骤,那么势必要修改已有的方法,这违反了开闭原则。 我们可以使用spring的事件机制来简单地实现这种功能。Spring的事件机制用到了观察者模式,何谓观察者模式?观察者模式(有时 阅读全文