C语言之机房机位预约系统
🌟 嗨,我是LucianaiB!
🌍 总有人间一两风,填我十万八千梦。
🚀 路漫漫其修远兮,吾将上下而求索。
C语言之机房机位预约系统
目录
- 博客:机房机位预约系统设计与实现
- 系统功能概述
- 系统设计
- 结构体设计
- 主要函数
- 系统运行流程
- 总结
- 代码实现
在现代计算机实验室中,机位预约系统是提高资源利用效率和用户体验的重要工具。本文将介绍一个基于C++实现的机房机位预约系统,该系统能够帮助用户预约机位、查看预约信息、退订预约以及记录上机信息。
系统功能概述
流程图
该机房机位预约系统具备以下核心功能:
- 预约登记:用户可以预约指定日期和时间段的机位。
- 查看预约信息:用户可以查看所有预约信息。
- 退订预约:用户可以取消已预约的机位。
- 上机登记:用户可以进行上机登记,系统会记录上机信息。
- 系统管理:系统自动保存预约信息和上机记录,并在程序退出时更新文件。
系统设计
系统设计基于以下几个关键结构体和函数:
- Cstf:存储顾客信息,包括姓名和电话号码。
- PCInf:表示一台电脑在某个时间段的状态和顾客信息。
- Date:存储日期信息,包括年、月、日。
- Diary:存储机房一天内所有电脑的预约信息。
主要函数包括:
- Print_Menu():打印系统菜单。
- Get_Res():计算给定日期与当前日期的相对天数。
- Judge_Date():判断输入的日期是否有效,并计算与当前日期的相对天数。
- book_PC():实现预约登记功能。
- View_Reservations():查看所有预约信息。
- Exit_PC():实现退订功能。
- Go_PC():实现上机登记功能。
- Deal():将字符串转换为整数。
- Read():从文件中读取预约信息并存储到结构体数组中。
- Write():将当天的上机信息写入
Past.txt
文件,将预约信息写入Reservation.txt
文件。
系统运行流程
- 初始化:程序启动时,调用
Read()
函数从文件中读取预约信息。 - 主菜单:显示系统菜单,等待用户选择操作。
- 执行操作:根据用户选择,调用相应的功能函数(如预约登记、退订、上机登记等)。
- 保存信息:用户选择退出系统时,调用
Write()
函数保存信息并退出程序。
总结
本文介绍了一个基于C++的机房机位预约系统,旨在高效管理机房资源并提升用户体验。系统通过结构化设计实现了预约登记、查看预约信息、退订预约、上机登记和系统管理等功能。
系统的核心功能包括:
- 预约登记:用户可预约特定日期和时间段的机位,系统自动检查机位可用性。
- 查看预约信息:用户可查看所有预约信息,包括日期、时间段、机位编号、预约人姓名和电话。
- 退订预约:用户可通过输入预约日期、时间段和姓名来取消预约。
- 上机登记:用户到机房后进行上机登记,系统记录上机信息并更新机位状态。
- 系统管理:系统自动保存预约信息和上机记录,并在退出时更新文件。
系统设计基于以下结构体:
- Cstf:存储顾客信息(姓名和电话)。
- PCInf:表示电脑在某个时间段的状态和顾客信息。
- Date:存储日期信息(年、月、日)。
- Diary:存储机房一天内所有电脑的预约信息。
主要函数包括:
- Print_Menu():打印系统菜单。
- Get_Res():计算给定日期与当前日期的相对天数。
- Judge_Date():判断输入日期是否有效。
- book_PC():实现预约登记功能。
- View_Reservations():查看所有预约信息。
- Exit_PC():实现退订功能。
- Go_PC():实现上机登记功能。
- Read():从文件读取预约信息。
- Write():将预约信息和上机记录写入文件。
系统运行流程为:
- 初始化:启动时读取预约信息。
- 主菜单:显示菜单并等待用户选择。
- 执行操作:根据用户选择调用对应功能。
- 保存信息:退出时保存信息并更新文件。
该系统通过文件操作实现了数据持久化,确保了预约信息和上机记录的完整性和一致性。其设计合理、功能齐全,能够有效满足机房日常管理需求。
代码实现
以下是系统的核心代码实现:
// 机房机位预约系统
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fstream>
#include <iostream>
#include <string>/*程序第一次运行,两个文件应该全是空程序结束之后,将当天的上机信息,记录到Past文件中Reservation文件更新未第二天开始后的两周内的预约记录Past文件中的每一行存储:日期,每个上机顾客时间段和机位Reaervation文件中每一行记录, 日期,
*/
using namespace std;
fstream past,reservation;
//存储顾客情况(姓名和电话号)的结构体Cstf
typedef struct{char name[20];char tel[12];
}Cstf;
//表示一台电脑在一个时段的状态和顾客情况的结构体PCInf
typedef struct{int state; //机位状态 0 代表空闲,1代表已经被占用 2 代表正在上机Cstf cst; //
}PCInf;
//存储机房一天全部机位信息的结构体Diary
typedef struct{int year;int month;int day;
}Date;
typedef struct{Date dd;PCInf pc[20][6]; //20个电脑 每个电脑的各个时间段状态
}Diary;
int Month[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
/*Diary结构体数组 wday[15]表示每天营业开始对应当天起的连续15天内机位的预约内容其中,第15个元素对应的电脑在所有时段都为未预约当程序运行到当天营业结束时,第一个元素变量wday[0]表示当天的上机情况程序开始运行时,系统首先从预约文件中读取数据,作为数组wday[]前14个元素的值程序结束y运行前,数组wday[0]表示当天,追加到过期日志文件中去
*/
Diary wday[15]; //每天营业开始对应当天起的连续15天内机位的预约内容。
void Print_Menu(){printf("\t\t\t\t\t***欢迎使用机房机位预约系统***\n\n");printf("\t\t\t\t\t 请保证系统的正常关闭 \n\n");printf("\t\t\t\t\t*** 1、预约登记 ***\n\n");printf("\t\t\t\t\t*** 2、退订 ***\n\n");printf("\t\t\t\t\t*** 3、上机登记 ***\n\n");printf("\t\t\t\t\t*** 4、退出系统 ***\n\n");printf("\t\t\t\t\t**************************\n\n");
}int Get_Res(int year,int month,int day){int res = 0;if(year==wday[0].dd.year&&month==wday[0].dd.month) res = day-wday[0].dd.day;else if(year==wday[0].dd.year) res = day + Month[month]-wday[0].dd.day;return res;
}int Judge_Date(int year,int month,int day,int &res){int flag = 1;if(month>=1&&month<=12){if(day<=0||day>Month[month]) flag = 0;res = Get_Res(year,month,day);if(res>=15) flag = 0;}else flag = 0;return flag;
}//预约登记
void book_PC(){int year,month,day,book;int duan,i,j;int flag = 1;char c;int res = 0;printf("请输入预约的日期:(格式:YYYY/MM/DD)");scanf("%d/%d/%d",&year,&month,&day);flag = Judge_Date(year,month,day,res);if(!flag){printf("日期输入有误!即将返回主菜单!");system("pause");return;}printf("请输入要预约这一天的时间段:\n");printf("1、8:00~10:00\n2、10:00~12:00\n3、12:00~14:00\n4、14:00~16:00\n5、16:00~18:00\n6、18:00~20:00\n");scanf("%d",&duan);//利用循环检查这一天的20台PC 有没有空闲的机器flag = 0;for(i = 0 ; i < 20 ; i ++ ){if(wday[res].pc[i][duan-1].state==0){flag = 1;book = i+1;break;}}if(flag==0){printf("不好意思!您选择的日期对应的时间段已经被预约!\n");printf("以下列出了你预约这一天的有空机位的其他时间段:\n");for(i = 0 ; i < 20 ; i ++ ){for(j = 0 ; j < 6 ; j ++ ){if(wday[res].pc[i][j].state==0){printf("第%d号机器\t时间段:",i+1);if(j==0) printf("8:00~10:00\t时间段编号:1\n");else if(j==1) printf("10:00~12:00\t时间段编号:2\n");else if(j==2) printf("12:00~14:00\t时间段编号:3\n");else if(j==3) printf("14:00~16:00\t时间段编号:4\n");else if(j==4) printf("16:00~18:00\t时间段编号:5\n");else if(j==5) printf("18:00~20:00\t时间段编号:6\n");printf("\n");}}}printf("\n您还需要预约机位吗?(Y/N)");scanf("%c",&c);getchar();if(c=='y'||c=='Y'){printf("请从以上列出的可用机器中选择机位:(输入序号)");scanf("%d",&book);printf("请输入相应的时间段:");scanf("%d",&duan);}else{printf("\n预约机位失败!即将返回主菜单!\n");system("pause");return;}}printf("请输入你的姓名:");scanf("%s",wday[res].pc[book-1][duan-1].cst.name);getchar();printf("请输入你的电话:");scanf("%s",wday[res].pc[book-1][duan-1].cst.tel);getchar();wday[res].pc[book-1][duan-1].state=1; //表示已预约printf("\nOK!你已经成功预约%d号机器\n时间段编号:%d\n预约日期:%d年%d月%d日\n\n",book,duan,year,month,day);printf("即将返回主界面!\n");system("pause");
}//查看所有人预约
void View_Reservations(){ifstream reservation("Reservation.txt");if(reservation.is_open()){string line;cout << "\n所有预约信息如下:\n";while(getline(reservation, line)){if(!line.empty()) {cout << line << endl;}}reservation.close();} else {cout << "无法打开预约文件。\n";}system("pause");
}//退订
void Exit_PC(){int year,month,day;int i,flag,res=0,duan;char nname[20];printf("请输入您预约的日期:(YYYY/MM/DD)");scanf("%d/%d/%d",&year,&month,&day);flag = Judge_Date(year,month,day,res);if(!flag){printf("日期输入有误,将返回至主菜单!\n");system("pause");return;}printf("请输入时间段编号:");scanf("%d",&duan);printf("请输入您的姓名:");scanf("%s",nname);getchar();flag = 0;for(i = 0 ; i < 20 ; i ++ ){if(strcmp(wday[res].pc[i][duan-1].cst.name,nname)==0){flag = 1;wday[res].pc[i][duan-1].state=0;break;}}if(!flag)printf("\n没有找到您的预约座位信息!\n");elseprintf("\n已成功取消预约!\n");printf("\n系统将返回主界面!!\n");system("pause");return;
}//上机登记
void Go_PC(){int i,j,duan,book;char c,nname[20];printf("请问您是预约客户吗?(Y/N)");scanf("%c",&c);getchar();if(c=='y'||c=='Y'){printf("请输入您的姓名:");scanf("%s",nname);getchar();printf("请输入您预约的机器编号:");scanf("%d",&book);printf("请输入您预约的时间段:");scanf("%d",&duan);if(strcmp(nname,wday[0].pc[book-1][duan-1].cst.name)==0){wday[0].pc[book-1][duan-1].state=2;printf("上机成功!\n\n");printf("即将返回至主菜单!");system("pause");return;}else{printf("没有检索到对应的人!\n\n");printf("即将返回至主菜单!");system("pause");return;}}else{printf("以下是今天所有空机位对应的时间段:\n\n");for(i = 0 ; i < 20 ; i ++ ){for(j = 0 ; j < 6 ; j ++ ){if(wday[0].pc[i][j].state==0){printf("第%d号机器\t时间段:",i+1);if(j==0) printf("8:00~10:00\t时间段编号:1\n");else if(j==1) printf("10:00~12:00\t时间段编号:2\n");else if(j==2) printf("12:00~14:00\t时间段编号:3\n");else if(j==3) printf("14:00~16:00\t时间段编号:4\n");else if(j==4) printf("16:00~18:00\t时间段编号:5\n");else if(j==5) printf("18:00~20:00\t时间段编号:6\n");printf("\n");}}}printf("\n您还需要上机吗?(Y/N)");scanf("%c",&c);getchar();if(c=='y'||c=='Y'){printf("请从以上列出的可用机器中选择机位:(输入序号)");scanf("%d",&book);printf("请输入相应的时间段:");scanf("%d",&duan);}else{printf("\n上机失败!即将返回主菜单!\n");system("pause");return;}printf("请输入你的姓名:");scanf("%s",wday[0].pc[book-1][duan-1].cst.name);getchar();printf("请输入你的电话:");scanf("%s",wday[0].pc[book-1][duan-1].cst.tel);getchar();wday[0].pc[book-1][duan-1].state=2;printf("您已成功上机!\n\n即将返回主菜单!\n\n");system("pause");return;}
}int Deal(string str){int res = 0;for(int i = 0 ; i < str.length(); i ++ )res = res*10+(str[i]-48);return res;
}//读文件
void Read(){string line;int ite1,ite2,ite3,timep,c;int top = -1;reservation.open("Reservation.txt");while(getline(reservation,line)){//若第一个字符是数字那就代表是姓名,应该存储到结构体数组里面if((line[0]>='a'&&line[0]<='z')||(line[0]>='A'&&line[0]<='Z')){ite1 = line.find_first_of(',');ite2 = line.find(',',ite1+1);ite3 = line.find_last_of(',');timep = Deal(line.substr(ite3+1,line.length()-ite3-1))-1;c = Deal(line.substr(ite2+1,ite3-ite2-1))-1;wday[top].pc[c][timep].state=1;strcpy(wday[top].pc[c][timep].cst.name,line.substr(0,ite1).c_str());strcpy(wday[top].pc[c][timep].cst.tel,line.substr(ite1+1,ite2-ite1-1).c_str());
// string s;
// while(getline(reservation,s)){
// if((s[0]>='a'&&s[0]<='z')||(s[0]>='A'&&s[0]<='Z')){
// ite1 = s.find_first_of(',');
// ite2 = s.find(',',ite1+1);
// ite3 = s.find_last_of(',');
// timep = Deal(s.substr(ite3+1,s.length()-ite3-1))-1;
// c = Deal(s.substr(ite2+1,ite3-ite2-1))-1;
// wday[top].pc[c][timep].state=1;
// strcpy(wday[top].pc[c][timep].cst.name,s.substr(0,ite1).c_str());
// strcpy(wday[top].pc[c][timep].cst.tel,s.substr(ite1+1,ite2-ite1-1).c_str());
// }else{
// top++;
// ite1 = s.find_first_of(',');
// wday[top].dd.year=Deal(s.substr(0,ite1));
// ite2 = s.find(',',ite1+1);
// wday[top].dd.month=Deal(s.substr(ite1+1,ite2-ite1-1));
// ite3 = s.find(',',ite2+1);
// wday[top].dd.day=Deal(s.substr(ite2+1,ite3-ite2-1));
// }
// }}else{top++;ite1 = line.find_first_of(',');wday[top].dd.year=Deal(line.substr(0,ite1));ite2 = line.find(',',ite1+1);wday[top].dd.month=Deal(line.substr(ite1+1,ite2-ite1-1));ite3 = line.find(',',ite2+1);wday[top].dd.day=Deal(line.substr(ite2+1,ite3-ite2-1));}}reservation.close();
}//写文件
void Write(){// 打开Past文件,以追加的形式写入当天的上机信息past.open("Past.txt", ios::app);if (past.is_open()) {// 遍历当天的电脑和时间段,如果状态为2(正在上机),则写入信息for (int i = 0; i < 20; i++) {for (int j = 0; j < 6; j++) {if (wday[0].pc[i][j].state == 2) {past << wday[0].dd.year << ","<< wday[0].dd.month << ","<< wday[0].dd.day << ","<< wday[0].pc[i][j].cst.name << ","<< wday[0].pc[i][j].cst.tel << ","<< i + 1 << ","<< j + 1 << endl;}}}past.close();} else {cerr << "无法打开Past.txt文件进行写入。" << endl;}// 打开Reservation文件,以覆盖的形式写入预约信息reservation.open("Reservation.txt", ios::trunc | ios::out);if (reservation.is_open()) {// 遍历预约数组,写入所有预约信息for (int k = 0; k < 15; k++) {reservation << wday[k].dd.year << ","<< wday[k].dd.month << ","<< wday[k].dd.day << "\n";for (int i = 0; i < 20; i++) {for (int j = 0; j < 6; j++) {if (wday[k].pc[i][j].state == 1) { // 如果状态为1(已预约)reservation << wday[k].pc[i][j].cst.name << ","<< wday[k].pc[i][j].cst.tel << ","<< i + 1 << ","<< j + 1 << endl;}}}}reservation.close();} else {cerr << "无法打开Reservation.txt文件进行写入。" << endl;}
}
int main(){Read();while(1){system("cls");Print_Menu();printf("请选择你想做的操作:");int c;scanf("%d",&c);getchar();if(c==1) book_PC();else if(c==2) Exit_PC();else if(c==3) Go_PC();else if(c==4) View_Reservations();else if(c==5){Write();exit(0);}else{printf("选择错误!\n");system("pause");}}return 0;
}
嗨,我是[LucianaiB](https://lucianaib.blog.csdn.net/ “LucianaiB”)。如果你觉得我的分享有价值,不妨通过以下方式表达你的支持:👍 点赞来表达你的喜爱,📁 关注以获取我的最新消息,💬 评论与我交流你的见解。我会继续努力,为你带来更多精彩和实用的内容。
点击这里👉[LucianaiB](https://lucianaib.blog.csdn.net/ “LucianaiB”) ,获取最新动态,⚡️ 让信息传递更加迅速。
相关文章:
C语言之机房机位预约系统
🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 C语言之机房机位预约系统 目录 博客:机房机位预约系统设计与实现 系统功能概述…...
中间件--ClickHouse-14--案例-3-其他案例思路概述
1、广告投放效果分析 案例背景: 一家广告平台需要分析广告的点击、曝光、转化等数据,以优化广告投放策略并提升 ROI(投资回报率)。 解决方案: 数据接入:将广告投放相关的数据(如曝光、点击、…...
saas是什么?它做什么用的。及和Paas和laas有什么区别
Saas是什么?它做什么用的。及和Paas和laas有什么区别 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是行业内容。前后每一小节的内容是存在的有:学习and理解的关联性,希望对您有用~ 文…...
Qt基础005(文件操作后续)
文章目录 QFileDialogQFileDialog打开开发案例QFileDialog保存开发案例实现文件打开功能开发流程打开功能优化 QComboBoxQListExtraSelection 简介 QFileDialog QFileDialog打开开发案例 #include <QApplication> #include <QFileDialog> #include <QStringLi…...
松灵Cobot Magic双臂具身遥操机器人(基于ROS的定位建图与协同导航技术)
摘要 本文以CobotMagic可移动协作机器人为研究对象,从硬件架构设计、软件系统架构、多传感器融合定位建图系统、智能导航系统协同机制四个维度,深入解析机器人系统工作原理。重点研究多传感器融合定位建图系统实现原理,结合实测数据验证系统…...
AI——神经网络以及TensorFlow使用
文章目录 一、TensorFlow安装二、张量、变量及其操作1、张量Tensor2、变量 三、tf.keras介绍1、使用tf.keras构建我们的模型2、激活函数1、sigmoid/logistics函数2、tanh函数3、RELU函数4、LeakReLu5、SoftMax6、如何选择激活函数 3、参数初始化1、bias偏置初始化2、weight权重…...
实现对象之间的序列化和反序列化
1.什么是序列化? 在项目的开发中,为了让前端更好的分析后端返回的结果,我们一般会将返回的信息进行序列化,序列化就是将返回对象的状态信息转换为一种标准化的格式,方便在网络中传输也方便打印日志时号观察࿰…...
QML中日期处理类
在 QML 中处理日期和时间主要使用 JavaScript 的 Date 对象以及 Qt 提供的一些相关功能。以下是常用的日期处理方式: 1. JavaScript Date 对象 QML 可以直接使用 JavaScript 的 Date 对象: qml // 创建当前日期时间 var currentDate new Date()// 创…...
基于docker-java封装的工具类
基于docker-java封装的工具类 背景环境工具类 背景 写OJ系统时需要用docker作为代码沙箱使用,顺手封装了一个工具类,给自己做个笔记,如果可以的话也希望帮助到其他人。 环境 docker 26.1.4docker-java 3.4.2docker-java-transport-httpcli…...
windows docker desktop 无法访问容器端口映射
为什么使用docker desktop访问映射的端口失败,而其端口对应的服务是正常的? 常见问题,容器的防火墙没有关闭!!! 以centos7为例,默认情况下防火墙处于开启状态: 这下访问就OK了...
ReentrantReadWriteLock读写锁
一、锁的分类 这里不会对Java中大部分的分类都聊清楚,主要把 **互斥,共享** 这种分类聊清楚。 Java中的互斥锁,synchronized,ReentrantLock这种都是互斥锁。一个线程持有锁操作时,其他线程都需要等待前面的线程释放锁…...
Vue.js 入门教程
Vue.js 入门教程 Vue.js 是一款非常流行的前端 JavaScript 框架,适用于构建用户界面。它的设计思想是尽可能简单、灵活,易于与其他库或现有项目整合。本文将从最基础的概念开始,逐步引导你学习 Vue.js。 一、Vue.js 基础概念 1.1 什么是 V…...
解决Docker 配置 daemon.json文件后无法生效
vim /etc/docker/daemon.json 在daemon中配置一下dns {"registry-mirrors": ["https://docker.m.daocloud.io","https://hub-mirror.c.163.com","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","ht…...
wpf stylet框架 关于View与viewmodel自动关联绑定的问题
1.1 命名规则 Aview 对应 AVIewModel, 文件夹 views 和 viewmodels 1.2 需要注册服务 //RootViewModel是主窗口 public class Bootstrapper : Bootstrapper<RootViewModel>{/// <summary>/// 配置IoC容器。为数据共享创建服务/// </summary…...
车载测试用例开发-如何平衡用例覆盖度和测试效率的方法论
1 摘要 在进行车载测试用例编写时,会遇到多个条件导致用例排列组合爆炸的情况,但是为了产品测试质量,我们又不得不保证用例设计的需求覆盖度,这样又会使得测试周期非常长。我们如何平衡效率和测试质量?本文进行了一些…...
leetcode(01)森林中的兔子
今天开始记录刷题的过程,每天记录自己刷题的题目和自己的解法,欢迎朋友们给出更多更好的解法。 森林中的兔子 森林中有未知数量的兔子,提问其中若干只兔子“还有多少只兔子与你(被提问的兔子)颜色相同”。将答案收集到…...
人工智能-机器学习其他技术(决策树,异常检测,主成分分析)
决策树 一种对实例进行分类的树形结构,通过多层判断区分目标所属类别 本质:通过多层判断,从训练数据集中归纳出一组分类规则 优点: 计算量校,运算速度快 易于理解 缺点: 忽略属性间的相关性 样本分布不均时…...
AIGC通信架构深度优化指南
AIGC通信架构深度优化指南 标题:《百亿参数大模型如何高效通信?揭秘AIGC系统的协议层设计艺术》 副标题:从分布式训练到多模态推理,构建高可靠AI通信系统 1. AIGC典型通信场景 1.1 分布式模型训练参数同步 sequenceDiagram训练…...
精益数据分析(7/126):打破创业幻想,拥抱数据驱动
精益数据分析(7/126):打破创业幻想,拥抱数据驱动 在创业的道路上,我们都怀揣着梦想,但往往容易陷入自我编织的幻想中。我希望通过和大家一起学习《精益数据分析》,能帮助我们更清醒地认识创业过…...
Android Gradle多渠道打包
目录 1.多渠道打包是什么2.为什么需要多渠道打包3.多渠道配置VariantproductFlavorsbuildTypes 3.构建变体组合关于组合 4.渠道过滤5.渠道资源资源文件资源合并规则代码文件SourceSets 6. 渠道依赖项7.渠道统计meta-dataBuildConfig 8.管理渠道 1.多渠道打包是什么 多聚道打包…...
Day58 | 179. 最大数、316. 去除重复字母、334. 递增的三元子序列
179. 最大数 题目链接:179. 最大数 - 力扣(LeetCode) 题目难度:中等 代码: class Solution {public String largestNumber(int[] nums) {String[] strsnew String[nums.length];for(int i0;i<nums.length;i)str…...
LabVIEW发电机励磁系统远程诊断
变流器在风电系统中承担电能转换与控制的关键角色。它将发电机输出的低频、可变交流,通过整流、逆变等环节转为频率、电压稳定的交流,以满足电网接入要求;同时,根据实时风速调整发电机转速,实现最大功率追踪。 在某…...
性能比拼: Go vs Bun
本内容是对知名性能评测博主 Anton Putra Go (Golang) vs. Bun: Performance (Latency - Throughput - Saturation - Availability) 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 我对 Bun 在之前的基准测试中的出色表现感到惊讶,因此我决定将它与 Go …...
Kubernetes相关的名词解释Dashboard界面(6)
什么是Kubernetes Dashboard? Kubernetes Dashboard 是一个基于 Web 的用户界面,用于管理 Kubernetes 集群。它是 Kubernetes 官方提供的可视化工具,允许用户通过直观的图形界面而不是命令行来部署、管理和监控集群中的应用程序。 Dashboard…...
Linux网络编程 TCP---并发服务器:多进程架构与端口复用技术实战指南
知识点1【并发服务器—多进程版】 并发服务器:服务器可以同时服务多个客户端 首先复习一下服务器的创建过程(如下图) 1、监听套接字(套接字→绑定→监听(连接队列)) 2、利用accept从连接队列…...
(done) 吴恩达版提示词工程 1. 引言
url: https://www.bilibili.com/video/BV1Z14y1Z7LJ/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 LLM 有两种: 1.基础 LLM,通过文本训练数据预测后面的内容。 这种 LLM 当你给它提问:What is…...
uniapp微信小程序实现sse
微信小程序实现sse 注:因为微信小程序不支持sse请求,因为后台给的是分包的流,所以我们就使用接受流的方式,一直接受,然后把接受的数据拿取使用。这里还是使用uniapp的原生请求。 上代码 //注意:一定要下…...
【TeamFlow】3 Rust 与 WebAssembly (Wasm) 深度应用指南
WebAssembly 是一种低级的类汇编语言,能在现代浏览器中高效执行。Rust 因其无 GC、内存安全和卓越性能,成为编译到 Wasm 的理想语言。 一、为什么选择 Rust Wasm 性能优势:Rust 生成的 Wasm 代码执行效率接近原生 内存安全:避免…...
C 语言的未来:在变革中坚守与前行
C 语言,作为编程语言领域的一位 “老将”,自诞生以来就一直扮演着至关重要的角色。历经数十年的发展,它的影响力依然广泛而深远。在科技飞速发展的今天,新的编程语言如雨后春笋般不断涌现,C 语言的未来发展走向成为了众…...
SQL注入之information_schema表
1 information_schema表介绍: information_schema表是一个MySQL的系统数据库,他里面包含了所有数据库的表名 SQL注入中最常见利用的系统数据库,经常利用系统数据库配合union联合查询来获取数据库相关信息,因为系统数据库中所有信…...
android framework开发的技能要求
作为Android Framework开发工程师,需要具备深入的系统底层理解能力和对Android架构的全面认知。以下是核心技能要求,分为技术能力和软实力两大方向: 一、核心技术能力 Android系统架构深度掌握 Binder机制:理解Binder驱动、ServiceManager、AIDL跨进程通信原理,能分析Bind…...
AWS EC2完全指南:如何快速搭建高性能云服务器?
一、什么是AWS EC2?云时代的虚拟服务器革命 AWS Elastic Compute Cloud(EC2)作为全球领先的云服务器解决方案,正在重新定义虚拟服务器的可能性。与传统VPS相比,EC2提供: 秒级弹性扩展:CPU/RAM按…...
go环境安装mac
下载go安装包:https://golang.google.cn/dl/ 找到对应自己环境的版本下载。 注意有二进制的包,也有图形界面安装的包。图形界面直接傻瓜式点就行了。 二进制的按照下面操作: 1、下载二进制包。 2、将下载的二进制包解压至 /usr/local目录…...
Python实现对大批量Word文档进行批量自动化排版(15)
前言 本文是该专栏的第15篇,后面会持续分享Python办公自动化干货知识,记得关注。 在本专栏上一篇文章《Python实现对目标Word文档进行自动化排版【4万字精讲】(14)》中,笔者已经详细介绍“基于Python,实现对目标docx格式的word文档进行自动化排版”的实战教学(文章附带…...
嵌入式面试题解析:二维数组,内容与总线,存储格式
在嵌入式系统领域,扎实掌握基础概念是应对面试的关键。本文通过典型面试题,详细解析核心知识,梳理易错点,并补充常见面试题,助力新手快速入门。 一、二维数组元素地址计算 题目 若二维数组 arr[0..M-1][0..N-1] 的首…...
【iOS】alloc init new底层原理
目录 前言 alloc alloc核心操作 cls->instanceSize(extraBytes) calloc obj->initInstanceIsa init 类方法: 实例方法: new 前言 笔者最近在进行对OC语言源码的学习,学习源码的过程中经常会出现一些从来没有遇见过的函数&…...
解决vscode找不到Python自定义模块,报错No module named ‘xxx‘
1、 首先在.vscode下的launch.json中添加"env": {“PYTHONPATH”: “${workspaceRoot}”} {"version": "0.2.0","configurations": [{省略其他配置"env": {"PYTHONPATH": "${workspaceRoot}"}}] }2、 …...
【某比特币网址请求头部sign签名】RSA加密逆向分析
目标:aHR0cDovL21lZ2FiaXQudmlwL21hcmtldA 直接搜索sign不方便定位,可以换个思路搜asi_uuid或者user_info 为什么搜这个,因为都是请求头里面的参数,基本上会在一起 实际上就是Object(h.a)((new Date).getTime()) 直接在这里打断点…...
【Docker项目实战】使用Docker部署Jupyter Notebook服务
【Docker项目实战】使用Docker部署Jupyter Notebook服务 一、 Jupyter Notebook介绍1.1 Jupyter Notebook 简介1.2 主要特点1.3 主要使用场景二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compos…...
Oracle高级语法篇 - 用户与角色关系
在Oracle数据库中,用户和角色是权限管理的核心概念。用户是数据库的使用者,而角色则是权限的集合。通过合理地分配角色给用户,可以简化权限管理,提高数据库的安全性和易用性。本文将详细讲解Oracle中用户和角色之间的关系…...
“小坝” 策略:始发站 buffer 控制与优化
端到端,这两个端是两个应用程序中的位置,第一个端指数据被产生处,第二个端指数据被消费处。更一般的,把数据发生的应用程序所在的主机视为数据始发站也是合理的。 网络中遍布 buffer,buffer 却是一把双刃剑的存在&…...
【esp32 点亮led】-解决不能闪烁问题
问题现象:将esp例程中的led例程下载到开发板中,led不能闪烁,串口查看,可以看到对应的led ON/led off 信息。 解决办法: 使用idf.py menuconfig 命令配置相应的引脚为GPIO模式,如下图所示,保存…...
自然语言处理(9)—— 共现词矩阵及Python实现
共现词矩阵 1. 概述2. 构建步骤3. 代码实现(Python)结语 共现词矩阵(Co-occurrence Matrix)是自然语言处理(NLP)中用于捕捉词语间语义关系的重要工具。共现矩阵通过统计词语在特定上下文窗口内的共现频率&a…...
缓存 --- Redis的三种高可用模式
缓存 --- Redis的三种高可用模式 主从复制(Replication)哨兵模式(Sentinel)集群模式(Cluster)总结对比选择建议 Redis 的高可用架构模式主要有三种:主从复制(Replication)…...
飞帆中控件数据和 Vue 双向绑定
在 Vue 中,数据的双向绑定是指在视图和数据模型之间自动保持同步。Vue 实现双向绑定的核心特性是其 响应式系统,它能够追踪数据的变化并自动更新视图,反之亦然,视图的变化也可以影响数据。 Vue 提供了几种方式来实现数据双向绑定&…...
【外研在线-注册/登录安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
实现AWS Data Pipeline安全地请求企业内部API返回数据
需要编写一段Data Pipeline在AWS云上运行,它需要访问企业内部的API获取JSON格式的数据,企业有网关和防火墙,API有公司的okta身份认证,通过公司的域账号来授权访问,现在需要创建一个专用的域账号,让Data Pip…...
AI书籍大模型微调-基于亮数据获取垂直数据集
大模型的开源,使得每位小伙伴都能获得AI的加持,包括你可以通过AIGC完成工作总结,图片生成等。这种加持是通用性的,并不会对个人的工作带来定制的影响,因此各个行业都出现了垂直领域大模型。 垂直大模型是如何训练出来…...
cloudstudio学习笔记之openwebui
代码获取 git clone 参考资料 openwebui官网 https://docs.openwebui.com/getting-started/advanced-topics/development 后端启动 cd backend pip install -r requirements.txt -U sh dev.sh后端启动成功后的界面 在cloudstudio提供的vscode弹出的提示中打开浏览器并在末…...
Linux安装mysql_exporter
mysqld_exporter 是一个用于监控 MySQL 数据库的 Prometheus exporter。可以从 MySQL 数据库的 metrics_schema 收集指标,相关指标主要包括: MySQL 服务器指标:例如 uptime、version 等数据库指标:例如 schema_name、table_rows 等表指标:例如 table_name、engine、…...