《Python网络安全项目实战》项目6 编写密码工具程序

news2024/11/22 3:00:51

《Python网络安全项目实战》项目6 编写密码工具程序

  • 项目6 编写密码工具程序
    • 任务6.1 猜数字游戏
      • 任务描述
      • 任务分析
      • 任务实施
        • 6.1.1 编写基本的猜数字程序
      • 6.1.2 为猜数字程序加入连续猜数的功能
        • 6.1.3 测试并修改程序
        • 6.1.4 给程序增加注释
      • 任务拓展
    • 任务6.2 编写密码工具程序
      • 任务描述
      • 任务分析
      • 任务实施
        • 6.2.1 生成随机密码
      • 6.2.2 根据输入控制密码位数
      • 6.2.3 弱密码测试
        • 6.2.4 菜单功能
      • 相关知识
        • 1. 密码字典
        • 2. 密码字典生成软件
      • 任务评价
      • 任务拓展
      • 项目评价

项目6 编写密码工具程序

在密码的使用过程中,我们给出一个密码经常是弱密码,这样的密码有一定的规律可以比较容易记忆。但是使用弱密码,很容易就可以对你的密码进行破解。所以我们要编写一个密码工具程序,对给出的密码进行测试,确定这个密码是不是弱密码,是不是可以使用。并且我们给出的程序功能,需要自动生成强密码,并对密码进行测试确定不是弱密码。
项目目标:
 熟悉Python的关键要素;
 熟练使用Python语言对数据安全、系统安全编程。

任务6.1 猜数字游戏

任务描述

项目经理要求我们编写猜数字游戏,从而模拟纯数字密码的生成与猜测。

任务分析

  1. 编写基本的猜数字程序
    (1)编写一个程序,用来进行输出。
    (2)使用模块random中的函数randint()生成一个随机整数。
    (3)使用Python内置函数input()提示用户输入一个整数。
    (4)对比两个数字,输出对比结果。
  2. 加入新功能更新版本
    (1)为猜数字程序加入连续猜数的功能。
    (2)测试并修改程序。
    (3)给程序增加注释。

任务实施

6.1.1 编写基本的猜数字程序

【步骤1】:在项目一中我们已经完成了命令行交互操作时“Hello world!”的输出,如图6-1-1所示。
在这里插入图片描述

图6-1-1 交互输出
【步骤2】:下面我们编写一个程序,用来输出“Hello world!”,如图6-1-2所示。
在这里插入图片描述

图6-1-2 程序代码
【步骤3】:按F5执行,恭喜你,虽然这个程序只有一行代码,但是它已经可以运行了,如图6-1-3所示。
在这里插入图片描述

图6-1-3 程序输出
【步骤4】:我们将这个程序进行改进,使用模块random中的函数randint()生成一个随机整数,如图6-1-4所示。
在这里插入图片描述

图6-1-4 随机数生成
【步骤5】:程序每运行一次,就生成一个随机整数,如图6-1-5所示。
在这里插入图片描述

图6-1-5 随机数
【步骤6】:我们将这个程序进行改进加入输入功能,如图6-1-6所示。
在这里插入图片描述

图6-1-6 输入
【步骤7】:程序运行后输出一个从1到1000000之间的随机整数和一个用户输入的数字结果,如图6-1-7所示。
在这里插入图片描述

图6-1-7 输出
【步骤8】:使用int()内置函数将输入结果转换为整形,对比两个数字,如图6-1-8所示。
在这里插入图片描述

图6-1-8 对比
【步骤9】:运行结果如下,如图6-1-9所示。
在这里插入图片描述

图6-1-9 结果

6.1.2 为猜数字程序加入连续猜数的功能

【步骤1】:增加猜测机会,生成1到100之间的随机数,给9次猜测的机会,如图6-1-10所示。
在这里插入图片描述

图6-1-10 改进
【步骤2】:运行结果如下,如图6-1-11所示。
在这里插入图片描述

图6-1-11 运行

6.1.3 测试并修改程序

【步骤1】:设计测试用例,输入各种极端的数值,进行测试。
在这里插入图片描述

【步骤2】:修改程序,给程序增加容错,增强程序的键壮性,如图6-1-12所示。
在这里插入图片描述

图6-1-12 容错
【步骤3】:设计测试用例,输入各种极端的数值,进行测试。
在这里插入图片描述

6.1.4 给程序增加注释

【步骤1】:给程序增加注释,如图6-1-13所示。
在这里插入图片描述

图6-1-13 注释
【步骤2】:编制版本号,再次测试并提交程序,如图6-1-14所示。
在这里插入图片描述

图6-1-14 版本号
#程序完整代码如下:

#猜密码游戏:ver-0.1-20170712
import random    #引入模块用于生成随机数
x = random.randint(1,100)  #生成随机整数
for i in range(1,10):   #当1<=i<10时循环
    try:    #异常容错
        #等待用户输入,并将输入转换为整形
        y = int(input('请输入一个整数:'))
    except: #例外,程序出现异常时执行
        print('请检查,您输入的不是一个整数')
        continue   #继续执行循环     
    if x>y:   #如果x大于y执行
        print("太小了")
    elif x < y:  #否则如果x小于y执行
        print("太大了")
    else:  #否则执行下面的代码
        break   #中断并跳出循环
    
if x>y or x<y:  #如果x大于y,和x小于y
    print("你输了")
elif x == y:  #否则如果x等于y,执行下级语句
    print("你赢了") 
else:   #否则执行下级语句
    print("输入错误")

如果以上代码你还无法看懂,不要着急,后面的项目中我们会对每一个知识和技能点进行学习。
相关知识
弱密码
弱密码(Weak passwords)即容易破译的密码,多为简单的数字组合、帐号相同的数字组合、键盘上的临近键或常见姓名,例如“123456”、“abc123”、“Michael”等。终端设备出厂配置的通用密码等都属于弱密码范畴。
设定密码的原则
密码共用问题:设定密码时,请选择一个没有在其他任何地方使用的密码。如果你在另一个服务也使用相同的密码,攻击者可以同时获得两个服务的访问。
密码有效时间:假定攻击者已经破解了密码,并可以访问云服务,那么每90天修改一次密码就非常关键。这种做法有助于防止攻击者进一步取得认证并窃取更多的敏感信息。
密码最短长度:密码长度应至少8位,虽然我们通常建议更长的密码。为了安全起见,造一个句子来作为你的密码。
密码强度:密码应该同时使用小写和大写字母,数字和特殊字符。这确保攻击者在暴力破解密码时必须通过更多数量的组合才能成功。
任务评价
请学生按照下表中的要求完成本次评价,并在物理机桌面上以自己的两位学号+姓名的形式命名文件夹,保存所有截图文件,文件保存为jpeg或 png格式。
在这里插入图片描述

任务拓展

1.编写程序,随机选取0到100间的偶数,并显示到屏幕。
2.编写程序,随机选取键盘可打印字符,并显示到屏幕。

任务6.2 编写密码工具程序

任务描述

使用python编写一个密码工具程序

任务分析

  1. 原形设计:
    • 密码由大小写英文字母、数字、特殊符号组成,
    • 将需要的字母、数字和符号放入列表,
    • 使用random.sample()产生随机序列,
    • 将选取的字符加入一个新的列表,
    • 把生成的新列表中的字符连接成字符串作为密码
  2. 增加功能:
    • 根据输入控制密码位数,
    • 测试弱密码功能
    • 菜单功能

任务实施

6.2.1 生成随机密码

【步骤1】:密码由大小写英文字母、数字、特殊符号组成,将需要的符号放入列表,如图6-2-1所示。
在这里插入图片描述

图6-2-1 符号列表
【步骤2】:使用Print()将列表打印出来,如图6-2-2所示。
在这里插入图片描述

图6-2-2 输出列表
【步骤3】:按F5运行程序将列表打印出来进行检查,如图6-2-3所示。
在这里插入图片描述

图6-2-3 运行
【步骤4】:在交互模式,引入random模块,使用random.sample()产生随机序列,如图6-2-4所示。
在这里插入图片描述

图6-2-4 随机序列
【步骤5】:将使用random.sample()产生随机序列的功能写入程序,如图6-2-5所示。
在这里插入图片描述

图6-2-5 程序
【步骤6】:按F5运行程序,产生一个16字符随机序列的列表,结果如下,如图6-2-6所示。
在这里插入图片描述

图6-2-6 运行
【步骤7】:使用’’.join()将列表内的随机序列连接成字符串,如图6-2-7所示。
在这里插入图片描述

图6-2-7 连接
【步骤8】:按F5运行程序,产生一个16字符的随机密码,如图6-2-8所示。
在这里插入图片描述

图6-2-8 随机密码

6.2.2 根据输入控制密码位数

至此我们已经写出一个自动生成16字符随机密码的小程序。现在大家思考下面两个问题:
我们可以人为的控制密码位数吗?
这个随机生成的密码你还能猜出来吗?
【步骤1】:输入密码长度,并转换为整形数值,用来控制生成密码的长度,如图6-2-9所示。
在这里插入图片描述

图6-2-9 密码长度
【步骤2】:程序要求输入密码长度的时候我们分别两次输入16、24,生成了相应长度的随机密码,如图6-2-10所示。
在这里插入图片描述

图6-2-10 生成密码
【步骤3】:程序要求输入密码长度的时候我们输入78,程序报错说我们输入的位数超过了样本列表charList的长度或者是负数,如图6-2-11所示。
在这里插入图片描述

图6-2-11 报错
【步骤4】:程序要求输入密码长度的时候我们分别两次输入77、16,生成了相应长度的随机密码,如图6-2-12所示。
在这里插入图片描述

图6-2-12 生成密码
【步骤5】:加入容错机制,如图6-2-13所示。
在这里插入图片描述

图6-2-13 容错
【步骤6】:输入超过77的数字、负数、字符,会提示输入错误,如图6-2-14所示。
在这里插入图片描述

图6-2-14 输入检查
【步骤7】:将以上程序定义成为一个函数,方便以后调用,如图6-2-15所示。
在这里插入图片描述

图6-2-15 函数定义
【步骤8】;修改程序,当输入错误时,函数返回默认16字符的随机密码,如图6-2-16所示。
在这里插入图片描述

图6-2-16 默认字符数
【步骤9】:将函数内的密码位数输入功能移出,改为函数调用时进行参数传递,如图6-2-17所示。
在这里插入图片描述

图6-2-17 参数传递
【步骤10】:将输入密码长度功能放入函数definLengPass()以备随后进行调用,现在我们调用randPass()生成16字符密码,如图6-2-18所示。
在这里插入图片描述

图6-2-18 函数调用
【步骤11】:现在我们调用definLengPass(),生成客户指定位数密码,如图6-2-19所示。
在这里插入图片描述

图6-2-19 生成密码

6.2.3 弱密码测试

本课程附了一个弱密码字典文件password.txt,使用该文件能猜测出网民常用的密码, password.txt文件内的部分内容如下:
国内网民常用的25个弱密码包括:000000、111111、11111111、112233、123123、123321、123456、12345678、654321、666666、888888、abcdef、abcabc、abc123、a1b2c3、aaa111、123qwe、qwerty、qweasd、admin、password、p@ssword、passwd、iloveyou、5201314、asdfghjkl、66666666、88888888
国外网民常用的25个弱密码包括:password、123456、12345678、qwerty、abc123、monkey、1234567、letmein、trustno1、dragon、baseball、111111、iloveyou、master、sunshine、ashley、bailey、passw0rd、shadow、123123、654321、superman、qazwsx、michael、football、asdfghjkl
【步骤1】:请用户输入密码,在password.txt当中进行查找,如果找到,就停止并提示用户“找到它了,这是一个弱密码”,如图6-2-20所示。
在这里插入图片描述

图6-2-20 弱密码测试
【步骤2】:自动生成一个密码,并在弱密码文本里进行查找,你会发现,位数较短的密码有时会在密码文本里找到,但是自动生成的六位以上的密码很难在弱密码文本里找到,如图6-2-21所示。
在这里插入图片描述

图6-2-21 密码生成

6.2.4 菜单功能

【步骤1】:加入选择,可以让用户决定用于生成密码还是弱口令检查,如图6-2-22所示。
在这里插入图片描述

图6-2-22 功能选择
#下面是程序的代码

import random
def randPass(length):
    """生成随机密码"""
    charList = ['a','b','c','d','e','f','g','h','i','j','k','l','m',
                'n','o','p','q','r','s','t','u','v','w','x','y','z',
                'A','B','C','D','E','F','G','H','I','J','K','L','M',
                'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
                '0','1','2','3','4','5','6','7','8','9','0',
                '~','!','#','$','%','^','&','*','(',')','-','=','+','_']
    try:        
        password = ''.join(random.sample(charList,length))
        return(password)
    except:        
        password = ''.join(random.sample(charList,16))
        return(password)
def definLengPass():
    try:
        length = int(input("请输入密码长度,超过77将返回默认的16字符密码:"))
        return(randPass(length))
    except:
        print('输入错误!')
        exit
def findPass(password):
    f = open('password.txt','r')
    for line in f.readlines():
        print(line,password)
        if line.strip('\n') == password:
            print("找到它了,这是一个弱密码")
            break   
def main():
    flag = input('1.密码生成\n2.弱口令测试\n请选择(1/2):')
    if flag == '1':
        password = definLengPass()
        print(password)
    elif flag == '2':
        password = input('请输入密码:')
        findPass(password)
        print(password)
    else:
        print('输入错误!')

main()

【步骤2】:按F5运行程序,会出现下列选择菜单,我们选择1.密码生成并回车,然后提示输入密码长度的时候我们现在输入32,然后计算机给出了一个32字符长度的随机密码,如图6-2-23所示。
在这里插入图片描述

图6-2-23 程序运行
【步骤3】:按F5运行程序,会出现下列选择菜单,我们选择2.弱口令测试并回车,然后输入一个密码,这里我们输入‘paper’并回车,计算机就会开始在密码文本里面开始搜索这个密码,如图6-2-24所示。
在这里插入图片描述

图6-2-24 弱口令测试
【步骤4】:当计算机在密码文本里找到这个密码的时候会提示“找到它了,这是一个弱密码”显示出这个密码并停止查找,如图6-2-25所示。
在这里插入图片描述

图6-2-25 测试结果
【步骤5】:给程序增加添加密码字典功能,如图6-2-26所示。
在这里插入图片描述

图6-2-26 密码字典
【步骤6】:给程序添加退出功能,如图6-2-27所示。
在这里插入图片描述

图6-2-27 退出功能
#下面是程序的代码

import random
def randPass(length):
    """生成随机密码"""
    charList = ['a','b','c','d','e','f','g','h','i','j','k','l','m',
                'n','o','p','q','r','s','t','u','v','w','x','y','z',
                'A','B','C','D','E','F','G','H','I','J','K','L','M',
                'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
                '0','1','2','3','4','5','6','7','8','9','0',
                '~','!','#','$','%','^','&','*','(',')','-','=','+','_']
    try:        
        password = ''.join(random.sample(charList,length))
        return(password)
    except:        
        password = ''.join(random.sample(charList,16))
        return(password)
def definLengPass():
    try:
        length = int(input("请输入密码长度,超过77将返回默认的16字符密码:"))
        return(randPass(length))
    except:
        print('输入错误!')
        exit
def findPass(password):
    f = open('password.txt','r')
    for line in f.readlines():
        #print(line,password)
        if line.strip('\n') == password:
            return(True)
            #print("找到它了,这是一个弱密码")
            break
    f.close()
def testPass(password):
    if findPass(password):
        print(password+"密码字典中已经存在,这是一个弱密码")
    else:
        print(password+"密码字典中不存在,如果是一个弱密码,请加入密码字典!")   
def saveToDicPass(password):
    f = open('password.txt','a')
    f.writelines('\n'+password)
    f.close()    
def menuDisply():
    flag = input('''\n1.密码生成\n
                      2.弱口令测试\n
                      3.生成密码=>弱口令测试\n
                      4.添加弱口令字典\n
                      5.退出\n
                      请选择(1/2/3/4/5):''')
    if flag == '1':
        password = definLengPass()
        print(password)
        menuDisply()
    elif flag == '2':
        password = input('请输入密码:')
        testPass(password)
        menuDisply()
    elif flag == '3':
        password = definLengPass()
        testPass(password)
        menuDisply()
    elif flag == '4':
        password = input('请输入弱密码:')
        if findPass(password):
            print(password+"密码字典中已经存在")
        else:
            saveToDicPass(password)
            if findPass(password):
                print(password+"成功加入密码字典")
            else:
                print(password+"加入密码字典没有成功")
        menuDisply()
    elif flag == '5':
        exit
    else:
        print('输入错误')
    
def main():
    menuDisply()

main()

【步骤7】:程序运行显示功能菜单,完成后可以选择退出,如图6-2-28所示。
在这里插入图片描述

图6-2-28 功能菜单

相关知识

1. 密码字典

密码字典,是配合密码破译软件所使用的。密码字典里包括许多人们习惯性设置的密码,这样可以提高密码破译软件的密码破译成功率和命中率,缩短密码破译的时间。
如果一个人密码设置没有规律或很复杂,未包含在密码字典里,这个字典就没有用了,甚至会延长密码破译所需要的时间。

2. 密码字典生成软件

目前常用的密码字典生成软件,主要为以下几款:
• 木头字典生成器。
• 黑刀超级字典生成器。
• 真空密码字典生成器。
• 万能钥匙字典生成工具。

任务评价

请学生按照下表中的要求完成本次评价,并在物理机桌面上以自己的两位学号+姓名的形式命名文件夹,保存所有截图文件,文件保存为jpeg或 png格式。
在这里插入图片描述

任务拓展

  1. 收集并总结国内常用弱密码,并将其加入你的密码字典
  2. 收集并总结国外常用弱密码,并将其加入你的密码字典

项目评价

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2245055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB蒙特卡洛仿真计算投资组合的VaR(Value at Risk )

1. 计算VaR简介 VaR&#xff08;Value at Risk&#xff09;&#xff0c;一般被称为“风险价值”或“在险价值”&#xff0c;是指在一定的置信水平下&#xff0c;某一金融资产&#xff08;或证券组合&#xff09;在未来特定的一段时间内的最大可能损失。VaR提供了一个具体的数值…

【linux学习指南】VSCode部署Ubantu云服务器,与Xshell进行本地通信文件编写

文章目录 &#x1f4dd;前言&#x1f320; 步骤&#x1f309;测试同步 &#x1f6a9;总结 &#x1f4dd;前言 本文目的是讲使用Vscode连接Ubantu,与本地Xshell建立通信同步文件编写。 查看本机系统相关信息&#xff1a; cat /etc/lsb*DISTRIB_IDUbuntu: 表示这是 Ubuntu 发行…

stm32下的ADC转换(江科协 HAL版)

十二. ADC采样 文章目录 十二. ADC采样12.1 ADC的采样原理12.2 STM32的采样基本过程1.引脚与GPIO端口的对应关系2.ADC规则组的四种转换模式(**)2.2 关于转换模式与配置之间的关系 12.3 ADC的时钟12.4 代码实现(ADC单通道 & ADC多通道)1. 单通道采样2. 多通道采样 19.ADC模数…

DockerFile与容器构建技术

一、 Docker架构 二、容器镜像分类 操作系统类 CentOSUbuntu在dockerhub下载或自行制作 应用类 TomcatNginxMySQLRedis 三、容器镜像获取的方法 主要有以下几种&#xff1a; 1、在DockerHub直接下载 2、把操作系统中文件系统打包为容器镜像 3、把正在运行的容器打包为容器镜…

分布式数据库中间件可以用在哪些场景呢

在数字化转型的浪潮中&#xff0c;企业面临着海量数据的存储、管理和分析挑战。华为云分布式数据库中间件&#xff08;DDM&#xff09;作为一款高效的数据管理解决方案&#xff0c;致力于帮助企业在多个场景中实现数据的高效管理和应用&#xff0c;提升业务效率和用户体验。九河…

jmeter常用配置元件介绍总结之断言

系列文章目录 1.windows、linux安装jmeter及设置中文显示 2.jmeter常用配置元件介绍总结之安装插件 3.jmeter常用配置元件介绍总结之线程组 4.jmeter常用配置元件介绍总结之函数助手 5.jmeter常用配置元件介绍总结之取样器 6.jmeter常用配置元件介绍总结之jsr223执行pytho…

项目技术栈-解决方案-web3去中心化

web3去中心化 Web3 DApp区块链:钱包:智能合约:UI:ETH系开发技能树DeFi应用 去中心化金融P2P 去中心化网络参考Web3 DApp 区块链: 以以太坊(Ethereum)为主流,也包括Solana、Aptos等其他非EVM链。 区块链本身是软件,需要运行在一系列节点上,这些节点组成P2P网络或者半…

多目标优化算法:多目标蛇鹫优化算法(MOSBOA)求解DTLZ1-DTLZ9,提供完整MATLAB代码

一、蛇鹫优化算法 蛇鹫优化算法&#xff08;Secretary Bird Optimization Algorithm&#xff0c;简称SBOA&#xff09;由Youfa Fu等人于2024年4月发表在《Artificial Intelligence Review》期刊上的一种新型的元启发式算法。该算法旨在解决复杂工程优化问题&#xff0c;特别是…

数据集-目标检测系列- 花卉 鸡蛋花 检测数据集 frangipani >> DataBall

数据集-目标检测系列- 花卉 鸡蛋花 检测数据集 frangipani >> DataBall DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 贵在坚持&#xff01; 数据样例项目地址&#xff1a; * 相关项目 1&#xff09;数据集…

【Pikachu】SSRF(Server-Side Request Forgery)服务器端请求伪造实战

尽人事以听天命 1.Server-Side Request Forgery服务器端请求伪造学习 SSRF&#xff08;服务器端请求伪造&#xff09;攻击的详细解析与防范 SSRF&#xff08;Server-Side Request Forgery&#xff0c;服务器端请求伪造&#xff09; 是一种安全漏洞&#xff0c;它允许攻击者通…

Element Plus

快速入门: 然后我在src下创建了一个Button.vue文件,再去Element-plus官网查找组件的源码 常用组件 表格: <script lang"ts" setup> import {Delete,Edit, } from element-plus/icons-vueconst tableData [{title: 标题1,category: 时事,time: 2000-…

界面控件DevExpress WPF中文教程:网格视图数据布局的列和卡片字段

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

实现两个表格的数据传递(类似于穿梭框)

类似于element的 第一个表格信息以及按钮&#xff1a; <div style"height: 80%"><el-table :data"tableData1" border :cell-style"{text-align:center}" style"width: 100%;"ref"multipleTable1"selection-chang…

NPOI 实现Excel模板导出

记录一下使用NPOI实现定制的Excel导出模板&#xff0c;已下实现需求及主要逻辑 所需Json数据 对应参数 List<PurQuoteExportDataCrInput> listData [{"ItemName": "电缆VV3*162*10","Spec": "电缆VV3*162*10","Uom":…

凸函数与深度学习调参

问题1&#xff1a;如何区分凸问题和凹问题&#xff1f; 问题2&#xff1a;深度学习如何区分调参&#xff1f;

DBeaver MACOS 安装 并连接到docker安装的mysql

官网下载&#xff1a;Download | DBeaver Community 网盘下载&#xff1a;链接: https://pan.baidu.com/s/15fAhbflHO-AGc-uAnc3Rjw?pwdbrz9 提取码: brz9 下载驱动 连接测试 报错 null, message from server: "Host 172.17.0.1 is not allowed to connect to this M…

php:使用socket函数创建WebSocket服务

一、前言 闲来无事&#xff0c;最近捣鼓了下websocket&#xff0c;但是不希望安装第三方类库&#xff0c;所以打算用socket基础函数创建个服务。 二、构建websocket服务端 <?phpclass SocketService {// 默认的监听地址和端口private $address 0.0.0.0;private $port 8…

@RequestBody、@Data、@Validated、@Pattern(regexp=“?“)(复习)

目录 一、注解RequestBody。 二、注解Data。 三、注解Validated、Pattern(regexp"?")。 1、完成实体参数&#xff08;对象属性&#xff09;校验。 2、NotNull、NotEmpty、Email。 一、注解RequestBody。 &#xff08;如&#xff1a;JSON格式的数据——>Java对象&…

基于YOLOv8深度学习的医学影像骨折检测诊断系统研究与实现(PyQt5界面+数据集+训练代码)

本论文深入研究并实现了一种基于YOLOV8深度学习模型的医学影像骨折检测与诊断系统&#xff0c;旨在为医学影像中的骨折检测提供高效且准确的自动化解决方案。随着医疗影像技术的快速发展&#xff0c;临床医生需要从大量复杂的医学图像中精确、快速地识别病灶区域&#xff0c;特…

69.x的平方根-力扣(LeetCode)

题目&#xff1a; 解题思路&#xff1a; 解决本题主要运用的方法是二分法&#xff0c;二分法是一种在有序数组中查找某一特定元素的搜索算法。鉴于本题满足整个序列是有序的&#xff0c;并且可以通过比较来改变区间&#xff0c;满足二分法的应用条件&#xff0c;所以采用二分法…