8 RunAlgorithm

尚未进行身份认证

我要认证

RunAlgorithm.com

等级
TA的排名 6w+

【架构笔记】设计模式思维导图

持续更新内容中

2020-04-08 10:17:43

IPFS 笔记 - 基于 Docker 自动化搭建私链的 Shell 脚本

文章目录初始化 swarm.key启动 IPFS 容器清理公链引导节点完整脚本运行情况验证初始化 swarm.key使用 github.com/Kubuxu/go-ipfs-swarm-key-gen 来生成密钥。使用 go get 的方式下载,如果没有配置自己的 $GOPATH,默认下载在 ~/go 目录下。适应 go get 的方式:function initSwarmKey { ...

2020-01-13 15:55:48

IPFS 笔记 - 使用 Docker 搭建 IPFS 私链

文章目录准备环境swarm.key挂载目录拉取镜像启动容器创建节点查看节点准备环境安装好 go 环境安装好 dockerswarm.keyswarm.key 用来做私链认证的密钥,最终要放在 /ipfs/data 目录下go get github.com/Kubuxu/go-ipfs-swarm-key-gencd $GOPATHgo build./ipfs-swarm-...

2020-01-13 14:56:33

MySQL 笔记:联表查询算法 NLJ

文章目录SNLJINLJBNLJ比较MySQL 使用 NLJ(Nested-Loop Join) 算法实现 join 联表查询。NLJ 一共有三种实现 SNLJ、INLJ 和 BNLJ。后面两种是对 SNLJ 的优化。SNLJSNLJ,Simple Nested-Loop Join,简单嵌套循环。。假设 A 是驱动表,B 是被驱动表。扫描 A 表,记录一行一行取出比较,每一次比较都会...

2019-10-24 13:13:37

MySQL 笔记:如何实现数据库乐观锁?

使用 MySQL 5.7 做测试,数据库引擎为 InnoDB,数据库隔离级别为可重复读(REPEATABLE-READ),读读共享,读写互斥。在这个隔离级别下,在多事务并发的情况下,还是会出现数据更新的冲突问题。先分析一下更新冲突的问题是如何产生的。假设我们有一张销量表 goods_sale ,表结构如下:字段数据类型说明goods_sale_idvarchar(3...

2019-10-19 09:24:36

JVM 深入浅出 :一文看懂 JVM 类加载机制

类的生命周期一共分为七个阶段:类加载过程为加载、验证、准备、解析和初始化五个部分,其中验证、准备和解析三个部分又被称为 连接(Linking)。1. 加载把编译后的 class 文件载入内存,创建一个 java.lang.Class 对象。经常使用 Java 反射会对这个 java.lang.Class 对象非常熟悉,因为可以从该对象中获取到类的很多信息,比如类的字段、方法等。这个 ja...

2019-10-18 00:23:05

JVM 深入浅出 :一文看懂 JVM 内存结构

文章目录1. 概述2. 程序计数器3. Java 虚拟机栈3.1. 栈深度3.2. 栈帧3.2.1. 局部变量表3.2.2. 操作数栈3.2.3. 动态链接3.2.4. 方法正常结束3.2.5. 方法异常结束4. 堆5. 方法区6. 运行时常量池7. 本地方法栈8. 参考资料1. 概述JVM 把内存进行了划分,不同的内存区域有不同的功能。有的内存区域是线程私有的,比如 Java 虚拟机栈、本地...

2019-10-14 09:50:56

Java 进阶 :ThreadPoolExecutor 源码分析

文章目录1. 概述2. 继承关系2.1. Executor2.2. ExecutorService2.3. AbstractExecutorService3. 生命周期4. 如何使用4.1. 核心配置4.2. 常用线程池4.2.1. 固定线程数线程池4.2.2. 单一线程数线程池4.2.3. 缓存线程数线程池4.2.4. 定时任务线程池5. 源码解析5.1. 核心组件5.1.1. Thread5....

2019-06-10 14:03:46

从源码分析 Spring 的 Bean 加载过程

文章目录1. 概述2. 总体流程3. 细节分析3.1. 转化 BeanName3.2. 合并 RootBeanDefinition3.3. 处理循环依赖3.3.1. 原型模式的循环依赖3.3.2. 单例模式的构造循环依赖3.3.3. 单例模式的设值循环依赖3.4. 创建实例3.5. 注入属性3.6. 初始化3.6.1. 触发 Aware3.6.2. 触发 BeanPostProcessor3.7....

2019-06-02 00:37:19

设计模式全面分析

文章目录1. 什么是设计模式?1.1. 概念1.2. 三大方向1.3. 平台无关性2. 为什么要用设计模式?2.1. 面向对象基本原则2.2. 要达到的效果3. 如何使用设计模式?3.1. 抽象公共,封装变化3.2. 依赖转移3.3. 功能分离3.4. 迭代细化3.5. 思考变化3.6. 灵活运用4. 有哪些设计模式?4.1. 创建型模式4.2. 结构型模式4.3. 行为型模式1. 什么是设计模...

2019-05-20 10:41:33

一文读懂面向对象基本原则

文章目录1. 概述2. 基本原则2.1. 单一职责原则2.2. 开闭原则2.3. 里氏替换原则2.4. 接口隔离原则2.5. 依赖倒置原则2.6. 迪米特法则1. 概述设计模式与语言无关,用来解决一些反复出现的问题的解决方案。2. 基本原则遵循面向对象设计的基本原则,有几个目标是我们想要达到的:可维护性。可扩展性。可复用性。可维护性好的代码,就是需求改动对现有的代码改动小、副作...

2019-05-20 10:32:16

解释器模式——简单语言的实现

文章目录1. 定义2. 设计3. 应用3.1. JDK 的 Pattern4. 特点4.1. 优点4.2. 缺点Demo 地址:https://github.com/ooblee/HelloDesignPattern1. 定义解释器模式(Interpreter Pattern):定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模...

2019-05-19 07:20:07

访问者模式——对数据不同操作的解耦

文章目录1. 定义2. 设计2.1. 双重分派机制3. 应用3.1. Spring:BeanDefinitionVisitor4. 特点4.1. 优势4.2. 缺点Demo 地址:https://github.com/ooblee/HelloDesignPattern1. 定义访问者模式(Visitor Pattern):提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元...

2019-05-19 07:20:01

备忘录模式——状态的记录与复用

文章目录1. 定义2. 设计2.1. 多次撤销2.2. 备忘录的封装3. 应用4. 特点4.1. 优点4.2. 缺点Demo 地址:https://github.com/ooblee/HelloDesignPattern1. 定义备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它...

2019-05-19 07:19:55

中介者模式——网状依赖的解耦

文章目录1. 定义2. 设计3. 应用4. 特点4.1. 优势4.2. 缺点Demo 地址:https://github.com/ooblee/HelloDesignPattern1. 定义中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停...

2019-05-19 07:19:50

迭代模式——聚合对象的迭代访问

文章目录1. 定义2. 设计3. 应用3.1. java.util.Iterator4. 特点4.1. 优势4.2. 缺点Demo 地址:https://github.com/ooblee/HelloDesignPattern1. 定义迭代器模式(Iterator Pattern):提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行...

2019-05-19 07:19:43

命令模式——命令发起者和接收者的解耦

文章目录1. 定义2. 设计2.1. 命令工厂2.2. 命令队列2.3. 宏命令3. 应用4. 特点4.1. 优点4.2. 缺点Demo 地址:https://github.com/ooblee/HelloDesignPattern1. 定义命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤...

2019-05-19 07:19:36

模板方法模式——通用流程的封装

文章目录1. 定义2. 设计3. 应用4. 特点4.1. 优点4.2. 缺点4.3. 对比策略模式Demo 地址:https://github.com/ooblee/HelloDesignPattern1. 定义模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。抽象通用的部分,把变化的开放出来。通过...

2019-05-19 07:19:30

责任链模式——请求的分发传递和处理

文章目录1. 定义2. 设计2.1. 链表实现2.2. 非链表实现2.3. 纯责任链和不纯责任链3. 应用3.1. Servlet 的 Filter 链3.2. OkHttp 的 Interceptor 链3.3. Android 事件分发机制4. 特点4.1. 优势4.2. 缺点Demo 地址:https://github.com/ooblee/HelloDesignPattern1. 定义...

2019-05-19 07:19:24

观察者模式——对象一对多通信的实现

文章目录1. 定义2. 设计3. 应用3.1. 事件监听3.2. 事件总线3.3. 消息队列3.4. Reactive4. 特点4.1. 优势4.2. 缺点4.3. 注意事项Demo 地址:https://github.com/ooblee/HelloDesignPattern1. 定义观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生...

2019-05-19 07:19:16

查看更多

勋章 我的勋章
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。