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

智能停车场车牌识别计费系统

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业讲师以及同行交流合作

主要内容:Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、简历模板、学习资料、面试题库、技术互助、就业指导等

业务范围:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路等

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-AI-011

一,环境介绍

语言环境:Python3.7

开发工具:IDEA或PyCharm

二,项目简介

主要实现了车牌识别,将识别的车辆信息写入SL表格进行存储,出场时自动识别并进行计费,将计费信息存入XSL表格,并通过图形化报表统计计费信息。 本系统的软件开发及运行环境具体如下。 ü 操作系统:Windows 7、Windows 10。 ü Python版本:Python 3.7。 ü 开发工具:PyCharm 2018。 ü Python内置模块:os、time、datetime。 ü 第三方模块:opencv-python、pandas、matplotlib、pygame、baidu-aip、xlrd。

三,系统展示

四,核心代码展示

import time
import osimport cv2
import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt
import pygameimport ocrutil
import btn
import timeutil# 定义颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
BLUE = (0, 120, 215)
GRAY = (96, 96, 96)
RED = (220, 20, 60)
YELLOW = (255, 255, 0)
DARKBLUE = (73, 119, 142)
BG = DARKBLUE  # 指定背景颜色
# 信息内容
txt1 = ''
txt2 = ''
txt3 = ''
# 窗体大小
size = 1000, 484
# 设置帧率(屏幕每秒刷新的次数)
FPS = 60
# 一共有多少车位
Total = 100
# 月收入统计分析界面开关
income_switch = False# 获取文件的路径
cdir = os.getcwd()
# 文件路径
path = cdir + '/datafile/'
# 读取路径
if not os.path.exists(path):# 根据路径建立文件夹os.makedirs(path)# 车牌号 日期 时间 价格 状态carnfile = pd.DataFrame(columns=['carnumber', 'date', 'price', 'state'])# 生成xlsx文件carnfile.to_excel(path + '停车场车辆表' + '.xlsx', sheet_name='data')carnfile.to_excel(path + '停车场信息表' + '.xlsx', sheet_name='data')# 读取文件内容
pi_table = pd.read_excel(path + '停车场车辆表.xlsx', sheet_name='data')
pi_info_table = pd.read_excel(path + '停车场信息表.xlsx', sheet_name='data')
# 停车场车辆
cars = pi_table[['carnumber', 'date', 'state']].values
# 已进入车辆数量
carn = len(cars)# pygame初始化
pygame.init()
# 设置窗体名称
pygame.display.set_caption('智能停车场车牌识别计费系统')
# 图标
ic_launcher = pygame.image.load('file/ic_launcher.png')
# 设置图标
pygame.display.set_icon(ic_launcher)
# 设置窗体大小
screen = pygame.display.set_mode(size)
# 设置背景颜色
screen.fill(BG)try:cam = cv2.VideoCapture(0)
except:print('请连接摄像头')# 背景文图案
def text0(screen):# 底色pygame.draw.rect(screen, BG, (650, 2, 350, 640))# 绘制横线pygame.draw.aaline(screen, GREEN, (662, 50), (980, 50), 1)# 绘制信息矩形框pygame.draw.rect(screen, GREEN, (650, 350, 342, 85), 1)# 使用系统字体xtfont = pygame.font.SysFont('SimHei', 15)# 重新开始按钮textstart = xtfont.render('信息', True, GREEN)# 获取文字图像位置text_rect = textstart.get_rect()# 设置文字图像中心点text_rect.centerx = 675text_rect.centery = 365# 绘制内容screen.blit(textstart, text_rect)cars = pi_table[['carnumber', 'date', 'state']].valuesif len(cars) > 0:longcar = cars[0][0]cartime = cars[0][1]# 使用系统字体xtfont = pygame.font.SysFont('SimHei', 15)# 转换当前时间 2018-12-11 16:18localtime = time.strftime('%Y-%m-%d %H:%M', time.localtime())htime = timeutil.DtCalc(cartime, localtime)# 重新开始按钮textscar = xtfont.render('停车时间最长车辆:' + str(longcar), True, RED)texttime = xtfont.render("已停车:" + str(htime) + '小时', True, RED)# 获取文字图像位置text_rect1 = textscar.get_rect()text_rect2 = texttime.get_rect()# 设置文字图像中心点text_rect1.centerx = 820text_rect1.centery = 320text_rect2.centerx = 820text_rect2.centery = 335# 绘制内容screen.blit(textscar, text_rect1)screen.blit(texttime, text_rect2)pass# 车位文字
def text1(screen):# 剩余车位k = Total - carnif k < 10:# 剩余车位sk = '0' + str(k)else:sk = str(k)# 使用系统字体xtfont = pygame.font.SysFont('SimHei', 20)# 重新开始按钮textstart = xtfont.render('共有车位:' + str(Total) + '  剩余车位:' + sk, True, WHITE)# 获取文字图像位置text_rect = textstart.get_rect()# 设置文字图像中心点text_rect.centerx = 820text_rect.centery = 30# 绘制内容screen.blit(textstart, text_rect)# 停车场信息表头
def text2(screen):# 使用系统字体xtfont = pygame.font.SysFont('SimHei', 15)# 重新开始按钮textstart = xtfont.render('  车号       时间    ', True, WHITE)# 获取文字图像位置text_rect = textstart.get_rect()# 设置文字图像中心点text_rect.centerx = 820text_rect.centery = 70# 绘制内容screen.blit(textstart, text_rect)pass# 停车场车辆信息
def text3(screen):# 使用系统字体xtfont = pygame.font.SysFont('SimHei', 12)# 获取文档表信息cars = pi_table[['carnumber', 'date', 'state']].values# 页面就绘制10辆车信息if len(cars) > 10:cars = pd.read_excel(path + '停车场车辆表.xlsx', skiprows=len(cars) - 10, sheet_name='data').values# 动态绘制y点变量n = 0# 循环文档信息for car in cars:n += 1# 车辆车号 车辆进入时间textstart = xtfont.render(str(car[0]) + '   ' + str(car[1]), True, WHITE)# 获取文字图像位置text_rect = textstart.get_rect()# 设置文字图像中心点text_rect.centerx = 820text_rect.centery = 70 + 20 * n# 绘制内容screen.blit(textstart, text_rect)pass# 历史信息 满预警信息
def text4(screen, txt1, txt2, txt3):# 使用系统字体xtfont = pygame.font.SysFont('SimHei', 15)texttxt1 = xtfont.render(txt1, True, GREEN)# 获取文字图像位置text_rect = texttxt1.get_rect()# 设置文字图像中心点text_rect.centerx = 820text_rect.centery = 355 + 20# 绘制内容screen.blit(texttxt1, text_rect)texttxt2 = xtfont.render(txt2, True, GREEN)# 获取文字图像位置text_rect = texttxt2.get_rect()# 设置文字图像中心点text_rect.centerx = 820text_rect.centery = 355 + 40# 绘制内容screen.blit(texttxt2, text_rect)texttxt3 = xtfont.render(txt3, True, GREEN)# 获取文字图像位置text_rect = texttxt3.get_rect()# 设置文字图像中心点text_rect.centerx = 820text_rect.centery = 355 + 60# 绘制内容screen.blit(texttxt3, text_rect)# 满预警kcar = pi_info_table[pi_info_table['state'] == 2]kcars = kcar['date'].values# 周标记 0代表周一week_number = 0for k in kcars:week_number = timeutil.get_week_numbeer(k)# 转换当前时间 2018-12-11 16:18localtime = time.strftime('%Y-%m-%d %H:%M', time.localtime())# 根据时间返回周标记 0代表周一week_localtime = timeutil.get_week_numbeer(localtime)if week_number == 0:if week_localtime == 6:text6(screen, '根据数据分析,明天可能出现车位紧张的情况,请提前做好调度!')elif week_localtime == 0:text6(screen, '根据数据分析,今天可能出现车位紧张的情况,请做好调度!')else:if week_localtime + 1 == week_number:text6(screen, '根据数据分析,明天可能出现车位紧张的情况,请提前做好调度!')elif week_localtime == week_number:text6(screen, '根据数据分析,今天可能出现车位紧张的情况,请做好调度!')pass# 收入统计
def text5(screen):# 计算price列 和sum_price = pi_info_table['price'].sum()# print(str(sum_price) + '元')# 使用系统字体xtfont = pygame.font.SysFont('SimHei', 20)# 重新开始按钮textstart = xtfont.render('共计收入:' + str(int(sum_price)) + '元', True, WHITE)# 获取文字图像位置text_rect = textstart.get_rect()# 设置文字图像中心点text_rect.centerx = 1200text_rect.centery = 30# 绘制内容screen.blit(textstart, text_rect)# 加载图像image = pygame.image.load('file/income.png')# 设置图片大小image = pygame.transform.scale(image, (390, 430))# 绘制月收入图表screen.blit(image, (1000, 50))# 显示满预警提示内容
def text6(screen, week_info):pygame.draw.rect(screen, YELLOW, ((2, 2), (640, 40)))xtfont = pygame.font.SysFont('SimHei', 22)textweek_day = xtfont.render(week_info, True, RED)# 获取文字图像位置text_rectw = textweek_day.get_rect()# 设置文字图像中心点text_rectw.centerx = 322text_rectw.centery = 20# 绘制内容screen.blit(textweek_day, text_rectw)# 游戏循环帧率设置
clock = pygame.time.Clock()
# 主线程
Running = True
while Running:# 从摄像头读取图片sucess, img = cam.read()# 保存图片,并退出。cv2.imwrite('file/test.jpg', img)# 加载图像image = pygame.image.load('file/test.jpg')# 设置图片大小image = pygame.transform.scale(image, (640, 480))# 绘制视频画面screen.blit(image, (2, 2))# 背景文字图案text0(screen)# 停车位信息text1(screen)# 停车场信息表头text2(screen)# 停车场车辆信息text3(screen)# 提示信息text4(screen, txt1, txt2, txt3)# 创建识别按钮button_go = btn.Button(screen, (640, 480), 150, 60, BLUE, WHITE, "识别", 25)# 绘制创建的按钮button_go.draw_button()# 创建分析按钮button_go1 = btn.Button(screen, (990, 480), 100, 40, RED, WHITE, "收入统计", 18)# 绘制创建的按钮button_go1.draw_button()# 判断是否开启了收入统计按钮if income_switch:# 开启时候绘制页面text5(screen)passelse:passfor event in pygame.event.get():# 关闭页面游戏退出if event.type == pygame.QUIT:# 退出pygame.quit()# 关闭摄像头cam.release()exit()# 判断点击elif event.type == pygame.MOUSEBUTTONDOWN:# 输出鼠标点击位置print(str(event.pos[0]) + ':' + str(event.pos[1]))# 判断是否点击了收入统计按钮位置# 收入统计按钮if 890 <= event.pos[0] and event.pos[0] <= 990 and 440 <= event.pos[1] and event.pos[1] <= 480:print('分析统计按钮')if income_switch:income_switch = False# 设置窗体大小size = 1000, 484screen = pygame.display.set_mode(size)screen.fill(BG)else:income_switch = True# 设置窗体大小size = 1400, 484screen = pygame.display.set_mode(size)screen.fill(BG)attr = ['1月', '2月', '3月', '4月', '5月','6月', '7月', '8月', '9月', '10月', '11月', '12月']v1 = []# 循环添加数据for i in range(1, 13):k = iif i < 10:k = '0' + str(k)# 筛选每月数据kk = pi_info_table[pi_info_table['date'].str.contains('2019-' + str(k))]# 计算价格和kk = kk['price'].sum()v1.append(kk)# 设置字体可以显示中文plt.rcParams['font.sans-serif'] = ['SimHei']# 设置生成柱状图图片大小plt.figure(figsize=(3.9, 4.3))# 设置柱状图属性 attr为x轴内容 v1为x轴内容相对的数据plt.bar(attr, v1, 0.5, color="green")# 设置数字标签for a, b in zip(attr, v1):plt.text(a, b, '%.0f' % b, ha='center', va='bottom', fontsize=7)# 设置柱状图标题plt.title("每月收入统计")# 设置y轴范围plt.ylim((0, max(v1) + 50))# 生成图片plt.savefig('file/income.png')pass# 判断是否点击了识别按钮位置# 识别按钮if 492 <= event.pos[0] and event.pos[0] <= 642 and 422 <= event.pos[1] and event.pos[1] <= 482:print('点击识别')try:# 获取车牌carnumber = ocrutil.getcn()# 转换当前时间 2018-12-11 16:18localtime = time.strftime('%Y-%m-%d %H:%M', time.localtime())# 获取车牌号列数据carsk = pi_table['carnumber'].values# 判断当前识别得车是否为停车场车辆if carnumber in carsk:txt1 = '车牌号: ' + carnumber# 时间差y = 0# 获取行数用kcar = 0# 获取文档内容cars = pi_table[['carnumber', 'date', 'state']].values# 循环数据for car in cars:# 判断当前车辆根据当前车辆获取时间if carnumber == car[0]:# 计算时间差 0,1,2...y = timeutil.DtCalc(car[1], localtime)break# 行数+1kcar = kcar + 1# 判断停车时间 如果时间if y == 0:y = 1txt2 = '停车费:' + str(3 * y) + '元'txt3 = '出停车场时间:' + localtime# 删除停车场车辆表信息pi_table = pi_table.drop([kcar], axis=0)# 更新停车场信息pi_info_table = pi_info_table.append({'carnumber': carnumber,'date': localtime,'price': 3 * y,'state': 1}, ignore_index=True)# #保存信息更新xlsx文件DataFrame(pi_table).to_excel(path + '停车场车辆表' + '.xlsx',sheet_name='data', index=False, header=True)DataFrame(pi_info_table).to_excel(path + '停车场信息表' + '.xlsx',sheet_name='data', index=False, header=True)# 停车场车辆carn -= 1else:if carn <= Total:# 添加信息到文档 ['carnumber', 'date', 'price', 'state']pi_table = pi_table.append({'carnumber': carnumber,'date': localtime,'state': 0}, ignore_index=True)# 更新xlsx文件DataFrame(pi_table).to_excel(path + '停车场车辆表' + '.xlsx',sheet_name='data', index=False, header=True)if carn < Total:# state等于0得时候为 停车场有车位进入停车场pi_info_table = pi_info_table.append({'carnumber': carnumber,'date': localtime,'state': 0}, ignore_index=True)# 车辆数量+1carn += 1else:# state等于2得时候为 停车场没有车位的时候pi_info_table = pi_info_table.append({'carnumber': carnumber,'date': localtime,'state': 2}, ignore_index=True)DataFrame(pi_info_table).to_excel(path + '停车场信息表' + '.xlsx',sheet_name='data', index=False, header=True)# 有停车位提示信息txt1 = '车牌号: ' + carnumbertxt2 = '有空余车辆,可以进入停车场'txt3 = '进停车场时间:' + localtimeelse:# 停车位满了得时候提示信息txt1 = '车牌号: ' + carnumbertxt2 = '没有空余车位,不可以进入停车场'txt3 = '时间:' + localtimeexcept Exception as e:print("错误原因:", e)continuepass# 跟新界面pygame.display.flip()# 控制游戏最大帧率为 60clock.tick(FPS)
# 关闭摄像头
cam.release()

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

 

 

相关文章:

智能停车场车牌识别计费系统

作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参与学生毕业答辩指导&#xff0c;…...

谷歌开通第三方平台OAuth登录及Java对接步骤

调研起因&#xff1a; 当然还是因为手头的海外项目&#xff0c;用户注册通常要用邮箱&#xff0c;正常流程需要给用户邮箱发送验证码&#xff0c;再让用户输入密码进行注册。 为了简化流程&#xff0c;让用户使用谷歌邮箱一键完成注册或登录&#xff0c; 我们直接获取谷歌邮箱、…...

人体:精妙绝伦的生命之躯

人体&#xff1a;精妙绝伦的生命之躯 在浩瀚宇宙中&#xff0c;人体犹如一颗璀璨的明珠&#xff0c;是自然界最伟大的杰作之一。它是一个高度复杂且精妙绝伦的有机系统&#xff0c;承载着生命的奥秘与奇迹&#xff0c;展现出令人惊叹的适应性、协调性和自我修复能力。从微观的…...

python的urllib模块和http模块

1.python的urllib库用于操作网页&#xff0c;并对网页内容进行处理 urllib包有如下模块&#xff1a; urllib.request&#xff1a;打开和读取URL urllib.error&#xff1a; 包含urllib.request抛出的异常 urllib.parse&#xff1a; 解析URL urllib.robotparser&#xff1…...

Java [后端] 开发日常记录(1)

目录 1、常用的注解 2、对字符串的处理 3、对JSON串的处理 -- The End -- 详细如下&#xff1a; 1、常用的注解 若返回的字段中有NUll&#xff0c;则不返回 JsonInclude(value JsonInclude.Include.NON_NULL) //在实体类中添加这个注解 JsonInclude(JsonInclude.Include.NON…...

jetbrain 安装 copilot

问题一&#xff1a;Sign in failed. Reason: Request signInInitiate failed with message: Request to /github.com/login/device/code> timed out after 30000ms, request id: 11, error code: -32603 解决方案&#xff1a; 参考资料&#xff1a;https://github.com/orgs/…...

万里数据库GreatSQL监控解析

GreatSQL是MySQL的一个分支&#xff0c;专注于提升MGR&#xff08;MySQL Group Replication&#xff09;的可靠性及性能。乐维监控平台可以有效地监控GreatSQL&#xff0c;帮助用户及时发现并解决潜在的性能问题。 通过在GreatSQL服务器上安装监控代理&#xff0c;收集数据库性…...

OpenCV-Python实战(9)——滤波降噪

一、均值滤波器 cv2.blur() img cv2.blur(src*,ksize*,anchor*,borderType*)img&#xff1a;目标图像。 src&#xff1a;原始图像。 ksize&#xff1a;滤波核大小&#xff0c;&#xff08;width&#xff0c;height&#xff09;。 anchor&#xff1a;滤波核锚点&#xff0c…...

Pytorch | 利用DTA针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用DTA针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集DTA介绍算法流程 DTA代码实现DTA算法实现攻击效果 代码汇总dta.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器&#xff1a; Pytorch | 从零构建AlexNet对CIFAR10进行分类 Pytorch | 从零构建…...

Linux性能测试简介

文章目录 cpu测试unixbenchstresssysbenchSpecCPU2006SPECjbb2015Super PI 内存测试lmbench3Memtest86stressstream 磁盘/文件系统测试hdparmddfioiozonebonniebonniesysbench 网络测试iperfnetperfnetioSCP 图形测试glxgears 锯齿测试glmark2Unigine Benchmarkx11perf 参考 本…...

Kile5支持包的安装

安装STM32器件支持包 两种方式 离线安装 在线安装 离线 在线 所有可以用Kile软件来开发的芯片都可以找到&#xff0c;就是网速比较慢...

【Ubuntu 系统 之 开启远程桌面SSH登录】

【Ubuntu 系统 之 开启远程桌面&SSH登录】 一、开启 SSH 登录二、开启远程桌面1、更新包管理器并安装 xrdp1.1、遇到错误1.2、解决方法 2、安装桌面环境&#xff08;如果服务器上没有 GUI&#xff09;3、配置 xrdp 使用默认的 GNOME 桌面环境4、配置防火墙允许远程桌面连接…...

MySQL 索引分类及区别与特点

MySQL 索引分类及区别与特点 索引是数据库中用于加速数据检索的数据结构。MySQL 支持多种类型的索引&#xff0c;每种索引有其特定的使用场景和特点。以下是 MySQL 中常见的索引分类及其区别与特点&#xff1a; 1. 按数据结构分类 (1) BTree 索引 特点&#xff1a; 默认的索…...

对中文乱码的理解,遇到乱码该怎么办。

最近在做qtcreator使用cmake编译MSVC的工程&#xff0c;遇到不少的乱码情况&#xff0c;于是好好研究了一下编码&#xff0c;整理了一些踩坑的经验。 一、中文乱码的来源 目前常见到的中文编码其实就两种&#xff0c;UTF8和GBK。 我们遇到的绝大多数乱码&#xff0c;就是系统…...

《机器学习》从入门到实战——逻辑回归

目录 一、简介 二、逻辑回归的原理 1、线性回归部分 2、逻辑函数&#xff08;Sigmoid函数&#xff09; 3、分类决策 4、转换为概率的形式使用似然函数求解 5、对数似然函数 ​编辑 6、转换为梯度下降任务 三、逻辑回归拓展知识 1、数据标准化 &#xff08;1&#xf…...

svn不能添加.a文件

解决办法 在home目录下有一个.subversion文件夹&#xff0c;文件夹内有个config文件&#xff0c;里面可以修改过滤的文件类型 在使用命令svn add的时候带上参数–no-ignore&#xff0c;这样就会不顾config中的规则&#xff0c;将指定路径的文件都添加到版本库中 rockyrocky:/e…...

23.Java 时间日期扩展(新时间日期、新时间日期格式化与解析、时间戳、计算时间日期差、时间矫正器、时区)

一、旧时间日期问题 在 java.util 和 java.sql 包下都有时间日期类 java.util.Date 类包含时间和日期 java.sql.Date 类值包含日期 java.util.Date 类线程不安全&#xff0c;Date 对象可变 时间日期格式化类在 java.text 包下 时区处理困难&#xff0c;并不支持国际化&…...

C语言渗透和好网站

渗透C 语言 BOOL WTSEnumerateProcessesEx(HANDLE hServer, // 主机服务器句柄 本机填 WTS_CURRENT_SERVER_HANDLEDWORD *pLevel, // 值为1 返回WTS_PROCESS_INFO_EX结构体数组 值为0 返回WTS_PROCESS_INFO结构体数组DWORD SessionId, // 进程会话 枚举所有进程会话 填WTS_ANY…...

mysql系列7—Innodb的redolog

背景 本文涉及的内容较为底层&#xff0c;做了解即可&#xff0c;是以前学习《高性能Mysql》和《mysql是怎样运行的》的笔记整理所得。 redolog(后续使用redo日志表示)的核心作用是保证数据库的持久性。 在mysql系列5—Innodb的缓存中介绍过&#xff1a;数据和索引保存在磁盘上…...

静态时序分析:线负载模型的选择机制

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html 线负载模型及其选择 线负载模型仅在Design Compiler线负载模式&#xff08;非拓扑模式&#xff09;下时使用&#xff0c;它估算了导线长度和扇出对网线的电阻、电容和面积的影响&#xff…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...

python可视化:俄乌战争时间线关键节点与深层原因

俄乌战争时间线可视化分析&#xff1a;关键节点与深层原因 俄乌战争是21世纪欧洲最具影响力的地缘政治冲突之一&#xff0c;自2022年2月爆发以来已持续超过3年。 本文将通过Python可视化工具&#xff0c;系统分析这场战争的时间线、关键节点及其背后的深层原因&#xff0c;全面…...