设计模式-0-概述
设计模式七大原则
目的
设计模式是为了让程序(软件),具有更好代码重用性、可读性、可扩展性、可靠性、使程序呈现高内聚、低耦合的特性
原则
单一职责原则
接口隔离原则
依赖倒转(倒置)原则
里氏替换原则
开闭原则
迪米特法则
合成复用原则
单一职责原则
基本介绍
对类来说应该只负责一项职责。如类 A 负责两个不同职责:职责 1,职责2。当职责1需求变更而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分解为 A1,A2
注意事项
降低类的复杂度,一个类只负责一项职责
提高类的可读性,可维护性
降低变更引起的风险
通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则
接口隔离原则
基本介绍
客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上
存在问题
类 A 通过接口 Interface1 依赖类 B,类 C 通过接口 Interface1 依赖类 D,如果接口Interface1 对于类A和类C来说不 ...
Redis-1-基础篇
初识 RedisNoSQLNoSql 可以翻译做 Not Only Sql(不仅仅是SQL),或者是 No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为 非关系型数据库。
结构化与非结构化
传统关系型数据库 是 结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等等信息,插入的数据必须遵守这些约束:
而 NoSql 则对数据库格式 没有严格约束,往往形式松散,自由。
可以是键值型:
可以是文档型:
可以是图格式:
关联和非关联
传统数据库的表与表之间往往存在关联,如外键。而非关系型数据库 不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合
123456789101112131415161718{ id: 1, name: "张三", orders: [ { id: 1, item: { id: 10, title: "荣耀6", price: 4999 ...
Linux QuickStart
Linux 目录结构Linux 中一切皆文件
Linux 目录结构
目录
含义
/bin
用来存二进制可执行文件,并且比较特殊的是/bin存放的是所有一般用户都能使用的可执行文件,如:cat、chmod、mv、mkdir、cd等常用指令
/sbin
存放一些只有root用户才有权限执行的可执行文件,如init,ip,mount等命令
/boot
主要存放开机时用到的引导文件,如linux内核文件和开机菜单与开机所有需要的配置文件
/dev
任何设备都以文件的形式存放再这个目录中。例如硬盘、键盘、鼠标、光驱等各种设备文件。只要通过访问该目录的某个文件就相当于访问了对应的设备
/etc
配置文件、启动脚本等(etc)包含所有程序所需的配置文件以及系统的配置文件,如用户的账号密码文件,各个服务的起始文件等。也包含了用于启动/停止单个程序的启动和关闭shell脚本。一般来说,该目录下的文件属性是可以让用户查阅,但只有root管理员有权利修改
/home
系统默认的用户的家目录,每当新建一个用户系统都会在这个目录下创建以该用户名为名称的目录作为该用户的家 ...
MySQL基础篇-13-触发器
触发器概述 触发器是 由事件来触发某个操作,这些事件包括 INSERT 、 UPDATE 、 DELETE 事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时就相当于事件发生了,就会自动激发触发器执行相应的操作。
当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时可以使用触发器来实现。
创建触发器1234CREATE TRIGGER 触发器名称{BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名FOR EACH ROW触发器执行的语句块;
表名:表示触发器监控的对象
BEFORE|AFTER:表示触发的时间。BEFORE 表示在事件之前触发;AFTER 表示在事件之后触发
INSERT|UPDATE|DELETE :表示触发的事件
INSERT 表示插入记录时触发
UPDATE 表示更新记录时触发
ELETE 表示删除记录时触发
案例
1234567891011121314151617181920212223242526 ...
MySQL基础篇-12-变量、流程控制和游标
变量 在 MySQL 数据库中,变量分为系统变量以及用户自定义变量 。
系统变量变量由系统定义,不是用户定义,属于服务器层面。启动 MySQL 服务,生成 MySQL 服务实例期间, MySQL 将为 MySQL 服务器内存中的系统变量赋值,这些系统变量定义了当前 MySQL 服务实例的属性、特征。
系统变量分类
系统变量分为全局系统变量(需要添加 global 关键字)以及会话系统变量(需要添加 session 关键字),有时也把全局系统变量简称为全局变量,有时也把会话系统变量称为 local 变量。如果不写,默认会话级别。静态变量(在 MySQL 服务实例运行期间它们的值不能使用 set 动态修改)属于特殊的全局系统变量。
每一个 MySQL 客户机成功连接 MySQL 服务器后,都会产生与之对应的会话。会话期间,MySQL 服务实例会在 MySQL 服务器内存中生成与该会话对应的会话系统变量,这些会话系统变量的初始值是全局系统变量值的复制。如下图:
全局系统变量针对于所有会话(连接)有效,但不能跨重启
会话 1 对某个全局系统变量值的修改会导致会话 2 中同 ...
MySQL基础篇-11-存储过程和存储函数
存储过程概述
概念
存储过程就是一组经过预先编译的 SQL 语句的封装。 存储过程预先存储在 MySQL 服务器上,需要执行时客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列 SQL 语句全部执行。
优点
简化操作,提高 SQL 语句的重用性
减少操作过程中的失误,提高效率
减少网络传输量(客户端不需要把所有的 SQL 语句通过网络发给服务器)
减少了 SQL 语句暴露的风险,也提高了数据查询的安全性
与函数相比
一旦存储过程被创建出来,使用它就像使用函数一样简单,我们直接通过调用存储过程名即可。相较于函数,存储过程是没有返回值的。
分类
分类
说明
没有参数
无参数无返回
仅仅带 IN 类型
有参数无返回
仅仅带 OUT 类型
无参数有返 回
既带 IN 又带 OUT
有参数有返回
带 INOUT
有参数有返回
创建存储过程
语法
12345CREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名 参数类型,...)[characteristics ...]B ...