为什么要学习数据结构和算法

来源: 王争「数据结构与算法之美」专栏

你是不是觉得数据结构和算法,跟操作系统、计算机网络一样,是脱离实际工作的知识?可能除了面试,这辈子也用不着?

尽管计算机相关专业的同学在大学都学过这门课程,甚至很多培训机构也会培训这方面的知识,但是据我了解,很多程序员对数据结构和算法依旧一窍不通。还有一些人也只听说过数组、链表、快排这些最最基本的数据结构和算法,稍微复杂一点的就完全没概念。

阅读全文

模板模式(下):模板模式与Callback回调函数有何区别和联系

来源: 王争「设计模式」专栏

上一节课中,我们学习了模板模式的原理、实现和应用。它常用在框架开发中,通过提供功能扩展点,让框架用户在不修改框架源码的情况下,基于扩展点定制化框架的功能。除此之外,模板模式还可以起到代码复用的作用。

阅读全文

模板模式(上):剖析模板模式在JDK、Servlet、JUnit等中的应用

来源: 王争「设计模式」专栏

上两节课我们学习了第一个行为型设计模式,观察者模式。针对不同的应用场景,我们讲解了不同的实现方式,有同步阻塞、异步非阻塞的实现方式,也有进程内、进程间的实现方式。除此之外,我还带你手把手实现了一个简单的 EventBus 框架。

阅读全文

观察者模式(下):如何实现一个异步非阻塞的EventBus框架

来源: 王争「设计模式」专栏

上一节课中,我们学习了观察者模式的原理、实现、应用场景,重点介绍了不同应用场景下,几种不同的实现方式,包括:同步阻塞、异步非阻塞、进程内、进程间的实现方式。

同步阻塞是最经典的实现方式,主要是为了代码解耦;异步非阻塞除了能实现代码解耦之外,还能提高代码的执行效率;进程间的观察者模式解耦更加彻底,一般是基于消息队列来实现,用来实现不同进程间的被观察者和观察者之间的交互。

阅读全文

观察者模式(上):详解各种应用场景下观察者模式的不同实现方式

来源: 王争「设计模式」专栏

我们常把 23 种经典的设计模式分为三类:创建型、结构型、行为型。前面我们已经学习了创建型和结构型,从今天起,我们开始学习行为型设计模式。我们知道,创建型设计模式主要解决“对象的创建”问题,结构型设计模式主要解决“类或对象的组合或组装”问题,那行为型设计模式主要解决的就是“类或对象之间的交互”问题。

阅读全文

组合模式:如何设计实现支持递归遍历的文件系统目录树结构

来源: 王争「设计模式」专栏

结构型设计模式就快要讲完了,还剩下两个不那么常用的:组合模式和享元模式。今天,我们来讲一下组合模式(Composite Design Pattern)。

组合模式跟我们之前讲的面向对象设计中的“组合关系(通过组合来组装两个类)”,完全是两码事。这里讲的“组合模式”,主要是用来处理树形结构数据。这里的“数据”,你可以简单理解为一组对象集合,待会我们会详细讲解。

阅读全文

Spring Transaction Management @Transactional In-Depth

reference: marcobehler blog

You can use this guide to get a simple and practical understanding of how Spring’s transaction management with the @Transactional annotation works.

阅读全文

适配器模式:代理、适配器、桥接、装饰,这四个模式有何区别

来源: 王争「设计模式」专栏

前面几节课我们学习了代理模式、桥接模式、装饰器模式,今天,我们再来学习一个比较常用的结构型模式:适配器模式。这个模式相对来说还是比较简单、好理解的,应用场景也很具体,总体上来讲比较好掌握。

关于适配器模式,今天我们主要学习它的两种实现方式,类适配器和对象适配器,以及 5 种常见的应用场景。同时,我还会通过剖析 slf4j 日志框架,来给你展示这个模式在真实项目中的应用。除此之外,在文章的最后,我还对代理、桥接、装饰器、适配器,这 4 种代码结构非常相似的设计模式做简单的对比,对这几节内容做一个简单的总结。

阅读全文

跟Kafka学技术系列之时间轮

来源: PerfMa社区 - 跟Kafka学技术系列之时间轮

写在前面

kafka是一个分布式消息中间件,其高可用高吞吐的特点是大数据领域首选的消息中间件,Kafka是分布式消息队列的顺序读写文件分段组织串联起来思想的鼻祖,包括RocketMq这些消息队列都是借鉴了Kafka早期的架构和设计思路改造而来,所以在架构设计层面,Kafka有非常多值得借鉴的地方。本文是作者介绍Kafka优秀架构设计文章中的一篇,文中的代码和流程图均是base on 0.10.2.0版本。

阅读全文

门面模式:如何设计合理的接口粒度以兼顾接口的易用性和通用性

来源: 王争「设计模式」专栏

前面我们已经学习了代理模式、桥接模式、装饰器模式、适配器模式,这 4 种结构型设计模式。今天,我们再来学习一种新的结构型模式:门面模式。门面模式原理和实现都特别简单,应用场景也比较明确,主要在接口设计方面使用。

阅读全文