技能清单

C#基础知识

https://www.yuque.com/ysgstudyhard/da6e0c/sfym98

面向对象的开发思想 —— 封装、继承、多态

什么是面向对象?

面向对象(Object Oriented Programming),即面向对象编程,它是相对于面向过程来说的。

它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象。

封装

封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象。

 

封装的优点

1、良好的封装能够减少耦合。

2、类内部的结构可以自由修改。

3、可以对成员进行更精确的控制。

4、隐藏信息,实现细节。

 

继承

继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能。通过使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率。

 

继承的优点

1、减少冗余代码,提高代码的复用。

2、合理使用,大大提高开发效率。

 

继承的缺陷

1、父类变,子类就必须变。

2、继承破坏了封装,对于父类而言,它的实现细节对与子类来说都是透明的。

3、继承是一种强耦合关系。

 

多态

多态同一个行为具有多个不同表现形式或形态的能力。是指一个类实例(对象)的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

多态的优点:

多态存在的三个必要条件:

五大基本原则(SOLID)

1、单一职责原则(SRP)

一个类应该有且只有一个去改变它的理由,这意味着一个类应该只有一项工作。

指的是一个类或者一个方法只做一件事。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化就可能抑制或者削弱这个类完成其他职责的能力。例如餐厅服务员负责把订单给厨师去做,而不是服务员又要订单又要炒菜。

2、开放封闭原则(OCP)

对象或实体应该对扩展开放,对修改封闭。

更改封闭即是在我们对模块进行扩展时,勿需对源有程序代码和DLL进行修改或重新编译文件!这个原则对我们在设计类的时候很有帮助,坚持这个原则就必须尽量考虑接口封装,抽象机制和多态技术。

3、里氏替换原则(LSP)

所有基类出现的地方都可以用派生类替换而不会程序产生错误。子类可以扩展父类的功能,但不能改变父类原有的功能。 例如机动车必须有轮胎和发动机,子类宝马和奔驰不应该改写没轮胎或者没发动机。

4、接口隔离原则(ISP)

类不应该依赖不需要的接口,知道越少越好。例如电话接口只约束接电话和挂电话,不需要让依赖者知道还有通讯录。

5、依赖倒置原则(DIP)

高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。具体实现应该依赖于抽象,而不是抽象依赖于实现。

指的是高级模块不应该依赖低级模块,而是依赖抽象。抽象不能依赖细节,细节要依赖抽象。比如类A内有类B对象,称为类A依赖类B,但是不应该这样做,而是选择类A去依赖抽象。例如垃圾收集器不管垃圾是什么类型,要是垃圾就行。

WPF、.Net Core

https://www.yuque.com/ysgstudyhard/da6e0c/ta46y9

SqlServer、MySQL

https://www.yuque.com/ysgstudyhard/da6e0c/tfeyub

B/S、C/S

 

寸金游( 后端开发 )

ASP.NET Core

ASP.NET

ASP.NET(这里指的是ASP.NET 4.x以下版本)是由 Microsoft 创建的开放源代码 Web 框架,助你使用 .NET 生成现代 Web 应用和服务。是一个成熟的框架,提供在 Windows 上生成基于服务器的企业级 Web 应用所需的服务。

ASP.NET Core

ASP.NET Core是一个开源,跨平台的(window、Linux、MacOs、Android、IOS等多个平台),高性能的框架。使用起来更精简、更容易配置、更加模块化、可扩展性更强。

ASP.NET Core 具有如下优点:

ASP.NET Core MVC

MVC编程模式

首先MVC全名是Model(模型)-View(试图)-Controller(控制器),是一种软件设计典范。

用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面。各部分相互独立并且相互联系,可以让各自专注于自己的业务。

ASP.NET Core MVC

ASP.NET MVC 在服务器上呈现 UI,并使用模型-视图-控制器 (MVC) 结构模式。 MVC 模式将应用分成三组主要组件:模型、视图和控制器

用户请求被路由到控制器, 控制器负责使用模型来执行用户操作或检索查询结果,控制器选择要显示给用户的视图,并为其提供所需的任何模型数据。 对 Razor Pages 的支持是建立在 ASP.NET Core MVC 基础之上的。

使用视图的好处

视图可帮助在 MVC 应用内建立关注点分离,方法是分隔用户界面标记与应用的其他部分。 采用 SoC 设计可使应用模块化,从而提供以下几个好处:

将数据传递给视图的几种方式?

RESTful风格

RESTful的基本特点

RESTful的6个约束

6个约束限制

image-20230204013504427

Entity Framework

数据库映射工具AppDbContext

DbContext是实体类和数据库之间的桥梁,DbContext主要负责与数据交互

1、DbContext包含所有的实体映射到数据库表的实体集(DbSet < TEntity >)。

2、DbContext 将LINQ-to-Entities查询转换为SQL查询并将其发送到数据库。

3、更改跟踪: 它跟踪每个实体从数据库中查询出来后发生的修改变化

4、持久化数据: 它也基于实体状态执行插入、更新和删除操作到数据库中。

DbContext中的DbSet

DbSet表示上下文中指定类型的所有实体的集合或可从数据库中查询的指定类型的所有实体的集合。

image-20230209141005927

OnModelCreating

受保护的方法OnModelCreating在完成对派生上下文的模型的初始化后,并在该模型已锁定并用于初始化上下文之前,将调用此方法。虽然此方法的默认实现不执行任何操作,但可在派生类中重写此方法,这样便能在锁定模型之前对其进行进一步的配置。

Postman

Postman是一种接口调试与http接口测试的工具。我们可以非常方便的用来模拟get或者post或者其他方式的请求来调试和测试接口。

Postman 的优点

C#的异步方法async/await

异步编程

使用异步编程,可以提高响应能力(吞吐量),即使用异步方式在同一时间可以处理更多的请求。

使用同步方式,线程会被耗时操作一直占用,直到耗时操作结束;使用异步方式,程序走到await关键字会立即return,释放线程,剩下的代码将放到一个回调(Task.GetAwaiter()UnsafeOnCompleted(Action)),耗时操作完成时才会回调执行。

异步方法

异步方法是什么?

代码示例

image-20230204173745833

异步控制的流程

image-20230204173951304

在函数声明中使用async关键词的意义是什么呢?

image-20230204174130319

总结

image-20230204174223460

JWT实现无状态登录

JWT是干什么用的?

授权 ?认证

image-20230204213611393

传统的Session登录

JWT彻底改变了用户授权与认证的过程

有状态登录 ?无状态登录

有状态登录(session)

image-20230204213934145

无状态登录(JWT)

image-20230204214016799

有状态登录 ?无状态登录

JWT的原理

区别

常用的单点登录(SSO)系统

image-20230204215318364

JWT的优点

JWT的缺点

基于声明(Claims)的身份认证体系

Claim

在开发网站的时候

PaginationList类来实现数据分页

分页组件类:PaginationList <T>

Helper - PaginationList.cs

属性映射服务PropertyMappingService实现请求数据的动态排序

新建PropertyMappingService.cs

新建PropertyMappingValue.cs

新建PropertyMapping.cs

新增接口IPropertyMapping.cs

新增接口IPropertyMappingService.cs

注册依赖服务(Startup.cs)ConfigureServices

映射字典

注入属性映射服务依赖TouristRouteRepository.cs

新建Helper - IQueryableExtensions.cs

客户预约管理系统

WPF框架

WPF 是微软推出的表现层UI开发框架,全称 Windows Presentation Foundation。 相对Winform来讲,它使用一种全新的桌面应用程序 UI 的开发方式。

简而言之,可以使用 WPF 完成以下操作:

XAML

XAML 是用来组织 WPF UI 的 XML 文件。 以XML标签方式表示UI的重点是编写一次可以在其他地方运行它,比如Blend软件也能正常加载与编辑。

XAML 不仅仅适用于 WPF。 XAML 是一种基于 XML 的语言,它有多种变体。

WPF 中的资源是什么?

资源提供了一种简单的方法来重用已定义的对象和值。 WPF 中的资源允许一次设置多个控件的属性。 例如,可以使用单个资源在 WPF 应用程序中的多个元素上设置背景属性。

定义资源的最佳方式是在 Window 或 Page 元素级别。 为元素定义的任何资源也适用于该元素的子元素。

WPF中的Visibility.Collapsed和Visibility.Hidden有什么区别?

什么是静态资源和动态资源?

WPF控件可以分为四类:

XML 和 XAML 之间的区别:

WPF中的xmlns 和xmlns:x有什么区别?

这两个命名空间都有助于定义/解析 XAML UI 元素。

相对于Winform,WPF有什么优势?

WPF对象完整的层次结构?

MVVM设计

什么是MVVM?

MVVM(Model View ViewModel)是一个在WPF中制作应用的框架。 MVVM 与 MVC 框架相同。 它是一个三层架构,我们可以使用 MVVM 进行松耦合开发。

MVVM中的 View 和 ViewModel?

MVVM 的优势

WPF中可视化树和逻辑树的区别是什么?

WPF 用户界面的元素是分层相关的。 这种关系称为逻辑树。 一个元素的模板由多个视觉元素组成。 这棵树被称为 VisualTree。

逻辑树 描述了用户界面元素之间的关系。 逻辑树负责:

视觉树负责:

SqlServer数据库

SQL数据库的三大范式是什么?

第一范式:所有的字段不能有冗余信息,所有的字段都是必不可少的。

②第二范式:满足第一范式并且表必须有主键。

第三范式:满足第二范式并且表引用其他的表必须通过主键引用。

 

事务、视图、索引都是有什么作用

①事务:就是被绑定在一起的作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败,那么整个操作就失败,回滚到操作前状态。

②视图:视图是一种虚拟表,具有和物理表相同的功能,可以对视图进行增、改、查操作,对视图的修改不影响基本表,相比于多表查询,它使得我们获取数据更容易。

③索引:就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索,类似于生活中书的目录

存储过程的作用是什么

①存储过程是一种预编译的SQL语句

②允许模块化的设计,可以多次使用

③防止SQL注入

逆向数据库获得数据模型

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.Tools

ORM框架Entity Framework取代SQL语句

数据库映射工具AppDbContext

DbContext是实体类和数据库之间的桥梁,DbContext主要负责与数据交互

1、DbContext包含所有的实体映射到数据库表的实体集(DbSet < TEntity >)。

2、DbContext 将LINQ-to-Entities查询转换为SQL查询并将其发送到数据库。

3、更改跟踪: 它跟踪每个实体从数据库中查询出来后发生的修改变化

4、持久化数据: 它也基于实体状态执行插入、更新和删除操作到数据库中。

DbContext中的DbSet

DbSet表示上下文中指定类型的所有实体的集合或可从数据库中查询的指定类型的所有实体的集合。

image-20230209141005927

OnModelCreating

受保护的方法OnModelCreating在完成对派生上下文的模型的初始化后,并在该模型已锁定并用于初始化上下文之前,将调用此方法。虽然此方法的默认实现不执行任何操作,但可在派生类中重写此方法,这样便能在锁定模型之前对其进行进一步的配置。

数据模型向UI传递和绑定数据

数据绑定把数据从.NET对象传递给UI,或从UI传递给.NET对象。

简单对象可以绑定到UI元素、对象列表和XAML元素上。在WPF数据绑定中,目标可以是WPF元素的任意依赖属性,CLR对象的每个属性都可以绑定源。因为WPF元素作为.NET类实现,所以每个WPF元素也可以用作绑定源。

MVVM架构,对视图和模型通过视图模型实现双向绑定

Binding对象支持源与目标之间的几种绑定模式。绑定可以是单向的,即从源信息指向目标,但如果用户在用户界面上修改了该信息,则源不会更新。要更新源,需要双向绑定。

 

image-20230209153008512

Material Design UI

MaterialDesignThemes

自定义依赖属性

CalendarAttachedProperties.cs