介绍一款基于MinerU的PDF翻译工具
一。简介
Fast pdf translate是一款pdf翻译软件,基于MinerU实现pdf转markdown的功能,接着对markdown进行分割,
送给大模型翻译,最后组装翻译结果并由pypandoc生成结果pdf。
git地址:
https://github.com/kv1830/fast_pdf_trans
gitee地址:
https://gitee.com/daibaitu170/fast_pdf_trans
二。主要功能
pdf解析功能
- 支持由pdf书签生成markdown标题(分级),魔改MinerU实现
- 支持移除markdown代码块的非标题#号,魔改MinerU实现
- 支持由大模型对MinerU生成的标题进行分级和过滤(无书签的场景)
- 支持由大模型移除误识别的公式,魔改MinerU实现
翻译功能
- 支持所有兼容openai api的大模型
- 支持流控限制、多线程、多个大模型同时翻译
- 支持缓存,任务中断后再次执行时,问过的问题直接从缓存读取
- 支持对大模型返回的代码块进行自动换行处理
生成结果pdf
- 基于pypandoc加prince引擎实现
三。系统要求
完整的系统要求可以参照MinerU的系统要求,简言之:
- windows/linux均可
- 有英伟达显卡则可以使用显卡加速,显存8G以上最好(6G也可以)
- 内存最好在16G以上
四。安装
建议使用conda安装,尤其是如果用gpu进行pdf解析的话。
1.创建conda环境
conda create -n fast_pdf_trans python=3.10
conda activate fast_pdf_trans
2.安装MinerU
pip install "magic-pdf[full]==1.2.0" --extra-index-url https://wheels.myhloli.com
如果要使用本软件魔改MinerU的相关功能(pdf书签等),就要严格使用上面指定的1.2.0版本,否则可以使用最新版本。
如果要使用英伟达gpu加速推理,请移步MinerU cuda环境安装文档(主要是重装cuda版的pytorch和paddlepaddle-gpu),也可以参照文本后面的七。MinerU cuda环境安装:
Windows 10/11 + GPU
Ubuntu 22.04 LTS + GPU
3.安装依赖
cd到fast_pdf_trans项目目录下
pip install -r requirements.txt
4.下载模型
注意:如果你已经参照MinerU官方的cuda环境文档安装过了,你可能已经把下载模型的步骤执行过了,
不用再重新下载模型了。
执行如下脚本
python tools\download_models.py
模型会下载到C:\Users\你的用户名.cache\modelscope\hub\models目录下,并且脚本会自动当该目录保存到
C:\Users\你的用户名\magic-pdf.json文件中
注意,在linux中就用你的当前用户来执行这个脚本,不要用root用户去执行,否则模型会下载到/root/.cache/modelscope中, 而你普通用户是访问不了/root这个目录的。
5.安装Prince
如果你只需要将pdf解析为markdown并翻译成中文markdown,那就不需要安装Prince了。但是如果你还需要将它转换成中文pdf,则需要Prince。
请移步Prince官网下载对应系统的版本。下面分别以windows和ubuntu为例:
windows
下载prince-16-win64.zip,解压到任意目录,比如D:\program,然后把"D:\program\prince-16-win64\bin"添加到系统环境变量PATH中。
以windows11为例(win10应该也差不多,顶多是找环境变量的过程可能稍有区别),在文件浏览器中右击"此电脑"–“属性”–“高级系统设置”–“环境变量”–下面的"系统变量",在里面找到Path,双击它打开,
在里面新建一项填"D:\program\prince-16-win64\bin"即可(填的时候并不需要双引号)。
修改完环境变量后,需要重新打开cmd命令行才有效(如果你用的是pycharm也是同理,需要重新打开pycharm),执行where prince,看到如下结果表示Path加成功了
(fast_pdf_trans) D:\workPython\llm\fast_pdf_trans>where prince
D:\program\prince-16-win64\bin\prince.exe
ubuntu20.04
下载prince_16-1_ubuntu20.04_amd64.deb,参考Prince Installation Guide
点到ubuntu的安装部分,其实就一条命令,如果是root用户,直接执行:
gdebi prince_16-1_ubuntu20.04_amd64.deb
否则执行:
sudo gdebi prince_16-1_ubuntu20.04_amd64.deb
如果你没有安装gdebi,那就先用apt安装一下就好啦
apt update
apt install gdebi
非root用户还是注意加上sudo
sudo apt update
sudo apt install gdebi
安装完prince之后执行which prince,看到如下结果表示成功安装了:
(fast_pdf_trans) root@DESKTOP-U5878VE:/home/kv183# which prince
/usr/bin/prince
6.配置大模型
本项目自身要用的配置都在conf.yaml中,里面各项都做了详细说明,不要被它们吓到! 接下来演示的功能,唯一要配置的就是一个大模型的api-key。
即如下这段,搜索ds_llm_agent即可找到,把里面的api_key的值sk-xxxxxxxxxx换成你自己的api_key:
ds_llm_agent: # deepseek官方api,这里的'ds_llm_agent'是在别的配置中引用的名字,随便起什么都可以。更多的llm_agent示例见conf_llm_example.yamlbase_url: https://api.deepseek.com/model_name: deepseek-chatapi_key: sk-xxxxxxxxxx # api_key需要到对应平台创建timeout: 120max_retries: 2 # 开启流控的话则把这一项置0,否则会影响流控的计算use_cache: true # 开启缓存,会把大模型的响应缓存在文件中,下次同样的问题直接从缓存文件中读取,不会重复调用大模型cache_file_name: deepseek-chat # 缓存文件名。缓存目录就是项目目录的cache文件夹rate_control: # 没有明确说明流控的,可以不配置。也可以通过相关任务的线程数来控制访问频繁。streaming: false # 流式输出,没有强制要求流式输出的,可以指定为false
你如果没有api_key,请移步deepseek官网注册并充值~~
- 你如果不想用deepseek,只要是兼容openai-api的大模型,都可以配置在这里。
- 也可以另外新建一段大模型的配置并且在翻译配置中引用它。
- 或者你有多个deepseek的帐号,你想在翻译中一起用。
具体用法参见README 6配置大模型
至此,所有准备工作就都完成了!
五。运行
现在我有一本"Hands-On Generative AI with Transformers and Diffusion Models.pdf",现在测试一下,让它翻译21页到27页,cd到fast_pdf_trans项目目录下,执行:
python translate.py "D:\学习\机器学习\GAN、扩散模型\Hands-On Generative AI with Transformers and Diffusion Models.pdf" --start-page 21 --end-page 27
注意这里的–start-page,–end-page的值都是从1开始计数的。如果这两个参数都不传,则会翻译整个pdf。各命令行参数的含义可以执行python translate.py -h进行查看。
本次运行的条件是这是一个文字版pdf(非扫描版),有书签,无公式,其它场景后面会再详细例举。
最后看到
2025-03-21 02:14:01,684 llm_translate.translator translate 30 INFO finish all step, result_pdf_path: D:\workPython\llm\fast_pdf_trans\output\Hands-On Generative AI with Transformers and Diffusion Models\Hands-On Generative AI with Transformers and Diffusion Models_correct_trans_format.pdf
表示结果pdf路径就是:D:\workPython\llm\fast_pdf_trans\output\Hands-On Generative AI with Transformers and Diffusion Models\Hands-On Generative AI with Transformers and Diffusion Models_correct_trans_format.pdf
本次没有指定输出文件的目录,所以默认是在项目目录的output文件夹下。
如上图:
- 绿框是通过MinerU解析pdf后生成的markdown文件,但是本次使用了pdf书签生成markdown标题(在conf.yaml中有默认配置,后面详述),
所以这个markdown文件里的标题看起来会有点奇怪,是我做了特殊记号的(用于标记标题级别)。 - 黄框是在MinerU生成的markdown的基础上,进行一些修改操作,比如把上面的标题级别的标记还原成实际的markdown标题级别。
或者在没有使用pdf书签的情况下,通过大模型修正markdown标题级别,也会在本文件中完成。 - 蓝框就是翻译后的中文markdown了。
- 红框是MinerU解析pdf后我保存的一些调试数据,比如layout.pdf, spans.pdf可以直接去看看。
- 没有框起来的那两个文件,_correct_trans_format.md是在翻译完的markdown的基础上又进行了一些修正操作,比如将代码段中超长的代码行自动换行。_correct_trans_format.pdf就是最终的翻译结果啦。
所以如果已经完成了pdf到markdown的解析步骤,在翻译的过程中,手动中断了翻译任务(或者产生未知的异常中断了翻译任务),
可以再次运行相同的命令,pdf解析这一步是不会再重复执行的,因为相关的markdown已经存在了。
而已经翻译过的段落,实际上已经保存在缓存文件中了,所以会直接从缓存文件读取,不会再去调api。
是否开启缓存也是配置在conf.yaml的大模型配置中的,如下只展示缓存配置
ds_llm_agent: # deepseek官方api,这里的'ds_llm_agent'是在别的配置中引用的名字,随便起什么都可以。更多的llm_agent示例见conf_llm_example.yamluse_cache: true # 开启缓存,会把大模型的响应缓存在文件中,下次同样的问题直接从缓存文件中读取,不会重复调用大模型cache_file_name: deepseek-chat # 缓存文件名。缓存目录就是项目目录的cache文件夹
所以缓存文件名就是deepseek-chat.txt,它就在本项目的cache文件夹下:
其实通过这个文件来检查大模型的回答还挺方便。如果不想再用过去的缓存,可以自行删除这些文件。
六。更多翻译场景
比如
- pdf有公式
- pdf无书签
- pdf页数过多导致内存不够
- 翻译结果pdf有问题
- 想使用命令行参数代替conf.yaml
见how_to_translate_different_pdfs_zh-CN.md
七。MinerU cuda环境安装
如二。安装–2.安装MinerU中所说,可以参照MinerU官方的安装指南,也可以参照我这里的。其实MinerU的cuda环境稍微有点麻烦的是,它既要用到pytorch2.3.1又要用到paddlepaddle-gpu2.6.1,但这两者依赖的cuda版本还不一样。
另外,先完成二。安装里的步骤,然后再执行本节的步骤。
windows
安装显卡驱动
首先说明一下,cuda环境必然得是英伟达的显卡,如果你是amd显卡,那就不在本文讨论范围之内。MinerU也支持华为Ascend NPU,请参照MinerU官方文档 。
接下就是安装英伟达的显卡驱动了,其实一般情况下你多半已经安装过显卡驱动了(不然你显卡咋用来打游戏~~),但是我们得确认一下你的驱动版本是否过老(太老了可能不适用于cuda11.8),执行如下命令:
nvidia-smi
看右上角的CUDA Version,只要它大于等于11.8,就OK。注意,上图这里并不是说你安装了cuda12.6,而是你的显卡驱动最高支持cuda12.6。
- 如果你压根就没这个命令(nvidia-smi),那你多半没装显卡驱动,去英伟达官网装一个nvidia驱动 。
- 如果你CUDA Version小于11.8,那你还是得装一个新的驱动。
卸载pip安装的cpu版的pytorch
pip uninstall torch torchvision
输入Y回车。
使用conda安装pytorch
conda install pytorch==2.3.1 torchvision==0.18.1 pytorch-cuda=11.8 -c pytorch -c nvidia
如上命令安装的是cuda11.8版本的pytorch。
可能需要等待片刻,然后解析出所有要安装的包,输入Y回车。
可以检查一下pytorch安装好了没
conda list | findstr torch
上图的pytorch已经是cuda版的pytorch了。至于pytorch-cuda是啥,其实它就是conda里面的各种cuda文件的依赖打包。
可以执行如下命令查看安装好的cuda运行时:
conda list | findstr nvidia
cuda11.8运行时已经装好了,其实这并不是完整的cuda,它缺少nvcc编译器,不过只有要编译pytorch扩展时才会用到nvcc编译器。MinerU并不需要用到nvcc。
安装cudnn
conda install "cudnn==8.9.*[build=cuda11_0]" -c nvidia --no-deps
可能需要等待片刻,然后解析出所有要安装的包,不过这次其实只有一个包,输入Y回车。
之所以只有一个包,是因为我们加了–no-deps,加它的原因是因为cudnn8.9依赖cuda-toolkit11.5,但我们已经有cuda11.8啦。其实安装的这个cudnn并不是给pytorch用的,pytorch自己就带上了cudnn的库文件。这里安装的是给paddlepaddle-gpu用的。
安装paddlepaddle-gpu
用pip安装,因为如果用conda安装的话,它会依赖cuda-toolkit11.7,而我们装的是pytorch-cuda11.8,它们依赖的cuda版本不一样,那就会装两个cuda进来,有可能会冲突。而cuda11.8一般是兼容基于cuda11.7开发的软件的。而用pip装paddlepaddle-gpu2.6.1的话,它并不会装cuda和cudnn相关的东西
pip install paddlepaddle-gpu==2.6.1
一切安装完毕!
修改MinerU配置
接下来把MinerU的配置文件修改一下
C:\Users\你的用户名\magic-pdf.json
把device-mode的值由cpu改为cuda
测试
还是跑之前的用例:
python translate.py "D:\学习\机器学习\GAN、扩散模型\Hands-On Generative AI with Transformers and Diffusion Models.pdf" --start-page 21 --end-page 27
显存大于等于8G,则会进行批量推理(文档布局识别、文字行识别),上图红线处即表示用cuda推理,红框里显示文档布局识别用时1.83秒,文字行检测用时1.3秒,这是7页的总时间。
下面对比一下cpu推理的耗时:
cpu推理耗时明显比gpu慢很多,单页就要3到4秒。
linux
在linux下,在执行如下命令的时候,就已经安装了cuda版的pytorch,并且把cuda12.1和cudnn8.9都装好了。
pip install "magic-pdf[full]==1.2.0" --extra-index-url https://wheels.myhloli.com
接下来只要安装paddlepaddle-gpu就行了
python -m pip install paddlepaddle-gpu==3.0.0rc1 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/
然后把MinerU配置文件修改一下就行了参照上面的windows一节中的修改MinerU配置。
不过其实pytorch装的是cuda12.1,paddlepaddle装的是cuda11.8,这两者分别对应不同的cudnn,都通过pip装进来了,如下图:
em…,不过我运行了一下,是没有问题的,cuda11.8和cuda12.1共存,可能关系不太大,因为cuda11和cuda12的相关库文件名不同,pytorch和paddle在加载cuda库文件时可以通过文件名区分:
相关文章:
介绍一款基于MinerU的PDF翻译工具
一。简介 Fast pdf translate是一款pdf翻译软件,基于MinerU实现pdf转markdown的功能,接着对markdown进行分割, 送给大模型翻译,最后组装翻译结果并由pypandoc生成结果pdf。 git地址: https://github.com/kv1830/fast…...
轻量级TLS反向代理工具TLS-reverse-proxy:打造安全通信桥梁
在数字化浪潮席卷全球的今天,数据隐私与传输安全已成为企业及个人的核心关切。TLS(传输层安全协议)作为互联网通信的"隐形卫士",承担着保护数据在传输过程中不被窃取或篡改的重要使命。然而,对于许多传统服务…...
SQL问题分析与诊断(8)——前提
8.1. 前提 与其他关系库类似,SQL Server中,当我们对存在性能问题的SQL语句进行分析和诊断时,除了获取该SQL语句本身外,还需要获取SQL语句相应的查询计划及其相关的数据环境。这里,所谓数据环境,具体是指SQ…...
关于cmd中出现无法识别某某指令的问题
今天来解决以下这个比较常见的问题,安装各种软件都可能会发生,一般是安装时没勾选注册环境变量,导致cmd无法识别该指令。例如mysql,git等,一般初学者可能不太清楚。 解决这类问题最主要的是了解环境变量的概念&#x…...
如何处理不同输入类型(例如邮箱、电话号码)的验证?
处理不同输入类型(如邮箱、电话号码)的验证可以通过多种方法实现,包括使用 HTML5 内置验证、JavaScript/jQuery 自定义验证和正则表达式。以下是一些常用的验证方法和示例。 1. 使用 HTML5 内置验证 HTML5 提供了一些内置的输入类型,可以自动处理基本的验证。 示例 <…...
Redis集群哨兵相关面试题
目录 1.Redis 主从复制的实现原理是什么? 详解 补充增量同步 replication buffer repl backlog buffer 2.Redis 主从复制的常见拓扑结构有哪些? 3.Redis 复制延迟的常见原因有哪些? 4.Redis 的哨兵机制是什么? 主观下线和客观下线 哨兵leader如何选出来的&#x…...
【CXX-Qt】4.1 extern “RustQt“
QObjects Properties Methods Signals #[cxx_qt::bridge] mod ffi {extern "RustQt" {} }extern “RustQt” 部分是 CXX-Qt 桥接的核心,用于声明 Rust 类型和签名,使其可用于 Qt 和 C。 CXX-Qt 代码生成器使用你的 extern “RustQt” 部…...
当 0 编程基础,用 ChatGPT 和 Cursor 开发同一应用时… |AI 开发初体验
求人不如求己。 事情是这样的,前段时间,我看了本书,书里介绍了款应用,能计算财富自由价格,还能制定退休计划。 结果,我迫不及待去下载这个应用时,发现这应用功能残缺,完全不可用。 …...
如何排查C++程序的CPU占用过高的问题
文章目录 可能的原因程序设计的BUG系统资源问题恶意软件硬件问题 通常步骤一个简单的问题代码在windows平台上如何排查Windows Process ExplorerWinDBG 在Linux平台如何排查使用TOP GDBPerf 可能的原因 程序设计的BUG 有死循环低效算法与数据结构滥用自旋锁频繁的系统调用&a…...
数据库练习
完善t_hero表 -- 添加作者字段 alter table t_hero add author varchar(100);-- 更新数据update t_hero set author "曹雪芹" where id 1; update t_hero set author "曹雪芹" where id 2; update t_hero set author "曹雪芹" where id…...
nodejs-原型污染链
还是老规矩,边写边学,先分享两篇文章 深入理解 JavaScript Prototype 污染攻击 | 离别歌 《JavaScript百炼成仙》 全书知识点整理-CSDN博客 Ctfshow web入门 nodejs篇 web334-web344_web334 ctfshow-CSDN博客 334-js审计 var express require(expr…...
无人机与AI技术结合的突破性应用场景
1. 自主导航与动态避障 技术栈:SLAM 强化学习 (PPO算法) 代码示例(Python PyTorch): import torch class DronePPO(torch.nn.Module):def __init__(self):super().__init__()self.actor torch.nn.Sequential(torch.nn.Linear…...
jsBridge在vue中使用
创建jsBridge.js /* eslint-disable */ function connectWebViewJavascriptBridge (callback) {if (window.WebViewJavascriptBridge) {callback(window.WebViewJavascriptBridge)} else {document.addEventListener(WebViewJavascriptBridgeReady, function () { callback(wi…...
Windows下docker使用教程
docker安装 镜像制作镜像加载容器创建更新镜像导出镜像 Windows10安装dockerdocker image制作docker 镜像加载docker 容器创建更新imageimage 导出为.tar文件 #以Windows10 、11为例 linux和Windows区别在于docker安装的程序是哪个操作系统的,后面的内容其实不变 …...
iOS:GCD信号量、同步、异步的使用方法
信号量的详细用法,可以用此方法进行队列管理 -(void)dispatchSignal{//crate的value表示,最多几个资源可访问dispatch_semaphore_t semaphore dispatch_semaphore_create(3);dispatch_queue_t quene dispatch_get_global_queue(DISPATCH_QUEUE_PRIORI…...
Nginx相关漏洞解析
一、CRLF注入漏洞 原理:Nginx将传入的url进行解码,对其中的%0a%0d替换成换行符,导致后面的数据注入至头部,造成CRLF 注入漏洞 1、开环境 2、访问网站,并抓包 3、构造请求头 %0ASet-cookie:JSPSESSID%3D1 这样就可以…...
SpringCloud构建一个服务步骤
Spring Cloud是一个用于构建分布式系统的开源框架,可以帮助开发者快速构建各种云原生应用。下面是一个简单的步骤,展示如何使用Spring Cloud构建一个服务: 创建一个Spring Boot项目:首先需要创建一个Spring Boot项目作为基础。可以…...
MySQL中怎么分析性能?
MySQL中主要有4种方式可以分析数据库性能,分别是慢查询日志,profile,Com_xxx和explain。 慢查询日志 先用下面命令查询慢查询日志是否开启, show variables like slow_query_log;# 一般默认都是以下结果 ---------------------…...
MinGW与使用VScode写C语言适配
压缩包 通过网盘分享的文件:MinGW.zip 链接: https://pan.baidu.com/s/1QB-Zkuk2lCIZuVSHc-5T6A 提取码: 2c2q 需要下载的插件 1.翻译 找到VScode页面,从上数第4个,点击扩展(以下通此) 搜索---Chinese--点击---安装--o…...
k8s存储介绍(五)PV与PVC
在 Kubernetes(k8s)中,持久化存储(Persistent Storage)是一个非常重要的概念,因为 Pod 本身是无状态的,重启后会丢失数据。为了支持有状态应用,Kubernetes 提供了持久化存储的机制&a…...
LangChain开发(五)消息管理与聊天历史存储
文章目录 消息存储在内存使用单参数session_id配置会话唯一键 消息持久化到redis安装redis依赖安装redis调用聊天接口,看Redis是否存储历史记录 裁剪消息总结记忆源码地址参考资料 消息存储在内存 我们展示一个简单的示例,其中聊天历史保存在内存中&…...
HTML 表单处理进阶:验证与提交机制的学习心得与进度(一)
引言 在前端开发的广袤领域中,HTML 表单处理堪称基石般的存在,是构建交互性 Web 应用不可或缺的关键环节。从日常频繁使用的登录注册表单,到功能多样的搜索栏、反馈表单,HTML 表单如同桥梁,紧密连接着用户与 Web 应用…...
【文献25/03/26】Hyperspectral Image Transformer Classification Networks
高光谱图像Transformer分类网络 Hyperspectral Image Transformer Classification Networks | IEEE Journals & Magazine | IEEE Xplore 摘要 高光谱图像(HSI)分类是地球观测任务中的一项重要工作。 卷积神经网络(CNN)凭借…...
数字转换(c++)
【题目描述】 如果一个数 xx 的约数和 yy (不包括他本身)比他本身小,那么 xx 可以变成 yy ,yy 也可以变成 xx 。例如 44 可以变为 33 ,11 可以变为 77 。限定所有数字变换在不超过 nn 的正整数范围内进行,…...
WPF ContentPresenter详解2
ContentPresenter与ContentControl的区别 ContentControl 和 ContentPresenter 是 WPF 中两个相关的控件,但它们在用途和功能上有一些关键的区别。理解这两者的区别和联系有助于更好地设计和开发用户界面。 1. 类层次结构 ContentControl:位于 WPF 控件…...
【git】认识git的本地仓库
1.创建本地仓库 git init2. 配置本地仓库 git config user.name xxx git config user.email xxx3. 认识本地仓库 创建完本地仓库后,目录下会有一个.git文件,这个就是本地仓库 而创建本地仓库的目录叫做工作区,我们不能对.git文件进行任何手…...
正则表达式基本语法和Java中的简单使用
先来个例子 public static final Pattern CHINESE_PATTERN Pattern.compile("[\\u4e00-\\u9fa5]"); / 检测字符串是否包含汉字 String text "Hello 世界"; boolean hasChinese CHINESE_PATTERN.matcher(text).find(); // 返回 true// 提取所有汉字 Mat…...
【大模型】什么是循环神经网络(RNNs)
在人工智能(AI)的世界里,**循环神经网络(Recurrent Neural Networks, RNNs)**是一种非常强大的工具,特别适合处理序列数据。无论是语言、时间序列还是音乐,RNNs都能帮助我们理解和预测这些数据的…...
Leetcode 交错字符串
java solution class Solution {public boolean isInterleave(String s1, String s2, String s3) {//首先获取这三个字符串的长度int m s1.length();int n s2.length();int l s3.length();if(m n ! l) return false;//创建dp数组,dp[i][j]其含义是s3的前ij个字符是否可以由…...
Vue动态绑定:文本框、单选按钮、下拉列表、多选按钮
Vue 指令系列文章: 《Vue插值:双大括号标签、v-text、v-html、v-bind 指令》 《Vue指令:v-cloak、v-once、v-pre 指令》 《Vue条件判断:v-if、v-else、v-else-if、v-show 指令》 《Vue循环遍历:v-for 指令》 《Vue事件处理:v-on 指令》 《Vue表单元素绑定:v-model 指令》…...
MySQL - 数据库基础操作
SQL语句 结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。 分类 DDL 数据定义语言(Data Definition Language),定义对数据库对象(库、表、列、索引)的操作。 DML 数据操作语言(Data Manip…...
从入门到精通:SQL注入防御与攻防实战——红队如何突破,蓝队如何应对!
引言:为什么SQL注入攻击依然如此强大? SQL注入(SQL Injection)是最古老且最常见的Web应用漏洞之一。尽管很多公司和组织都已经采取了WAF、防火墙、数据库隔离等防护措施,但SQL注入依然在许多情况下能够突破防线&#…...
关于优麒麟ukylin如何更换清华源以及ubuntu24.04安装gcc-i686-linux-gnu找不到包的问题
打算把这个文章当成一个调试Linux bug的汇总,会持续更新 1、关于优麒麟ukylin如何更换清华源 (1)首先打开命令行,切换root权限 su root 输入密码 如果第一次使用ubuntu会提示密码不正确,输入 sudo passwd root …...
Spring Boot 自定义 Starter 组件的技术指南
1、简述 Spring Boot 通过 Starter 机制,让开发者可以快速集成第三方组件。在企业级开发中,我们常常需要封装自己的 Starter 组件,以提高代码复用性,简化配置,并实现可插拔的模块化开发。 Spring Boot Starter 机制 …...
基于Spring Boot的ONLY在线商城系统设计与实现的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
HarmonyOS 之 @Require 装饰器自学指南
在 HarmonyOS 应用开发工作中,我频繁碰到组件初始化传参校验的难题。在复杂的组件嵌套里,要是无法确保必要参数在构造时准确传入,就极易引发运行时错误,而且排查起来费时费力。一次偶然的机会,我接触到了 Require 装饰…...
【Unity】 HTFramework框架(六十三)SerializableDictionary可序列化字典
更新日期:2025年3月26日。 Github 仓库:https://github.com/SaiTingHu/HTFramework Gitee 仓库:https://gitee.com/SaiTingHu/HTFramework 索引 一、SerializableDictionary可序列化字典1.使用SerializableDictionary2.实现思路 二、Serializ…...
JavaScript的性能优化指导
JavaScript 的性能优化可以从多个层面入手,涵盖代码执行效率、内存管理、DOM 操作、网络请求等。以下是一些关键优化策略: 一、代码执行优化 减少作用域链查找 避免在循环中频繁访问全局变量或深层嵌套的属性,将其缓存到局部变量中。 // 优化…...
如何在 Vue 项目中使用v - for指令进行列表渲染,如何优化其性能?
大白话如何在 Vue 项目中使用v - for指令进行列表渲染,如何优化其性能? 在Vue项目里,咱们常常会碰到要把一组数据渲染成列表的状况。这时候,v-for指令就派上大用场啦!它能让咱们轻松地把数据数组里的每个元素渲染成对…...
Notepad++ 替换 换行符 为 逗号
多行转一行,逗号分隔 SPO2025032575773 SPO2025032575772 SPO2025032575771 SPO2025032575771 SPO2025032575770为了方便快速替换,我们需要先知道这样类型的数据都存在哪些换行符。 点击【视图】-【显示符号】-【显示行尾符】 对于显示的行尾换行符【C…...
《基于机器学习发电数据电量预测》开题报告
个人主页:大数据蟒行探索者 目录 一、选题背景、研究意义及文献综述 (一)选题背景 (二)选题意义 (三)文献综述 1. 国内外研究现状 2. 未来方向展望 二、研究的基本内容,拟解…...
【Linux】MAC帧
目录 一、MAC帧 (一)IP地址和MAC地址 (二)MAC帧格式 (三)MTU对IP协议的影响、 (四)MTU对UDP协议的影响 (五)MTU对TCP协议的影响 二、以太网协议 &…...
企业入驻成都国际数字影像产业园,可享150多项专业服务
企业入驻成都国际数字影像产业园,可享150多项专业服务 全方位赋能,助力影像企业腾飞 入驻成都国际数字影像产业园,企业将获得一个涵盖超过150项专业服务的全周期、一站式支持体系,旨在精准解决企业发展各阶段的核心需求…...
飞速(FS)企业网布线解决方案:赋能能源行业客户高效网络部署与智能化管理
国家:中国 行业:能源与公用事业 网络类型:楼宇主干局域网 方案类型:企业网络布线 案例亮点 部署高密度、高性能飞速(FS)24口千兆企业级交换机,有效节省客户机房安装空间,提高并发…...
前端性能优化方案总结
首屏加载优化 把老版本的库替换成新版本,支持tree shaking的库,按需引入,只打包用到的部分,大大优化项目体积,加快项目的首屏渲染。 能不用第三方库,就不用第三方库,比如时间格式化,…...
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 ADMM算法 4.2 最大似然ML检测算法 4.3 最小均方误差(MMSE)检测算法 4.4 迫零(ZF)检测算法 4.5 OCD_MMSE 检测算法 4.6 LAMA检测算法 …...
[plugin:vite:import-analysis] Cannot find module ‘vuex\dist\vuex.esm-bundler
我的是升级了uview-plus版本,导致一直报错,即时将版本降回去也报错,需要将package-lock.json和package-lock.yaml文件删掉重新安装软件包...
用Deepseek + Kimi 快速生成高质量的ppt
AI系列文章: AWS AI认证考试中经常提及几个重要的工具介绍 简单理解机器学习中top_k、top_p、temperature三个参数的作用 用Deepseek Kimi 快速生成高质量的ppt 在职场,不管干什么,都少不了和 PPT 打交道:客户交流,…...
【Go万字洗髓经】Golang中sync.Mutex的单机锁:实现原理与底层源码
本章目录 1. sync.Mutex锁的基本用法2. sync.Mutex的核心原理自旋到阻塞的升级过程自旋CAS 饥饿模式 3. sync.Mutex底层源码Mutex结构定义全局常量Mutex.Lock()方法第一次CAS加锁能够成功的前提是?竞态检测 Mutex.lockSlow()lockSlow的局部变量自旋空转state新值构造…...
Maven入门
1、简介 Apache Maven是一个项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。 2、作用 1)依赖导…...