青少年编程与数学 02-020 C#程序设计基础 17课题、WEB与移动开发
青少年编程与数学 02-020 C#程序设计基础 17课题、WEB与移动开发
- 一、C#语言Web和移动项目开发
- 1. Web项目开发
- 2. 移动项目开发
- 二、ASP.NET Core
- 1. ASP.NET Core 基础架构
- 1.1 请求处理管道
- 1.2 主机模型
- 1.3 服务器选项
- 2. 核心新特性
- 2.1 NativeAOT 支持
- 2.2 增强的身份验证方案
- 2.3 Blazor 全栈改进
- 2.4 性能优化
- 3. 项目类型与模板
- 4. 开发实践
- 4.1 依赖注入
- 4.2 配置管理
- 4.3 日志记录
- 5. 部署选项
- 6. 监控与诊断
- 7. 最佳实践
- 小结
- 三、Blazor
- 1. Blazor 架构演进
- 1.1 渲染模式统一
- 1.2 新项目模板
- 2. 核心新特性
- 2.1 流式渲染 (Streaming Rendering)
- 2.2 增强的表单处理
- 2.3 改进的 JavaScript 互操作
- 3. 性能优化
- 3.1 组件级渲染模式
- 3.2 预渲染优化
- 3.3 改进的 WebAssembly 性能
- 4. 状态管理
- 4.1 增强的依赖注入
- 4.2 持久化状态
- 5. 安全增强
- 5.1 身份验证集成
- 5.2 防伪令牌
- 6. 部署选项
- 6.1 混合部署模式
- 6.2 渐进式 Web 应用 (PWA)
- 7. 最佳实践
- 小结
- 四、.NET MAUI
- 1. .NET MAUI 核心特性
- 1.1 跨平台统一性
- 1.2 现代化开发模式
- 2. .NET 8 中的新特性
- 2.1 NativeAOT 支持
- 2.2 性能优化
- 2.3 质量改进
- 3. 项目结构与开发流程
- 3.1 项目模板
- 3.2 典型项目结构
- 3.3 开发环境要求
- 4. MAUI 开发实战
- 4.1 创建 MAUI 项目
- 4.2 基本页面示例
- 4.3 平台特定代码
- 5. 部署与发布
- 5.1 调试与运行
- 5.2 发布应用
- 6. 性能优化技巧
- 7. 与其他技术的比较
- 8. 未来发展方向
- 9. 学习资源
- 全文总结
摘要: 本文介绍了C#语言结合.NET 8在Web和移动开发中的应用,重点阐述了ASP.NET Core、Blazor和.NET MAUI三大框架。ASP.NET Core在.NET 8中引入了NativeAOT支持、增强的身份验证方案和Blazor全栈改进等新特性;Blazor实现了渲染模式统一、流式渲染和增强表单处理等功能,并优化了性能和状态管理;.NET MAUI提供了跨平台统一性和现代化开发模式,在.NET 8中获得了性能优化和质量改进。文章还涉及了开发实践、部署选项和最佳实践等内容。
关键词:C#,.NET 8,Web开发,移动开发,ASP.NET Core,Blazor,.NET MAUI,NativeAOT,跨平台
AI助手:DeepSeek、Kimi
一、C#语言Web和移动项目开发
C#语言结合.NET 8可以完成多种Web和移动项目开发,以下是具体介绍:
1. Web项目开发
- Web API开发:可以使用ASP.NET Core构建Web API项目,通过定义控制器和路由来处理HTTP请求和响应。例如,可以创建一个简单的天气预报API,客户端可以通过HTTP请求获取天气数据。
- 全栈Web应用开发:借助Blazor框架,可以使用C#而不是JavaScript来生成交互式的Web UI。Blazor支持在服务器端和客户端之间无缝切换,提供全栈开发体验。例如,可以开发一个在线购物网站,前端使用Blazor组件实现交互,后端通过Web API提供数据支持。
- 高性能Web应用开发:.NET 8支持原生AOT编译,能够缩短启动时间和减少内存占用。此外,还可以通过配置响应压缩中间件来减小API响应的大小,提升客户端在慢速网络上的加载速度。
- Razor Pages和MVC开发:使用Razor Pages可以简化小型网站动态网页的创建过程。对于大型、复杂的网站,可以采用ASP.NET Core MVC模式,便于进行单元测试和管理。
2. 移动项目开发
- 跨平台移动应用开发:通过.NET MAUI(Multi-platform App UI)框架,可以使用单一项目系统和单一代码库构建WinUI、Mac Catalyst、iOS和Android应用程序。例如,可以开发一个跨平台的记事本应用,其UI和逻辑代码在不同平台上共享。
- 原生体验增强:在移动开发中,可以调用原生API和库来增强应用的原生体验。例如,在iOS应用中调用特定的iOS原生功能,如摄像头或传感器。
- 性能优化:可以使用异步编程模型提高应用的响应速度,使用数据绑定和MVVM模式简化UI更新流程。此外,.NET 8的性能优化特性也有助于提升移动应用的性能。
二、ASP.NET Core
.NET 8 是微软推出的最新长期支持(LTS)版本,其中的 ASP.NET Core 带来了许多重要改进和新特性。本文将全面解析 .NET 8 中 ASP.NET Core 的核心功能、架构设计和最佳实践。
1. ASP.NET Core 基础架构
1.1 请求处理管道
ASP.NET Core 的请求处理管道由一系列中间件组成,每个组件在 HttpContext
上执行操作,调用管道中的下一个中间件或终止请求。典型的中间件配置如下:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();app.UseExceptionHandler("/Error");
app.UseHsts();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();
1.2 主机模型
.NET 8 提供了三种不同的主机模型来运行 ASP.NET Core 应用:
- WebApplication 最小主机:推荐的新方式,简化了配置
- .NET 泛型主机:使用
ConfigureWebHostDefaults
- ASP.NET Core WebHost:传统方式,已逐渐被淘汰
1.3 服务器选项
ASP.NET Core 应用使用 HTTP 服务器实现侦听 HTTP 请求,主要选项包括:
- Kestrel:跨平台的高性能服务器(默认)
- HTTP.sys:仅限 Windows
- IIS:Windows 上的传统托管方式
2. 核心新特性
2.1 NativeAOT 支持
.NET 8 显著改进了 ASP.NET Core 的 NativeAOT(提前编译)支持:
- 生成独立可执行文件,无需安装 .NET 运行时
- 显著提升启动速度,降低内存占用
- 支持 Minimal APIs、gRPC、健康检查等核心功能
NativeAOT 的目标指标包括:
- 10MB 的可执行文件大小
- <50 毫秒的启动时间
- <50 MB 的工作集内存占用
2.2 增强的身份验证方案
.NET 8 提供了更灵活的身份验证机制,支持在同一应用中处理多种身份验证方案:
services.AddAuthentication().AddJwtBearer("Scheme_ServerA", options => { /* 配置A */ }).AddJwtBearer("Scheme_ServerB", options => { /* 配置B */ }).AddScheme<CustomAuthSchemeOptions, CustomAuthenticationHandler>("CustomToken", options => { });
支持包括 JWT、API 密钥、IdentityServer 等多种认证方式。
2.3 Blazor 全栈改进
Blazor 在 .NET 8 中获得了重大更新:
- 统一模板:Blazor Web App 模板整合了服务器和 WebAssembly 渲染
- 流式渲染:在执行异步操作时先渲染占位内容
- 增强表单处理:支持服务器端处理表单提交
- 自动渲染模式:根据情况自动选择服务器或 WebAssembly 渲染
2.4 性能优化
.NET 8 在性能方面有多项改进:
- HTTP/3 支持(默认禁用但可启用)
- 减少内存分配
- 改进的 JSON 序列化
- AVX-512 指令集支持
3. 项目类型与模板
.NET 8 提供了多种 ASP.NET Core 项目模板:
- Web API:构建 RESTful HTTP 接口
- MVC 应用:传统的 Model-View-Controller 模式
- Razor Pages:页面为中心的开发模型
- Blazor 应用:全栈 Web UI 框架
- gRPC 服务:高性能 RPC 框架
- SignalR 应用:实时通信解决方案
4. 开发实践
4.1 依赖注入
ASP.NET Core 内置了强大的依赖注入系统,支持:
- 构造函数注入
- 服务生命周期(Singleton、Scoped、Transient)
- 命名服务(Keyed Services)
builder.Services.AddKeyedSingleton<ICache, BigCache>("big");
builder.Services.AddKeyedSingleton<ICache, SmallCache>("small");
4.2 配置管理
.NET 8 提供了灵活的配置系统,支持:
- appsettings.json 文件
- 环境变量
- 命令行参数
- Azure Key Vault 等外部配置源
4.3 日志记录
ASP.NET Core 的日志系统支持多种输出方式:
- 控制台
- 调试窗口
- 文件
- Azure Application Insights
5. 部署选项
.NET 8 ASP.NET Core 应用可以部署到多种环境:
- Azure App Service:完全托管的 PaaS 服务
- Docker 容器:跨平台部署
- IIS:Windows 传统托管
- Linux 服务器:使用 Nginx/Apache 反向代理
- Kubernetes:云原生部署
6. 监控与诊断
.NET 8 增强了应用监控能力:
- 内置健康检查端点
- 改进的指标收集
- OpenTelemetry 集成
- 增强的异常处理
7. 最佳实践
- 使用 HttpClientFactory 管理 HTTP 客户端
- 启用 HTTPS 重定向 增强安全性
- 合理配置 CORS 策略
- 利用中间件 处理横切关注点
- 考虑 NativeAOT 用于云原生和 Serverless 场景
小结
.NET 8 中的 ASP.NET Core 提供了更强大、更灵活和更高性能的 Web 开发平台。从基础架构到高级特性,从开发实践到部署选项,它都进行了全面增强,特别是 NativeAOT 支持和 Blazor 的改进使其成为构建现代 Web 应用的理想选择。
三、Blazor
Blazor 是 .NET 8 中革命性的全栈 Web 框架,它统一了服务器端和客户端 Web 开发模型。以下是 .NET 8 中 Blazor 的全面解析:
1. Blazor 架构演进
1.1 渲染模式统一
.NET 8 将之前的 Blazor Server 和 Blazor WebAssembly 合并为单一编程模型,提供四种渲染模式:
- 静态服务器渲染 (Static SSR) - 传统 Razor Pages 方式
- 交互式服务器渲染 (Interactive Server) - 原 Blazor Server
- 交互式 WebAssembly 渲染 (Interactive WebAssembly) - 原 Blazor WASM
- 自动渲染 (Auto) - 智能选择最佳模式
1.2 新项目模板
dotnet new blazor -o BlazorApp
新模板生成的项目结构包含:
Components/
- 可复用组件Pages/
- 页面组件App.razor
- 应用根组件Program.cs
- 统一配置入口
2. 核心新特性
2.1 流式渲染 (Streaming Rendering)
@page "/streaming"
@attribute [StreamRendering(true)]<PageTitle>流式渲染示例</PageTitle><h1>实时数据流</h1>@if (data == null)
{<p><em>加载中...</em></p>
}
else
{<ul>@foreach (var item in data){<li>@item</li>}</ul>
}@code {private string[]? data;protected override async Task OnInitializedAsync(){// 模拟长时间运行的操作await Task.Delay(3000);data = Enumerable.Range(1, 50).Select(i => $"项目 {i}").ToArray();}
}
2.2 增强的表单处理
@page "/form"
@rendermode InteractiveServer<EditForm Model="@user" OnValidSubmit="HandleValidSubmit"><DataAnnotationsValidator /><ValidationSummary /><div class="form-group"><label>用户名</label><InputText @bind-Value="user.Username" /></div><div class="form-group"><label>邮箱</label><InputText @bind-Value="user.Email" /></div><button type="submit" class="btn btn-primary">提交</button>
</EditForm>@code {private User user = new();private void HandleValidSubmit(){// 处理表单提交Console.WriteLine($"提交用户: {user.Username}");}public class User{[Required][StringLength(20)]public string Username { get; set; }[Required][EmailAddress]public string Email { get; set; }}
}
2.3 改进的 JavaScript 互操作
// 定义强类型 JS 引用
[JSImport("interop.js", "MyJsFunctions")]
public static partial class MyJsInterop
{[JSMethod]public static partial string ShowAlert(string message);
}// 组件中使用
@inject IJSRuntime JS<button @onclick="ShowAlert">显示弹窗</button>@code {private async Task ShowAlert(){await MyJsInterop.ShowAlert("来自 .NET 的消息!");}
}
3. 性能优化
3.1 组件级渲染模式
// 页面级渲染模式
@page "/counter"
@rendermode InteractiveAuto// 组件级渲染模式
<MyComponent @rendermode="RenderMode.InteractiveServer" />
3.2 预渲染优化
@page "/prerender"
@attribute [Prerender(true)]<h1>预渲染页面</h1>
<p>生成时间: @DateTime.Now</p>
3.3 改进的 WebAssembly 性能
- AOT 编译优化
- 更小的运行时
- 更快的启动时间
4. 状态管理
4.1 增强的依赖注入
// 注册服务
builder.Services.AddCascadingValue(sp => new AppState());// 组件中使用
[CascadingParameter]
public AppState AppState { get; set; }
4.2 持久化状态
@page "/state"
@rendermode InteractiveServer
@inject PersistentComponentState ApplicationState<h1>持久化状态示例</h1><p>计数器: @currentCount</p><button @onclick="IncrementCount">增加</button>@code {private PersistingComponentStateSubscription persistingSubscription;private int currentCount;protected override void OnInitialized(){persistingSubscription = ApplicationState.RegisterOnPersisting(PersistState);if (ApplicationState.TryTakeFromJson<int>("count", out var restoredCount)){currentCount = restoredCount;}}private void IncrementCount(){currentCount++;}private Task PersistState(){ApplicationState.PersistAsJson("count", currentCount);return Task.CompletedTask;}public void Dispose(){persistingSubscription.Dispose();}
}
5. 安全增强
5.1 身份验证集成
@page "/secure"
@attribute [Authorize]
@rendermode InteractiveServer<h1>受保护页面</h1><p>欢迎, @context.User.Identity?.Name!</p>@code {[CascadingParameter]private Task<AuthenticationState> context { get; set; }
}
5.2 防伪令牌
@page "/form-with-antiforgery"
@attribute [ValidateAntiForgeryToken]<EditForm method="post"><!-- 表单内容 -->
</EditForm>
6. 部署选项
6.1 混合部署模式
// Program.cs 配置
app.MapRazorComponents<App>().AddInteractiveServerRenderMode().AddInteractiveWebAssemblyRenderMode();
6.2 渐进式 Web 应用 (PWA)
dotnet new blazor --pwa
7. 最佳实践
-
合理选择渲染模式:
- 使用 Static SSR 获取内容
- 关键交互使用 Interactive Server
- 复杂客户端逻辑使用 WebAssembly
-
组件设计原则:
- 保持组件小型化
- 避免过度嵌套
- 合理使用生命周期方法
-
性能优化技巧:
- 虚拟化长列表
- 延迟加载非关键组件
- 使用
@key
优化渲染
-
调试建议:
- 浏览器开发者工具
- .NET WebAssembly 调试
- 服务器端日志
小结
.NET 8 中的 Blazor 代表了 Web 开发的未来方向,它通过统一的编程模型、灵活的渲染策略和显著的性能改进,使开发者能够构建现代、高效的全栈 Web 应用。无论是简单的内容网站还是复杂的企业级应用,Blazor 都提供了强大的工具和框架支持。
四、.NET MAUI
.NET MAUI (Multi-platform App UI) 是微软推出的下一代跨平台应用开发框架,作为 Xamarin.Forms 的继任者,它允许开发者使用单一代码库构建适用于 Android、iOS、macOS 和 Windows 的原生应用。.NET 8 为 MAUI 带来了多项重要改进,包括性能优化、新功能和更好的开发体验。
1. .NET MAUI 核心特性
1.1 跨平台统一性
.NET MAUI 提供了一套统一的 API,使开发者能够:
- 单一代码库:使用 C# 和 XAML 编写一次代码,即可部署到多个平台
- 统一项目结构:不再需要为每个平台维护多个项目文件,简化了项目管理
- 原生性能:充分利用各平台的原生控件和硬件加速能力
1.2 现代化开发模式
- MVVM (Model-View-ViewModel):支持数据绑定和命令模式,适用于复杂业务逻辑
- MVU (Model-View-Update):基于函数式编程的架构,简化状态管理
- Blazor 集成:允许在 MAUI 应用中使用 Blazor 组件构建混合 UI
2. .NET 8 中的新特性
2.1 NativeAOT 支持
.NET 8 为 MAUI 引入了 NativeAOT(提前编译)支持,显著优化了应用性能:
- 更小的应用体积:通过裁剪未使用的代码减少包大小
- 更快的启动时间:消除 JIT 编译开销,提高冷启动速度
- 更低的内存占用:适用于资源受限的移动设备
2.2 性能优化
- AndroidStripILAfterAOT:优化 Android 应用的 IL 代码裁剪
- AndroidEnableMarshalMethods:改进 Android 平台互操作性能
- iOS NativeAOT:首次为 iOS 提供 NativeAOT 支持
2.3 质量改进
- 热重载增强:提供更稳定的 XAML 和 C# 热重载体验
- 可视状态管理器改进:更灵活地管理 UI 状态变化
- 绑定系统优化:提升数据绑定性能和可靠性
3. 项目结构与开发流程
3.1 项目模板
.NET 8 MAUI 提供两种主要项目模板:
- MAUI 应用:基于 XAML 和 C# 的传统跨平台应用
- MAUI Blazor 应用:结合 Blazor 的混合开发模式
3.2 典型项目结构
MyMauiApp/
├── Platforms/ # 平台特定代码
│ ├── Android/
│ ├── iOS/
│ ├── MacCatalyst/
│ └── Windows/
├── Resources/ # 共享资源
│ ├── Fonts/
│ ├── Images/
│ └── Styles/
├── App.xaml # 全局应用定义
└── MainPage.xaml # 主页面定义
3.3 开发环境要求
- Visual Studio 2022 17.8+(Windows)
- .NET 8 SDK
- Xcode 15+(macOS 开发 iOS 应用)
- Android SDK(Android 开发)
4. MAUI 开发实战
4.1 创建 MAUI 项目
dotnet new maui -n MyMauiApp
或通过 Visual Studio 选择 “.NET MAUI App” 模板
4.2 基本页面示例
MainPage.xaml
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"x:Class="MyMauiApp.MainPage"><VerticalStackLayout><Label Text="Welcome to .NET MAUI!"FontSize="32"HorizontalOptions="Center" /><Button Text="Click Me"Clicked="OnButtonClicked" /></VerticalStackLayout>
</ContentPage>
MainPage.xaml.cs
public partial class MainPage : ContentPage
{public MainPage(){InitializeComponent();}private void OnButtonClicked(object sender, EventArgs e){DisplayAlert("Message", "Button was clicked!", "OK");}
}
4.3 平台特定代码
通过条件编译或依赖注入处理平台差异:
#if ANDROID// Android 特定代码
#elif IOS// iOS 特定代码
#endif
5. 部署与发布
5.1 调试与运行
- Windows:直接运行或部署到本地机器
- Android:使用模拟器或真机调试
- iOS:需要 macOS 和 Xcode
5.2 发布应用
Android 发布命令
dotnet publish -f net8.0-android -c Release
iOS 发布命令
dotnet publish -f net8.0-ios -c Release
6. 性能优化技巧
- 减少视图层级:简化 XAML 布局结构
- 使用懒加载:延迟初始化非关键组件
- 优化图片资源:使用适当分辨率的图像
- 启用 AOT 编译:减少运行时开销
- 使用数据缓存:减少重复计算和网络请求
7. 与其他技术的比较
框架 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
.NET MAUI | 单一代码库、原生性能、.NET 生态 | 较新、生态系统仍在成长 | 企业应用、跨平台工具 |
Flutter | 高性能、丰富的 UI 组件 | Dart 语言学习曲线 | 复杂 UI 应用 |
React Native | JavaScript 生态、社区活跃 | 性能稍逊、需要原生模块 | 前端开发者快速迭代 |
Xamarin.Forms | 成熟稳定 | 架构较旧 | 现有 Xamarin 项目维护 |
8. 未来发展方向
- 更广泛的平台支持:可能扩展至更多设备类型
- 更深度 Blazor 集成:增强 Web 和移动的统一开发体验
- AI 能力集成:结合 .NET 的 AI 库提供智能功能
- 更完善的工具链:改进 Visual Studio 和 CLI 工具支持
9. 学习资源
- 官方 .NET MAUI 文档
- .NET MAUI 扩展 for VS Code
- MAUI 社区工具包
.NET 8 MAUI 代表了微软在跨平台开发领域的最新进展,通过统一的开发模型、性能优化和现代化工具链,为开发者提供了构建高质量跨平台应用的高效解决方案。
全文总结
本文详细介绍了C#语言结合.NET 8在Web和移动项目开发中的应用,重点探讨了ASP.NET Core、Blazor和.NET MAUI三大框架的核心特性、新功能及开发实践。在Web项目开发中,ASP.NET Core通过改进的请求处理管道、多种主机模型和服务器选项,支持Web API、全栈Web应用、高性能应用开发等多种场景,并在.NET 8中引入了NativeAOT支持、增强的身份验证方案和Blazor全栈改进等新特性。Blazor作为全栈Web框架,在.NET 8中实现了渲染模式统一、流式渲染、增强表单处理和改进的JavaScript互操作等功能,同时优化了性能和状态管理。.NET MAUI作为跨平台移动应用开发框架,提供了单一代码库构建多平台应用的能力,支持多种开发模式,在.NET 8中获得了NativeAOT支持、性能优化和质量改进。文章还分别介绍了这三大框架的开发实践、部署选项、监控与诊断、最佳实践等内容,为开发者提供了全面的指导。
相关文章:
青少年编程与数学 02-020 C#程序设计基础 17课题、WEB与移动开发
青少年编程与数学 02-020 C#程序设计基础 17课题、WEB与移动开发 一、C#语言Web和移动项目开发1. Web项目开发2. 移动项目开发 二、ASP.NET Core1. ASP.NET Core 基础架构1.1 请求处理管道1.2 主机模型1.3 服务器选项 2. 核心新特性2.1 NativeAOT 支持2.2 增强的身份验证方案2.…...
Qt OpenGL 实现交互功能(如鼠标、键盘操作)
一、基本概念 1. Qt 事件系统与 OpenGL 渲染的协同 Qt 提供了完善的事件处理机制,而 OpenGL 负责图形渲染。交互的实现本质上是: 事件捕获:通过 Qt 的事件系统(如 mousePressEvent、keyPressEvent)捕获用户输入。 状态更新:根据输入事件更新场景状态(如相机位置、模型…...
【Go语言基础【3】】变量、常量、值类型与引用类型
文章目录 一、值(Value)与字面量(Literal)1. 值2. 字面量 二、变量(Variable)1. 声明方式2. 赋值方式3. 变量默认值4. 类型与值的匹配 三、常量(Constant)1. 声明方式2. 常量的特性3…...

8天Python从入门到精通【itheima】-69~70(字符串的常见定义和操作+案例练习)
目录 69节-字符串的定义和操作 1.学习目标 2.数据容器视角下的字符串 3.字符串的下标索引 4.字符串是一个无法修改的数据容器 5.字符串的常用操作 【1】index方法 【2】replace方法:进过替换,得到一个新的字符串 【3】split方法:将字…...
在 Linux 中查看文件并过滤空行
在 Linux 中查看文件并过滤空行 在 Linux 中查看文件内容时过滤掉空行有多种方法,以下是几种常用的方法: 方法 1:使用 grep grep -v ^$ filename-v:反转匹配,只显示不匹配的行^$:表示空行的正则表达式&a…...

GC1809:高性能音频接收与转换芯片
GC1809 是一款高性能音频接收与转换芯片,适用于多种音频设备,如 A/V 接收器、多媒体音响设备、机顶盒等。本文将简要介绍该芯片的主要特性、性能参数及应用。 主要特性 多协议兼容:兼容 IEC60958、S/PDIF、EIAJ CP1201 和 AES3 协议。 多种…...

项目实战——C语言扫雷游戏
这是一款9*9的扫雷游戏 扫雷游戏 1.需求分析2.程序框架设计3.分函数实现打印游戏菜单界面游戏主逻辑函数程序主入口初始化游戏棋盘随机布置地雷显示当前棋盘状态计算指定位置周围的地雷数量玩家排雷主逻辑 4.分文件实现(1)test.c(2࿰…...

【Java】CopyOnWriteArrayList
一,概述 CopyOnWriteArrayList作为List接口的实现之一,它区分于ArrayList在于它是线程安全的。如它名字一样,所有的写操作均复制了原数组的值,虽说代价较大,但读多写少的环境下,是可接受的。笔者在此简单看…...
【JS进阶】ES6 实现继承的方式
ES6 实现继承的方式 基本语法 class Parent {constructor(name) {this.name name;this.colors [red, blue];}sayName() {console.log(this.name);} }class Child extends Parent {constructor(name, age) {super(name); // 必须调用super(),且在使用this之前thi…...
mac 电脑Pycharm ImportError: No module named pip
这个错误表明 PyCharm 在尝试使用 pip 时找不到该模块,通常是由于 Python 环境中的 pip 未正确安装或损坏引起的。以下是针对 Mac 系统的完整解决方案: 解决方案步骤: 检查终端中的 pip 状态 打开终端(Terminal),执行以下命令: bash python3 -m ensurepip --upgrade pi…...

C#入门学习笔记 #8(委托)
欢迎进入这篇文章,文章内容为学习C#过程中做的笔记,可能有些内容的逻辑衔接不是很连贯,但还是决定分享出来,由衷的希望可以帮助到你。 笔记内容会持续更新~~ 本章介绍C#中的委托,本章难度较大... 委托 C#中的委托是C语言、C++中函数指针的升级版。接下来介绍一个概念—…...

CSS 3D 变换中z-index失效问题
CSS 3D 变换中 z-index 失效问题 1. z-index 失效了 在 CSS 中,z-index 通常用于控制元素的层叠顺序,数值越大,元素越靠前显示。在 3D 变换(如 rotateX、translateZ) 中使用 z-index 时,可能会发现z-inde…...
Vue3 中使用 i18n
Vue3 中使用i18n 在 Vue 3 中使用国际化(i18n)可以通过官方的 vue-i18n 库来实现。vue-i18n 是专门为 Vue 应用设计的国际化解决方案,支持多语言切换、动态内容插值等功能。 以下是如何在 Vue 3 中使用 vue-i18n 的详细步骤: 1.…...
vue:当前对象添加对应值
this.$set(this.dynamicValidateForm.domains[index], // 目标对象item.roundProperty, // 要添加的属性名row[item.roundProperty] ? row[item.roundProperty].split(",") : [] // 属性值 ); 说明: 第一个参数:th…...

Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(七):消息框交互功能添加
Tailwind CSS 实战,基于Kooboo构建AI对话框页面(一) Tailwind CSS 实战,基于Kooboo构建AI对话框页面(二):实现交互功能 Tailwind CSS 实战,基于 Kooboo 构建 AI 对话框页面&#x…...
JavaScript 核心原理深度解析-不停留于表面的VUE等的使用!
一、解释 JavaScript 作为当今最流行的编程语言之一,广泛应用于 Web 开发、移动端开发、后端开发等多个领域。然而,许多开发者在使用 JavaScript 时,往往只关注其表面的语法和 API,而对其底层原理和核心机制了解甚少。深入理解 J…...

【计算机网络】网络层IP协议与子网划分详解:从主机通信到网络设计的底层逻辑
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:计算机网络 🌹往期回顾🌹: 【计算机网络】传输层TCP协议——协议段格式、三次握手四次挥手、超时重传、滑动窗口、流量控制、 &…...

基于WSL搭建Ubnutu 20.04.6 LTS(二)-部署Docker环境
Docker是一组平台即服务(PaaS)的产品。它基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器。托管容器的软件称为Docker引擎。Docker能够帮助开发者在轻量级容器中自动部署应用程序,并使得不同容器中的应用程序彼此隔离&a…...

【图像处理入门】6. 频域图像处理:傅里叶变换与滤波的奥秘
摘要 频域图像处理通过傅里叶变换将图像从空间域转换到频率域,为图像增强、去噪、压缩等任务提供全新视角。本文将深入解析傅里叶变换原理,介绍低通、高通滤波的实现方式,结合OpenCV和Python代码展示频域滤波在去除噪声、增强边缘中的应用,帮助读者掌握图像频域处理的核心…...

基于开源AI智能名片链动2+1模式S2B2C商城小程序的生态农庄留存运营策略研究
摘要:本文聚焦于生态农庄运营中的游客留存问题,以村长与乡亲们吸引游客进村为背景,深入探讨如何借助开源AI智能名片链动2 1模式S2B2C商城小程序实现游客的有效留存。通过分析该小程序在信息传递、服务整合、营销激励等方面的优势,…...

Jenkins实现自动化部署Springboot项目到Docker容器(Jenkinsfile)
Jenkins实现自动化部署Springboot项目到Docker容器 引言:为什么需要自动化部署? 在软件开发中,频繁的手动部署既耗时又容易出错。通过 Docker + Jenkins + Git 的组合,您可以实现: ✅ 一键部署:代码推送后自动构建和部署🐳 环境一致性:Docker 确保开发、测试、生产环…...

【Linux】Git原理与使用
编程不仅是解决问题的艺术,更是对复杂性进行优雅管理的哲学。 前言 这是我自己学习Linux系统编程的第三篇笔记。后期我会继续把Linux系统编程笔记开源至博客上。 上一期笔记是关于Vim文本编辑器知识: 【Linux】Vim文本编辑器-CSDN博客https://blog.csdn…...
Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束
简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束前言项目简介技术栈…...

A*算法实现原理以及实现步骤(C++)
算法原理: A*算法是一种启发式搜索算法,用于在图中寻找最短路径。它结合了Dijkstra算法的确保最短路径的优点和贪心最佳优先搜索的高效性。其核心在于使用一个评估函数: f(n) g(n) h(n) 其中: - g(n) 表示从起点到节点n的实际代…...

Devops自动化运维---py基础篇一
python基础篇 1、基本数据类型 2、算术运算符 3、变量 变量:编程语言中能储存结果或能表示值的抽象概念 用途:用一段数据赋予一个简短、易于记忆的名字,方便重复使用3.1 格式转化变量 操作符号描述%s字符串%d整数%f浮点数 实例࿱…...

平安养老险蚌埠中心支公司开展金融宣教活动
近日,平安养老保险股份有限公司(以下简称“平安养老险”)蚌埠中心支公司,走进某合作企业开展金融教育宣传活动。 活动现场,平安养老险蚌埠中心支公司工作人员通过发放宣传手册和小礼品等方式,向企业员工普…...
游戏设计模式 - 子类沙箱
核心思想 子类沙箱模式(Subclass Sandbox)通过将核心逻辑封装在基类中,为子类提供安全的"沙箱"环境。子类通过组合或重写基类提供的预定义操作来实现行为,而非直接操作底层系统。 这种模式在游戏开发中常用于实现角色…...
java-springboot文件上传校验之只允许上传excel文件,且检查不能是脚本或者有害文件或可行性文件
四重验证机制: 文件扩展名检查(.xlsx/.xls)MIME类型检查文件魔数验证(真实文件类型)可执行文件特征检测 防御措施: 使用try-with-resources确保流关闭限制文件大小防止DoS攻击使用Apache POI的FileMagic进…...
openvino如何在c++中调用pytorch训练的模型
步骤1:将PyTorch模型转换为ONNX格式 转换代码示例(Python) import torch import torchvision1. 加载训练好的PyTorch模型 model torchvision.models.resnet18(pretrainedTrue) model.eval() # 设置为评估模式2. 创建虚拟输入(…...

Redisson简明教程—你家的锁芯该换了
1.简介 各位攻城狮们,你还在使用原生命令来上锁么?看来你还是不够懒,饺子都给你包好了,你非要吃大饼配炒韭菜,快点改善一下“伙食”吧,写代码也要来点幸福感。今天咱们就来聊聊Redisson提供的各种锁&#…...