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

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查看一下表中的数据是否正常:


图片.png
3. 修改和删除数据

修改与删除数据基本套路与上面的插入数据一样,只是sql语句改为相对应的操作即可。
修改数据库

update Student set Birthday='2002-08-09' where SNO=95001

删除数据库

delete from Student where SNO=95022

需要注意的是,进行数据库操作的时候不要忘了commit提交,操作完成了不要忘了close关闭数据库。

五、查询数据

在Django中查询数据库中值,我们重点需要掌握两个方法:fetchallfetchone,分别获取数据库表中的所有行数据和一行数据。返回的结果都是以元组的形式呈现的。

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取出所有记录,结果是以一个大元组嵌套多个小元组的形式返回的。

返回结果如下:
图片.png


喜欢的朋友记得点赞、收藏、关注哦!!!

相关文章:

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需要先引入对应的库&#xff1b; 在使用 JQuery CDN 时&#xff0c;只需要在 HTML 文档中加入如下代码 <script src"https://code.jquery.com/jquery-3.7.1.min.js"></s…...

即梦AI发布新数字人模型OmniHuman-1

简介 随着人工智能技术的发展&#xff0c;特别是深度学习和自然语言处理的进步&#xff0c;AI在内容创作领域的应用越来越广泛。字节跳动作为一家领先的科技公司&#xff0c;一直在探索如何利用AI技术来提升用户体验和创造力。OmniHuman-1模型正是在这种背景下诞生的&#xff…...

ARM CM3核 压栈流程

STM32F103 使用 ARM Cortex-M3 内核&#xff0c;与 STM32F013&#xff08;Cortex-M0&#xff09;相比&#xff0c;其压栈行为有所不同&#xff0c;主要体现在异常自动压栈和**手动压栈&#xff08;函数调用&#xff09;**两方面。 1. 进入异常/中断时的自动压栈 当 STM32F103 …...

WHAT - RxJS 异步事件流处理

目录 RxJS 关键概念简单示例常用操作符1. 创建 Observables2. 转换操作符&#xff08;map&#xff09;3. 过滤操作符&#xff08;filter&#xff09;4. 合并多个流&#xff08;mergeMap&#xff09; 适用于 React & TypeScriptReact 组件中使用 RxJS RxJS 是一个用于处理异…...

vue组合式API中prop

*一、了解(事件与$emit) 一个组件需要显示声明它所接受的props,这样才知道外部传入的那些是props,那些是透传attribute。 在<script setup>单文件组件中,props可以使用defineProps()宏来声明,defineProps 是一个仅 <script setup> 中可用的编译宏命令,并不需…...

【HarmonyOS Next】自定义Tabs

背景 项目中Tabs的使用可以说是特别的频繁&#xff0c;但是官方提供的Tabs使用起来&#xff0c;存在tab选项卡切换动画滞后的问题。 原始动画无法满足产品的UI需求&#xff0c;因此&#xff0c;这篇文章将实现下面页面滑动&#xff0c;tab选项卡实时滑动的动画效果。 实现逻…...

算法 并查集

目录 前言 一 并查集的思路 二 并查集的代码分析 三 实操我们的代码 四 并查集的代码优化 总结 前言 并查集主要是用来求解集合问题的&#xff0c;用来查找集合还有就是合并集合&#xff0c;可以把这个运用到最小生成树里面 一 并查集的思路 1 并查集的相关的操作…...

EP 架构:未来主流方向还是特定场景最优解?

DeepSeek MoE架构采用跨节点专家并行&#xff08;EP&#xff09;架构&#xff0c;在提升推理系统性能方面展现出巨大潜力。这一架构在发展进程中也面临诸多挑战&#xff0c;其未来究竟是会成为行业的主流方向&#xff0c;还是仅适用于特定场景&#xff0c;成为特定领域的最优解…...

记忆化搜索与动态规划:原理、实现与比较

记忆化搜索和动态规划是解决优化问题的两种重要方法&#xff0c;尤其在处理具有重叠子问题和最优子结构性质的问题时非常有效。 目录 1. 记忆化搜索&#xff08;Memoization&#xff09; 定义&#xff1a; 实现步骤&#xff1a; 示例代码&#xff08;斐波那契数列&#xff0…...

LLMR//https://github.com/microsoft/llmr?locale=zh-cn

https://github.com/microsoft/llmr?localezh-cn Introduction 这个 repo 包含 LLMR 中描述的代码&#xff0c;实现了混合现实框架的大型语言模型。 此软件包是“用语言创造世界”的原型&#xff0c;它允许通过自然语言实时创建具有视觉、行为和交互元素的对象、工具和场景…...

Free Auto Clicker - 在任意位置自动重复鼠标点击

“想让鼠标自己动起来&#xff0c;解放双手去做更有趣的事&#xff1f;”Free Auto Clicker 就像你的数字小助手&#xff0c;能在任意位置自动重复点击鼠标。从玩游戏到刷网页&#xff0c;这款免费工具让你告别枯燥的重复操作&#xff0c;效率瞬间起飞&#xff01; 你有没有想…...

高考數學。。。

2024上 具体来说&#xff0c;直线的参数方程可以写为&#xff1a; x1t y−t z1t 二、简答题(本大题共5小题&#xff0c;每小题7分&#xff0c;共35分。) 12.数学学习评价不仅要关注结果评价&#xff0c;也要关注过程评价。简要说明过程评价应关注哪几个方面。…...

MWC 2025|紫光展锐联手美格智能发布5G通信模组SRM812

在2025年世界移动通信大会&#xff08;MWC 2025&#xff09;期间&#xff0c;紫光展锐携手美格智能正式推出了基于紫光展锐V620平台的第二代5G Sub6G R16模组SRM812&#xff0c;以超高性价比方案&#xff0c;全面赋能合作伙伴&#xff0c;加速5G规模化应用在各垂直领域的全面落…...

5分钟快速搭建一个 SpringBoot3 + MyBatis-Plus 工程项目

环境 idea 2023.3.5 jdk 17 mysql 8 创建SpringBoot工程 创建SpringBoot工程&#xff0c;这里有两种方式可选&#xff0c;一种是使用idea提供的Spring Initializr自动创建&#xff0c;一种是通过Maven Archetype手动创建 自动创建SpringBoot工程 使用Spring Initializr创建…...

深度学习-大白话解释循环神经网络RNN

目录 一、RNN的思想 二、RNN的基本结构 网络架构 ​关键点 三、RNN的前向传播 四、RNN的挑战:梯度爆炸和梯度消失 问题分析 ​示例推导 五、LSTM:RNN的改进 核心组件 ​网络架构 3. LSTM 的工作流程 4. 数学公式总结 5. LSTM 的优缺点 ​优点 ​缺点 6. LSTM 的…...

20.<Spring图书管理系统①(登录+添加图书)>

PS&#xff1a;关于接口定义 接口定义&#xff0c;通常由服务器提供方来定义。 1.路径&#xff1a;自己定义 2.参数&#xff1a;根据需求考虑&#xff0c;我们这个接口功能完成需要哪些信息。 3.返回结果&#xff1a;考虑我们能为对方提供什么。站在对方角度考虑。 我们使用到的…...

windows下使用Hyper+wsl实现ubuntu下git的平替

文章目录 前言一、安装Hyper、wsl1. 安装Hyper2. 安装wsl 二、配置Hyper三、安装并使用git总结 前言 众所周知&#xff0c;Ubuntu下安装git只需执行sudo apt install git即可使用默认终端拉取代码&#xff0c;但是Windows上使用git既没有linux便捷&#xff0c;又没有MacOS优雅…...

Python在实际工作中的运用-提取Pdf文件内容

Pdf文件是我们日常工作中经常会遇到的一种文件格式&#xff0c;对于这种文件的提取 pdfplumber 库可以非常出色的完成处理工作&#xff0c;它是一个纯 Python 第三方库&#xff0c;适合 python 3.x 版本&#xff0c;通常用来查看pdf各类信息&#xff0c;能有效提取文本、表格&…...

Python+Vue+数据可视化的考研知识共享平台(源码+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 程序介绍 近些年来&#xff0c;科技以一种近乎狂飙突进的态势呈爆发式发展&#xff0c;成果之丰硕…...

VirtualBox虚拟机MacOS从Big Sur升级到Sequoia(失败)

VirtualBox虚拟机里安装好Big Sur版本&#xff0c;尝试升级到Sequoia&#xff0c;但是最终失败了。 软件升级 直接在系统偏好-软件更新里可以看到提示&#xff0c;提示可以升级到15版本Sequoia 点击同意&#xff0c;看能不能升级到Sequoia吧。升级前先用时光做了备份。 升级…...

深度学习---卷积神经网络

一、卷积尺寸计算公式 二、池化 池化分为最大池化和平均池化 最常用的就是最大池化&#xff0c;可以认为最大池化不需要引入计算&#xff0c;而平均池化需要引出计算&#xff08;计算平均数&#xff09; 每种池化还分为Pooling和AdaptiveAvgPool Pooling(2)就是每2*2个格子…...

深入解析网络协议:从OSI七层模型到HTTP与TCP/IP的关系

在网络的世界里&#xff0c;理解不同协议如何协同工作以实现高效、可靠的通信至关重要。无论是构建动态的Web应用&#xff0c;还是进行复杂的网络编程&#xff0c;对基础协议的理解都是不可或缺的。本文首先介绍OSI七层模型&#xff0c;这是一个为网络系统设计提供通用参考框架…...

链表-相关面试算法题

目录 面试题 02.04. 分割链表 面试题 02.05. 链表求和 面试题 02.06. 回文链表 面试题 02.07. 链表相交 面试题 02.04. 分割链表 面试题 02.04. 分割链表 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点…...

CSS Overflow 属性详解

CSS Overflow 属性详解 在网页设计和开发中,CSS Overflow 属性是一个非常重要的特性,它决定了当内容超出其容器大小时应该如何处理。本文将详细介绍 CSS Overflow 属性的相关知识,包括其语法、作用、常用属性值以及一些实际应用场景。 1. CSS Overflow 属性概述 CSS Over…...

一、MySQL备份恢复

一、MySQL备份恢复 1.1 MySQL日志管理 数据库中数据丢失或被破坏可能原因 误删除数据库 数据库工作时&#xff0c;意外断电或程序意外终止 由于病毒造成的数据库损坏或丢失 文件系统损坏后&#xff0c;系统进行自检操作 升级数据库时&#xff0c;命令语句不严格 设备故…...

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)

完成以上步骤之后开始进行登录&#xff0c;登陆就需要账号。这个账号我们可以在腾讯云中创建。 有了账号之后开始去小程序进行登陆操作。腾讯云接口文档 这里除了帐号还需要一个校验值userSig正常项目开发这个字段可以在登陆后让后端返回&#xff0c;现在是测试我们直接去控制…...

DE2115实现4位全加器和3-8译码器(FPGA)

一、配置环境 1、Quartus 18.1安装教程 软件&#xff1a;Quartus版本&#xff1a;Quartus 18.1语言&#xff1a;英文大小&#xff1a;5.78G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09; 下载通道①百度网盘丨64位下载…...

大白话面试中应对自我介绍

在面试中&#xff0c;自我介绍是开场的关键环节&#xff0c;它就像你递给面试官的一张“个人名片”&#xff0c;要让面试官快速了解你并对你产生兴趣。下面详细讲讲应对自我介绍的要点及回答范例。 一、自我介绍的时间把控 一般面试中的自我介绍控制在1 - 3分钟比较合适。时间…...

【JavaScript—前端快速入门】JavaScript 综合案例 — 猜数字

JavaScript 综合案例—猜数字 预期效果 需求 完成基本的页面布局在文本框输入数字后&#xff0c;点击"猜"按钮&#xff0c;结果那一行会显示"猜大了"或者"猜小了"每猜一次&#xff0c;就会增加一次猜的次数猜到数字后&#xff0c;结果显示要猜的…...

X Window---图形接口

摘抄自 鸟哥的linux私房菜 基础篇 第四版 有鉴于图形用户接口(Graphical User Interface, GUI) 的需求日益加重&#xff0c;在 1984 年由 MIT 与其他第三方首次发表了 X Window System &#xff0c;并且更在 1988 年成立了非营利性质的 XFree86 这个组织。所谓的XFree86 其实是…...

CSS浮动详解

1. 浮动的简介 浮动是用来实现文字环绕图片效果的 2.元素浮动后会有哪些影响 对兄弟元素的影响&#xff1a; 后面的兄弟元素&#xff0c;会占据浮动元素之前的位置&#xff0c;在浮动元素的下面&#xff1b;对前面的兄弟 无影响。 对父元素的影响&#xff1a; 不能撑起父元…...

shell脚本编程实践第2天

1 内容格式化 1.1 输出格式化 1.1.1 echo解读 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结、三个方面来学习。 基础知识 命令简介 echo命令的功能是将内容输出到默认显示设备&#xff0c;一般起到一个提示的作用。OPTIONS&#xff1a; -n 不要在最后自…...

wgcloud-server端部署说明

Wgcloud 是一款开源的轻量级服务器监控系统&#xff0c;支持多平台&#xff0c;可对服务器的 CPU、内存、磁盘、网络等指标进行实时监控。 以下是 Wgcloud Server端的详细部署步骤&#xff1a; 环境准备 服务器&#xff1a; 至少准备两台服务器&#xff0c;一台作为监控端&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&#xff0c;然后创建一个项目&#xff0c;再在最上面的一行依次打开“扩展-->管理扩展”&#xff0c;再在搜索框内搜索“QT”&#xff0c;显示如下界面&#xff1a; 再在右边QT右边有个“在浏览器中查看”&#xff0c;打开后出现…...

【C++设计模式】第四篇:建造者模式(Builder)

注意&#xff1a;复现代码时&#xff0c;确保 VS2022 使用 C17/20 标准以支持现代特性。 分步骤构造复杂对象&#xff0c;实现灵活装配 1. 模式定义与用途 核心目标&#xff1a;将复杂对象的构建过程分离&#xff0c;使得同样的构建步骤可以创建不同的表示形式。 常见场景&am…...

Spring Boot如何利用Twilio Verify 发送验证码短信?

Twilio提供了一个名为 Twilio Verify 的服务&#xff0c;专门用于处理验证码的发送和验证。这是一个更为简化和安全的解决方案&#xff0c;适合需要用户身份验证的应用。 使用Twilio Verify服务的步骤 以下是如何在Spring Boot中集成Twilio Verify服务的步骤&#xff1a; 1.…...

制造业中的“大数据”:如何实现精准决策?

在当今全球经济竞争日趋激烈、技术变革周期不断缩短的环境下&#xff0c;制造业面临着全新的挑战和机遇。随着信息技术的飞速发展&#xff0c;“大数据”正以前所未有的速度渗透到制造业的各个环节&#xff0c;帮助企业实现更精准的决策、更灵活的生产组织以及更敏捷的市场响应…...

Linux cat 命令

cat&#xff08;英文全拼&#xff1a;concatenate&#xff09;命令用于连接文件并打印到标准输出设备上&#xff0c;它的主要作用是用于查看和连接文件。 使用权限 所有使用者 语法格式 cat [选项] [文件] 参数说明&#xff1a; -n&#xff1a;显示行号&#xff0c;会在输…...

CSS—flex布局、过渡transition属性、2D转换transform属性、3D转换transform属性

​ 1.flex布局 也叫弹性布局&#xff0c;是浏览器提倡的布局模型&#xff0c;非常适合结构化布局&#xff0c;提供了强大的空间分布和对齐能力&#xff0c;不会产生浮动布局中脱标现象&#xff0c;布局网页更简单&#xff0c;更灵活。 flex容器属性&#xff1a; 属性描述d…...