.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套…...

【AI】✈️问答页面搭建-内网穿透公网可访问!
目录 👋前言 👀一、后端改动 🌱二、内网穿透 💞️三、前端改动 🍹四、测试 📫五、章末 👋前言 小伙伴们大家好,上次本地搭建了一个简单的 ai 页面,实现流式输出问答…...

计算机毕业设计原创定制(免费送源码):NodeJS+MVVM+MySQL 樱花在线视频网站
目 录 摘要 1 1 绪论 1 1.1研究背景 1 1.2系统设计思想 1 1.3B/S体系工作原理 1 1.4node.js主要功能 2 1.5论文结构与章节安排 3 2 樱花在线视频网站分析 4 2.1 可行性分析 4 2.2 系统流程分析 4 2.2.1数据增加流程 5 2.3.2数据修改流程 5 2.3.3数据删除流程 5 …...

ECharts热力图-笛卡尔坐标系上的热力图,附视频讲解与代码下载
引言: 热力图(Heatmap)是一种数据可视化技术,它通过颜色的深浅变化来表示数据在不同区域的分布密集程度。在二维平面上,热力图将数据值映射为颜色,通常颜色越深表示数据值越大,颜色越浅表示数…...

【Lua热更新】下篇
上篇链接:【Lua热更新】上篇 文章目录 三、xLua热更新📖1.概述📚︎2.导入xLua框架🔖3. C#调用Lua3.1Lua解析器3.2Lua文件夹的重定向3.3Lua解析器管理器3.4全局变量获取3.5全局函数获取3.6映射到List和Dictionary3.7映射到类3.8映…...

Facebook 与数字社交的未来走向
随着数字技术的飞速发展,社交平台的角色和形式也在不断演变。作为全球最大社交平台之一,Facebook(现Meta)在推动数字社交的进程中扮演了至关重要的角色。然而,随着互联网的去中心化趋势和新技术的崛起,Face…...

微信小程序实现二维码海报保存分享功能
首先在写这个二维码分享海报的时候试过很多方法,比如:canvas中的这个createCanvasContext创建上下文的方法,去网上一搜就是一大堆,但其实这个方法已经被废弃了。Canvas 实例,可通过 SelectorQuery 获取。这是绘制背景图…...

Android 搭建AIDL Client和Server端,双向通信
一、背景 使用AIDL,搭建Client和Server端,实现跨进程通讯,即两个应用之间可以相互通讯。这里列举AIDL实现的方式和需注意的细节,并附上源码。 二、实现方式 2.1 定义AIDL需要的接口,名字为xxx.aidl,Client和Server端 AIDL接口的包名和aidl文件必须一致,…...

深度学习从入门到精通——图像分割实战DeeplabV3
DeeplabV3算法 参数配置关于数据集的配置训练集参数 数据预处理模块DataSet构建模块测试一下数据集去正则化模型加载模块DeepLABV3 参数配置 关于数据集的配置 parser argparse.ArgumentParser()# Datset Optionsparser.add_argument("--data_root", typestr, defa…...

STM32-笔记5-按键点灯(中断方法)
1、复制03-流水灯项目,重命名06-按键点灯(中断法) 在\Drivers\BSP目录下创建一个文件夹exti,在该文件夹下,创建两个文件exti.c和exti.h文件,并且把这两个文件加载到项目中,打开项目工程文件 加载…...

C++ 只出现一次的数字 - 力扣(LeetCode)
点击链接即可查看题目:136. 只出现一次的数字 - 力扣(LeetCode) 一、题目 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间…...