![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
NET 进阶
文章平均质量分 94
深入了解C#知识,数据库知识,框架知识
sufengmarket
这个作者很懒,什么都没留下…
展开
-
NET 进阶--序列化
序列化,它又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制。序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。其目的是以某种存储形成使自定义对象持久化,或者将这种对象从一个地方传输到另一个地方。要让一个对象支持.Net序列化服务,用户必须为每一个关联的类加上[Serializable]特性。如果类中有些成员不适合参与序列化(比如:密码字段),可以在这些域前加上[NonSerialized]特性。原创 2022-09-29 10:09:31 · 89 阅读 · 0 评论 -
NET 进阶--事件和委托
如果是委托,那么订阅者就可以使用 = 来对委托对象重新赋值(其它订阅者全部被取消订阅),甚至将其设置为null,甚至订阅者还可以直接调用委托,这些都是很危险的操作,广播者就失去了独享控制权。一个委托类型定义了该类型的实例能调用的一类方法,这些方法含有同样的返回类型和同样参数(类型和个数相同)。当一个类的实例的方法被赋给一个委托对象时,在上下文中不仅要维护这个方法,还要维护这个方法所在的实例。有了泛型委托,就有了一能适用于任何返回类型和任意参数(类型和合理的个数)的通用委托,Func 和 Action。原创 2022-09-29 10:08:53 · 497 阅读 · 0 评论 -
NET 进阶--特性
特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。特性(Attribute)用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。.Net 框架提供了两种类型的特性:预定义特性和自定义特性。这个预定义特性标记了不应被使用的程序实体。它可以让您通知编译器丢弃某个特定的目标元素。原创 2022-09-28 15:06:25 · 223 阅读 · 0 评论 -
NET 进阶--接口和抽象类
通过相同与不同的比较,我们只能说接口和抽象类,各有所长,但无优略。在实际的编程实践中,我们要视具体情况来酌情量才,但是以下的经验和积累,或许能给大家一些启示,除了我的一些积累之外,很多都来源于经典,我相信经得起考验。抽象类不能实例化,必须通过继承由派生类实现其抽象方法,因此对抽象类不能使用new关键字,也不能被密封。一个类可以实现多个接口,当一个类继承某个接口时,它不仅要实现该接口定义的所有方法,还要实现该接口从其他接口中继承的所有方法。所以,在由接口增加扩展时,应该增加新的接口,而不能更改现有接口。原创 2022-09-28 14:50:06 · 402 阅读 · 0 评论 -
NET 进阶--WebClient和WebRequest
使用WebRequest类请求/响应模型的应用程序可以用协议不可知的方式从Internet请求数据,在这种方式下,应用程序处理WebRequest类的实例,而协议特定的子类则执行请求的具体细节,请求从应用程序发送到某个特定的URI,如服务器上的网页。应用程序可以使用 WebResponse类的实例以协议不可知的方式参与请求和响应事务,而从WebResponse类派生的协议特定的类携带请求的详细信息。返回值:包含对Internet请求的响应的WebResponse。原创 2022-09-28 14:02:50 · 292 阅读 · 0 评论 -
NET 进阶--抽象工厂
这里首先以一个生活中抽象工厂的例子来实现一个抽象工厂,然后再给出抽象工厂的定义和UML图来帮助大家更好地掌握抽象工厂模式,同时大家在理解的时候,可以对照抽象工厂生活中例子的实现和它的定义来加深抽象工厂的UML图理解。抽象工厂模式:提供一个创建产品的接口来负责创建相关或依赖的对象,而不具体明确指定具体类抽象工厂允许客户使用抽象的接口来创建一组相关产品,而不需要知道或关心实际生产出的具体产品是什么。这样客户就可以从具体产品中被解耦。下面通过抽象工模式的类图来了解各个类中之间的关系:抽象工厂应对需求变更。原创 2022-09-28 11:55:06 · 163 阅读 · 0 评论 -
NET 进阶--反射
反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型了如指掌。另外我还可以直接创建对象,即使这个对象的类型在编译时还不知道。原创 2022-09-28 11:42:30 · 318 阅读 · 0 评论 -
架构师进阶之路_23SqlServer主从同步
一、引言什么是数据库主从同步?数据库的主从同步架构是当下最为常见的一种数据库架构,通过主从同步可以使数据从一个数据库节点复制到另一个数据库节点,这样才能保障数据库分式布集群部署时数据是同步统一的。在主从同步数据时,一台服务器会充当主服务器(Master),其它服务器便会充当从服务器(Slave),一般是一主多从模式。数据库主从同步的目的数据库主从同步的主要作用有以下几点:便于架构扩展...转载 2020-04-06 11:50:52 · 1509 阅读 · 0 评论 -
架构师进阶之路_22Sql查询优化(SqlServer)
一、引言数据库查询效率的快慢往往是评价一个数据库是好是差其中的一个标准。对于好的数据库而言,往往离不开良好的数据库设计,硬件配置,网络等诸多因数。那么我们在日常开发中,提高数据库查询效率最简单可行的方式就是优化sql语句。查询速度慢的原因很多,常见如下几种没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)I/O吞吐量小,形成了瓶颈效应没有创建计算列导致查询不优化内存...原创 2020-04-02 23:02:09 · 252 阅读 · 0 评论 -
架构师进阶之路_21领域驱动设计(二)
一、引言架构是高层的设计,如果设计和理解有误,必将在实现时带来各种问题。架构又是最稳定的,不会因为各种具体技术的依赖,如各种UI框架、ORM框架、IoC框架的更新换代而受到影响。上文的总结没有任何Demo是因为架构更偏向于设计层面,有从设计视图创建解决方案经验的人,一看就知道我在说什么。本文将展示从架构设计视图到.NET多项目解决方案的过程。主要包含以下内容:(1)演示DDD分层架构到.NET...转载 2020-04-01 23:46:46 · 528 阅读 · 0 评论 -
架构师进阶之路_21领域驱动设计(一)
一、引言软件开发不是一蹴而就的事情,我们不可能在不了解产品(或行业领域)的前提下进行软件开发,在开发前,通常需要进行大量的业务知识梳理,而后到达软件设计的层面,最后才是开发。而在业务知识梳理的过程中,我们必然会形成某个领域知识,根据领域知识来一步步驱动软件设计,就是领域驱动设计的基本概念。1、为什么要研究领域驱动设计(DDD)1.1、 设计方法各样且代码无法反映设计开发一个新功能,每一位...原创 2020-04-01 00:55:21 · 267 阅读 · 0 评论 -
架构师进阶之路_20分布式缓存
一、什么是缓存缓存简单理解就是保存的一个数据副本,以便于后续能够进行快速的访问。缓存的使用是为了解决快速访问数据(读数据)的场景。在现有的互联网应用中,缓存的使用是一种能够提升服务快速响应的关键技术,需要在设计技术方案时对业务场景,具有一定的前瞻性评估后,决定在技术架构中是否需要引入缓存解决这种这种非功能需求。1、缓存响应的四种方式1.1、内存缓存顾名思义,缓存在内存中,生命周期默认伴随...原创 2020-04-01 00:22:11 · 580 阅读 · 0 评论 -
架构师进阶之路_01泛型
一、引言泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性。泛型为.NET框架引入了类型参数(type parameters)的概念。类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明、实现。这意味着使用泛型的类型参数T,写一个类MyList,客户代码可以这样调用:MyList, MyList或 MyList。这避免了运行时类型转...原创 2020-03-29 13:16:45 · 330 阅读 · 0 评论 -
架构师进阶之路_19SqlServer表分区
一、引言表分区指的是一般情况下,我们建立数据库表时,表数据都存放在一个文件里。但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个cpu进行处理。这样文件的大小随着拆分而减小,还得到硬件系统的加强,自然对我们操作数据是大大有利的。所以大数据量的数据表,对分区的需要还是必要的,因为它可以提高select...原创 2020-03-28 10:44:25 · 1164 阅读 · 0 评论 -
架构师进阶之路_17html解析
一、引言HtmlAgilityPack是一个支持用XPath来解析HTML的类库,是一个开源的.NET类库,它的主页是HtmlAgilityPack官网.,在这里可以下载到最新版的类库及API手册,此外还可以下载到一个用于调试的辅助工具。1、XPath简明介绍XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。...原创 2020-03-27 00:22:32 · 234 阅读 · 1 评论 -
架构师进阶之路_15AOP概述
一、引言AOP(Aspect-Oriented Programming,面向方面编程),它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。A...原创 2020-03-26 23:49:17 · 396 阅读 · 0 评论 -
架构师进阶之路_14抽象工厂
一、引言抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。1、抽象工厂详细介绍这里首先以一个生活中抽象工厂的例子来实现一个抽象工厂,...原创 2020-03-26 23:12:52 · 191 阅读 · 0 评论 -
架构师进阶之路_13设计模式六大原则
一、引言设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。1、单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。...原创 2020-03-26 22:53:49 · 211 阅读 · 0 评论 -
架构师进阶之--14AOP
AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。...原创 2022-09-28 11:26:09 · 350 阅读 · 1 评论 -
架构师进阶之路_12设计模式六大原则
单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。举例说明,用一个类描述动物呼吸这个场景: class Animal { public void Breathe(Str...原创 2022-09-26 19:52:09 · 120 阅读 · 1 评论 -
架构师进阶之路_12数据结构剖析
1.Array数组是最简单的数据结构。其具有如下特点:数组存储在连续的内存上。 数组的内容都是相同类型。 数组可以直接通过下标访问。 数组Array的创建:1intsize = 5;2int[] test = newint[size]; 创建一个新的数组时将在CLR 托管堆中分配一块连续的内存空间,来盛放数量为size,类型为所声明类型的数组元素。如果类型为值类...原创 2020-03-22 14:10:41 · 191 阅读 · 0 评论 -
架构师进阶之路_10linq to sql
LINQ to SQL语句(1)之Where适用场景:实现过滤,查询等功能。说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句。Where操作包括3种形式,分别为简单形式、关系条件形式、First()形式。下面分别用实例举例下:1.简单形式:例如:使用where筛选在伦敦的客户varq =fromc in...原创 2020-03-18 22:30:51 · 516 阅读 · 0 评论 -
架构师进阶之路_09加密与解密
引言在一些比较重要的应用场景中,通过网络传递数据需要进行加密以保证安全。本文将简单地介绍了加密解密的一些概念,以及相关的数字签名、证书,最后介绍了如何在.NET中对数据进行对称加密和解密。加密和解密说到加密,可能大家最熟悉的就是MD5了,记得几年前我刚开始接触Web编程的时候,研究的一个ASP论坛程序,它的用户密码就是采用的MD5进行加密。MD5实际上只是一种散列运算,或者可以称为单向...原创 2020-03-13 00:26:33 · 274 阅读 · 0 评论 -
架构师进阶之路_08xml和json
引言NOKIA 有句著名的广告语:“科技以人为本”。任何技术都是为了满足人的生产生活需要而产生的。具体到小小的一个手机,里面蕴含的技术也是浩如烟海,是几千年来人类科技的结晶,单个人穷其一生也未必能掌握其一角。不过个人一直认为基本的技术和思想是放之四海而皆准的,许多技术未必需要我们从头到尾再研究一遍,我们要做的就是站在巨人的肩膀上,利用其成果来为人们的需求服务。随着移动互联网时代的大潮,越来...原创 2020-03-13 00:16:57 · 334 阅读 · 1 评论 -
架构师进阶之路_07linq to xml
1、LINQ to XML类System.Xml.Linq命名空间含有19个类,下表列出了它们的名称及其描述: 类 描述 XAttribute 表示一个XML属性 XCData 表示一个CDATA文本节点 XComment 表示一...原创 2020-03-12 23:50:28 · 185 阅读 · 1 评论 -
架构师进阶之路_01泛型
泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性。泛型为.NET框架引入了类型参数(type parameters)的概念。类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明、实现。这意味着使用泛型的类型参数T,写一个类MyList<T>,客户代码可以这样调用:MyList<int>, MyList<...原创 2022-09-26 19:50:39 · 121 阅读 · 1 评论