AI写程序:用 AI 实现一个递归批量转化 GBK/GB2312 转 UTF-8 工具:轻松解决文本编码转换难题
用 AI 实现一个递归批量转化 GBK/GB2312 转 UTF-8 工具
在处理历史文件或与不同系统交互时,我们经常会遇到 GBK 或 GB2312 编码的文本文件。虽然现在 UTF-8 是主流,但手动转换这些旧编码文件既繁琐又容易出错。为了解决这个问题,我开发了一个简单的图形界面工具,可以批量将指定文件夹下的 GBK/GB2312 文件转换为 UTF-8 编码。
工具概览
这个工具使用 Python 和 Tkinter 构建,提供了一个直观的用户界面。它具备以下主要功能:
- 图形界面: 简洁易用,无需命令行操作。
- 文件夹选择: 方便地选择包含需要转换文件的文件夹。
- 智能编码检测: 利用
chardet
库自动识别文件编码,并针对 GBK/GB2312 做了优化处理。 - 批量转换: 递归遍历文件夹,自动处理所有识别出的 GBK/GB2312 文本文件。
- 跳过机制: 自动跳过已经是 UTF-8 或无法识别编码的文件。
- 实时日志: 在界面上显示详细的转换过程和结果。
- 多线程: 转换过程在后台线程进行,避免界面卡顿。
界面截图
如何使用
您可以选择以下两种方式之一来使用该工具:
1. 直接运行 (需要 Python 环境)
- 确保您的电脑已安装 Python 3。
- 下载或克隆项目代码。
- 在项目目录下打开终端或命令提示符,安装依赖:
pip install -r requirements.txt
- 运行主程序:
python main.py
- 在弹出的窗口中,点击“浏览”选择目标文件夹,然后点击“开始转换”。
2. 使用预编译的可执行文件
- 访问项目的 GitHub Releases 页面。
- 下载适用于您操作系统的最新版本(例如 Windows 下载
.exe
文件)。 - 直接双击运行下载的文件即可。
完整源代码
以下是工具的主要 Python 源代码 (main.py
):
import tkinter as tk
from tkinter import filedialog, messagebox, scrolledtext
import os
import chardet
import threading
import webbrowser # <-- 添加导入# 支持检测和转换的编码列表
SUPPORTED_ENCODINGS = ['gb2312', 'gbk']
# 目标编码
TARGET_ENCODING = 'utf-8'
# 常见的文本和代码文件扩展名 (小写)
TEXT_FILE_EXTENSIONS = {'.txt', '.log', '.csv', '.json', '.xml', '.html', '.htm', '.css', '.js', '.py', '.java', '.c', '.cpp', '.h', '.hpp', '.cs', '.php', '.rb', '.go', '.rs', '.swift', '.kt', '.kts', '.sql', '.md', '.rst', '.yaml', '.yml', '.ini', '.cfg', '.toml', '.sh', '.bat', '.ps1'
}class EncodingConverterApp:def __init__(self, master):self.master = mastermaster.title("GBK/GB2312 转 UTF-8 工具")master.geometry("600x480") # <-- 调整窗口大小以容纳链接# 文件夹选择self.folder_path_var = tk.StringVar()tk.Label(master, text="选择文件夹:").grid(row=0, column=0, padx=5, pady=5, sticky='w')self.folder_entry = tk.Entry(master, textvariable=self.folder_path_var, width=50)self.folder_entry.grid(row=0, column=1, padx=5, pady=5, sticky='ew')self.browse_button = tk.Button(master, text="浏览", command=self.browse_folder)self.browse_button.grid(row=0, column=2, padx=5, pady=5)# 开始转换按钮self.convert_button = tk.Button(master, text="开始转换", command=self.start_conversion_thread)self.convert_button.grid(row=1, column=0, columnspan=3, pady=10)# 日志输出区域tk.Label(master, text="转换日志:").grid(row=2, column=0, padx=5, pady=5, sticky='w')self.log_text = scrolledtext.ScrolledText(master, wrap=tk.WORD, height=15)self.log_text.grid(row=3, column=0, columnspan=3, padx=5, pady=5, sticky='nsew')self.log_text.config(state=tk.DISABLED) # 初始设为不可编辑# GitHub 链接self.github_url = "https://github.com/dependon/gbk2utf8"self.github_label = tk.Label(master, text="项目地址: " + self.github_url, fg="blue", cursor="hand2")self.github_label.grid(row=4, column=0, columnspan=3, padx=5, pady=(5, 10), sticky='w') # 放置在日志下方self.github_label.bind("<Button-1>", self.open_link)# 配置行列权重,使控件随窗口缩放master.grid_rowconfigure(3, weight=1) # 日志区域占满剩余空间master.grid_rowconfigure(4, weight=0) # 链接行不扩展master.grid_columnconfigure(1, weight=1)def log(self, message):"""向日志区域添加消息"""self.log_text.config(state=tk.NORMAL)self.log_text.insert(tk.END, message + "\n")self.log_text.see(tk.END) # 滚动到底部self.log_text.config(state=tk.DISABLED)self.master.update_idletasks() # 强制更新界面def browse_folder(self):"""打开文件夹选择对话框"""folder_selected = filedialog.askdirectory()if folder_selected:self.folder_path_var.set(folder_selected)self.log(f"已选择文件夹: {folder_selected}")def is_text_file(self, filename):"""根据扩展名判断是否可能是文本或代码文件"""_, ext = os.path.splitext(filename)return ext.lower() in TEXT_FILE_EXTENSIONSdef detect_encoding(self, file_path):"""检测文件编码"""try:with open(file_path, 'rb') as f:raw_data = f.read(4096) # 读取一部分数据进行检测result = chardet.detect(raw_data)encoding = result['encoding']confidence = result['confidence']# chardet有时会将GBK/GB2312检测为其他编码,增加一些兼容性判断if encoding and encoding.lower() in ['gb2312', 'gbk', 'gb18030']:return encoding.lower(), confidence# 对于置信度不高的常见误判,也尝试按GBK处理if encoding and confidence < 0.9 and encoding.lower() in ['ascii', 'windows-1252']:# 尝试用GBK解码,如果成功则认为是GBKtry:raw_data.decode('gbk')return 'gbk', 0.5 # 置信度设低一些except UnicodeDecodeError:passreturn encoding, confidenceexcept Exception as e:self.log(f"检测编码错误 ({os.path.basename(file_path)}): {e}")return None, 0def convert_file_encoding(self, file_path, original_encoding):"""将文件从原始编码转换为UTF-8"""try:with open(file_path, 'r', encoding=original_encoding, errors='replace') as f_read:content = f_read.read()# 检查是否真的需要转换 (避免不必要的写操作和潜在BOM问题)needs_conversion = Falsetry:# 尝试用UTF-8无BOM读取,如果失败或内容不同,则需要转换with open(file_path, 'r', encoding='utf-8') as f_utf8_check:utf8_content = f_utf8_check.read()if content != utf8_content:needs_conversion = Trueexcept UnicodeDecodeError:needs_conversion = Trueexcept Exception:# 其他读取错误,也认为需要转换以修复needs_conversion = Trueif needs_conversion:with open(file_path, 'w', encoding=TARGET_ENCODING) as f_write:f_write.write(content)self.log(f"成功: {os.path.basename(file_path)} ({original_encoding} -> {TARGET_ENCODING})")return Trueelse:self.log(f"跳过: {os.path.basename(file_path)} (已经是 {TARGET_ENCODING} 或无需转换)")return Falseexcept Exception as e:self.log(f"转换失败: {os.path.basename(file_path)} - {e}")return Falsedef process_folder(self, folder_path):"""处理指定文件夹下的所有文件"""converted_count = 0skipped_count = 0error_count = 0processed_files = 0self.log(f"\n开始扫描文件夹: {folder_path}")for root, _, files in os.walk(folder_path):for filename in files:if not self.is_text_file(filename):# self.log(f"忽略非文本文件: {filename}")continuefile_path = os.path.join(root, filename)processed_files += 1self.log(f"正在处理: {file_path}")encoding, confidence = self.detect_encoding(file_path)if encoding and encoding.lower() in SUPPORTED_ENCODINGS:self.log(f"检测到 {encoding.upper()} (置信度: {confidence:.2f}): {filename}")if self.convert_file_encoding(file_path, encoding):converted_count += 1else:error_count += 1elif encoding:# self.log(f"跳过 (非GBK/GB2312编码: {encoding}): {filename}")skipped_count += 1else:# self.log(f"跳过 (无法检测编码): {filename}")skipped_count += 1error_count += 1 # 无法检测也算一种错误self.log(f"\n处理完成。共扫描 {processed_files} 个文本/代码文件。")self.log(f"成功转换: {converted_count}")self.log(f"跳过文件: {skipped_count}")self.log(f"转换/检测失败: {error_count}")messagebox.showinfo("完成", f"转换完成!\n成功: {converted_count}\n跳过: {skipped_count}\n失败: {error_count}")# 转换完成后重新启用按钮self.convert_button.config(state=tk.NORMAL)self.browse_button.config(state=tk.NORMAL)def start_conversion_thread(self):"""在单独的线程中开始转换过程,避免GUI卡死"""folder_path = self.folder_path_var.get()if not folder_path or not os.path.isdir(folder_path):messagebox.showerror("错误", "请先选择一个有效的文件夹!")return# 禁用按钮,防止重复点击self.convert_button.config(state=tk.DISABLED)self.browse_button.config(state=tk.DISABLED)self.log_text.config(state=tk.NORMAL)self.log_text.delete('1.0', tk.END) # 清空日志self.log_text.config(state=tk.DISABLED)# 创建并启动线程conversion_thread = threading.Thread(target=self.process_folder, args=(folder_path,), daemon=True)conversion_thread.start()def open_link(self, event):"""打开GitHub链接"""webbrowser.open_new(self.github_url)if __name__ == "__main__":root = tk.Tk()app = EncodingConverterApp(root)root.mainloop()
项目地址
如果您对这个工具感兴趣,或者想查看完整的项目代码和构建说明,请访问项目的 GitHub 仓库:
https://github.com/dependon/gbk2utf8
希望这个小工具能对您有所帮助!
相关文章:
AI写程序:用 AI 实现一个递归批量转化 GBK/GB2312 转 UTF-8 工具:轻松解决文本编码转换难题
用 AI 实现一个递归批量转化 GBK/GB2312 转 UTF-8 工具 在处理历史文件或与不同系统交互时,我们经常会遇到 GBK 或 GB2312 编码的文本文件。虽然现在 UTF-8 是主流,但手动转换这些旧编码文件既繁琐又容易出错。为了解决这个问题,我开发了一个…...
首席人工智能官(Chief Artificial Intelligence Officer,CAIO)的详细解析
以下是**首席人工智能官(Chief Artificial Intelligence Officer,CAIO)**的详细解析: 1. 职责与核心职能 制定AI战略 制定公司AI技术的长期战略,明确AI在业务中的应用场景和优先级,推动AI与核心业务的深度…...
uview1.0 tabs组件放到u-popup中在微信小程序中滑块样式错乱
解决思路 重新计算布局信息:在弹窗显示后重新调用 init 方法来计算组件的布局信息。使用 nextTick:保证在视图更新之后再进行布局信息的计算。 <u-tabs ref"tabsRef" ></u-tabs> makeClick(){this.makeShowtruethis.$nextTick…...
私人笔记:动手学大模型应用开发llm-universe项目环境创建
项目代码:datawhalechina/llm-universe: 本项目是一个面向小白开发者的大模型应用开发教程,在线阅读地址:https://datawhalechina.github.io/llm-universe/ 项目书:动手学大模型应用开发 一、初始化项目 uv init llm-universe-te…...
基于Django框架的图书索引智能排序系统设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,图书管理系统当然不能排除在外。图书索引智能排序系统是在实际应用和软件工程的开发原理之上,运用Python语言以及Django框架进…...
网络类型学习
网络类型的分类依据-----基于二层(数据链路层)使用的协议不同而导致数据包的封装方式不同,工作方式也不同。 OSPF协议根据链路层协议类型将网络分为四种类型:广播型网络(BMA)、非广播多路访问(…...
ubuntu24.04离线安装deb格式的mysql-community-8.4.4
1,下载解压 参考: https://blog.csdn.net/2202_76101487/article/details/145967039 下载: wget https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-server_8.4.4-1ubuntu24.04_amd64.deb-bundle.tar 建议个目录mysql8然后把安装包移过去&…...
电控---printf重定向输出
在嵌入式系统开发中,printf 重定向输出是将标准输出(stdout)从默认设备(如主机终端)重新映射到嵌入式设备的特定硬件接口(如串口、LCD、USB等)的过程。 一、核心原理:标准IO库的底层…...
uniapp使用createSelectorQuery,boundingClientRect获取宽度和高度不准确的可用的解决方案
场景展示: uniapp使用createSelectorQuery,boundingClientRect获取宽度和高度不准确的可用的解决方案,正常来说,使用下面的代码是可以正确获得宽高的,但是里面含有图片,在图片没有加载完的情况下,我们可以…...
DSO:牛津大学推出的物理一致性3D模型优化框架
在数字内容创作和制造领域,将2D图像转换为高质量、物理上稳定的3D模型一直是一个挑战。传统的3D建模方法往往需要大量的手动调整以确保生成的物体不仅美观而且符合物理定律,能够在现实世界中稳定存在。牛津大学近期推出了一款名为DSO(Direct Sparse Odometry)的项目,它不仅…...
Delphi Ini文件对UTF8支持不爽的极简替代方案
如题,没太多废话,直接复制走即可。 unit uConfig;interfaceuses classes, Sysutils;typeTConfig class privateFFileName: String;FConfig:TStringList; protectedpublicconstructor Create(ConfigFile:String);destructor Destroy;property FileName…...
Windows平台使用Docker部署Neo4j
✅ Docker 安装 Neo4j 前提条件:安装docker 打开docker desktop docker run \--name neo4j \-p7474:7474 -p7687:7687 \-d \-e NEO4J_AUTHneo4j/password123 \neo4j:5默认用户名是 neo4j,密码是你设置的,比如上面是 password123 ✅用 Pyt…...
FreeRTOS二值信号量详解与实战教程
FreeRTOS二值信号量详解与实战教程 📚 作者推荐:想系统学习FreeRTOS嵌入式开发?请访问我的FreeRTOS开源学习库,内含从入门到精通的完整教程和实例代码! 1. 二值信号量核心概念解析 二值信号量(Binary Semaphore)是Fre…...
数据结构与算法[零基础]---6.算法概况
六、算法概述 (一)算法的概述 任何解决问题的过程都是由一定的步骤组成的,把解决问题的方法和有限的步骤称作算法 (二)算法的基本特征 1.有穷性 算法必须在执行有限个操作之后终止,且每一步都可在有限时间内完成。 2.确定性 算…...
STL简介(了解)
1.什么是STL STL(standard template libaray)是标准模板库,它是C标准库的一部分。C标准库中还有一些其它东西,比如之前用的IO流。它主要是数据结构和算法的库。 2.STL的版本 C3.0出来后就有了模板,此时大家已经深受没有数据结构算法库的痛苦…...
使用 Oh My Posh 自定义 PowerShell 提示符
使用 Oh My Posh 自定义 PowerShell 提示符 由于ai生图,ai视频这方面mac太差了,买N卡,转windows了,这里也记录一下 PowerShell 配置Oh My Posh 先上效果图 一、下载 PowerShell7 默认的 PowerShell5 太差了,下载地…...
4月17号
//1.编码 String str "ai你哟"; byte[] bytes1 str.getBytes(); System.out.println(Arrays.toString(bytes1)); byte[] bytes2 str.getBytes(charsetName: "GBK"); System.out.println(Arrays.toString(bytes2));//2.解码 String str2 new String(byt…...
react-native搭建开发环境过程记录
主要参考:官网的教程 https://reactnative.cn/docs/environment-setup 环境介绍:macos ios npm - 已装node18 - 已装,通过nvm进行版本控制Homebrew- 已装yarn - 已装ruby - macos系统自带的2.2版本。watchman - 正常安装Xcode - 正常安装和…...
自然语言处理(NLP)技术。
自然语言处理(NLP)技术可以应用于多个领域,以下是一些示例: 情感分析:NLP可以用来分析文本中包含的情感,帮助企业了解用户对他们产品或服务的感受。例如,社交媒体平台可以利用情感分析技术来监测…...
Ubuntu 安装WPS Office
文章目录 Ubuntu 安装WPS Office下载安装文件安装WPS问题1.下载缺失字体文件2.安装缺失字体 Ubuntu 安装WPS Office 下载安装文件 需要到 WPS官网 下载最新软件,比如wps-office_12.1.0.17900_amd64.deb 安装WPS 执行命令进行安装 sudo dpkg -i wps-office_12.1…...
【WPF】 自定义控件的自定义属性
文章目录 前言一、自定义控件部分二、在页面中使用总结 前言 在一个页面,重复用到同一个自定义控件时,该如何对控件分别进行数据绑定呢?这时候可以赋予控件一个自定义的属性,来完成此操作。 一、自定义控件部分 为自定以控件设置…...
Unity URP Moblie AR示例工程,真机打包出来,没阴影
效果: unity ar示例演示 现象: 真机打包测试私活没有阴影 Unity版本:2022.3.4f1c1 分析原因: Prefab :ARFeatheredPlane中也有材质,一个用于环境遮挡,一个用于阴影接受。 按理说有啊。 urp …...
如何删除word中的长横线(由三个减号---自动生成/由三个等号===自动生成/由三个###自动生成)_word三个减号回车的横线怎么删除-CSDN博客
方法1、选中前后行ctrlX剪切掉 方法2:如果文件中没有表格就非常简单,直接CtrlA全选整个文档,然后在表格边框里面选择“无框线”OK,如果有表格的话,就从横线的下行开始向上随意选取一部分,同样在表格边框中选…...
函数返回const引用,使用const修饰变量接收
函数返回const引用,使用const修饰变量接收 1、背景 想获取红绿灯时长数组并添加新的值。有个函数是返回红绿灯时长数组的。函数返回类型为const引用,我使用无修饰的变量接收。但是感觉有些问题,并且之前看到const变量变成非const还需要使用…...
在激烈竞争下B端HMI设计怎样打造独特用户体验?
在当今数字化高度发展的时代,B 端市场竞争愈发激烈。对于 B 端 HMI(人机界面)设计而言,打造独特的用户体验已成为在竞争中脱颖而出的关键因素。B 端用户在复杂的工作场景中,对 HMI 设计有着独特的需求和期望࿰…...
数理逻辑(Mathematical Logic)综论与跨学科应用
李升伟 整理 数理逻辑(Mathematical Logic)是现代逻辑学与数学交叉的核心学科,以严格的数学方法研究逻辑推理的形式与规律。其发展深刻影响了数学基础、计算机科学、语言哲学等领域。以下从多个维度综论数理逻辑: 1. 核心分支 命…...
4.17---实现商铺和缓存与数据库双写一致以及宕机处理
实现商铺和缓存与数据库双写一致(以及强双写一致策略) redis点评项目采用的是延时双删策略 双删: 我们更新完数据库之后删除缓存,这样即使有线程并发进来查询,会发现缓存中没有数据,从而会去mysql中查找…...
qt与html通信
**Cef视图(CefView)**是指在使用Chromium Embedded Framework(CEF)时,嵌入到应用程序中的浏览器视图。CEF是一个开源项目,它基于Google的Chromium浏览器,允许开发者将Web浏览器功能嵌入到自己的…...
【从零实现高并发内存池】thread cache、central cache 和 page cache 回收策略详解
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
算法5-16 对二进制字符串解码
输入样例: 5 a 4 b 3 c 2 w 1 z 1 100001110101101101100111输出样例: baaacabwbzc ac代码: #include<iostream> #include<queue> #include<map> using namespace std; const int N10010; int idx; int a[N][2]; char b…...
[MySQL数据库] InnoDB存储引擎(三): 内存结构详解
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
TDengine 存储引擎剖析:数据文件与索引设计(一)
TDengine 存储引擎简介 在物联网、工业互联网等快速发展的今天,时间序列数据呈爆发式增长。这些数据具有产生频率高、依赖采集时间、测点多信息量大等特点,对数据存储和处理提出了极高要求。TDengine 作为一款高性能、分布式、支持 SQL 的时序数据库&am…...
CentOS更换yum源
CentOS更换yum源 视频教程: https://www.bilibili.com/video/BV1yWaSepE6z/?spm_id_from333.1007.top_right_bar_window_history.content.click 步骤: 第一步: cd /etc/yum.repos.d第二步:cp CentOS-Base.repo CentOS-Base.repo…...
【Kubernetes基础--持久化存储原理】--查阅笔记5
目录 持久化存储机制PV 详解PV 关键配置参数PV 生命周期的各个阶段 PVC 详解PVC 关键配置参数PV 和 PVC 的生命周期 StorageClass 详解StorageClass 关键配置参数设置默认的 StorageClass 持久化存储机制 k8s 对于有状态的容器应用或对数据需要持久化的应用,不仅需…...
数据库子查询实验全解析
目录 一、验证性实验:夯实基础(一)查询同班学生信息(二)查询成绩相关信息(三)查询课程选课人数(四)相关子查询(五)EXISTS嵌套子查询(六…...
HTML:表格数据展示区
<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>人员信息表</title><link rel"styl…...
webgl入门实例-08索引缓冲区的基本概念
WebGL 索引缓冲区 (Index Buffer) 索引缓冲区(也称为元素数组缓冲区)是WebGL中一种优化渲染性能的重要机制,它允许您重用顶点数据来绘制复杂的几何图形。 基本概念 索引缓冲区的工作原理: 您创建一个顶点缓冲区(包含所有顶点数据)然后创建一个索引缓…...
大数据应用开发——大数据平台集群部署
目录 前言 目录 基础环境 安装虚拟机 基础环境 VMware Workstation 虚拟机版本 : centos7 主机名 ip 用户名 密码 master192.168.245.100root123456slave1192.168.245.101root123456slave2192.168.245.102root123456 安装虚拟机 安装 名称、路径自己改 我有16核&…...
GPT对话UI--通义千问API
GPT对话UI 项目介绍 一个基于 GPT 的智能对话界面,提供简洁优雅的用户体验。本项目使用纯前端技术栈实现,无需后端服务器即可运行。 功能特点 💬 实时对话:支持与 AI 进行实时对话交互🌓 主题切换:支持…...
智能体数据分析
数据概览: 展示智能体的累计对话次数、累计对话用户数、对话满意度、累计曝光次数。数据分析: 统计对话分析、流量分析、用户分析、行为分析数据指标,帮助开发者完成精准的全面分析。 ps:数据T1更新,当日12点更新前一天…...
泛型算法——只读算法(一)
在 C 标准库中,泛型算法的“只读算法”指那些 不会改变它们所操作的容器中的元素,仅用于访问或获取信息的算法,例如查找、计数、遍历等操作。 accumulate std::accumulate()是 C 标准库**numeric**头文件中提供的算法,用于对序列…...
树莓派超全系列教程文档--(29)config.txt介绍
config.txt介绍 什么是 config.txt ?文件格式高级功能include条件过滤 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 什么是 config.txt ? Raspberry Pi 设备使用名为 config.txt 的配置文件,而不是传统 PC …...
第十六届蓝桥杯大赛软件赛省赛 C++ 大学 B 组 部分题解
赛时参加的是Python组,这是赛后写的题解,还有两题暂时还不会,待更新 题目链接题目列表 - 洛谷 | 计算机科学教育新生态 A 移动距离 答案:1576 C 可分解的正整数 Python3 import itertools from functools import cmp_to_ke…...
C++栈与堆内存详解:Visual Studio实战指南
C++栈与堆内存详解:Visual Studio实战指南 IDE环境:Visual Studio 2022 一、内存分区与核心概念 在C++程序中,内存分为**栈(Stack)和堆(Heap)**两大核心区域,两者的管理方式、生命周期和适用场景差异显著。 1. 栈内存(Stack Memory) • 特性: • 自动管理:由编…...
在Ubuntu服务器上部署xinference
一、拉取镜像 docker pull xprobe/xinference:latest二、启动容器(GPU) docker run -d --name xinference -e XINFERENCE_MODEL_SRCmodelscope -p 9997:9997 --gpus all xprobe/xinference:latest xinference-local -H 0.0.0.0 # 启动一个新的Docker容…...
非洲电商争夺战:中国闪电战遭遇本土游击队的降维打击
2024年5月,南非电商市场爆发史诗级对决——Temu闪电突袭下载量破百万,却在30天内遭遇Takealot的本土化反击致留存率腰斩。这场价值500亿美元市场的攻防战,揭开了非洲电商最残酷的生存法则:低价利刃砍不动本土化铁壁。 一、跨境模式…...
亚瑟阿伦36问
问 36 个问题,你就能爱上一个人,对方也能爱上你。 第一组 聚焦个人背景与价值观 例如“你最感激生命中的什么?”、“如果可以改变成长经历,你会改变什么?” 1、如果可以跟世上任何人共进晚餐,你会选择谁&…...
Ubuntu 20.04.6编译安装COMFAST CF-AX90无线网卡驱动
目录 0 前言 1 CF-AX90无线网卡驱动 1.1 驱动下载 1.2 驱动准备 2 编译安装驱动 2.1 拷贝驱动依赖到系统 2.2 驱动安装编译 3 重启 0 前言 COMFAST CF-AX90或者说AIC8800D80的Linux版本驱动不支持高版本的linux内核,实测目前仅支持最高5.15的内核。Ubuntu2…...
函数的极限与连续(强化和真题)
强化错题如下:...
4.15【Q】netsafe
我正在学习网络空间安全,” Cookie:使用防hash技术防御SYN泛洪攻击,减少服务器内存消耗“什么意思?什么是SYN泛洪攻击?什么又是防hash技术防御? ?详细解释,越细节越好 连接成功率 …...