在这里插入图片描述

目录

  • 1.去除空格:清理字符串的实用技巧
    • 1.1 三类去空格方法:strip()、lstrip()、rstrip()
    • 1.2 实战案例:处理用户输入的空格问题
  • 2.判断类型:验证字符串内容的特性
    • 2.1 常用类型判断方法
    • 2.2 实战案例:验证用户输入的合法性
  • 3.编码转换:字符串与字节的相互转换
    • 3.1 编码与解码的基本概念
    • 3.2 实战案例:解决中文编码乱码问题
  • 4.总结与扩展

在实际开发中,字符串处理往往涉及更具体的需求:清理用户输入的多余空格、验证输入内容是否符合特定格式(如纯数字)、处理不同编码的文本数据等。这些操作虽然基础,却直接影响程序的健壮性和用户体验。本文将详细讲解字符串的三类特殊操作——去除空格、类型判断和编码转换,通过实用案例展示其在实际开发中的应用,帮助读者解决文本处理中的常见问题。

1.去除空格:清理字符串的实用技巧

用户输入的文本常常包含多余的空格(如首尾空格、意外的空白字符),这些无效字符会导致比较、查找等操作出错。Python 提供了专门的方法用于去除字符串中的空格,确保文本数据的整洁性。

1.1 三类去空格方法:strip()、lstrip()、rstrip()

Python 字符串提供了三种去除空格的方法,分别针对不同位置的空格:

  • s.strip():去除字符串两端的所有空白字符(包括空格、制表符 \t、换行符 \n 等)
  • s.lstrip():仅去除字符串左端(开头)的空白字符
  • s.rstrip():仅去除字符串右端(结尾)的空白字符
# 定义包含多种空白字符的字符串
text = "  \tPython编程  \n"
print(f"原始字符串:「{text}」")
print(f"原始长度: {len(text)}")# 使用strip()去除两端空白
stripped = text.strip()
print(f"\nstrip()结果:「{stripped}」")
print(f"strip()后长度: {len(stripped)}")# 使用lstrip()去除左端空白
left_stripped = text.lstrip()
print(f"\nlstrip()结果:「{left_stripped}」")
print(f"lstrip()后长度: {len(left_stripped)}")# 使用rstrip()去除右端空白
right_stripped = text.rstrip()
print(f"\nrstrip()结果:「{right_stripped}」")
print(f"rstrip()后长度: {len(right_stripped)}")# 去除指定字符(不仅限于空白)
# strip()可以接收参数,指定要去除的字符集合
custom_str = "###Hello World###"
print(f"\n原始字符串:「{custom_str}」")
print(f"去除#后:「{custom_str.strip('#')}」")mixed_str = "123abc456"
print(f"原始字符串:「{mixed_str}」")
# 去除开头和结尾的数字(123和456)
print(f"去除数字后:「{mixed_str.strip('0123456789')}」")

注意事项:

  • 空白字符不仅包括空格( ),还包括制表符(\t)、换行符(\n)、回车符(\r)等
  • 这三个方法都不会修改原字符串(字符串不可变),而是返回处理后的新字符串
  • 可以通过参数指定要去除的字符(不限于空白),例如 s.strip('$%') 会去除两端的 $%

1.2 实战案例:处理用户输入的空格问题

用户输入是空格问题的高发区——用户可能在输入用户名、密码、搜索关键词时意外添加空格,导致程序判断错误(如登录失败、搜索无结果)。解决这类问题的核心是在处理输入前先进行空格清理。

# 案例1:用户登录验证(处理用户名空格)
def login(username, password):# 模拟数据库中的正确凭据valid_username = "admin"valid_password = "123456"# 清理输入(去除两端空格)cleaned_username = username.strip()cleaned_password = password.strip()# 验证if cleaned_username == valid_username and cleaned_password == valid_password:return True, "登录成功"else:return False, "用户名或密码错误"# 测试带空格的输入
print("案例1:登录验证")
username = "  admin  "  # 带前后空格
password = "123456\t"   # 带制表符
success, message = login(username, password)
print(f"登录结果:{success},消息:{message}")  # 应登录成功
print()# 案例2:搜索功能(忽略输入前后空格)
def search_items(keyword, items):# 清理关键词(仅去除两端空格,保留中间空格)cleaned_keyword = keyword.strip()# 如果清理后为空,返回空结果if not cleaned_keyword:return []# 搜索(不区分大小写)results = []for item in items:if cleaned_keyword.lower() in item.lower():results.append(item)return results# 测试搜索功能
print("案例2:搜索功能")
items = ["Python编程", "Java开发", "Python数据分析", "C++入门"]
user_input = "  python  "  # 带前后空格
results = search_items(user_input, items)
print(f"搜索关键词「{user_input}」的结果:{results}")  # 应返回包含Python的项
print()# 案例3:表单验证(不允许中间有空格)
def validate_username(username):# 清理两端空格cleaned = username.strip()# 检查是否为空if not cleaned:return False, "用户名不能为空"# 检查是否包含空格if ' ' in cleaned:return False, "用户名不能包含空格"# 检查长度if len(cleaned) < 3 or len(cleaned) > 20:return False, "用户名长度必须在3-20之间"return True, "用户名有效"# 测试用户名验证
print("案例3:用户名验证")
test_usernames = ["  user  ", "  my name  ", "ab", "a"*21, "valid_user"]
for name in test_usernames:valid, msg = validate_username(name)print(f"用户名「{name}」:{valid} - {msg}")

处理用户输入空格的最佳实践:

  1. 输入预处理:在验证或存储用户输入前,先用 strip() 清理两端空格
  2. 保留中间空格:除非业务明确禁止,否则不要去除字符串中间的空格(如用户输入的姓名可能包含空格)
  3. 明确提示:当用户输入包含不允许的空格时,给出清晰的错误提示
  4. 日志记录:必要时记录原始输入(便于排查问题),但处理和存储时使用清理后的值

2.判断类型:验证字符串内容的特性

在处理用户输入时,经常需要验证字符串是否符合特定格式:如手机号必须是纯数字、用户名只能包含字母和数字等。Python 字符串提供了一系列用于判断内容特性的方法,无需编写复杂的正则表达式即可完成基本验证。

2.1 常用类型判断方法

Python 提供了多个用于判断字符串内容特性的方法,最常用的包括:

方法功能描述
s.isdigit()判断字符串是否只包含数字字符(0-9),返回布尔值
s.isalpha()判断字符串是否只包含字母(a-z, A-Z, 汉字等 Unicode 字母),返回布尔值
s.isalnum()判断字符串是否只包含字母和数字,返回布尔值
s.islower()判断字符串中的字母是否全为小写
s.isupper()判断字符串中的字母是否全为大写
s.istitle()判断字符串是否为标题格式(每个单词首字母大写,其余小写)
s.isspace()判断字符串是否只包含空白字符
# 定义测试字符串
test_strings = ["12345",       # 纯数字"abcdef",      # 纯小写字母"ABCDEF",      # 纯大写字母"HelloWorld",  # 混合大小写字母"Python123",   # 字母+数字"Python编程",   # 字母+中文"   ",         # 空格"123abc!",     # 包含特殊字符"12.34",       # 包含小数点"-123"         # 包含负号
]# 测试isdigit():是否只包含数字
print("=== isdigit() 测试 ===")
for s in test_strings:print(f"「{s}」: {s.isdigit()}")# 测试isalpha():是否只包含字母
print("\n=== isalpha() 测试 ===")
for s in test_strings:print(f"「{s}」: {s.isalpha()}")# 测试isalnum():是否只包含字母和数字
print("\n=== isalnum() 测试 ===")
for s in test_strings:print(f"「{s}」: {s.isalnum()}")# 其他常用判断方法
print("\n=== 其他判断方法测试 ===")
s = "Hello World"
print(f"「{s}」是否全为小写: {s.islower()}")
print(f"「{s.upper()}」是否全为大写: {s.upper().isupper()}")
print(f"「{s.title()}」是否为标题格式: {s.title().istitle()}")
print(f"「   \t\n」是否全为空白: {'   \t\n'.isspace()}")

重要说明:

  • isdigit() 只识别 0-9 这样的数字字符,不识别小数点(.)、负号(-)等,因此 "12.3""-45" 会返回 False
  • isalpha() 会将汉字、日文等 Unicode 字母视为字母,因此 "Python编程" 会返回 True
  • 空字符串("")调用这些方法时均返回 False
  • 这些方法的返回结果受字符串内容影响,与字符串长度无关(只要内容符合条件,无论长度如何都返回 True

2.2 实战案例:验证用户输入的合法性

类型判断方法在用户输入验证中应用广泛,如验证手机号、身份证号、用户名等。结合去空格操作,可以构建简单而有效的输入验证逻辑。

# 案例1:验证手机号(中国大陆)
def validate_phone(phone):# 1. 去除两端空格cleaned = phone.strip()# 2. 检查是否为11位数字if len(cleaned) != 11 or not cleaned.isdigit():return False, "手机号必须是11位数字"# 3. 检查开头是否为1(中国大陆手机号规则)if not cleaned.startswith(('13', '14', '15', '17', '18', '19')):return False, "手机号格式不正确"return True, "手机号验证通过"print("案例1:手机号验证")
test_phones = ["13800138000",    # 正确格式" 13912345678 ",   # 带空格"123456789",       # 长度不足"138001380000",    # 长度过长"1380013800a",     # 包含字母"23800138000"      # 开头不正确
]
for phone in test_phones:valid, msg = validate_phone(phone)print(f"手机号「{phone}」: {valid} - {msg}")
print()# 案例2:验证用户名(只能包含字母、数字和下划线,长度3-20)
def validate_username(username):cleaned = username.strip()# 检查长度if len(cleaned) < 3 or len(cleaned) > 20:return False, "用户名长度必须在3-20之间"# 检查字符(字母、数字、下划线)# 注意:isalnum()不包含下划线,因此需要单独处理for char in cleaned:if not (char.isalnum() or char == '_'):return False, "用户名只能包含字母、数字和下划线"# 检查不能以数字开头if cleaned[0].isdigit():return False, "用户名不能以数字开头"return True, "用户名验证通过"print("案例2:用户名验证")
test_usernames = ["python_dev",      # 正确"user123",         # 正确"  py_user  ",     # 带空格"ab",              # 太短"a"*21,            # 太长"user@name",       # 包含特殊字符"123user"          # 以数字开头
]
for name in test_usernames:valid, msg = validate_username(name)print(f"用户名「{name}」: {valid} - {msg}")
print()# 案例3:验证年龄(必须是正整数)
def validate_age(age_str):cleaned = age_str.strip()# 检查是否为数字if not cleaned.isdigit():return False, "年龄必须是数字"# 转换为整数并检查范围age = int(cleaned)if age < 0 or age > 150:return False, "年龄必须在0-150之间"return True, f"年龄验证通过({age}岁)"print("案例3:年龄验证")
test_ages = ["25",       # 正确" 30 ",     # 带空格"abc",      # 非数字"12.5",     # 小数"-5",       # 负数"200"       # 超出范围
]
for age in test_ages:valid, msg = validate_age(age)print(f"年龄「{age}」: {valid} - {msg}")

输入验证的最佳实践:

  1. 先清理后验证:始终先使用 strip() 去除两端空格,避免空格导致的误判
  2. 分步验证:将验证逻辑分解为多个步骤(如先检查长度,再检查格式),并返回具体的错误原因
  3. 结合业务规则:基础类型判断(如 isdigit())只是第一步,还需结合具体业务规则(如手机号的长度和开头数字)
  4. 提供明确反馈:错误提示应清晰说明问题所在(如“手机号必须是11位数字”而非简单的“输入无效”)

3.编码转换:字符串与字节的相互转换

在 Python 中,字符串(str)和字节(bytes)是两种不同的数据类型:字符串是 Unicode 字符的序列,而字节是原始的二进制数据。在处理文件、网络通信、数据库交互时,经常需要在两者之间进行转换,尤其是处理中文等非 ASCII 字符时,编码转换是避免乱码的关键。

3.1 编码与解码的基本概念

  • 编码(encode):将字符串(str)转换为字节(bytes),使用 str.encode(encoding) 方法
  • 解码(decode):将字节(bytes)转换为字符串(str),使用 bytes.decode(encoding) 方法

最常用的编码格式是 utf-8,它支持所有 Unicode 字符,是国际通用的编码标准。其他常见编码包括 gbk(中文编码)、latin-1(西欧语言)等。

# 定义一个包含中文的字符串
text = "Python编程很有趣"
print(f"原始字符串: {text}")
print(f"类型: {type(text)}")# 编码:字符串 -> 字节(使用utf-8编码)
bytes_utf8 = text.encode("utf-8")
print(f"\nutf-8编码的字节: {bytes_utf8}")
print(f"字节长度: {len(bytes_utf8)}")  # utf-8中一个汉字占3字节
print(f"类型: {type(bytes_utf8)}")# 解码:字节 -> 字符串(使用utf-8解码)
decoded_text = bytes_utf8.decode("utf-8")
print(f"\n解码后的字符串: {decoded_text}")
print(f"解码后与原字符串是否相同: {decoded_text == text}")# 使用其他编码(如gbk)
try:bytes_gbk = text.encode("gbk")print(f"\ngbk编码的字节: {bytes_gbk}")print(f"字节长度: {len(bytes_gbk)}")  # gbk中一个汉字占2字节print(f"gbk解码: {bytes_gbk.decode('gbk')}")
except UnicodeEncodeError as e:print(f"gbk编码错误: {e}")# 错误示例:编码和解码使用不同的格式
try:# 用utf-8编码,却用gbk解码bytes_utf8 = text.encode("utf-8")wrong_decode = bytes_utf8.decode("gbk")print(f"\n错误解码结果: {wrong_decode}")  # 会出现乱码
except UnicodeDecodeError as e:print(f"解码错误: {e}")

关键知识点:

  • 同一个字符串用不同编码格式转换为字节时,结果(字节内容和长度)可能不同(如 UTF-8 中一个汉字占 3 字节,GBK 中占 2 字节)
  • 编码和解码必须使用相同的格式,否则会出现乱码或 UnicodeDecodeError
  • Python 3 中,字符串默认是 Unicode 编码,支持全球所有语言的字符
  • 字节数据在打印时会显示为 b'...' 形式,非 ASCII 字符会以十六进制表示(如 \xe7\xbc\x96

3.2 实战案例:解决中文编码乱码问题

中文编码乱码是开发中常见的问题,通常源于编码和解码格式不匹配。以下案例展示了如何在文件操作和网络通信中正确处理编码转换,避免乱码。

# 案例1:正确读写包含中文的文件
def write_and_read_chinese():# 写入中文到文件(指定encoding="utf-8")text = "这是一段包含中文的文本"try:# 写入时指定编码为utf-8with open("chinese_text.txt", "w", encoding="utf-8") as f:f.write(text)print("文件写入成功")# 读取时使用相同的编码with open("chinese_text.txt", "r", encoding="utf-8") as f:content = f.read()print(f"正确读取内容: {content}")# 错误示例:使用错误的编码读取try:with open("chinese_text.txt", "r", encoding="gbk") as f:wrong_content = f.read()print(f"错误编码读取内容: {wrong_content}")  # 会出现乱码except UnicodeDecodeError as e:print(f"错误编码读取失败: {e}")except Exception as e:print(f"文件操作错误: {e}")print("案例1:文件读写中的中文处理")
write_and_read_chinese()
print()# 案例2:模拟网络传输中的编码处理
def simulate_network_transfer():# 模拟服务器发送数据def server_send(message):# 服务器将字符串编码为utf-8字节后发送return message.encode("utf-8")# 模拟客户端接收数据def client_receive(data):# 客户端用utf-8解码接收到的字节return data.decode("utf-8")# 测试正常情况original_message = "服务器发送的中文消息"print(f"原始消息: {original_message}")# 模拟传输过程transferred_data = server_send(original_message)received_message = client_receive(transferred_data)print(f"接收消息: {received_message}")print(f"传输是否正确: {received_message == original_message}")# 测试异常情况(客户端使用错误编码)try:wrong_message = transferred_data.decode("gbk")print(f"错误解码消息: {wrong_message}")except UnicodeDecodeError as e:print(f"解码错误: {e}")print("\n案例2:网络传输中的中文处理")
simulate_network_transfer()
print()# 案例3:处理已存在的乱码文本
def fix_mojibake():# 假设这是一段用gbk编码却被错误地以utf-8解码产生的乱码garbled_text = "浣犲ソ锛屾垜鏄疘ython"# 尝试修复:先将乱码文本以utf-8编码回字节,再用正确的gbk解码try:# 步骤1:将乱码字符串以utf-8编码为字节(还原原始字节)original_bytes = garbled_text.encode("utf-8", errors="replace")# 步骤2:用正确的编码(这里假设是gbk)解码fixed_text = original_bytes.decode("gbk", errors="replace")print(f"乱码文本: {garbled_text}")print(f"修复后文本: {fixed_text}")  # 应显示"你好,我是Python"except Exception as e:print(f"修复失败: {e}")print("\n案例3:修复乱码文本")
fix_mojibake()

解决中文编码问题的最佳实践:

  1. 统一使用 UTF-8 编码:在文件操作、网络通信、数据库交互中,优先使用 UTF-8 编码,减少编码不匹配问题
  2. 显式指定编码:在读写文件(open() 函数的 encoding 参数)、编码转换时,始终显式指定编码格式,不要依赖默认值
  3. 处理编码错误:在编码转换时,可以使用 errors 参数处理异常字符(如 errors="replace" 替换无法编码的字符)
  4. 修复乱码的思路:如果文本已乱码,可尝试将其重新编码为字节(使用错误的编码),再用正确的编码解码

记住:编码问题的核心是“编码和解码必须使用相同的格式”,只要保证这一点,就能避免大多数乱码问题。

4.总结与扩展

本文介绍了字符串的三类特殊操作——去除空格、类型判断和编码转换,这些操作在实际开发中应用广泛,直接影响程序的健壮性和用户体验:

  1. 去除空格

    • strip()lstrip()rstrip() 分别用于去除两端、左端、右端的空白字符
    • 核心应用是清理用户输入,避免空格导致的判断错误
    • 扩展用法:可以通过参数指定要去除的特定字符
  2. 类型判断

    • isdigit()isalpha()isalnum() 是验证输入格式的基础工具
    • 需结合业务规则(如长度限制、特定前缀)进行完整验证
    • 提供明确的错误提示,提升用户体验
  3. 编码转换

    • 编码(encode())将字符串转为字节,解码(decode())将字节转为字符串
    • 始终使用相同的编码格式进行编码和解码,推荐使用 UTF-8
    • 处理文件和网络数据时必须注意编码问题,避免中文乱码

扩展学习建议

  • 学习正则表达式(re 模块),处理更复杂的字符串验证需求(如邮箱、URL 格式)
  • 掌握 str.replace()str.split()str.join() 等方法,扩展字符串处理能力
  • 了解 Unicode 字符属性,处理多语言文本(如区分中文、日文、韩文)
  • 学习 unicodedata 模块,处理特殊 Unicode 字符(如表情符号、重音字符)

这些字符串操作看似简单,但在实际开发中却至关重要。熟练掌握并灵活运用这些技巧,能够有效解决文本处理中的常见问题,编写更健壮、更用户友好的程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95753.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95753.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/95753.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gamma AI:AI演示文稿制作工具,高效解决PPT框架搭建难与排版耗时问题

你做 PPT 的时候是不是也常陷入 “两难”&#xff1f;要么对着空白幻灯片发呆&#xff0c;不知道怎么搭框架 —— 比如要做 “产品季度迭代复盘”&#xff0c;既想放数据又想讲问题&#xff0c;结果页面堆得像乱炖&#xff1b;要么好不容易凑完内容&#xff0c;又花两小时调排版…

【应用案例】AI 给医用过滤器 “找茬”:3 大难点 + 全流程解决方案

【应用案例】AI 给医用过滤器 “找茬”&#xff1a;3 大难点 全流程解决方案&#x1f3af;医用过滤器进行医疗AI检测&#x1f3af;先看痛点&#xff1a;医用过滤器检测难在哪&#xff1f;&#x1f3af;AI检测方案&#xff1a;3步实现“零漏检”1. 硬件定制&#xff1a;让缺陷“…

【数据库相关】TxSQL新增数据库节点步骤

TxSQL新增数据库节点步骤准备工作与注意事项具体操作步骤第 1 步&#xff1a;在主库上创建复制专用账号第 2 步&#xff1a;对主库进行锁表并获取二进制日志坐标第 3 步&#xff1a;备份主库数据并传输到新从库第 4 步&#xff1a;主库解锁第 5 步&#xff1a;在新从库服务器上…

Jmeter快速安装配置全指南

1、JDK安装(Java Development Kit) 1.1.JDK下载 JDK下载址&#xff1a; Java Downloads | Oracle &#xff08;jdk-8u211-windows-x64.exe&#xff09; Android 基于 Java 语言开发&#xff0c;所以必须安装Java环境&#xff0c;Java 环境分JDK 和JRE &#xff0c;JDK提…

设计模式最佳实践 - 模板模式 + 责任链模式

废话不多说&#xff0c;直接切入正题&#xff0c;本篇要讲的是 模板模式 责任链模式 实践。该最佳实践本身就是一种对 责任链模式的增强&#xff0c;模板模式通过 父类 强耦合&#xff0c;预定义好 责任链 next 方法 的前后一些切面行为&#xff0c;优雅简洁。先上示例&#x…

Python快速入门专业版(十一):布尔值与None:Python中的“真假”与“空值”(附逻辑判断案例)

目录引言&#xff1a;为什么“真假”与“空值”是编程的核心逻辑1.布尔值&#xff08;bool&#xff09;&#xff1a;Python中的“真”与“假”1.1 布尔值的基础特性1.2 布尔运算&#xff1a;and、or、not的逻辑规则代码示例&#xff1a;基础布尔运算进阶特性&#xff1a;短路求…

C++学习知识小结

1. 什么是类&#xff1f;什么是对象&#xff1f;两者之间什么关系&#xff1f; 类是一类事物的共同特征的抽象描述&#xff0c;它定义这类所有的属性和方法 可以理解为模版类本身不占用空间&#xff0c;它只是一种定义&#xff0c;描述了对象一个是什么样子、能做什么 对象是根…

9. Mono项目与Unity的关系

1.Mono项目简介 2.Mono项目与Unity是如何结合的 3.从Mono到IL2CPP演变过程1.Mono项目简介 1).定义Mono是一个自由、开源的项目, 由Xamarin现属于微软主导开发; 它的目标是创建一个一套兼容于微软.NET Framework 的跨平台工具2).核心功能a.C#编译器能将你写的C#代码编译成IL(中间…

谷歌Genie 3:让你的照片变成可以玩的游戏世界

你是否曾凝视着一张完美的旅行照片&#xff0c;想象着如果能走进那个画面&#xff0c;自由探索会是怎样一种体验&#xff1f;或者&#xff0c;你是否曾被一幅画的奇幻氛围所吸引&#xff0c;渴望能在那片色彩斑斓的世界里奔跑跳跃&#xff1f;过去&#xff0c;这只是白日梦。而…

Cursor 提示词探索——如何打造真正懂自己的Agent

最近看到鱼皮的Cursor提示词分享&#xff08;微信公众平台)&#xff0c;刚好之前也在做Agent开发&#xff0c;跟提示词打交道的多&#xff0c;也经常发现 ai 蠢蠢的&#xff0c;一点不会根据提示词设计的来&#xff0c;按鱼皮的分享研究了一下&#xff0c;写了这篇博客。 Curs…

C++ 内存模型:用生活中的例子理解并发编程

C 内存模型&#xff1a;用生活中的例子理解并发编程 文章目录C 内存模型&#xff1a;用生活中的例子理解并发编程引言&#xff1a;为什么需要内存模型&#xff1f;核心概念&#xff1a;改动序列原子类型&#xff1a;不可分割的操作内存次序&#xff1a;不同的同步级别1. 宽松次…

AI急速搭建网站:Gemini、Bolt或Jules、GitHub、Cloudflare Pages实战全流程!

文章目录AI急速搭建网站&#xff1a;Gemini、Bolt或Jules、GitHub、Cloudflare Pages实战全流程&#xff01;&#x1f680; 极速建站新范式&#xff1a;Gemini、Bolt.new、GitHub & Cloudflare Pages 全流程实战&#xff01;第一步&#xff1a;创意可视化与代码生成 — Goo…

Qwen2.5-VL实现本地GPTQ量化

本文不生产技术,只做技术的搬运工!! 前言 公开的Qwen2.5-VL模型虽然功能非常强大,但有时面对专业垂直领域的问题往往会出现一些莫名其妙的回复,这时候大家一版选择对模型进行微调,而微调后的模型如果直接部署则显存开销过大,这时就需要执行量化,下面将介绍执行本地GPT…

【Redis】常用数据结构之Hash篇:从常用命令到使用场景详解

目录 1.前言 插播一条消息~ 2.正文 2.1Hash与String对比 2.2常用命令 2.2.1HSET 2.2.2HGET 2.2.3HEXISTS 2.2.4HDEL 2.2.5HKEYS 2.2.6HVALS 2.2.7HGETALL 2.2.8HMGET 2.2.9HLEN 2.2.10HSETNX 2.2.11HINCRBY 2.2.12HINCRBYFLOAT 2.3内部编码 2.3.1. ziplist&…

OSPF基础部分知识点

OSPF基础 前言 路由器 根据 路由表 转发数据包&#xff0c;路由表项 可通过手动配置 和动态路由协议 生成。&#xff08;两种生成方式&#xff09;静态路由比动态路由使用更少的带宽&#xff0c;并且不占用CPU资源来计算和分析路由更新。当网络结构比较简单时&#xff0c;只需配…

Flutter 真 3D 游戏引擎来了,flame_3d 了解一下

在刚刚结束的 FlutterNFriends 大会上&#xff0c;Flame 展示了它们关于 3D 游戏的支持&#xff1a;flame_3d &#xff0c;Flame 是一个以组件系统&#xff08;Flame Component System, FCS&#xff09;、游戏循环、碰撞检测和输入处理为核心的 Flutter 游戏框架&#xff0c;而…

无需公网IP,电脑随时与异地飞牛同步互联保持数据一致性

最近小白有这样一个烦恼&#xff1a;随身带着的电脑每天都在更新内容&#xff0c;于是就会有很多很多的存稿。电脑的空间开始变得不够用了。各式各样的图片、视频、文稿等内容&#xff0c;如果要整理到飞牛NAS上&#xff0c;好像很麻烦&#xff0c;而且每次都是需要回到家里才能…

数据库中间件ShardingSphere v5.2.1

数据库中间件ShardingSphere v5.2.1 文章目录数据库中间件ShardingSphere v5.2.1一 概述1 数据库的瓶颈2 优化的手段3 主从复制4 读写分离5 分库分表5.1 背景5.2 垂直分片5.3 水平分片6 ShardingSphere简介二 ShardingSphere-JDBC讲解1 读写分离实现1.1 基于Docker搭建MySQL主从…

[Upscayl图像增强] Electron主进程命令 | 进程间通信IPC

第三章&#xff1a;Electron主进程命令 欢迎回来&#x1f43b;‍❄️ 在第一章&#xff1a;渲染器用户界面&#xff08;前端&#xff09;中&#xff0c;我们探索了您与之交互的按钮和菜单。然后在第二章&#xff1a;AI模型中&#xff0c;我们了解了让您的图像看起来更棒的&qu…

电竞护航小程序成品搭建三角洲行动护航小程序开发俱乐部点单小程序成品游戏派单小程序定制

功能列表&#xff1a;商家入驻 成为管事 平台公告 客服密钥 客服管理 发单模板 快捷发单 自定义发单 打手入驻 订单裁决 即时通讯 &#xff08;接单者员与发单者&#xff09; 打手排行 邀请排行 余额提现技术栈&#xff1a;前端uniapp 后端java