当前位置: 首页 > news >正文

学生信息管理系统(简化版)后端接口

目录

allAPI

__init__.py是空文件,目的让python知道这个文件夹是个包

ClassInfo.py

from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from API.database import get_db, Base
from sqlalchemy import Column, String, Integerapp04 = APIRouter()# 定义班级信息模型
class ClassInfo(Base):__tablename__ = 'ClassInfo'class_id = Column(String(40), primary_key=True, nullable=False)cls_rank = Column(String(40), nullable=False)head_teacher = Column(String(40), nullable=False)student_count = Column(Integer, nullable=False)# 定义班级信息视图模型
class ViewClassInfo(Base):__tablename__ = 'ViewClassInfo'class_id = Column(String(40), primary_key=True)cls_rank = Column(String(40))head_teacher = Column(String(40))student_count = Column(Integer)# 获取班级信息列表
@app04.get("/classes")
async def read_classes(db: Session = Depends(get_db)):try:classes = db.query(ViewClassInfo).all()if classes:return {"success": True, "data": classes}else:return {"success": True, "data": [], "message": "No data available"}except Exception as e:return {"success": False, "message": "Failed to fetch classes", "error": str(e)}from pydantic import BaseModel# 定义用于接收班级ID列表的 Pydantic 模型
class ClassIds(BaseModel):class_ids: list# 删除班级信息
@app04.delete("/classes")
async def delete_classes(data: ClassIds, db: Session = Depends(get_db)):not_found_ids = []  # 用于存储不存在的班级IDtry:for class_id in data.class_ids:  # 从模型中提取班级ID列表class_info = db.query(ClassInfo).filter(ClassInfo.class_id == class_id).first()if class_info:db.delete(class_info)else:not_found_ids.append(class_id)  # 如果班级ID不存在,添加到列表中if not_found_ids:raise HTTPException(status_code=404, detail=f"班级ID不存在: {', '.join(not_found_ids)}")db.commit()return {"success": True, "message": "删除成功"}except Exception as e:db.rollback()return {"success": False, "message": "删除失败", "error": str(e)}# 定义用于接收班级信息的 Pydantic 模型
class ClassInfoModel(BaseModel):class_id: strcls_rank: strhead_teacher: strstudent_count: int# 添加班级信息
@app04.post("/classes")
async def add_class(data: ClassInfoModel, db: Session = Depends(get_db)):try:# 检查班级ID是否已存在existing_class = db.query(ClassInfo).filter(ClassInfo.class_id == data.class_id).first()if existing_class:raise HTTPException(status_code=400, detail="班级ID已存在")# 添加新班级信息new_class = ClassInfo(class_id=data.class_id,cls_rank=data.cls_rank,head_teacher=data.head_teacher,student_count=data.student_count)db.add(new_class)db.commit()return {"success": True, "message": "添加成功"}except HTTPException as e:# 直接将HTTPException的详情返回给前端return {"success": False, "message": "添加失败", "error": str(e)}except Exception as e:db.rollback()return {"success": False, "message": "添加失败", "error": str(e)}

enrollment_api.py

from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from pydantic import BaseModel
from API.database import get_db, Base
from sqlalchemy import Column, String, Date# 创建API路由
app03 = APIRouter()# 定义学生学籍信息模型
class StudentEnrollment(Base):__tablename__ = 'StudentEnrollment'student_id = Column(String(8), primary_key=True, nullable=False)stu_name = Column(String(8), nullable=False)gender = Column(String(6), nullable=False)class_ = Column(String(20), nullable=False)birth_date = Column(String(80), nullable=False)school = Column(String(200), nullable=False)# 创建视图模型
class ViewStudentEnrollment(Base):__tablename__ = 'ViewStudentEnrollment'student_id = Column(String(8), primary_key=True)stu_name = Column(String(8))gender = Column(String(6))class_ = Column(String(20))birth_date = Column(String(80))school = Column(String(200))# 定义用于接收学生信息的 Pydantic 模型
class StudentEnrollmentModel(BaseModel):student_id: strstu_name: strgender: strclass_: strbirth_date: strschool: str# 获取学生学籍信息列表
@app03.get("/enrollments")
async def read_enrollments(db: Session = Depends(get_db)):try:enrollments = db.query(ViewStudentEnrollment).all()if enrollments:return {"success": True, "data": enrollments}else:return {"success": True, "data": [], "message": "No data available"}except Exception as e:return {"success": False, "message": "Failed to fetch enrollments", "error": str(e)}# 定义用于接收学号列表的 Pydantic 模型
class StudentIds(BaseModel):student_ids: list# 删除学生学籍信息
@app03.delete("/enrollments")
async def delete_enrollments(data: StudentIds, db: Session = Depends(get_db)):not_found_ids = []  # 用于存储不存在的学号try:for student_id in data.student_ids:  # 从模型中提取学号列表enrollment = db.query(StudentEnrollment).filter(StudentEnrollment.student_id == student_id).first()if enrollment:db.delete(enrollment)else:not_found_ids.append(student_id)  # 如果学号不存在,添加到列表中if not_found_ids:raise HTTPException(status_code=404, detail=f"学号不存在: {', '.join(not_found_ids)}")db.commit()return {"success": True, "message": "删除成功"}except Exception as e:db.rollback()return {"success": False, "message": "删除失败", "error": str(e)}# 添加学生学籍信息
@app03.post("/enrollments")
async def add_enrollment(data: StudentEnrollmentModel, db: Session = Depends(get_db)):try:# 检查学号是否已存在existing_enrollment = db.query(StudentEnrollment).filter(StudentEnrollment.student_id == data.student_id).first()if existing_enrollment:raise HTTPException(status_code=400, detail="学号已存在")# 添加新学生学籍信息new_enrollment = StudentEnrollment(student_id=data.student_id,stu_name=data.stu_name,gender=data.gender,class_=data.class_,birth_date=data.birth_date,school=data.school)db.add(new_enrollment)db.commit()return {"success": True, "message": "添加成功"}except HTTPException as e:# 直接将HTTPException的详情返回给前端return {"success": False, "message": "添加失败", "error": str(e)}except Exception as e:db.rollback()return {"success": False, "message": "添加失败", "error": str(e)}

LoginANDEnroll.py

from fastapi import FastAPI, HTTPException, status, Request, APIRouter, Depends
from pydantic import BaseModel
from sqlalchemy import create_engine, Column, Integer, String, DateTime, Boolean
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from API.database import SessionLocal, User, get_db  # 从 database.py 导入 SessionLocal, User 和 get_dbfrom sqlalchemy.orm import Session
from datetime import datetimeapp01 = APIRouter()# # 创建数据库连接字符串
# SQLALCHEMY_DATABASE_URL = "mysql+mysqlconnector://root:123456@localhost/datas"
# engine = create_engine(SQLALCHEMY_DATABASE_URL)
#
# # 创建会话本地工厂
# SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
#
# # 创建声明式基类
# Base = declarative_base()# 定义用户模型
# class User(Base):
#     __tablename__ = "users"
#
#     id = Column(Integer, primary_key=True, index=True)
#     username = Column(String(50), unique=True, index=True)
#     password = Column(String(50))
#     registration_date = Column(DateTime)
#     is_admin = Column(Boolean, default=False)  # 添加一个字段来判断是否为管理员# 创建数据库表
# Base.metadata.create_all(bind=engine)# # 创建一个依赖项函数来管理数据库会话
# def get_db():
#     db = SessionLocal()
#     try:
#         yield db
#     finally:
#         db.close()# 用户登录请求模型
class Login(BaseModel):username: strpassword: str# 登录接口
@app01.post("/login")
async def login(login: Login, db: Session = Depends(get_db)):if not login.username or not login.password:raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="用户名和密码不能为空")# session = SessionLocal()user = db.query(User).filter(User.username == login.username).first()if user and user.password == login.password:return {"success": True, "user_type": "admin" if user.is_admin else "user"}else:return {"success": False}  # 返回一个标准的 JSON 响应# 用户注册请求模型
class Register(BaseModel):username: strpassword: str# 然后在路由函数中使用这个依赖项
@app01.post("/register")
async def register(user: Register, db: Session = Depends(get_db)):# 检查用户是否已存在existing_user = db.query(User).filter(User.username == user.username).first()if existing_user:return {"success": False, "message": "用户已存在"}# 创建新用户new_user = User(username=user.username,password=user.password,  # 在实际应用中,应该对密码进行哈希处理registration_date=datetime.now())db.add(new_user)db.commit()db.refresh(new_user)return {"success": True, "message": "注册成功", "user_id": new_user.id}# # 定义生命周期事件处理器,事件处理器不能写在这
# async def shutdown_event(app: FastAPI) -> None:
#     await SessionLocal.close_all()
#
#
# # 注册事件处理器
# app01.add_event_handler("shutdown", shutdown_event)# # 运行应用
# if __name__ == "__main__":
#     import uvicorn
#
#     uvicorn.run(app, host="localhost", port=8000)
#     # uvicorn.run(app, host="localhost", port=63342)

student_scores.pr

from fastapi import APIRouter, HTTPException, Depends
from sqlalchemy.orm import Session
from API.database import get_db, Base
from sqlalchemy import Column, Integer, Stringapp02 = APIRouter()# 定义学生成绩模型
class StudentScoreFromView(Base):__tablename__ = 'StudentScoresWithTotalRank'student_id = Column(String, primary_key=True)stu_name = Column(String)total_score = Column(Integer)score_rank = Column(Integer)class_ = Column(String)  # 注意这里使用 class_ 而不是 class,因为 class 是 Python 的保留字# 新模型,引用实际的 StudentScores 表
class StudentScore(Base):__tablename__ = 'StudentScores'student_id = Column(String, primary_key=True)stu_name = Column(String)total_score = Column(Integer)score_rank = Column(Integer)class_ = Column(String)  # 使用 class_ 避免与 Python 关键字冲突# 获取学生成绩列表
@app02.get("/studentscores")
async def read_student_scores(db: Session = Depends(get_db)):try:scores = db.query(StudentScoreFromView).all()if scores:return {"success": True, "data": scores}else:return {"success": True, "data": [], "message": "No data available"}except Exception as e:return {"success": False, "message": "Failed to fetch scores", "error": str(e)}from pydantic import BaseModel# 定义用于接收学号列表的 Pydantic 模型
class StudentIds(BaseModel):student_ids: list# 删除学生成绩
from fastapi import HTTPException@app02.delete("/studentscores")
async def delete_student_scores(data: StudentIds, db: Session = Depends(get_db)):not_found_ids = []  # 用于存储不存在的学号try:for student_id in data.student_ids:  # 从模型中提取学号列表student_score = db.query(StudentScore).filter(StudentScore.student_id == student_id).first()if student_score:db.delete(student_score)else:not_found_ids.append(student_id)  # 如果学号不存在,添加到列表中if not_found_ids:raise HTTPException(status_code=404, detail=f"学号不存在: {', '.join(not_found_ids)}")db.commit()return {"success": True, "message": "删除成功"}except Exception as e:db.rollback()return {"success": False, "message": "删除失败", "error": str(e)}# 定义用于接收学生信息的 Pydantic 模型
class StudentScoreModel(BaseModel):student_id: strstu_name: strtotal_score: intscore_rank: intclass_: str# 添加学生成绩
@app02.post("/studentscores")
async def add_student_score(data: StudentScoreModel, db: Session = Depends(get_db)):try:# 检查学号是否已存在existing_student = db.query(StudentScore).filter(StudentScore.student_id == data.student_id).first()if existing_student:raise HTTPException(status_code=400, detail="学号已存在")# 添加新学生成绩new_student = StudentScore(student_id=data.student_id,stu_name=data.stu_name,total_score=data.total_score,score_rank=data.score_rank,class_=data.class_)db.add(new_student)db.commit()return {"success": True, "message": "添加成功"}except HTTPException as e:# 直接将HTTPException的详情返回给前端return {"success": False, "message": "添加失败", "error": str(e)}except Exception as e:db.rollback()return {"success": False, "message": "添加失败", "error": str(e)}

database.py

# 创建数据库连接字符串
SQLALCHEMY_DATABASE_URL = "mysql+mysqlconnector://root:123456@localhost/datas"
engine = create_engine(SQLALCHEMY_DATABASE_URL)
此部分需连接自己的mysql

from sqlalchemy import create_engine, Column, Integer, String, DateTime, Boolean
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker# 创建数据库连接字符串
SQLALCHEMY_DATABASE_URL = "mysql+mysqlconnector://root:123456@localhost/datas"
engine = create_engine(SQLALCHEMY_DATABASE_URL)# 创建会话本地工厂
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)# 创建声明式基类
Base = declarative_base()# 定义用户模型
class User(Base):__tablename__ = "users"id = Column(Integer, primary_key=True, index=True)username = Column(String(50), unique=True, index=True)password = Column(String(50))registration_date = Column(DateTime)is_admin = Column(Boolean, default=False)  # 添加一个字段来判断是否为管理员# 创建数据库表
Base.metadata.create_all(bind=engine)# 创建一个依赖项函数来管理数据库会话
def get_db():db = SessionLocal()try:yield dbfinally:db.close()

main.py

from fastapi import FastAPI
import uvicorn
from fastapi.staticfiles import StaticFiles
from fastapi.middleware.cors import CORSMiddlewarefrom database import SessionLocal
from allAPI.LoginANDEnroll import app01
from allAPI.student_scores import app02
from allAPI.enrollment_api import app03
from allAPI.ClassInfo import app04app = FastAPI()# 添加 CORS 中间件
app.add_middleware(CORSMiddleware,allow_origins=["*"],  # 允许所有源allow_credentials=True,allow_methods=["*"],  # 允许所有方法allow_headers=["*"],  # 允许所有头
)app.include_router(app01, prefix="/WJH", tags=["登录与注册"])
app.include_router(app02, prefix="/WJH", tags=["成绩信息"])
app.include_router(app03, prefix="/WJH", tags=["学籍信息"])
app.include_router(app04, prefix="/WJH", tags=["班级信息"])# 定义生命周期事件处理器
async def shutdown_event(app: FastAPI) -> None:await SessionLocal.close_all()# 注册事件处理器
app.add_event_handler("shutdown", shutdown_event)if __name__ == '__main__':uvicorn.run("main:app", port=8000, reload=True, host="127.0.0.1")# uvicorn.run("main:app", port=8000, reload=True, host="localhost")

前端链接:学生信息管理系统(简化版)-CSDN博客

数据库链接:学生信息管理系统(简化版)数据库部分-CSDN博客

相关文章:

学生信息管理系统(简化版)后端接口

目录 allAPI __init__.py是空文件,目的让python知道这个文件夹是个包 ClassInfo.py from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from API.database import get_db, Base from sqlalchemy import Column, String,…...

一、开启 GD32 单片机的学习之门

文章目录 一、开启GD32单片机的学习之门二、筑牢根基:GD32单片机基础知识全解析(一)单片机概述 三、开发环境搭建(一)软件下载与安装(二)安装GD32F450设备支持包(三)编译…...

计算生成报价单小程序系统开发方案

计算生成报价单小程序报价系统,是根据商品品牌、类型、型号、规格、芯数、特性、颜色、分类进行选择不同的参数进行生成报价单,要求报价单支持生成图片、pdf、excel表格。 计算生成报价单小程序系统的主要功能模块有: 1、在线生成报价单&…...

高效整合聚水潭库存数据至MySQL的实现

聚水潭数据集成到MySQL:商品库存查询案例分享 在本次技术案例中,我们将详细探讨如何通过轻易云数据集成平台,将聚水潭的商品库存数据高效、可靠地集成到MySQL数据库中。具体方案为“聚水潭-商品库存查询-->BI彩度-商品库存表”&#xff0…...

深入理解 JVM 的栈帧结构

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...

爬虫基础之HTTP基本原理

URL和URI 我们先了解一下 URI和 URL。URI的全称为 Uniform Resource ldentifer,即统一资源标志符;URL的全称为 Universal Resource Locator,即统一资源定位符。它们是什么意思呢?举例来说,https:/github.com/favicon.ico 既是一个 URI,也是…...

PyQt5:一个逗号引发的闪退血案

【日常小计】 在开发PyQt5程序时,调用了一个写入excel表格的后端方法,但是每次打开页面点击对应的动作,窗口就会闪退,而且Python后台也没有提示出任何的异常堆栈,后来经过在后端一点一点的单点测试,终于发…...

python学opencv|读取图像(五)读取灰度图像像素

【1】引言 前序学习了图像的基本读取,掌握了imread()、imshow()和imwrite()函数的基本功能和使用技巧,参考文章链接为: python学opencv|读取图像-CSDN博客 然后陆续掌握了彩色图像保存、图像放大和缩小以及对imshow()函数的大胆尝试技巧&a…...

LiDAR点云 反射强度 常见物体反射强度

1.激光点云发射的点无法全部被反射回来的原因 激光点云发射的点无法全部被反射回来的原因主要包括以下几点: 目标物表面特性:某些物体表面具有高反射率,导致激光雷达接收到的反射能量过强,从而产生噪点,影响点云数据的…...

零基础微信小程序开发——WXML 模板语法之事件绑定(保姆级教程+超详细)

🎥 作者简介: CSDN\阿里云\腾讯云\华为云开发社区优质创作者,专注分享大数据、Python、数据库、人工智能等领域的优质内容 🌸个人主页: 长风清留杨的博客 🍃形式准则: 无论成就大小,…...

qt QNetworkAccessManager详解

1、概述 QNetworkAccessManager是QtNetwork模块中的一个核心类,它允许应用程序发送网络请求并接收响应。该类是网络通信的基石,提供了一种方便的方式来处理常见的网络协议,如HTTP、HTTPS等。QNetworkAccessManager对象持有其发送的请求的通用…...

在2023idea中如何创建SpringBoot

目录 一.下载和安装 Maven 1.前往 https://maven.apache.org/download.cgi 下载最新版的 Maven 程序 2.将文件解压到D:Program FilesApachemaven目录 3.新建环境变量MAVEN_HOME,赋值D:Program FilesApachemaven 4.编辑环境变量Path,追加%MAVEN_HOME…...

R语言医学数据分析实践-R语言的数据结构

【图书推荐】《R语言医学数据分析实践》-CSDN博客 《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com) R语言编程_夏天又到了的博客-CSDN博客 在R语言中,数据结构是非常关键的部分,它提…...

PID算法

PID算法是闭环控制中的核心算法之一,它结合了比例(P)、积分(I)和微分(D)三种控制策略,能够实现对被控对象的精确控制。以下将详细介绍PID算法,并针对P、I、D分别举出三个…...

C++day2

1.利用函数重载&#xff0c;实现对整形数组的冒泡排序&#xff0c;对浮点型数组的冒泡排序 #include <iostream>using namespace std;int bubblesort(int a[]) {int i,j,temp;for(i1;i<5;i){for(j0;j<5-i;j){if(a[j]>a[j1]){temp a[j];a[j] a[j1];a[j1] tem…...

RFdiffusion ContigMap类初始化方法解读

功能概述 __init__ 方法是 ContigMap 类的初始化函数,其核心任务是构建和管理一个蛋白质序列和结构的映射系统,处理用户提供的输入数据(如片段信息、参考序列、掩码等),并生成内部所需的各种索引和映射,以便在蛋白质设计中有效地定义、解析和操作不同区域的结构和序列。…...

LeetCode 每日一题 2024/12/2-2024/12/8

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 12/2 52. N 皇后 II12/3 3274. 检查棋盘方格颜色是否相同12/4 2056. 棋盘上有效移动组合的数目12/5 3001. 捕获黑皇后需要的最少移动次数12/6 999. 可以被一步捕获的棋子数…...

5G模组AT命令脚本-关闭模组的IP过滤功能

关闭模组的IP过滤功能 关闭模组的IP过滤功能 5G 模组通常使用nat方式为 下挂设备或上位机提供上网服务&#xff0c;默认情况&#xff0c;不做NAt的包无法经由 模组转发&#xff0c;如果禁掉这个限制 &#xff0c;可使用本文中的配置命令本脚本用于关闭模组的IP过滤功能&#xf…...

得力DL-720C(new)标签热敏打印机

特点 适配标签宽度20-90mm的热敏标签纸&#xff0c;无需碳带。不适用于使用碳带上色的热转印纸&#xff08;如铜版纸&#xff09;。标签纸类型支持&#xff1a; 间隙纸&#xff08;靠间隙定位&#xff09;。得力自配的纸就是间隙纸&#xff0c;不透明。黑标纸&#xff08;靠背…...

openjdk17 jvm加载class文件,解析字段和方法,C++源码展示

##构造方法ClassFileParser&#xff0c;parse_stream解析文件流 ClassFileParser::ClassFileParser(ClassFileStream* stream,Symbol* name,ClassLoaderData* loader_data,const ClassLoadInfo* cl_info,Publicity pub_level,TRAPS) :_stream(stream),_class_name(NULL),_load…...

基于 AutoFlow 快速搭建基于 TiDB 向量搜索的本地知识库问答机器人

导读 本文将详细介绍如何通过 PingCAP 开源项目 AutoFlow 实现快速搭建基于 TiDB 的本地知识库问答机器人。如果提前准备好 Docker、TiDB 环境&#xff0c;整个搭建过程估计在 10 分钟左右即可完成&#xff0c;无须开发任何代码。 文中使用一篇 TiDB 文档作为本地数据源作为示…...

Vue项目实战-新能源汽车可视化(二)(持续更新中)

一.项目代码 1.DataSceen <template><div id"app-content"><div class"containerBox"><!-- 左边区域 --><div classleft><!-- 车辆情况 --><div class"item"></div><!-- 历史数据 -->&…...

CSS border 0.5px 虚线

border 0.5px 存在很多兼容问题&#xff0c;很多设备都会默认展示 1px 如果是实线可以用 background 和 height 1px 然后transform scaleY(0.5) 去实现。 但是虚线怎么办呢。 .ticket-line::before {content: ;position: absolute;top: 0;left: 0;right: 0;bottom: 0;width: …...

利用最大流算法解决Adam教授的双路径问题

利用最大流算法解决Adam教授的双路径问题 Adam教授的烦恼问题描述与转换转换步骤伪代码C代码示例解释Adam教授的烦恼 Adam教授有两个儿子,可不幸的是,他们互相讨厌对方。随着时间的推移,问题变得如此严重,他们之间不仅不愿意一起走到学校,而且每个人都拒绝走另一个人当天…...

c#如何开发后端

1选择开发框架 在 C# 中&#xff0c;用于后端开发最常用的框架是ASP.NET。它提供了构建 Web 应用程序、Web API 和微服务等多种后端服务所需的功能。ASP.NET有不同的模式&#xff0c;如ASP.NET MVC&#xff08;Model - View - Controller&#xff09;和ASP.NET Web API。ASP.NE…...

05_掌握Python3.11新特性-模式匹配

学习完本篇内容,你将掌握以下技能: 了解 Python 3.11 中的模式匹配新特性掌握如何使用模式匹配来简化代码和提高代码的可读性熟练掌握并应用到实际编程中python3.11新特性-模式匹配 在 Python 3.11 中,引入了模式匹配(pattern match...

【AI日记】24.12.09 kaggle 比赛 Titanic-12

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 内容&#xff1a; 学习 kaggle 入门比赛 Titanic - Machine Learning from Disaster学习机器学习&#xff08;pandas&#xff0c;numpy&#xff0c;sklearn&#xff09;&#xff0c;数据可视化&#xff…...

Linux,如何要定位并删除占用磁盘空间的大文件?

Linux&#xff0c;如何要定位并删除占用磁盘空间的大文件&#xff1f; 要定位并删除占用磁盘空间的大文件主要有以下这些步骤&#xff1a; 1. 使用 du 命令查找大文件或目录 du&#xff08;Disk Usage&#xff09;命令可以帮助你查找占用空间较大的文件或目录。 du -ah --…...

【Java】—— 图书管理系统

基于往期学习的类和对象、继承、多态、抽象类和接口来完成一个控制台版本的 “图书管理系统” 在控制台界面中实现用户与程序交互 任务目标&#xff1a; 1、系统中能够表示多本图书的信息 2、提供两种用户&#xff08;普通用户&#xff0c;管理员&#xff09; 3、普通用户…...

初识Linux · 线程同步

目录 前言&#xff1a; 认识条件变量 认识接口 快速使用接口 生产消费模型 前言&#xff1a; 前文我们介绍了线程互斥&#xff0c;线程互斥是为了防止多个线程对临界资源访问的时候出现了对一个变量同时操作的情况&#xff0c;对于线程互斥来说&#xff0c;我们使用到了锁…...

游戏引擎学习第40天

仓库 : https://gitee.com/mrxiao_com/2d_game 整理了一些需要完成的任务&#xff0c;确保所有内容都已清理完成&#xff0c;因为需要为后续的数学部分打好基础。下一步将认真开始处理数学相关内容&#xff0c;因此在此之前&#xff0c;需要彻底梳理未完成的事项&#xff0c;清…...

概率论——假设检验

解题步骤&#xff1a; 1、提出假设H0和H1 2、定类型&#xff0c;摆公式 3、计算统计量和拒绝域 4、定论、总结 Z检验 条件&#xff1a; 对μ进行检验&#xff0c;并且总体方差已知道 例题&#xff1a; 1、假设H0为可以认为是570N&#xff0c;H1为不可以认为是570N 2、Z…...

【Pandas】pandas isnull

Pandas2.2 General Top-level missing data 方法描述isna(obj)用于检测数据中的缺失值isnull(obj)用于检测数据中的缺失值notna(obj)用于检测数据中的非缺失值notnull(obj)用于检测数据中的非缺失值 pandas.isnull() pandas.isnull() 是 Pandas 库中的一个函数&#xff0c;…...

Rust HashMap使用

Rust 的 HashMap 是一个功能强大的数据结构&#xff0c;它结合了哈希表的高效性和 Rust 编程语言的内存安全特性。通过提供常数时间复杂度的查找、插入和删除操作&#xff0c;以及丰富的 API&#xff0c;它在许多实际应用中都非常有用。 示例代码&#xff1a; use std::colle…...

Spring Boot如何实现防盗链

一、什么是盗链 盗链是个什么操作&#xff0c;看一下百度给出的解释&#xff1a;盗链是指服务提供商自己不提供服务的内容&#xff0c;通过技术手段绕过其它有利益的最终用户界面&#xff08;如广告&#xff09;&#xff0c;直接在自己的网站上向最终用户提供其它服务提供商的…...

TIM输入捕获---STM

一、简介 IC输入捕获 输入捕获模式下&#xff0c;当通道输入引脚出现指定电平跳变时&#xff0c;当前CNT的值将被锁存在CCR中&#xff0c;可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器和通用定时器都拥有4个输入捕获通道 可配置为PWMI模…...

核密度估计——从直方图到核密度(核函数)估计_带宽选择

参考 核密度估计&#xff08;KDE&#xff09;原理及实现-CSDN博客 机器学习算法&#xff08;二十一&#xff09;&#xff1a;核密度估计 Kernel Density Estimation(KDE)_算法_意念回复-GitCode 开源社区 引言 在统计学中&#xff0c;概率密度估计是一种重要的方法&#xff0…...

javaScript Tips

一键去掉鼠标的图标 document.body.style.cursor none; 获取一个随机颜色 const randomHex () >#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, 0)}; 生成随机字符串&#xff0c;各种随机基本都是这个原理 const randomString () > Math.rand…...

【Ubuntu】清理、压缩VirtualBox磁盘空间大小

1、说明 本人为虚拟机创建了两个硬盘:root.vdi 和 hoom.vdi,在创建虚拟机时,分别挂载在/root目录和/home目录下。 下面演示分别清理、压缩两个磁盘的空间。 2、清理空间 1)清理 root.vid sudo dd if=/dev/zero of=/EMPTY bs=1M;sudo rm -f /EMPTY输出信息中会提示,如…...

若依 ruoyi VUE el-select 直接获取 选择option 的 label和value

1、最新在研究若依这个项目&#xff0c;我使用的是前后端分离的方案&#xff0c;RuoYi-Vue-fast(后端) RuoYi-Vue-->ruoyi-ui(前端)。RuoYi-Vue-fast是单应用版本没有区分那么多的modules 自己开发起来很方便&#xff0c;这个项目运行起来很方便&#xff0c;但是需要自定义的…...

C++小小复习一下

类&#xff0c;对象&#xff0c;成员变量&#xff0c;成员函数 特点&#xff1a;面向对象程序设计---因为要创建对象来调用类里面的函数或者成员变量 比如你的对象是一个生物-人&#xff1a;他会有自己的一些属性&#xff1a;身高&#xff0c;体重&#xff0c;性别等&#xf…...

JavaWeb学习(4)(四大域、HttpSession原理(面试)、SessionAPI、Session实现验证码功能)

目录 一、web四大域。 &#xff08;1&#xff09;基本介绍。 &#xff08;2&#xff09;RequestScope。(请求域) &#xff08;3&#xff09;SessionScope。(会话域) &#xff08;4&#xff09;ApplicationScope。(应用域) &#xff08;5&#xff09;PageScope。(页面域) 二、Ht…...

quartz 架构详解

‌Quartz是一个开源的作业调度框架&#xff0c;完全由Java编写&#xff0c;主要用于定时任务的调度和管理。Quartz的架构主要包括以下几个核心组件‌&#xff1a; 1.‌调度器&#xff08;Scheduler&#xff09;‌&#xff1a;调度器是Quartz的核心组件&#xff0c;负责管理Qua…...

Redis安装和Python练习(Windows11 + Python3.X + Pycharm社区版)

环境 Windows11 Python3.X Pycharm社区版 思路 1 github下载redis压缩包 &#xff0c;安装并启动redis服务&#xff0c;在Pycharm中运行python程序&#xff0c;连接redis服务&#xff0c;熟悉redis的使用和巩固python语言。 2 python开发环境的搭建参考 https://mp.csdn.…...

明年 iPhone 将搭载苹果自研 5G 基带芯片

明年 iPhone 将搭载苹果自研 5G 基带芯片 据彭博社记者 Mark Gurman 透露&#xff0c;苹果首款自主研发 5G 基带芯片即将面世。 苹果首款自研 5G 基带芯片将命名为「Sinope」&#xff0c;将应用在 2025 年发布的 iPhone SE、iPhone 17 Slim 版以及低端系列的 iPad 系列。「Si…...

1.1 Beginner Level学习之“编写简单的发布服务器和订阅服务器”(第十二节)

学习大纲&#xff1a; 1. 编写发布服务器节点 在ROS中&#xff0c;**节点&#xff08;Node&#xff09;**是与ROS网络通信的基本单位。在这个部分&#xff0c;我们将创建一个简单的发布节点&#xff08;talker&#xff09;&#xff0c;它会不断向话题&#xff08;topic&#x…...

C语言 字符串操作函数

strncpy() 用于将一个字符串的一部分拷贝到另一个字符串中。 char* strncpy(char* destination, const char* source, size_t num);参数&#xff1a;destination 是目标字符串的指针&#xff0c;表示将要拷贝到的位置source 是源字符串的指针&#xff0c;表示要拷贝的字符串num…...

论文概览 |《Cities》2024.07 Vol.150(上)

本次给大家整理的是《Cities》杂志2024年07月第150期的论文的题目和摘要&#xff0c;一共包括90篇SCI论文&#xff01;由于论文过多&#xff0c;我们将通过两篇文章进行介绍&#xff0c;本篇文章介绍第1--第45篇论文! 论文1 Spatiotemporal infection dynamics: Linking indiv…...

查看Windows系统上的Redis服务器是否设置了密码

查看 Redis 配置文件 1.找到 Redis 配置文件&#xff1a; 通常Redis配置文件名为 redis.windows.conf 或 redis.conf&#xff0c;它位于Redis安装目录中。 2.打开配置文件&#xff1a; 使用文本编辑器&#xff08;如Notepad、VS Code等&#xff09;打开该文件。 3.查找 re…...

30天学会Go--第6天 GO语言 RESTful API 学习与实践

30天学会Go–第6天 GO语言 RESTful API 学习与实践 文章目录 30天学会Go--第6天 GO语言 RESTful API 学习与实践一、 RESTful API 的设计原则1.1 RESTful API 的核心概念1.2 RESTful API 的 URL 设计1.3 RESTful API 的数据格式 二、 实现 RESTful API2.1 定义数据模型2.2 实现…...