C超市商品信息查询系统
一、系统界面介绍
1. 超市商品信息查询系统
1、显示商品信息,包括:商品名称、商品种类(休闲食品、奶品水饮、生鲜水果)、商品价格、商品保质期、商品生产日期;

2、从文件中导入数据、显示、排序、查询的功能。(由于顾客没有更改信息的需要所以没设置修改、添加等功能,注:必须先导入数据);

3、系统提供按照不同方式查询的功能,如按照商品名称或类型查询;

4、系统能将商品信息排序之后顺序输出(排序可以有多种选择);

2.超市商品信息管理系统
1、显示商品信息(同查询系统)
2、首先输入密码,若输入错误3次则退出系统。密码存储在文件中并可在进入系统后修改密码(密码为字符串)

3、从文件中导入数据、显示、添加、修改、删除、查询、排序、导出、修改密码;(注:必须先导入)

4.信息显示

5.信息添加:

6.信息删除:

7.信息修改(按名称):

8.信息查询(可根据不同需要进行不同查询):

9.信息排序(可按需要排序):

10.修改登录密码(若两次输入新密码不相同则返回主界面,修改成功后密码保存至文件中):

11.退出系统

二、程序源代码介绍:
1.源代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
typedef struct _goods//商品结构体{char name[20];int category;float prize;int shelf_life;char time[15];}goods;goods b[20];int N;
int switch_num;
int return_num;
char password1[20];
int num_star;int input(goods b[],int N);//从系统中导入数据void display(goods b[],int N);//显示信息void change(goods b[],int N);//修改信息void _search(goods b[],int N);//查找信息int _insert(goods b[],int N);//添加信息int _delete(goods b[],int N);//删除信息void _sort(goods b[],int N);//排序信息void save(goods b[],int N);//保存信息void menu_customer();//顾客系统界面void menu_manager();//管理员系统界面void system_manager();//顾客系统void password();//密码函数void modify_password();//更改密码函数//导入函数已完善int input(goods b[],int N){N=0;FILE *fp;//打开文件fp=fopen("data.txt","r+");if(fp==NULL)//判断文件是否为空{printf("can't open this file");exit(0);}while(!feof(fp))//导入{fscanf(fp,"%s%d%f%d%s",b[N].name,&b[N].category,&b[N].prize,&b[N].shelf_life,b[N].time);N++;}Sleep(100);printf("恭");Sleep(50);printf("喜");Sleep(50);printf("您");Sleep(50);printf("导");Sleep(50);printf("入");Sleep(50);printf("成");Sleep(50);printf("功");Sleep(50);fclose(fp);return N-1;//商品数目}//显示函数已完善void display(goods b[],int N){int i;for(num_star=0;num_star<18;num_star++)//显示*符号{printf("*");Sleep(5);}printf("商");Sleep(50);printf("品");Sleep(50);printf("信");Sleep(50);printf("息");Sleep(50);printf("如");Sleep(50);printf("下");Sleep(50);for(num_star=0;num_star<18;num_star++){printf("*");Sleep(5);}printf("\n\n");printf("商品名称 类别 价格 保质期 生产日期\n");for(i=0;i<N;i++){printf("%-8s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);//显示信息}printf("\n【注;类别1.休闲食品 2.奶品水饮 3.生鲜水果】\n\n");for(num_star=0;num_star<48;num_star++)//显示*符号{printf("*");Sleep(5);}printf("\n\n");printf("按1后回车返回");scanf("%d",&return_num);if(return_num==1)//返回主界面{system("cls");return;}}//修改函数已完善void change(goods b[],int N){int i,n;char a[10];for(num_star=0;num_star<18;num_star++){printf("*");Sleep(10);}printf("欢");Sleep(50);printf("迎");Sleep(50);printf("进");Sleep(50);printf("入");Sleep(50);printf("修");Sleep(50);printf("改");Sleep(50);printf("系");Sleep(50);printf("统");Sleep(50);for(num_star=0;num_star<18;num_star++){printf("*");Sleep(5);}printf("\n\n");printf("-1-请输入需要修改的商品的名称\n ");//需要修改的名称loop:scanf("%s",a);for(i=0;i<N;i++)//比较是哪个商品{if(!strcmp(b[i].name,a))break;}if(i==N){printf("\n-1-对不起找不到该商品,请重新输入\n ");goto loop;}elseprintf("\n-2-您需要的修改的商品信息如下:\n (1)商品名称(2)类别 (3)价格 (4)保质期 (5)生产日期\n %-9s\t%-3d\t%.2f\t%5d\t%10s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);//输出并左右对齐printf("\n-3-请输入需要修改的商品信息编号\n ");loop2:scanf("%d",&n);switch(n)//选择修改什么信息{case 1:printf("\n-4-请输入该商品的名称\n ");scanf("%s",b[i].name);break;case 2:printf("\n-4-请选择商品类别*1.休闲食品2.奶品水饮3.生鲜水果\n ");scanf("%d",&b[i].category);break;case 3:printf("\n-4-请输入该商品的价格\n ");scanf("%f",&b[i].prize);break;case 4:printf("\n-4-请输入该商品的保质期*按月计(即输入1-12之间的整数)\n ");scanf("%d",&b[i].shelf_life);break;case 5:printf("\n-4-请输入该商品的生产日期*例如20170920\n ");scanf("%s",b[i].time);break;default:printf("\n-3-你输入的信息有误请重新输入:\n ");goto loop2;}printf("\n-5-修改成功\n\n");for(num_star=0;num_star<52;num_star++){printf("*");Sleep(5);}printf("\n\n");printf("按1后回车返回");scanf("%d",&return_num);//返回主界面if(return_num==1){system("cls");return;}}//搜索程序已完善void _search(goods b[],int N){int i,n;for(num_star=0;num_star<17;num_star++){printf("*");Sleep(5);}printf("欢");Sleep(50);printf("迎");Sleep(50);printf("进");Sleep(50);printf("入");Sleep(50);printf("搜");Sleep(50);printf("索");Sleep(50);printf("系");Sleep(50);printf("统");Sleep(50);for(num_star=0;num_star<17;num_star++){printf("*");Sleep(5);}printf("\n\n");printf("-1-请输入需要查询的内容*1.按名称查询2.按类型查询\n ");scanf("%d",&switch_num);switch(switch_num)//查询内容{case 1:char a[10];loop:printf("\n-2-请输入需要查询的商品的名称:\n ");scanf("%s",a);for(i=0;i<N;i++)//逐个比较商品名称{if(!strcmp(b[i].name,a)){break;}}if(i==N){printf("\n-2-对不起找不到该商品*1.返回主菜单2.继续查询\n ");scanf("%d",&switch_num);if(switch_num==1){goto loop7;}else goto loop;}else{printf("\n-3-您查询的商品信息如下:\n 商品名称 类别 价格 保质期 生产日期\n %-7s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);break;}case 2:int kind,_count=0;printf("\n-2-请输入商品的类别*1.休闲食品2.奶品水饮3.生鲜水果\n ");loop3:scanf("%d",&kind);printf("\n-3-您查询的商品信息如下:\n 商品名称 类别 价格 保质期 生产日期\n");for(i=0;i<N;i++){if(b[i].category==kind){printf(" %-7s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);_count++;}}if(_count==0)//记录类别商品的数量{Sleep(100);printf("\n-3-对不起找不到该类别信息请重新输入\n ");goto loop3;}}loop7:printf("\n");for(num_star=0;num_star<50;num_star++){printf("*");Sleep(5);}printf("\n\n");printf("按1后回车返回");scanf("%d",&return_num);if(return_num==1){system("cls");return;}}//添加函数已完善int _insert(goods b[],int N){int n,i=1,t;for(num_star=0;num_star<17;num_star++){printf("*");Sleep(5);}printf("欢");Sleep(50);printf("迎");Sleep(50);printf("进");Sleep(50);printf("入");Sleep(50);printf("添");Sleep(50);printf("加");Sleep(50);printf("系");Sleep(50);printf("统");Sleep(50);for(num_star=0;num_star<17;num_star++){printf("*");Sleep(5);}printf("\n\n-1-请输入需要添加的商品的个数:\n ");scanf("%d",&n);t=n;while(n){printf("\n-%d-输入第%d条商品信息:\n",i+1,i);printf(" 1.名称:");scanf("%s",b[N+i-1].name);printf("\n 2.类别*1.休闲食品2.奶品水饮3.生鲜水果:");scanf("%d",&b[N+i-1].category);printf("\n 3.价格:");scanf("%f",&b[N+i-1].prize);printf("\n 4.保质期*按月计(即输入1-12之间的整数):");scanf("%d",&b[N+i-1].shelf_life);printf("\n 5.生产日期*例如20170920:");scanf("%s",b[N+i-1].time);n--;i++;}printf("\n-%d-添加成功\n\n",i+1);for(num_star=0;num_star<50;num_star++){printf("*");Sleep(10);}printf("\n\n");printf("按1后回车返回");scanf("%d",&return_num);if(return_num==1){system("cls");return N+t;}}//删除函数已完善int _delete(goods b[],int N){int i,q;char c[10];for(num_star=0;num_star<16;num_star++){printf("*");Sleep(5);}printf("欢");Sleep(50);printf("迎");Sleep(50);printf("进");Sleep(50);printf("入");Sleep(50);printf("删");Sleep(50);printf("除");Sleep(50);printf("系");Sleep(50);printf("统");Sleep(50);for(num_star=0;num_star<16;num_star++){printf("*");Sleep(10);}printf("\n\n-1-请输入需要删除的商品的名称\n ");loop4:scanf("%s",c);for(i=0;i<N;i++)//寻找商品信息{if(!strcmp(b[i].name,c))break;}if(i==N){printf("\n-1-对不起找不到该商品,请重新输入\n ");goto loop4;}elseprintf("\n-1-您删除的商品信息如下:\n 商品名称 类别 价格 保质期 生产日期\n %-7s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);printf("\n-2-确认删除?*1.确认2.取消\n ");loop5:scanf("%d",&q);if(q!=2&&q!=1){printf("错误请重新输入");goto loop5;}else if(q==1){while(i<N-1){b[i]=b[i+1];i++;}printf("\n-3-删除成功\n\n");for(num_star=0;num_star<48;num_star++){printf("*");Sleep(5);}printf("\n\n");printf("按1后回车返回");scanf("%d",&return_num);if(return_num==1){system("cls");return N-1;}}elseprintf("\n");for(num_star=0;num_star<50;num_star++){printf("*");Sleep(5);}printf("\n\n\n");printf("按1后回车返回");scanf("%d",&return_num);if(return_num==1){system("cls");return N;}}//保存信息已完善void save(goods b[],int N){int i;FILE *point;point=fopen("data.txt","w");if(point==NULL){printf("can't find the file");exit(0);}for(i=0;i<N;i++)fprintf(point,"%-8s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);printf("恭");Sleep(50);printf("喜");Sleep(50);printf("您");Sleep(50);printf("导");Sleep(50);printf("入");Sleep(50);printf("成");Sleep(50);printf("功");Sleep(50);fclose(point);}//排序函数已完善void _sort(goods b[],int N){goods temp;int n,i,j;for(num_star=0;num_star<16;num_star++){printf("*");Sleep(5);}printf("欢");Sleep(50);printf("迎");Sleep(50);printf("进");Sleep(50);printf("入");Sleep(50);printf("排");Sleep(50);printf("序");Sleep(50);printf("系");Sleep(50);printf("统");Sleep(50);for(num_star=0;num_star<16;num_star++){printf("*");Sleep(5);}printf("\n\n-1-请问您需要按什么排序【1价格 2生产日期】\n ");//选择排序类型scanf("%d",&switch_num);switch(switch_num){case 1:printf("\n-2-请选择排序类型【1.价格从高到低排序2.从低到高】\n ");loop5:scanf("%d",&switch_num);if(switch_num==1)//降序排列{for(i=0;i<N-1;i++){for(j=0;j<N-1-i;j++){if(b[j].prize<b[j+1].prize){temp=b[j];b[j]=b[j+1];b[j+1]=temp;}}}}else if(switch_num==2)//升序排列{for(i=0;i<N-1;i++){for(j=0;j<N-1-i;j++){if(b[j].prize>b[j+1].prize){temp=b[j];b[j]=b[j+1];b[j+1]=temp;}}}}else{printf("输入错误请重新输入:\n");goto loop5;}break;case 2:{printf("\n-2-请选择排序类型【1.生产日期从早到晚2.从晚到早】\n ");loop6:scanf("%d",&switch_num);if(switch_num==1)//升序排列{for(i=0;i<N-1;i++){for(j=0;j<N-1-i;j++){if(strcmp(b[j].time,b[j+1].time)>0){temp=b[j];b[j]=b[j+1];b[j+1]=temp;}}}}
2.修改密码系统功能
我们参照日常生活中密码功能,密码为字符串,保存在password的文件中,若修改密码在管理员系统的修改密码程序下进行,修改过程中两次输入的新密码需一致才能成功,修改完成的密码保存在文件中。另外,我们将输入密码错误上限设为三次,输错三次自动退出系统,和现实生活很相似。
3.进入系统的渐进画面
简单的静态界面十分枯燥,所以我们用Sleep和system(“cls”)完成了进入系统的渐进画面。
Sleep(1000);
system(“cls”);
printf(“请稍等.”);
Sleep(200);
system(“cls”);
printf(“请稍等…”);
Sleep(200);
system(“cls”);
printf(“请稍等…”);
Sleep(700);
system(“cls”);
printf(“欢”);
Sleep(50);
printf(“迎”);
Sleep(50);
printf(“进”);
Sleep(50);
printf(“入”);
Sleep(50);
printf(“密”);
Sleep(50);
printf(“码”);
Sleep(50);
printf(“修”);
Sleep(50);
printf(“改”);
Sleep(50);
printf(“系”);
Sleep(50);
printf(“统”);
Sleep(50);
4.简洁明了的交互画面
我们在每个单独的功能界面通过序号的使用使界面更加简洁
我们在界面的顶部和底部都使用了大量的*使得界面凸显出强烈的层次感,也给使用者更加舒适的使用环境。
五、联系与交流
q:969060742 文档、完整代码、程序资源
相关文章:
C超市商品信息查询系统
一、系统界面介绍 1. 超市商品信息查询系统 1、显示商品信息,包括:商品名称、商品种类(休闲食品、奶品水饮、生鲜水果)、商品价格、商品保质期、商品生产日期; 2、从文件中导入数据、显示、排序、查询的功能。&…...
黑马JVM总结(二十七)
(1)synchronized代码块 synchronized代码块的底层原理,它是给一个对象进行一个加锁操作,它是如何保证如果你出现了synchronized代码块中出现了问题,它需要给这个对象有一个正确的解锁操作呢,加锁解锁是成对…...
软件测试/测试开发丨Python异常处理 学习笔记
点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27722 异常处理 编写程序时,即使语句或表达式使用了正确的语法,执行时仍可能触发错误。执行时检测到的错误称为异常,大…...
026 - STM32学习笔记 - 液晶屏控制(三) - DMA2D快速绘制矩形、直线
026- STM32学习笔记 - 液晶屏控制(三) - DMA2D快速绘制矩形、直线等 上节直接操作LTDC在先视频上直接显示,我们直接操作显存地址空间中的内容,用来显示图形,但是相对来说,这种方法费时费力,这节…...
【牛客网】OR59 字符串中找出连续最长的数字串
题目 思路 创建两个字符串 temp 和 ret 创建指针i用来遍历字符串通过i遍历字符串,如果遇到数字则将这个数组加到字符串temp中 i,如果遇到字母,则判断temp字符串的长度和ret字符串的长度,如果temp<ret则说明这个字符串不是要的字符串,如果temp>ret则说明此时temp字符串是…...
云原生监控系统Prometheus:基于Prometheus构建智能化监控告警系统
目录 一、理论 1.Promethues简介 2.监控告警系统设计思路 3.Prometheus监控体系 4.Prometheus时间序列数据 5.Prometheus的生态组件 6.Prometheus工作原理 7.Prometheus监控内容 8.部署Prometheus 9.部署Exporters 10.部署Grafana进行展示 二、实验 1.部署Prometh…...
C++ 学习系列 -- std::list
一 std::list 介绍 list 是 c 中的序列式容器,其实现是双向链表,每个元素都有两个指针,分别指向前一个节点与后一个节点 链表与数组都是计算机常用的内存数据结构,与数组连续内存空间不一样的地方在于,链表的空间是不…...
YOLOv8血细胞检测(6):多维协作注意模块MCA | 原创独家创新首发
💡💡💡本文改进:多维协作注意模块MCA,效果秒杀ECA、SRM、CBAM,创新性十足,可直接作为创新点使用。 MCA | 亲测在血细胞检测项目中涨点,map@0.5 从原始0.895提升至0.910 收录专栏: 💡💡💡YOLO医学影像检测:http://t.csdnimg.cn/N4zBP ✨✨✨实战医学影…...
FFmpeg横竖版视频互换背景模糊一键生成
视频处理是现代多媒体应用中常见的需求。其中横竖版视频互换和背景模糊是视频编辑中常见的操作。FFmpeg是一个功能强大的工具,适用于这些任务。 本文将详细介绍如何使用FFmpeg进行横竖版视频互换和背景模糊。 文章目录 操作命令与命令说明横版转竖版竖版转横版背景模糊处理横…...
Java 华为真题-小朋友分班
需求: 题目描述 幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小朋友同班,请你帮忙把同班的小朋友找出来小朋友的编号是整数,与前一位小朋友同班用Y表示,不同班用N表示学生序号范围(0&…...
机器学习必修课 - 编码分类变量 encoding categorical variables
1. 数据预处理和数据集分割 import pandas as pd from sklearn.model_selection import train_test_split导入所需的Python库 !git clone https://github.com/JeffereyWu/Housing-prices-data.git下载数据集 # Read the data X pd.read_csv(/content/Housing-prices-data/t…...
ClickHouse进阶(二十二):clickhouse管理与运维-服务监控
进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Kerberos安全认证-CSDN博客 📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情! 👍点赞:赞同优秀创作,你的点赞是对我创…...
Hadoop使用hdfs指令查看hdfs目录的根目录显示被拒
背景 分布式部署hadoop,服务机只有namenode节点,主机包含其他所有节点 主机关机后,没有停止所有节点,导致服务机namenode继续保存 再次开启主机hadoop,使用hdfs查看hdfs根目录的时候显示访问被拒 解决方案 1.主机再次开启hadoop并继续执行关闭 2.服务器再次开启hadoop并继…...
[Mac] 安装paddle-pipelines出现 ERROR: Failed building wheel for lmdb
今天在mac换了新系统,然后重新安装paddle-piplines的时候出现了下面的问题: xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrunerror: comma…...
LED灯亮灭
.text .global _start _start: 设置GPIO寄存器的时钟使能 RCC_MP_AHB4ENSETR[4]->1 0x50000a28LDR R0,0x50000A28LDR R1,[R0] 从R0为起始地址的4个字节数据取出放入R1中ORR R1,R1,#(0x1<<4) 第四位设置为1STR R1,[R0] 写回LDR R0,0x5000…...
Acwing.143 最大异或对(trie树)
题目 在给定的N个整数A1,A2 . …Ax中选出两个进行xor(异或)运算,得到的结果最大是多少? 输入格式 第一行输入一个整数N。 第二行输入N个整数A1~AN。 输出格式 输出一个整数表示答案。 数据范围 1 ≤N ≤105,0≤A<231 输入样例: 3 1 2 3输出样…...
day10.8ubentu流水灯
流水灯 .text .global _start _start: 1.设置GPIOE寄存器的时钟使能 RCC_MP_AHB4ENSETR[4]->1 0x50000a28LDR R0,0X50000A28LDR R1,[R0] 从r0为起始地址的4字节数据取出放在R1ORR R1,R1,#(0x1<<4) 第4位设置为1STR R1,[R0] 写回2.设置PE10管脚为输出模式 G…...
transformer系列5---transformer显存占用分析
Transformer显存占用分析 1 影响因素概述2 前向计算临时Tensor显存占用2.1 self-attention显存占用2.2 MLP显存占用 3 梯度和优化器显存占用3.1 模型训练过程两者显存占用3.2 模型推理过程两者显存占用 1 影响因素概述 模型训练框架:例如pytorch框架的cuda context…...
Docker项目部署
目录 一、前端项目部署 1、上传文件 2、开启容器 3、测试 二、后端项目部署 1、打包java项目 2、将jar包和Dockerfile文件长传到Linux系统 3、构建镜像 4、开启容器 5、测试 三、DockerCompose快速部署 基本语法 一、前端项目部署 1、上传文件 里面包括页面和配置文…...
vue3实现文本超出鼠标移入的时候文本滚动
判断文本长度是否大于容器长度 鼠标移入的时候判断,此处使用了tailwindcss,注意一下要设置文本不换行。 <divref"functionsItems"mouseenter"enterFunctionsItem($event, index)"><img class"w-5 h-5" :src&quo…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
