.NET重点
B/S C/S
B/S:
浏览器端:JavaScript,HTML,CSS
服务器端:ASP(.NET)PHP/JSP
优势:维护方便,易于升级和扩展
劣势:服务器负担沉重
C/S
java/.NET/VC系列
优势:客户端响应速度快
劣势:系统可扩展性和可维护性差
企业级应用系统几层架构
2,3,N
.NET定义
新平台+标准协议+统一开发工具
.NET核心组件
一组创建互联网操作系统的构建块
构建和管理新一代服务的基本结构和工具
能够启用新型智能互联网设备的.NET设备软件
.NET Framework三个主要组成部分
公共语言运行时(CLR)作用:负责整个.NET执行期间的代码管理工作
服务框架
两类应用模版(传统Windows应用程序模版和基于ASP.NET面向web的应用程序模版)
asp.net定义
继ASP后推出的全新动态网页制作技术
.NET Standard 和框架的区别
.NET Standard只是规范,一个.NET Standard类库可以被.NET Framework,.NET Core等引用,而.NET Framework类库则不可以。所以编写一个公用类库,尽量选择低版本.NET Standard
.NET Framework和.NET Core 区别
.NET Framework:无法独立部署,ASP.NET与IIS深度耦合,不能跨平台
.NET Core:支持独立部署,不依赖IIS,能跨平台
.NET开发工具
.NET CLI:命令行
Visual Studio:只Windows
Visual Studio for Mac
VS Code(Visual Studio Code):跨平台
Nuget命令
安装:Install-Package XXX -version(把依赖组件都下载了)
卸载:Uninstall-Package XXX
更新到最新版:Update-Package XXX
get post 区别
GET:用于获取或查询信息,数据放到URL后,通过Request.QueryString来获取变量值,提交数据大小有限制
POST:用于更新信息,数据放在http包的body中,通过Request.Form来获取变量值,提交数据大小无限制
program.cs作用
此文件中的会创建一个带有预配置默认值的 WebApplicationBuilder,向DI 容器添加 Razor Pages 支持,并生成应用
三种常见的方法可以使用 ASP.NET Core 构建新式 Web UI
服务器控件:从服务器呈现UI的应用
浏览器控件:在浏览器的客户端呈现UI的应用
混合:利用服务器和客户端UI呈现方法的混合应用
依赖注入作用
1.控制器或Razor页面不使用具体类,仅使用他的接口。可以实现更改时,无需修改控制器和页面
2.减少类之间依赖,提高模块独立性
3.让开发者更容易编写单元测试
中间件是什么
中间件是一种在应用管道中处理请求和响应的软件。
(每个中间件组件:选择是否将请求传到管道下一个组件,可在管道下一个组件前后执行
中间件在B/S模式下功能层作用)
中间件用法

C#
C#语言概述-CSDN博客
泛型
一组或一类事物的特性
列表
Contains
字典
ContainsKey
队列 栈
Enqueue
Peek
Dequeue
Push
Pop
Peek
LINQ
概念:LINQ是直接将查询功能集成到C#语言的技术统称。
功能:可以简化数据查询
using System.Linq

方法语法

查询语法










orm概念
通过操作C#对象方式来操作数据库。
Entity Framework Core(EF Core)
EF Core 是ORM框架,适用于.NET的新式对象数据库映射器。
核心组件
DbContext
派生自DbContext的类
EF Core提供程序
数据库提供程序
迁移 反向工程
基本命令
反向工程:管理器控制台的Scaffold-DbContext命令
或者用命令行接口(CLI)的dotnet ef dbcontext scaffold命令
迁移:创建迁移 dotnet ef migrations add 迁移名
更新数据库 dotnet ef database update
变更模型 dotnet ef migrations add 迁移名

定义数据库和模型
数据库根据一个派生自DbContext的类建模。这个类包含一个或多个DbSet<T>的类

customer类描述了Custmoers表中数据
注入连接字符串(不考)
在定义的数据库中重写OnConfiguring,并在其中的UseSqlServer(“连接字符串”)

对不同环境下使用不同连接字段串

同时设置配置文件读取该字符串,用该配置文件来设置 UseSqlServer,这样就可以满足一个连接字符串可以在不同环境下使用

注入dbcontext对象
方法一:直接将当前数据库上下文添加到DI子系统中,从而能在应用程序的任何地方获取该对象,并进行配置作用域为当前请求

方法二:自己创建数据库上下文实例,根据需要为他们分配生存期,并在上下文注入连接字符串
EF Core查询
单次查询

多次查询
方法一
用透明事务将查询结果连接

方法二

方法三

添加

删除
异步作用
可以避免性能瓶颈并增加应用程序的总响应能力
原理
async方法会被C#编译器编译成一个类,会根据await调用切分成多个状态,对async调用会被拆分成MoveNext的调用。
MVC概念
是一种使用了MVC(模型-视图-控制器)设计创建Web应用程序的模式,同时提供了对HTML,CSS和JavaScript的完成控制
三个组件
模型:表示应用程序核心。处理应用程序数据逻辑
视图:展示数据
控制器:处理用户交互
传统路由
显式路由参数

隐式路由参数

特性路由
其思想是,不是在应用程序启动时显式定义一个路由表,而是用专用的路由特性修饰控制器方法。路由特性将在内部填写系统的路由表
控制器获取数据
从Request获取数据

存在问题:需要知道从什么地方获取值,如URL,查询字符串等,用不同API进行访问
任何值都返回字符串,需进行类型转换
从RouteData获取数据

模型绑定
只关注控制器方法收到的数据,忽略数据的获取和来源

默认模型绑定器
任何传入的请求都会经过内置的绑定器对象,对应与DefaultModeBinder类的实例。试图在请求上传的任何数据中找到匹配名称。
绑定基本类型
在请求上下文获取数据,绑定器会寻找可行值,寻找命名值的匹配,如果没有匹配,则参数异常或返回默认值,命中则自动绑定

强制从给定来源绑定
FromQuery ,FromRoute,FromForm强制匹配固定词,如果没有就使用声明的默认值。


匹配city=London,如果没有city=London,则使用声明的默认值
绑定复杂类型
传送容器类
筛选器分类
操作筛选器

可以通过重写筛选器内方法来决定调用该方法前后做什么
授权筛选器:确定发出请求用户是否有权限发出
资源筛选器:在管道其余部分之前以及管道组件之后运行
操作筛选器:控制器方法操作之前和之后运行
异常筛选器:发生未处理异常时触发
结果筛选器:结果执行之前和之后运行
筛选器可以有同步和异步实现
提供HTML
终止中间件提供HTML(通过算法完成)
终止中间件是处理请求的一段代码
即一个处理http请求的函数。代码可以做任何操作,浏览器把他作为HTML呈现

从控制器提供HTML内容
在操作方法中提供纯文本(通过算法完成)

Razor模版(通过模版完成)
用视图引擎(调用View)将Razor渲染成HTML

封装了Razor模版和视图模型对象(封装了数据)
调用视图引擎
视图引擎负责从视图(一般是C#加上HTML混合)创建HTML
View方法
视图是一个Razor文件,在View文件夹下
model指出模版中使用数据类型,以生成HTML

ViewResult 对象
将Razor模版名称,母版页视图和视图模型打包成实现IActionResult接口对象。类名为ViewResult

当调用ExecuteResultAsync,触发视图引擎生成HTML
综合应用
视图引擎会将视图模版(模板中的占位符将被替换为计算出的数据)和控制器传入数据混合,并进行HTML创建
模版是引擎指定语言(如Razor)
传入数据则封装到字典或强类型对象

控制器和视图引擎生成视图原理
控制器
控制执行流之后,保存一个文本字符串,其知道字符串是用HTML构成的,然后用HTML MIME类型修饰文本后,控制器返回这个文本字符串
视图引擎
视图引擎被触发后,会读取对应的模板文件,并将控制器提供的数据填充进去,得到完整HTML后将其返回
向视图传递数据
通过@inject指令实现依赖注入(不考)
使用内置字典ViewData
Controller基类提供Viewdata属性,该属性自动刷新到动态创建的RazorPage<T>类实例
意味着控制器ViewData存储任何值都可在视图使用,不用人为操作

使用内置字典Viewbag



使用强类型视图模型类
强类型视图模型类表现更好
razor
基本语法

指令
@using 在编译上下文添加一个命名空间
@inherits 指出为动态生成Razor视图对象使用实际基类
@model 指出用来向视图传递数据类的类型
@inject 在视图上下文注入指定类型的实例,该类型绑定到给定属性名
部分题目





正确

Request.Query["uid"]


MSIL
![]()
拾遗









相关文章:
.NET重点
B/S C/S B/S: 浏览器端:JavaScript,HTML,CSS 服务器端:ASP(.NET)PHP/JSP 优势:维护方便,易于升级和扩展 劣势:服务器负担沉重 C/S java/.NET/VC系列 …...
SMMU软件指南SMMU编程之虚拟机结构和缓存
安全之安全(security)博客目录导读 目录 一、虚拟机结构(VMS) 二、缓存 一、虚拟机结构(VMS) 虚拟机结构(VMS)是SMMU中的概念,是一个由STE.VMSPtr字段指向的结构,包含每个虚拟机的配置设置。在相同安全状态下具有相同虚拟机ID(VMID)的多个STE必须指向相同的VMS。…...
Go 语言并发实战:利用协程处理多个接口进行数据融合
高效地处理多个数据源并将其整合为有意义的结果是开发中一项重要的任务。Go 语言,以其强大的并发特性,为我们提供了优雅而高效的解决方案。那么我们探讨一下如何利用 Go 语言的协程,同时调用多个接口获取数据,并将这些数据无缝地合…...
Redis Hash Tag 知识详解
一、Redis Hash Tag概述 Redis Hash Tag是Redis集群环境里用于控制数据分片的关键机制。在Redis集群中,数据依据键的哈希值来确定分片存储位置。Hash Tag能让用户指定键的特定部分作为哈希计算核心部分,进而使相关键存储于同一节点,这对处理…...
在 Ubuntu 上安装 Muduo 网络库的详细指南
在 Ubuntu 上安装 Muduo 网络库的详细指南 首先一份好的安装教程是非常重要的 C muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装-CSDN博客 像这篇文章就和shit一样,安装到2%一定会卡住,如果你不幸用了这个那真是遭老罪了 环境…...
Golang Gin Redis+Mysql 同步查询更新删除操作(我的小GO笔记)
我的需求是在处理几百上千万数据时避免缓存穿透以及缓存击穿情况出现,并且确保数据库和redis同步,为了方便我查询数据操作加了一些条件精准查询和模糊查询以及全字段模糊查询、分页、排序一些小玩意,redis存储是hash表key值也就是数据ID&…...
nodejs搭配express网站开发后端接口设计需要注意事项
nodejs搭配express网站开发后端接口设计需要注意事项!为了回避一些常见的误区,今天和大家汇总一下,最近我遇到的一些错误信息,虽然都是小问题,但是还是需要分享一下,以免大家再次犯错。 1:第一个…...
mysql 基于chunk机制是如何支持运行期间,动态调整buffer pool大小的
mysql 基于chunk机制是如何支持运行期间,动态调整buffer pool大小的 MySQL 的 InnoDB 存储引擎确实支持在运行期间动态调整缓冲池(buffer pool)的大小,但其机制与自定义缓存系统有所不同。InnoDB 通过内部优化和配置参数来实现这…...
智能客户服务:AI与大数据的革新力量
在当今信息技术日新月异的时代,大数据和人工智能(AI)正逐步成为推动各行各业变革的重要力量。尤其是在客户服务领域,大数据与AI的深度融合正引领着客服系统的全面革新。 一、大数据与AI在智能客服系统中的应用 智能客服系统是一种…...
Python日常使用的自动化脚本
Python日常使用的自动化脚本 LinkDescriptionsort_files根据文件扩展名将目录中的文件组织到子目录中remove_empty_folders删除所有空的文件夹rename_files批量重命名目录中的文件scrape_data从网站上抓取数据download_images从网站批量下载图片count_words统计指定文件中的单…...
代理模式(JDK,CGLIB动态代理,AOP切面编程)
代理模式是一种结构型设计模式,它通过一个代理对象作为中间层来控制对目标对象的访问,从而增强或扩展目标对象的功能,同时保持客户端对目标对象的使用方式一致。 代理模式在Java中的应用,例如 1.统一异常处理 2.Mybatis使用代理 3.Spring…...
【Leetcode 热题 100】236. 二叉树的最近公共祖先
问题背景 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 最近公共祖先的定义为:对于有根树 T T T 的两个节点 p p p、 q q q,最近公共祖先表示为一个节点 x x x,满足 x x x 是 p p p、 q q q 的祖先且 x x x 的深度尽可能大…...
Go框架比较:goframe、beego、iris和gin
由于工作需要,这些年来也接触了不少的开发框架,Golang的开发框架比较多,不过基本都是Web"框架"为主。这里稍微打了个引号,因为大部分"框架"从设计和功能定位上来讲,充其量都只能算是一个组件&…...
Kafka Streams 在监控场景的应用与实践
作者:来自 vivo 互联网服务器团队- Pang Haiyun 介绍 Kafka Streams 的原理架构,常见配置以及在监控场景的应用。 一、背景 在当今大数据时代,实时数据处理变得越来越重要,而监控数据的实时性和可靠性是监控能力建设最重要的一环…...
数据结构 -- 二叉树
目录 1、二叉树概念及结构 1.1、概念 1.2、特殊的二叉树 1.3、二叉树的性质 1.4、二叉树的存储结构 1.4.1、顺序存储 -- 看截图:二叉树的顺序存储 1.4.2、链式存储 -- 非完全二叉树用这种方式存储 2、二叉树的遍历 2.1、前序、中序以及后序遍历2.2、层序遍…...
redis数据转移
可能有时候因为硬件的原因我们我们需要更换服务器,如果更换服务器的话,那我们redis的数据该怎样转移呢,按照一下步骤即可完成redis数据的转移 1.进入redis客户端 2.使用 bgsave命令进行数据的备份,此命令完成后会在你的redis安装目…...
Ubuntu Netlink 套接字使用介绍
Netlink 套接字 是 Linux 特有的一种 IPC(进程间通信)机制,用于用户态进程和内核模块之间的通信。它可以用来完成路由管理、设备通知、网络状态更新等任务。 1. Netlink 的基本工作原理 Netlink 是一种双向通信机制。Netlink 消息分为请求和…...
spring boot密码加密方式
1. BCrypt 原理 BCrypt是一种专为密码哈希设计的算法,它被广泛认为是安全的选择之一。它不仅是一个单向函数(即只能加密不能解密),而且还内置了盐(salt)生成机制来防止彩虹表攻击。BCrypt的一个重要特点是…...
springboot根据租户id动态指定数据源
代码地址 码云地址springboot根据租户id动态指定数据源: springboot根据租户id指定动态数据源,结合mybatismysql多数源下的事务管理 创建3个数据库和对应的表 sql脚本在下图位置 代码的执行顺序 先设置主数据库的数据源配置目标数据源和默认数据源有了主库的数据源ÿ…...
使用C语言编写UDP循环接收并打印消息的程序
使用C语言编写UDP循环接收并打印消息的程序 前提条件程序概述伪代码C语言实现编译和运行C改进之自由设定端口注意事项在本文中,我们将展示如何使用C语言编写一个简单的UDP服务器程序,该程序将循环接收来自指定端口的UDP消息,并将接收到的消息打印到控制台。我们将使用POSIX套…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...
2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章 摘要: 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言,受限于 C 语言本身的内存安全和并发安全问题,开发复杂模块极易引入难以…...









