07 2017 档案
摘要:一. 章前小节 在前面的两个章节,我们运用依赖倒置原则,分别对 System.Web.Caching.Cache和 System.Runtime.Cacheing两类缓存进行了封装,并形成了ICache接口、RuntimeCacheHelp类和MemoryCacheHelp类。到这里,相当于万里长征
阅读全文
摘要:一. 轻车熟路 有了上一个章节对 System.Web.Caching.Cache 的探究,这里我们按照同样的思路对 MemoryCache 进行探究,相信必定会得心应手。 1. 程序集准备 a. 需要给项目添加 System.Runtime.Cacheing程序集。 b. 需要给使用的地方添加两个
阅读全文
摘要:一. 揭开迷雾 1. 程序集准备 a. 需要给项目添加 System.Web 程序集。 b. 需要给使用的地方添加两个引用。 2. 程序集探究 在对应的类中输入关键字 Cache,选中点击F12,查看Cache程序集,如下图所示: 我们一起来分析从上往下来分析一下该程序集。 (1). 两个字段,根据
阅读全文
摘要:一. 前言 说起缓存,业内有句话,架构师有一半以上的时间是在和缓存打交道。那么缓存到底是什么呢?又有什么作用呢?该系列将揭开缓存神秘的面纱,从零开始,由浅入深,细究各类缓存。 缓存我个人理解,是利用空间换时间最好的体现,将一些耗时操作(复杂的数据库查询、文件内容的读取)、不经常改变的数据(比如商城的
阅读全文
摘要:一. 安装流程 1. 软件和环境 (1). 软件 : SQL Server 2008 R2 企业版 软件下载地址:https://msdn.itellyou.cn/ (2). 环境要求: .Net FrameWork 3.5 以上 (windows 7 和 windows Server 2008 及
阅读全文
摘要:1. 打开服务器管理器,点击【添加角色和功能选项】。 2. 进入“添加角色和功能向导”页面,点击下一步。 3. 安装类型选择【基于角色或基于功能的安装】,点击下一步。 4. 进入服务器选择页面,选择【从服务器池中选择服务器】,点击下一步。 5. 进入服务器角色界面后,找到WEB服务器(IIS),然后
阅读全文
摘要:一. MySQL的备份和恢复 1. 命令行导入导出SQL 通过管理员的身份cmd命令进入dos窗口。 (1). 导出命令: mysqldump -u账户 -p密码 数据库名称>脚本文件存储地址 。 eg:mysqldump -uroot -p123456 ypftest> C:/XXXX.sql (
阅读全文
摘要:一. 插入 1. 全字段插入 (1). 标准格式 insert into tableName (c1,c2,c3 ...) values (x1,x2,x3,...) 可以省略: insert into tableName values (x1,x2,x3,...) (2). 插入多条数据 inse
阅读全文
摘要:一. 综述 查询操作主要从两个方面来说:单表查询和多表查询。 多表查询包括:笛卡尔积、外键约束、内连接查询、外链接查询、自连接查询。 二 . 案例设计 1. 设计产品表(product)。包括:主键id、产品名称(productName)、分类编号(dir_id)、零售价(salePrice)、供应
阅读全文
摘要:一. 前言 1. 简介 就查询而言,可以简单的分为:单表查询 和 多表查询。 单表查询包括:简单查询、过滤查询、结果排序、分页查询、聚集函数。 多表查询包括:笛卡尔积、外键约束、内连接查询、外链接查询、自连接查询。 2. 数据准备 (1). 用到的表: 产品表(product)。包括:主键id、产品
阅读全文
摘要:一. MySQL操作 1. 数据库相关操作 (1). 查看有哪些数据库: show databases; (2). 使用指定数据库: use 数据库名称; (3). 查看指定数据库中有哪些表: show tables; (4). 创建指定名称的数据库: create database 数据库名称;
阅读全文
摘要:1. MySQL中的数据库分类 2. MySQL中的存储引擎 MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。 MyI
阅读全文
摘要:1. 数据库操作流程模式 (1). 建立连接(认证身份) (2). 客户端向服务器端发送SQL命令 (3). 服务器端执行SQL,并返回执行的结果 (4). 客户端接收结果(并显示) (5). 断开连接 2. 启动和链接MySQL (1). 启动MySQL服务的两种方式: 方式一:以管理员的身份进入
阅读全文
摘要:一. Linux 和 docker安装 1. Centos8.0 下安装MySQL5.7 (rpm包) 详见: https://www.cnblogs.com/yaopengfei/p/13766324.html 2. Centos Stream 9 下安装MySQL8.4 (压缩包形式) 详见:h
阅读全文
摘要:一. 简介 1. 数据库基本概念 (1). 数据库(DataBase:DB):数据库是是按照数据结构来组织、存储和管理数据的仓库。 >存储和管理数据的仓库. (2). 数据库管理系统(Database Management System:DBMS):是专门用于管理数据库的计算机系统软件。数据库管理系
阅读全文
摘要:1. 单例模式的作用 保证多个进程内,(即使多线程访问)该对象的实例只有一个,而且只会被创建一次。 2. 单例模式什么时候用? 该对象的构造函数非常耗时,实例化一次该对象,需要非常长的时间,这样如果每次都去创建,会消耗很多资源。 3. 单例模式的代价 private static Singleton
阅读全文
摘要:1. 简介 与工厂方法的区别: 工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码,而工厂方法模式每个具体工厂类只完成单个实例的创建,所以它具有很好的可扩展性。 但是在现实生活中,一个工厂只创建单个产品这样的例子很少,因为现在的工厂都多元化了
阅读全文
摘要:1. 简介 工厂方法:符合依赖倒置原则、单一职责、开闭原则。 与简单工厂的区别:简单工厂是在一个工厂里生成多个不同的类,而工厂方法是一个对象对应一个生成工厂,这些工厂都实现了一个共同的接口IFactory,很好的符合了依赖倒置原则、单一职责、开闭原则, 每个工厂只负责创建对象。 2. 核心代码 1
阅读全文
摘要:1. 简介 严格意义上的说,简单工厂不属于23中设计模式,这里抛砖引玉,引出后面的工厂方法和抽象工厂两种设计模式。 简答工厂违背:单一职责原则、开闭原则、迪米特法则。 2. 核心代码 1 /// <summary> 2 /// 简单工厂类 3 /// </summary> 4 public clas
阅读全文
摘要:1. 背景 在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。 2. 定义 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 3. 解决方案 当软件需要变化时,尽量通过扩
阅读全文
摘要:1. 背景 类与类之间的关系越密切,耦合度越大,当一个类发生变化时,对另一个类的影响也越大。 2. 定义 一个类应该对其它类保持最少的了解。 3. 解决方法 尽量降低类与类之间的耦合。 4. 迪米特法则的核心 低耦合 5.迪米特法则深究 只与直接的朋友通信。 每个对象都会与其他对象有耦合关系,只要两
阅读全文
摘要:1. 背景 类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类B和类D来说不是最小接口,则类B和类D不得不去实现它们不需要的方法。 2. 定义 一个类对另一个类的依赖应该建立在最小的接口上,不应该依赖他不需要的接口。 3. 解决方案 将臃肿的接口I拆分为独立的几个接口,类A和类C分别于
阅读全文
摘要:1. 背景 类A是高层代码,类A直接依赖B,如果要将类A改为还要依赖C,则必须修改类A的代码来实现。在实际场景中,类A是高层,负责业务逻辑,类B和类C是低层模块,负责基本的原子操作,假如修改A,会给程序带来不必要的风险。 2. 定义 高层模块不直接依赖低层模块,二者都应该依赖其抽象(抽象类或接口),
阅读全文
摘要:1. 背景 有一个功能p1,由类A完成,现在需要将功能p1进行扩展,扩展后的功能为p3,p3由原功能p1和新功能p2组成,而新功能p3和p2均由类A的子类B来完成,子类B在完成新功能p2的同时,可能会导致原有的功能p1故障。 2. 定义 所有引用基类的地方能透明的使用其子类对象进行替代。 3. 对应
阅读全文
摘要:1. 背景 类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 2. 定义 不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 3. 宏观上 类层次上存在单一职责原则,同样方法层次上也存在单一职责
阅读全文