0%

单例模式简介

单例设计模式,就是采取一定的方法保证整个的软件系统中,对某个类只能存在一个对象实例,并且类只提供一个取得对象实例的方法(静态方法)。

单例模式有八种方式:

  1. 饿汉式(静态常量)
  2. 饿汉式(静态代码块)
  3. 懒汉式(线程不安全)
  4. 懒汉式(线程安全,同步方法)
  5. 懒汉式(线程安全,同步代码块)
  6. 双重检查
  7. 静态内部类
  8. 枚举
阅读全文 »

前言

我们要给别人讲解一个问题的时候,最直观的方法莫过于用图形的方式去讲解,而不是枯燥的文字。毕竟我们还是个孩子的时候,图画更能给我们带来触动,而文字我们因为一些认知的问题会导致一些理解能力上的偏差。设计模式里面的UML类图就是可以让你给别人讲解设计理念的时候,不用再是枯燥的代码和文字,而是直接给别人用类图的形式来表达的一种方式。

为了方便大家了解,我会给出对应的类图,以及对应的代码实现,让大家有个初步的概念,方便大家来学习设计模式这枯燥的东西。

我们常见的几种关系:泛化(Generalization)、实现(Realization)、关联(Association)、聚合(Aggregation)、组合(Composition),依赖(Dependency)。

阅读全文 »

前言

设计模式作为一个程序员,相信大家肯定不会陌生,它是一些成熟的且通用的程序设计解决方案,针对这些肯定会存在一些理论基础,来为这些这些模式提供理论依据,这里我们就要先搞明白这些理论到底是什么,这样我们对设计模式有事半功倍的效果。

设计模式的基本原则:

  1. 单一职责原则
  2. 开闭原则
  3. 里式替换原则
  4. 依赖倒转原则
  5. 接口隔离原则
  6. 合成复用原则
  7. 迪米特法则
阅读全文 »

前言

相比 Memcache 而言,Redis 可以把数据持久化到我们的磁盘上。来保证缓存的数据不会应为断电而丢失。

简介

数据存放于:

  • 内存:高效、断电(关机)内存数据会丢失
  • 硬盘:读写速度慢于内存,断电数据不会丢失

Redis 持久化存储支持两种方式:RDB 和 AOF。

  • RDB 一定时间存储文件
  • AOF 默认每秒存储历史命令

Redis 支持持久化的内存数据库,也就是Redis需要经营将内存中的数据同步到硬盘来保证持久化。

阅读全文 »

前言

和MySQL一样,我们的Redis也支持事务操作,事务操作可以执行多个命令(按顺序串行化执行,执行中不会被其他命令插入)。

Redis事务

Redis事务可以一次执行多个命令(允许在一次单独的步骤中执行一组命令),并且带有以下两个重要保证:

  1. Redis 会将一个事务中的所有命令序列化,然后按排序执行
  2. 执行中不会被其他命令插入,不许出现加塞现象
阅读全文 »

前言

听说过二八定律的应该知道,我们百分之二十的东西是支撑着百分之八十的运作的。所以我们了解和学习一个东西一开始不需要事无巨细的每个都精通,可以优先了解 20%常用的,然后再去根据具体的需要了解剩下的 80%。毕竟时间有限,那么多业务要写。

阅读全文 »

前言

配置服务搭建环境也是我们开发人员的一种工作。好在Redis的配置不难,可以说简单的很。我们也需要看看了解一下每个配置的作用就能轻松搞定。

阅读全文 »

前言

前面我们已经演示了一对一,一对多,多对多的关系这三种是日常工作中很常见的关联关系,我们会介绍更加复杂的关联关系,分别是远层一对多和多态关联。

远层一对多关联

远层一对多在一对多关联的基础上加上了一个修饰词【远层】,意味着这个一对多关系不是直接关联,而是【远层】关联,远层关联需要借助中间表,前面我们讨论多对多关联也是借助中间表,但是远层一对多与其区别在于还是一对多的关联。

理论和实例结合才容易理解。如果博客系统是针对全球市场的话,可能针对不同的国家推出不同的用户系统和功能,然后中国用户过来就只展示中国用户发布的文章,日本用户过来就只展示日本用户发表的文章,这里就涉及了三张表,存储国家的 countries 表,存储用户的 users 表以及存储文章的 posts 表。

用户与文章是一对多的关联关系,国家与用户之间是一对多的关联(一个用户只能有一个国际),那么通过用户这张中间表,国家和文章之间也建立起来一对多的关联,只是这个关联不是直接的关联,而是【远层】的关联。

针对这个情况,我们说国家和文章之间是远层的一对多关联。

阅读全文 »

前言

Laravel Eloquent 模型支持的关联关系包括以下其中:

  • 一对一
  • 一对多
  • 多对多
  • 远层一对多
  • 多态关联(一对一)
  • 多态关联(一对多)
  • 多态关联(多对多)

不着急,我们一个一个的看如何使用。

阅读全文 »

前言

我们在实际开发中是不仅仅针对一张表,而是两张或者多张表联动的操作,这里我们经常面对的关系就是一对一,一对多,多对一,多对多等等。

这里我们搭建环境,我们看看最常见的数据关系,学生和老师的关系

  • 对于老师来说,一个老师拥有多个学生
  • 对于学生而言,多个学生都有一个老师
1
create table teachers (
2
    `id` int(20) not null auto_increment,
3
    `name` varchar(64) not null,
4
    PRIMARY KEY (`id`)
5
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
6
7
insert into teachers (`name`) values ('燕子李三');
8
9
create table students (
10
    `id` int(20) not null auto_increment,
11
    `name` varchar(64) not null,
12
    `tid` int(20) not null,
13
    PRIMARY KEY (`id`)
14
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
15
16
insert into students (`name`, `tid`) values ('张三', 1), ('李四', 1), ('王五', 1), ('赵六', 1);

我们导入数据库,然后开始创建项目。

阅读全文 »