Mysql学习笔记(六)Django连接MySQL
一、Django中的MySQL驱动程序
Python中常见的MySQL驱动程序:
- MySQL-python:就是MySQLdb,是对C语言操作MySQL的封装,支持Python2,不支持Python3
- mysqlclient:MySQL-python的另一个分支,支持Python3
- pymysql: 纯Python实现的驱动
- MySQL Connect For Python:MySQL官方退出的Python连接MySQL驱动。
本课程主要讲解Django中pymysql的使用。
二、pymysql的安装和使用
1. 安装
在命令行使用命令:
pip list
查看已经安装的包列表;
如果没有安装就使用pip安装
pip install pymysql
或者去pycharm的包管理器里去安装也可以。
2. 使用
为了使用pymysql,我们可以在views的函数里直接调用mysql,接下来我们就要介绍如何使用mysql数据库。
首先第一步就是要import导入包
import pymysql
接下来,python操作mysql主要分4个步骤:
第一步:使用connect打开数据库连接
mysqldb = pymysql.connect(host='主机ip',user='用户名',password='密码',database='数据库名')
第二步:创建游标
cursor = mysqldb.cursor()
第三步:执行sql语句
sql = "select version()" # version表示获取版本号
cursor.execute(sql)
第四步:获取执行结果
data = cursor.fetchone() # fetchone表示返回单个元组,也就是一行记录
3. 完善
我们发现,如果每次调用数据库都要写一次数据库连接的ip地址、用户名和密码,是效率是很低的。如果一个项目有50次对数据库的连接操作,一旦ip地址发生变化,就要修改50次。显然这样做是不合理的。我们看能不能在配置文件settings里面一次性写完数据库连接信息,后面连接数据库直接调用,一旦ip地址或者用户信息发生变化只需要在settings里修改一次就好。
实际上,在settings文件的DATABASE字典中,就定义了多条数据库连接信息。
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}
默认的使用的数据库是sqlite3,现在我们将其改成mysql,并补充相关的连接信息。
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', # 数据库类型'NAME': 'LibraryDB', # 数据库名'USER': 'root', # 用户名'PASSWORD': 'Yusheng123.cn', # 密码'HOST': '192.168.65.133', # 服务器ip'PORT': '3306', # 端口}
}
在settings里配置好了数据库连接信息,理论上我们在views里就可以直接使用connect()连接数据库了。然而,实际上当我们在运行时会报错,报错内容如下:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
这是什么原因呢?
实际上,如果我们在settings里配置了数据库连接信息,我们在连接数据库之前还有一个步骤要做,那就是在我们项目加载的__init__.py
文件中,添加以下两句代码,数据库才能成功被加载:
import pymysql
pymysql.install_as_MySQLdb()
意思是将pymysql以mysqldb的方式进行安装,这是一个标准步骤。
然而,实际上,这样做完之后,我们发现Django还是无法正确连接数据库。
原因:我们以原生pymysql.connect()直接连接数据库,系统是无法识别到我们在settings里的数据库配置。本质上,这里的DATABASE配置是为了我们后面的ORM使用的。
那我们该怎么办呢?
然而,事情总归是有解决办法的,只要把数据库配置信息写在settings里就行了,我们把配置信息定义成字符串表里的形式写在settings里,views里导入settings模块,直接调用就能达到同样的效果。
我们在settings里定义一下字符串变量:
HOST = '192.168.65.133'
DB = 'LibraryDB'
USER = 'root'
PASSWORD = 'Yusheng123.cn'
views里连接字符串时,connect方法的参数值设为变量名就可以了。
mysqldb = pymysql.connect(host=HOST, database=DB, user=USER, password=PASSWORD)
这样就能成功访问mysql数据库了!
4.总结
为了更清晰的掌握Django连接mysql的方法,我们把数据库配置的过程简化为三步
第一步:把数据库连接信息写入settings
HOST = 'ip地址'
DB = '数据库名'
USER = '数据库用户名'
PASSWORD = '数据库密码'
第二步:在项目init里安装mysqldb
import pymsql
pymsql.install_as_MySQLdb()
第三步:连接的时候导入settings信息
from 项目名.settings import *
mysqldb = pymysql.connect(host=HOST,user=USER,password=PASSWORD,database=DB)
以上,就是配置Django连接mysql数据库的方法!
三、创建表
这里我们开始将如果在Django里创建mysql表,和前面一样,先创建数据库连接,然后创建游标,执行SQL语句,提交。
注意:为了方便编辑与阅读sql语句可以写在三个双引号的注释里面,也是同样可以执行的!
def create_table(request):# 创建一个数据库连接mysqldb = pymysql.connect(host=HOST,user=USER,password=PASSWORD,database=DB)# 创建一个游标cursor = mysqldb.cursor()# 写mysql语句sql = """Create Table Student(SNO int,SName varchar(20) not null,Gender varchar(20) not null,Birthday date,Mobile varchar(20),Email varchar(100),Address varchar(200),constraint Pk_SNO primary key(SNO),constraint Uq_Mobile unique key(Mobile),constraint Uq_Email unique key(Email))"""# 执行try:cursor.execute(sql)# 如果没问题,提交mysqldb.commit()# 成功的提醒return HttpResponse("创建表成功!")except Exception as e:return HttpResponse("创建数据库异常,具体原因:"+str(e))finally:# 关闭连接mysqldb.close()
四、数据操作
1. 手动插入一行数据
前面我们新建了一个Student表,现在我们在Django中手动插入一行数据到这个表里。只需要定义一个方法,与前面创建表一样的过程,sql语句换成插入语句即可。唯一需要注意的是把插入过程放在一个异常处理中,如果插入失败,就多一个撤销操作的语句即可。
try:cursor.execute(sql)mysqldb.commit()return HttpResponse("插入完成")
except Exception as e:# 撤销操作mysqldb.rollback()return HttpResponse("插入失败"+str(e))
finally:mysqldb.close()
2. 将文件的数据插入到数据库中
为了能够一次性的插入大量数据到数据库中,我们可以对txt文件进行处理,例如可以将txt文件中存储的学生信息,打包到一个列表中,然后通过for循环将数据依次插入数据库中。
第一步:从文件中读取学生信息:
def read_from_file(path:str):"""从文件中读取学生信息:param path: txt文件路径:return: [{},{},{}]"""students = []infos = ['sno', 'sname', 'gender', 'birthday', 'mobile', 'email', 'address']# 读取try:with open(path, mode='r', encoding='utf-8') as fd:current_line = fd.readline()while current_line:# 切分属性信息student = current_line.replace('\n', '').split(",")# 定义临时学生集合temp_student = {}for index in range(len(infos)):temp_student[infos[index]] = student[index]students.append(temp_student)current_line = fd.readline()return studentsexcept Exception as e:print("读取失败"+str(e))
第二步:将读取到的数据循环插入数据库
def insert(request):"""想表中写入,txt文件中的数据:param request::return:"""# 获取文件中的数据path = r'D:\Python\Project\Dj020601\app01\static\file\Student.txt'students = read_from_file(path)# 创建一个数据库mysqldb = pymysql.connect(host=HOST,user=USER,password=PASSWORD,database=DB)# 创建一个游标cursor = mysqldb.cursor()# 遍历集合for student in students:# 准备sql语句sql = "Insert into Student(SNO,SName,Gender,Birthday,Mobile,Email,Address) values " \"(%s,'%s','%s','%s','%s','%s','%s')" % (student['sno'], student['sname'], student['gender'],student['birthday'], student['mobile'], student['email'], student['address'])try:cursor.execute(sql)mysqldb.commit()except Exception as e:mysqldb.rollback()return HttpResponse("数据插入异常"+str(e))# 反馈return HttpResponse("数据插入成功!")
把insert方法配置到url中,这样我们通过访问指定链接就能实现对数据库的写入操作了。
于是,数据就成功插入到数据库中,最后我们再用navcat查看一下表中的数据是否正常:

3. 修改和删除数据
修改与删除数据基本套路与上面的插入数据一样,只是sql语句改为相对应的操作即可。
修改数据库
update Student set Birthday='2002-08-09' where SNO=95001
删除数据库
delete from Student where SNO=95022
需要注意的是,进行数据库操作的时候不要忘了commit提交,操作完成了不要忘了close关闭数据库。
五、查询数据
在Django中查询数据库中值,我们重点需要掌握两个方法:fetchall
和fetchone
,分别获取数据库表中的所有行数据和一行数据。返回的结果都是以元组的形式呈现的。
def select_one(request):"""获取一条数据 -- fetchone"""mysqldb = pymysql.connect(host=HOST, user=USER, password=PASSWORD, database=DB)# 创建游标cursor = mysqldb.cursor()# 准备sql语句sql = "Select SNO,SName,Gender,Birthday,Mobile,Email,Address from Student where SNO>95001"# 执行try:cursor.execute(sql)# 获取执行的结果students = cursor.fetchone()# 返回到页面return HttpResponse(str(students))except Exception as e:return HttpResponse("获取数据失败,具体原因" + str(e))finally:mysqldb.close()
fetchone取出一条记录,结果是以一个元组的形式返回;
fetchall取出所有记录,结果是以一个大元组嵌套多个小元组的形式返回的。
返回结果如下:


喜欢的朋友记得点赞、收藏、关注哦!!!
相关文章:
Mysql学习笔记(六)Django连接MySQL
一、Django中的MySQL驱动程序 Python中常见的MySQL驱动程序: MySQL-python:就是MySQLdb,是对C语言操作MySQL的封装,支持Python2,不支持Python3mysqlclient:MySQL-python的另一个分支,支持Python3pymysql&am…...
手机号码归属地的实现
手机号码归属地查询一般可以通过以下几种方式实现: 1. 使用公开的号码归属地数据库 可以使用国内的手机号码归属地数据库,如: 百度号码归属地开放API阿里云号码归属地API腾讯号码归属地API 你可以在本地存储一个 CSV 或 SQLite 数据库&…...
本地部署 DeepSeek:从 Ollama 配置到 Spring Boot 集成
前言 随着人工智能技术的迅猛发展,越来越多的开发者希望在本地环境中部署和调用 AI 模型,以满足特定的业务需求。本文将详细介绍如何在本地环境中使用 Ollama 配置 DeepSeek 模型,并在 IntelliJ IDEA 中创建一个 Spring Boot 项目来调用该模型…...
2025年渗透测试面试题总结- 阿某云安全实习(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 阿里云安全实习 一、代码审计经验与思路 二、越权漏洞原理与审计要点 三、SSRF漏洞解析与防御 四、教…...
WHAT - 前端异步事件流处理场景梳理
目录 一、典型场景二、解决方案与技术选型1. 基础异步控制2. 状态管理方案3. 复杂任务调度4. 任务取消机制5. 微任务队列优化 三、最佳实践建议四、工具链推荐 前端异步任务流处理是现代Web开发中常见的需求,尤其在复杂业务逻辑、高交互性应用中不可或缺。以下是常见…...
PHP 包含(Include)机制详解
PHP 包含(Include)机制详解 在PHP编程中,include和require是两个非常基础的函数,用于在脚本中包含其他文件。它们在模块化编程中发挥着至关重要的作用,使得代码更易于维护和扩展。本文将详细介绍PHP的包含机制,包括其工作原理、使用方法以及最佳实践。 一、PHP 包含机制…...
Metal学习笔记十:光照基础
光和阴影是使场景流行的重要要求。通过一些着色器艺术,您可以突出重要的对象、描述天气和一天中的时间并设置场景的气氛。即使您的场景由卡通对象组成,如果您没有正确地照亮它们,场景也会变得平淡无奇。 最简单的光照方法之一是 Phong 反射模…...
MongoDB 高级索引
MongoDB 高级索引 摘要 在数据库管理中,索引是提高查询效率的关键因素。MongoDB,作为一款流行的NoSQL数据库,其索引功能尤为强大。本文将深入探讨MongoDB的高级索引特性,包括复合索引、部分索引、文本索引、地理空间索引等,旨在帮助数据库管理员和开发者更好地利用Mongo…...
从DNS到TCP:DNS解析流程和浏览器输入域名访问流程
1 DNS 解析流程 1.1 什么是DNS域名解析 在生活中我们会经常遇到域名,比如说CSDN的域名www.csdn.net,百度的域名www.baidu.com,我们也会碰到IP,现在目前有的是IPV4,IPV6。那这两个有什么区别呢?IP地址是互联网上计算机…...
【JQuery—前端快速入门】JQuery 基础语法
JQuery JQuery是一个快速、简洁且功能丰富的JavaScript框架; 1. 引入依赖 使用JQuery需要先引入对应的库; 在使用 JQuery CDN 时,只需要在 HTML 文档中加入如下代码 <script src"https://code.jquery.com/jquery-3.7.1.min.js"></s…...
即梦AI发布新数字人模型OmniHuman-1
简介 随着人工智能技术的发展,特别是深度学习和自然语言处理的进步,AI在内容创作领域的应用越来越广泛。字节跳动作为一家领先的科技公司,一直在探索如何利用AI技术来提升用户体验和创造力。OmniHuman-1模型正是在这种背景下诞生的ÿ…...
ARM CM3核 压栈流程
STM32F103 使用 ARM Cortex-M3 内核,与 STM32F013(Cortex-M0)相比,其压栈行为有所不同,主要体现在异常自动压栈和**手动压栈(函数调用)**两方面。 1. 进入异常/中断时的自动压栈 当 STM32F103 …...
WHAT - RxJS 异步事件流处理
目录 RxJS 关键概念简单示例常用操作符1. 创建 Observables2. 转换操作符(map)3. 过滤操作符(filter)4. 合并多个流(mergeMap) 适用于 React & TypeScriptReact 组件中使用 RxJS RxJS 是一个用于处理异…...
vue组合式API中prop
*一、了解(事件与$emit) 一个组件需要显示声明它所接受的props,这样才知道外部传入的那些是props,那些是透传attribute。 在<script setup>单文件组件中,props可以使用defineProps()宏来声明,defineProps 是一个仅 <script setup> 中可用的编译宏命令,并不需…...
【HarmonyOS Next】自定义Tabs
背景 项目中Tabs的使用可以说是特别的频繁,但是官方提供的Tabs使用起来,存在tab选项卡切换动画滞后的问题。 原始动画无法满足产品的UI需求,因此,这篇文章将实现下面页面滑动,tab选项卡实时滑动的动画效果。 实现逻…...
算法 并查集
目录 前言 一 并查集的思路 二 并查集的代码分析 三 实操我们的代码 四 并查集的代码优化 总结 前言 并查集主要是用来求解集合问题的,用来查找集合还有就是合并集合,可以把这个运用到最小生成树里面 一 并查集的思路 1 并查集的相关的操作…...
EP 架构:未来主流方向还是特定场景最优解?
DeepSeek MoE架构采用跨节点专家并行(EP)架构,在提升推理系统性能方面展现出巨大潜力。这一架构在发展进程中也面临诸多挑战,其未来究竟是会成为行业的主流方向,还是仅适用于特定场景,成为特定领域的最优解…...
记忆化搜索与动态规划:原理、实现与比较
记忆化搜索和动态规划是解决优化问题的两种重要方法,尤其在处理具有重叠子问题和最优子结构性质的问题时非常有效。 目录 1. 记忆化搜索(Memoization) 定义: 实现步骤: 示例代码(斐波那契数列࿰…...
LLMR//https://github.com/microsoft/llmr?locale=zh-cn
https://github.com/microsoft/llmr?localezh-cn Introduction 这个 repo 包含 LLMR 中描述的代码,实现了混合现实框架的大型语言模型。 此软件包是“用语言创造世界”的原型,它允许通过自然语言实时创建具有视觉、行为和交互元素的对象、工具和场景…...
Free Auto Clicker - 在任意位置自动重复鼠标点击
“想让鼠标自己动起来,解放双手去做更有趣的事?”Free Auto Clicker 就像你的数字小助手,能在任意位置自动重复点击鼠标。从玩游戏到刷网页,这款免费工具让你告别枯燥的重复操作,效率瞬间起飞! 你有没有想…...
高考數學。。。
2024上 具体来说,直线的参数方程可以写为: x1t y−t z1t 二、简答题(本大题共5小题,每小题7分,共35分。) 12.数学学习评价不仅要关注结果评价,也要关注过程评价。简要说明过程评价应关注哪几个方面。…...
MWC 2025|紫光展锐联手美格智能发布5G通信模组SRM812
在2025年世界移动通信大会(MWC 2025)期间,紫光展锐携手美格智能正式推出了基于紫光展锐V620平台的第二代5G Sub6G R16模组SRM812,以超高性价比方案,全面赋能合作伙伴,加速5G规模化应用在各垂直领域的全面落…...
5分钟快速搭建一个 SpringBoot3 + MyBatis-Plus 工程项目
环境 idea 2023.3.5 jdk 17 mysql 8 创建SpringBoot工程 创建SpringBoot工程,这里有两种方式可选,一种是使用idea提供的Spring Initializr自动创建,一种是通过Maven Archetype手动创建 自动创建SpringBoot工程 使用Spring Initializr创建…...
深度学习-大白话解释循环神经网络RNN
目录 一、RNN的思想 二、RNN的基本结构 网络架构 关键点 三、RNN的前向传播 四、RNN的挑战:梯度爆炸和梯度消失 问题分析 示例推导 五、LSTM:RNN的改进 核心组件 网络架构 3. LSTM 的工作流程 4. 数学公式总结 5. LSTM 的优缺点 优点 缺点 6. LSTM 的…...
20.<Spring图书管理系统①(登录+添加图书)>
PS:关于接口定义 接口定义,通常由服务器提供方来定义。 1.路径:自己定义 2.参数:根据需求考虑,我们这个接口功能完成需要哪些信息。 3.返回结果:考虑我们能为对方提供什么。站在对方角度考虑。 我们使用到的…...
windows下使用Hyper+wsl实现ubuntu下git的平替
文章目录 前言一、安装Hyper、wsl1. 安装Hyper2. 安装wsl 二、配置Hyper三、安装并使用git总结 前言 众所周知,Ubuntu下安装git只需执行sudo apt install git即可使用默认终端拉取代码,但是Windows上使用git既没有linux便捷,又没有MacOS优雅…...
Python在实际工作中的运用-提取Pdf文件内容
Pdf文件是我们日常工作中经常会遇到的一种文件格式,对于这种文件的提取 pdfplumber 库可以非常出色的完成处理工作,它是一个纯 Python 第三方库,适合 python 3.x 版本,通常用来查看pdf各类信息,能有效提取文本、表格&…...
Python+Vue+数据可视化的考研知识共享平台(源码+论文+讲解+安装+调试+售后)
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 程序介绍 近些年来,科技以一种近乎狂飙突进的态势呈爆发式发展,成果之丰硕…...
VirtualBox虚拟机MacOS从Big Sur升级到Sequoia(失败)
VirtualBox虚拟机里安装好Big Sur版本,尝试升级到Sequoia,但是最终失败了。 软件升级 直接在系统偏好-软件更新里可以看到提示,提示可以升级到15版本Sequoia 点击同意,看能不能升级到Sequoia吧。升级前先用时光做了备份。 升级…...
深度学习---卷积神经网络
一、卷积尺寸计算公式 二、池化 池化分为最大池化和平均池化 最常用的就是最大池化,可以认为最大池化不需要引入计算,而平均池化需要引出计算(计算平均数) 每种池化还分为Pooling和AdaptiveAvgPool Pooling(2)就是每2*2个格子…...
深入解析网络协议:从OSI七层模型到HTTP与TCP/IP的关系
在网络的世界里,理解不同协议如何协同工作以实现高效、可靠的通信至关重要。无论是构建动态的Web应用,还是进行复杂的网络编程,对基础协议的理解都是不可或缺的。本文首先介绍OSI七层模型,这是一个为网络系统设计提供通用参考框架…...
链表-相关面试算法题
目录 面试题 02.04. 分割链表 面试题 02.05. 链表求和 面试题 02.06. 回文链表 面试题 02.07. 链表相交 面试题 02.04. 分割链表 面试题 02.04. 分割链表 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点…...
CSS Overflow 属性详解
CSS Overflow 属性详解 在网页设计和开发中,CSS Overflow 属性是一个非常重要的特性,它决定了当内容超出其容器大小时应该如何处理。本文将详细介绍 CSS Overflow 属性的相关知识,包括其语法、作用、常用属性值以及一些实际应用场景。 1. CSS Overflow 属性概述 CSS Over…...
一、MySQL备份恢复
一、MySQL备份恢复 1.1 MySQL日志管理 数据库中数据丢失或被破坏可能原因 误删除数据库 数据库工作时,意外断电或程序意外终止 由于病毒造成的数据库损坏或丢失 文件系统损坏后,系统进行自检操作 升级数据库时,命令语句不严格 设备故…...
Python-04BeautifulSoup网络爬虫
2025-03-04-BeautifulSoup网络爬虫 记录BeautifulSoup网络爬虫的核心知识点 文章目录 2025-03-04-BeautifulSoup网络爬虫 [toc]1-参考网址2-学习要点3-核心知识点1. 安装2. 导入必要的库3. 发送 HTTP 请求4. 创建 BeautifulSoup 对象5. 解析 HTML 内容5.1 查找标签5.2 根据属性…...
记录uniapp小程序对接腾讯IM即时通讯无ui集成(2)
完成以上步骤之后开始进行登录,登陆就需要账号。这个账号我们可以在腾讯云中创建。 有了账号之后开始去小程序进行登陆操作。腾讯云接口文档 这里除了帐号还需要一个校验值userSig正常项目开发这个字段可以在登陆后让后端返回,现在是测试我们直接去控制…...
DE2115实现4位全加器和3-8译码器(FPGA)
一、配置环境 1、Quartus 18.1安装教程 软件:Quartus版本:Quartus 18.1语言:英文大小:5.78G安装环境:Win11/Win10/Win8/Win7硬件要求:CPU2.0GHz 内存4G(或更高) 下载通道①百度网盘丨64位下载…...
大白话面试中应对自我介绍
在面试中,自我介绍是开场的关键环节,它就像你递给面试官的一张“个人名片”,要让面试官快速了解你并对你产生兴趣。下面详细讲讲应对自我介绍的要点及回答范例。 一、自我介绍的时间把控 一般面试中的自我介绍控制在1 - 3分钟比较合适。时间…...
【JavaScript—前端快速入门】JavaScript 综合案例 — 猜数字
JavaScript 综合案例—猜数字 预期效果 需求 完成基本的页面布局在文本框输入数字后,点击"猜"按钮,结果那一行会显示"猜大了"或者"猜小了"每猜一次,就会增加一次猜的次数猜到数字后,结果显示要猜的…...
X Window---图形接口
摘抄自 鸟哥的linux私房菜 基础篇 第四版 有鉴于图形用户接口(Graphical User Interface, GUI) 的需求日益加重,在 1984 年由 MIT 与其他第三方首次发表了 X Window System ,并且更在 1988 年成立了非营利性质的 XFree86 这个组织。所谓的XFree86 其实是…...
CSS浮动详解
1. 浮动的简介 浮动是用来实现文字环绕图片效果的 2.元素浮动后会有哪些影响 对兄弟元素的影响: 后面的兄弟元素,会占据浮动元素之前的位置,在浮动元素的下面;对前面的兄弟 无影响。 对父元素的影响: 不能撑起父元…...
shell脚本编程实践第2天
1 内容格式化 1.1 输出格式化 1.1.1 echo解读 学习目标 这一节,我们从 基础知识、简单实践、小结、三个方面来学习。 基础知识 命令简介 echo命令的功能是将内容输出到默认显示设备,一般起到一个提示的作用。OPTIONS: -n 不要在最后自…...
wgcloud-server端部署说明
Wgcloud 是一款开源的轻量级服务器监控系统,支持多平台,可对服务器的 CPU、内存、磁盘、网络等指标进行实时监控。 以下是 Wgcloud Server端的详细部署步骤: 环境准备 服务器: 至少准备两台服务器,一台作为监控端&a…...
AES/CBC/PKCS5Padding加密
1、加密代码如下 public static String encryptAEs_CBC(String data,String key,byte[] iv) {Cipher cipher = null;try {cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//位数不够,自动补一个长度int blocksize = cipher.getBlockSize();byte[] dataBytes …...
9.8 Visual Studio 2022安装Qt 和安装graphic
1.安装Qt 1. 安装Qt 首先打开Visual Studio,然后创建一个项目,再在最上面的一行依次打开“扩展-->管理扩展”,再在搜索框内搜索“QT”,显示如下界面: 再在右边QT右边有个“在浏览器中查看”,打开后出现…...
【C++设计模式】第四篇:建造者模式(Builder)
注意:复现代码时,确保 VS2022 使用 C17/20 标准以支持现代特性。 分步骤构造复杂对象,实现灵活装配 1. 模式定义与用途 核心目标:将复杂对象的构建过程分离,使得同样的构建步骤可以创建不同的表示形式。 常见场景&am…...
Spring Boot如何利用Twilio Verify 发送验证码短信?
Twilio提供了一个名为 Twilio Verify 的服务,专门用于处理验证码的发送和验证。这是一个更为简化和安全的解决方案,适合需要用户身份验证的应用。 使用Twilio Verify服务的步骤 以下是如何在Spring Boot中集成Twilio Verify服务的步骤: 1.…...
制造业中的“大数据”:如何实现精准决策?
在当今全球经济竞争日趋激烈、技术变革周期不断缩短的环境下,制造业面临着全新的挑战和机遇。随着信息技术的飞速发展,“大数据”正以前所未有的速度渗透到制造业的各个环节,帮助企业实现更精准的决策、更灵活的生产组织以及更敏捷的市场响应…...
Linux cat 命令
cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上,它的主要作用是用于查看和连接文件。 使用权限 所有使用者 语法格式 cat [选项] [文件] 参数说明: -n:显示行号,会在输…...
CSS—flex布局、过渡transition属性、2D转换transform属性、3D转换transform属性
1.flex布局 也叫弹性布局,是浏览器提倡的布局模型,非常适合结构化布局,提供了强大的空间分布和对齐能力,不会产生浮动布局中脱标现象,布局网页更简单,更灵活。 flex容器属性: 属性描述d…...