刚刚整理过了「Java后端开发学习路线」,很多小伙伴也说让推荐一些对应的书籍瞧瞧。
[]()
[]()
推荐是没问题,但是有些话还是想聊聊看。
首先毫无疑问的是,对于 「编程基础」 部分,有大量经典的书籍值得阅读,每一本都是大师们若干年经验的汇聚,所以学好编程基础,对于我们普通人来说,看书是一个直接有效的方式。很多经典书看一遍可能远远不够,正所谓 「初看懵、再看迷、三看发现有点小意思」 讲的就是这
Read More
moregeek program
《微服务架构设计模式》读书笔记 | 第1章 逃离单体地狱 #yyds干货盘点#-多极客编程
@[TOC](第1章 逃离单体地狱)
前言
这是一本关于微服务架构设计方面的书,这是本人阅读的学习笔记。首先对一些符号做些说明:
()为补充,一般是书本里的内容;[]符号为笔者笔注;
1. 迈向单体地狱的漫长旅程
在书中,作者以Food to Go(下简称FTGO)业务分析单体应用程序的优缺点。
1.1 FTGO应用程序单体架构
1.2 单体架构的好处
应用开发简单;
易对应用程序进行大规模
Read More
Read More
实战设计模式之启动流程优化-多极客编程
背景介绍系统启动阶段需要完成一些准备工作,最初的设计是通过Spring Application Runner来实现,实现思路如下图所示:用业务语言描述就是:1, 首先进行启动参数准备;2, 然后判断是否需要注册主站,如果需要则注册;3, 接下来判断是否需要进行数据同步,如果需要则同步数据;4, 等待数据同步完成,系统准备完成。这种设计可以从某种程度上理解为责任链模式,四个Runner组成了一个责任
Read More
Read More
设计模式【4】-- 建造者模式详解-多极客编程
开局一张图,剩下全靠写... 引言设计模式集合:http://aphysia.cn/categories/designpattern 如果你用过 Mybatis ,相信你对以下代码的写法并不陌生,先创建一个builder对象,然后再调用.build()函数: InputStream is = Resources.getResourceAsStream("myba
Read More
Read More
花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘-多极客编程
本文所有内容均节选自《设计模式就该这样学》
序言
Design Patterns: Elements of Reusable Object-Oriented Software(以下简称《设计模式》),一书由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著(Addison-Wesley,1995)。这四位作者常被称为“四人组(Gang
Read More
Read More
花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘-多极客编程
本文所有内容均节选自《设计模式就该这样学》
序言
Design Patterns: Elements of Reusable Object-Oriented Software(以下简称《设计模式》),一书由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著(Addison-Wesley,1995)。这四位作者常被称为“四人组(Gang
Read More
Read More
对象池模式(Object Pool Pattern)-多极客编程
本文节选自《设计模式就该这样学》
1 对象池模式的定义
对象池模式(Object Pool Pattern),是创建型设计模式的一种,将对象预先创建并初始化后放入对象池中,对象提供者就能利用已有的对象来处理请求,减少频繁创建对象所占用的内存空间和初始化时间。一个对象池包含一组已经初始化并且可以使用的对象,可以在有需求时创建和销毁对象。对象池的用户可以从池子中取得对象,对其进行操作处理,并在不需
Read More
Read More
微信和QQ这么多群,该如何管理好友关系?-多极客编程
本文节选自《设计模式就该这样学》
1 中介者模式的应用场景
在现实生活中,中介者的存在是不可缺少的,如果没有了中介者,我们就不能与远方的朋友进行交流。各个同事对象将会相互进行引用,如果每个对象都与多个对象进行交互,则会形成如下图所示的网状结构。
从上图可以看到,每个对象之间都过度耦合,这样既不利于信息的复用也不利于扩展。如果引入中介者模式,则对象之间的关系将变成星形结构,如下图所示。
从上
Read More
Read More
100行代码,轻松搞定文本编辑器中草稿箱-多极客编程
本文节选自《设计模式就该这样学》
1 使用备忘录模式实现草稿箱功能
大家都用过网页中的富文本编辑器,编辑器通常都会附带草稿箱、撤销等操作。下面用一段代码来实现一个这样的功能。假设,我们在GPer社区中发布一篇文章,文章编辑的过程需要花很长时间,中间也会不停地撤销、修改,甚至可能要花好几天才能写出一篇精品文章,因此可能会将已经编辑好的内容实时保存到草稿箱。首先创建发起人角色编辑器Editor类。
Read More
Read More
使用命令模式重构播放器控制条-多极客编程
本文节选自《设计模式就该这样学》
1 命令模式的UML类图
命令模式的UML类图如下图所示。
2 使用命令模式重构播放器控制条
假如我们开发一个播放器,播放器有播放功能、拖动进度条功能、停止播放功能、暂停功能,我们在操作播放器的时候并不是直接调用播放器的方法,而是通过一个控制条去传达指令给播放器内核,具体传达什么指令,会被封装为一个个按钮。那么每个按钮就相当于对一条命令的封装。用控制条实现了
Read More
Read More
中介模式C++实现-多极客编程
中介模式中介模式是对委托的复杂运用,比如说两个类中,类A中含类B的对象指针作为数据成员,类B中含类A的对象指针作为数据成员。在下面的例子中,中介含有租房者和房东的对象指针,租房者和房东也含有中介的对象指针。完成业务,租房者可以运用其包含的中介对象指针发送给中介包含的房东类的对象的函数成员。房东发送给租房者也一样,具体见代码。
Exe : Mediator.o
g++ -o Exe Medi
Read More
Read More
这个无敌设计,可以解析并运算任意数学表达式-多极客编程
本文节选自《设计模式就该这样学》
1 使用解释器模式解析数学表达式
下面用解释器模式来实现一个数学表达式计算器,包含加、减、乘、除运算。首先定义抽象表达式角色IArithmeticInterpreter接口。
public interface IArithmeticInterpreter {
int interpret();
}
创建终结表达式角色Interpreter抽象类。
Read More
Read More
基于Guava API实现异步通知和事件回调-多极客编程
本文节选自《设计模式就该这样学》
1 基于Java API实现通知机制
当小伙伴们在社区提问时,如果有设置指定用户回答,则对应的用户就会收到邮件通知,这就是观察者模式的一种应用场景。有些小伙伴可能会想到MQ、异步队列等,其实JDK本身就提供这样的API。我们用代码来还原这样一个应用场景,首先创建GPer类。
/**
* JDK提供的一种观察者的实现方式,被观察者
*/
public cl
Read More
Read More
手写自定义迭代器,秒懂迭代器底层原理-多极客编程
本文节选自《设计模式就该这样学》
迭代器模式的UML类图如下图所示。
1 手写自定义的集合迭代器
总体来说,迭代器模式是非常简单的。还是以网络课程为例,我们创建一个课程集合,集合中的每一个元素都是课程对象,然后手写一个迭代器,将每一个课程对象的信息都读出来。首先创建集合元素课程Course类。
public class Course {
private String name;
Read More
Read More
意外发现,原来你不知道自己每天都在用门面模式-多极客编程
本文节选自《设计模式就该这样学》
1 使用门面模式整合已知API的功能
一般的电商平台都是整合众多的子系统聚合到一起形成一个大型的购物平台,一般情况下,有很多现成的功能都不是重新开发的,而是要去对接已有的各个子系统,这些子系统可能涉及积分系统、支付系统、物流系统的接口调用。如果所有的接口调用全部由前端发送网络请求去调用现有接口,一则会增加前端开发人员的难度,二则会增加一些网络请求,影响页面性
Read More
Read More
万字长文手写数据库连接池,让抽象工厂不再抽象-多极客编程
本文节选自《设计模式就该这样学》
1 关于产品等级结构和产品族
在讲解抽象工厂之前,我们要了解两个概念:产品等级结构和产品族,如下图所示。
上图中有正方形、圆形和菱形3种图形,相同颜色、相同深浅的代表同一个产品族,相同形状的代表同一个产品等级结构。同样可以从生活中来举例,比如,美的电器生产多种家用电器,那么上图中,颜色最深的正方形就代表美的洗衣机,颜色最深的圆形代表美的空调,颜色最深的菱形
Read More
Read More
设计模式【3.3】-- CGLIB动态代理源码解读-多极客编程
cglib 动态代理
cglib介绍
CGLIB 是一个开源项目,一个强大高性能高质量的代码生成库,可以在运行期拓展 Java 类,实现 Java 接口等等。底层是使用一个小而快的字节码处理框架 ASM,从而转换字节码和生成新的类。
理论上我们也可以直接用 ASM 来直接生成代码,但是要求我们对 JVM 内部,class 文件格式,以及字节码的指
Read More
Read More
全面通透深入剖析工厂方法模式-多极客编程
本文节选自《设计模式就该这样学》
1 工厂方法模式的应用场景
工厂方法模式主要适用于以下应用场景。
(1)创建对象需要大量重复的代码。
(2)客户端(应用层)不依赖产品类实例如何被创建、实现等细节。
(3)一个类通过其子类来指定创建哪个对象。
2 工厂方法模式的UML类图
工厂方法模式的UML类图如下图所示。
由上图可以看到,抽象工厂模式主要包含4个角色。
(1)抽象工厂(Factory
Read More
Read More
孙悟空装饰七十二变篇--装饰器模式C++实现-多极客编程
学了C++基本的语法都知道继承可以让子类拥有更多的功能,除了继承还有组合,委托,也能让一个类的功能增加。设计模式,这个设计是设计继承,组合,委托,之间相互叠加的方式,让其符合业务需求。
装饰器模式是多态和托管的运用,它在一个类A中为类B修改或增加一些属性,增加或修改后,因为类A与类B同为一个基类的派生类(也可能派生多次),因此依然可以用基类的对象指针指向类B的实例。因此整体看来,好像为类A的实例装
Read More
Read More
彻底说透简单工厂那些你没有关注过的细节-多极客编程
本文节选自《设计模式就该这样学》
1 使用简单工厂模式封装产品创建细节
接下来看代码,还是以创建一门网络课程为例。假设有Java架构、大数据、人工智能等课程,已经形成了一个生态。我们可以定义一个课程标准ICourse接口。
public interface ICourse {
/** 录制视频 */
public void record();
}
创建一个Java课程的实
Read More
Read More