【2022年6月29日】——群后端知识点整理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

群里产生的知识点,Mark一下


提示:以下是本篇文章正文内容,下面案例可供参考

0、目录,可自测

非虚方法不能实现重写么?不是虚方法的话不能重写
const与readonly的区别,问了我readyonly是只读为什么可以赋值?
using中抛异常,资源是否会释放?会被释放掉,readonly可被赋为static
get与post的本质区别

【不会】
whenall如何用其他方式来实现同等效果并说出区别
fromroute与fromquery的区别

【其他】
base64加密
SHA512
手写数据库
静态类重写方法.
【知识】C#里重写是override 覆盖是new
const final 跟readonly区别

一、非虚方法不能实现重写么?

可以实现,比如抽象方法。

扩展问题:

1.1 虚方法是什么?

虚方法可以有实现体,若一个实例方法的声明中含有 virtual 修饰符,则称该方法为虚方法。
使用了 virtual 修饰符后,不允许再有 static、abstract 或者 override 修饰符。

1.2 虚方法作用

  1. 允许派生类(即其子类)对父类进行扩展。
  2. 虚方法是多态特性的一种体现。
  3. 增加开发过程中的可维护性,条理清晰明了。

1.3 虚方法执行

1.当调用一个对象的方法时,系统会直接去检查这个对象申明定义的类,即申明类,看所调用的方法是否为虚方法。

2.如果不是虚函数,那么它就直接执行该函数。如果有virtual关键字,也就是一个虚方法,那么这个时候它就不会立刻执行该函数了,而是转去检查对象的实例类。

3.在这个实例类里,它会检查这个实例类的定义中是否有实现该虚方法(通过new关键字)或是否有重新实现该虚方法(通过override关键字)。
如果有,那么OK,它就不会再找了,而马上执行该实例类中的这个重新实现的方法。
而如果没有的话,系统就会不停地往上找实例类的父类,并对父类重复刚才在实例类里的检查,直到找到第一个重载了该虚方法的父类为止。
然后执行该父类里重载后的方法。

**虚方法另外一些点:

  • 可以使用抽象方法重写基类中的虚方法
  • 密封类可以重写基类中的虚方法(基类中的虚方法将隐式的转化为非虚方法,但密封类本身不能再增加新的虚方法)**

1.4 抽象方法和虚方法的区别是什么

下面写了参考文献了

1.5什么方法可以重写?【原来问题叫:C#中子类重写父类方法的几种情况】

override:标识重写父类的方法,父类方法必须是用abstract,virtual,override之一声明,运行时将根据实例的类型而不是引用的类型调用对象的方法。

本节参考文献 https://blog.csdn.net/liu991029/article/details/106820817
1.4 参考文献 https://blog.csdn.net/qq_36482772/article/details/77861706
1.5 参考文献 https://blog.csdn.net/jinsikui/article/details/5924841


二、const与readonly的区别,问了readyonly是只读为什么可以赋值?

2.1 答案

const与readonly的区别?一个静态、一个动态
readonly只能在构造函数里赋值。
此外const常量既可以声明在类中也可以在函数体内,但是static readonly常量只能声明在类中。

2.2 解释

C#语言中两种不同的常量类型:静态常量(compile-time constants)和动态常量(runtime constants)。

2.2.1 静态常量与动态常量概念

静态常量是指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值。而动态常量的值则是在运行的那一刻才获得的,编译器编译期间将其标示为只读常量,而不用常量的值代替,这样动态常量不必在声明的时候就初始化,而可以延迟到构造函数中初始化。

2.2.2 静态常量与动态常量特性

1)const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化
2)const修饰的常量在编译期间就被解析,即常量值被替换成初始化的值;readonly修饰的常量则延迟到运行的时候

2.2.3 静态常量与动态常量性能比较

在这里插入图片描述
收获:《.Net 程序员面试宝典》, this is a book!
参考文献:https://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html#:

三、using中抛异常,资源是否会释放?

在编译阶段using内部就会自动生成try…finally块
在这里插入图片描述
参考文献:https://blog.csdn.net/xc917563264/article/details/89918801

四、fromroute与fromquery的区别

fromquery 表示参数来自地址栏。
FromRoute 表示参数在路由(url)中,不是那个带?和&的查询字符串

参考文献:
https://www.iaspnetcore.com/blogpost-594960eb84cd453380655bc9-aspnet-usage-scenarios-and-principles-of-core-mvc-model-binding-fromheader-fromquery-fromroute-fromform-frombody

五、get与post的本质区别

报文格式不同、且GET产生一个TCP数据包,POST产生两个TCP数据包。

补充知识:
GET用来获取资源,它只是获取、查询数据,不会修改服务器的数据,从这点来讲,它是安全的(后面还会从另一方面分析它的不安全性)。由于它是读取的,因此可以对GET请求的数据进行缓存。

POST则是可以向服务器发送修改请求,进行数据的修改的。

参考文献:
https://zhuanlan.zhihu.com/p/135454697
https://new.qq.com/omn/20210309/20210309A073CU00.html

总结

为啥列了那么多,只写了一半呢。因为查不动了。qaq

如有错误和补充,欢迎在评论区留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值