EasyX图形库学习(一)

目录

一、easyX图形库基本介绍

1、easyX的原理

2、easyX的安装

3、easyX的颜色(RGB颜色模型)

颜色模型相关函数:

4、easyX的坐标

二、相关函数介绍:

绘图设备相关函数:

图形颜色及样式设置相关函数:

图形绘制相关函数:

文字输出相关函数:

图像处理相关函数:

消息处理相关函数:

其他函数:

三、easyx的基本使用

2.1窗口创建函数initgraph

2.2、背景颜色设置setbkcolor

使用RBG模型、代码示例如下:

也可以直接使用颜色:

2.3图形绘制函数

setlinestyle        用于设置当前设备画线样式。

void line(

void polyline(  


一、easyX图形库基本介绍

EasyX 是针对 C++ 的图形库,可以帮助 C/C++ 初学者快速上手图形和游戏编程。

比如,可以基于 EasyX 图形库很快的用几何图形画一个房子,或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏,可以练习图形学的各种算法,等等。

许多人学编程都是从 C 语言入门的,而现状是:

  • 有些学校以 Turbo C 为环境学习 C 语言,只是 Turbo C 实在太老了,复制粘贴都很不方便。
  • 有些学校直接拿 VC 来讲 C 语言,因为 VC 的编辑和调试环境都很优秀,并且 VC 有适合教学的免费版本。可惜在 VC 里面只能做一些文字性的练习题,想画条直线或一个圆都很难,例如需要注册窗口类、建消息循环等等,初学者会受严重打击的。初学编程想要绘图就得用 TC,很是无奈。
  • 还有计算机图形学,这门课程的重点是绘图算法,而不是 Windows 编程。所以,许多老师不得不用 TC 教学,因为 Windows 绘图太复杂了,会偏离教学的重点。新的图形学的书有不少是用的 OpenGL,可是门槛依然很高。

1、easyX的原理

EasyX 是一个为 C/C++ 程序员设计的图形库,它的核心原理是基于 Windows 图形编程(通常是 GDI,即 Graphics Device Interface)来进行封装。Windows 操作系统提供了一个复杂的API(Application Programming Interface)集合,用于在屏幕上绘制图形、处理图像、管理窗口等。

然而,直接使用这些 API 对于初学者或者想要快速开发图形应用的程序员来说可能是一个挑战,因为需要了解很多底层细节。

EasyX 的设计者认识到这个问题,于是他们将这些复杂的 Windows API 调用过程封装在 EasyX 库的内部。这意味着,当程序员调用 EasyX 的函数来绘制一个圆形或者一个矩形时,实际上在 EasyX 库的代码内部,会有相应的 Windows API 调用来实现这些功能。但是,程序员不需要关心这些底层细节,只需要了解 EasyX 提供的简单接口即可。

2、easyX的安装

注意:easyX图形库仅支持VS的各个版本

在浏览器搜索easyX官网,进入官网后,点击下载

下载完成之后,点击下一步,easyX会自动检测你电脑上的VS版本,点击安装即可。

当您点击“安装”按钮后,安装程序会根据您的选择开始复制文件、注册组件以及进行其他必要的配置步骤,以便将 EasyX 集成到您选择的 Visual Studio 版本中。

这就安装成功了,在写程序时,包含 <graphics.h >头文件就可以使用图形库中的函数了。

3、easyX的颜色(RGB颜色模型)

easyX中使用的是RGB颜色模型。

我们可以打开电脑上的画图软件,查看RGB的值对应合成的颜色。

RGB分别代表Red(红色)、Green(绿色)和Blue(蓝色)。RGB颜色模型是一种加色模型,它通过不同强度的红、绿、蓝三种颜色的光混合来产生其他颜色。在RGB模型中,每种颜色的强度通常用一个字节(0-255)来表示,这样三种颜色混合起来就可以产生大约1670万种不同的颜色(256 x 256 x 256)。

颜色模型相关函数:

函数/数据类型描述
GetBValue返回指定颜色中的蓝色值。
GetGValue返回指定颜色中的绿色值。
GetRValue返回指定颜色中的红色值。
HSLtoRGB转换 HSL 颜色为 RGB 颜色。
HSVtoRGB转换 HSV 颜色为 RGB 颜色。
RGB通过红、绿、蓝颜色分量合成颜色。
RGBtoGRAY转换 RGB 颜色为 灰度颜色。
RGBtoHSL转换 RGB 颜色为 HSL 颜色。
RGBtoHSV转换 RGB 颜色为 HSV 颜色。
BGR交换颜色中的红色和蓝色。

4、easyX的坐标

坐标原点默认为窗口的左上角,X轴向右为正,Y轴向下为正,度量单位为像素点。

二、相关函数介绍:

绘图设备相关函数:

函数/数据类型描述
cleardevice清除屏幕内容。
initgraph初始化绘图窗口。
closegraph关闭图形窗口。
getaspectratio获取当前缩放因子。
setaspectratio设置当前缩放因子。
graphdefaults恢复绘图窗口为默认值。
setorigin设置坐标原点。
setcliprgn设置当前绘图设备的裁剪区。
clearcliprgn清除裁剪区的屏幕内容。

图形颜色及样式设置相关函数:

函数/数据类型描述
FILLSTYLE填充样式对象。
getbkcolor获取当前设备背景色。
getbkmode获取当前设备图案填充和文字输出时的背景模式。
getfillcolor获取当前设备填充颜色。
getfillstyle获取当前设备填充样式。
getlinecolor获取当前设备画线颜色。
getlinestyle获取当前设备画线样式。
LINESTYLE画线样式对象。
setbkcolor

设置当前设备绘图背景色。

setbkmode设置当前设备图案填充和文字输出时的背景模式。
setfillcolor设置当前设备填充颜色。
setfillstyle设置当前设备填充样式。
setlinecolor设置当前设备画线颜色。
setlinestyle(样式, 线宽);设置当前设备画线样式。

图形绘制相关函数:

函数或数据类型描述
arc画椭圆弧。
circle(int X,int Y,int R)

画无填充的圆。

以(x,y)为圆心,R为半径画圆 另外两种样式相同

floodfill填充区域。
getheight获取绘图区的高度。
getwidth获取绘图区的宽度。
line(int x1,int y1,int x2,int y2)

画直线。

连接(x1,y1)和(x2,y2)的一条线段

rectangle(int x1,int y1,int x2,int y2)

画无填充的矩形。

以(x1,y1)为左上顶点(x2,y2)为右下顶点画矩形

solidcircle画无边框的填充圆。
solidellipse画无边框的填充椭圆。
solidpie画无边框的填充扇形。
solidpolygon画无边框的填充多边形。
solidrectangle

画无边框的填充矩形。

clearcircle清空圆形区域。
clearellipse清空椭圆区域。
clearpie清空扇形区域。
clearpolygon清空多边形区域。
clearrectangle清空矩形区域。
clearroundrect清空圆角矩形区域。
ellipse画无填充的椭圆。
fillcircle画有边框的填充圆。
fillellipse画有边框的填充椭圆。
fillpie画有边框的填充扇形。
fillpolygon画有边框的填充多边形。
fillrectangle画有边框的填充矩形。

文字输出相关函数:

函数或数据类型描述
gettextcolor获取当前文字颜色。
gettextstyle获取当前文字样式。
LOGFONT文字样式的结构体。
outtextxy(int x,int y,LPCTSTR str);在指定位置输出字符串。在(x,y)输出文字str
drawtext在指定区域内以指定格式输出字符串。
settextcolor设置当前文字颜色。
settextstyle设置当前文字样式。
textheight获取字符串实际占用的像素高度。
textwidth获取字符串实际占用的像素宽度。

图像处理相关函数:

函数或数据类型描述
IMAGE保存图像的对象。
loadimage读取图片文件。
saveimage保存绘图内容至图片文件。
getimage从当前绘图设备中获取图像。
putimage在当前绘图设备上绘制指定图像。
GetWorkingImage获取指向当前绘图设备的指针。
rotateimage旋转 IMAGE 中的绘图内容。
SetWorkingImage设定当前绘图设备。
Resize调整指定绘图设备的尺寸。
GetImageBuffer获取绘图设备的显示缓冲区指针。
GetImageHDC获取绘图设备句柄。

这个表格列出了与图像处理相关的函数和数据类型。这些函数通常用于图形库或图像处理库中,以提供图像的加载、保存、获取、绘制和设备设置等功能。通过这些函数,可以读取和保存图片文件,从当前绘图设备中获取图像,并在指定位置绘制图像。此外,还可以获取绘图设备的指针、旋转图像内容、设定当前绘图设备、调整设备尺寸以及获取设备的显示缓冲区和句柄。

消息处理相关函数:

函数或数据类型描述
ExMessage消息结构体,用于存储和处理与绘图窗口相关的消息。
flushmessage清空消息缓冲区,移除所有未处理的消息。
getmessage获取一个消息。如果当前消息缓冲区中没有消息,该函数会一直等待,直到有消息可用。
peekmessage尝试获取一个消息,并立即返回。如果消息缓冲区中没有消息,则不会等待。
setcapture设置允许捕获绘图窗口外的鼠标消息,使得即使鼠标在绘图窗口外也能接收到相关的鼠标事件。
releasecapture设置禁止捕获绘图窗口外的鼠标消息,恢复正常的鼠标事件处理机制。

这个表格列出了与消息处理相关的函数和数据类型。这些函数通常用于图形库或绘图API中,以提供消息处理功能。通过这些函数,您可以管理消息缓冲区,获取和处理绘图窗口的消息,以及控制鼠标消息的捕获。

其他函数:

函数或数据类型描述
BeginBatchDraw开始批量绘图。此函数之后的绘图操作将被缓存起来,直到调用 EndBatchDraw 或 FlushBatchDraw 执行。
EndBatchDraw结束批量绘制,并执行所有在 BeginBatchDraw 之后缓存的绘制任务。
FlushBatchDraw执行所有在 BeginBatchDraw 之后缓存的绘制任务,但不结束批量绘制模式。

GetWnd()HWND aaa;    

获取当前绘图窗口的句柄,该句柄可以用于与其他Windows API函数交互。

用HWND类型变量获取窗口句柄 aaa = GetWnd();

InputBox显示一个对话框,让用户输入文本,并返回用户输入的内容。

这个表格列出了与EasyX图形库相关的函数。EasyX是一个用于简化Windows下图形编程的库,它提供了一系列易于使用的绘图函数和工具。通过这些函数,您可以开始和结束批量绘图,获取版本信息,获取窗口句柄,以及以对话框形式获取用户输入。

三、easyx的基本使用

2.1窗口创建函数initgraph

initgraph(int width,int height,int flag = NULL);

用于初始化绘图窗口(创建窗口)

  • int width:指定图形窗口的宽度(以像素为单位)。
  • int height:指定图形窗口的高度(以像素为单位)。
  • int flag:这个参数通常用于指定图形驱动程序或模式

如下是flag的参数

宏定义数值描述
EX_SHOWCONSOLE1当创建一个图形窗口时,保持控制台窗口可见。
EX_NOCLOSE2禁用关闭按钮。
EX_NOMINIMIZE4禁用最小化按钮。
EX_DBLCLKS8支持双击事件(如:双击打开)。


 

2.2、背景颜色设置setbkcolor

它的函数原型是void setbkcolor(COLORREF color);

  • COLORREF color:这是一个颜色值,用于指定新的背景颜色。我们可以使用 RGB 宏来获取一个 COLORREF 值,例如 RGB(255, 0, 0) 表示红色。

需要注意的是,setbkcolor 函数只是改变了设备上下文中背景色的设置,并不会立即改变屏幕上的颜色。如果你想要立即看到颜色的改变,可以使用如 ClearRect 等函数来清空并重新绘制屏幕区域。

使用RBG模型、代码示例如下:

int main()
{//创建一个图形窗口 宽度*高度initgraph(640, 480, EX_SHOWCONSOLE); //当创建一个图形窗口时,保持控制台窗口可见。//设置窗口的背景颜色setbkcolor(RGB(21, 134, 21));//用设置的背景颜色填充整个窗口cleardevice();//防止程序退出getchar();return 0;
}

也可以直接使用颜色:

2.3图形绘制函数

void putpixel(
    int x,
    int y,
    COLORREF color
);

//绘制一个点
putpixel(50, 50, RED);

setlinestyle        用于设置当前设备画线样式。

void setlinestyle(
    int style,
    int thickness = 1,
    const DWORD *puserstyle = NULL,
    DWORD userstylecount = 0
);

pstyle
指向画线样式 LINESTYLE 的指针。

style
画线样式(详见备注)。

含义
PS_SOLID线形为实线。
PS_DASH线形为:------------
PS_DOT线形为:············
PS_DASHDOT线形为:-·-·-·-·-·-·
PS_DASHDOTDOT线形为:-··-··-··-··
PS_NULL线形为不可见。
PS_USERSTYLE线形样式为用户自定义,由参数 puserstyle 和 userstylecount 指定。

thickness
线的宽度,以像素为单位。

puserstyle
用户自定义样式数组,仅当线型为 PS_USERSTYLE 时该参数有效。
数组第一个元素指定画线的长度,第二个元素指定空白的长度,第三个元素指定画线的长度,第四个元素指定空白的长度,以此类推。

userstylecount
用户自定义样式数组的元素数量。

void line(

    int x1,        直线的起始点的 x 坐标。

    int y1,        直线的起始点的 y 坐标。
    int x2,        直线的终止点的 x 坐标。
    int y2         直线的终止点的 y 坐标。
);

//设置线条颜色
setlinecolor(RED);
//设置线条的样式
setlinestyle(PS_SOLID, 3);
//宽度 3 像素的虚线
//PS_SOLID    实线//绘制一条线
line(0, 0, getwidth()实线 getheight());
//getwidth	获取窗口的宽度
//getheight	  获取窗口的高度

void rectangle(
    int left,        矩形左部 x 坐标。
    int top,        矩形顶部 y 坐标。
    int right,        矩形右部 x 坐标。
    int bottom        矩形底部 y 坐标。
);

//设置线条颜色
setlinecolor(RED);
//设置线条的样式
setlinestyle(PS_SOLID, 3);//绘制一个矩形
rectangle(100, 0, 100 + 50, 0 + 50);	//无填充矩形
fillrectangle(100, 50, 100 + 50, 50 + 50);//填充矩形

//设置线条颜色
setlinecolor(RED);
//设置线条的样式
setlinestyle(PS_SOLID, 3);//设置填充颜色
setfillcolor(YELLOW);
fillrectangle(100, 50, 100 + 50, 50 + 50);//填充矩形
solidrectangle(100, 100, 100 + 50, 100 + 50);//无边框填充矩形

//设置线条颜色
setlinecolor(RED);
//设置线条的样式
setlinestyle(PS_SOLID, 3);//绘制一个圆角矩形
roundrect(10, 0, 160 + 50, 0 + 50, 10, 10);
fillroundrect(160, 50, 160 + 50, 0 + 50, 10, 10);
solidroundrect(160, 100, 160 + 50, 100 + 50, 10, 10);

void circle(
    int x,        //圆心 x 坐标
    int y,        //圆心 y 坐标
    int radius        //圆的半径
);

//设置线条颜色
setlinecolor(RED);
//设置线条的样式
setlinestyle(PS_SOLID, 3);//绘制一个圆形
circle(20, 20, 20);
fillcircle(50, 150, 30);
solidcircle(50, 250, 50);

void ellipse(
    int left,        //椭圆外切矩形的左上角 x 坐标。
    int top,        //椭圆外切矩形的左上角 y 坐标。
    int right,      //椭圆外切矩形的右下角 x 坐标。
    int bottom   //椭圆外切矩形的右下角 y 坐标。
);

//设置线条颜色
setlinecolor(RED);
//设置线条的样式
setlinestyle(PS_SOLID, 3);//椭圆
ellipse(200, 0, 200 + 100, 0 + 100);
fillellipse(200, 200, 200 + 50, 0 + 100);
solidellipse(200, 200, 200 + 50, 0 + 100);

void polyline(
  

    const POINT *points,        //每个点的坐标,数组元素个数为 num。
    int num        //多条线段的顶点个数。
);

//设置线条颜色
setlinecolor(RED);
//设置线条的样式
setlinestyle(PS_SOLID, 3);//绘制折线条
POINT points[] = { {0,0},{20,20},{50,80},{10,60} };
polyline(points, 4);

void drawShape()
{//绘制一个点putpixel(50, 50, RED);//设置线条颜色setlinecolor(RED);//设置线条的样式setlinestyle(PS_SOLID, 3);//绘制一条线line(0, 0, getwidth(), getheight());//getwidth	获取窗口的宽度//getheight	  获取窗口的高度//绘制一个矩形rectangle(100, 0, 100 + 50, 0 + 50);	//无填充矩形fillrectangle(100, 50, 100 + 50, 50 + 50);//填充矩形//设置填充颜色setfillcolor(YELLOW);fillrectangle(100, 50, 100 + 50, 50 + 50);//填充矩形solidrectangle(100, 100, 100 + 50, 100 + 50);//无边框填充矩形//绘制一个圆角矩形roundrect(10, 0, 110 + 50, 0 + 50, 10, 10);fillroundrect(160, 50, 160 + 50, 0 + 50, 10, 10);solidroundrect(160, 100, 160 + 50, 100 + 50, 10, 10);//绘制一个圆形circle(20, 20, 20);fillcircle(50, 150, 30);solidcircle(50, 250, 50);//椭圆ellipse(200, 0, 200 + 100, 0 + 100);fillellipse(200, 200, 200 + 50, 0 + 100);solidellipse(200, 300, 200 + 50, 0 + 100);}

今天就先到这了!!!

看到这里了还不给博主扣个:
⛳️ 点赞☀️收藏 ⭐️ 关注!

你们的点赞就是博主更新最大的动力!
有问题可以评论或者私信呢秒回哦。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iMazing 3中文版双平台版本同步,iOS 设备在 Windows 上也能自动备份了

自从WWDC 2019 宣布 iTunes 退役后&#xff0c;也许很多小伙伴都对「上位者」iMazing 有所耳闻。 这款设计更加人性化、功能细致强大的 iOS 备份管理工具。 iMazing 支持在 Windows 及 Mac 上运行&#xff0c;而这个月 Windows 版本更新至 2.17. 之后&#xff0c;iMazing 的双…

【GitHub项目推荐--一个由OpenAI提供支持的聊天机器人和虚拟助手的构建平台】【转载】

Botpress Botpress是一个开源项目&#xff0c;它提供了一个平台&#xff0c;用于构建、部署和管理基于人工智能的聊天机器人和虚拟助手 github地址&#xff1a; https://github.com/botpress/botpress Botpress的介绍 Botpress是一个开源项目&#xff0c;它提供了一个平台&…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TextClock组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之TextClock组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、TextClock组件 TextClock组件通过文本将当前系统时间显示在设备上。支持不同…

【Power Platform】实现对SharePoint文档库中上传的文件进行审批

这次要分享的案例还是来自于我们客户的一个新需求。 我们这个客户主要是在使用SharePoint的List来搭建申请单&#xff0c;然后对申请单进行审批&#xff0c;但由于我们之前给客户提出的生成PDF打印件的方案&#xff0c;是需要先在SharePoint或OneDrive中放一个文档模板的&…

Keil软件某些汉字输出乱码,0xFD问题,51单片机

1. 问题 keil软件输入某些汉字的时候会输出乱码&#xff0c;例如&#xff1a;升、 数 2. 原因 keil软件会忽略0xFD。 升的GB2312编码为 0xc9fd&#xff0c;keil解析为0xc9数的GB2312编码为 0xcafd&#xff0c;keil解析为0xca 关于Keil软件中0xFD问题的说明 3. 解决方案1 …

从零开始复现GPT2(三):词表,Tokenizer和语料库的实现

源码地址&#xff1a;https://gitee.com/guojialiang2023/gpt2 GPT2 模型词表TokenizerTokenizer 类_normalize 方法_tokenize 方法_CHINESE_CHAR_RANGE 和 _PUNCTUATION_RANGE 数据集语料库TokenizedCorpus 类 模型 词表 定义了一个名为 Vocab 的类&#xff0c;用于处理和管理…

若依CMS代码审计

1.安装 安装过程 ruoyi-admin\src\main\resources\application-druid.yml配置数据库等信息 2.审计过程 2.1 文件下载漏洞(v4.7.6) 在com.ruoyi.web.controller.common.resourceDownload存在文件下载 首先简单分析下其代码&#xff1a;请求url如&#xff1a;http://127.0.0.1/c…

自然语言处理(NLP)技术使用

自然语言处理&#xff08;NLP&#xff09;技术使用 以下是一些自然语言处理&#xff08;NLP&#xff09;技术的例子&#xff1a;以上只是一些NLP技术的例子&#xff0c;还有许多其他的技术和应用&#xff0c;如文本分类、文本生成、问答系统等。NLP技术的发展正逐渐改变人们与计…

vivado 配置内存IP

配置内存IP UltraScale体系结构内存IP支持DDR3和DDR4 SDRAM的配置&#xff0c;QDRIIPLUS SRAM和RLDRAM3型接口。截至2015.3&#xff0c;内存IP已被拆分基于内存接口标准和工具流&#xff0c;将其划分为不同的IP。“自定义IP”对话框框包含基本和高级配置选项&#xff0c;其中包…

git使用以及工作中开发流程

Git是当前最先进、最主流的分布式版本控制系统&#xff0c;免费、开源。 主要概念&#xff1a; 基本流程&#xff1a; 命令&#xff1a; git commit -a # 省略了add到暂存区的步骤&#xff0c;直接提交工作区的修改内容到版本库&#xff0c;不包括新增的文件。git fetc…

校园圈子论坛系统--APP小程序H5,前后端源码交付,支持二开!uniAPP+PHP书写!

随着移动互联网的快速发展&#xff0c;校园社交成为了大学生们日常生活中重要的一部分。为了方便校园内学生的交流和互动&#xff0c;校园社交小程序逐渐走入人们的视野。本文将探讨校园社交小程序的开发以及其带来的益处。 校园社交小程序的开发涉及许多技术和设计方面。首先&…

Qt|QPushButton控件讲解

前提 按钮分为了四种状态&#xff1a;常态、聚焦、按下、禁用 前一段时间更新了MFC框架下CButton的自绘。因为MFC框架下的按钮限制性很高&#xff0c;所以只能由自绘实现各种风格&#xff0c;但是QT框架完美的解决了这个问题&#xff0c;我们只需要了解如何调用&#xff0c;就…

封装通用mixins,在vue中实现a-table组件的可伸缩列(详细且使用便捷)

1、实现效果 2、使用场景 vue2 antd-vue 1.x版本由于antd-vue 1.x版本的组件库没有提供可伸缩列的功能&#xff0c;才需要我们手动开发在antd-vue 3.x版本以上的表格已经支持这个功能&#xff0c;不需要我们再去手动开发 3、话不多说&#xff0c;上代码 首先安装vue-dragga…

语义分割:从早期探索到深度学习的突破

语义分割&#xff1a;从早期探索到深度学习的突破 语义分割的端倪&#xff1a;从早期探索到深度学习的突破引言早期技术&#xff1a;图像处理与模式识别边缘检测区域生长图割(Graph Cut)聚类方法 深度学习的兴起&#xff1a;CNN革命2012年 AlexNet的突破全卷积网络&#xff08;…

6、基于机器学习的预测

应用机器学习的任何预测任务与这四个策略。 文章目录 1、简介1.1定义预测任务1.2准备预测数据1.3多步预测策略1.3.1多输出模型1.3.2直接策略1.3.3递归策略1.3.4DirRec 策略2、流感趋势示例2.1多输出模型2.2直接策略1、简介 在第二课和第三课中,我们将预测视为一个简单的回归问…

vue核心知识点

一、Vue基础知识点总结 开发vue项目的模式有两种&#xff1a; 基于vue.js&#xff0c;在html中引入vue.js&#xff0c;让vue.js管理div#app元素。基于脚手架环境&#xff1a;通过vue脚手架环境可以方便的创建一个通用的vue项目框架的模板&#xff0c;在此基础之上开发vue项目…

基于SpringBoot Vue学生信息管理

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

Redis -- 单线程模型

失败是成功之母 ——法国作家巴尔扎克 目录 单线程模型 Redis为什么这么快 单线程模型 redis只使用一个线程&#xff0c;处理所有的命令请求&#xff0c;不是说redis服务器进场内部真的就只有一个线程&#xff0c;其实也有多个线程&#xff0c;那就是处理网络和io的线程。 R…

图像去噪——SpatiallyAdaptiveSSID网络推理测试(详细图文教程)

SpatiallyAdaptiveSSID 是一种有效的图像去噪方法&#xff0c;它通过自适应地处理不同区域的噪声&#xff0c;能够在保持图像细节的同时&#xff0c;有效地去除噪声。 目录 一、SpatiallyAdaptiveSSID网络简介二、源码包准备2.1 测试集2.2 模型权重文件 三、测试环境四、推理测…

C#,斯特林数(Stirling Number)的算法与源代码

1 斯特林数 在组合数学&#xff0c;斯特林数可指两类数&#xff0c;第一类斯特林数和第二类斯特林数&#xff0c;都是由18世纪数学家James Stirling提出的。它们自18世纪以来一直吸引许多数学家的兴趣&#xff0c;如欧拉、柯西、西尔沃斯特和凯莱等。后来哥本哈根&#xff08;…