爱摸鱼的Demon
首页
前端知识
后端技术
工程实践
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

爱摸鱼的Demon

我的地盘,欢迎光临。
首页
前端知识
后端技术
工程实践
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • C#

    • c#慕课课程
  • Golang

  • 后端技术
  • C#
DemonW-X
2025-09-29

c#慕课课程

1.CLI与CLR

CLI:Common Language Infrastructure 公共语言基础框架,处理代码过程

CLR:Common Language Runtime 公共语言运行时(服务环境,运行环境)

2.Console IO操作工具集

1)Write与WriteLine

Write:直接将数据显示在命令行中不做处理

WriteLine:数据显示在命令行中并换行

2)Read、ReadKey与ReadLine

Read:每次读取用户第一次按下的键盘按钮

int a = Console.Read();
Console.WriteLine(a);
/*
A
65
*/
1
2
3
4
5
6

ReadLine:可以读取回车前输入的所有数据,并换行

string a = Console.ReadLine();
Console.WriteLine(a);
/*
Good Afternoon!
Good Afternoon!
*/
1
2
3
4
5
6

ReadKey:输出指令类ASCII码,例如回车

ConsoleKeyInfo c = Console.ReadKey(); 
Console.WriteLine(c.Key);
/*输入回车
Enter
*/
1
2
3
4
5

3)Clear

Clear:将命令行中所有命令删除

Console.Clear();
/*输入回车

*/
1
2
3
4

3.区分数据类型的意义:防止做无效操作

4.基本数据类型

注意:中文只能用string表示,而不能用char表示。

5.内建类型:string,object,dynamic

6.if 、switch和三元运算

三个以上建议使用switch

三元运算(?:):适用于两个判断

格式:条件(输出为true或false)?结果1(true进入结果):结果2(false进入结果)

7.方法及其签名

8.功能的聚合问题(功能高内聚,模块低耦合)

耦合:依赖问题,类A依赖于类B,当类B做出修改时,类A需要重新编译

当牵一发而动全身时,就会出现高耦合的现象

实现低耦合的方法:

1.封装,对业务逻辑实现细节的隐藏

2.类的关联性,依赖、关联、聚合、组合、泛化等(耦合度一次递增)

3.使用接口(重中之重)

9.索引

10.局部类

11.向上转型&向下转型

向上转型(upcasting):把一个派生类类型转换为ta的基类

向下转型(downcasting):把一个基类转换为ta的某个派生类

public class Shape{
    //comment
}
public class Circle : Shape{
    //comment
}
Circle circle = new Circle();
//向上转型,隐式转换
Shape shape = circle;
//向下转型,显式转换,转化可能失败
Circle circle2 = (Circle)shape;
Car car = (Circle)shape;//转换失败,抛出异常,可以用as
Car car = shape as Circle;
if(car != null){
    //执行后续操作
}
/*or
if(car is Circle){
    Car car = (Circle)shape;//绝对不会出错
}
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

12.装箱与拆箱

装箱(boxing):值类型转化为引用类型的过程,基本类型转化为对象类型,保存位置由栈(Stack)转移到堆(Heap)中。

拆箱(unboxing):引用类型转化为值类型的过程,对象类型转化为基本类型,保存位置由堆(Heap)转移到栈(Stack)中。

object obj = 10;
int number = (int)obj;
1
2

注意:装箱和拆箱都有比较明显的性能问题,一般用泛型进行解决(List<>)

值对象不可以为null

13.多态:内存一致,数据一样,但表现形态多种多样,具有可替换性、可扩充性、接口性、灵活性、简化性

14.abstract抽象:声明修饰符,可以修饰类、方法、属性,只有声明,没有逻辑,不需要在基类中实现此方法,只能在派生类处理,且当某个成员被声明为abstract时,整个class都要声明为abstract,派生类必须实现抽象类中所声明的所有抽象方法和抽象属性,不可以实例化

15.sealed密封类:防止类继承、防止派生类重写,不仅可用来修饰,同样可以修饰类成员

16.依赖注入和控制反转(从不同角度描述同一件事)

依赖注入(DI-Dependencies Injection)在类以及依赖项之间实现控制反转(IoC)的技术,实现类似系统配置、日志记录和选项模式等功能模块的解耦。

控制反转(IoC,Inversion of Control)把复杂系统分解成相互合作的对象,这些对象类通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,而且可以灵活地被重用和扩展。

好处:低耦合性、标准性、可重复性

实现原理:依赖注入的实现原理是基于控制反转的概念,允许程序通过外部定义的方式来提供对象所需的依赖。

17.开闭原则(Open Close Principle)

对系统扩展是开放的,对修改是关闭的。

18.结构体(struct)与类(class)

19.静态类型语言和动态类型语言

静态类型语言会在编译的适合检查数据类型。

动态类型需要程序运行起来,数据类型才会被确定下来。

类型能否转换:强类型&弱类型

var:代替程序员自动对类型做出判断

dynamic:不运行到这一行都不确定这个类型,即通配类型

20.反射(Reflection):实例化独享但不使用new,不知道目标对象类型。在运行过程中查看或者使用元数据的过程,元数据(=数据的数据)保存在程序集(Assembly)中。

特点:不使用new关键词实例化,可以进一步的解耦

21.委托,即方法指针,仅仅指向方法的名称,不表示具体执行过程。是一种数据类型,所处理的方法引用过程的类型。委托必须与被委托的方法“类型兼容”。

22.Func&Action

Func:有返回值

Action:没有返回值

23.图标

24.自定义事件

event-in-general:事件完整声明

field-like:字段式声明

25.MVC与三层架构

三层架构基本原则:下层无法调用上层代码,跨层级之间无法互相访问。(代码解耦+数据隔离)

MVC优点:耦合性低,可复用性高,可维护性高

MVC缺点:定义不明确,结构复杂,数据流动效率低

26.ORM(Object-Relational Mapping),对象关系映射,一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。在面向对象的编程语言中,将关系型数据库中的数据映射成对象,以对象的形式展现,程序员把对数据库的操作转化为对这些对象的操作,简化了操作,提高了开发效率,但可能会引入一些性能开销,特别是在处理大量数据时。

c Sharp 中的ORM框架:Entity Framework。

27.Entity FrameworkCore 配置

28.MVVM(Model-View-ViewModel):软件架构设计模式,主要用于构建用户界面的应用,由Model、View和ViewModel三个核心部分构成。

29.索引器和迭代器

索引器:[],可以通过索引器查找到对应位置的数据。

迭代器:通过迭代器将数据遍历访问。头尾不指向数据。

30.面向对象思路的链式写法

//正常sql查询某用户家庭地址的邮编
select ZipCode
From User
Left Join Address ON User.id = Address.Userid
where User.id = $id
//链式写法(代码)
User.Address.ZipCode
1
2
3
4
5
6
7

31.REST(REpresentational State Transfer 表征性状态转移)

特点:无状态,面向资源,使用HTTP动词表示操作,HATOAS(超媒体即应用状态引擎)

适用于面向对象的数据处理,不适合处理面向过程的操作。

RESTful API:REST风格的API

RESTful核心:面向资源

32.RESTful的6条约束

33.HTTP请求方法与资源交互

put vs patch

put:对某个资源所有字段进行更新

patch:对某个资源所选的某几个字段进行部分更新

34.HTTP状态码

35.内容协商:允许客户端和服务器通过协商来决定相互之间的数据传输格式、语言等内容。

36.DTO(Data Transfer Object 数据传输对象):面向UI,实现了表现层和业务层的解耦

举例:只得到一个username的输出

37.IQeryable的逻辑和目的

38.Attribute

39.命令式语法和声明式语法

命令式语法:过程导向,适合处理对象关系和逻辑过程

声明式语法:结果导向,适合处理数据关系

40.匿名方法:创建一种没有名称的方法,随见随用,随用随弃。创建的同时会被调用,调用完成马上被废弃。

1)通过委托delegate

IEnumberable<string> filteredlist = customer.Where(delegate (string s){
    return s.StartWith("A");//内联方法 inline
}))
1
2
3

2)通过Lambda表达式

IEnumberable<string> filteredlist = customer.Where(s=> s.StartWith("A");
1

41.Linq

1)查询:方法查询(对象) vs 结构化查询(like sql)

2)数据量化:Any、All、Contains

3)数据分组:group

4)数据分组连接:group join

5)数据聚合

42.进程和线程

线程:程序执行最小单元

前台线程:主线程结束但子线程依旧在运行,持续运行的子线程称为前台线程,一般比较重要,只有所有的前台线程执行完成后整个程序才可以被关闭。new Thread()创建的线程一般为前台线程。

后台线程:随着主程序的结束而结束。

43.多线程与异步、同步与异步

多线程处理并发操作,多个线程依次执行。通常用Thread。

异步处理并行操作,多个线程同时执行。通常用Task。

同步方法:程序调用某一个方法,需要等待执行完成后才进行下一步操作。

异步方法:程序调用某一个方法后,不做任何等待处理,在等待完成前返回该方法,继续执行接下来的操作。

异步的优点:减少客户端的等待时间,减少服务端的压力

44.异步方法的代码

声明:async

返回类型:Task、Task、void、IAsyncEnumerable

函数表达式:其中需要await

命名规范:Async结尾

async函数只能被async函数调用,async会改变函数结构,返回类型也会发生改变

异步控制的步骤:

45.Dispose

1)可以用来回收如数据库连接、文件读取、http长连接等无法托管在.net平台中的外部资源

2)使用时必须实现IDisposable接口

2)IDisposable接口需要配合using关键词才能完成生命周期的托管

46.JWT(Json Web Token)与Session

JWT作用是用户授权,替换了cookie,信息只需要保存在客户端,实现无状态登陆。

传统的Session登录时,服务器会保存登陆的session信息,session ID会通过cookie传递给前端,http请求会附带cookie,实现有状态登陆。

JWT优点:

1)无状态,简单、方便、完美支持分布式部署

2)非对称加密,Token安全性高

缺点:

1)无状态,Token一经发布无法取消

2)明文传递,Token安全性低(使用https可以解决)

46.有限状态机:一种用来进行对象行为建模的工具,主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。 (using Stateless;)

四要素:1.现态:指当前所处的状态

2.条件:也叫事件,触发一个动作执行一次状态迁移

3.动作:条件满足后执行的动作

4.次态:条件满足后要迁往的新状态

47.数据塑形:让客户端可以定制化选择性后端输出数据的技术。

方法:可以不用将全部的字段进行输出,根据传入的参数可以输出所需要的字段以及其数据。

48.HATEOAS(Hypermedia as the engine of application state),超媒体即应用状态引擎,打破了客户端与服务端之间的严格契约,REST服务本身的演化和更新也变得更加容易。

核心动态组件:Link(不属于restful资源)

herf:用户可以用来检索资源或者改变应用状态的URL

rel:用来描述资源和url的关系。

method:和此url需要的http方法。

响应参杂着资源以及操作,违反了restful定义。(内容协商)

49.媒体类型(MIME,Multipurpose Internet Mail Extensions)是一种标准,用来表示文档、文件或字节流的性质和格式。

通用结构:type(独立类别)/subtype(细分后的子类型)

自定义媒体类型(Vendor-specific media type),供应商特定媒体类型

结构(举例):application/vnd.mycompany.hateoas+json

vnd:Vendor的缩写,表示供应商

mycompany:自定义标识,公司名

hateoas:返回的响应要包含的超媒体链接

+json:输出的数据结构

编辑 (opens new window)
GO环境安装

GO环境安装→

最近更新
01
Gorm之事务
11-13
02
Gorm之关联进阶版
11-13
03
Gorm之根据外键关联表
11-13
更多文章>
Theme by Vdoing | Copyright © 2022-2025 爱摸鱼的Demon | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式