Lesson: Algorithms

Java算法
本文介绍Java平台提供的多项算法,包括排序、洗牌、常规数据操作、搜索、组合及查找极值等。重点介绍了排序算法,该算法使用优化的归并排序,速度快且稳定。

Lesson: Algorithms

The polymorphic algorithms described here are pieces of reusable functionality provided by the Java platform. All of them come from the Collections class, and all take the form of static methods whose first argument is the collection on which the operation is to be performed. The great majority of the algorithms provided by the Java platform operate on List instances, but a few of them operate on arbitrary Collection instances. This section briefly describes the following algorithms:

Sorting

The sort algorithm reorders a List so that its elements are in ascending order according to an ordering relationship. Two forms of the operation are provided. The simple form takes a List and sorts it according to its elements' natural ordering. If you're unfamiliar with the concept of natural ordering, read the Object Ordering section.

The sort operation uses a slightly optimized merge sort algorithm that is fast and stable:

  • Fast: It is guaranteed to run in n log(n) time and runs substantially faster on nearly sorted lists. Empirical tests showed it to be as fast as a highly optimized quicksort. A quicksort is generally considered to be faster than a merge sort but isn't stable and doesn't guarantee n log(n) performance.
  • Stable: It doesn't reorder equal elements. This is important if you sort the same list repeatedly on different attributes. If a user of a mail program sorts the inbox by mailing date and then sorts it by sender, the user naturally expects that the now-contiguous list of messages from a given sender will (still) be sorted by mailing date. This is guaranteed only if the second sort was stable.

 

 

 

 

http://docs.oracle.com/javase/tutorial/collections/algorithms/index.html

import datetime from datetime import datetime, timedelta import jwt import uvicorn from fastapi import FastAPI app = FastAPI() from models.cms.lesson import lesson from models.cms.plan import plan from models.cms.school import School from models.cms.teacher import teacher from models.cms.user import User from plugin.plugin_sqlalchemy import db from verfify_token import TokenMiddleware from fastapi import Depends, HTTPException, status from sqlalchemy.future import select from sqlalchemy.exc import SQLAlchemyError from fastapi.security import OAuth2PasswordBearer # app = creat_app() app = FastAPI() # 注册中间件 app.add_middleware(TokenMiddleware) # ...其他路由及相关配置... # 新增的添加用户信息函数 @app.post("/add_user") def adduser( # user_id: str, username: str, password: str, nickname: str, email: str, school_id: int, ): try: new_user = User( # user_id=user_id, username=username, password=password, nickname=nickname, email=email, school_id=school_id, ) db.add(new_user) db.commit() return {"code": f"用户 {username} 添加成功!"} except Exception as e: print("添加用户失败!", e) db.rollback() return {"code": "添加用户失败!", "massage": str(e)} db.close() # 新增的添加教师信息函数 @app.post("/add_teachername") def addteacher(teachername: str, class_name: str, gender: str, school_id: int): try: new_teacher = teacher( teachername=teachername, class_name=class_name, gender=gender, school_id=school_id, ) db.add(new_teacher) db.commit() db.close() return {"code": f" {teacher} 添加成功!"} except Exception as e: print("添加教师失败!", e) db.rollback() return {"code": "添加教师失败!", "massage": str(e)} # 新增的添加学校信息函数 @app.post("/add_school") def addschool( schoolname: str, info: str, school_number: int, school_grade: str, ): try: new_school = School( schoolname=schoolname, info=info, school_number=school_number, school_grade=school_grade, ) db.add(new_school) db.commit() db.close() return {"code": f"学校 {schoolname} 添加成功!"} except Exception as e: print("添加学校失败!", e) db.rollback() return {"code": "添加学校失败!", "massage": str(e)} # 新增的添加计划函数 @app.post("/add_plan") def addplan( plan_name: str, major_name: str, first_course: str, second_course: str, ): try: new_plan = plan( plan_name=plan_name, major_name=major_name, first_course=first_course, second_course=second_course, ) db.add(new_plan) db.commit() return {"code": f"计划{plan_name} 添加成功!"} except Exception as e: print("添加计划失败!", e) db.rollback() return {"code": "添加计划失败!", "massage": str(e)} # 新增的添加课程信息函数 @app.post("/add_lesson") def addlesson( category: str, major: str, professional_category: str, classes: str, user_id: int ): try: new_school_class = lesson( category=category, professional_category=professional_category, major=major, classes=classes, ) db.add(new_school_class) db.commit() return {"code": f"课程 {classes} 添加成功!"} except Exception as e: print("添加学校课程失败!", e) db.rollback() return {"code": "添加学校课程失败!", "massage": str(e)} SECRET_KEY = "zzz_2025" # 密钥,用于签名和验证Token ALGORITHM = "HS256" # 签名算法 # 中间件:生成Token def generate_token(user_id: int): payload = { "user_id": user_id, # "exp": datetime.utcnow() + timedelta(hours=2), # 设置Token有效期为2小时 } token = jwt.encode(payload, SECRET_KEY, algorithm=ALGORITHM) return token @app.post("/register") def register_user(username: str, password: str): # 假设用户注册成功并返回用户ID user_id = 1 # 示例用户ID token = generate_token(user_id) return {"message": "注册成功", "token": token} # 中间件:验证Token def verify_token(token: str): try: payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM]) user_id = payload.get("user_id") if user_id is None: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="无效的Token" ) return user_id except jwt.ExpiredSignatureError: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Token已过期" ) except jwt.InvalidTokenError: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="无效的Token" ) oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") async def get_current_user( token: str = Depends(oauth2_scheme), db: AsyncSession = Depends(get_db) ): try: # 验证 Token 并提取 user_id payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM]) user_id = payload.get("user_id") if user_id is None: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="无效的Token" ) # 查询数据库获取用户信息 query = select(User).where(User.id == user_id) result = await db.execute(query) user = result.scalar_one_or_none() if user is None: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="用户不存在" ) return user except (jwt.ExpiredSignatureError, jwt.InvalidTokenError): raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="无效或过期的Token" ) except SQLAlchemyError as e: raise HTTPException( status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="数据库错误" ) from fastapi import FastAPI app = FastAPI() @app.get("/users/me") async def read_users_me(current_user: User = Depends(get_current_user)): return {"username": current_user.username, "email": current_user.email} 帮我找出问题并修改
06-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值