摘要: 1. MySQL中的数据库分类 2. MySQL中的存储引擎 MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。 MyI 阅读全文
posted @ 2017-07-11 20:33 Yaopengfei 阅读(461) 评论(0) 推荐(0)
摘要: 一. Linux 和 docker安装 1. Centos8.0 下安装MySQL5.7 (rpm包) 详见: https://www.cnblogs.com/yaopengfei/p/13766324.html 2. Centos Stream 9 下安装MySQL8.4 (压缩包形式) 详见:h 阅读全文
posted @ 2017-07-10 21:32 Yaopengfei 阅读(704) 评论(1) 推荐(1)
摘要: 1. 单例模式的作用 保证多个进程内,(即使多线程访问)该对象的实例只有一个,而且只会被创建一次。 2. 单例模式什么时候用? 该对象的构造函数非常耗时,实例化一次该对象,需要非常长的时间,这样如果每次都去创建,会消耗很多资源。 3. 单例模式的代价 private static Singleton 阅读全文
posted @ 2017-07-08 22:57 Yaopengfei 阅读(438) 评论(0) 推荐(0)
摘要: 1. 简介 严格意义上的说,简单工厂不属于23中设计模式,这里抛砖引玉,引出后面的工厂方法和抽象工厂两种设计模式。 简答工厂违背:单一职责原则、开闭原则、迪米特法则。 2. 核心代码 1 /// <summary> 2 /// 简单工厂类 3 /// </summary> 4 public clas 阅读全文
posted @ 2017-07-08 21:41 Yaopengfei 阅读(449) 评论(0) 推荐(0)
摘要: 1. 背景 在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。 2. 定义 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 3. 解决方案 当软件需要变化时,尽量通过扩 阅读全文
posted @ 2017-07-04 19:42 Yaopengfei 阅读(310) 评论(0) 推荐(0)
摘要: 1. 背景 类与类之间的关系越密切,耦合度越大,当一个类发生变化时,对另一个类的影响也越大。 2. 定义 一个类应该对其它类保持最少的了解。 3. 解决方法 尽量降低类与类之间的耦合。 4. 迪米特法则的核心 低耦合 5.迪米特法则深究 只与直接的朋友通信。 每个对象都会与其他对象有耦合关系,只要两 阅读全文
posted @ 2017-07-04 19:41 Yaopengfei 阅读(878) 评论(0) 推荐(0)
摘要: 1. 背景 类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类B和类D来说不是最小接口,则类B和类D不得不去实现它们不需要的方法。 2. 定义 一个类对另一个类的依赖应该建立在最小的接口上,不应该依赖他不需要的接口。 3. 解决方案 将臃肿的接口I拆分为独立的几个接口,类A和类C分别于 阅读全文
posted @ 2017-07-04 19:40 Yaopengfei 阅读(424) 评论(0) 推荐(0)
摘要: 1. 背景 类A是高层代码,类A直接依赖B,如果要将类A改为还要依赖C,则必须修改类A的代码来实现。在实际场景中,类A是高层,负责业务逻辑,类B和类C是低层模块,负责基本的原子操作,假如修改A,会给程序带来不必要的风险。 2. 定义 高层模块不直接依赖低层模块,二者都应该依赖其抽象(抽象类或接口), 阅读全文
posted @ 2017-07-01 20:54 Yaopengfei 阅读(708) 评论(0) 推荐(0)
摘要: 1. 背景 有一个功能p1,由类A完成,现在需要将功能p1进行扩展,扩展后的功能为p3,p3由原功能p1和新功能p2组成,而新功能p3和p2均由类A的子类B来完成,子类B在完成新功能p2的同时,可能会导致原有的功能p1故障。 2. 定义 所有引用基类的地方能透明的使用其子类对象进行替代。 3. 对应 阅读全文
posted @ 2017-07-01 09:17 Yaopengfei 阅读(676) 评论(0) 推荐(0)
摘要: 1. 背景 类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 2. 定义 不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 3. 宏观上 类层次上存在单一职责原则,同样方法层次上也存在单一职责 阅读全文
posted @ 2017-07-01 09:16 Yaopengfei 阅读(930) 评论(1) 推荐(0)
摘要: 一. 基本概念 1. 什么是特性? MSDN官方给出的定义时:公共语言运行时允许添加类似关键字的描述声明,叫做特性,它对程序中的元素进行标注,如类型、字段、方法和属性等。Attribute和Microsoft .Net Framework文件的元数据(metadata)保存在一起,可以用来向运行时描 阅读全文
posted @ 2017-06-28 08:37 Yaopengfei 阅读(1768) 评论(0) 推荐(0)
摘要: 1. 线程的异常处理 我们经常会遇到一个场景,开启了多个线程,其中一个线程报错,导致整个程序崩溃。这并不是我们想要的,我需要的结果是,其中一个线程报错,默默的记录下,其它线程正常进行,保证程序整体可以走下来。 解决方案:给函数体加try-catch,只让报错线程异常,其它线程可以正常进行。 运行结果 阅读全文
posted @ 2017-06-25 11:23 Yaopengfei 阅读(419) 评论(8) 推荐(0)
摘要: 1. 方法名前只有async,但是方法中Task实例前没有await关键字,该方法和普通方法没有什么区别,但是会报一个警告。 结果: 2. 用法:方法名前加async,如果方法无返回值,用async Task 代替async void ,await放到Task实例前面,表示执行完Task线程后,方可 阅读全文
posted @ 2017-06-23 20:02 Yaopengfei 阅读(435) 评论(0) 推荐(0)
摘要: 一. Task开启多线程的三种形式 1. 利用TaskFactory下的StartNew方法,向StartNew传递无参数的委托,或者是Action<object>委托。 2. 利用Task.Run()开启多线程,能向其中传递无参数的委托,有参数的可以使用 Task.Run(()=>{ TestTh 阅读全文
posted @ 2017-06-23 20:00 Yaopengfei 阅读(656) 评论(0) 推荐(0)
摘要: 一. Thread多线程 1. 两种使用方式 通过F12查看Thread后,发现有两类构造函数,ParameterizedThreadStart和ThreadStart,其中 ThreadStart:无参无返回值的委托 ParameterizedThreadStart:无返回值,但是有一个objec 阅读全文
posted @ 2017-06-23 19:59 Yaopengfei 阅读(385) 评论(0) 推荐(0)
摘要: 一. BeginInvoke最后两个参数的含义 倒数第二个参数:指该线程执行完毕后的回调函数;倒数第一个参数:可以向回调函数中传递参数。 下面以一段代码说明: 结果: 二. 异步调用的三种书写 在上述代码中,我们发现BeginInvoke中,除了我们介绍的最后两个参数外,还有一个参数,传递进去了na 阅读全文
posted @ 2017-06-20 19:24 Yaopengfei 阅读(579) 评论(0) 推荐(0)
摘要: 一. 综述 经过两个多个周的整理,异步多线程章节终于整理完成,如下图所示,主要从基本概念、委托的异步调用、Thread多线程、ThreadPool多线程、Task、Parallel并行计算、async和await、线程特殊处理、委托赋值的几种形式等九个方面来介绍异步多线程。 二. 基本概念的梳理 1 阅读全文
posted @ 2017-06-17 16:07 Yaopengfei 阅读(425) 评论(0) 推荐(0)
摘要: 一. IO读写 这里主要包括文件的读、写、移动、复制、删除、文件夹的创建、文件夹的删除等常规操作。 注意:这里需要特别注意,对于普通的控制台程序和Web程序,将"相对路径"转换成"绝对路径"的方法不一致。 (1). 在web程序中,可以使用HttpContext.Current.Server.Map 阅读全文
posted @ 2017-06-11 20:49 Yaopengfei 阅读(2345) 评论(1) 推荐(0)
摘要: 一. 泛型委托 所谓的泛型委托,即自定义委托的参数可以用泛型约束,同时内置委托Func和Action本身就是泛型委托。 将上一个章节中的Calculator类中的方法用自定义泛型委托重新实现一下。 1 public class Calculator2 2 { 3 //传统解决方案一:在该类中声明多个 阅读全文
posted @ 2017-06-11 16:18 Yaopengfei 阅读(1398) 评论(0) 推荐(0)
摘要: 一. 委托发展史和基本用法 说起委托,每个人可能都会对他有不同的理解,结合实战中委托的使用,我对其理解是:委托和类一样,是用户的一个自定义类型,委托可以有参数、有返回值,委托的关键字是delegate,委托是方法的抽象,有了委托的存在,使得方法可以作为参数传递给另一个方法,同时调用委托的时候,委托所 阅读全文
posted @ 2017-06-07 21:27 Yaopengfei 阅读(2261) 评论(1) 推荐(2)
摘要: 一. 覆盖/写 1. 关键字:new 2. 含义:子类继承父类中的普通方法,如果在子类中写了一个和父类中完全相同的方法,子类中会报警告(问是否显式的隐藏父类的中的方法),如果在子类中的方法前加上new关键字,则警告消失。 注意: * 虽然可以不使用 new 修饰符来隐藏成员,但将收到编译器警告。 如 阅读全文
posted @ 2017-06-04 11:46 Yaopengfei 阅读(2328) 评论(2) 推荐(0)
摘要: 一. 面向对象思想 1. 面向过程(OP)和面向对象(OO)的区别: (1):面向过程就是排着用最简单的代码一步一步写下去,没有封装,当业务复杂的时候,改动就很麻烦了 (2):面向对象将复杂的业务分离出来几个类,然后将业务封装到类中的方法进行实现,很简洁。 2. 面向对象的三大特征 (1). 封装: 阅读全文
posted @ 2017-06-04 11:45 Yaopengfei 阅读(3726) 评论(2) 推荐(6)
摘要: 一. Lambda和linq入门 lambda表达式又叫点标记,linq表达式又叫查询表达式,下面有三个简单的案例说明一下二者的基本用法,详细用法会在后续章节中更新。 二. 事例 1. 准备学生信息。 2. 查找年龄小于30岁的学生 lambda代码如下: linq代码如下: 3. 部分字段查找测试 阅读全文
posted @ 2017-06-03 21:30 Yaopengfei 阅读(435) 评论(0) 推荐(0)
摘要: 一. 匿名类 1. 传统的方式给类赋值,需要先建一个实体类→实例化→赋值,步骤很繁琐,在.Net 3.0时代,微软引入匿名类的概念,简化了代码编写,提高了开发效率。 匿名类的声明语法: var obj=new {字段赋值}; 代码如下: 运行结果如下: 2. 匿名类的属性都是只读的 3. 匿名类的属 阅读全文
posted @ 2017-05-30 18:36 Yaopengfei 阅读(1271) 评论(0) 推荐(0)
摘要: 一. 加载dll,读取相关信息 1. 加载程序集的三种方式 调用Assembly类下的三个方法:Load、LoadFile、LoadFrom。 1 //1.1 Load方法:动态默认加载当前路径下的(bin)下的dll文件,不需要后缀 2 Assembly assembly = Assembly.L 阅读全文
posted @ 2017-05-22 20:42 Yaopengfei 阅读(2791) 评论(0) 推荐(1)
摘要: 一. 泛型诞生的背景 在介绍背景之前,先来看一个案例,要求:分别输出实体model1、model2、model3的id和name值,这三个实体有相同的属性名字id和name。 基于以上两种传统的解决方案都缺点明显,所以在 .Net 2.0的时候,推出了一个通用语言运行时(CLR)的新特性即:泛型。泛 阅读全文
posted @ 2017-05-19 23:01 Yaopengfei 阅读(2241) 评论(4) 推荐(0)
摘要: 待定 阅读全文
posted @ 2017-03-21 19:44 Yaopengfei 阅读(231) 评论(0) 推荐(0)
摘要: 待定 阅读全文
posted @ 2017-03-21 19:40 Yaopengfei 阅读(218) 评论(0) 推荐(0)
摘要: 一. 整体介绍 这里介绍DOM对象中Element对象。 那么何为Element对象呢?Element对象就是HTML元素,Element对象包括:元素节点、文本节点、属性节点。 下面利用一张图来总体概括一下Element对象包含的知识点。 二. 知识梳理 一张图胜似千言万语 阅读全文
posted @ 2017-03-05 15:38 Yaopengfei 阅读(274) 评论(0) 推荐(0)
摘要: 一. 整体介绍 这里介绍DOM对象中的Document对象。 何为Document对象?每个载入浏览器的HTML文档都会成为Document对象,Document对象可以帮助我们对所有的HTML文档进行访问。 任何一个对象都会有属性和方法,当然Document对象也不例外,Document对象有对象 阅读全文
posted @ 2017-03-04 23:24 Yaopengfei 阅读(414) 评论(0) 推荐(0)