Presentation is loading. Please wait.

Presentation is loading. Please wait.

.NET 提升教育 CYQ.Data 精通课程 By 路过秋天 2016-12-20.

Similar presentations


Presentation on theme: ".NET 提升教育 CYQ.Data 精通课程 By 路过秋天 2016-12-20."— Presentation transcript:

1 .NET 提升教育 CYQ.Data 精通课程 By 路过秋天

2 课程说明: 学习本系列之前的准备: 已看完框架的Demo或相关文章,有一定的操作能力!
开源地址: Demo:

3 1:讲解CYQ.Data 框架的使用 2:讲解框架的原理及源码 3:扩展知识体系 4:了解设计模式
课程体系: 1:讲解CYQ.Data 框架的使用 2:讲解框架的原理及源码 3:扩展知识体系 4:了解设计模式

4 核心一:MAction系

5 扩展知识 1:回顾:ADO.NET? 2:封装的DBHelper、Dapper? 3:进一步被封装的实体ORM? 4:实体ORM的局限性?
5:为什么会有CYQ.Data? 6:CYQ.Data解决了什么问题?

6 MAction初始化 using(MAction action=new MAction(“m1” , ”c1”)) { }
using(MProc proc=new MProc(“p1” , ”c1”)){} 1:两个类的区别是什么? 2:各自的应用场景? 3:为什么用using ? using 原理是? 4:可能产生哪些异常?原因是? 5:这一行代码框架做了什么? 6:第一参数能传些什么?能传null吗?为什么可以这么传? 7:如果执行正常,能获取到什么信息? 8:如何省掉第二个参数?(ProjectTool工具的使用!)

7 MAction多表操作 using(MAction action=new MAction(“m1”))
{ action.ResetTable(“m2”);} using(MProc proc=new MProc(“p1”)) {proc.ResetProc(“p2”);} 1:为什么要切换? 2:切换会抛异常吗? 3:有几个重载方法? 4:能切换不同的数据库的表吗? 5:切换后有什么数据变化了吗?

8 MAction事务 1:事务只有单机么?支持分布式事务吗? 2:事务什么时候被开启,又什么时候结束? 3:回滚是自动的,还是需要手动的?
using(MAction action=new MAction(“m1”)) { action.BeginTrasation(); action.SetTransLevel(...); ...action.ResetTable(...); ...action.RollBack(); action.EndTrasation(); } using(MProc proc=new MProc(“p1”)) { action.BeginTrasation(); action.SetTransLevel(...); action.ResetProc(...); ...action.RollBack(); action.EndTrasation(); } 1:事务只有单机么?支持分布式事务吗? 2:事务什么时候被开启,又什么时候结束? 3:回滚是自动的,还是需要手动的? 4:在MAction操作里,还能操作MProc,但在一个事务吗? 5:切换的表或语句,还在同一个事务吗? 6:如果切换了不同数据库的表呢?事务还在同一个吗? 7:事务的Level是什么?事务的级别各有什么用途?

9 MAction多平台数据UI交互 using(MAction action=new MAction(“mi” ))
{bool result=action.Insert(true);} 1:自动取值入库或更新的原理? 2:如何单条数据交互? 3:如何多条数据交互? 4:对于Json和数据库字段不一致,如何处理? 5:框架的UI交互是如何支持多平台的(web,winform,wpf,第三方)?

10 MAction多数据库支持 using(MAction action=new MAction(“mi” ))
{MDataTable table=action.Select(“Year(CreateTime)>2015”);} 1:框架如何支持多种数据库? 2:如何解析不同数据库下的SQL语句?(DBImport) 3:如何扩展读写分离? 4:如何设置主库备份链接?

11 核心二:调试与日志

12 MAction调试 using(MAction action=new MAction(“m1” )) { }
bool resultA=action.Insert(); bool resultB=action.Update(1); bool resultC=action.Delete(2); bool resultD=action.Exists(“错误字段=xx”); int count=action.GetCount(“抛异常了”); } 1: 当Insert没有数据,是什么情况? 2:当Update的数据不存在,是什么情况? 3:当删除的条件不存在,是什么情况? 4:当判断Exsits发生异常,是什么情况? 5:当获取记录数发生异常,是什么情况? 6:如何在业务中正常的判断正常,还是无数据,还是异常呢? 7:where条件的推导?

13 MAction SQL监控 using(MAction action=new MAction(“m1”)) {
if(action.Fill(1)) int id=action.Get<int>(0); string name=action.Get<string>(“Name”); action.ResetTable(...); bool resultD=action.Exists(“错误字段=xx”); string where=action.GetWhere(...); } 1: Fill是什么情况,数据在哪? 2:Get<int>(0) 零是什么情况? 3:如果产生异常,它抛还是不抛?怎么控制? 4:如何获取执行的SQL语句呢? 5:如何监控全局的SQL语句呢? 6:如何过滤出执行时间长的SQL语句呢? 7:GetWhere是什么鬼?为什么会有?

14 日志记录 Log.WriteLogToTxt(...) Log.WriteLogToDB(...)
using(SysLogs sys=new SysLogs){...} 1:Log及SysLogs两个类的区别是什么? 2:各自的应用场景? 3:日志写到哪去了? 4:自动创建的日志表? 5:能指定数据库或表名? 6:如果账号没有创建表权限怎么办? 7:现实的源码解读!

15 扩展知识 1:文件编码有哪些? 2:如何识别文件编码? 3:编码和字节的关系? 4:字节如何正确转换为文字? 5:文件的写并发如何控制?
6:如何监控文件的变化? 7:大文件如何读取(电脑仅4G内存,可日志文件就8个G)?

16 核心二:缓存

17 缓存 CacheManage cache = CacheManage.Instance;
CacheManage cache = CacheManage.LocalInstance; CacheManage cache = CacheManage.MemCacheInstance; CacheManage cache = CacheManage.RedisInstance; 1:以上代码的区别是什么? 2:各自的应用场景? 3:该如何正确使用? 4:框架自身都缓存了些什么? 5:如何控制框架的自身缓存? 6:如何将表结构缓存外置到文件? 7:如何知道缓存节点是否故障? 8:集群雪崩效应是什么概念? 9:如何配置缓存的故障转移? 10:一致性Hash算法是什么鬼?

18 扩展知识 类对象属性: 1:静态变量怎么理解? 2:常量怎么理解? 3:静态只读变更怎么理解? 4:静态变量的如何避免内存浪费?
Socket多线程编程: 1:Socket 通讯及TCP协议? 2:队列池的概念? 3:多线程是什么? 4:和异步的区别是? 5:并发编程又是什么鬼? 6:多线程快还是单线程快?

19 核心三:AOP

20 Aop: 1:Aop 是什么? 2:什么场景可以用Aop? 3:如何使用? 4:Aop使用时,什么情况会产生死循环,如何避免?
CYQ.Data.Aop.IAop接口 1:Aop 是什么? 2:什么场景可以用Aop? 3:如何使用? 4:Aop使用时,什么情况会产生死循环,如何避免? 5: Aop使用时,什么情况会产生数据库死锁,如何避免? 6:静态和动态Aop实现的区别?

21 扩展知识 1:反射是什么概念? 2:如何动态加载程序集? 3:如何动态创建实例? 4:反射如何调静态方法?
5:属性Attribute是什么情况? 6:获取属性Attribute需要二次反射? 7:反射为什么要配合缓存? 8:Emit是什么鬼? 9:为什么他们要用Emit代替反射? 10:为什么他们不全部用Emt代替反射?

22 核心四:JsonHelper

23 JsonHelper: 1:JsonHelper提供了哪些静态方法? 2:JsonHelper如何实例化使用?
5:如何和Xml交互? 6:如何和post的数据交互? 7:如何和Get的参数交互? 8:如何和MDataTable系交互? 9:如何和实体交互? 10:如何和字典、泛型、数组交互? 11:如何和其它乱七杂八的数据结构交互?

24 扩展知识 1:字符和字符串的区别? 2:string和StingBuilder的区别? 3:如何高效的处理字符串的增删改查?
4:字符串如何进行不区分大小写的比较与替换与查找? 5:StringComparison.CurrentCulture 是什么鬼? 6:为什么会有区域敏感排序的存在? 7:如何写出健壮的数据类型转换?

25 核心五:MDataTable系

26 扩展知识 1:值类型和引用类型的区别? 2:out和ref认识有多少? 3:如何正确的使用ref?
4: Tuple 是什么?out会被tuple替换吗?

27 MDataTable系:构成 1:MDataTable的构成元素是什么? 2:MDataRow的构成元素是什么?
3:MDataCell的构成元素是什么? 4:MDataColumn的构成元素是什么? 5:MCellStruct的构成元素是什么? 6:为什么使用起来和DataTable这么像?

28 MDataTable系:增删改查 1:如何新增加行? 2:如何移除行? 3:如何修改行? 4:如何查询单行? 5:如何查询多行?
6:如何分页查询? 7:如何修改列结构?

29 MDataTable系:绑定 1:MDataTable 如何绑定表格? 2: MDataTable如何绑定第三方表格?
4: MDataRow 如何批量设置值到界面?

30 MDataTable系:数据结构交互转换
1:如何和Json交互? 2:如何和Xml交互? 3:如何和实体交互? 4:如何和List<T>交互? 5:如何和字典交互? 6:如何和Get、Post的参数交互? 7:如何和数组交互? 8:如何和DataTable交互? 8:如何和其它乱七杂八的数据结构交互?

31 MDataTable系:扩展方法 1:如何合并多个表? 2:如何连接多个表? 3:如何对表进行行列转换?
4:如何对表的表进行:求合、求平均、最大、最小值? 5:如何过滤重复行? 6:查询方法的(where),支持到什么程度?

32 核心六:文本数据库

33 文本数据库: using(SysLogs sys=new SysLogs){...} 1:什么是文本数据库? 2:文本数据库及内存表的关系?
3:文本数据库的使用场景? 4:如何使用文本数据库? 5:如何指定文本数据库链接? 6:如何CodeFirst交互? 7:数据存档结构? 8:文本数据库的不足?

34 扩展知识 1:数组、链表、Hash结构的区别? 2:List和Dictionary的使用区别及注意事项? 3:List为什么查询性能这么低?

35 核心七:DBTool

36 DBTool: 1:如何对数据库表结构进行增,删,改,查? 2:如何获取表的数据结构? 3:如何获取数据库的所有表及描述?
4:如何测试数据库链接是否正常? 5:如何从数据库链接语句识别数据库类型? 6:如何对字段增加或取消关键字符号?

37 扩展知识 1:了解数据库的字段类型差异? 2:框架是如何对差异的数据类型进行转换? 3:了解数据库的常见函数的差异用法?
4:框架是如何对常见函数的差异用法进行转换? 5:学习DBImport工具的使用!

38 核心八:实体ORM系

39 实体ORM: 1:MAction和MProc已经能处理100%的事情 为什么还存在DBFast、SimpleOrmBase、OrmBase?
1:三个类的区别是什么? 2:各自的应用场景? 3:源码的实现?

40 核心九:XHtmlAction系

41 扩展知识 1:xml、html、xhtml的区别? 2:什么是字符实体? 3:如何将特殊字符转换成实体? 4:如何在html中指定编码?
5:SEO是什么? 6:html中哪些知识和SEO有关?

42 XHtmlAction: 1:如何加载xml? 2:如何加载html? 3:实例参数的IsNoClone是什么情况,怎么理解?
4:如何对单个节点进行操作? 5:如何对批量节点进行操作? 6:如何配合MDataRow进行操作? 7:如何配置MDataTable进行批量操作?

43 MutilLanguage: 1:如何使用它进行多语言版本开发? 2:语言版本如何切换? 3:可以从哪些地方识别用户的语言环境?

44 RSS: 1:如何使用RSS类? 2:网站需要支持RSS订阅吗?

45 核心十:其它系

46 其它系: 1:如何使用SqlValue类? 2:如何使用DataType类? 3:如何使用MDictionary类?
4:如何使用MList类? 5:如何使用ThreadBreak类?

47 三个提升效率的工具: 1:CYQ.ProjectTool 生成表结构或枚举。 2:Intelisence 智能语法提示和调试工具。
3:DBImport: 数据库工具:支持多数据库应用的项目必备。

48 设计模式:

49 简单工厂 理解核心: 通过static Create方法(参数) { } 内部带swith(参数)分支返回子类实例()
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 理解核心: 通过static Create方法(参数) 内部带swith(参数)分支返回子类实例()

50 抽象工厂(Abstract Factory):
意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 适用性 一个系统要独立于它的产品的创建、组合和表示时。 一个系统要由多个产品系列中的一个来配置时。 当你要强调一系列相关的产品对象的设计以便进行联合使用时。 当你提供一个产品类库,而只想显示它们的接口而不是实现时。 理解核心:简单工厂+反射

51 工厂模式(Factory Method):
意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 适用性 当一个类不知道它所必须创建的对象的类的时候。 当一个类希望由它的子类来指定它所创建的对象的时候。 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。 理解核心:调用方式为:共性接口 a=new 子类实例()

52 建造者模式(Builder Method):
意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 适用性 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 当构造过程必须允许被构造的对象有不同的表示时。 理解核心:工厂模式的注入+固定流程的调用方式

53 单例模式(Singleton): 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 适用性
当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。 核心理解:实例全局唯一

54 原型模式(ProtoType): 意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 适用性
当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者 为了避免创建一个与产品类层次平行的工厂类层次时;或者 当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。 核心理解:以Clone方法统一返回实例

55 享元模式( Flyweight) 意图 运用共享技术有效地支持大量细粒度的对象。 适用性 一个应用程序使用了大量的对象。
完全由于使用大量的对象,造成很大的存储开销。 对象的大多数状态都可变为外部状态。 如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。 应用程序不依赖于对象标识。由于对象可以被共享,对于概念上明显有别的对象,标识测试将返回真值。 核心理解:通过引用Ref来复用某一对象。

56 门面模式(Facade): 意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 适用性 当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade层。 核心理解:定义一个外调用的API类。

57 中介模式: 意图 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 适用性 一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。 想定制一个分布在多个类中的行为,而又不想生成太多的子类。 核心理解:构造了一个中间平台(以方便A与B的交互)

58 模版模式: 意图 适用性 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
Te m p l a t e M e t h o d 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 适用性 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。 核心理解:抽取共性算法到父类实现

59 策略模式: 意图 适用性 核心理解:(工厂+模板模式)
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 适用性 许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。 需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间/时间权衡的算法。当这些变体实现为一个算法的类层次时,可以使用策略模式。 核心理解:(工厂+模板模式)

60 本系列结束: 谢谢参加培训!


Download ppt ".NET 提升教育 CYQ.Data 精通课程 By 路过秋天 2016-12-20."

Similar presentations


Ads by Google