Python3.7+PyQt5 pyuic5将.ui文件转换为.py文件、Python读取配置文件、生成日志
1.实际开发项目时,是使用Qt Designer来设计UI界面,得到一个.ui的文件,然后利用PyQt5安装时自带的工具pyuic5
将.ui文件转换为.py文件:
pyuic5 -o mywindow.py mywindow.ui #先是py文件名,再是ui文件名
样式图 QT5 UI:
转换的pyqt5:
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'ActionTools.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
import socketfrom PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
import sys
import io
import os
import datetime
import random
from subprocess import Popen,PIPE
from threading import Thread
import time
import configparserclass Ui_ActionWinfrm(QWidget):def __init__(self):super(Ui_ActionWinfrm,self).__init__()self.config=configparser.ConfigParser()#创建对象self.EmployeeInfo=[]#员工信息self.TestServer=[]#测试服务器设置self.MesServer=[]#Mes服务器self.ProductInfo=[]#产品信息self.config.read("./conf/config.conf",encoding="utf-8")#读取配置文件,如果配置文件不存在创建self.Err="NULL"#员工管理信息self.EmployeeInfo.append(self.config.get('EmployeeInfo','Employee'))#工号self.EmployeeInfo.append(self.config.get('EmployeeInfo','Line'))#线体#测试服务器设置self.TestServer.append(self.config.get('TestServer','host'))self.TestServer.append(self.config.get('TestServer','prot'))self.TestServer.append(self.config.get('TestServer','user'))self.TestServer.append(self.config.get('TestServer','password'))#连接服务器self.host = self.TestServer[0]self.prot = self.TestServer[1]#MES服务器设置self.MesServer.append(self.config.get('MesServer','url'))#产品信息self.ProductInfo.append(self.config.get('ProductInfo','ClientName'))self.ProductInfo.append(self.config.get('ProductInfo','ProductName'))self.ProductInfo.append(self.config.get('ProductInfo','OrderInfo'))self.ProductInfo.append(self.config.get('ProductInfo','OrderTotal'))self.ProductInfo.append(self.config.get('ProductInfo','CompleteOrder'))self.data=''self.setupUi()print(self.host + "," + self.prot)self.Client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)def setupUi(self):self.setObjectName("ActionWinfrm")self.resize(1000, 943)font = QtGui.QFont()font.setFamily("Arial")font.setPointSize(12)self.setFont(font)icon = QtGui.QIcon()icon.addPixmap(QtGui.QPixmap("./Imag/020.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.setWindowIcon(icon)self.verticalLayout = QtWidgets.QVBoxLayout(self)self.verticalLayout.setObjectName("verticalLayout")self.frame_5 = QtWidgets.QFrame(self)self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel)self.frame_5.setFrameShadow(QtWidgets.QFrame.Raised)self.frame_5.setObjectName("frame_5")self.frame_6 = QtWidgets.QFrame(self.frame_5)self.frame_6.setGeometry(QtCore.QRect(0, -1, 981, 41))self.frame_6.setStyleSheet("color: rgb(85, 255, 127);")self.frame_6.setFrameShape(QtWidgets.QFrame.StyledPanel)self.frame_6.setFrameShadow(QtWidgets.QFrame.Raised)self.frame_6.setObjectName("frame_6")self.lbl_WinTitle = QtWidgets.QLabel(self.frame_6)self.lbl_WinTitle.setGeometry(QtCore.QRect(390, 0, 351, 41))font = QtGui.QFont()font.setPointSize(26)self.lbl_WinTitle.setFont(font)self.lbl_WinTitle.setAlignment(QtCore.Qt.AlignCenter)self.lbl_WinTitle.setObjectName("lbl_WinTitle")self.lbl_loginfo = QtWidgets.QLabel(self.frame_6)self.lbl_loginfo.setGeometry(QtCore.QRect(10, 0, 161, 41))self.lbl_loginfo.setText("")self.lbl_loginfo.setPixmap(QtGui.QPixmap("./Imag/logo.jpg"))self.lbl_loginfo.setObjectName("lbl_loginfo")self.frame_7 = QtWidgets.QFrame(self.frame_5)self.frame_7.setGeometry(QtCore.QRect(0, 50, 981, 80))self.frame_7.setFrameShape(QtWidgets.QFrame.StyledPanel)self.frame_7.setFrameShadow(QtWidgets.QFrame.Raised)self.frame_7.setObjectName("frame_7")self.label = QtWidgets.QLabel(self.frame_7)self.label.setGeometry(QtCore.QRect(10, 10, 81, 16))self.label.setAlignment(QtCore.Qt.AlignCenter)self.label.setObjectName("label")self.label_3 = QtWidgets.QLabel(self.frame_7)self.label_3.setGeometry(QtCore.QRect(340, 10, 81, 16))self.label_3.setAlignment(QtCore.Qt.AlignCenter)self.label_3.setObjectName("label_3")self.label_4 = QtWidgets.QLabel(self.frame_7)self.label_4.setGeometry(QtCore.QRect(660, 10, 81, 16))self.label_4.setAlignment(QtCore.Qt.AlignCenter)self.label_4.setObjectName("label_4")self.label_2 = QtWidgets.QLabel(self.frame_7)self.label_2.setGeometry(QtCore.QRect(10, 50, 81, 16))self.label_2.setAlignment(QtCore.Qt.AlignCenter)self.label_2.setObjectName("label_2")self.label_5 = QtWidgets.QLabel(self.frame_7)self.label_5.setGeometry(QtCore.QRect(340, 50, 81, 16))self.label_5.setAlignment(QtCore.Qt.AlignCenter)self.label_5.setObjectName("label_5")self.label_6 = QtWidgets.QLabel(self.frame_7)self.label_6.setGeometry(QtCore.QRect(660, 50, 81, 16))self.label_6.setAlignment(QtCore.Qt.AlignCenter)self.label_6.setObjectName("label_6")self.label_7 = QtWidgets.QLabel(self.frame_7)self.label_7.setGeometry(QtCore.QRect(820, 50, 91, 20))self.label_7.setAlignment(QtCore.Qt.AlignCenter)self.label_7.setObjectName("label_7")self.lbl_ClientName = QtWidgets.QLabel(self.frame_7)self.lbl_ClientName.setGeometry(QtCore.QRect(100, 10, 151, 16))self.lbl_ClientName.setStyleSheet("color: rgb(255, 170, 0);")self.lbl_ClientName.setObjectName("lbl_ClientName")self.lbl_ProductName = QtWidgets.QLabel(self.frame_7)self.lbl_ProductName.setGeometry(QtCore.QRect(420, 10, 54, 12))self.lbl_ProductName.setStyleSheet("color: rgb(255, 170, 0);")self.lbl_ProductName.setObjectName("lbl_ProductName")self.lbl_OrderInfo = QtWidgets.QLabel(self.frame_7)self.lbl_OrderInfo.setGeometry(QtCore.QRect(730, 10, 101, 16))self.lbl_OrderInfo.setAutoFillBackground(False)self.lbl_OrderInfo.setStyleSheet("color: rgb(255, 170, 0);")self.lbl_OrderInfo.setObjectName("lbl_OrderInfo")self.lbl_Employee = QtWidgets.QLabel(self.frame_7)self.lbl_Employee.setGeometry(QtCore.QRect(90, 50, 91, 16))self.lbl_Employee.setStyleSheet("color: rgb(255, 170, 0);")self.lbl_Employee.setObjectName("lbl_Employee")self.lbl_Line = QtWidgets.QLabel(self.frame_7)self.lbl_Line.setGeometry(QtCore.QRect(420, 50, 81, 16))self.lbl_Line.setStyleSheet("color: rgb(255, 170, 0);")self.lbl_Line.setObjectName("lbl_Line")self.lbl_OrderTotal = QtWidgets.QLabel(self.frame_7)self.lbl_OrderTotal.setGeometry(QtCore.QRect(730, 50, 54, 12))self.lbl_OrderTotal.setStyleSheet("color: rgb(255, 170, 0);")self.lbl_OrderTotal.setObjectName("lbl_OrderTotal")self.lbl_COrderNum = QtWidgets.QLabel(self.frame_7)self.lbl_COrderNum.setGeometry(QtCore.QRect(910, 50, 54, 19))self.lbl_COrderNum.setStyleSheet("color: rgb(255, 170, 0);")self.lbl_COrderNum.setObjectName("lbl_COrderNum")self.textEdit = QtWidgets.QTextEdit(self.frame_5)self.textEdit.setGeometry(QtCore.QRect(0, 40, 981, 1))self.textEdit.setObjectName("textEdit")self.TW_TestItemList = QtWidgets.QTableWidget(self.frame_5)self.TW_TestItemList.setGeometry(QtCore.QRect(0, 180, 981, 631))font = QtGui.QFont()font.setPointSize(12)self.TW_TestItemList.setFont(font)self.TW_TestItemList.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)self.TW_TestItemList.setShowGrid(False)self.TW_TestItemList.setObjectName("TW_TestItemList")self.TW_TestItemList.setColumnCount(3)self.TW_TestItemList.setRowCount(0)self.item = QtWidgets.QTableWidgetItem()self.item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)font = QtGui.QFont()font.setFamily("Arial")font.setPointSize(12)self.item.setFont(font)icon1 = QtGui.QIcon()icon1.addPixmap(QtGui.QPixmap("Imag/NewAdd.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.item.setIcon(icon1)self.TW_TestItemList.setHorizontalHeaderItem(0, self.item)self.item = QtWidgets.QTableWidgetItem()self.item.setTextAlignment(QtCore.Qt.AlignCenter)font = QtGui.QFont()font.setFamily("Arial")font.setPointSize(12)self.item.setFont(font)icon2 = QtGui.QIcon()icon2.addPixmap(QtGui.QPixmap("Imag/TestArgs.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.item.setIcon(icon2)self.TW_TestItemList.setHorizontalHeaderItem(1, self.item)self.item = QtWidgets.QTableWidgetItem()self.item.setTextAlignment(QtCore.Qt.AlignCenter)font = QtGui.QFont()font.setFamily("Arial")font.setPointSize(12)self.item.setFont(font)icon3 = QtGui.QIcon()icon3.addPixmap(QtGui.QPixmap("Imag/Result.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.item.setIcon(icon3)self.TW_TestItemList.setHorizontalHeaderItem(2, self.item)self.TW_TestItemList.horizontalHeader().setMinimumSectionSize(40)self.TW_TestItemList.verticalHeader().setDefaultSectionSize(50)self.TW_TestItemList.verticalHeader().setMinimumSectionSize(50)self.label_8 = QtWidgets.QLabel(self.frame_5)self.label_8.setGeometry(QtCore.QRect(10, 140, 112, 25))self.label_8.setObjectName("label_8")self.lbl_TestResult = QtWidgets.QLabel(self.frame_5)self.lbl_TestResult.setGeometry(QtCore.QRect(0, 815, 981, 111))self.lbl_TestResult.setStyleSheet("background-color: rgb(0, 0, 0);\n""font: 22pt \"Arial\";\n""color: rgb(255, 255, 0);")self.lbl_TestResult.setAlignment(QtCore.Qt.AlignCenter)self.lbl_TestResult.setObjectName("lbl_TestResult")self.lbl_Isn = QtWidgets.QLineEdit(self.frame_5)self.lbl_Isn.setGeometry(QtCore.QRect(130, 140, 800, 31))self.lbl_Isn.setObjectName("lbl_Isn")self.verticalLayout.addWidget(self.frame_5)self.retranslateUi()QtCore.QMetaObject.connectSlotsByName(self)self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint | QtCore.Qt.WindowCloseButtonHint) # 只显示最小化按钮和关闭按钮self.lbl_Isn.setFocus()def retranslateUi(self):self._translate = QtCore.QCoreApplication.translateself.setWindowTitle(self._translate("ActionWinfrm", "【T.e.s.t】"))self.lbl_WinTitle.setText(self._translate("ActionWinfrm", "国产系统在线激活工具"))self.label.setText(self._translate("ActionWinfrm", "客户名称:"))self.label_3.setText(self._translate("ActionWinfrm", "产品名称:"))self.label_4.setText(self._translate("ActionWinfrm", "订单号:"))self.label_2.setText(self._translate("ActionWinfrm", "员工工号:"))self.label_5.setText(self._translate("ActionWinfrm", "线 体:"))self.label_6.setText(self._translate("ActionWinfrm", "订单数:"))self.label_7.setText(self._translate("ActionWinfrm", "完成订单数:"))self.lbl_ClientName.setText(self.ProductInfo[0])#客户名称self.lbl_ProductName.setText(self.ProductInfo[1])#产品名称self.lbl_OrderInfo.setText(self.ProductInfo[2])#订单信息self.lbl_OrderTotal.setText(self.ProductInfo[3])#订单总数self.lbl_COrderNum.setText(self.ProductInfo[4])#完成订单数self.lbl_Employee.setText(self.EmployeeInfo[0])#工号self.lbl_Line.setText(self.EmployeeInfo[1])#线体self.item = self.TW_TestItemList.horizontalHeaderItem(0)self.item.setText(self._translate("ActionWinfrm", "项目名称"))self.item = self.TW_TestItemList.horizontalHeaderItem(1)self.item.setText(self._translate("ActionWinfrm", "测试参数"))self.item = self.TW_TestItemList.horizontalHeaderItem(2)self.item.setText(self._translate("ActionWinfrm", "测试结果"))self.TW_TestItemList.setColumnWidth(0,300)self.TW_TestItemList.setColumnWidth(1, 370)self.TW_TestItemList.setColumnWidth(2, 300)self.TW_TestItemList.setShowGrid(False)#是否显示网线self.label_8.setText(self._translate("ActionWinfrm", "扫描整机条码:"))self.lbl_TestResult.setText(self._translate("ActionWinfrm", "待测试"))def Center(self):#定义一个函数使得函数窗口居中显示#获取屏幕坐标系self.screen=QDesktopWidget().screenGeometry()#获取窗口坐标系self.size=self.geometry()self.newLeft=(self.screen.width()-self.size.width())/2self.newTop=(self.screen.height()-self.size.height())/2.7self.move(int(self.newLeft),int(self.newTop))def Connect(self,message):try:self.Client_socket.connect(self.host,int(self.port))self.lbl_TestResult.setText("Connected To Server..")self.lbl_TestResult.setForeground(QtGui.QColor(51, 204, 51))self.Client_socket.sendall(message.encode())self.data=self.Client_socket.recv(1024)except Exception as e:self.lbl_TestResult.setText("Connected To Server Err:"+str(e))self.lbl_TestResult.setStyleSheet("color:red")return Falseself.Client_socket.close()return Trueif __name__ == '__main__':app = QApplication(sys.argv)win = Ui_ActionWinfrm()win.Center()win.show()#win.Client('10.2.230.10', 8888)win.Connect('tell me the product name and position:00E04C060621')sys.exit(app.exec_())
效果:
2.Python学习之读取配置文件:
初始配置文件test.conf:
步骤1:导入配置文件模块
import configparser
步骤2:创建配置文件对象
config = configparser.ConfigParser()
步骤3:读取配置文件
在这一步中,我们将读取配置文件。配置文件通常存储在.ini或.conf文件中。
config.read('config.ini')
步骤4:获取配置选项
option_value = config.get('section_name', 'option_name')
步骤5:修改配置选项
config.set('section_name', 'option_name', 'new_value')
步骤6:保存配置文件
with open('config.ini', 'w') as config_file:config.write(config_file)
*.展正读取confg的实列:
3.生成日志:
1.创建日志记录器
import logging# 创建一个日志记录器实例
logger = logging.getLogger('my_logger')
2 设置日志记录级别
logger.setLevel(logging.DEBUG)使用setLevel()方法设置日志记录的级别,可以根据需要进行调整。常用的日志级别有:logging.DEBUG:最详细的日志信息,用于调试程序。
logging.INFO:一般的日志信息,用于确认程序正常运行。
logging.WARNING:警告信息,表明程序可能出现问题。
logging.ERROR:错误信息,程序出现错误但仍然可以继续运行。
logging.CRITICAL:严重错误信息,程序无法继续运行。
3.创建文件处理器
file_handler = logging.FileHandler('log.txt')
4.设置文件处理器的格式
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
5.将处理器添加到记录器中
logger.addHandler(file_handler)
6.输出日志信息
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')
相关文章:

Python3.7+PyQt5 pyuic5将.ui文件转换为.py文件、Python读取配置文件、生成日志
1.实际开发项目时,是使用Qt Designer来设计UI界面,得到一个.ui的文件,然后利用PyQt5安装时自带的工具pyuic5将.ui文件转换为.py文件: pyuic5 -o mywindow.py mywindow.ui #先是py文件名,再是ui文件名样式图 QT5 UI&am…...

使用 VPN ,一定要知道的几个真相!
你们好,我的网工朋友。 今天想和你聊聊VPN。在VPN出现之前,企业分支之间的数据传输只能依靠现有物理网络(例如Internet)。 但由于Internet中存在多种不安全因素,报文容易被网络中的黑客窃取或篡改,最终造…...

数电实验-----实现74LS153芯片扩展为8选1时间选择器以及应用(Quartus II )
目录 一、74LS153芯片介绍 管脚图 功能表 二、4选1选择器扩展为8选1选择器 1.扩展原理 2.电路图连接(Quartus II ) 3.仿真结果 三、8选1选择器的应用 1.三变量表决器 2.奇偶校验电路 一、74LS153芯片介绍 74ls153芯片是属于四选一选择器的芯片。…...

如何实现MATLAB与Simulink的数据交互
参考链接:如何实现MATLAB与Simulink的数据交互 MATLAB是一款强大的数学计算软件,Simulink则是一种基于模型的多域仿真平台,常用于工程和科学领域中的系统设计、控制设计和信号处理等方面。MATLAB和Simulink都是MathWorks公司的产品࿰…...

【数据结构】归并排序
👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:数据结构 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你…...

数字引领,智慧赋能|袋鼠云与易知微共同亮相2023智慧港口大会
2023年10月19日,由中国港口协会、中国交通通信信息中心、天津港(集团)有限公司主办,中国港口协会智慧港口专业委员会、《港口科技》杂志社等单位承办的以“数字引领 智慧赋能”为主题的“2023智慧港口大会”在天津顺利召开。 袋鼠…...

星火模型(Spark)的langchain 实现
星火模型的langchain实现 测试已通过,希望有所帮助。 使用前请先安装环境: pip install githttps://github.com/shell-nlp/spark-ai-python.git注意: 一定要使用上面方式安装spark库,因对官方的库做了改动。官方的库已经长时间不…...
python运算符重载之构造函数和迭代器
1 python运算符重载之构造函数和迭代器 python运算符重载是在类方法中拦截内置操作-当类的实例使用内置操作时,pytho自动调用对应方法,并且返回操作结果。 NO#描述1拦截运算运算符重载拦截内置操作,比如打印、函数调用、点号运算、表达式运…...

【数据处理】Python:实现求条件分布函数 | 求平均值方差和协方差 | 求函数函数期望值的函数 | 概率论
猛戳订阅! 👉 《一起玩蛇》🐍 💭 写在前面:本章我们将通过 Python 手动实现条件分布函数的计算,实现求平均值,方差和协方差函数,实现求函数期望值的函数。部署的测试代码放到文后了,运行所需环境 python version >= 3.6,numpy >= 1.15,nltk >= 3.4,tqd…...
new/delete 和malloc/free的区别
C中: 创建单个数据空间: char *ch new char; delete ch; ch NULL; 创建多个数据空间: char *ch new char[4]; delete [] ch; ch NULL; C语言中: 创建单个数据空间: char *ch malloc(sizeof(char)); fre…...

Linux程序设计(上)
系列文章目录 文章目录 系列文章目录前言一、unix, linux, GNU, POSIXLinux程序 二、shellshell语法1.变量2.语句 函数命令命令的执行dialog工具-- 三、文件操作1. Linux 文件结构2. 系统调用和设备驱动程序3. 库函数4. 底层文件访问5. 标准I/O库6.格式化输入输出7. 文件和目录…...

mysql面试题——存储引擎相关
一:MySQL 支持哪些存储引擎? MySQL支持多种存储引擎,比如InnoDB,MyISAM, MySQL大于等于5.5之后,默认存储引擎是InnoDB 二:InnoDB 和 MyISAM 有什么区别? InnoDB支持事务,MyISAM不支持InnoD…...

趣学python编程 (四、数据结构和算法介绍)
数据结构和算法在编程中非常重要。数据结构是组织和存储数据的方式,而算法是解决问题的方法和步骤。你要挑战的蓝桥杯,实际也是在设计算法解决问题。其实各种编程语言都只是工具,而程序的核心数据结构算法。犹如练武,数据结构和算…...

使用Pandas进行时间重采样,充分挖掘数据价值
大家好,时间序列数据蕴含着很大价值,通过重采样技术可以提升原始数据的表现形式。本文将介绍数据重采样方法和工具,提升数据可视化技巧。 在进行时间数据可视化时,数据重采样是至关重要且非常有用的,它支持控制数据的…...

Django(九、choices参数的使用、多对多表的三种创建方式、Ajax技术)
文章目录 一、choices参数choices参数的用法choices 参数用法总结 二、MVC与MTV模式1.MVC2.MTV 三、多对多的三种创建方式1.全自动创建2.纯手动创建半自动创建 四、Django与Ajax1.什么是Ajax常见的场景Ajax案例 一、choices参数 在没有用到choices参数之前,我们在D…...
德语B级SampleAcademy
德语B级 一, 反身代词(1)A 主语和宾语一致(2)D 双宾语,主语与直接宾语不一致(3), 补充单词(4)真反身代词(5)假反身代词(6)真假反身代词(7)相互反身(8)非反身#反身#相互反身 二,Nomen…...
vue3自定义hooks
获取dom的id属性 index.ts import { onMounted } from "vue" type option {el: string }export default function(option:option):Promise<{name: string}> {return new Promise((resolve)>{onMounted(()>{const dom:HTMLElement document.querySele…...

Consistency Models 阅读笔记
简介 Diffusion models需要多步迭代采样才能生成一张图片,这导致生成速度很慢。一致性模型(Consistency models)的提出是为了加速生成过程。 Consistency models可以直接一步采样就生成图片,但是也允许进行多步采样来提高生成的质…...
杭电oj 2034 人见人爱A-B C语言
此处的c和a指向同一块内存空间,改变c就是改变a,反之亦然,此处是为了方便看这么写的,如果不想c和a指向同一空间请分别开辟空间(即不如此写camalloc) #include<stdio.h> #include<stdlib.h>int …...
springboot(ssm大学生成绩管理系统 成绩管理平台Java(codeLW)
springboot(ssm大学生成绩管理系统 成绩管理平台Java(code&LW) 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0&…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...