【ASP.NET学习】ASP.NET MVC基本编程
文章目录
- ASP.NET MVC
- MVC 编程模式
- ASP.NET MVC - Internet 应用程序
- 创建MVC web应用程序
- 应用程序信息
- 应用程序文件
- 配置文件
- 用新建的ASP.NET MVC程序做一个简单计算器
- 1. **修改视图文件**
- 2. **修改控制器文件**
- 用新建的ASP.NET MVC程序做一个复杂计算器
- 1.创建模型(Models)
- 2. 修改视图(View)
- 3. 修改控制器(Controller)
- 4. 创建 JavaScript 文件
ASP.NET MVC
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
ASP.NET 支持三种不同的开发模式:
Web Pages(Web 页面)、MVC(Model View Controller 模型-视图-控制器)、Web Forms(Web 窗体)。
本教程介绍 MVC,是ASP.NET三种编程方式中的一种。
MVC 编程模式
MVC 是三种 ASP.NET 编程模式中的一种。
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
组成 | 逻辑层 | 介绍 |
---|---|---|
Model(模型) | 业务层 | 是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。 |
View(视图) | 显示层 | 是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。 |
Controller(控制器) | 输入控制 | 是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。 |
优点:
-
MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
-
MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
-
MVC 编程模式是对传统 ASP.NET(Web Forms)的一种轻量级的替代方案。它是轻量级的、可测试性高的框架,同时整合了所有已有的 ASP.NET 特性,比如母版页、安全性和认证。
ASP.NET MVC - Internet 应用程序
为了学习 ASP.NET MVC,我们将构建一个 Internet 应用程序。
我们将构建一个支持添加、编辑、删除和列出数据库存储信息的 Internet 应用程序。
当这个空白的 Internet 应用程序被创建之后,我们将逐步向该应用添加代码,直到全部完成。我们将使用 C# 作为编程语言。
沿着这个思路,我们将讲解这个应用程序的内容、代码和所有组件。
创建MVC web应用程序
我们使用VS 2019进行开发。
创建项目。
项目树:
应用程序信息
Properties
References
应用程序文件夹
App_Data 文件夹
Content 文件夹
Controllers 文件夹
Models 文件夹
Scripts 文件夹
Views 文件夹
配置文件
Global.asax
packages.config
Web.config
所有的 MVC 应用程序的文件夹名称都是相同的。MVC 框架是基于默认的命名。控制器写在 Controllers 文件夹中,视图写在 Views 文件夹中,模型写在 Models 文件夹中。您不必在应用程序代码中使用文件夹名称。
标准化的命名减少了代码量,同时有利于开发人员对 MVC 项目的理解。
文件夹 | 功能 |
---|---|
App_Data 文件夹 | App_Data 文件夹用于存储应用程序数据。我们将在本教程后面的章节中介绍添加 SQL 数据库到 App_Data 文件夹。 |
Content 文件夹 | Content 文件夹用于存放静态文件,比如样式表(CSS 文件)、图标和图像。 |
Controllers 文件夹 | Controllers 文件夹包含负责处理用户输入和响应的控制器类。MVC 要求所有控制器文件的名称以 “Controller” 结尾。 |
Models 文件夹 | Models 文件夹包含表示应用程序模型的类。模型控制并操作应用程序的数据。 |
Views 文件夹 | Views 文件夹用于存储与应用程序的显示相关的 HTML 文件(用户界面)。Views 文件夹中包含每个控制器对应的一个文件夹。 |
Scripts 文件夹 | Scripts 文件夹存储应用程序的 JavaScript 文件。默认情况下,Visual Web Developer 在这个文件夹中存放标准的 MVC、Ajax 和 jQuery 文件 |
运行程序
运行后的页面
应用程序信息
Properties
包含了项目的配置文件和资源文件。其中,AssemblyInfo.cs 文件用于描述程序集的元数据信息,包括版本号、公司名称、版权信息等。这些文件可以帮助程序员轻松管理和配置项目。
引用
指项目所依赖的外部二进制组件库(如 DLL 文件),这些组件库包含了程序执行所需要的函数、类、接口等等。当项目需要使用这些组件时,需要先将它们添加到引用列表中。通过引用,项目可以访问这些外部组件并调用其中的方法或属性,从而实现更加丰富的功能。通常,引用可以在 Visual Studio 中管理,在项目的“引用”节点下添加、删除、更新等。
应用程序文件
App_Data
通常用于存储应用程序的数据文件,如 XML 文件、数据库文件、日志文件等等。这些文件不应该直接被访问,而是由应用程序来操作这些文件。例如,应用程序可以读取 XML 文件中的数据、从数据库文件中查询数据、写入日志文件等等。 通常情况下,App_Data 文件夹中的文件不应该包含代码或其他程序文件,而是应该只包含数据和配置信息。这样可以更好地分离代码和数据,便于应用程序的管理和维护。
App_Start
通常包含用于启动应用程序的配置、路由、日志等等相关代码。例如,BundleConfig.cs 文件用于配置 JavaScript 和 CSS 文件的 Bundle,在应用程序启动时会被自动执行;FilterConfig.cs 文件用于配置全局的 Action Filter,会在应用程序启动时被自动注册;RouteConfig.cs 文件用于配置应用程序的路由规则,也会在应用程序启动时被自动调用等等。App_Start 文件夹在程序启动之前执行应用程序的配置和初始化,从而保证应用程序的正常运行。
Content
通常用于存储应用程序的静态资源文件,如 CSS 样式表、图片、JavaScript 文件等等。这些静态资源文件可以通过 URL 来访问,通常是通过视图文件或布局文件来引用,以便于页面呈现和交互效果的实现。需要注意的是,Content 文件夹中的静态资源文件通常不会包含动态代码,如服务器端代码、JavaScript 表达式等等。这些静态资源文件只是应用程序的静态展示内容,是客户端浏览器可以直接解释和呈现的内容。
Controllers
包含处理来自客户端浏览器请求并生成响应的控制器类文件。这些类通常包含多个操作方法,每个操作对应着一个 HTTP 请求类型,如GET 、POST 、PUT 等。控制器通过模型交互来响应 Web UI 的用户动作,从而实现模型、视图、控制器之间的协作。控制器处理客户端的请求,从模型中检索数据并将响应提交到视图,最后再输出回客户端。Controllers 文件夹中包含一些ASP.NET MVC应用程序可用的基础控制器,例如:HomeController 等。
fonts
是 Web 应用程序中用于保存网站所需字体文件的文件夹。在许多Web 站点中,定制字体已成为设计趋势。由于常用字体可能会在用户的系统中缺少,因此,网站通常会将自定义字体文件包括在 Fonts 文件夹中,以确保字体在用户设备中正确地显示。
Models
一个用于存放各种数据模型的文件夹,也就是其中包含了表示应用程序中的数据结构的类。这些模型类可以与数据库中的表对应起来,也可以用来表示复杂的数据结构。它们主要的功能是提供数据的访问和处理,可以从数据库中获取数据、进行数据修改、通过控制器向视图提供数据等等。这些模型类是 MVC 设计模式中 Model 层的一部分,即数据访问层或数据模型层。除此之外,可能还会包含一些用于数据访问和处理的辅助类,例如数据库上下文类、数据访问对象(DAO)类、业务逻辑处理类等等。
Scripts
包含项目需要使用的 JavaScript 文件。这些文件包括 jQuery、Bootstrap 等库和插件,以及项目自定义的 JavaScript 文件。在视图页面中需要用到 JavaScript 时,可以通过引入 Scripts 文件夹中的脚本来实现。
Views
用于存放视图页面的文件夹。每个控制器都有一个匹配的视图页面文件夹,该文件夹与控制器同名。例如,名为 HomeController 的控制器将包含名为 Home 的视图文件夹。在这个文件夹里存放的是用于呈现数据模型的视图页面,可以包含 HTML、CSS、JavaScript等内容,用于呈现和渲染用户界面。在 Views 文件夹中包含了 cshtml 文件,这些是视图模板文件,定义了如何呈现数据模型和控件的组合。
配置文件
favicon.ico
是为网站添加图标的文件。Favicon 是" Favorites icon "的缩写,也称为网站图标或书签图标。当用户收藏网站或将网站添加到书签时,浏览器会显示该图标。此外,在浏览器地址栏和标签上也会显示该图标,用于标识网站。
Global.asax
是一个 ASP.NET 应用程序的全局文件,它可以实现应用程序级别的事件处理程序。当应用程序启动时,该文件负责初始化应用程序配置和全局设置。在 Global.asax 文件中可以添加应用程序级别的事件处理程序,例如应用程序的开始、结束、错误处理等等。
packages.config
用于记录管理项目中所有 NuGet 包的详细信息的文件,包括名称、版本、依赖项等信息。NuGet 是用于 .NET 平台的包管理器,通过 NuGet 可以方便地找到、安装、卸载和管理第三方库和工具。
Web.config
是一个 XML 格式的配置文件,其中包含了网站部署所需的所有设置和选项。在 Web.config 文件中,可以定义与应用程序有关的各种设置,包括连接字符串、验证模式、HTTP 模块、错误处理、会话状态、缓存设置等等。此外,Web.config 文件还允许开发者定制网站功能,并提供了一些高级功能的配置选项,例如 ASP.NET 管道和 HTTP 处理程序的配置。Web.config 文件是 ASP.NET MVC 项目中非常重要的一部分,可以帮助开发者有效地管理和控制网站的访问和行为。
用新建的ASP.NET MVC程序做一个简单计算器
我们将创建一个简单的四则运算计算器,并使用一些基本的CSS来美化页面。
1. 修改视图文件
我们将更新 Index.cshtml 文件,添加一个表单来选择运算类型,并使用CSS来美化页面。
路径: Views/Home/Index.cshtml
@{ViewBag.Title = "Home Page ";
}<div class="jumbotron"><h1>ASP.NET</h1><p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p><p><a href="https://asp.net" class="btn btn-primary btn-lg">Learn more »</a></p>
</div><div class="row"><div class="col-md-4"><h2>Getting started</h2><p>ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites thatenables a clean separation of concerns and gives you full control over markupfor enjoyable, agile development.</p><p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301865">Learn more »</a></p></div><div class="col-md-4"><h2>Get more libraries</h2><p>NuGet is a free Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects.</p><p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301866">Learn more »</a></p></div><div class="col-md-4"><h2>Web Hosting</h2><p>You can easily find a web hosting company that offers the right mix of features and price for your applications.</p><p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301867">Learn more »</a></p></div>
</div>@* 以下内容新增*@<style>body {font-family: Arial, sans-serif;background-color: #f4f4f4;margin: 0;padding: 20px;}.calculator {background: white;padding: 20px;border-radius: 5px;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);max-width: 400px;margin: auto;}h2 {text-align: center;}label {display: block;margin: 10px 0 5px;}input[type="number"], select {width: 100%;padding: 10px;margin: 5px 0 15px;border: 1px solid #ccc;border-radius: 4px;}input[type="submit"] {background-color: #28a745;color: white;border: none;padding: 10px;border-radius: 4px;cursor: pointer;width: 100%;}input[type="submit"]:hover {background-color: #218838;}.result {margin-top: 20px;text-align: center;font-size: 1.2em;}
</style><div class="calculator"><h2>四则运算计算器</h2><form method="post" action="@Url.Action("Calculate", "Home")"><label for="num1">数字1::</label><input type="number" id="num1" name="num1" required /><label for="operation">运算符:</label><select id="operation" name="operation"><option value="add">加法</option><option value="subtract">减法</option><option value="multiply">乘法</option><option value="divide">除法</option></select><label for="num2">数字2:</label><input type="number" id="num2" name="num2" required /><input type="submit" value="计算" /></form>@if (ViewBag.Result != null){<div class="result">结果:@ViewBag.Result</div>}
</div>
2. 修改控制器文件
我们需要更新 HomeController,以支持不同的运算。根据选择的运算符进行相应的计算。
路径: Controllers/HomeController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;namespace ASP.NET_MVC.Controllers
{public class HomeController : Controller{public ActionResult Index(){return View();}public ActionResult About(){ViewBag.Message = "Your application description page.";return View();}public ActionResult Contact(){ViewBag.Message = "Your contact page.";return View();}// 以下为新增内容[HttpPost]public ActionResult Calculate(int num1, int num2, string operation){double result = 0;switch (operation){case "add":result = num1 + num2;break;case "subtract":result = num1 - num2;break;case "multiply":result = num1 * num2;break;case "divide":if (num2 != 0){result = (double)num1 / num2;}else{return Content("除数不能为零!");}break;default:return Content("未知运算符!");}ViewBag.Result = result; // 将结果传递给视图return View("Index"); // 返回到Index视图}}
}
用新建的ASP.NET MVC程序做一个复杂计算器
我们将包含HTML、CSS放在View中,将JavaScript代码放在Scripts中,做一个功能更多的科学计算器。
运行界面如下:
1.创建模型(Models)
在这个简单的科学计算器中,我们不需要复杂的模型,因为所有的计算逻辑都将在前端处理。但是为了遵循MVC的结构,我们可以创建一个简单的模型类。
路径: Models/CalculatorModel.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;namespace ASP.NET_MVC.Models
{public class CalculatorModel{public string Expression { get; set; }public string Result { get; set; }}
}
2. 修改视图(View)
在视图中,我们将包含HTML、CSS代码。
路径: Views/Home/Index.cshtml
@{ViewBag.Title = "Home Page ";
}<div class="jumbotron"><h1>ASP.NET</h1><p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p><p><a href="https://asp.net" class="btn btn-primary btn-lg">Learn more »</a></p>
</div><div class="row"><div class="col-md-4"><h2>Getting started</h2><p>ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites thatenables a clean separation of concerns and gives you full control over markupfor enjoyable, agile development.</p><p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301865">Learn more »</a></p></div><div class="col-md-4"><h2>Get more libraries</h2><p>NuGet is a free Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects.</p><p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301866">Learn more »</a></p></div><div class="col-md-4"><h2>Web Hosting</h2><p>You can easily find a web hosting company that offers the right mix of features and price for your applications.</p><p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301867">Learn more »</a></p></div>
</div>@* 以下内容新增*@<style>body {font-family: 'Arial', sans-serif;background-color: #1a1a1a;color: #ffffff;margin: 0;padding: 20px;}.calculator {background: #2a2a2a;padding: 20px;border-radius: 10px;box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);max-width: 400px;margin: auto;}h2 {text-align: center;}input[type="text"], input[type="button"] {width: calc(100% - 20px);padding: 10px;margin: 5px 0;border: none;border-radius: 5px;font-size: 18px;}input[type="text"] {background: #333;color: #fff;}input[type="button"] {background: #007bff;color: white;cursor: pointer;}input[type="button"]:hover {background: #0056b3;}.result {margin-top: 20px;text-align: center;font-size: 1.5em;}.button-row {display: flex;flex-wrap: wrap;justify-content: space-between;}.button {flex: 1 0 48%;margin: 5px;}
</style><div class="calculator"><h2>科学计算器</h2><input type="text" id="expression" placeholder="输入计算表达式" /><div class="button-row"><input type="button" class="button" value="sin(x)" onclick="document.getElementById('expression').value += 'Math.sin(';" /><input type="button" class="button" value="cos(x)" onclick="document.getElementById('expression').value += 'Math.cos(';" /><input type="button" class="button" value="tan(x)" onclick="document.getElementById('expression').value += 'Math.tan(';" /><input type="button" class="button" value="√" onclick="document.getElementById('expression').value += 'Math.sqrt(';" /></div><div class="button-row"><input type="button" class="button" value="log(x)" onclick="document.getElementById('expression').value += 'Math.log(';" /><input type="button" class="button" value="exp(x)" onclick="document.getElementById('expression').value += 'Math.exp(';" /><input type="button" class="button" value="π" onclick="document.getElementById('expression').value += 'Math.PI';" /><input type="button" class="button" value="e" onclick="document.getElementById('expression').value += 'Math.E';" /></div><div class="button-row"><input type="button" class="button" value="+" onclick="document.getElementById('expression').value += ' + ';" /><input type="button" class="button" value="-" onclick="document.getElementById('expression').value += ' - ';" /><input type="button" class="button" value="*" onclick="document.getElementById('expression').value += ' * ';" /><input type="button" class="button" value="/" onclick="document.getElementById('expression').value += ' / ';" /></div><div class="button-row"><input type="button" class="button" value="计算" onclick="calculate()" /><input type="button" class="button" value="清空" onclick="clearInput()" /></div><div id="result" class="result"></div>
</div><!-- 引入外部 JavaScript 文件 -->
<script src="~/scripts/calculator.js"></script>
3. 修改控制器(Controller)
在视图中,我们将包含HTML、CSS和JavaScript代码。JavaScript代码将放在视图的底部,以确保在DOM加载后执行。
路径: Views/Home/Index.cshtml
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;namespace ASP.NET_MVC.Controllers
{public class HomeController : Controller{public ActionResult Index(){return View();}public ActionResult About(){ViewBag.Message = "Your application description page.";return View();}public ActionResult Contact(){ViewBag.Message = "Your contact page.";return View();}}
}
4. 创建 JavaScript 文件
首先,在项目中创建一个 Scripts 文件夹(如果尚未存在),然后在该文件夹中创建一个新的 JavaScript 文件,例如 calculator.js。其中放的是计算的动作方法。
路径: scripts/calculator.js
function calculate() {const input = document.getElementById('expression').value;try {const result = eval(input); // 使用 eval 来计算表达式document.getElementById('result').innerText = '结果: ' + result;} catch (e) {document.getElementById('result').innerText = '错误: ' + e.message;}
}function clearInput() {document.getElementById('expression').value = '';document.getElementById('result').innerText = '';
}
相关文章:
【ASP.NET学习】ASP.NET MVC基本编程
文章目录 ASP.NET MVCMVC 编程模式ASP.NET MVC - Internet 应用程序创建MVC web应用程序应用程序信息应用程序文件配置文件 用新建的ASP.NET MVC程序做一个简单计算器1. **修改视图文件**2. **修改控制器文件** 用新建的ASP.NET MVC程序做一个复杂计算器1.创建模型(…...
在线工具箱源码优化版
在线工具箱 前言效果图部分源码源码下载部署教程下期更新 前言 来自缤纷彩虹天地优化后的我爱工具网源码,百度基本全站收录,更能基本都比较全,个人使用或是建站都不错,挑过很多工具箱,这个比较简洁,非常实…...
网站自动签到
我研究生生涯面临两个问题,一是写毕业论文,二是找工作,这两者又有很大的冲突。怎么解决这两个冲突呢?把python学好是一个路子,因此从今天我要开一个专栏就是学python 其实我的本意不是网站签到,我喜欢在起点…...
python学opencv|读取图像(二十七)使用time()绘制弹球动画
【1】引言 前序已经学习了pythonopencv画线段、圆形、矩形、多边形和文字的相关操作,具体文章链接包括且不限于: python学opencv|读取图像(十八)使用cv2.line创造线段_cv2. 画线段-CSDN博客 python学opencv|读取图像࿰…...
物联网智能项目简述
物联网智能项目 一、物联网智能项目的定义 物联网智能项目是指基于物联网技术(IoT),结合人工智能(AI)、大数据、云计算等先进技术,开发出的具有智能化、自动化、远程监控等功能的项目。物联网(…...
el-table 合并单元格
参考文章:vue3.0 el-table 动态合并单元格 - flyComeOn - 博客园 <el-table :data"tableData" border empty-text"暂无数据" :header-cell-style"{ background: #f5f7fa }" class"parent-table" :span-method"obj…...
SQL语言的函数实现
SQL语言的函数实现 引言 随着大数据时代的到来,数据的存储和管理变得越来越复杂。SQL(结构化查询语言)作为关系数据库的标准语言,其重要性不言而喻。在SQL语言中,函数是一个重要的组成部分,可以有效地帮助…...
细说STM32F407单片机以DMA方式读写外部SRAM的方法
目录 一、工程配置 1、时钟、DEBUG、GPIO、CodeGenerator 2、USART3 3、NVIC 4、 FSMC 5、DMA 2 (1)创建MemToMem类型DMA流 (2)开启DMA流的中断 二、软件设计 1、KEYLED 2、fsmc.h、fsmc.c、dma.h、dma.c 3、main.h…...
Vue 3前端与Python(Django)后端接口简单示例
项目 后端(Django)前端(Vue 3) 后端(Django) 创建Django项目和应用: 确保你已经安装了Django。如果没有安装,可以使用以下命令安装: pip install django创建一个新的Dja…...
前端多语言
前端多语言目前常用i18n实现 一、react 1.安装依赖 npm install react-i18next i18next --save2.创建配置文件 src/i18n config.ts:对 i18n 进行初始化操作及插件配置 en.json:英文语言配置文件 zh.json:中文语言配置文件 config.ts im…...
单片机-直流电机实验
1、ULN2003芯片介绍 ULN2003, 该芯片是一个单片高电压、高电流的达林顿晶体管阵列集成电路。不仅可以用来 驱动直流电机,还可用来驱动五线四相步进电机。支持驱动大功率电器 因为 ULN2003 的输出是集电极开路,ULN2003 要输出高电平࿰…...
【Word_笔记】Word的修订模式内容改为颜色标记
需求如下:请把修改后的部分直接在原文标出来,不要采用修订模式 步骤1:打开需要转换的word后,同时按住alt和F11 进入(Microsoft Visual Basic for Appliations) 步骤2:插入 ---- 模块 步骤3&…...
计算机网络之---子网划分与IP地址
子网划分与IP地址的关系 在计算机网络中,子网划分(Subnetworking)是将一个网络划分为多个子网络的过程。通过子网划分,可以有效地管理和利用IP地址空间,提高网络的性能、安全性和管理效率。 子网划分的基本目的是通过…...
【LeetCode Hot100 贪心算法】 买卖股票的最佳时机、跳跃游戏、划分字母区间
贪心算法 买卖股票的最佳时机买卖股票的最佳时机II跳跃游戏跳跃游戏II划分字母区间 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的…...
[ 第36次CCFCSP]梦境巡查
题目背景 传说每当月光遍布西西艾弗岛,总有一道身影默默守护着居民们的美梦。 题目描述 梦境中的西西艾弗岛由 n1 个区域组成。梦境巡查员顿顿每天都会从梦之源(0 号区域)出发,顺次巡查 1,2,⋯ ,n 号区域,最后从 n…...
使用PVE快速创建虚拟机集群并搭建docker环境
安装Linux系统 这里以安装龙蜥操作系统AnolisOS8.9为例加以说明。 通过PVE后台上传操作系统ISO镜像。 然后在PVE上【创建虚拟机】,选定上传的龙蜥操作系统镜像进行系统安装。 注意:在安装过程中,要设定语言、时区、超管用户root的密码、普…...
模型 断裂点理论(风险控制)
系列文章 分享模型,了解更多👉 模型_思维模型目录。设置小损失,防止大风险。 1 断裂点理论的应用 1.1 电路系统中的保险丝应用 背景介绍: 在工程学中,电路系统是现代科技中不可或缺的一部分,广泛应用于各…...
机器学习之贝叶斯分类器和混淆矩阵可视化
贝叶斯分类器 目录 贝叶斯分类器1 贝叶斯分类器1.1 概念1.2算法理解1.3 算法导入1.4 函数 2 混淆矩阵可视化2.1 概念2.2 理解2.3 函数导入2.4 函数及参数2.5 绘制函数 3 实际预测3.1 数据及理解3.2 代码测试 1 贝叶斯分类器 1.1 概念 贝叶斯分类器是基于贝叶斯定理构建的分类…...
nginx http反向代理
系统:Ubuntu_24.0.4 1、安装nginx sudo apt-get update sudo apt-get install nginx sudo systemctl start nginx 2、配置nginx.conf文件 /etc/nginx/nginx.conf,但可以在 /etc/nginx/sites-available/ 目录下创建一个新的配置文件,并在…...
【Python运维】利用Python实现高效的持续集成与部署(CI/CD)流程
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 持续集成与部署(CI/CD)是现代软件开发中不可或缺的实践,通过自动化测试、构建和部署流程,显著提高了开发效率与运维质量。本文详细介绍…...
markdown存储到faiss向量数据库
目录 一、faiss接收的数据接口二、Markdown文件切分并处理为document列表1.markdown分割器2.文本分割器3.添加文件名 三、整体流程源代码 一、faiss接收的数据接口 add_docunments接收的documents是一个document对象的列表。 Document 对象的列表(List of Document…...
开源cJson用法
cJSON cJSON是一个使用C语言编写的JSON数据解析器,具有超轻便,可移植,单文件的特点,使用MIT开源协议。 cJSON项目托管在Github上,仓库地址如下: https://github.com/DaveGamble/cJSON 使用Git命令将其拉…...
SSL,TLS协议分析
写在前面 工作中总是会接触到https协议,也知道其使用了ssl,tls协议。但对其细节并不是十分的清楚。所以,就希望通过这篇文章让自己和读者朋友们都能对这方面知识有更清晰的理解。 1:tls/ssl协议的工作原理 1.1:设计的…...
华为路由器、交换机、AC、新版本开局远程登录那些坑(Telnet、SSH/HTTP避坑指南)
关于华为设备远程登录配置开启的通用习惯1、HTTP/HTTPS相关服务 http secure-server enablehttp server enable 2、Telnet服务telnet server enable3、SSH服务stelnet server enablessh user admin authentication-type password 「模拟器、工具合集」复制整段内容 链接&…...
Redis的数据结构(基本)
安装完成后,在任意目录输入redis-server命令即可启动Redis: redis-server 我们可以进入redis命令行窗口 Redis安装完成后就自带了命令行客户端:redis-cli,使用方式如下: redis-cli [options] [commonds] 其中常见…...
分布式锁 Redis vs etcd
为什么要实现分布式锁?为什么需要分布式锁,分布式锁的作用是什么,哪些场景会使用到分布式锁?分布式锁的实现方式有哪些分布式锁的核心原理是什么 如何实现分布式锁redis(自旋锁版本)etcd 的分布式锁(互斥锁(信号控制)版本) 分布式锁对比redis vs etcd 总结 为什么要实现分布式…...
docker中jenkins流水线式部署GitLab中springboot项目
本质就是将java项目拉取下来,并自动打包成docker镜像,运行 首先启动一个docker的jenkins 如果没有镜像使用我的镜像 通过网盘分享的文件:jenkins.tar 链接: https://pan.baidu.com/s/1VJOMf6RSIQbvW_V1zFD7eQ?pwd6666 提取码: 6666 放入服…...
甘蔗叶片图像元素含量的回归预测多模型实现【含私人数据集】
完整源码项目包获取→点击文章末尾名片! 基于python的小样本学习,完成对甘蔗叶片图像元素含量的回归预测 数据集这边我提供,包含91个样本,共182个图像,要求全部数据集保密,不能对外公开或泄露;…...
uniapp:钉钉小程序需要录音权限及调用录音
{// ... 其他配置项"mp-dingtalk": {"permission": {"scope.userLocation" : {"desc" : "系统希望获得您的定位用于确认您周围的设施数据"},"scope.bluetooth" : {"desc" : "你的蓝牙权限将用于小…...
Qt仿音乐播放器:媒体类
一、铺垫 我暂时只会音频系列的操作,我只能演示音频部分;但是QMediaPlayer是一个可以播放视频、音频的类;请同学们细读官方文档; 二、头文件 #include<QMediaPlayer> 头文件 #include<QMediaPlaylist> 三、演…...
Flink-CDC 全面解析
Flink-CDC 全面解析 一、CDC 概述 (一)什么是 CDC CDC 即 Change Data Capture(变更数据获取),其核心要义在于严密监测并精准捕获数据库内发生的各种变动情况,像数据的插入、更新以及删除操作࿰…...
HarmonyOS中实现上拉加载下拉刷新
参考网址:Refresh-滚动与滑动-ArkTS组件-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者 1.数据基类 //根据自己的业务数据扩展此类 //注意:一定要继承Object export class PullToRefreshBean extends Object{name: string …...
【轻松学C:编程小白的大冒险】--- C语言简介 02
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【轻松学C:编程小白的大冒险】…...
MySQL安装,配置教程
一、Linux在线yum仓库安装 打开MySQL官方首页,链接为:https://www.mysql.com/ 界面如下: 在该页面中找到【DOWNOADS】选项卡,点击进入下载页面。 在下载界面中,可以看到不同版本的下载链接,这里选择【My…...
项目实战——使用python脚本完成指定OTA或者其他功能的自动化断电上电测试
前言 在嵌入式设备的OTA场景测试和其他断电上电测试过程中,有的场景发生在夜晚或者随时可能发生,这个时候不可能24h人工盯着,需要自动化抓取串口日志处罚断电上电操作。 下面的python脚本可以实现自动抓取串口指定关键词,然后触发…...
多活架构的实现原理与应用场景解析
一、多活架构为何如此重要? 企业的业务运营与各类线上服务紧密相连,从日常的购物消费、社交娱乐,到金融交易、在线教育等关键领域,无一不依赖于稳定可靠的信息系统。多活架构的重要性愈发凸显,它宛如一位忠诚的卫士,为业务的平稳运行保驾护航。 回想那些因系统故障引发的…...
01-springclound
OpenFeign OpenFeign的日志级别 GateWay GateWay自定义过滤器 自定义过滤器,实现Order接口 数字小的先执行 GateWay传递用户信息 1、需要在网关搞定登录校验,将用户信息保存到请求头 2、网关到微服务 通过 springmvc的拦截器 来处理,将用户…...
Pandas-RFM会员价值度模型
文章目录 一. 会员价值度模型介绍二. RFM计算与显示1. 背景2. 技术点3. 数据4. 代码① 导入模块② 读取数据③ 数据预处理Ⅰ. 数据清洗, 即: 删除缺失值, 去掉异常值.Ⅱ. 查看清洗后的数据Ⅲ. 把前四年的数据, 拼接到一起 ④ 计算RFM的原始值⑤ 确定RFM划分区间⑥ RFM计算过程⑦…...
Java基础知识面试题
1.Java语言的特点? 1.一面向对象(封装,继承,多态); 2.平台无关性( Java 虚拟机实现平台无关性);(类是一种定义对象的蓝图或模板)3.支持多线程( C 语言没有内…...
WebSocket监听接口
在Vue.js中使用WebSocket来监听接口其实相对简单。WebSocket是一种在单个TCP连接上进行全双工通信的协议,通常用于需要实时数据更新的场景,比如聊天应用、实时通知等。 以下是一个在Vue.js中使用WebSocket的示例: 1. 创建Vue项目 如果你还…...
Kotlin语言的编程范式
Kotlin语言的编程范式 Kotlin是一种现代的编程语言,旨在提高开发效率,减少代码复杂度。在过去几年中,Kotlin在Android开发中获得了极大的普及,同时也逐渐被用在服务器端、Web开发、数据科学等多个领域。本文将深入探讨Kotlin的编…...
【权限管理】Apache Shiro学习教程
Apache Shiro 是一个功能强大且灵活的安全框架,主要用于身份认证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography)。它旨在为…...
网络安全 信息收集入门
1.信息收集定义 信息收集是指收集有关目标应用程序和系统的相关信息。这些信息可以帮助攻击者了解目标系统的架构、技术实现细节、运行环境、网络拓扑结构、安全措施等方面的信息,以便我们在后续的渗透过程更好的进行。 2.收集方式-主动和被动收集 ①收集方式不同…...
Java Web开发进阶——RESTful API设计与开发
随着分布式系统和微服务架构的流行,RESTful API已成为现代Web应用中后端与前端、第三方系统交互的重要方式。本节将深入探讨RESTful API的设计原则、实现方式以及如何使用Spring Boot开发高效、可靠的RESTful服务。 1. 理解RESTful API的设计原则 1.1 什么是RESTfu…...
图片已经在windows上旋转了,但是在linux上仍然显示不正常
公司接了一个linux产品的售后工作,我们现在的产品都是android。linux设备如果要播放竖屏的图片在linux主板上。需要将图片旋转下才能正常播放。 我拿到图片以后,就用window图片编辑器打开了图片如下图左。选择逆时针选择了90 然后另存图片为如下图右。 …...
关于大数据的基础知识(二)——国内大数据产业链分布结构
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于大数据的基础知识(二&a…...
Flutter鸿蒙化 在鸿蒙应用中添加Flutter页面
前言 今天这节课我们讲一下 在鸿蒙应用中添加Flutter页面。 作用: 之前有很多朋友和网友问我鸿蒙能不能使用Flutter开发,他们的项目已经用Flutter开发成熟了有什么好的方案呢,今天讲到这个就可以很好的解决他们的问题,例如我们正式项目中可能是一部分native 开发 一部分…...
【递归,搜索与回溯算法 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(二)
优美的排列 题目解析 算法原理 解法 :暴搜 决策树 红色剪枝:用于剪去该节点的值在对应分支中,已经被使用的情况,可以定义一个 check[ ] 紫色剪枝:perm[i] 不能够被 i 整除,i 不能够被 per…...
Perl语言的语法
Perl语言概述及其应用 引言 Perl语言是一种通用的高级编程语言,由拉里沃尔(Larry Wall)于1987年首次发布。Perl语言的设计目标是简化文本处理和报告生成,同时也提供了强大的功能以用于系统管理、网络编程、数据库交互等多种场景…...
ELK+filebeat+kafka
ELKfilebeatkafka elkelk的架构数据流向ELK的部署 filebeatzookeeperkafkazopkeeprzookeeper的工作机制zookeeper的特点zookeeper的数据架构zookeeper的安装 kafka消息队列消息队列的应用场景消息队列的模式kafka组件的名称 elk elk的架构 elk:统一日志收集系统 …...