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

PyQt5-小总结

之前学习PyQt5,然后那段时间想做一个桌面小程序,后来由于学习内容较多就做了一小部分,但是可以进行页面跳转。大家如果是初学者对Python感兴趣而且刚学数据库时可以看看代码,可能会有点启发。

效果:

 登录进来是这:

 

 实现了账号密码的增删改功能

结构很简单

源代码如下:

database.py

import pymysql # 导入操作MySQL数据库的模块userName="" # 记录用户名# 打开数据库连接
def open():db = pymysql.connect(host="localhost", user="root", passwd="123456", database="db_goods",charset="utf8")return db # 返回连接对象#数据库增删改
def exec(sql,values):db=open() # 连接数据库cursor = db.cursor() # 使用cursor()方法获取操作游标try:cursor.execute(sql,values) # 执行增删改的SQL语句db.commit() # 提交数据return 1 # 执行成功except:db.rollback() # 发生错误时回滚return 0 # 执行失败finally:cursor.close() # 关闭游标db.close() # 关闭数据库连接
# 带参数的精确查询
def query(sql,*keys):db=open() # 连接数据库cursor = db.cursor() # 使用cursor()方法获取操作游标cursor.execute(sql,keys) # 执行查询SQL语句result = cursor.fetchall() # 记录查询结果cursor.close() # 关闭游标db.close() # 关闭数据库连接return result # 返回查询结果
# 不带参数的模糊查询
def query2(sql):db=open() # 连接数据库cursor = db.cursor() # 使用cursor()方法获取操作游标cursor.execute(sql) # 执行查询SQL语句result = cursor.fetchall() # 记录查询结果cursor.close() # 关闭游标db.close() # 关闭数据库连接return result # 返回查询结果

图片要放在这种文件里

<RCC><qresource prefix="newPrefix"><file>images/loginPIC.jpg</file><file>images/main.jpg</file></qresource>
</RCC>

 需要用到这个工具,大家自己查一下,很容易配置

login.py

#login.py
from PyQt5 import QtCore, QtGui, QtWidgets
import dataBase
from PyQt5.QtWidgets import QMessageBox
import main
from PyQt5.QtWidgets import *class Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint)MainWindow.resize(485, 280)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(0, 0, 261, 281))self.label.setPixmap(QtGui.QPixmap(":/newPrefix/images/loginPIC.jpg"))self.label.setObjectName("label")self.label_user = QtWidgets.QLabel(self.centralwidget)self.label_user.setGeometry(QtCore.QRect(270, 70, 72, 41))self.label_user.setObjectName("label_2")self.label_pwd = QtWidgets.QLabel(self.centralwidget)self.label_pwd.setGeometry(QtCore.QRect(270, 130, 72, 21))self.label_pwd.setObjectName("label_3")self.lineEdit_userName = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_userName.setGeometry(QtCore.QRect(330, 80, 113, 21))self.lineEdit_userName.setObjectName("lineEdit")self.lineEdit_userPasswd = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_userPasswd.setGeometry(QtCore.QRect(330, 130, 113, 21))self.lineEdit_userPasswd.setObjectName("lineEdit_2")self.lineEdit_userPasswd.setEchoMode(QtWidgets.QLineEdit.Password)self.pushButton_login = QtWidgets.QPushButton(self.centralwidget)self.pushButton_login.setGeometry(QtCore.QRect(290, 190, 61, 28))self.pushButton_login.setObjectName("pushButton")self.pushButton_exit = QtWidgets.QPushButton(self.centralwidget)self.pushButton_exit.setGeometry(QtCore.QRect(370, 190, 61, 28))self.pushButton_exit.setObjectName("pushButton_2")MainWindow.setCentralWidget(self.centralwidget)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)self.pushButton_exit.clicked.connect(MainWindow.close)  # 关闭登录窗体self.pushButton_login.clicked.connect(self.openMain)   #登录def openMain(self):dataBase.userName = self.lineEdit_userName.text()userPasswd = self.lineEdit_userPasswd.text()if dataBase.userName and userPasswd:result = dataBase.query("select * from goods_user where userName = %s and userPasswd = %s", dataBase.userName, userPasswd)if len(result) > 0:self.main_window = QtWidgets.QMainWindow()self.main_ui = main.Ui_MainWindow()self.main_ui.setupUi(self.main_window)self.main_window.show()MainWindow.hide()else:self.lineEdit_userName.setText("")self.lineEdit_userPasswd.setText("")QMessageBox.warning(None, '警告', '请输入正确的用户名和密码!', QMessageBox.Ok)else:QMessageBox.warning(None, '警告', '请输入用户名和密码!', QMessageBox.Ok)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "二手商品信息管理平台登录"))self.label_user.setText(_translate("MainWindow", "用户名:"))self.label_pwd.setText(_translate("MainWindow", "密  码:"))self.pushButton_login.setText(_translate("MainWindow", "登录"))self.pushButton_exit.setText(_translate("MainWindow", "退出"))import img_rc
import sysif __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow()ui = Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())

main.py

#login.py
from PyQt5 import QtCore, QtGui, QtWidgets
import dataBase
from PyQt5.QtWidgets import QMessageBox
import main
from PyQt5.QtWidgets import *class Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint)MainWindow.resize(485, 280)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(0, 0, 261, 281))self.label.setPixmap(QtGui.QPixmap(":/newPrefix/images/loginPIC.jpg"))self.label.setObjectName("label")self.label_user = QtWidgets.QLabel(self.centralwidget)self.label_user.setGeometry(QtCore.QRect(270, 70, 72, 41))self.label_user.setObjectName("label_2")self.label_pwd = QtWidgets.QLabel(self.centralwidget)self.label_pwd.setGeometry(QtCore.QRect(270, 130, 72, 21))self.label_pwd.setObjectName("label_3")self.lineEdit_userName = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_userName.setGeometry(QtCore.QRect(330, 80, 113, 21))self.lineEdit_userName.setObjectName("lineEdit")self.lineEdit_userPasswd = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_userPasswd.setGeometry(QtCore.QRect(330, 130, 113, 21))self.lineEdit_userPasswd.setObjectName("lineEdit_2")self.lineEdit_userPasswd.setEchoMode(QtWidgets.QLineEdit.Password)self.pushButton_login = QtWidgets.QPushButton(self.centralwidget)self.pushButton_login.setGeometry(QtCore.QRect(290, 190, 61, 28))self.pushButton_login.setObjectName("pushButton")self.pushButton_exit = QtWidgets.QPushButton(self.centralwidget)self.pushButton_exit.setGeometry(QtCore.QRect(370, 190, 61, 28))self.pushButton_exit.setObjectName("pushButton_2")MainWindow.setCentralWidget(self.centralwidget)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)self.pushButton_exit.clicked.connect(MainWindow.close)  # 关闭登录窗体self.pushButton_login.clicked.connect(self.openMain)   #登录def openMain(self):dataBase.userName = self.lineEdit_userName.text()userPasswd = self.lineEdit_userPasswd.text()if dataBase.userName and userPasswd:result = dataBase.query("select * from goods_user where userName = %s and userPasswd = %s", dataBase.userName, userPasswd)if len(result) > 0:self.main_window = QtWidgets.QMainWindow()self.main_ui = main.Ui_MainWindow()self.main_ui.setupUi(self.main_window)self.main_window.show()MainWindow.hide()else:self.lineEdit_userName.setText("")self.lineEdit_userPasswd.setText("")QMessageBox.warning(None, '警告', '请输入正确的用户名和密码!', QMessageBox.Ok)else:QMessageBox.warning(None, '警告', '请输入用户名和密码!', QMessageBox.Ok)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "二手商品信息管理平台登录"))self.label_user.setText(_translate("MainWindow", "用户名:"))self.label_pwd.setText(_translate("MainWindow", "密  码:"))self.pushButton_login.setText(_translate("MainWindow", "登录"))self.pushButton_exit.setText(_translate("MainWindow", "退出"))import img_rc
import sysif __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow()ui = Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())

user.py

#user.py
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox, QTableWidgetItem, QMainWindowimport dataBaseclass Ui_MainWindow(QMainWindow):# 构造方法def __init__(self):super(Ui_MainWindow, self).__init__()self.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint)  # 只显示最小化和关闭按钮self.setupUi(self) # 初始化窗体设置def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(546, 423)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.tableinfo = QtWidgets.QTableWidget(self.centralwidget)self.tableinfo.setGeometry(QtCore.QRect(0, 0, 400, 420))self.tableinfo.setObjectName("tableWidget")self.tableinfo.setColumnCount(2)self.tableinfo.setRowCount(0)item = QtWidgets.QTableWidgetItem()item.setTextAlignment(QtCore.Qt.AlignCenter)self.tableinfo.setHorizontalHeaderItem(0, item)item = QtWidgets.QTableWidgetItem()item.setTextAlignment(QtCore.Qt.AlignCenter)self.tableinfo.setHorizontalHeaderItem(1, item)self.tableinfo.setColumnWidth(0, 195)# 调整第一列(索引0)的宽度到特定宽度self.tableinfo.setColumnWidth(1, 195)# 调整第二列(索引1)的宽度到特定宽度self.tableinfo.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)#表格列将根据窗口大小自动调整宽度,以填充整个表格而不会出现水平滚动条。self.pushButton_add = QtWidgets.QPushButton(self.centralwidget)self.pushButton_add.setGeometry(QtCore.QRect(440, 180, 61, 31))self.pushButton_add.setObjectName("pushButton")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(400, 110, 61, 21))self.label.setObjectName("label")self.lineEdit_userName = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_userName.setGeometry(QtCore.QRect(460, 110, 71, 21))self.lineEdit_userName.setObjectName("lineEdit")self.label_2 = QtWidgets.QLabel(self.centralwidget)self.label_2.setGeometry(QtCore.QRect(410, 140, 51, 20))self.label_2.setObjectName("label_2")self.lineEdit_passwd = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit_passwd.setGeometry(QtCore.QRect(460, 140, 71, 21))self.lineEdit_passwd.setObjectName("lineEdit_2")self.pushButton_edit = QtWidgets.QPushButton(self.centralwidget)self.pushButton_edit.setGeometry(QtCore.QRect(440, 230, 61, 31))self.pushButton_edit.setObjectName("pushButton_2")self.pushButton_del = QtWidgets.QPushButton(self.centralwidget)self.pushButton_del.setGeometry(QtCore.QRect(440, 270, 61, 31))self.pushButton_del.setObjectName("pushButton_3")MainWindow.setCentralWidget(self.centralwidget)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)self.tableinfo.setAlternatingRowColors(True)  # 使表格颜色交错显示self.tableinfo.verticalHeader().setVisible(False)  # 隐藏垂直标题self.query() # 窗体加载时显示所有数据self.tableinfo.itemClicked.connect(self.getItem) # 获取选中的单元格数据self.pushButton_add.clicked.connect(self.add)self.pushButton_edit.clicked.connect(self.edit) # 绑定修改按钮的单击信号self.pushButton_del.clicked.connect(self.delete) # 绑定删除按钮的单击信号def query(self):self.tableinfo.setRowCount(0) # 清空表格中的所有行result = dataBase.query("select * from goods_user") # 调用服务类中的公共方法执行查询语句row = len(result)  # 取得记录个数,用于设置表格的行数self.tableinfo.setRowCount(row)  # 设置表格行数self.tableinfo.setColumnCount(2)  # 设置表格列数for i in range(row):  # 遍历行for j in range(self.tableinfo.columnCount()):  # 遍历列data = QTableWidgetItem(str(result[i][j]))  # 转换后可插入表格data.setFlags(data.flags() & ~QtCore.Qt.ItemIsEditable)  # 设置单元格为只读self.tableinfo.setItem(i, j, data) # 设置每个单元格的数据def getItem(self, item):if item.column() == 0:  # 如果点击的是第一列self.select1 = item.text()  # 获取点击单元格的文本row = item.row()  # 获取点击单元格所在的行item2 = self.tableinfo.item(row, 1)  # 获取同一行第二列的项if item2 is not None:self.select2 = item2.text()self.lineEdit_userName.setText(self.select1)  # 显示在用户名文本框中self.lineEdit_passwd.setText(self.select2)  # 显示在密码文本框中if item.column() == 1:self.select2 = item.text()row = item.row()item1 = self.tableinfo.item(row, 0)if item1 is not None:self.select1 = item1.text()self.lineEdit_userName.setText(self.select1)self.lineEdit_passwd.setText(self.select2)def add(self):userName = self.lineEdit_userName.text() # 记录输入的用户名userPwd = self.lineEdit_passwd.text() # 记录输入的用户密码if userName != "" and userPwd != "": # 判断用户名和密码不为空# 执行添加语句result=dataBase.exec("insert into goods_user(userName,userPasswd) values (%s,%s)",(userName,userPwd))if result>0:  # 如果结果大于0,说明添加成功self.query() # 在表格中显示最新数据QMessageBox.information(None, '提示', '信息添加成功!', QMessageBox.Ok)else:QMessageBox.warning(None, '警告', '请输入数据后,再执行相关操作!', QMessageBox.Ok)def edit(self):try:if self.select1!="": # 判断是否选择了要修改的数据userPwd = self.lineEdit_passwd.text() # 记录修改的用户密码if userPwd != "": # 判断密码不为空# 执行修改操作result=dataBase.exec("update goods_user set userPasswd= %s where userName=%s",(userPwd,self.select1))if result>0: # 如果结果大于0,说明修改成功self.query() # 在表格中显示最新数据QMessageBox.information(None, '提示', '信息修改成功!', QMessageBox.Ok)except:QMessageBox.warning(None, '警告', '请先选择要修改的数据!', QMessageBox.Ok)def delete(self):try:if self.select1!="": # 判断是否选择了要删除的数据# 执行删除操作result=dataBase.exec("delete from goods_user where userName= %s",(self.select1,))if result>0: # 如果结果大于0,说明删除成功self.query() # 在表格中显示最新数据QMessageBox.information(None, '提示', '信息删除成功!', QMessageBox.Ok)except:QMessageBox.warning(None, '警告', '请先选择要删除的数据!', QMessageBox.Ok)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "账号密码设置"))item = self.tableinfo.horizontalHeaderItem(0)item.setText(_translate("MainWindow", "用户名"))item = self.tableinfo.horizontalHeaderItem(1)item.setText(_translate("MainWindow", "密码"))self.pushButton_add.setText(_translate("MainWindow", "添加"))self.label.setText(_translate("MainWindow", " 用 户:"))self.label_2.setText(_translate("MainWindow", "密 码:"))self.pushButton_edit.setText(_translate("MainWindow", "修改"))self.pushButton_del.setText(_translate("MainWindow", "删除"))

相关文章:

PyQt5-小总结

之前学习PyQt5&#xff0c;然后那段时间想做一个桌面小程序&#xff0c;后来由于学习内容较多就做了一小部分&#xff0c;但是可以进行页面跳转。大家如果是初学者对Python感兴趣而且刚学数据库时可以看看代码&#xff0c;可能会有点启发。 效果&#xff1a; 登录进来是这&…...

vue父组件给子组件传值,子组件不渲染的原因及解决方法

父组件传递给子组件的数据&#xff0c;如果是一个复杂对象&#xff08;例如一个数组或对象&#xff09;&#xff0c;那么子组件只会监听对象的引用而不是对象的内容。这意味着当对象的内容发生变化时&#xff0c;子组件不会更新。 解决&#xff1a; 1、在子组件使用 watch 监听…...

【数据库】MySQL锁

一、锁的基本概念 1、锁的定义 锁是协调多个进程或线程并发访问数据库资源的一种机制。 MySQL中的锁是在服务器层或者存储引擎层实现的&#xff0c;保证了数据访问的一致性与有效性。但加锁是消耗资源的&#xff0c;锁的各种操作&#xff0c;包括获得锁、检测锁是否已解除、…...

mongodb学习篇

目录 前言基本概念数据库-database集合-collection文档-document 部署mongodblinux安装mongodbdocker安装mongodb MongoDB Shell (mongosh)命令行工具mongodb可视化-mongodb-compass、mongo-expressmongodb配置文件mongodb库、集合、文档库基本操作集合基本操作文档的增删改查C…...

kubernetes存储类迁移-备份恢复

背景介绍 kubernetes集群最开始使用了nfs作为存储&#xff0c;随着后续使用过程中数据量逐渐增加&#xff0c;nfs存储性能逐步出现不足&#xff0c;现增加了基于csi的分布式块存储后&#xff0c;需要对原有基于nfs存储类下的pv迁移到新的存储类下。 测试环境 k8s集群版本&am…...

python智能手机芯片

在未来&#xff0c;python智能手机芯片的发展方向可能包括以下几个方面&#xff1a; 强化处理能力&#xff1a;随着智能手机功能的不断扩展和用户需求的增加&#xff0c;处理器的性能需求也在不断提升。未来的python智能手机芯片可能会加强处理器的核心数量和频率&#xff0c;以…...

混淆技术概论

混淆技术概论 引言 在逆向工程领域&#xff0c;混淆技术是一种非常重要的技术手段&#xff0c;通过打破人们的思维惯性&#xff0c;使得逆向分析变得更加困难。本文将会介绍混淆技术的概念、分类及其应用&#xff0c;以及如何使用IPA Guard进行iOS IPA重签名。 混淆技术概述…...

pytest安装失败,报错Could not find a version that satisfies the requirement pytest

问题 安装pytest失败&#xff0c;尝试使用的命令有 pip install pytest pip3 install pytest pip install -U pytest pip install pytest -i https://pypi.tuna.tsinghua.edu.cn/simple但是都会报同样的错&#xff1a; 解决方案 发现可能是挂了梯子的原因&#xff0c;关掉…...

使用 Maven 的 dependencyManagement 管理项目依赖项

使用 Maven 的 dependencyManagement 管理项目依赖项 介绍 在开发 Java 项目时&#xff0c;管理和协调依赖项的版本号是一项重要而繁琐的任务。 而 Maven 提供了 <dependencyManagement> 元素&#xff0c;用于定义项目中所有依赖项的版本。它允许您指定项目中每个依赖…...

三英战吕布web3游戏项目启动全流程

项目是一个学习相关的很好的例子并且开源&#xff0c;原本的项目是连接goerli网络&#xff0c;但我把它修改为可连接ganache网络的项目了&#xff0c;更方便启动。 智能合约部分 进入文件 hardhat.config.js &#xff0c;增加一个钱包私钥 2.执行npm install 3.测试合约 npx ha…...

TS中的类

目录 ES6的类 类的概念 类的构成 类的创建 声明 构造函数 定义内容 创建实例 TS中的类 类声明 构造函数 属性和方法 实例化类 继承 访问修饰符 public private protected 成员访问修饰符的使用原则 访问器 只读成员与静态成员 readonly static 修饰符总…...

玩转硬件之玩改朗逸中控设备

这是一个有关一件被拆卸的朗逸中控设备的故事。这个设备已经闲置多年&#xff0c;但是它的命运发生了转变。它被改装成了一台收音机和MP3播放器。 这个设备曾经是一辆朗逸的中控屏幕&#xff0c;就是因为它没有倒车影像&#xff0c;它就被拆了下来&#xff0c;被扔在了一个角落…...

根据MySql的表名,自动生成实体类,模仿ORM框架

ORM框架可以根据数据库的表自动生成实体类&#xff0c;以及相应CRUD操作 本文是一个自动生成实体类的工具&#xff0c;用于生成Mysql表对应的实体类。 新建Winform窗体应用程序AutoGenerateForm&#xff0c;框架(.net framework 4.5)&#xff0c; 添加对System.Configuration的…...

Mac上安装tensorflow介绍留存

此预版本为 macOS 11.0 提供了硬件加速的 TensorFlow 和 TensorFlow 插件。M1 Mac 和基于 Intel 的 Mac 通过 Apple 的 ML 计算框架支持本机硬件加速。 TensorFlow r2.4rc0TensorFlow Addons 0.11.2 TensorFlow 插件 0.11.2 REQUIREMENTS 要求 macOS 11.0Python 3.8 (requir…...

【赠书第16期】码上行动:用ChatGPT学会Python编程

文章目录 前言 1 ChatGPT简介 2 Python编程简介 3 使用ChatGPT学习Python编程 4 如何使用ChatGPT学习Python编程 5 推荐图书 6 粉丝福利 前言 随着人工智能技术的不断发展&#xff0c;聊天机器人已经成为我们日常生活和工作中不可或缺的一部分。其中&#xff0c;ChatGP…...

LeetCode 每日一题 2024/1/1-2024/1/7

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 1/1 1599. 经营摩天轮的最大利润1/2 466. 统计重复个数1/3 2487. 从链表中移除节点1/4 2397. 被列覆盖的最多行数1/5 1944. 队列中可以看到的人数1/6 2807. 在链表中插入最…...

7+单细胞+空转+实验验证,如何根据内容开展相关经验给你启发

导语 今天给同学们分享一篇生信文章“CD8 tissue-resident memory T cells induce oral lichen planus erosion via cytokine network”&#xff0c;这篇文章发表在Elife期刊上&#xff0c;影响因子为7.7。 结果解读&#xff1a; 单细胞RNA测序揭示了具有不同临床亚型的OLP的细…...

Verifiable Credentials可验证证书 2023 终极指南

1. 引言 Dock公司为去中心化数字身份领域的先驱者&#xff0c;其自2017年以来&#xff0c;已知专注于构建前沿的可验证证书&#xff08;Verifiable Credentials&#xff09;技术。本文将阐述何为电子证书、电子证书工作原理、以及其对组合和个人的重要性。 伪造实物证书和数字…...

R语言【sp】——SpatialPoints():创建类SpatialPoints或SpatialPointsDataFrame的对象

Package sp version 1.5-0 Description 从坐标或数据帧的坐标创建类 SpatialPoints-class 或 SpatialPointsDataFrame-class 的对象。 Usage SpatialPoints(coords, proj4stringCRS(as.character(NA)), bbox NULL)SpatialPointsDataFrame(coords, data, coords.nrs numeric…...

【Verilog】期末复习——简要说明仿真时阻塞赋值和非阻塞赋值的区别。always语句和initial语句的关键区别是什么?能否相互嵌套?

系列文章 数值&#xff08;整数&#xff0c;实数&#xff0c;字符串&#xff09;与数据类型&#xff08;wire、reg、mem、parameter&#xff09; 运算符 数据流建模 行为级建模 结构化建模 组合电路的设计和时序电路的设计 有限状态机的定义和分类 期末复习——数字逻辑电路分…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...