Graph.Inc 图形函数

Zabbix图形中文乱码问题(显示口口)解决办法 因为这里使用是nginx+php作为zabbix-web展示,进入目录下,将原有字体备份,下载msyh字体。 阅读详情

参考:《C与C++高级图形程序设计》

-----------------我是分隔线:-D------------------

/*

=============================================

Video Graphics Array Driver
Original Material by Christopher D.Watkins
'C' Conversion by Larry Sharp
=============================================

SetMode - selects the display mode
Plot - place pixel to screen
ClearPalette - clear palette register
SetPalette - clear palette register
InitPalette1 - 64 levels of grey, red, green and blue
InitPalette2 - 7 colors with 35 intensities each
cyclepalette - cycle through palette
Circle - circle draw routine
Draw - line draw routine
InitGraphics - initialize graphics
WaitForKey - wait for key press
ExitGraphics - sound and wait for keypress before exiting graphics
Title - set up text screen colors
*/


union REGS reg;
struct SREGS inreg;


void SetMode(int Mode)
{
reg.h.ah = 0;
reg.h.al = Mode;
int86(0x10, &reg, &reg);
}


#define MaxXres 320
#define MaxYres 200
#define MaxX (MaxXres - 1)
#define MaxY (MaxYres - 1)


int XRes, YRes;
Word PreCalcY[MaxY + 1];


void PreCalc()
{
Word j;

for (j=0; j<=MaxY; j++)
PreCalcY[j] = 0;
for (j=0; j<=MaxY; j++)
PreCalcY[j] = XRes*j;
}


void Plot(int x, int y, Byte color)
{
Word Offset;
char far *address;

if(!((x<0) || (y<0) || (x>MaxX) || (y>MaxY)))
{
Offset = PreCalcY[y] + x;
address = (char far *) (0xA0000000L + Offset);
*address = color;
}
}


typedef struct
{
Byte Red;
Byte Grn;
Byte Blu;
}RGB;


typedef RGB PaletteRegister[255];


PaletteRegister Color;


void ClearPalette(PaletteRegister Color)
{
Word i;

for (i=0; i<=255; i++)
{
Color[i].Red = 0;
Color[i].Grn = 0;
Color[i].Blu = 0;
}
}


void SetPalette(PaletteRegister Hue)
{
reg.x.ax = 0x1012;
segread(&inreg);
inreg.es = inreg.ds;
reg.x.bx = 0;
reg.x.cx = 256;
reg.x.dx = (int) &Hue[0];
int86x(0x10, &reg, &reg, &inreg);
}


void InitPalette(PaletteRegister Color)
{
Word i;

for (i=0; i<64; i++)
{
Color[i].Red = i;
Color[i].Grn = i;
Color[i].Blu = i;
}

for (i=64; i<128; i++)
{
Color[i].Red = i - 64;
Color[i].Grn = 0;
Color[i].Blu = 0;
}

for (i=128; i<192; i++)
{
Color[i].Red = 0;
Color[i].Grn = i - 128;
Color[i].Blu = 0;
}

for (i=192; i<=255; i++)
{
Color[i].Red = 0;
Color[i].Grn = 0;
Color[i].Blu = i - 192;
}
}


void InitPalette2(PaletteRegister Color)
{
Word i;

for (i=0; i<36; i++)
{
Color[i].Red = 0;
Color[i].Grn = 0;
Color[i].Blu = Round(1.8 * i);
}

for (i=36; i<72; i++)
{
Color[i].Red = 0;
Color[i].Grn = Round(1.8 * (i-36));
Color[i].Blu = 0;
}

for (i=72; i<108; i++)
{
Color[i].Red = 0;
Color[i].Grn = Round(1.8 * (i-72));
Color[i].Blu = Round(1.8 * (i-72));
}

for (i=108; i<144; i++)
{
Color[i].Red = Round(1.8 * (i-108));
Color[i].Grn = 0;
Color[i].Blu = 0;
}

for (i=144; i<180; i++)
{
Color[i].Red = Round(1.8 * (i-144));
Color[i].Grn = 0;
Color[i].Blu = Round(1.8 * (i-144));
}

for (i=180; i<216; i++)
{
Color[i].Red = Round(1.8 * (i-180));
Color[i].Grn = Round(1.8 * (i-180));
Color[i].Blu = 0;
}

for (i=216; i<252; i++)
{
Color[i].Red = Round(1.8 * (i-216));
Color[i].Grn = Round(1.8 * (i-216));
Color[i].Blu = Round(1.8 * (i-216));
}
}


void CyclePalette(PaletteRegister Hue)
{
Word i;
RGB tmp;

tmp = Hue[0];
for (i = 1; i<=255; i++)
Hue[i-1] = Hue[i];
Hue[255] = tmp;
SetPalette(Hue);
}


void Swap(int *first, int *second)
{
int temp;

temp = *first;
*first = *second;
*second = temp;
}


void Circle(Word x, Word y, Word radius, Byte color)
{
int a, af, b, bf, target, r2;

target = 0;
a = radius;
b = 0;
r2 = Sqr(radius);
while(a >= b)
{
b = Round(sqrt(r2 - Sqr(a)));
Swap(&target, &b);
while(b<target)
{
af = (120*a) / 100;
bf = (120*b) / 100;
Plot(x+af, y+b, color);
Plot(x+bf, y+a, color);
Plot(x-af, y+b, color);
Plot(x-bf, y+a, color);
Plot(x-af, y-b, color);
Plot(x-bf, y-a, color);
Plot(x+af, y-b, color);
Plot(x+bf, y-a, color);
++b;
}
--a;
}
}


void Draw(int xx1, int yy1, int xx2, int yy2, Byte color)
{
int LgDelta, ShDelta, Cycle, LgStep, dtotal;

LgDelta = xx2 - xx1;
ShDelta = yy2 - yy1;

if (LgDelta < 0)
{
LgDelta = - LgDelta;
LgStep = -1;
}
else
LgStep = 1;

if (ShDelta < 0)
{
ShDelta = - ShDelta;
ShStep = -1;
}
else
ShStep = 1;

if (ShDelta < LgDelta)
{
Cycle = LgDelta >> 1;
while (xx1 != xx2)
{
Plot(xx1, yy1, color);
Cycle += ShDelta;
if (Cycle > LgDelta)
{
Cycle -= LgDelta;
yy1 += ShStep;
}
xx1 += LgStep;
}
Plot(xx1, yy1, color);
}
else
{
Cycle = ShDelta >> 1;
Swap(&LgDelta, &ShDelta);
Swap(&LgStep, &ShStep);
while (yy1 != yy2)
{
Plot(xx1, yy1, color);
Cycle += ShDelta;
if (Cycle > LgDelta)
{
Cycle -= LgDelta;
xx1 += ShStep;
}
yy1 += LgStep;
}
Plot(xx1, yy1, color);
}
}


void InitGraphics()
{
XRes = MaxXres;
YRes = MaxYres;
PreCalc();
SetMode(19);
ClearPalette(Color);
InitPalette2(Color);
SetPalette(Color)
}


void WaitForKey()
{
char k;
while (!(k =getch()));
}


void ExitGraphics()
{
sound(1000);
delay(500);
nosound();
WaitForKey();
SetMode(3);
}


void Title()
{
textcolor(YELLOW);
textbackground(BLUE);
clrscr();
}


/*
Three Dimensional Plotting Routines


InitPlotting - rotation and tilt angles
InitPerspective - observer location and distances
MapCoordinates - maps 3D space onto the 2D screen
CartesianPlot - plot a cartesian system point
CylindricalPlot3D - plot a cylindrical system point
SphericalPlot3D - plot a spherical system point
DrawLine3D - plots a line from 3D coordinates
*/


int CentreX, CentreY;
int Angl, Tilt;
float CosA, SinA;
float CosB, SinB;
float CosACosB, SinASinB;
float CosASinB, SinACosB;


void InitPlotting(int Ang, int Tlt)
{
CentreX = MaxX >> 1;
CentreY = MaxY >> 1;
Angl = Ang;
Tilt = Tlt;
CosA = CosD(Angl);
SinA = SinD(Angl);
CosB = CosD(Tilt);
SinB = SinD(Tilt);
CosACosB = CosA * CosB;
SinASinB = SinA * SinB;
CosASinB = CosA * SinB;
SinACosB = SinA * CosB;
}


Boolean PerspectivePlot;
float Mx, My, Mz, ds;


void InitPerspective(Boolean Perspective, float x, float y, float z, float m)
{
PerspectivePlot = Perspective;
Mx = x;
My = y;
Mz = z;
ds = m;
}


void MapCoordinates(float X, float Y, float Z, int *Xp, int *Yp)
{
float Xt, Yt, Zt;

Xt = (Mx + X*CosA - Y*SinA);
Yt = (My + X*SinASinB + Y*CosASinB + Z*CosB);

if (PerspectivePlot)
{
Zt = Mz + X*SinACosB + Y*CosACosB - Z*SinB;
*Xp = CentreX + Round(ds*Xt/Zt);
*Yp = CentreY - Round(ds*Yt/Zt);
}
else
{
*Xp = CentreX + Round(Xt);
*Yp = CentreY - Round(Yt);
}
}


void CartesianPlot3D(float X, float Y, float Z, Byte Color)
{
int Xp, Yp;

MapCoordinates(X, Y, Z, &Xp, &Yp);
Plot(Xp, Yp, Color);
}


void SphericalPlot3D(float R, float Theta, float Phi, Byte Color)
{
float X, Y, Z;

Theta = Radians(Theta);
Phi = Radians(Phi);
X = R * sin(Theta) * cos(Phi);
Y = R * sin(Theta) * sin(Phi);
Z = R * cos(Theta);
CartesianPlot3D(X, Y, Z, Color);
}


void DrawLine3D(TDA Pnt1, TDA Pnt2, Byte Color)
{
int Xp1, Yp1;
int Xp2, Yp2;
float x1, y1, z1;
float x2, y2, z2;

UnVec(Pnt1, &x1, &y1, &z1);
UnVec(Pnt2, &x2, &y2, &z2);
MapCoordinates(x1, y1, z1, &Xp1, &Yp1);
MapCoordinates(x2, y2, z2, &Xp2, &Yp2);
Draw(Xp1, Yp1, Xp2, Yp2, Color);
}


/*
Pixel


PutPixel - plots pixel
GetPixel - gets pixel


Color
1 - Blue
2 - Green
3 - Cyan
4 - Red
5 - Magenta
6 - Brown/Yellow
7 - Gray Scale


Intensity levels (0..35) for each color
*/


#define MaxCol 7
#define MaxInten 35


void PutPixel(int x, int y, Byte Color, Byte Intensity)
{
Byte Col;

if ( Intensity > MaxInten)
{
printf("*Inten > MaxInten!!\n\nHit any hey to exit.\n");
getch();
exit(1);
}
Col = ((MaxInten + 1)*(color - 1) + Intensity) & 255;
Plot(x, y, Col);
}


int GetPixel(int x, int y)
{
reg.x.ax = 3328;
reg.x.dx = y;
reg.x.cx = x;
int86(0x10, &reg, &reg);
return(reg.x.ax&255);
}


/*
Set up of Coordinate Axes and Color Palette


PutAxisAndPalette - toggle for Axis and Palette
AxisAndPalette - places Axis and Color Palette on screen
*/


Boolean DrawAxisAndPalette;
void PutAxisAndPalette(Boolean PlaceOnScreen)
{
if (PlaceOnScreen)
DrawAxisAndPalette = true;
else
DrawAxisAndPalette = false;
}


void DisplayAxis()
{
int x, y, z;

for (x=-100; x<101; x++)
{
CartesianPlot3D(x, 0, 0, 35);
CartesianPlot3D(100, 0, 0, 251);
}

for (y = -100; y<101; y++)
{
CartesianPlot3D(0, y, 0, 71);
CartesianPlot3D(0, 100, 0, 251);
}

for (z = -100; z<101; z++)
{
CartesianPlot3D(0, 0, z, 107);
CartesianPlot3D(0, 0, 100, 251);
}
}


void DisplayPalette()
{
int X, Y;
Byte Color;
Byte Intensity;

for (Color=1; Color<=MaxCol; Color++)
{
for (Intensity=0; Intensity<=MaxInten; Intensity++)
{
for (X=0; X<4; X++)
{
for (Y=0; Y<4; Y++)
PutPixel(X+5*Color, 190-Y-5*Intensity, Color, Intensity);
}
}
}
}


void AxisAndPalette()
{
if (DrawAxisAndPalette)
{
DisplayAxis();
DisplayPalette();
}
}
解决Zabbix中文监控服务器图形图表显示乱码 zabbix对中文的支持不是很好,但为了管理方面有时候我们还是会选择中文,在zabbix监控的web界面,图形图标下面的中文会显示一个个小方块,这样是不正确的,需要下载字体。例如“微软雅黑”,“微软雅黑.ttf” 命名为 “msyh.ttf”,将下载的字体上传到/zabbix/fonts/字体下修改/zabbix/include/defines.inc.php文件中的两处define('ZBX_G... 阅读详情

相关推荐

Zabbix前端页面显示的默认配置如何修改(例:默认查看图形一次只显示20个,队列检索监控项默认一次显示500个)

Zabbix前端页面显示的默认配置如何修改(例:默认查看图形一次只显示20个,队列检索监控项默认一次显示500个)

平平无奇,不断学习的运维玖玖 4531

顶会论文阅读-22年CCF A级别spark graphX研究

论文研读:incgraph

L_IRISRIIN的博客 2441

Doxygen 1.9.2 + Graphviz 配置实战:3步生成C/C++项目完整调用关系图

本文详细介绍了如何通过Doxygen 1.9.2和Graphviz配置生成C/C++项目的专业级调用关系图。从环境准备到高级调用图生成技巧,包括多目录项目处理、性能优化和可视化增强,帮助开发者快速掌握代码架构分析工具链的实战应用。

weixin_30781107的博客 472

开始使用MASM

      这篇教程翻译自《Inetl汇编语言程序设计》一书的作者Kip R. Irvine的文章Getting Started with MASM ,翻译的目的在于方便学习。本人翻译水平有限,有兴趣的大侠可以直接阅读原文。      同时感谢Adam_syd的中肯意见。          本教程将在指导你在轻松、有序的过程中,完成学习《Inetl汇编语言程序设计》(第5版)所需的

jinsonghu的专栏 1万+

GraphWin.inc 汇编语言

汇编语言 win32 GraphWin.inc

Irvine32.inc

支持汇编教材中的编程include

zabbix升级后图形文字不显示

下载win字体,根据自己选择,上传至/usr/share/zabbix/assets/fonts目录下,修改文件名为jianti.ttf。更新小版本后zabbix数据图形都有,只有下方文字不显示。修改默认字体配置文件。

运维工程师 893

VS2008汇编模板库函数

利用VS强大的功能,结合汇编开发配置,构造一款功能强大的可视化汇编工具。具体配置方法http://user.qzone.qq.com/245806497/blog/1287665369

解决Zabbix图形内汉字显示异常的问题

将define(‘ZBX_GRAPH_FONT_NAME’, ‘DejaVuSans’);2.上传到zabbix前端文件夹的assets/fonts目录中,比如我这里使用的是宋体,文件名simsun.ttc。注意目前ttf的字体文件是正常的,使用ttc格式的字体会导致页面无法正常显示。1.打开windows电脑,进入C:\Windows\Fonts,选择字体文件,我使用的是宋体。3.修改zabbix前端文件夹的include/defines.inc.php。

lvbinemail的博客 366

生物信息学名词解释 | K-mer (长度为k的短序列)

K-mer 何谓K-mer 所谓Kmer,即为一段长度为k的DNA片段,是由测序reads剪切一部分得到的。k为一个奇数,k=几,就为几mer。 比如:我的测序reads长度为100bp,我将这100bp打断成17bp的短片段,打断后的17bp段片段就叫17mer,可以获得(100-17+1)条k-mer序列。 Table1 k-mers for GTAGAGCTGT. k k-mers 1 G,T,A,G,A,G,C,T,G,T 3 GTA,TAG,AGA,GAG,AGC,GCT,CT

qq_50637636的博客 2万+

ThingsBoard 仪表板状态

请先通过阅读仪表板概述和仪表板入门案例来熟悉ThingsBoard的仪表板。文章希望通过浅显的文字描述什么是仪表板状态及如何使用。 概念 状态功能使得仪表板可以分层,配合小部件的动作,实现多层仪表板之间的跳转.每个状态对应一个仪表板的图层 每个仪表板有一个默认的根状态, 根状态可以理解为默认状态, 也就是打开仪表板默认展示的仪表板图层.编辑模式下, 点击右上角的图标来管理状态.添加多个状态后左上角出现状态切换(图层切换)下拉列表可以通过选中根状态复选框切换新的默认展示的状态/图层配合小部件的动作,实现状

物联网三分钟 2308

Zabbix 图形展示中文乱码更正

一、乱码确认 登录zabbix管理平台时,展开主机的监控图形,发现中文显示全是“口口”的乱码。 经过查阅相关资料,得出结论,zabbix少了字体。。。。。。 二、复制上传字体文件 1、从Windows操作系统中,查找 simhei 字体文件,复制此文件到其他目录存放。 2、通过 SecureFX 远程登录管理工具打开 zabbix 服务器后, 3、在左边Windows 窗口中浏览到存放simhei文件的目录, 4、右边linux窗口中浏览到 /usr/share/zabbi..

蒙懂的小运维 653

决策规划算法四:Piecewise Jerk Path Optimizer

一,问题分析 路径规划的本质目的:规划出一条安全(无碰撞),舒适(平滑),符合车辆运动学的轨迹。 如下图所示,决策算法开辟凸空间后,路径规划算法用数值优化的方法搜索出一条最优路径,即将问题转化为二次规划的问题,采用二次规划的求解器进行求解。 二次规划问题的求解顺序: 1,确定优化变量 2,确定目标函数 3,确定约束条件 4,将目标函数和约束条件变形为二次规划的标准形式 5,用二次规划求解器进行求解,获得优化变量的序列,使得目标函数取得最小值。 注:路径的最终表达式为:,..

肥嘟嘟的左卫门 8562

Zabbix6.4 图形乱码怎么办

找一台Microsoft Windows 7/10/11的电脑,打开C:\Windows\Fonts。进入Linux后台,找到目录/usr/share/zabbix/assets/fonts/将define('ZBX_GRAPH_FONT_NAME', 'graphfont');将define('ZBX_FONT_NAME', 'graphfont');Zabbix6.4 安装后,进入主机图形展示,你会发现文字部分乱成了乱码。改成 define('ZBX_GRAPH_FONT_NAME', '

土牛兄弟的博客 1310

SDIO协议

SDIO协议1 概述  SDIO,全称:Secure Digital Input and Output ,即安全数字输入输出接口。2 特点①与多媒体卡系统规格书版本4.2全兼容。支持三种不同的数据总线模式:1位(默认)、4位和8位。②与较早的多媒体卡系统规格版本全兼容(向前兼容)。③与SD存储卡规格版本2.0全兼容。④与SD I/O卡规格版本2.0全兼容:支持两种不同的数据总线模式:1位(默认)和4

Let the development board fly! 3万+

UG NX二次开发(C#)--详细讲述编程模板NXOpen_CS_Wizard的代码意义,帮你轻松进入NXOpen(C#)二次开发

有几个读者私信问我,在看了“NX1957在VS2019上二次开发的环境配置”后,能完成了UG NX二次开发(C#)模板的配置,也能根据模板创建工程,但是对工程文件.cs不甚理解;并且,在UG Styler新建完成后,其也有一个dlx文件和.cs文件,也不清楚怎么使用。本文先对UG NX二次开发(C#)模板文件进行讲解,在下一个博客中,讲解Styler新建后的模板文件。以上就是对编程模板NXOpen_CS_Wizard(c#)的讲解,其实只要明白了逻辑关系,编程实现只是时间问题,祝你好运。

GimiGimmy 1786

zabbix--图形字体乱码

解决 zabbix 图形字体乱码 如图:修改之前 具体步骤: 1)下载字体,例如:SIMKAI.ttf楷体(也可直接将Windows上的直接上传;Windows路径:C:\Windows\Fonts) 2)上传到Linux中 3)将字体复制到 zabbix web站点数据目录下的fonts目录下,(yum安装的路径:/usr/share/zabbix/fonts) 如我的zabbix...

weixin_30410999的博客 207

信奥赛csp初赛高频考点【位运算】(详细解析)

信奥赛csp初赛高频考点【位运算】(详细解析)

王老师青少年编程 371

Ubuntu24.04安装zabbix6(PostgreSQL)及zabbix6图形乱码解决

想在Ubuntu上部署zabbix6,我的Ubuntu版本为23,但zabbix官方仓库,支持的Ubuntu版本只有22,24到这一步,提示翻译过来大概就是:23的依赖版本太高,真想用得回退那就别了,我用24的包,删掉22包之后,这回提示缺依赖,但升级的话目前没有这个依赖...可快算了,我老实用Ubuntu24.04。下好镜像,装好后,先把open-vm-tools,openssh-server,net-tools这三样装好。配置清华源,

Muggllee的博客 2585

STM32 使用SYN6288语音模块

本篇文章带大家学习一下SYN6288语音模块,这个模块可以用于车载设备,语音电子书等众多产品当中,而且这个模块支持多种编码格式,GB2312,GBK等字符编码格式。SYN6288语音合成模块是一种语音合成设备,其可实现文字转语音功能,将输入的文字信息通过内部的处理和合成,输出相对应的语音信息。SYN6288模块具有语音合成质量高、输出音质好、使用方便等特点,因此广泛应用于语音播报、语音提示、语音识别、智能家居、智能家电、安防监控等领域。支持多语言:包括中文、英文、日文、韩文等多种语言。

m0_49476241的博客 2万+

学Simulink--基础微电网场景实例:基于Simulink的微电网黑启动过程建模与仿真

黑启动(Black Start)是指在全系统停电(无电压、无频率)状态下,微电网依靠内部电源自主恢复供电的能力。🌩️典型场景主网长时间故障自然灾害导致区域停电计划检修后重启❗挑战无参考电压/频率 → 逆变器无法锁相负荷逐级投入 → 需避免过流/过压多电源协调 → 防止环流或失步✅黑启动成功标准在30 秒内恢复关键负荷供电电压/频率稳定在范围内无设备损坏或保护跳闸🎯本文目标:手把手教你使用 Simulink + Simscape + Stateflow 搭建。

amy_mhd的博客 201

zabbix 监控 图形化界面文字乱码解决方法

zabbix安装后之后,很多小伙伴第一时间都是去设置中文界面,发现页面、菜单等可以正常显示中文,但是 唯有图形显示方块,无法正常显示汉字,按照百度教程,上传windows字体,修改配置文件的2处字体配置能解决 按照教程我这里没有解决,最后发现是php编译问题。 参考链接:https://www.linuxidc.com/Linux/2017-12/149284.htm 第一种重新编译...

weixin_34406796的博客 266

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

zabbix图形乱码解决方案

zabbix使用中文后,图形那里乱码,因为没有中文包,需要安装中文包并且应用。

qq_37200978的博客 996

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

(三)修改图形乱码问题

例如现在有问题的图形如下 把windows的字体:C:\Windows\Fonts复制一个字体(simkai.ttf)到/usr/share/zabbix/fonts/目录下 #vi /usr/share/zabbix/include/defines.inc.php define('ZBX_GRAPH_FONT_NAME', 'simkai'); define('ZBX_FONT...

weixin_30438813的博客 144

zabbix图形乱码

毕竟是中文为主,特别是有些香项目最好以中文命名,容易区分,也方便识别 环境: centos7.3安装zabbix3.2 问题: 图文乱码问题 原理上只要找到对应的字符集,在修改配置文件 windows路径: C:\Windows\Fonts 我最先使用的是新宋体。。。结果没变 后来换成微软雅黑,成功; 配置文件修改: # pwd /usr/share/zabbix/...

weixin_30402085的博客 100

解决zabbix前端的图形界面出现中文的乱码问题

解决zabbix前端图形显示中文乱码

wxlly06的博客 247
上一篇: Math.Inc 分型图形库数学函数头文件 数字函数+向量和矩阵函数+仿射变换
下一篇: 如何在Win7中安装使用超级终端Hyper Terminal
tinyhare
博客等级 码龄15年 11粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值