当前位置: 首页 > news >正文

成都网站建设前十大型网站建设 教程

成都网站建设前十,大型网站建设 教程,做网站一般注册哪几类商标,十大永久免费服务器ip文章目录1. 什么是 ASP.net core2. .net 术语3. 托管资源 和 非托管资源4. GC 和 垃圾回收5. .net中所有类的基类6. 如何实现对象的深拷贝7. 依赖注入#xff0c;为什么使用依赖注入8. IOC容器的注入方法9. ASP.net core 中 服务生命周期10. scoped的 service 可以注入到 sing… 文章目录1. 什么是 ASP.net core2. .net 术语3. 托管资源 和 非托管资源4. GC 和 垃圾回收5. .net中所有类的基类6. 如何实现对象的深拷贝7. 依赖注入为什么使用依赖注入8. IOC容器的注入方法9. ASP.net core 中 服务生命周期10. scoped的 service 可以注入到 singleton的 service中吗11. AOP?12. jwt token 的原理13. asp.net 中 middleware的概念14. unmanaged types15. unmanaged code, IDisposable16. unsafe code17. 值类型和引用类型18. 装箱和拆箱19. string a 和 string a null 的 区别20. int 和 System.Int3221. int 是 System.Int32最终也继承自object为什么是值类型22. string 和 System.String23. string具有值类型的表现为什么是引用类型24 设计模式 设计原则25 LockMethod(20)会死锁吗竟然是不会的26 await 和 task.wait28.泛型28.泛型约束29 泛型 为什么可以减少装箱拆箱的损耗1. 什么是 ASP.net core 微软的 开源的 跨平台的 Web框架。比起asp.net更容易配置/模块化/扩展。 2. .net 术语 1. CLR公共语言运行时Common Language Runtime 2. CIL公共中间语言Common Intermediate Language 3. CTS通用类型系统Common Type System 4. CLS公共语言规范Common Language Specification 5. CLI公共语言基础架构Common Language Infrastructure 6. BCL基础类库Base Class Library 7. FCL框架类库Framework Class Library 8. JIT是.Net边运行边编译的一种机制Just In Time3. 托管资源 和 非托管资源 1. 托管资源 由CLR管理分配和释放的资源也就是我们直接new出来的对象公共语言运行时的垃圾回收器回收托管对象使用的内存。 2. 不受CLR控制的资源也就是不属于.NET本身的功能往往是通过调用跨平台程序集(如C)或者操作系统提供的一些接口比如Windows内核对象、文件操作、数据库连接、socket、Win32API、网络等。4. GC 和 垃圾回收 GC:.NET Framework 的垃圾回收器管理应用程序的内存分配和释放 工作方式每次您使用 new 运算符创建对象时运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用运行库就会继续为新对象分配空间。但是内存不是无限大的。最终垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。 .NET 的垃圾回收器管理应用程序的内存分配和释放。 每当有对象新建时公共语言运行时都会从托管堆为对象分配内存。 只要托管堆中有地址空间运行时就会继续为新对象分配空间。 不过内存并不是无限的。 垃圾回收器最终必须执行垃圾回收来释放一些内存。 垃圾回收器的优化引擎会根据所执行的分配来确定执行回收的最佳时机。 执行回收时垃圾回收器会在托管堆中检查应用程序不再使用的对象然后执行必要的操作来回收其内存。 5. .net中所有类的基类 Object 6. 如何实现对象的深拷贝 1. 实现一个方法来new一个新的对象对其中的引用类型属性全部new出来值类型的对应旧对象依次赋值。2. 序列化成json等格式再反序列化。7. 依赖注入为什么使用依赖注入 依赖注入将对象的生命周期交给DI框架来管理在使用这些对象的时候不需要new出来而是直接从container中获取从而降低了耦合性降低了依赖 使用依赖注入我们可以很好的管理类跟类之间的依赖在我们设计应用程序的时候遵循这几原则确保代码的可维护性和扩展性另外在Core的架构中依赖注入提供了对象创建和生命周期管理的核心能力各个组件之间的相互协作也是由依赖注入框架来实现的。 8. IOC容器的注入方法 1. 构造函数注入在构造函数中将服务已参数的方式注入到类中。 2. 方法注入通过指定的方法将服务实例传入类中。 3. 属性注入通过设置实例到属性将服务实例注入到类中。DI 容器暂不支持该注入方式(autofac支持)。9. ASP.net core 中 服务生命周期 1. Singleton 单例的注册时创建永久存在相当于静态类适合使用频繁工具类类型的service。 2. Scoped 每个request创建一次实例单个reqest之中在不同地方多次请求时返回的是同一个实例。适合大多数业务service。 3. Transient 同一request中的每次请求也会创建实例。适合轻量级的无状态的service。10. scoped的 service 可以注入到 singleton的 service中吗 通过构造函数注入的话是不被允许的因为singleton的service在注册时需要被创建而scoped service在此时并不存在实例所以无法被注入到singleton的service中。 短生命周期的无法被注入到长生命周期的service中。 通过方法注入的话可以在singlton中注入 IServiceScopeFactory/IServiceProvider通过create scope,在cope中通过serviceProvider来request相应的scoped service。 11. AOP? AOP(Aspect Oriented Programming)即面向切面编程。采用“横切”的思想将软件系统的系统功能和业务功能分开。 常用的比如 1. 缓存http request 过来之后先尝试查找缓存。 2. 验证http request过来之后立即对request进行验证。 3. 日志 http请求过来之后和出去之前对request和response记录日志。 可以通过filter或者其他来实现。 12. jwt token 的原理 json web token,由server端生成返回给前端前端的request header中携带token。 token由三部分构成头部header荷载payload签名signature。 header和payload是base64加密的可以被解析出来signature指定盐值或者私钥指定加密算法来对前两部分的base64码加密类似于校验和密码等server通过该signature来判断是否是合法token。 常用加密算法 SHA256, RS256, RSA. 13. asp.net 中 middleware的概念 位于request和 response之间的 用来出里request或者修改response的这样的组件。可以串联执行通过next方法来进入下一个middleware的处理next前后均可以添加code。 14. unmanaged types A type is an unmanaged type if it’s any of the following types: sbyte, byte, short, ushort, int, uint, long, ulong, nint, nuint, char, float, double, decimal, or bool Any enum type Any pointer type Any user-defined struct type that contains fields of unmanaged types only. 15. unmanaged code, IDisposable Managed Code - Code that could be understood and managed by CLR只会与虚拟机交互 Unmanaged Code - Code that could not handled by CLR需要直接访问虚拟机之外CLR无法完成的操作。 16. unsafe code C# supports an unsafe context, in which you may write unverifiable code. In an unsafe context, code may use pointers, allocate and free blocks of memory, and call methods using function pointers. Unsafe code in C# isn’t necessarily dangerous; it’s just code whose safety cannot be verified. Unsafe code has the following properties: Methods, types, and code blocks can be defined as unsafe. In some cases, unsafe code may increase an application’s performance by removing array bounds checks. Unsafe code is required when you call native functions that require pointers. Using unsafe code introduces security and stability risks. The code that contains unsafe blocks must be compiled with the AllowUnsafeBlocks compiler option. 17. 值类型和引用类型 基类不同 值类型继承自 System.ValueType; 引用类型继承自 System.Object; 内存分配不同 值类型的实例通常是在线程栈上分配的静态分配但是在某些情形下可以存储在堆中。引用类型的对象总是在进程堆中分配动态分配。 equal比较不同 值类型由于ValueType重写了Object的Equals()方法会使用实例的值来比较而不是地址 引用类型是使用引用地址来判断是否相等。 初始值不同 值类型具有初始值(0,‘\0’,false’) 引用类型初始值是null。 生命周期不同 值类型生命周期是其定义域。当离开定义域后立即销毁释放。 引用类型是由CLR的垃圾回收策略控制回收的具体销毁时间对开发者来说是透明的不可见的。 值类型包括C#的基本类型用关键字int、char、float等来声明结构用struct关键字声明的类型枚举用enum关键字声明的类型可空类型int?,char?而引用类型包括类用class关键字声明的类型和委托用delegate关键字声明的特殊类。 C#中的每一种类型要么是值类型要么是引用类型。所以每个对象要么是值类型的实例要么是引用类型的实例。 18. 装箱和拆箱 装箱将值类型转换为一个引用类型 装箱步骤 1. 在托管堆上分配内存内存大小为值类型所有字段的大小和类型对象指针加上同步块索引的大小。 2. 将值类型的所有字段复制到刚分配的内存中。 3. 返回刚分配的内存地址 拆箱将引用类型转换成值类型 拆箱步骤 获取引用类型所有字段对应的地址这里拆箱已经完成了。 拆箱操作完成后会发生一次字段的复制。 19. string a“” 和 string a null 的 区别 string a “” 用空字符串创建了一个新的字符串实例a指向该字符串实例只是该字符串为空可以调用方法比如a.concat/split 不会报错。分配了两块内存一块存a本身一块存a指向的字符串. string a null 将a设置为空引用不指向任何地址如果调用a.concat/split会报错null reference。只分配了一块内存存a本身。 20. int 和 System.Int32 int 是C#中对.net的 System.Int32的别名。 Object-ValueType-Int32 21. int 是 System.Int32最终也继承自object为什么是值类型 System.Object-System.ValueType(abstract)-Int32 22. string 和 System.String 别名 23. string具有值类型的表现为什么是引用类型 不是继承自System.ValueType所以不是值类型而是引用类型因为改写了Equals方法同时不可变所以表现的像是值类型。 24 设计模式 设计原则 设计模式 1. 创建型模式工厂模式单例模式建造者模式 2. 结构型模式代理模式外观模式桥接模式 3. 行为型模式观察者模式命令模式状态模式访问者模式中介者模式 设计原则 1. 开闭原则Open Closed Principle一个软件实体如类、模块和函数应该 对扩展开放对修改关闭。 2. 单一职责原则Single Responsibility Principle一个类应该只有一个发生变化的原因。 3. 里氏替换原则Liskov Substitution Principle所有引用基类的地方必须能透明地使用其子类的对象。 4. 依赖倒置原则Dependence Inversion Principle上层模块不应该依赖底层模块它们都应该依赖于抽象抽象不应该依赖于细节细节应该依赖于抽象。 5. 接口隔离原则Interface Segregation Principle每个接口中不存在子类用不到却必须实现的方法如果不然就要将接口拆分。使用多个隔离的接口比使用单个接口多个接口方法集合到一个的接口要好。 6. 迪米特法则最少知道原则(Law of Demeter)一个类对自己依赖的类知道的越少越好。无论被依赖的类多么复杂都应该将逻辑封装在方法的内部通过public方法提供给外部。这样当被依赖的类变化时才能最小的影响该类。 7. 合成复用原则Composite Reuse Principle尽量使用对象组合/聚合而不是继承关系达到软件复用的目的。 25 LockMethod(20)会死锁吗竟然是不会的 private static readonly object lock1 new object();public void LockMethod(int n){lock (lock1){if (n 10){n--;LockMethod(n);}}}将这段代码拷入VS中运行发现没有进入死锁于是想找个权威的理由来解释它终于在《CLR via C#》第二版中文版清华大学出版社出版的第530页中第7行找到了这样的描述“同样需要引起注意的是线程可以递归拥有同步块”。即同一线程可以递归调用lock语句。 26 await 和 task.wait await 是 异步等待会切换线程 task.wait 是 同步等待。 28.泛型 List, List 28.泛型约束 约束 描述 where T : struct 类型参数必须是不可为 null 的值类型。 有关可为 null 的值类型的信息请参阅可为 null 的值类型。 由于所有值类型都具有可访问的无参数构造函数因此 struct 约束表示 new() 约束并且不能与 new() 约束结合使用。 struct 约束也不能与 unmanaged 约束结合使用。 where T : class 类型参数必须是引用类型。 此约束还应用于任何类、接口、委托或数组类型。 在 C#8.0 或更高版本中的可为 null 上下文中T 必须是不可为 null 的引用类型。 where T : class? 类型参数必须是可为 null 或不可为 null 的引用类型。 此约束还应用于任何类、接口、委托或数组类型。 where T : notnull 类型参数必须是不可为 null 的类型。 参数可以是 C# 8.0 或更高版本中的不可为 null 的引用类型也可以是不可为 null 的值类型。 where T : default 重写方法或提供显式接口实现时如果需要指定不受约束的类型参数此约束可解决歧义。 default 约束表示基方法但不包含 class 或 struct 约束。 有关详细信息请参阅default约束规范建议。 where T : unmanaged 类型参数必须是不可为 null 的非托管类型。 unmanaged 约束表示 struct 约束且不能与 struct 约束或 new() 约束结合使用。 where T : new() 类型参数必须具有公共无参数构造函数。 与其他约束一起使用时new() 约束必须最后指定。 new() 约束不能与 struct 和 unmanaged 约束结合使用。 where T : 类型参数必须是指定的基类或派生自指定的基类。 在 C# 8.0 及更高版本中的可为 null 上下文中T 必须是从指定基类派生的不可为 null 的引用类型。 where T : ? 类型参数必须是指定的基类或派生自指定的基类。 在 C# 8.0 及更高版本中的可为 null 上下文中T 可以是从指定基类派生的可为 null 或不可为 null 的类型。 where T : 类型参数必须是指定的接口或实现指定的接口。 可指定多个接口约束。 约束接口也可以是泛型。 在 C# 8.0 及更高版本中的可为 null 上下文中T 必须是实现指定接口的不可为 null 的类型。 where T : ? 类型参数必须是指定的接口或实现指定的接口。 可指定多个接口约束。 约束接口也可以是泛型。 在 C# 8.0 中的可为 null 上下文中T 可以是可为 null 的引用类型、不可为 null 的引用类型或值类型。 T 不能是可为 null 的值类型。 where T : U 为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。 在可为 null 的上下文中如果 U 是不可为 null 的引用类型T 必须是不可为 null 的引用类型。 如果 U 是可为 null 的引用类型则 T 可以是可为 null 的引用类型也可以是不可为 null 的引用类型。 29 泛型 为什么可以减少装箱拆箱的损耗 list写死是objectList的话也完全可以替代 List 和 List但是此时比如list.add(1)的时候这个1就会先进行装箱。由这里例子可以看出泛型可以一定程度上避免直接使用object来涵盖所有类型的用法从而避免装箱损耗。
http://www.dnsts.com.cn/news/145936.html

相关文章:

  • 广告制作公司名字系统优化大师下载
  • 静态企业网站模板毕业设计医院网站设计怎么做
  • 西安跨境电商平台网站网站建设 成功案例
  • 搜款网站一起做网店浦东新区建设机械网站
  • 网站建设费用入什么科目设计素材图库
  • postgresql做网站用什么环境怎样开通app软件
  • 泰兴市建设局网站建站技术博客
  • php mysql网站开发实例教程西安平台搭建
  • 网站建设确认报告中太建设集团股份有限公司网站
  • 制作网站需要多少钱项目计划书团队介绍
  • 三五互联网站管理登录地址是多少网站建设遇到的问题及对策
  • 网站设计模板简约福州搜索引擎优化
  • 自己做发小说网站哪家公司可以做网站
  • 学校网站建设渠道品牌建设的四条主线
  • 建站工具也成为什么系统dwcc网页制作教程
  • 东莞网站制作公司怎么选择深圳市官网网站建设平台
  • 网站内容建设pptwordpress主题 电影
  • 网站职业技能培训有哪些项目wordpress火车头发布
  • 网站开发软硬件条件网络服务商英文
  • html5网站网址photoshop破解版下载免费中文版
  • 山西电力建设一公司网站微信怎么做自己的网站
  • 成都企业网站建设哪家专业中国建筑业发展现状
  • 做网站用什么后缀好网站里的动效怎么做
  • 厦门优秀的网站设计网站开发用什么代码
  • 中国建设银行网官方网站做网站要学的代码
  • 做网站ddos攻击网站开发 怎么才能发表情
  • 叫人做网站多少钱Wordpress news模板
  • 横沥做网站网站怎么上传ftp
  • 网站实现中英文形象墙在线设计网站
  • 淘宝网站建设单子好接吗房屋建筑图纸设计说明