ASP.NET学习记录-08-MVC路由
1、什么是controller?为什么用controller?模型-视图-控制器 (MVC) 体系结构模式将应用分成 3 个主要组件:模型 (M)、视图 (V) 和控制器 (C) 。 MVC 模式有助于创建比传统单片应用更易于测试和更新的应用。 基于 MVC 的应用包含: 模型 (M):是表示应用数据的类。 模型类使用验证逻辑来对该数据强制实施业务规则。 通常,模型对象检索模型状态并将其存储在数据库中。 本教程中,Movie 模型将从数据库中检索电影数据,并将其提供给视图或对其进行更新。 更新后的数据将写入到数据库。 视图 (V):视图是显示应用用户界面 (UI) 的组件。 此 UI 通常会显示模型数据。 控制器 (C):具有以下特征的类: 处理浏览器请求。 检索模型数据。 调用返回响应的视图模板。 在 MVC 应用中,视图仅显示信息。 控制器处理用户输入和交互并对其进行响应。 例如,控制器处理 URL 段和查询字符串值,并将这些值传递给模型。 该模型可使用这些值查询数据库。 例如: https://localhost:5001/Home/Privacy:指定...
ASP.NET学习记录-07-代码组织和依赖注入
1、代码组织在 ASP.NET 中,“代码组织”指的是如何结构化代码,以提高可维护性、可读性和可扩展性。这涉及多个方面,包括项目结构、分层架构、模块化设计和最佳实践。 项目结构 在 ASP.NET Core 中,一个典型的项目组织方式如下: 12345678910/MyApp ├── Controllers/ // 处理 HTTP 请求的控制器 ├── Models/ // 数据模型 ├── Views/ // Razor 视图(如果使用 MVC) ├── Services/ // 业务逻辑层 ├── Middleware/ // 自定义中间件 ├── Data/ // 数据访问层(EF Core、存储库等) ├── wwwroot/ // 静态文件(CSS、JS、Images) ├── Program.cs // 应用程序启动入口 ├── appsettings.json //...
ASP.NET学习记录-06-最小API结果生产
本次学习基础代码如下: Employee.cs 12345678910111213141516171819202122232425262728293031323334353637383940414243444546using System.ComponentModel.DataAnnotations;namespace WebApi.Models{ /// <summary> /// 员工实体类 /// </summary> public class Employee { /// <summary> /// 员工唯一标识符 /// </summary> public int Id { get; set; } /// <summary> /// 员工姓名 /// </summary> public string Name...
ASP.NET学习记录-05-模型数据绑定
1、模型绑定定义模型绑定是ASP.NET Core中将HTTP请求数据自动映射到方法参数或对象属性的机制。其核心工作流程: 数据来源: 路由参数(URL片段) 查询字符串(?key=value) 请求体(表单/JSON/XML) 请求头 文件上传 典型应用: 12345678910111213// 自动绑定路由参数和查询参数[HttpGet("/products/{id}")]public IActionResult GetProduct(int id, [FromQuery] string category) { // id来自路由参数,category来自查询字符串}// 自动绑定JSON请求体[HttpPost]public IActionResult Create([FromBody] Product product){ //...
ASP.NET学习记录-04-路由
1、Routing和Endpoints简介在ASP.NET Core中,**路由(Routing)和终结点(Endpoints)**是处理HTTP请求的核心机制,它们共同构成了请求分发的管道系统。以下是对两者的详细介绍: 一、路由(Routing)路由的核心作用是将传入的HTTP请求根据URL路径和HTTP方法匹配到对应的处理逻辑(终结点)。在ASP.NET Core中,路由系统被称为终结点路由(Endpoint Routing)。 主要功能与工作流程 匹配请求:通过UseRouting中间件(即EndpointRoutingMiddleware)扫描应用中所有注册的终结点,根据请求的URL和HTTP方法选择最匹配的终结点 。示例代码: 12345app.UseRouting();app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { ......
ASP.NET学习记录-03-中间件管道
1、中间件管道简介在 C# ASP.NET Core 中,中间件管道是处理 HTTP 请求和响应的核心机制,通过将多个中间件按顺序串联成一个处理流程,实现灵活的请求处理和业务逻辑组合。以下是其核心要点: 1. 中间件管道的基本概念 中间件(Middleware):是管道中的独立组件,负责处理 HTTP 请求和响应。每个中间件可以: 对请求进行预处理(如日志、身份验证)。 调用下一个中间件(通过 next()),或直接终止处理(短路)。 对响应进行后处理(如修改响应头、记录耗时)。 管道(Pipeline):由多个中间件按注册顺序串联而成,形成一个“请求→处理→响应”的流程。请求按顺序经过所有中间件,而响应则逆序返回 。 2. 管道的工作模式:1-n 然后 n-1 请求阶段(正向传递):请求从第一个中间件开始,依次传递至最后一个中间件(终结点),形成“1→2→3”的顺序 。 响应阶段(逆向返回):处理完成后,响应从终结点开始,逆序返回至第一个中间件,形成“3→2→1”的顺序 。 示例 123Middleware One: Request Start...
ASP.NET学习记录-02-最小API模式
1、创建第一个ASP.NET应用(Minimal API)1.创建新项目 选择新的空项目 设定基本信息 使用最新版.NET作为学习内容 2.项目架构简介与解析 1. 解决方案(Solution) 名称:MyFirstWebApplication 作用: 作为容器管理多个相关项目(当前仅包含一个项目 WebApplication)。 支持团队协作和复杂应用的模块化开发(如Web API、类库、单元测试等)。 关键点: 可通过解决方案配置统一管理所有项目的依赖和环境设置。 新增项目 右键单击解决方案->添加->新建项目 2. 项目(Project: WebApplication) 核心结构:包含构建和运行Web应用所需的所有文件与配置,分为以下关键部分: a. Connected Services 文件夹 作用: 存储与外部服务的连接配置(如数据库、Azure服务、第三方API)。 通过右键添加服务(如Entity Framework、Azure认证),自动生成连接配置文件。 示例:添加Azure...
ASP.NET学习记录-01-基础知识
视频教程为:ASP.NET Core Deep-Dive in .NET 9 | Udemy 1、.NET Core.NET Core 是微软开发的开源、跨平台应用程序开发框架,旨在为现代云原生、微服务及高性能场景提供支持。以下是其核心特性与定位的详细说明: 一、核心定义与定位 跨平台支持 .NET Core 可在 Windows、Linux、macOS 等操作系统上运行,并支持 x86、x64、ARM 等多种架构。 这种跨平台能力使其成为开发云原生、容器化应用(如 Docker)的理想选择。 开源与社区驱动 作为 MIT 协议下的开源项目,.NET Core 的代码托管于 GitHub,接受社区贡献,确保了技术透明度和快速迭代。 二、架构与技术特性 模块化设计 采用包化(Packages)管理,开发者可按需引用组件,减少应用体积,与传统的 .NET Framework 打包式安装形成对比。例如,通过 1dotnet restore 命令可动态还原依赖的 NuGet 包。 高性能运行时 RyuJIT 编译器:相比传统 JIT,性能提升约 25%,支持 SIMD...
链表
6、7的哈希表指的是有序表 快慢指针快慢指针,顾名思义,在链表中,维持两个指针,跳跃速度不同(A跳一步,B就跳两步)。他能做的事情很多,最直观的是寻找链表的中点。还可以判断链表是否有环等等。这里我们先解释快慢指针算法,然后分析它的复杂度。 一棵树是否为搜索二叉树判断中序遍历是否是升序 判断是否为完全二叉树判断宽度是否符合,判断是否都有左右孩子。 再上一个前提不违规的前提下,如果遇到了第一个左右孩子不全,后续所有节点都必须为叶节点。 二叉树递归套路在处理二叉树的问题时,递归套路是向自己的左右子树要信息。树形DP(树形 DP 是在树上进行的动态规划,利用树的递归性质进行状态转移。)这些都是可以进行优化的题目。 平衡二叉树(左右子树的高度差不超过1)
算法-排序
一、排序基于比较的排序时间复杂度目前做不到nlogn;时间为nlogn,空间为n以下的排序,做不到稳定性。 一般来说,都是用快排。算法的每一步实际上都需要一个固定时间量,被称为常量。我们平时考虑时间复杂度的时候并不考虑常量的影响,但有时候常量的影响不可忽略,比如在这个问题上。但是大多数时候考虑复杂度的时候,可能还是不需要考虑常量的影响的,嗯,我觉得是……由于算法的每一步都有一个常量,而快排的常量比归排小,因此虽然两者的复杂度相同,但是快排更快一些。那第二个问题就来了,归排的复杂度一直都是O(nlog n),而快排的平均复杂度才是O(nlog n),最坏情况下快排的复杂度可以达到O(n^2),为什不怕快排的时候是最坏的情况呢?主要是因为绝大多数情况下,快排遇到的都是平均情况,也就是最佳情况,只有极个别的时候会是最坏情况,因此往往不考虑这种糟糕的情况。 归并排序可以做到空间复杂度为O(1)吗,可以!但是就不再稳定了。而且实现非常难,不如用堆排序。 “原地归并排序”方法会让时间复杂度变成O(n^2)也不行,不如插入排序。 “01 stable...