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/WeatherForecast
        public 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、OriginalQueryString
					ViewBag.ErrorPath = statusCodeRes.OriginalPath;  // 查看路由
					ViewBag.ErrorQueryStr = statusCodeRes.OriginalQueryString; // 查看路由带的Querystring
					break;
			}
			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()
        {

        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/951788.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

麦田物语学习笔记:背包物品选择高亮显示和动画

如题,本篇文章没讲动画效果 基本流程 1.代码思路 (1)先用点击事件的接口函数去实现,点击后反转选择状态(isSelected),以及设置激活状态(SetActive),并且还需要判断该格子是否为空,空格子是点不动的,完成后以上后,出现的问题是高亮应该是有且仅有一个格子是高亮的,而现在可以让…

自定义音频播放样式结合Howler.js

滑动式滚动条 不使用audio默认样式 自定义音频播放样式 当前时间 开始时间 结束时间 可播放可暂停 滚动条可拖动进行同步 具体样式可调整npm install howler --save<template><div class"audio-player"><div v-if"isLoading" class"l…

基于 GEE 利用 DEM 数据计算坡度、坡向

目录 1 完整代码 2 运行结果 1 完整代码 以SRTM数据产品为例&#xff0c;代码如下&#xff1a; var roi table; var srtm ee.Image(USGS/SRTMGL1_003); var elevation srtm.select(elevation).clip(roi);// 计算坡度 var slope ee.Terrain.slope(elevation).clip(roi)…

Ubuntu 磁盘修复

Ubuntu 磁盘修复 在 ubuntu 文件系统变成只读模式&#xff0c;该处理呢&#xff1f; 文件系统内部的错误&#xff0c;如索引错误、元数据损坏等&#xff0c;也可能导致系统进入只读状态。磁盘坏道或硬件故障也可能引发文件系统只读的问题。/etc/fstab配置错误&#xff0c;可能…

夯实前端基础之CSS篇

知识点概览 这一篇是讲CSS的&#xff0c;前面还有一篇总结HTML的哦~夯实前端基础之HTML篇&#xff0c;后面还会更新其他系列哦~ 一、必知必会 1. html中引入样式的几种方式&#xff1f; 内联样式&#xff08;html元素的style属性&#xff09;内部样式表&#xff08;style标签…

conda/pip基本常用命令理解与整理

最近配置了两轮pytorch环境&#xff0c;由于要频繁用到各种conda和pip命令&#xff0c;所以再此整理一下。 文章目录 前言&#xff1a;conda虚拟环境总结与解读Conda和pip的理解区别和联系命令格式 conda环境命令查看创建和删除导出与导入激活和退出 包管理命令安装和删除文件批…

协方差矩阵

协方差矩阵是一个对称矩阵&#xff0c;用来描述多个随机变量之间的协方差关系。协方差反映了两个随机变量如何共同变化的趋势&#xff0c;协方差矩阵将这种关系扩展到了多维数据。 1. 定义 假设有一个 n 维随机向量 &#xff0c;协方差矩阵 Σ 定义为&#xff1a; 其中&#…

6 分布式限流框架

限流的作用 在API对外互联网开放的情况下&#xff0c;是无法控制调用方的行为的。当遇到请求激增或者黑客攻击的情况下&#xff0c;会导致接口占用大量的服务器资源&#xff0c;使得接口响应效率的降低或者超时&#xff0c;更或者导致服务器宕机。 限流是指对应用服务进行限制…

LINUX 下 NODE 安装与配置

一、官网地址&#xff1a; &#xff08;中文网&#xff09;https://nodejs.cn/ &#xff08;英文网&#xff09;https://nodejs.org/en/ 二、下载安装包 2.1、下载地址&#xff1a;下载 | Node.js 中文网 https://nodejs.cn/download/ 2.2、使用 wget 命令下载到linux 服务器…

Qt重写webrtc的demo peerconnection

整个demo为&#xff1a; 可以选择多个编码方式&#xff1a; cmake_minimum_required(VERSION 3.5)project(untitled LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)set(CMA…

el-tabs中tabs过多造成form表单输入的时候卡顿

这里写自定义目录标题 tabs过多造成的输入卡顿解决方案方案一方案二 出现的并发问题解决方案 tabs过多造成的输入卡顿 描述&#xff1a;前端要写一个需求&#xff0c;大概有一百多个tab渲染过来&#xff0c;每个tab中都是一个表单&#xff0c;这个时候数据渲染任务加重&#x…

【python/html/js 鼠标点选/框选图片内容】

html代码 注意修改图片地址&#xff0c;坐标会保存为coordinates.json <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0&q…

Zustand selector 发生 infinate loops的原因以及解决

Zustand selector 发生 infinate loops 做zustand tutorial project的时候&#xff0c;使用选择器方法引入store&#xff0c;出现Maximum update depth exceeded,也就是组件一直重新渲染&#xff0c;改成直接使用store就没有不会出现这个问题。如下&#xff1a; // const [xIs…

AngularJs指令中出错:Error: $compile:nonassign Non-Assignable Expression

Expression {resumeId: item.resumeId} used with directive rwdsDelete is non-assignable! 在AngularJS中&#xff0c;$compile服务用于将指令编译成HTML。当你在模板中使用了一个表达式&#xff0c;但这个表达式不是一个左值&#xff08;即不能被赋值的表达式&#xff09;时…

moviepy 将mp4视频文件提取音频mp3 - python 实现

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” -------------------------------------------------------------…

openssl编译

关于windows下&#xff0c;openssl编译 环境准备 安装 perl:https://djvniu.jb51.net/200906/tools/ActivePerl5_64.rar安装nasm&#xff1a;https://www.nasm.us/pub/nasm/releasebuilds/2.13.01/win64/nasm-2.13.01-installer-x64.exe下载opensll源码&#xff1a;https://o…

QT c++ 样式 设置 标签(QLabel)的渐变色美化

上一篇文章中描述了按钮的纯色&#xff0c;本文描述标签的渐变色美化。 1.头文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> //#include "CustomButton.h"#include <QVBoxLayout> #include <QLinearGradient> #include <QLabel…

学习打怪日记

目录 0 关于1 SpringBoot上传大文件抛出异常&#xff1a;MaxUploadSizeExceededException2 SpringBoot警告&#xff1a;HikariPool-1 - Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl6221f160 (No operations allowed after connection closed.). Possibly …

xss-labs关卡记录15-20关

十五关 随便传一个参数&#xff0c;然后右击查看源码发现&#xff0c;这里有一个陌生的东西&#xff0c;就是ng-include。这里就是&#xff1a; ng-include指令就是文件包涵的意思&#xff0c;用来包涵外部的html文件&#xff0c;如果包涵的内容是地址&#xff0c;需要加引号。…

(五)ROS通信编程——参数服务器

前言 参数服务器在ROS中主要用于实现不同节点之间的数据共享&#xff08;P2P&#xff09;。参数服务器相当于是独立于所有节点的一个公共容器&#xff0c;可以将数据存储在该容器中&#xff0c;被不同的节点调用&#xff0c;当然不同的节点也可以往其中存储数据&#xff0c;关…