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

「实战应用」如何用图表控件LightningChart可视化天气数据?(二)

LightningChart.NET完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D,高级3D,Polar,Smith,3D饼/甜甜圈,地理地图和GIS图表以及适用于科学,工程,医学,航空,贸易,能源和其他领域的体绘制功能。

立即申请LightningChart .NET试用

在上文中(点击这里回顾>>),我们为大家介绍了天气数据可视化的概念以及一些项目概述、前期准备等,本文将继续介绍具体的代码部分,请持续关注哦!

代码审查

主代码将被封装在MainWindow.xaml.cs中,在这里我们将找到UI控件的代码。

在代码中我们将检查两个方法,它们将创建正确绘制WPF天气数据可视化图表所需的属性。交互式示例使用各种用户控件构建,以操纵和更改图表的视觉属性。生成这个图不需要这些控件,因此我们将重点关注负责生成对象的代码。

MakeSourceData()

我们将从InitializeComponent方法开始,这将允许加载XAML模板并访问其中的对象。

InitializeComponent();
MakeSourceData();

一旦加载了XAML组件,我们就可以开始编程这个天气数据可视化应用实例了。为了处理图像、操纵它们并将它们加载到图表中,需要将他们转换为位图。在项目资源文件夹中,您可以找到一个图像,它将帮助我们创建雨“clouds”,该图像将被转换成位图,我们将使用工具GetPixelColors提取图像的颜色。

System.Drawing.Bitmap bitmapDataSource = new System.Drawing.Bitmap(Environment.CurrentDirectory + @"\Resources\EnvironmentalData200x150.png");
//Use fast method for getting pixel colors
System.Drawing.Color[,] aPixelColors = ChartTools.GetPixelColors(bitmapDataSource);
int width = aPixelColors.GetLength(0);
int iHeight = aPixelColors.GetLength(1);
//The data array has value range of 0...1
m_aEnvironmentalData = new double[width][];
for (int column = 0; column < width; column++)
{
m_aEnvironmentalData[column] = new double[iHeight];
for (int row = 0; row < iHeight; row++)
{
m_aEnvironmentalData[column][row] = (aPixelColors[column, row].R + aPixelColors[column, row].G
+ aPixelColors[column, row].B) / (3.0 * 255.0);
}
}

这个工具允许我们一次获得所有像素的颜色,替换对图像的每个像素进行操作。最后,我们将按列和行获取图像的所有值,这些值将存储在变量m_aEnvironmentalData中。

CreateChart()

CreateChart方法将构造图表对象,该对象将显示在XAML框架中,我们需要创建一个LightningChart类型对象。这个构造函数将允许我们创建图表的实例,指定图表的类型,并访问不同的属性。

_chart = new LightningChart
{
ChartName = "Stencil map chart"
};
_BeginUpdate

BeginUpdate函数将允许我们停止绘制图表,这将允许设置想要的自定义属性。只要更新没有关闭,图表就不会显示所做的更改,这将有助于图表构建的性能。

_chart.BeginUpdate();
图表类型

我们需要指定激活图标视图或将要创建的图表类型,在本例中我们使用XY视图,有几种类型的视图:

  • XY
  • 3D
  • 3D饼图
  • 雷达图
  • Smith
_chart.ActiveView = ActiveView.ViewXY;

现在我们将通过markdown文档(MD)文件加载地图,您可以在项目的Maps文件夹中找到该文件,提取的对象将被分配给XY图表的Maps属性。

string path = Environment.CurrentDirectory + @"\Maps\" + DefaultMap + ".md";
if (path != "")
{
_chart.ViewXY.Maps.Path = System.IO.Path.GetDirectoryName(path);
}

地理矢量数据存储在LightningChart地图文件中,扩展名为.md。LightningChart提供了一组地图文件,X轴用于经度,Y轴用于纬度,纬度原点为赤道,经度原点为Greenwich, U.K。

Map属性

我们将从设置地图的属性开始,在X轴和Y轴范围保持不变的典型情况下,将 ViewXY.Maps.Optimization设置为CombinedLayers,并且在地图上显示其他数据。这允许将地图层渲染到相同的缓冲图像中,从而提高渲染效率。

CalcGradient工具将计算两种颜色之间的渐变颜色,第一个参数是初始颜色,第二个是最终颜色,第三个值是以百分比表示的渐变颜色位置。

_chart.ViewXY.Maps.Type = DefaultMap;
_chart.ViewXY.Maps.AllowUserInteraction = false;
_chart.ViewXY.Maps.Optimization = Map.RenderingOptimization.CombinedLayers;
_chart.ViewXY.Maps.LandOptions.Fill.Color = Colors.DarkBlue;
_chart.ViewXY.Maps.LandOptions.Fill.GradientColor = Colors.Black;
_chart.ViewXY.Maps.LandOptions.Fill.GradientFill = GradientFill.RadialStretched;
_chart.ViewXY.Maps.LandOptions.LineStyle.Color = Colors.Silver;
_chart.ViewXY.Maps.LakeOptions.Fill.Color = Colors.DeepSkyBlue;
_chart.ViewXY.Maps.LakeOptions.Fill.GradientColor = ChartTools.CalcGradient(Colors.DeepSkyBlue, Colors.Black, 80);
应用程序背景颜色

背景填充支持:

  • 纯色填充,设置GradientFill = Solid,并使用Color来定义颜色。
  • 渐变填充,从Color到GradientColor。设置GradientFill = Linear / Radial / RadialStretched / Cylindrical,使用GradientDirection来控制线性和圆柱渐变的填充方向。
  • 位图填充,具有不同的平铺和拉伸选项。位图色彩和alpha也支持半透明的位图填充。
_chart.ViewXY.GraphBackground.Color = Color.FromArgb(255, 0, 0, 64);
_chart.ViewXY.GraphBackground.GradientColor = Colors.Black;
_chart.ViewXY.GraphBackground.GradientFill = GradientFill.Linear;
自动轴布局

自动轴布局可以被禁用,XAxisAutoPlacement控制如何垂直放置X轴,YAxisAutoPlacement控制Y轴的水平放置方式。

_chart.ViewXY.AxisLayout.AutoAdjustMargins = false;
_chart.ViewXY.AxisLayout.XAxisAutoPlacement = XAxisAutoPlacement.Off;
_chart.ViewXY.AxisLayout.YAxisAutoPlacement = YAxisAutoPlacement.Off;
_chart.ViewXY.AxisLayout.XAxisTitleAutoPlacement = false;
_chart.ViewXY.AxisLayout.YAxisTitleAutoPlacement = false;
删除页边距

可以从天气数据可视化应用程序中删除边距,代码如下:

_chart.ViewXY.Margins = new Thickness(0, 0, 0, 0);
IntensityGridSeries()
环境系列

现在我们将开始创建图例框,它将显示每毫米雨的强度颜色,我们需要配置一个强度网格系列来渲染地理地图上的环境数据。

IntensityGridSeries environmentalSeries = new IntensityGridSeries(_chart.ViewXY, _chart.ViewXY.XAxes[0], _chart.ViewXY.YAxes[0]);
environmentalSeries.Title.Text = "Rain";
environmentalSeries.FullInterpolation = checkBoxFullInterpolation.IsChecked.Value;
environmentalSeries.Optimization = IntensitySeriesOptimization.DynamicValuesData;
environmentalSeries.AllowUserInteraction = false; //Disable mouse interaction to make DynamicValuesData optimization effective.
environmentalSeries.LegendBoxUnits = "mm/h";
environmentalSeries.LegendBoxValuesFormat = "0.0";
environmentalSeries.SetRangesXY(-125, -65, 24, 49);
environmentalSeries.Data = new IntensityPoint[m_aEnvironmentalData.GetLength(0), m_aEnvironmentalData[0].GetLength(0)];

IntensityGridSeries类需要三个参数才能工作:

  1. 需要它的所有者或父对象
  2. X轴
  3. Y轴

在这些属性中,我们可以发现一些对流程优化的关注。

  • FullInterpolation:启用FullInterpolation属性来在填充中使用增强的插值方法,请注意这将导致更多的CPU和GPU使用。通过使用全插值,填充质量更好,但只有当数据数组大小相当小时才能看到填充质量。
  • Optimization:使用Optimization:DynamicValuesData只更新Data数组的Value字段。

并调用InvalidateValuesDataOnly方法来更新图表,通过这种方式,更新速度要快得多,因为不需要重新计算序列的几何形状。这仅用于节点的数据X和Y值保持在同一位置的应用程序,例如在热成像解决方案中。

SetRanges:同时设置X和Y范围,与单独设置RangeMinX、RangeMaxX、RangeMinY和RangeMaxY属性相比,这是一种非常高效的CPU方式。

添加数据

要添加数据,我们需要设置之前映射到data属性的值,在图表中加入环境系列:

s
_chart.ViewXY.IntensityGridSeries.Add(environmentalSeries);
在环境数据中添加模板区域

IntensityGridSeries, IntensityMeshSeries和Maps都有StencilArea特性,它允许在绘制的数据区域内或外屏蔽。

配置X轴
_chart.ViewXY.XAxes[0].ScrollMode = XAxisScrollMode.None;
_chart.ViewXY.XAxes[0].SetRange(-130, -65);
_chart.ViewXY.XAxes[0].ValueType = AxisValueType.MapCoordsDegMinSecNESW;
Color color = Colors.Turquoise;
_chart.ViewXY.XAxes[0].MajorGrid.Color = Color.FromArgb(40, color.R, color.G, color.B);
_chart.ViewXY.XAxes[0].LabelsColor = Colors.White;
_chart.ViewXY.XAxes[0].MajorDivTickStyle.Alignment = Alignment.Near;
_chart.ViewXY.XAxes[0].LabelsPosition = Alignment.Near;
_chart.ViewXY.XAxes[0].MajorDivTickStyle.Color = Colors.White;
_chart.ViewXY.XAxes[0].VerticalAlign = AlignmentVertical.Top;

我们可以通过选择X或Y列表来访问和配置每个轴,在本例中,我们只使用一个X、Y和Z轴,因此我们选择索引0。

ScrollMode

在进行实时监控应用程序时,必须滚动X轴来正确显示当前监控位置,该位置通常是最新信号点的时间戳。

在将新信号点设置为一系列之后,将最新的时间戳设置为ScrollPosition属性。LightningChart有几种滚动模式,您可以使用ScrollMode属性访问它们。

  • None:设置ScrollPosition值时不应用滚动,当在其他应用程序中使用图表而不是实时监控时,这通常是要使用的选择。
  • Stepping:当收集到的数据到达X轴的末端时,包含所有系列数据的轴向左移动一个步进间隔。每次到达x轴末端时都会执行此移动,SteppingInterval属性定义为取值范围。
  • Scrolling:X轴保持静止,直到达到滚动间隙,之后所有系列的X轴连续向左移动。如果滚动应该在滚动位置到达X轴末端时生效,则将ScrollingGap设置为0,ScrollingGap属性定义为图形宽度的百分比。
  • Sweeping:扫描模式可能提供了最友好的实时监控视图,扫描使用两个X轴,第一个轴被收集满,之后出现一个扫过的间隙,然后第二个X轴扫过第一个X轴,两个X轴都显示它们的值标签,SweepingGap属性定义为图形宽度的百分比。
  • Triggering:X轴位置由超过或低于触发水平的一系列值确定,使用Triggering属性设置触发选项。可以通过启用Triggering.TriggeringActive 属性将出发设置为激活状态。
  • MajorGrid:水平网格线绘制在分割刻度的垂直位置上,大栅格表示大划分刻度,小栅格表示小划分刻度,使用MajorGrid和MinorGrid属性来编辑外观。
  • MajorDivTickStyle:主要划分间距可以通过使AutoDivSpacing启用来自动完成。根据标签字体大小和AutoDivSeparationPercent属性,尽可能方便用户地计算间距,增加该值以减少主要部门的数量。
  • Minor divisions:使用MinorDivCount属性值在大分区之间计算。
  • Major division tick style可以通过MajorDivTickStyle属性设置,使用MajorDivTickStyleAlignment属性编辑刻度和标签的方向,值标签被绘制在主要除法刻度旁边,分别使用MinorDivTickStyle属性编辑次要分割属性。
_chart.ViewXY.YAxes[0].SetRange(23, 53);
_chart.ViewXY.YAxes[0].ValueType = AxisValueType.MapCoordsDegNESW;
color = Colors.Turquoise;
_chart.ViewXY.YAxes[0].MajorGrid.Color = Color.FromArgb(40, color.R, color.G, color.B);
_chart.ViewXY.YAxes[0].LabelsColor = Colors.White;
_chart.ViewXY.YAxes[0].MajorDivTickStyle.Alignment = Alignment.Far;
_chart.ViewXY.YAxes[0].MajorDivTickStyle.Color = Colors.White;
_chart.ViewXY.YAxes[0].Alignment = AlignmentHorizontal.Right;
设置LegendBoxes

图例框可以自动或手动放置,自动放置允许它们对齐到图形段的左/上/右/底部,或在空白处。

用position属性控制位置,位置选项有:TopCenter, TopLeft, TopRight, LeftCenter, RightCenter, BottomLeft, BottomCenter, BottomRight, Manual。

Offset属性将位置从position属性确定的位置移动给定的量,手动定位计算从图例框左上角到视图左上角的偏移量。

_chart.ViewXY.LegendBoxes[0].Layout = LegendBoxLayout.Vertical;
_chart.ViewXY.LegendBoxes[0].Fill.Color = Colors.Transparent;
_chart.ViewXY.LegendBoxes[0].Fill.GradientFill = GradientFill.Solid;
_chart.ViewXY.LegendBoxes[0].UnitsColor = Colors.White;
_chart.ViewXY.LegendBoxes[0].ValueLabelColor = Colors.White;
_chart.ViewXY.LegendBoxes[0].SeriesTitleColor = Colors.White;
_chart.ViewXY.LegendBoxes[0].Offset = new PointIntXY(0, -100);
最终图表

为了完成对天气预报分析和可视化图表的配置,我们使用EndUpdate方法,该方法将恢复绘图控件,用分配的属性更新图表。图表对象将被添加到XAML网格中,以便向用户显示。

_chart.EndUpdate();
_chart.Loaded += _chart_Loaded;
gridChart.Children.Add(_chart);
_chartInitialized = true;

LightningChart.NET使用教程图集

总结

我们完成了这个天气图形教程,感谢大家观看!在本教程中,我们为某国地区创建了一个高级的、高性能的、交互式的温度参数天气映射系统。

正如您所看到的,这个气象地图应用程序是完全可定制的,从开发人员的角度来看,每个属性和最终用户特性都可以根据需要进行定制。

LightningChart.NET提供了不同的地理地图,可以用来生成任何世界气象地图和任何其他需要的地图应用程序。

相关文章:

「实战应用」如何用图表控件LightningChart可视化天气数据?(二)

LightningChart.NET完全由GPU加速&#xff0c;并且性能经过优化&#xff0c;可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D&#xff0c;高级3D&#xff0c;Polar&#xff0c;Smith&#xff0c;3D饼/甜甜圈&#xff0c;地理地图和GIS图表以及适用于科学…...

苹果瑕疵数据集苹果质量数据集YOLO格式VOC格式 深度学习 目标检测 数据集

一、数据集概述 数据集名称&#xff1a;2类苹果图像数据集 数据集包含两类样本&#xff1a;正常苹果和有瑕疵的苹果。正常苹果样本代表完好的苹果&#xff0c;而有瑕疵的苹果样本代表苹果表面可能存在的损伤、瑕疵或病害。每个样本都经过详细标记和描述&#xff0c;以便训练模…...

旧电脑安装Win11提示“这台电脑当前不满足windows11系统要求”,安装中断。怎么办?

前言 最近有很多小伙伴也获取了LTSC版本的Win11镜像&#xff0c;很大一部分小伙伴安装这个系统也是比较顺利的。 有顺利安装完成的&#xff0c;肯定也有安装不顺利的。这都是很正常的事情&#xff0c;毕竟这个镜像对电脑硬件要求还是挺高的。 有一部分小伙伴在安装Windows11 …...

深入理解QT多线程编程

文章目录 多线程用法QThread类QtConcurrent类QFutureSynchronizer类获取线程信息线程优先级获取线程状态线程局部存储使用线程池监听线程事件Qt是一个跨平台的应用程序开发框架,广泛应用于图形用户界面(GUI)开发。它提供了强大的多线程支持,允许开发者在应用程序中创建和管理…...

React四官方文档总结一UI与交互

代码下载 React官网已经都是函数式组件文档&#xff0c;没有类组件文档&#xff0c;但是还是支持类组件这种写法。 UI 描述 组件 组件 是 React 的核心概念之一&#xff0c;它们是构建用户界面&#xff08;UI&#xff09;的基础。React 允许你将标签、CSS 和 JavaScript 组…...

如何理解 HTTP 是无状态的,以及它与 Cookie 和 Session 之间的联系

文章目录 一、什么是 HTTP&#xff1f;无状态的含义 二、为什么 HTTP 是无状态的&#xff1f;三、Cookie 和 Session 的引入1. Cookie特点&#xff1a;示例&#xff1a; 2. Session特点&#xff1a;示例&#xff08;Java Servlet&#xff09;&#xff1a; 四、HTTP、Cookie 和 …...

OpenCV视觉分析之运动分析(2)背景减除类:BackgroundSubtractorKNN的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 K-最近邻&#xff08;K-nearest neighbours, KNN&#xff09;基于的背景/前景分割算法。 该类实现了如 319中所述的 K-最近邻背景减除。如果前景…...

android黑屏问题记录

近期出现了一个黑屏问题&#xff1a; 仪表显示&#xff0c;主副屏黑的 &#xff1a;原因背光开启太晚&#xff0c;导致拍照时候是黑的&#xff0c;太晚的原因是绘制进程出现异常导致重启延后了时间&#xff0c;绘制进程crash原因是hwc调用底层库卡住&#xff0c;需更新hwc对应的…...

SIP 业务举例之 Call Forwarding - No Answer(无应答呼叫转移)

目录 1. Call Forwarding - No Answer 简介 2. RFC5359 的 Call Forwarding - No Answer 信令流程 呼转开始 呼转完成 3. Call Forwording - No Answer 过程总结 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信),或者想要 …...

EFCore pgsql Join 查询

安装包 > Microsoft.EntityFrameworkCore 6.0.35 6.0.35> Microsoft.EntityFrameworkCore.Tools 6.0.35 6.0.35> Npgsql.EntityFrameworkCore.PostgreSQL 6.0.29 6.0.29定义实体等 using Microsoft.EntityFrameworkCore; using Micros…...

力扣80:删除有序数组中重复项

给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例 1&a…...

等保测评:安全计算环境的详细讲解

安全计算环境是信息安全领域中的一个重要概念&#xff0c;旨在确保在计算过程中数据的机密性、完整性和可用性。随着信息技术的迅猛发展和网络攻击的日益频繁&#xff0c;构建安全计算环境显得尤为重要。本文将详细探讨安全计算环境的主要组成部分、特性及其在信息安全中的作用…...

[Java基础] Lambda 表达式

往期回顾 [Java基础] 基本数据类型 [Java基础] 运算符 [Java基础] 流程控制 [Java基础] 面向对象编程 [Java基础] 集合框架 [Java基础] 输入输出流 [Java基础] 异常处理机制 [Java基础] Lambda 表达式 目录 概述 Lambda 表达式的基本语法 应用场景 并发编程 集合…...

《深入掌握高德地图 API:全面调用指南与最佳实践》

本文 高德地图 API 调用指南引言高德 API 的基础设置注册和获取 API Key 基本 API 调用结构地理编码与逆地理编码地理编码&#xff08;Geocoding&#xff09;逆地理编码&#xff08;Reverse Geocoding&#xff09;注意事项 路径规划&#xff08;Direction API&#xff09;驾车路…...

【功能安全】系统架构设计

目录 01 系统架构介绍 02 投票逻辑架构介绍 03 SIS架构 04 ADS域控制器架构设计 01 系统架构介绍 法规GBT 34590 Part4 part10定义的软件要求、设计和测试子阶段之间的关系&#xff08;其中的3-7个人建议翻译为初始架构设计更合理 &#xff09; 系统架构的作用&#xf…...

FPGA实现PCIE视频采集转USB3.0输出,基于XDMA+FT601架构,提供3套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的PCIE方案本博已有的USB通信方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图电脑端视频PCIE视频采集QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存FT601功能和硬件电路FT601读时序解读FT601写时序解读U…...

基于docker-compose编排部署微服务快速开发框架

1. 规划节点 节点规划&#xff0c;见表1。 表1 节点规划 IP主机名节点10.24.2.10masterdocker-compose节点 2. 基础准备 Docker和Docker Compose已安装完成&#xff0c;将提供的软件包Pig.tar.gz上传至master节点/root目录下并解压。 案例实施 1. 基础环境准备 &#x…...

【Java面试——并发编程——相关类和关键字——Day6】

1. Future 1.1 Future类 Future 类是异步思想的典型运用&#xff0c;主要用在一些需要执行耗时任务的场景&#xff0c;避免程序一直原地等待耗时任务执行完成&#xff0c;执行效率太低。具体来说是这样的&#xff1a;当我们执行某一耗时的任务时&#xff0c;可以将这个耗时任…...

Android 两种方式实现类似水波扩散效果

两种方式实现类似水波扩散效果&#xff0c;&#xff08;相比较而言&#xff0c;自定义view的效果更好点&#xff0c;动画实现起来更方便点。&#xff09; 自定义view实现动画实现 自定义view实现 思路分析&#xff1a;通过canvas画圆&#xff0c;每次改变圆半径和透明度&…...

基于SSM+小程序的垃圾分类管理系统(垃圾2)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM小程序的垃圾分类管理系统实现了管理员及用户。 1、管理员功能结构图&#xff0c;管理员功能有个人中心&#xff0c;管理员管理&#xff0c;基础数据管理、论坛管理、垃圾信息管理…...

微服务网格Istio介绍

微服务网格Istio 介绍服务注册和发现服务度量灰度发布 Istio核心特性断路器互动1&#xff1a;举个生活中的例子解释断路器互动2&#xff1a;服务降级&#xff08;提高用户体验效果&#xff09; 超时重试多路由规则 Istio架构istio组件详解PilotEnvoyCitadelGalleyIngressgatewa…...

【MySQL】视图与用户管理——MySQL

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; 目录 视图 基本使用 视图规则和限制 用户管理 用户 用户信息 创建用户 删除用户 修改用户密码 数据库的权限 给用户授权 回收权限 视图 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&am…...

Go语言中三个输入函数(scanf,scan,scanln)的区别

Go语言中三个输入函数(scanf,scan,scanln)的区别 在 Go 语言中&#xff0c;fmt 包提供了三种输入函数&#xff1a;Scanf、Scan 和 Scanln。这三个函数都是用于从标准输入读取数据并存储到变量中&#xff0c;但是它们在处理输入的方式上有所不同。下面详细解读每个函数的特点和…...

uniapp使用html2canvas时,页面内的image元素模糊

不废话很简单只需要将image改成img就行 改之前 改之后 原因可能是因为uniapp里面的image标签做了某种处理...

华为交换机堆叠

堆叠方式 堆叠卡堆叠&#xff1a; 堆叠卡堆叠又可以分为两种情况&#xff1a; 交换机之间通过专用的堆叠插卡ES5D21VST000及专用的堆叠线缆连接。堆叠卡集成到交换机后面板上&#xff0c;交换机通过集成的堆叠端口及专用的堆叠线缆连接。 业务口堆叠&#xff1a; 业务口堆…...

Spring Boot框架下中小企业设备管理系统开发

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理中小企业设备管理系统的相关信息成为必然。…...

鸿蒙开发融云demo消息未读数

鸿蒙开发融云demo消息未读数 跟着我一步步搭建带界面的融云demo&#xff0c;这次是要显示未读数&#xff0c;未读数有两个&#xff0c;一个是消息列表的未读数&#xff0c;一个是主页消息tab上的未读数。 一、消息列表的未读数 先看下效果图&#xff1a; 关键代码如下&#…...

非对称加密算法(RSA):原理、应用与代码实现

一、引言 在当今数字化时代&#xff0c;信息安全成为了至关重要的议题。非对称加密算法作为保障信息安全的核心技术之一&#xff0c;在数据加密、数字签名、身份验证等领域发挥着不可或缺的作用。其中&#xff0c;RSA 算法以其可靠性、安全性和广泛的适用性&#xff0c;成为了…...

docker部署SQL审核平台Archery

1、概述 Archery 是一个开源的 SQL 审核平台,专为数据库的 SQL 运维和管理而设计,广泛应用于企业的数据库运维工作中。其主要功能是帮助数据库管理员和开发人员实现 SQL 审核、SQL 执行、在线执行、查询、工单管理、权限控制等数据库管理相关的操作。 Archery 的主要功能包括…...

ceph 删除rbd 锁的命令

文章目录 前言操作步骤 前言 记录一下ceph 删除rbd锁的命令 rbd lock rm poolname/uuid_disk "ID" Locker操作步骤 云主机实例的uuid是&#xff1a;fec52819-3b00-48e1-9f3b-c68c717bd619 # 获取rbd块的信息 rbd info nova/fec52819-3b00-48e1-9f3b-c68c717bd619…...

惠州的企业网站建设/上首页的seo关键词优化

最近写代码&#xff0c;需要停止interval之后再重新启动&#xff0c;开始使用代码如下&#xff0c;发现无法重新启动 function func(){console.log("print")} //定时任务 var interval setInterval(func, 2000); //启动,func不能使用括号 clearInterval(interval );…...

售房网站模板/广告推送平台

文章来源:第八军团收集整理 发布时间:2005-11-17 15:55:45 202.112.0.0 —— 202.112.31.0 CERBKB-CN China Education and Research Netwo 3 2202.112.32.0 —— 202.112.39.0 BJCOMP-CN CERNET super computer center 8202.112.40.0 —— 202.112.47.0 SHCOMP-CN CERNET …...

apache 配置网站地址/武汉武汉最新

1.c语句概述语句&#xff1a;用来对数据进行加工&#xff0c;是构成程序的基本单位。通常一个c程序由若干个函数组成而每一函数由若干条语句组成&#xff0c;每条语句总是以"&#xff1b;"结束。c语句的分类&#xff1a;可分为三大类&#xff1a;简单语句、复合语句、…...

wordpress章节分页/制造企业网站建设

目录1 基于Thrift的RPC框架的开发和维护项目介绍RPC及实现RPC需要的技术1 动态代理2 序列化和反序列化3 NIO通信组件4 注册中心为什么使用RPCRPC和HTTPThrift简介Thrift整体架构Thrift 三大重要组件&#xff1a;Transport、Protocol和 Server传输方式Transport传输协议Protocol…...

1g内存跑wordpress/引流人脉推广软件

把一切失望和沮丧都抛弃&#xff0c;成功之路就在你的脚下。...

中国建设业管理协会网站/整站seo定制

Linux LVM逻辑卷配置过程详解 许多Linux使用者安装操作系统时都会遇到这样的困境&#xff1a;如何精确评估和分配各个硬盘分区的容量&#xff0c;如果当初评估不准确&#xff0c;一旦系统分区不够用时可能不得不备份、删除相关数据&#xff0c;甚至被迫重新规划分区并重装操作系…...