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

Backend - C# asp .net core

目录

一、各大框架理解

(一)ASP.NET Core

(二)ASP.NET Core Web Application

(三)ASP.NET Core MVC

(四)ASP.NET Core Web API

(五)ASP.NET Core 和 EF Core 的关系

二、前后端分离架构

(一) ASP.NET Core Web MVC 应用程式(前+后台)

1. 文件创建

2. 文件目录

3. MVC 知识点

(二)ASP.NET Core Web API(纯后台)

1. 文件创建

2. 文件目录

3. API 知识点

三、.net core 知识点

(一)自定义命名空间

(二)项目文件

1. 项目文件的打开方式

2. 项目文件的后缀是.csproj  

3. 项目文件的内容

(1)< PropertyGroup >标签中

        标签:

        标签:

        例如:

(2)标签中

        标签:

        例如:

(三)中间件 Middleware

1. 常见中间件

2. 特点

3. programs.cs文件中处理请求的中间件

        (1)app.Use() 中间件 & 搭配 next() :

        (2)app.Run() 中间件:

        (3)注意:

4. 中间件执行顺序(举例)

(四)launchSettings.json文件

1. 作用

2. 位置

3. 注意

(五)appsettings.json文件

1. 作用

2. 获取方式

3. 知识点

(1)appsettings..json

(2)优先级

4. 举例

(六)Programs.cs文件

1. 作用

2. 内容

(七)静态文件

1. 存放在wwwroot目录中

2. wwwroot文件夹的作用

3. 浏览器可访问wwwroot目录

4. 设置默认首页(用default.html文件):

5. 设置默认首页(用自定义的文件)

6. 使用UseFileServer(不推荐)

(八)命令行启动项目(cmd)

1. 作用

2. 启动

3. 命令行中输入命令

(九)获取环境信息

(十)依赖注入的特点

1. 低耦合

2. 提高测试效率

(十一)代码模拟数据库的注意事项

1. 注册单例服务

2. AddSingleton

3. AddScoped

(十二)包管理工具LibMan

1. 作用

2. 前提

3. 安装

4. 使用

(十三)拦截处理异常

1. 处理404异常

(1)异常:通过参数找不到指定的信息

(2)异常:请求的url和页面路由不匹配

2. 全局异常处理

(十四)Razor Page

1. @page

2. @model

(1)test.cshtml

(2)test.cshtml.cs


一、各大框架理解

(一)ASP.NET Core

        是基于 ASP.NET 的升级版,是开发框架。

        用于构建web应用程序,可跨平台(.NET Framework是Windows,.NET Core 是包括Windows和Mac)。

(二)ASP.NET Core Web Application

        是基于 ASP.NET Core 框架的 Web 应用。

        包括 MVC 应用、Web API、Razor 页面应用等。

(三)ASP.NET Core MVC

        是基于 MVC (Model-View-Controller)架构的 Web 应用框架。

        基于模型-视图-控制器的设计模式,适合构建传统的动态网站或 Web 应用,将应用程序分解为三个主要组件:模型(Model),视图(View)和控制器(Controller)。

        模型负责处理数据逻辑和数据库操作,视图负责呈现用户界面,控制器负责处理用户请求和协调模型和视图之间的数据传输。

(四)ASP.NET Core Web API

        是用于构建 RESTful API,主要提供数据接口,不包含 UI。

(五)ASP.NET Core 和 EF Core 的关系

        ASP.NET Core 是用于构建 Web 应用、API 和服务的框架,处理 HTTP 请求、定义路由、控制器、视图渲染等功能。

        EF Core 是一个轻量级的 ORM(对象关系映射)框架,用于访问数据库并将数据转换为 C# 对象。简化与数据库的交互(支持LINQ查询语法),通过对象而非 SQL 语句来进行数据存储、查询和更新等操作。

        例如,在一个 ASP.NET Core MVC 或 Web API 应用中,EF Core 用于在数据库中存取数据,而 ASP.NET Core 用于处理用户请求、渲染视图或者返回 JSON 数据。

二、前后端分离架构

前端和后端分离(web应用程式和API)。

(一) ASP.NET Core Web MVC 应用程式(前+后台)

1. 文件创建

2. 文件目录

3. MVC 知识点

可参考另一篇文章:Backend - C# asp .net core MVC_c# .cshtml-CSDN博客

(二)ASP.NET Core Web API(纯后台)

可搭配swagger。

1. 文件创建

2. 文件目录

3. API 知识点

可参考另一篇文章:Backend - C# asp .net core API(使用swagger)_c# useswagger-CSDN博客 

三、.net core 知识点

(一)自定义命名空间

        一般用项目工程名+所在目录名

(二)项目文件

1. 项目文件的打开方式

        点击项目“专案”名(是单个“专案”名,而不是整个“方案”名),即可看到该文件的内容。

2. 项目文件的后缀是.csproj  

3. 项目文件的内容

(1)< PropertyGroup >标签中
        <TargetFramework>标签:

                指定目标框架。

        <AspNetCoreHostingModel>标签:

                默认采用outofprocess托管(web请求转发到后端的asp.net core中,整个应用程序运行在asp.net core内置的跨平台服务器kestrel中)。

                其中,InProcess和OutOfProcess:

                        Inprocess只有一个服务器(要么是IIS,要么是Kestrel)。

                        Outofprocess有两个服务器(内部是.net core内置服务器即Kestrel,外部是代理服务器如IIS或Nginx等。作用是Internet <==http请求==> 外部服务器 <==http请求==> 内部服务器)。

        例如:
<PropertyGroup><TargetFramework>net8.0</TargetFramework> <!--框架 --><AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel> <!-- 配置为 InProcess 模式 -->
</PropertyGroup>
(2)<ItemGroup>标签中
        <PackageReference>标签:

                引用NuGet包。

        例如:
<ItemGroup> <PackageReference Include="NLog.Web.AspNetCore" Version="5.3.15" />
</ItemGroup>

(三)中间件 Middleware

1. 常见中间件

        Logging日志中间件、StaticFiles中间件、MVC中间件

2. 特点

        可同时被访问和请求、多个中间件是按照添加的顺序执行的。

3. programs.cs文件中处理请求的中间件

        (1)app.Use() 中间件 & 搭配 next() :

                继续传递控制给下一个中间件或路由。

        (2)app.Run() 中间件:

                一般用于处理最终的响应,它应该放在管道的最后。

        (3)注意:

                Run()会使管道短路,不会再执行其他中间件。

                即,所有的中间件应该放在 app.Run() 前面执行。

4. 中间件执行顺序(举例)

// Programs.cs文件
using System;var builder = WebApplication.CreateBuilder(args);// Add services to the container.
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();var app = builder.Build();// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{app.UseSwagger();app.UseSwaggerUI();
}app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();// 获取日志记录器
var logger = app.Services.GetRequiredService<ILogger<Program>>(); // 自定义中间件1
app.Use(async (context, next) =>
{logger.LogInformation("First processing request for: {Url} ----Start", context.Request.Path); // 记录日志await next(); // 必须调用 next() 让管道继续执行logger.LogInformation("First processing request for: {Url} ----End", context.Request.Path); // 记录日志
});// 自定义中间件2
app.Use(async (context, next) =>
{logger.LogInformation("Second processing request for: {Url} ----Start", context.Request.Path); // 记录日志await next(); // 必须调用 next() 让管道继续执行
logger.LogInformation("Second processing request for: {Url} ----End", context.Request.Path); // 记录日志
});// 自定义中间件3 (另一个路由)
app.MapGet("/anotherUrl", () =>
{logger.LogInformation("Final processing request ----End"); // 记录日志return "Hello, World!";
});// 终端中间件4
app.Run();// 最终输出台中的结果显示为:
// First processing request for: / anotherUrl----Start
// Second processing request for: / anotherUrl----Start
// Final processing request----End
// Second processing request for: / anotherUrl----End
// First processing request for: / anotherUrl----End

(四)launchSettings.json文件

1. 作用

        设置专案启动。

2. 位置

        在Properties目录中。

3. 注意

        若在launchSettings.json文件中配置一些信息,是在"environmentVariables"里面,且"ASPNETCORE_ENVIRONMENT"后面进行设置。

        例如:

"environmentVariables": {"ASPNETCORE_ENVIRONMENT": "Development","Lytest": "This is a test data!!!" // 配置Lytest变量数据
}

(五)appsettings.json文件

1. 作用

        配置环境(如数据库信息等)。

2. 获取方式

        若其他cs文件想获取该文件设定的数据内容,需要:

        先导入Configuration(即,using Microsoft.Extensions.Configuration;),

        再注入依赖(在构造函数中声明),然后使用字典取值的方式获取值。

3. 知识点

(1)appsettings.<environment>.json

        appsettings.json目录下还有一个appsettings.Development.json,appsettings.Development.json 优先级更高。

(2)优先级

        命令行参数 > 环境变量launchSettings.json > 用户机密 > 托管环境appsettings.Development.json > appsettings.json。

4. 举例

// appsettings.json 文件
{"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHosts": "*","Lytest": "This is a test data!!!",  // 测试获取该文件的配置信息"Lytest2": { "test1": { "test2": "This is a test2 data!!!" } }
}// WeatherForecast.cs 文件
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration; // 导入Configuration
using System.Linq;namespace ASPNetAPI.Controllers
{[ApiController][Route("[controller]")] public class WeatherForecastController : ControllerBase{private readonly IConfiguration _configuration;public WeatherForecastController(IConfiguration configuration){_configuration = configuration; // 注入Configuration依赖}[HttpGet] // [HttpGet(Name = "GetWeatherForecast")] // 作用是需要先经过Url.Link() 或 Url.Action() 这类方法来根据路由名称生成 URL,然后测试路由是:https://localhost:44372/WeatherForecastpublic String Get(){// 获取配置信息var testmsg1 =_configuration["Lytest"]); // 获取值var testmsg2 = _configuration.GetValue<string>("Lytest2:test1:test2"); // 针对多重字典return testmsg2; }}
}

(六)Programs.cs文件

1. 作用

        配置和启动应用程序,程式进入点。

2. 内容

        针对net5,还搭配了Startup.cs。

        作用是中间件,配置服务。主要存放startup和configuration代码,载动页面前启动服务。

(七)静态文件

1. 存放在wwwroot目录中

        读作w3root、webroot。

        wwwroot文件夹默认是没有的,需要自己手动创建。

2. wwwroot文件夹的作用

        存放静态文件(如html、css、js、images等文件)。

        该文件夹的内容会放在服务器上,客户端只能访问该文件夹。

3. 浏览器可访问wwwroot目录

        浏览器可访问wwwroot目录下的静态文件,如wwwroot/images目录下的某png。

        首先,需要在program.cs文件配置:

                在var app = builder.Build();后面配置 app.UseStaticFiles();  // 启用静态文件中间件

        然后,浏览器访问:

                用IP+端口+wwwroot里的目录+文件,如:https://localhost:44372/images/dog.png

4. 设置默认首页(用default.html文件):

        首先,在app.UseStaticFiles();的前面配置app.UseDefaultFiles();

                其中,UseDefaultFiles的代码位置一定是放在UseStaticFiles前面。

        代码写法如:

var app = builder.Build();
app.UseDefaultFiles(); // 启用默认文件中间件
app.UseStaticFiles();  // 允许访问 wwwroot 中的静态文件

        然后,在wwwroot中建立default.html文件。(默认文件固定有default.html、index.html,但default.html显示优先级高于index.html)

        然后,在浏览器中访问:用IP+端口,如https://localhost:44372/

5. 设置默认首页(用自定义的文件)

        首先,代码写法如下:

var app = builder.Build();
DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
defaultFilesOptions.DefaultFileNames.Clear();
defaultFilesOptions.DefaultFileNames.Add("testhtmlpage.html");
app.UseDefaultFiles(defaultFilesOptions); // 启用自定义默认文件中间件
app.UseStaticFiles();  // 允许访问 wwwroot 中的静态文件

        然后,在wwwroot中建立testhtmlpage.html文件。

        再在浏览器访问:用IP+端口,如https://localhost:44372/

6. 使用UseFileServer(不推荐)

        该方法包括上述的UseDefaultFiles、UseStaticFiles、以及UseDirectoryBrowser方法。

        不推荐使用该方法的原因:有一个UseDirectoryBrowser方法,会暴露文件根目录到外网。因为UseDirectoryBrowser方法允许用户访问某个目录,并查看该目录下的子目录列表和所有文件,所以,不推荐在生产环境中使用。(一般用于测试和开发环境)

        代码写法如:

var app = builder.Build();
FileServerOptions fileServerOptions = new FileServerOptions();
fileServerOptions.DefaultFilesOptions.DefaultFileNames.Clear();
fileServerOptions.DefaultFilesOptions.DefaultFileNames.Add("testhtmlpage.html");
app.UseFileServer(fileServerOptions);

(八)命令行启动项目(cmd)

1. 作用

        可查看运行的异常详情。

2. 启动

        在文件管理器中,找到项目专案位置,然后在项目专案所在路径中,输入cmd,打开命令行。

3. 命令行中输入命令

dotnet run# 举例(ASPNetAPI是专案名,命名行中输入命令):
E:\CSharpPro\test\ASPNetAPI>  dotnet run

(九)获取环境信息

代码如下:

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
Console.WriteLine("环境"+app.Environment.EnvironmentName);
app.Run();

(十)依赖注入的特点

1. 低耦合

2. 提高测试效率

(十一)代码模拟数据库的注意事项

1. 注册单例服务

        在用代码模拟数据库时,若新增一笔数据,并将该数据呈现到页面上,需注册单例服务。

        即,在服务注册到依赖注入容器时,使用AddSingleton而不是AddScoped。

        例如:

builder.Services.AddSingleton<IMusicRepository, MockMusicRepository>();

2. AddSingleton

        首次请求时会创建Singleton服务实例,后续所有该请求都会使用该实例。

        特点:针对整个应用程序生命周期,都会使用该单个实例(仅实例化一次)。

3. AddScoped

        每次请求都会创建新的Scoped服务实例(每次请求都要实例化)。

        同个请求复用,跨请求则不共享。

(十二)包管理工具LibMan

1. 作用

        客户端库管理工具(轻量级)。例如管理boostrap库。

2. 前提

        visual studio 2017版本15.8版本及以上。

3. 安装

        右击wwwroot文件夹 > 添加 > 客户端库>提供者选择cdnjs > 程式库输入twitter-bootstrap(会默认给出版本号) > 勾选包含所有程式库档案 > 目标位置输入“wwwroot/lib/twitter-bootstrap/”中(新增一个lib文件夹来放置twitter-bootstrap库) > 点击安装(可在控制台“输出”中选择输出来源为“程式库管理员”,就可以查看安装进度。若想返回查看运行信息,则选择“帧错”) > 安装完成后,会在wwwroot中生成/lib/twitter-bootstrap目录,并且专案根目录会自动生成一个libman.json文件。

4. 使用

        打开libman.json文件进行设定,设定好后保存会自动下载相应的库。

        其中,libman.json文件是一个库管理器的清单文件。

        内容如下:

{"version": "1.0","defaultProvider": "cdnjs","libraries": [{"library": "twitter-bootstrap@5.3.3","destination": "wwwroot/lib/twitter-bootstrap/"},//{//  "library": "jquery@3.6.0",//  "destination": "wwwroot/lib/jquery/"//},//{//  "provider": "unpkg",//  "library": "abp-web-resources@6.0.1",//  "destination": "wwwroot/lib/"//},]
}

(十三)拦截处理异常

1. 处理404异常

常见的有两种:

(1)异常:通过参数找不到指定的信息

处理方式如下代码:

public ViewResult ShowOneSong(int? id) 
{Music musicmodel = _musicRepository.GetSong(id ?? 1);if (musicmodel==null) // 直接在执行方法中处理异常{Response.StatusCode = 404; return View("MusicNotFond", id); // 返回到一个自定义的异常显示界面}return View(musicmodel);
}
(2)异常:请求的url和页面路由不匹配

处理方式如下代码:

// programs.cs文件中
if (app.Environment.IsDevelopment())
{app.UseDeveloperExceptionPage(); // 开发环境下,呈现未处理的异常
}
else
{//app.UseStatusCodePages(); // 第一种 不推荐!不方便处理//app.UseStatusCodePagesWithRedirects("/Error/{0}"); // 第二种  不推荐!会拦截错误路由,重新定义一个路由(请求code也会变成200,但实际应该是错误路由且code是404)app.UseStatusCodePagesWithReExecute("/Error/{0}"); // 第三种 推荐!!会保留原有错误路由(其中的Error是自定义的Controller视图名)
}//ErrorController.cs文件中
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Diagnostics;
using Microsoft.AspNetCore.Mvc;
namespace ASPNetAPI.Controllers
{public class ErrorController: Controller{[Route("Error/{statusCode}")] // statusCode是http请求中的public IActionResult HttpStatusCodeHandler(int statuscode){var statusCodeRes = HttpContext.Features.Get<IStatusCodeReExecuteFeature>(); // 获取statuscode结果switch (statuscode){case 404:ViewBag.ErrorMsg = $"访问的页面不存在!{statuscode}";// statusCodeRes比较有用的两个变量是OriginalPath、OriginalQueryStringViewBag.ErrorPath = statusCodeRes.OriginalPath;  // 查看路由ViewBag.ErrorQueryStr = statusCodeRes.OriginalQueryString; // 查看路由带的Querystringbreak;}return View("NotFond");}}
}

2. 全局异常处理

// programs.cs文件中
if (app.Environment.IsDevelopment())
{app.UseDeveloperExceptionPage(); // 开发环境下,呈现未处理的异常
}
else
{app.UseExceptionHandler("/Error"); // 拦截异常(全局异常处理)。一定要有斜杠/。app.UseStatusCodePagesWithReExecute("/Error/{0}"); // 拦截404找不到页面的异常信息。
}// ErrorController.cs文件中
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Diagnostics;
using Microsoft.AspNetCore.Mvc;namespace ASPNetAPI.Controllers
{public class ErrorController: Controller{[Route("Error/{statusCode}")] // statusCode是http请求的public IActionResult HttpStatusCodeHandler(int statuscode){var statusCodeRes = HttpContext.Features.Get<IStatusCodeReExecuteFeature>();switch (statuscode){case 404:ViewBag.ErrorMsg = $"访问的页面不存在!{statuscode}";ViewBag.ErrorPath = statusCodeRes.OriginalPath;ViewBag.ErrorQueryStr = statusCodeRes.OriginalQueryString;break;}return View("NotFond");}[AllowAnonymous][Route("Error")] public IActionResult Error()  // 全局异常处理{var exceptionHandlerPathFeature = HttpContext.Features.Get<IExceptionHandlerPathFeature>();ViewBag.ExceptionPath = exceptionHandlerPathFeature.Path; // 异常路径ViewBag.ExceptionMessage = exceptionHandlerPathFeature.Error.Message; // 异常内容ViewBag.ExceptionStackTrace = exceptionHandlerPathFeature.Error.StackTrace; // 异常堆栈跟踪return View("Error");}}
}

(十四)Razor Page

1. @page

        声明一个Page页面。

        设置相对路径,不要设为绝对路径。

        若@page后为空,则未设置路由,走默认路由,也就是https://XXXX.XXX。若在@page后面匹配路由,如@page "/my_router/2",则访问该页面时用https://XXXX.XXX/my_router/2。

       

2. @model

        设置连接ViewModel数据类(一般对应在cshtml下面的cs文件中)

例如:

(1)test.cshtml
@model
@page
@model testpro1.Pages.IndexModel
@{ViewData["Title"] = "Home page";
}<div class="text-center"><h1 class="display-4">Welcome</h1><p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
(2)test.cshtml.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;namespace testpro1.Pages
{public class IndexModel : PageModel{private readonly ILogger<IndexModel> _logger;public IndexModel(ILogger<IndexModel> logger){_logger = logger;}public void OnGet(){}}
}

相关文章:

Backend - C# asp .net core

目录 一、各大框架理解 &#xff08;一&#xff09;ASP.NET Core &#xff08;二&#xff09;ASP.NET Core Web Application &#xff08;三&#xff09;ASP.NET Core MVC &#xff08;四&#xff09;ASP.NET Core Web API &#xff08;五&#xff09;ASP.NET Core 和 EF …...

【合作原创】使用Termux搭建可以使用的生产力环境(九)

前言 在上一篇【合作原创】使用Termux搭建可以使用的生产力环境&#xff08;八&#xff09;-CSDN博客中我们讲到了如何安装IDEA社区版&#xff0c;并在Termux中安装VNC服务器&#xff0c;在proot-distro的Debian中启动xfce桌面&#xff0c;并通过这个方式解决了IDEA社区版中无…...

使用Supervisor在Ubuntu中实现后台自启动服务

在Ubuntu系统中&#xff0c;Supervisor是一个非常实用的进程管理工具&#xff0c;它可以让你的应用程序在后台运行&#xff0c;并且在系统启动时自动启动这些应用程序。下面&#xff0c;我将详细介绍如何在Ubuntu中使用Supervisor来实现后台自启动服务&#xff0c;并以一个具体…...

AIDD-人工智能药物设计-人工智能驱动的罕见病药物发现

JCIM | 人工智能驱动的罕见病药物发现 **罕见病&#xff08;Rare Diseases&#xff0c;RDs&#xff09;**是全球公共卫生领域的重大挑战&#xff0c;其特点是疾病种类繁多、症状复杂且诊断困难。尽管过去几十年出台了如《孤儿药法案》等法规推动研发&#xff0c;但超过90%的罕…...

安卓硬件加速hwui

安卓硬件加速 本文基于安卓11。 从 Android 3.0 (API 级别 11) 开始&#xff0c;Android 2D 渲染管道支持硬件加速&#xff0c;这意味着在 View 的画布上执行的所有绘图操作都使用 GPU。由于启用硬件加速所需的资源增加&#xff0c;你的应用程序将消耗更多内存。 软件绘制&am…...

TDv2:一种用于离线数学表达式识别的新型树形结构解码器

TDv2:一种用于离线数学表达式识别的新型树形结构解码器 本文提出了一种针对手写数学表达式识别(HMER)任务的新型树形解码器(TDv2) ,旨在充分利用数学表达式的树结构标签进行更有效的建模和预测。相较于传统的LaTeX字符串解码器,该模型通过采用一个节点分类模块和一个分…...

Golang学习笔记_23——error补充

Golang学习笔记_20——error Golang学习笔记_21——Reader Golang学习笔记_22——Reader示例 文章目录 error补充1. 基本错误处理2. 自定义错误3. 错误类型判断3.1 类型断言3.2 类型选择 4. panic && recover 源码 error补充 1. 基本错误处理 在Go中&#xff0c;函数…...

邯郸地标美食导游平台的设计与实现

标题:邯郸地标美食导游平台的设计与实现 内容:1.摘要 摘要&#xff1a;本文介绍了邯郸地标美食导游平台的设计与实现。该平台旨在为游客提供邯郸地标美食的详细信息和导航服务&#xff0c;帮助游客更好地了解和品尝邯郸的特色美食。文章首先介绍了项目的背景和目的&#xff0c…...

滑动窗口限流算法:基于Redis有序集合的实现与优化

滑动窗口限流算法是一种基于时间窗口的流量控制策略&#xff0c;它将时间划分为固定大小的窗口&#xff0c;并在每个窗口内记录请求次数。通过动态滑动窗口&#xff0c;算法能够灵活调整限流速率&#xff0c;以应对流量的波动。 算法核心步骤 统计窗口内的请求数量&#xff1…...

Angular 最新版本和 Vue 对比完整指南

1. Angular 最新版本 当前 Angular 最新稳定版本是 Angular 17(2024年初) 2. 主要区别对比表 特性 | Angular | Vue 框架类型 | 完整框架 | 渐进式框架 默认语言 | TypeScript | JavaScript/TypeScript 数据处理 | RxJS | Promise/async/await 架构特点 | 依赖注入,…...

DAY39|动态规划Part07|LeetCode:198.打家劫舍、213.打家劫舍II、337.打家劫舍III

目录 LeetCode:198.打家劫舍 基本思路 C代码 LeetCode:213.打家劫舍II 基本思路 C代码 LeetCode:337.打家劫舍III 基本思路 C代码 LeetCode:198.打家劫舍 力扣题目链接 文字讲解&#xff1a;LeetCode:198.打家劫舍 视频讲解&#xff1a;动态规划&#xff0c;偷不偷这个…...

MYSQL----------------sql 优化

优化 SQL 语句的一般步骤 1. 了解 SQL 的执行频率 SHOW STATUS LIKE Com_%;代码解释&#xff1a; SHOW STATUS LIKE Com_%;&#xff1a;此命令可以查看各种 SQL 语句的执行频率&#xff0c;例如 Com_select 表示 SELECT 语句的执行次数&#xff0c;Com_insert 表示 INSERT 语…...

深度学习中的正则化方法

最近看到了正则化的内容&#xff0c;发现自己对正则化的理解已经忘得差不多了&#xff0c;这里在整理一下&#xff0c;方便以后查阅。 深度学习中的正则化方法 1. L2 正则化&#xff08;L2 Regularization&#xff09;2. L1 正则化&#xff08;L1 Regularization&#xff09;3.…...

前端报告 2024:全新数据,深度解析未来趋势

温馨提示: 此报告为国际版全球报告,其中所涉及的技术应用、工具偏好、开发者习惯等情况反映的是全球前端开发领域的综合态势。由于国内外技术发展环境、行业生态以及企业需求等存在差异,可能有些内容并不完全契合国内的实际情况,请大家理性阅读,批判性地吸收其中的观点与信…...

计算机网络之---子网划分与IP地址

子网划分与IP地址的关系 在计算机网络中&#xff0c;子网划分&#xff08;Subnetworking&#xff09;是将一个网络划分为多个子网络的过程。通过子网划分&#xff0c;可以有效地管理和利用IP地址空间&#xff0c;提高网络的性能、安全性和管理效率。 子网划分的基本目的是通过…...

计算机网络 (31)运输层协议概念

一、概述 从通信和信息处理的角度看&#xff0c;运输层向它上面的应用层提供通信服务&#xff0c;它属于面向通信部分的最高层&#xff0c;同时也是用户功能中的最低层。运输层的一个核心功能是提供从源端主机到目的端主机的可靠的、与实际使用的网络无关的信息传输。它向高层用…...

代码随想录算法训练营day28

代码随想录算法训练营 —day28 文章目录 代码随想录算法训练营前言一、122.买卖股票的最佳时机II二、55. 跳跃游戏三、跳跃游戏 II方法一方法二 1005. K 次取反后最大化的数组和总结 前言 今天是算法营的第28天&#xff0c;希望自己能够坚持下来&#xff01; 今日任务&#x…...

建立时间和保持时间

建立时间 在时钟有效沿到来之前&#xff0c;数据必须维持一段时间保持不变&#xff0c;这段时间就是建立时间 Tsetup 1 基本概念 建立时间&#xff08;Setup Time&#xff09;&#xff1a; 在 SystemVerilog 中&#xff0c;建立时间是指在时钟信号的有效边沿&#xff08;例如…...

vue,router路由传值问题,引用官方推荐

参考贴https://blog.csdn.net/m0_57033755/article/details/129927829 根据官方文档的更新日志&#xff0c;建议使用state传值 官方文档更新日志 实际的console结果 传值 router.push({ name: KnowledgeDetail, state: { params } });接收值 const historyParams histor…...

AIDD-人工智能药物设计-AlphaFold系列:年终回顾,AlphaFold迄今为止的实际应用案例

AlphaFold系列&#xff1a;年终回顾&#xff0c;AlphaFold迄今为止的实际应用案例 01 引言 AlphaFold由 DeepMind 团队开发&#xff0c;最初在蛋白质结构预测竞赛 CASP 中惊艳亮相。随着 AlphaFold2 和后续版本的迭代进步&#xff0c;其精度和通用性不断提升&#xff0c;逐渐走…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...