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

python:pymysql概念、基本操作和注入问题讲解

python:pymysql分享目录

  • 一、概念
  • 二、数据准备
  • 三、安装pymysql
  • 四、pymysql使用
    • (一)使用步骤
    • (二)查询操作
    • (三)增
    • (四)改
    • (五)删
  • 五、关于pymysql注入问题

一、概念

如果使用之前学习的MySQL客户端来完成插入10000条数据的操作,那么这个工作量无疑是巨大的,在这个时候就可以使用pymysql,更高效。

PyMySQL 是一个纯 Python 实现的 MySQL 客户端库,用于 Python 程序与 MySQL 数据库的交互。pymysql连接速度快,协议优化,更适宜于用来处理大批量数据,

二、数据准备

例:
--1. 创建 "京东" 数据库
create database jing_dong charset=utf8;-- 使用 "京东" 数据库
use jing_dong;-- 创建一个商品goods数据表
create table goods(id int unsigned primary key auto_increment not null,name varchar(150) not null,cate_name varchar(40) not null,brand_name varchar(40) not null,price decimal(10,3) not null default 0,is_show bit not null default 1,is_saleoff bit not null default 0
);-- 向goods表中插入数据insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default);
insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default);
insert into goods values(0,'g150th 15.6英寸游戏本','游戏本','雷神','8499',default,default);
insert into goods values(0,'x550cc 15.6英寸笔记本','笔记本','华硕','2799',default,default);
insert into goods values(0,'x240 超极本','超级本','联想','4880',default,default);
insert into goods values(0,'u330p 13.3英寸超极本','超级本','联想','4299',default,default);
insert into goods values(0,'svp13226scb 触控超极本','超级本','索尼','7999',default,default);
insert into goods values(0,'ipad mini 7.9英寸平板电脑','平板电脑','苹果','1998',default,default);
insert into goods values(0,'ipad air 9.7英寸平板电脑','平板电脑','苹果','3388',default,default);
insert into goods values(0,'ipad mini 配备 retina 显示屏','平板电脑','苹果','2788',default,default);
insert into goods values(0,'ideacentre c340 20英寸一体电脑 ','台式机','联想','3499',default,default);
insert into goods values(0,'vostro 3800-r1206 台式电脑','台式机','戴尔','2899',default,default);
insert into goods values(0,'imac me086ch/a 21.5英寸一体电脑','台式机','苹果','9188',default,default);
insert into goods values(0,'at7-7414lp 台式电脑 linux )','台式机','宏碁','3699',default,default);
insert into goods values(0,'z220sff f4f06pa工作站','服务器/工作站','惠普','4288',default,default);
insert into goods values(0,'poweredge ii服务器','服务器/工作站','戴尔','5388',default,default);
insert into goods values(0,'mac pro专业级台式电脑','服务器/工作站','苹果','28888',default,default);
insert into goods values(0,'hmz-t3w 头戴显示设备','笔记本配件','索尼','6999',default,default);
insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);
insert into goods values(0,'x3250 m4机架式服务器','服务器/工作站','ibm','6888',default,default);
insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);# 创建用户表
create TABLE user(id int PRIMARY KEY AUTO_INCREMENT,user varchar(30),pwd varchar(30)
);
insert into user(user,pwd) VALUE ('root','123456');

三、安装pymysql

pycharm的客户端安装指令:
命令1: pip  install pymysql  #指令1
命令2: pip  install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple/ #指令2

下面方式也可以安装:
在这里插入图片描述

四、pymysql使用

PyMySQL中的增(INSERT)、删(DELETE)、改(UPDATE)操作与事务密切相关,以下是它们之间的关系:

基本关系

1.事务是一组操作的集合:在PyMySQL中,增删改操作通常是在事务的上下文中执行的。

2.默认自动提交:PyMySQL默认启用了自动提交(autocommit=True),每个增删改语句会立即生效;如果关闭自动提交(autocommit=False),则需要显式提交事务才能使更改永久生效。

关键点

原子性:事务内的所有增删改操作要么全部成功,要么全部失败回滚(rollback);

一致性:事务执行前后数据库保持一致性状态;

隔离性:事务间的增删改操作相互隔离;

持久性:一旦事务提交,增删改的结果将永久保存。

什么是一致性状态?
一致性状态指的是数据库中的数据满足所有预定义的业务规则和完整性约束,包括:实体完整性:主键不能为空参照完整性:外键关系必须有效用户定义的完整性:如账户余额不能为负、年龄必须大于0等业务规则数据关系正确性:如总金额=单价×数量等计算关系

事务机制确保了PyMySQL中增删改操作的可靠性和数据完整性。

(一)使用步骤

pymysql使用步骤:
1.导入模块
2.创建连接
3.创建游标
4.执行sql
5.关闭游标
6.关闭连接

(二)查询操作

# 1.导入pymysql模块
import pymysql# 2.创建连接对象
conn = pymysql.connect(host='localhost',port=3306,user='root',password='root',database='jing_dong'
)
# 3.创建游标对象
cur = conn.cursor()
# 4.执行sql
row = cur.execute('SELECT * FROM goods')
print(f'影响了{row}行')
# fetchone: 一次拿一条数据
# data1 = cur.fetchone()
# print(data1)
# fetchall: 一次拿剩下的所有的数据
data2 = cur.fetchall()
print(data2)
# 5.关闭游标
cur.close()
# 6.关闭连接
conn.close()

额外分享:关于InnoDB引擎和MyISAM引擎(方便看懂后面代码)
在这里插入图片描述

InnoDB要求显式提交不是为了增加复杂度,而是为了提供:更强大的数据完整性保障更灵活的业务逻辑控制更安全的错误恢复机制更高的并发性能

(三)增

# 1.导入pymysql模块
from pymysql import connect# 2.创建连接对象
conn = connect(host='127.0.0.1',port=3306,user='root',password='root',database='jing_dong'
)
# 3.创建游标对象
cur = conn.cursor()
# 4.执行sql语句
row = cur.execute("insert into goods(name,cate_name,brand_name) value ('测试','测试','测试')")
print(f'影响了{row}行')
# innoDB引擎要求必须提交,myisam引擎不支持事务(不commit也可以)
conn.commit()
# 5.关闭游标
cur.close()
# 6.关闭连接
conn.close()

(四)改

# 1.导入pymysql模块
from pymysql import connect# 2.创建连接对象
conn = connect(host='127.0.0.1',port=3306,user='root',password='root',database='jing_dong'
)
# 3.创建游标对象
cur = conn.cursor()
# 4.执行sql语句
row = cur.execute("update goods set price = 99999 where name='测试'")
print(f'影响了{row}行')
# innoDB引擎要求必须提交,myisam引擎不支持事务(不commit也可以)
conn.commit()
# 5.关闭游标
cur.close()
# 6.关闭连接
conn.close()

(五)删

# 1.导入pymysql模块
from pymysql import connect# 2.创建连接对象
conn = connect(host='127.0.0.1',port=3306,user='root',password='root',database='jing_dong'
)
# 3.创建游标对象
cur = conn.cursor()
# 4.执行sql语句
try:row = cur.execute("DELETE FROM goods WHERE name='测试'")print(f'影响了{row}行')# a = 1 / 0
except Exception as e:print(f'老弟啊,出错了呀...详情:{e}')conn.rollback()# innoDB引擎要求必须提交,myisam引擎不支持事务(不commit也可以)
conn.commit()
# 5.关闭游标
cur.close()
# 6.关闭连接
conn.close()

五、关于pymysql注入问题

首先,一个实际应用中:

例:
# 用户登录
username = input('请输入用户名:')
password = input('请输入密码:')
# 后台python代码连接数据库判断
# 1.导入pymysql模块
import pymysql
# 2.创建连接对象
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='root',database='jing_dong'
)
# 3.创建游标对象
cur = conn.cursor()
# 4.执行sql语句(判断是否登录成功)
row = cur.execute(f"select * from user where user='{username}' and pwd='{password}'")
if row:print('登录成功')
else:print('登录失败')
# 5.关闭游标
cur.close()
# 6.关闭连接
conn.close()

用户可能出现下面情况(注入问题):

例:
用户录入:
用户名:随意  密码: ' or 1=1 or '
导致系统构造后的mysql语句为:select * from user where user='root' and pwd='  'or 1=1 or '  ', 无法达成原始验证目的(or与前面的and被同样识别)。

处理方法(不能太信任用户):

解决sql注入问题: sql单独定义,用%s占位,把所有参数放到列表里,把sql和参数列表传给execute,这样系统构造mysql语句将不会出错(严格的代码/数据分开)。

# 用户登录
username = input('请输入用户名:')
password = input('请输入密码:')
# 后台python代码连接数据库判断
# 1.导入pymysql模块
import pymysql
# 2.创建连接对象
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='root',database='jing_dong'
)
# 3.创建游标对象
cur = conn.cursor()
# 4.执行sql语句(判断是否登录成功)
# 解决sql注入问题:  sql单独定义,用%s占位,把所有参数放到列表里,把sql和参数列表传给execute
sql = "select * from user where user=%s and pwd=%s"
parm = [username,password]
row = cur.execute(sql,parm)
if row:print('登录成功')
else:print('登录失败')
# 5.关闭游标
cur.close()
# 6.关闭连接
conn.close()

今天的分享到此为止。

相关文章:

python:pymysql概念、基本操作和注入问题讲解

python:pymysql分享目录 一、概念二、数据准备三、安装pymysql四、pymysql使用(一)使用步骤(二)查询操作(三)增(四)改(五)删 五、关于pymysql注入…...

科普:极简的AI乱战江湖

本文无图。 大模型 ‌2022年2月,‌文生图应用的鼻祖Midjourney上线。 ‌2022年8月,‌开源版的Midjourney,也就是Stable Diffusion上线。 2022年11月30日‌,OpenAI正式发布ChatGPT-3.5。 此后,不断有【大模型】面世&…...

养生指南:解锁健康生活新方式

一、饮食:精准搭配,科学滋养 饮食以 “少加工、多天然” 为核心。早餐选择希腊酸奶搭配蓝莓与一把混合坚果,富含蛋白质与抗氧化成分;午餐用藜麦饭搭配香煎龙利鱼和彩椒炒芦笋,营养全面且低脂;晚餐则是山药…...

Dolphinscheduler执行工作流失败,后台报duplicate key错误

背景 现场童鞋发来一张图如下 我很懵逼,不知道出了啥问题,在聊天工具上聊了10m还不知道啥,干脆就搞个腾讯会议(在此感谢腾讯爸爸免费会议)。哦,现场临时搭建了dolphinscheduler,然后导入工作流…...

【Vue】路由2——编程式路由导航、 两个新的生命周期钩子 以及 路由守卫、路由器的两种工作模式

目录 一、路由的push 与 replace切换 二、编程式路由导航 三、缓存路由组件 四、新增的两个生命周期钩子 五、路由守卫 5.1 前置路由守卫 5.2 后置路由守卫 5.3 独立路由守卫 5.4 组件内 路由守卫 六、路由器的两种工作模式 6.1 hash模式 6.2 history模式 6.3 V…...

VDC、SMC、MCU怎么协同工作的?

华为视频会议系统中,VDC(终端控制)、SMC(会话管理)、MCU(媒体处理) 通过分层协作实现端到端会议管理,其协同工作机制可总结为以下清晰架构: 1. 角色分工 组件核心职责类…...

ETL数据集成产品选型需要关注哪些方面?

ETL(Extract,Transform,Load)工具作为数据仓库和数据分析流程中的关键环节,其选型对于企业的数据战略实施有着深远的影响。谷云科技在 ETL 领域耕耘多年,通过自身产品的实践应用,对 ETL 产品选型…...

DriveGenVLM:基于视觉-语言模型的自动驾驶真实世界视频生成

《DriveGenVLM: Real-world Video Generation for Vision Language Model based Autonomous Driving》2024年8月发表,来自哥伦比亚大学的论文。 自动驾驶技术的进步需要越来越复杂的方法来理解和预测现实世界的场景。视觉语言模型(VLM)正在成…...

【达梦数据库】过程、函数、包头和包体详解零基础

目录 背景参考链接解释包头包体 背景 最近遇到关于包头和包体的问题,学习并记录 参考链接 参考链接: oracle的过程、函数、包头和包体详解零基础 解释 包头主要用于定义接口,包体主要用以实现包体中声明的存储过程、函数等。 包头 包体...

HarmonyOS开发样式布局

个人简介 👨‍💻‍个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言&…...

SpringCloud——EureKa

目录 1.前言 1.微服务拆分及远程调用 3.EureKa注册中心 远程调用的问题 eureka原理 搭建EureKaServer 服务注册 服务发现 1.前言 分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为服务。 优点: 降…...

【力扣刷题】LeetCode763-划分字母区间

文章目录 1. LeetCode763_划分字母区间 1. LeetCode763_划分字母区间 题目链接🔗 🐧解题思路: 区间合并 题目中这句话很关键“我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。” 你这句话你可以理解为 把…...

使用for循环和字典功能,统计字符出现在一个英文句子中的次数(python)

本题目要求写出一段代码实现输入一个英文句子后,统计句子中各个字符(不区分大小写,包含空格和标点符号)出现的次数。 输入格式: 请例如:输入 Life is short,we need Python. 。 输出格式: 对每一个字符输出对应的出现次数&…...

带你搞懂@Valid和@Validated的区别

前言 有参数传递的地方都少不了参数校验。在实际开发过程中,参数校验是保证程序健壮性的重要环节,前端的参数校验是为了用户体验,后端的参数校验是为了安全。试想一下,如果在 Controller 层中没有经过任何校验的参数通过 Service层…...

大数据hadoop小文件处理方案

Hadoop处理小文件问题的解决方案可分为存储优化、处理优化和架构优化三个维度,以下是综合技术方案及实施要点: 一、存储层优化方案 1.文件合并技术 离线合并:使用hadoop fs -getmerge命令将多个小文件合并为大文件并重新上传; MapReduce合并:开发专用MR…...

安装NASM

安装NASM 注意:这篇文章在librdkafka安装系列,不需要参考,仅为了记录而写,请不要参考,后续编译openssl的时候,可以使用参数no-asm,不影响整个的编译步骤。这里主要作为记录帖子。 本篇是Windows系统编译Qt使用的kafka(librdkafka)系列可以不参考的一篇,编译librdkaf…...

RabbitMQ-高级

RabbitMQ-高级 文章目录 RabbitMQ-高级前言:消息可靠性问题1.生产者可靠性1.生产者重连2.生产者确认机制3.生产者代码实现原理 2.MQ的可靠性1.数据持久化2.LazyQueue 3.消费者可靠性1.消费者确认机制1.确认机制2.确认功能 2.失败重试机制1.开启失败重试机制2.多次失…...

深入解析Spring Boot与Kafka集成:构建高效消息驱动微服务

深入解析Spring Boot与Kafka集成:构建高效消息驱动微服务 引言 在现代微服务架构中,消息队列扮演着至关重要的角色,而Apache Kafka凭借其高吞吐量、低延迟和可扩展性,成为了许多企业的首选。本文将详细介绍如何在Spring Boot应用…...

Unreal Engine: Windows 下打包 AirSim项目 为 Linux 平台项目

环境: Windows: win10, UE4.27, Visual Studio 2022 Community.Linux: 22.04 windows环境安装教程: 链接遇到的问题(问题:解决方案) 点击Linux打包按钮,跳转至网页而不是执行打包流程:用VS打开项…...

【图像大模型】FLUX.1-dev:深度解析与实战指南

FLUX.1-dev:深度解析与实战指南 一、引言二、模型架构与技术原理(一)模型架构(二)Rectified Flow 技术(三)指导蒸馏(Guidance Distillation) 三、项目运行方式与执行步骤…...

mariadb 升级 (通过yum)

* 注意下 服务名, 有的服务器上是mysql,有的叫mariadb,mysqld的 #停止 systemctl stop mysql #修改源 vi /etc/yum.repos.d/MariaDB.repo baseurl http://yum.mariadb.org/11.4/centos7-amd64 #卸载 yum remove mysql #安装 yum install MariaDB-server galera-4 MariaDB-…...

Flink 非确定有限自动机NFA

Flink 是一个用于状态化计算的分布式流处理框架,而非确定有限自动机(NFA, Non-deterministic Finite Automaton)是一种在计算机科学中广泛使用的抽象计算模型,常用于正则表达式匹配、模式识别等领域。 Apache Flink 提供了对 NFA…...

Profinet转Ethernet IP主站网关:点燃氢醌生产线的智慧之光!

案例分享:转角指示器和Profinet转EthernetIP网关的应用 在现代工业自动化中,设备和系统之间的高效通信至关重要。最近,我们在某大型化工企业的生产线上实施了一个项目,旨在通过先进的设备和通信技术提高生产效率和安全性。该项目…...

动态IP技术在跨境电商中的创新应用与战略价值解析

在全球化4.0时代,跨境电商正经历从"流量红利"向"技术红利"的深度转型。动态IP技术作为网络基础设施的关键组件,正在重塑跨境贸易的运营逻辑。本文将从技术架构、应用场景、创新实践三个维度,揭示动态IP如何成为跨境电商突…...

WEB安全--SQL注入--Oracle注入

一、Oracle知识点了解 1.1、系统变量与表 版本号:SELECT * FROM V$VERSION 用户名:USER、SYS_CONTEXT(USERENV,SESSION_USER) 库名:ALL_USERS、USER_USERS、DBA_USERS 表名:ALL_TABLES、DBA_TABLES、USER_TABLES 字段名&…...

Unity预制体变体(Prefab Variants)、接口(Interface)、抽象类(Abstract Class)、枚举(Enumeration)

一、预制体变体(Prefab Variants) 预制体变体是什么? 预制体变体是指从同一个基础预制体派生出来的不同版本的预制体。这些变体可以包含不同的组件配置、属性值、子对象或者行为,但它们共享一些共同的基础结构和特性。通过创建预…...

pymol包安装和使用

PyMOL 是一款分子可视化软件,而pymol则是其对应的 Python 包,借助它能够实现对 PyMOL 的编程控制。 主要功能 分子结构可视化:支持展示蛋白质、核酸、小分子等多种分子的 3D 结构。自定义渲染:可对分子的表示方式、颜色以及光照…...

【学习笔记】机器学习(Machine Learning) | 第七章|神经网络(2)

机器学习(Machine Learning) 简要声明 基于吴恩达教授(Andrew Ng)课程视频 BiliBili课程资源 文章目录 机器学习(Machine Learning)简要声明 神经网络在图像识别及手写数字识别中的应用一、神经网络在图像识别中的应用&#xff0…...

【神经网络与深度学习】model.eval() 模式

引言 在深度学习模型的训练和推理过程中,不同的模式设置对模型的行为和性能有着重要影响。model.eval() 是 PyTorch 等深度学习框架中的关键操作,它用于将模型切换到评估模式(evaluation mode),确保模型在测试和推理阶…...

ASIC和FPGA,到底应该选择哪个?

ASIC和FPGA各有优缺点。 ASIC针对特定需求,具有高性能、低功耗和低成本(在大规模量产时);但设计周期长、成本高、风险大。FPGA则适合快速原型验证和中小批量应用,开发周期短,灵活性高,适合初创企…...

JavaScript 性能优化实战指南

JavaScript 性能优化实战指南 前言 随着前端应用复杂度提升,JavaScript 性能瓶颈日益突出。高效的性能优化不仅能提升用户体验,还能增强系统稳定性和可维护性。本文系统梳理了 JavaScript 性能优化的核心思路、常见场景和实战案例,结合代码…...

Unity3D HUD UI性能优化方案

前言 在Unity3D中实现高性能的HUD UI需要综合考虑渲染效率、CPU开销和内存管理。以下是分步的优化方案: 对惹,这里有一个游戏开发交流小组,大家可以点击进来一起交流一下开发经验呀! 1. 降低Draw Call:合批与图集 …...

晶圆Map图芯片选择显示示例

效果 列表中有四个Mark点,需求是选择某一个点时在Map图中区别显示出来。 实现思路: 根据DataGrid 的行选择 SelectionChanged事件,先循环所有Mark点清除Rectangle的边框大小,再获取选择的芯片,设置Rectangle的边框大小和颜色。 示例代码 1.UI代码 <DataGrid Grid.…...

HarmonyOS实战:自定义时间选择器

前言 最近在日常鸿蒙开发过程中&#xff0c;经常会使用一些时间选择器&#xff0c;鸿蒙官方提供的时间选择器满足不了需求&#xff0c;所以自己动手自定义一些经常会使用到的时间选择器&#xff0c;希望能帮到你&#xff0c;建议点赞收藏&#xff01; 实现效果 需求分析 默认…...

汽车零部件的EMI抗扰性测试

写在前面 本系列文章主要讲解汽车零部件的EMI抗扰性测试的相关知识,希望能帮助更多的同学认识和了解汽车零部件的EMI抗扰性测试。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 1. 背景介绍 多年以来,电磁干扰(EMI)效应一直是现代电子控制系统中备受关注的一个问题。…...

新能源汽车充电桩管理平台如何利用智慧技术优化资源配置问题?

在“双碳”目标的推动下&#xff0c;我国新能源汽车市场迅猛发展&#xff0c;但充电基础设施的供需失衡问题日益突出。部分区域充电桩利用率低下&#xff0c;而核心城区、高速服务区等场景却面临“一桩难求”的困境。智慧技术的引入为解决这一难题提供了新思路。通过物联网&…...

【zookeeper】--部署3.6.3

文章目录 下载解压创建data和logs配置文件1)创建目录并且编辑 zoo.cfg2)接下来将 node01 的 ZooKeeper 所有文件拷贝至 node02 和 node03。推荐从 node02 和 node03 拷贝4&#xff09;最后 vim /etc/profile 配置环境变量&#xff0c;环境搭建结束。配完环境变量后 source /etc…...

[低代码] 明道云调用本地部署 Dify 的进阶方法

在低代码开发平台明道云中,集成外部智能服务(如 Dify)可以极大地提升自动化和智能化能力。之前我们介绍了使用“发送自定义 API”节点直接调用本地部署的 Dify 服务的方法,虽然简单直观,但该方式存在一些限制,比如无法设置 Timeout、逻辑复用性差等问题。 为了构建更稳定…...

ICU库交叉编译

交叉编译步骤 Step 1: 先进行本机编译 ./runConfigureICU Linux/gccmake Step 2: 执行交叉编译 source /opt/fsl-imx-fb/4.14-sumo/environment-setup-cortexa9hf-neon-poky-linux-gnueabimkdir cross_install./configure --disable-samples --disable-tests --prefix/medi…...

永磁同步电机高性能控制算法(22)——基于神经网络的转矩脉动抑制算法为什么低速时的转速波动大?

0. 前言 在之前的知乎上发过一些转矩脉动抑制/谐波电流抑制的算法。例如&#xff1a; https://zhuanlan.zhihu.com/p/24723996895https://zhuanlan.zhihu.com/p/24723996895 这些算法基本上都需要先知道谐波的频率。 重复控制这个算法虽然可以抑制掉某个频率及其所有整数倍的…...

Java大厂面试实战:Spring Boot与微服务场景中的技术点解析

Java大厂面试实战&#xff1a;Spring Boot与微服务场景中的技术点解析 第一轮&#xff1a;基础技术了解 面试官&#xff1a;谢飞机&#xff0c;你好。从简历上看&#xff0c;你熟悉Spring Boot&#xff0c;那我们来聊聊它的核心功能吧。Spring Boot有哪些主要的特性&#xff…...

Pycharm 选择Python Interpreter

你的系统可能有多个 Python 环境&#xff0c;比如&#xff1a; macOS 自带的 /usr/bin/python3 你用 brew install python 安装的 /opt/homebrew/bin/python3 你可能还用了虚拟环境&#xff08;venv 或 conda&#xff09; PyCharm 默认配置可能用的是一个虚拟环境&#xff…...

文件夹如何打包成jar包

应用场景 主要是&#xff1a;比如 maven 引入一个依赖&#xff08;其实就是下载了一个 jar 包&#xff09;&#xff0c;然后需要修改 jar 包里面的某个文件&#xff0c;然后再重新打包成 jar 包&#xff0c;如下图&#xff1a; 使用方法 使用压缩工具打开这个 jar 包&#xf…...

sqli-labs第九关—‘时间盲注

一&#xff1a;判断闭合类型 先按照之前的判断方式判断&#xff0c;发现无论输入什么都显示You are in.......... 可以考虑使用时间盲注&#xff1a; 二&#xff1a;时间盲注Time-based Blind&#xff1a; 1.解释&#xff1a; 通过时间延迟判断结果 2.核心原理&#xff1a…...

10.15 LangChain v0.3重磅升级:Tool Calling技术颠覆大模型工具调用,效率飙升300%!

LangChain v0.3 技术生态与未来发展:支持 Tool Calling 的大模型 关键词:LangChain Tool Calling, 大模型工具调用, @tool 装饰器, ToolMessage 管理, Few-shot Prompting 1. Tool Calling 的技术革新 LangChain v0.3 的工具调用(Tool Calling)功能标志着大模型应用开发进…...

【C++】哈希的概念与实现

1.哈希概念 通过某种函数使元素的存储位置与它的关键码之间能够建立一一映射的关系&#xff0c;可以不经过任何比较&#xff0c;一次直接从表中得到要搜索的元素。 当向该结构中&#xff1a; 插入元素&#xff1a; 根据待插入元素的关键码&#xff0c;以此函数计算出该元素的…...

Spring 代理与 Redis 分布式锁冲突:一次锁释放异常的分析与解决

Spring 代理与 Redis 分布式锁冲突&#xff1a;一次锁释放异常的分析与解决 Spring 代理与 Redis 分布式锁冲突&#xff1a;一次锁释放异常的分析与解决1. 问题现象与初步分析2 . 原因探究&#xff1a;代理机制对分布式锁生命周期的干扰3. 问题复现伪代码4. 解决方案&#xff1…...

vue Element-ui对图片上传和选用时的比例控制

vue Element-ui对图片上传和选用时的比例控制 在后台上传图片和选用已经上传的图片时&#xff0c;往往会因为图片的比例控制不到位导致在客户端渲染时效果差强人意&#xff0c;虽然可以在操作时选择合适的比例上传&#xff0c;但必要的控制还是能完成渲染时良好的体验&#xf…...

UE5在C++项目中判断不同平台

在Unreal Engine 5的C代码中&#xff0c;可以通过以下方法判断当前运行的平台&#xff08;如Android、Windows、iOS&#xff09;&#xff0c;并根据平台执行不同的逻辑&#xff1a; 方法1&#xff1a;使用预处理器宏&#xff08;编译时判断&#xff09; Unreal Engine提供了一…...

用 CodeBuddy 实现「IdeaSpark 每日灵感卡」:一场 UI 与灵感的极简之旅

项目起点&#xff1a;一次随手的灵感 有时候&#xff0c;灵感稍纵即逝&#xff0c;尤其是面对屏幕发呆的时候。那天我忽然想到——要是能有一个每天弹出一句创意提示、灵感金句的应用就好了&#xff0c;最好配上简洁但有氛围感的 UI&#xff0c;像抽一张卡片一样&#xff0c;轻…...