大一下c语言课程设计
//
// main.c
// 高级语言课程设计图书管理系统
//
// Created by 蔡星旖 on 2022/8/1.
//
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
using namespace std;
//管理员用户:账号:888888, 密码:123456
//读者用户:账号自主设置, 密码:自主设置
//图书信息
struct Book
{
int num;
char name[100];
char author[100];
char pub[100];
double price;
int cnt;
};
struct Stu
{
int num;
int password;
int cnt;
struct Book book;
};
struct SNode
{
struct Stu stu;
struct SNode* next;
};
typedef struct Node
{
struct Book data;
struct Node* next;
}Node, *LinkList;
struct Node* list = NULL;
struct SNode* Slist = NULL;
//创建图书表头
struct Node* createHead(void)
{
//动态内存申请
struct Node* headNode = (struct Node*)malloc(sizeof(struct Node));
headNode -> next = NULL;
return headNode;
}
//创建用户信息表头
struct SNode* createSHead(void)
{
//动态内存申请
struct SNode* headNode = (struct SNode*)malloc(sizeof(struct SNode));
headNode -> next = NULL;
return headNode;
}
//创建节点
struct Node* creatNode(struct Book data)
{
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode -> data = data;
newNode -> next = NULL;
return newNode;
}
//创建读者账户信息
struct SNode* creatReaderNode(struct Stu data)
{
struct SNode* newNode = (struct SNode*)malloc(sizeof(struct SNode));
newNode -> stu = data;
newNode -> next = NULL;
return newNode;
}
//打印链表
void printList(struct Node* headNode)
{
struct Node* pMove = headNode -> next;
printf("图书编号\t\t\t书名\t\t\t作者\t\t\t出版社\t\t\t价格\t\t\t库存\n");
while(pMove != NULL)
{
printf("%d\t\t\t%s\t\t\t%s\t\t\t%s\t\t\t%.1f\t\t\t%d\n", pMove ->data.num, pMove ->data.name, pMove ->data.author, pMove -> data.pub, pMove ->data.price, pMove -> data.cnt);
pMove = pMove -> next;
}
}
//插入:头插法插入书籍信息
void insertNodeByHead(struct Node* headNode, struct Book data)
{
struct Node* newNode = creatNode(data);
newNode -> next = headNode -> next;
headNode -> next = newNode;
}
//插入:头插法插入读者账户信息
void insertNodeReader(struct SNode* headNode, struct Stu a)
{
struct SNode* newNode = creatReaderNode(a);
newNode -> next = headNode -> next;
headNode -> next = newNode;
}
//写文件操作
void save(const char* fileName, struct Node* headNode)
{
FILE * fp = fopen(fileName,"w");
struct Node* pMove = headNode -> next;
while(pMove != NULL)
{
fprintf(fp, "%d\t%s\t%s\t%s\t%.1lf\t%d\n", pMove -> data.num, pMove -> data.name, pMove ->data.author, pMove -> data.pub, pMove -> data.price, pMove -> data.cnt);
pMove = pMove -> next;
}
fclose(fp);
}
//读图书文件操作
void readFile(const char* fileName, struct Node* headNode)
{
FILE * fp = fopen(fileName,"r");
if(fp == NULL)
{
//第一次打开程序文件是不存在的
fp = fopen(fileName, "w+");
}
struct Book tmp;
while(fscanf(fp, "%d\t%s\t%s\t%s\t%lf\t%d\n", &tmp.num, tmp.name, tmp.author, tmp.pub, &tmp.price, &tmp.cnt) != EOF)
{
insertNodeByHead(list, tmp);
}
fclose(fp);
}
void save2(const char* fileName, struct SNode* headNode)
{
FILE * fp = fopen(fileName,"w");
struct SNode* pMove = headNode -> next;
while(pMove != NULL)
{
fprintf(fp,"%d\t%d\t%d\t%d\t%s\t%s\t%s\t%.lf\t%d\n", pMove ->stu.num, pMove ->stu.password, pMove ->stu.cnt, pMove ->stu.book.num, pMove ->stu.book.name, pMove ->stu.book.author, pMove ->stu.book.pub, pMove ->stu.book.price, pMove ->stu.book.cnt);
pMove = pMove -> next;
}
fclose(fp);
}
void readFile2(const char* fileName, struct SNode* headNode)
{
FILE * fp = fopen(fileName,"r");
if(fp == NULL)
{
//第一次打开程序文件是不存在的
fp = fopen(fileName, "w+");
}
struct Stu tmp;
while(fscanf(fp, "%d\t%d\t%d\t%d\t%s\t%s\t%s\t%lf\t%d\n",&tmp.num, &tmp.password, &tmp.cnt, &tmp.book.num, tmp.book.name, tmp.book.author, tmp.book.pub, &tmp.book.price, &tmp.book.cnt) != EOF)
{
insertNodeReader(Slist, tmp);
}
fclose(fp);
}
//检验密码是否正确
int denglu(struct SNode* headNode,int zhanghao, int mima)
{
struct SNode* pMove = headNode ->next;
while(pMove != NULL)
{
if(pMove ->stu.num == zhanghao)
{
if(pMove ->stu.password == mima)
return 1;
else
return 0;
}
pMove = pMove -> next;
}
if(pMove == NULL) return 2;
return 0;
}
//修改密码
int xiugai(struct SNode* headNode,int zhanghao, int mima1, int newmima)
{
struct SNode* pMove = headNode ->next;
while(pMove != NULL)
{
if(pMove ->stu.num == zhanghao)
{
if(pMove ->stu.password == mima1)
{
pMove -> stu.password = newmima;
return 1;
}
else
return 0;
}
pMove = pMove -> next;
}
if(pMove == NULL) return 2;
return 0;
}
//指定书籍编号删除
void deletebynum(struct Node* headNode, int num)
{
struct Node* LDNode = headNode;
struct Node* DNode = headNode -> next;
while(DNode != NULL && DNode -> data.num != num)
{
LDNode = DNode;
DNode = DNode -> next;
}
if(DNode == NULL)
return ;
else
{
LDNode -> next = DNode -> next;
free(DNode);
DNode = NULL;
}
}
//指定作者删除
void deletebyname(struct Node* headNode, char* bookname)
{
struct Node* LDNode = headNode;
struct Node* DNode = headNode -> next;
while(DNode != NULL && strcmp(bookname, DNode ->data.name) )
{
LDNode = DNode;
DNode = DNode -> next;
}
if(DNode == NULL)
return ;
else
{
LDNode -> next = DNode -> next;
free(DNode);
DNode = NULL;
}
}
//按书籍编号进行排序
void BubbleSortBynum(struct Node* headNode)
{
for(struct Node* p = headNode -> next; p != NULL; p = p -> next)
{
for(struct Node* q = headNode -> next; q -> next!= NULL; q = q -> next)
{
if (q->data.num > q->next->data.num) {
struct Book tmp = q->data;
q->data = q->next->data;
q->next->data = tmp;
}
}
}
printList(headNode);
}
//按书籍价格进行排序,交换数据,并不改变节点之间的指针关系
void BubbleSortByprice(struct Node* headNode)
{
for(struct Node* p = headNode -> next; p != NULL; p = p -> next)
{
for(struct Node* q = headNode -> next; q -> next != NULL; q = q -> next)
{
if(q -> data.price > q -> next -> data.price)
{
struct Book tmp = q->data;
q->data = q->next->data;
q->next->data = tmp;
}
}
}
printList(headNode);
}
//按书籍库存数量进行排序
void BubbleSortBycnt(struct Node* headNode)
{
for(struct Node* p = headNode -> next; p != NULL; p = p -> next)
{
for(struct Node* q = headNode -> next; q -> next != NULL; q = q -> next)
{
if(q -> data.cnt > q -> next -> data.cnt)
{
struct Book tmp = q->data;
q->data = q->next->data;
q->next->data = tmp;
}
}
}
printList(headNode);
}
//两个链表划分的过程
LinkList Split(LinkList head)
{
if (head == NULL) {
return head;
}
LinkList prev = NULL;
LinkList slow = head;
LinkList fast = head;
// 注意这里了要判断fast.next 是否为空
while (fast && fast -> next) {
fast = fast -> next -> next;
prev = slow;
slow = slow -> next;
}
prev -> next = NULL; // 断开链表,返回后面一段的第一个节点
return slow;
}
//两个有序链表归并的过程
LinkList merge(LinkList left, LinkList right) {
LinkList head = new Node;
LinkList cur = head;
while (left != NULL && right != NULL) {
if (left -> data.num > right -> data.num) {
cur -> next = right;
right = right -> next;
} else {
cur -> next = left;
left = left -> next;
}
cur = cur -> next;
}
while (left != NULL) {
cur -> next = left;
cur = cur -> next;
left = left -> next;
}
while (right != NULL) {
cur -> next = right;
cur = cur -> next;
right = right -> next;
}
return head -> next;
}
//按书籍编号进行归并排序
LinkList sortList(LinkList head) {
if (head == NULL || head -> next == NULL) {
// 为空 或 只有一个链表节点均不用排序
return head;
}
LinkList mid = Split(head);
LinkList left = sortList(head);
LinkList right = sortList(mid);
return merge(left, right);
}
//按书名查询书籍
struct Node* SearchByname(struct Node* headNode, char* Bookname )
{
struct Node* pMove = NULL;
for(pMove = headNode -> next; pMove != NULL; pMove = pMove -> next)
{
if(strcmp(pMove -> data.name, Bookname) == 0)
{
break;
}
}
return pMove;
}
//按书籍编号查询书籍
struct Node* SearchBynum(struct Node* headNode, int num )
{
struct Node* pMove = NULL;
for( pMove = headNode -> next; pMove != NULL; pMove = pMove -> next)
{
if(pMove -> data.num == num)
{
break;
}
}
return pMove;
}
//找到借阅的指针
struct SNode* borrow2(struct SNode* headNode,int zhanghao)
{
struct SNode* pMove = headNode ->next;
while(pMove != NULL)
{
if(pMove ->stu.num == zhanghao)
{
return pMove;
}
}
return pMove;
}
//按书名借书
void borrowByname(struct Node* headNode, struct SNode* headSNode, char* name, int zhanghao)
{
struct Node* tmp = SearchByname(headNode, name);
if(tmp != NULL)
{
struct SNode* reader = borrow2(Slist, zhanghao);
if(tmp -> data.cnt > 0)
{
reader -> stu.book = tmp->data;
reader -> stu.cnt = 1;
tmp -> data.cnt --;
save("bookinfo.txt", list);
save2("reader.txt", Slist);
cout << "借书成功" << endl;
}
else
{
cout << "馆内该图书已全部借出" << endl;
}
}
else
{
cout << "图书馆内没有您要借阅的这本图书!" << endl;
}
}
//按图书编号借书
void borrowBynum(struct Node* headNode, struct SNode* headSNode, int num, int zhanghao)
{
struct Node* tmp = SearchBynum(headNode, num);
if(tmp != NULL)
{
struct SNode* reader = borrow2(Slist, zhanghao);
if(tmp -> data.cnt > 0)
{
reader -> stu.book = tmp->data;
reader -> stu.cnt ++;
tmp -> data.cnt --;
save("bookinfo.txt", list);
save2("reader.txt", Slist);
cout << "借书成功" << endl;
}
else
{
cout << "馆内该图书已全部借出" << endl;
}
}
else
{
cout << "图书馆内没有您要借阅的这本图书!" << endl;
}
}
//按书名还书
void sendByname(struct Node* headNode, struct SNode* headSNode, char* name, int zhanghao)
{
struct Node* tmp = SearchByname(headNode, name);
if(tmp != NULL)
{
struct SNode* reader = borrow2(Slist, zhanghao);
reader -> stu.cnt = 0;
reader -> stu.book ={0, "/0", "/0", "/0", 0, 0};
tmp->data.cnt ++;
cout << "还书成功" << endl;
save("bookinfo.txt", list);
save2("reader.txt", Slist);
}
else
{
cout << "此书不是本图书馆藏书!" << endl;
}
}
//按图书编号还书
//按书名还书
void sendBynum(struct Node* headNode, struct SNode* headSNode, int num, int zhanghao)
{
struct Node* tmp = SearchBynum(headNode, num);
if(tmp != NULL)
{
struct SNode* reader = borrow2(Slist, zhanghao);
reader -> stu.cnt = 0;
reader -> stu.book ={0, "/0", "/0", "/0", 0, 0};
tmp->data.cnt ++;
cout << "还书成功" << endl;
save("bookinfo.txt", list);
save2("reader.txt", Slist);
}
else
{
cout << "此书不是本图书馆藏书!" << endl;
}
}
//图书馆界面、菜单
void allmenu(void)
{
printf("-------------------------\n");
printf("欢迎来到图书管理系统\n");
printf("\t0.退出系统\n");
printf("\t1.登记书籍\n");
printf("\t2.浏览书籍\n");
printf("\t3.查询书籍\n");
printf("\t4.书籍排序\n");
printf("\t5.删除书籍\n");
printf("-------------------------\n");
printf("请输入0~7选择您需要的业务\n");
}
//菜单按键
void allkeydown(void) {
int k = 0;
//临时变量存储书籍信息
struct Book tmpBook;
scanf("%d", &k);
if (k == 0)
{
printf("\t退出\n");
printf("\t退出成功\n");
system("pause");
exit(0);
}
else if (k == 1)
{
printf("\t登记\n");
printf("请输入书籍的信息:编号 书名 作者 出版社 价格 数量:\n");
scanf("%d%s%s%s%lf%d", &tmpBook.num, tmpBook.name, tmpBook.author, tmpBook.pub, &tmpBook.price, &tmpBook.cnt);
insertNodeByHead(list, tmpBook);
save("bookinfo.txt", list);
cout << "添加成功" << endl;
}
else if (k == 2)
{
printf("\t浏览\n");
printList(list);
}
else if (k == 3)
{
printf("\t查询\n");
printf("请输入您要选择的查询方式:\n");
printf("1.按书名查找\n");
printf("2.按书籍编号查找\n");
int k2;
scanf("%d", &k2);
if (k2 == 1)
{
printf("请输入您要查找的书名:\n");
scanf("%s", tmpBook.name);
struct Node *p = SearchByname(list, tmpBook.name);
if (p != NULL)
{
printf("您要查找的书籍已找到!\n");
printf("您要查找的书籍信息如下:\n");
printf("%d\t%s\t%s\t%s\t%.1lf\t%d\n", p->data.num, p->data.name, p->data.author, p->data.pub,
p->data.price, p->data.cnt);
}
else
{
printf("很抱歉, 您要查找的书籍未找到\n");
}
}
else if (k2 == 2)
{
printf("请输入您要查询书籍的编号:\n");
scanf("%d", &tmpBook.num);
struct Node *p = SearchBynum(list, tmpBook.num);
if (p != NULL)
{
printf("您要查找的书籍已找到!\n");
printf("您要查找的书籍信息如下:\n");
printf("%d\t%s\t%s\t%s\t%.1lf\t%d\n", p->data.num, p->data.name, p->data.author, p->data.pub,
p->data.price, p->data.cnt);
}
else
{
printf("很抱歉, 您要查找的书籍未找到\n");
}
}
else
{
printf("您的输入有误, 查找失败!\n");
}
}
else if(k == 4)
{
printf("\t排序\n");
printf("请选择您要排序的方式:\n");
printf("1.按书籍的序号进行排序\n");
printf("2.按书籍的价格进行排序\n");
printf("3.按书籍的库存数量进行排序\n");
int m = 0;
scanf("%d", &m);
if (m == 1)
{
BubbleSortBynum(list);
}
else if (m == 2)
{
BubbleSortByprice(list);
}
else if (m == 3)
{
BubbleSortBycnt(list);
}
else
{
printf("输入错误\n");
}
}
else if(k == 5)
{
printf("\t删除\n");
printf("请选择删除书籍的方式:\n");
printf("1.按书籍的编号删除\n");
printf("2.按书名删除\n");
int k1;
scanf("%d", &k);
if (k == 1)
{
printf("请输入您要删除书籍的编号:\n");
int num1 = 0;
scanf("%d", &num1);
deletebynum(list, num1);
save("bookinfo.txt", list);
}
else if (k == 2)
{
printf("请输入您要删除书籍的书名:\n");
char ch[100];
scanf("%s", ch);
deletebyname(list, ch);
save("bookinfo.txt", list);
printf("删除成功!\n");
}
else
{
printf("您的输入有误, 删除失败!\n");
}
}
else
{
printf("\t输入错误\n");
}
}
void secondmenu(void)
{
printf("-------------------------\n");
printf("欢迎来到图书管理系统\n");
printf("0.退出系统\n");
printf("1.浏览图书\n");
printf("2.查找图书\n");
printf("3.借阅图书\n");
printf("4.归还图书\n");
printf("-------------------------\n");
}
void secondkey(int zhanghao) {
int k = 0;
cin >> k;
struct Book tmpBook;
if (k == 0)
{
printf("\t退出\n");
printf("\t退出成功\n");
system("pause");
exit(0);
}
else if (k == 1)
{
printf("\t浏览\n");
printList(list);
}
else if (k == 2)
{
printf("\t查询\n");
printf("请输入您要选择的查询方式:\n");
printf("1.按书名查找\n");
printf("2.按书籍编号查找\n");
int k2;
scanf("%d", &k2);
if (k2 == 1)
{
printf("请输入您要查找的书名:\n");
scanf("%s", tmpBook.name);
struct Node *p = SearchByname(list, tmpBook.name);
if (p != NULL)
{
printf("您要查找的书籍已找到!\n");
printf("您要查找的书籍信息如下:\n");
printf("%d\t%s\t%s\t%s\t%.1lf\t%d\n", p->data.num, p->data.name, p->data.author, p->data.pub,
p->data.price, p->data.cnt);
}
else
{
printf("很抱歉, 您要查找的书籍未找到\n");
}
}
else if (k2 == 2)
{
printf("请输入您要查询书籍的编号:\n");
scanf("%d", &tmpBook.num);
struct Node *p = SearchBynum(list, tmpBook.num);
if (p != NULL)
{
printf("您要查找的书籍已找到!\n");
printf("您要查找的书籍信息如下:\n");
printf("%d\t%s\t%s\t%s\t%.1lf\t%d\n", p->data.num, p->data.name, p->data.author, p->data.pub,
p->data.price, p->data.cnt);
}
else
{
printf("很抱歉, 您要查找的书籍未找到\n");
}
}
}
else if (k == 3)
{
printf("\t借阅\n");
cout << "请选择您要借阅的方式!" << endl;
cout << "1.按书名借阅" << endl;
cout << "2.按图书编号借阅" << endl;
int key = 0;
cin >> key;
if (key == 1)
{
cout << "请输入您要借阅的书名" << endl;
char tmpbook[100];
cin >> tmpbook;
borrowByname(list, Slist, tmpbook, zhanghao);
}
else if (key == 2)
{
cout << "请输入您要借阅图书的编号" << endl;
int num;
cin >> num;
borrowBynum(list, Slist, num, zhanghao);
}
}
else if (k == 4)
{
printf("\t归还\n");
cout << "请您选择归还的方式" << endl;
cout << "1.按书名归还 " << endl;
cout << "2.按图书编号归还" << endl;
int key = 0;
cin >> key;
if (key == 1)
{
cout << "请输入您要归还的书名" << endl;
char tmpbook[100];
cin >> tmpbook;
sendByname(list, Slist, tmpbook, zhanghao);
} else if (key == 2)
{
cout << "请输入您要归还图书的编号" << endl;
int num;
cin >> num;
sendBynum(list, Slist, num, zhanghao);
}
}
else
{
printf("您的输入有误, 查找失败!\n");
}
}
void mainmenu(void)
{
printf("-------------------------\n");
printf("欢迎来到图书管理系统\n");
printf("请登陆您的账户\n");
printf("如果您是新用户请选择注册您的账号\n");
printf("0.注册账号\n");
printf("1.登陆管理员账号\n");
printf("2.登陆读者账号\n");
printf("3.修改密码\n");
printf("-------------------------\n");
}
void mainkey()
{
int k = 0;
cin >> k;
if(k == 0)
{
cout << "请输入您要注册的账号和密码, 要求都是整数" << endl;
int zhanghao, mima;
cin >> zhanghao >> mima;
struct Stu tmp;
tmp = {zhanghao, mima, 0, 0, "/0", "/0", "/0", 0.0, 0};
insertNodeReader(Slist,tmp);
save2("reader.txt", Slist);
cout << "注册成功!请您登陆" << endl;
}
else if(k == 2)
{
cout << "请输入您的账号和密码" << endl;
int zhanghao, mima;
cin >> zhanghao >> mima;
int res = denglu(Slist,zhanghao, mima);
if(res == 1)
{
cout << "登陆成功" << endl;
while(1)
{
secondmenu();
secondkey(zhanghao);
system("pause");
system("cls");
}
}
else if(res == 0)
{
cout << "您输入的密码错误" << endl;
}
else if(res == 2)
{
cout << "您输入的账户错误或您还未注册账户" << endl;
}
}
else if(k == 1)
{
cout << "请输入管理员账号和密码:" << endl;
int num, password;
cin >> num >> password;
if(num == 888888 && password == 123456)
{
cout << "登陆成功" << endl;
while(1)
{
allmenu();
allkeydown();
system("pause");
system("cls");
}
}
else
{
cout << "登陆错误" << endl;
}
}
else if(k == 3)
{
cout << "请输入您原来的账号,密码,以及您要修改的新密码,以便验证您的身份" << endl;
int zhanghao, mima, newmima;
cin >> zhanghao >> mima >> newmima;
int res = xiugai(Slist, zhanghao, mima, newmima);
if(res == 1)
{
cout << "修改成功!" << endl;
save2("reader.txt", Slist);
}
else
{
cout << "您输入的账号或密码有误请您检查后重试!" << endl;
}
}
}
int main(int argc, const char * argv[])
{
list = createHead();
Slist = createSHead();
readFile("bookinfo.txt", list);
readFile2("reader.txt", Slist);
while(1)
{
mainmenu();
mainkey();
system("pause");
system("cls");
}
return 0;
}
大一下c语言课程设计的更多相关文章
- Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)
#Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...
- 学生管理系统-火车订票系统 c语言课程设计
概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...
- C语言课程设计—图书管理系统
这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<std ...
- C语言课程设计(成绩管理系统)
C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 #include <stdio.h> #incl ...
- C语言课程设计
目录 实现目的 游戏玩法介绍 实现流程与作品架构 任务列表及贡献度 总结感想 作品源码与仓库地址(附页) 资料引用与出处(附页) 实现目的 2048,作为一款极其经典的游戏,从发行到现在,已经有了极多 ...
- C语言课程设计大整数运算
该大整数运算系统用于对有符号的位数不超过500位的大整数进行加.减.乘.除四则运算和计算N(0<=N<=10000)的阶乘.注意事项 : 1.操作期间,进行四则运算时若大整数为正数请 ...
- 大一C语言课程设计——班级档案管理系统
记录我在大一第二学期期末做的C语言课程毕业设计 1. 班级档案管理系统运用到的主要结构体 typedef struct birthday //出生日期{int year;int month;int d ...
- springboot+bootstrap实现图书商城管理(大三下学期课程设计)
在csdn上记一次自己的课程设计过程(已经实习两个月了.感觉这个很容易做.支付可能需要多花点时间.): 在此框架基础之上权限认证管理设置成功:https://blog.csdn.net/weixin_ ...
- C语言课程设计——电影院订票系统
1. 课题简介 大家都爱看电影,现请参考一个熟悉电影票预订系统,实现C语言版的订票系统.了解订票如何实现的.系统主要有2类用户:管理员用户和顾客用户. 管理员用户登录系统后,实现电影放映厅信息管理和电 ...
- JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
阿西吧.自从学会使用框架.再看以前写的.我真的是要死了.项目用的还不是maven.整理项目能给我搞死.更要命的是这个项目还是用eclipse写的.数据库还是SQL server.阿西吧 这个系统代码不 ...
随机推荐
- Python 学习路线图
Python 学习路线图 在这个系列笔记中,我将陆续整理自己在学习 Python 编程语言及其框架的过程中留下的笔记和代码,目的是掌握如何在生产环境中利用各种领域的第三方框架来快速开发应用程序.和大多 ...
- 大语言模型中一个调皮的EOS token
背景 最近需要做一个微调的培训,所以不可避免地需要上手一下相关的微调,而受限于机器资源,暂时没法做全参数微调,所以就尝试了目前比较火的两种高效微调方式,分别是PTuning和LoRA.模型选择得自然是 ...
- locust与jmeter测试过程及结果对比
JMeter和Locust都是强大的性能测试工具,各自拥有自己的优势和专注领域.JMeter提供了全面的功能和基于GUI的界面,适用于复杂的场景和非技术人员.相比之下,Locust采用了以代码为中心的 ...
- 理解TCP四次挥手
以AB通电话举例: A的视角 A突然说,"现在几点了",进入FIN_WAIT_1 B回,"啊,10点了",A听到后不说话,进入FIN_WAIT_2 然后B说,& ...
- 文心一言 VS 讯飞星火 VS chatgpt (67)-- 算法导论6.5 6题
文心一言 VS 讯飞星火 VS chatgpt (67)-- 算法导论6.5 6题 六.在 HEAP-INCREASE-KEY 的第 5 行的交换操作中,一般需要通过三次赋值来完成.想一想如何利用IN ...
- Cilium系列-12-启用 Pod 的 BBR 拥塞控制
系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, ...
- NAT与NAT实验
1.NAT与NAT实验 NAT(网络地址翻译) 一个数据包目的ip或者源ip为私网地址, 运营商的设备无法转发数据. 实际场景问题 如下图 201.0.0.1 公网地址? 买的 运营商给你的19 ...
- 文心一言 VS 讯飞星火 VS chatgpt (71)-- 算法导论7.1 1题
参照图 7-1的方法,说明 PARTITION在数组 A=(13,19,9,5,12,8,7,4,21,2,6,11)上的操作过程. 文心一言: PARTITION 是一种常见的快速排序算法,其目的是 ...
- AI绘画:StableDiffusion制作AI赛博机车图保姆级教程
本教程收集于:AIGC从入门到精通教程汇总 如果你具备Stable Diffusion的基础知识,那制作AI赛博机车图会更为顺畅.即便没有这个基础,只要严格按照教程的步骤执行,也能成功制作出来. 本教 ...
- MySQL 慢查询探究分析
背景: 性能测试过程中,数据库往往是造成性能瓶颈之一,而数据库瓶颈中sql 语句又是值得探究分析的一环,其中慢查询是重点优化对象,在MySQL中,慢查询是指查询执行时间较长或者消耗 较多资源的查询语句 ...