基于 DB、EAST、SAST 的文本检测算法详解及应用综述
摘要
近年来,随着深度学习在计算机视觉领域的广泛应用,自然场景文字检测技术取得了飞速发展。针对复杂背景、任意形状、多角度文本等问题,学术界和工业界陆续提出了 DB、EAST、SAST 等多种算法。本文详细介绍了这几种主流文本检测方法的原理、网络结构、实现流程以及实际应用中的优缺点。通过比较分析,各算法在效率与精度之间的权衡为我们解决实际问题提供了有力指导。同时,文章还讨论了算法在 PaddleOCR 等工具库中的应用和扩展前景。
目录
- 引言
- 文本检测任务概述
- DB 算法详解
- 3.1 DB 算法背景与动机
- 3.2 网络结构及核心模块
- 3.3 可微分二值化模块解析
- 3.4 优缺点与适用场景
- EAST 算法详解
- 4.1 EAST 算法原理概述
- 4.2 网络结构与检测流程
- 4.3 非极大抑制与后处理策略
- 4.4 算法特点与适用场景
- SAST 算法详解
- 5.1 SAST 算法背景介绍
- 5.2 分割与多任务学习框架
- 5.3 点对边对齐方法解析
- 5.4 优缺点及适用实例
- 三种算法的对比分析
- 实际应用与发展方向
- 总结与展望
- 参考文献
引言
在图像理解和自然场景文本识别任务中,文本检测是一个基础且关键的步骤。传统方法依赖于手工特征与简单分类器,面对复杂背景、多样字体和任意方向文本时常常显得力不从心。随着深度卷积神经网络(CNN)的兴起,基于 CNN 的文本检测算法不断刷新检测性能,尤其是 DB、EAST 和 SAST 等方法,凭借其结构简单、端到端训练与快速推理,逐渐成为主流技术路线。
本文将介绍这三种算法的设计思路、核心技术及在实际工程中的应用。希望通过详细解析和对比,能帮助读者在实际项目中根据需求选择合适的文本检测方法,同时为研究工作提供参考。
文本检测任务概述
文本检测的目标是从图像或视频中检测出文字区域,常见的挑战包括:
- 复杂背景干扰:自然场景中的背景多变、纹理复杂。
- 文本形状多样:文本可能呈现水平、倾斜甚至弯曲形态。
- 文字密集与重叠:多个文本实例可能互相粘连,传统分割方法难以区分。
因此,深度学习方法需要设计网络结构和后处理策略,以实现对任意形状文本的准确定位。下图给出了一幅文本检测示意图(图中展示了文字区域的候选框与分割结果,可根据实际项目选择相应的后处理模块)。
在接下来的部分中,我们分别介绍 DB、EAST 和 SAST 算法的具体实现与技术细节。
DB 算法详解
3.1 DB 算法背景与动机
DB(Differentiable Binarization)算法最早由 Baidu PaddleOCR 团队提出,其主要创新在于将传统图像分割流程中的二值化操作引入到网络中,并使之可微分,从而实现端到端的训练。常规二值化步骤因不可导而无法参与误差反向传播,DB 算法利用一个可微分的近似替代,使得网络不仅能够预测文本概率图,还能根据自适应阈值区分文本前景和背景。
3.2 网络结构及核心模块
DB 算法整体采用全卷积网络(FCN)架构,其网络由 Backbone、FPN 和专用的 DB Head 组成。主要流程如下:
- 特征提取:通过主流 CNN(如 MobileNetV3 或 ResNet50)提取图像特征,并使用 FPN 模块融合多尺度特征。
- 多任务输出:DB Head 同时输出文本区域概率图 ( P ) 和阈值图 ( T )。
- 可微分二值化:最终通过公式
[
\hat{B}{i,j} = \frac{1}{1 + e^{-k(P{i,j}-T_{i,j})}}
]
对每个像素进行“软”二值化处理。其中,( k ) 是增益因子(通常设置为 50),使得该近似函数在 ( P=T ) 附近快速过渡。
3.3 可微分二值化模块解析
常规二值化操作定义为:
[
B_{i,j} =
\begin{cases}
1, & \text{if } P_{i,j} \geq t \
0, & \text{otherwise}
\end{cases}
]
这种硬性判断不可导,无法用于反向传播。DB 算法提出将其替换成 sigmoid 函数的形式,使得整个操作连续且可导:
[
\hat{B}{i,j} = \frac{1}{1 + e^{-k(P{i,j} - T_{i,j})}}
]
这种处理方式既在前向推理时近似于二值化,又允许梯度传递,从而在训练过程中优化网络参数。
3.4 优缺点与适用场景
优点:
- 端到端训练:所有模块均参与反向传播,能够自适应学习最佳阈值。
- 结构简单:基于 FCN 框架,易于实现和优化。
- 高效推理:轻量级结构适合移动端及实时应用。
缺点:
- 小目标检测:对于非常小的文本区域,分割精度可能不足。
- 后处理依赖:虽简化了后处理过程,但仍依赖聚类和扩展操作以重构多边形表示。
适用场景:
- 自然场景文字:适合风景图、街拍等复杂背景下的文字检测。
- 实时应用:由于网络轻量,适合部署在移动设备与边缘计算平台上。
EAST 算法详解
4.1 EAST 算法原理概述
EAST(Efficient and Accurate Scene Text Detector)算法由 Zhou 等人在 2017 年提出,主要通过单阶段检测的方式来快速定位任意方向文本。不同于两阶段方法,EAST 直接通过全卷积网络产生文本框,并利用后处理的非极大抑制(NMS)来聚合冗余预测框。
4.2 网络结构与检测流程
EAST 采用 U 型 FCN 作为骨干网络,其流程为:
- 特征提取:通过深度卷积网络(如 ResNet50_vd)获得多层特征图。
- 几何信息回归:网络同时预测每个像素的文本概率和几何属性,包括四个边界偏移值(或旋转角度信息),以便于复原旋转矩形或四边形表示的文本框。
- 后处理:根据预测得分和回归出的边界框,利用 NMS 筛除重叠严重的框,并最终输出检测结果。
4.3 非极大抑制与后处理策略
EAST 的后处理流程十分简单,仅需要对生成的候选框进行 NMS 处理。传统框架中可能存在大量冗余候选框,EAST 通过直接回归文本边界来减少中间候选阶段,同时利用 NMS 根据框内像素得分进行筛选。此外,EAST 支持两种几何形态输出:
- 旋转矩形(RBOX):直接回归旋转角度和边界距离。
- 四点框(QUAD):回归四个顶点坐标,适合预测任意角度文本。
4.4 算法特点与适用场景
优点:
- 检测速度快:单阶段预测省去了候选区域生成的时间,适合实时检测。
- 精度较高:针对任意角度文本设计的回归策略,能较好适应多变的文本方向。
缺点:
- 后处理复杂度依赖于 NMS:大量候选框的 NMS 计算会影响部分实时性需求(不过部分实现已经提供 C++ 加速)。
- 对小文本不敏感:在文本尺寸较小时,可能存在检测遗漏。
适用场景:
- 视频监控与车牌识别:速度优势适用于实时系统检测倾斜文本。
- 场景文本检测:适用于街拍图片、广告牌检测等需要检测倾斜文本的场景。
SAST 算法详解
5.1 SAST 算法背景介绍
SAST(Single-Shot Arbitrarily-Shaped Text Detector)是百度团队自研的一种基于分割的文本检测器。它在 EAST 基础上进行改进,充分利用分割与边界回归相结合的思想,实现对任意形状文本的端到端检测。SAST 特别适合处理复杂的弯曲文本场景,同时通过多任务学习互相校正各分支输出,提高了检测精度。
5.2 分割与多任务学习框架
SAST 主要采用全卷积网络(FCN)架构进行特征提取,并设计了多个并行分支预测不同的几何信息,包括:
- 文本中心线(TCL):利用分割方式提取文本中心区域;
- 文本边界偏移(TBO):预测中心线上每个点到文本左右边界的偏移;
- 文本中心偏移(TCO)以及文本顶点偏移(TVO):用于校正文本实例的全局边界。
此外,SAST 在网络中引入了**Context Attention Block(CAB)**模块,对特征进行全局和局部信息融合,从而提高对弯曲文本的分割精度。
5.3 点对边对齐方法解析
SAST 的一大亮点在于后处理阶段提出的点对边对齐方法。核心思想如下:
- 在文本中心线上等距选取采样点;
- 根据 TBO 分支预测出的偏移量,找到对应的左右边界点;
- 将采样点依次连接形成文本多边形。
这种方法不仅保留了文本的连续性信息,同时借助 TCO 与 TVO 分支互补,能够较好地提取任意形状文本的完整边界。实际上,通过这种一次性采样与聚合方式,将高层语义信息与低层像素信息有机结合,有效解决文本实例粘连及文本分割不完整等问题。
5.4 优缺点及适用实例
优点:
- 任意形状文本检测:特别适合处理弯曲、曲线文本和极端形变文本;
- 多任务互补:利用多分支预测,降低分割误差,提高整体精度;
- 端到端高效预测:一次性输出所有几何属性,无需多阶段候选生成。
缺点:
- 训练难度略增:多任务学习需要精细设计损失函数,并平衡各分支的权重;
- 小文本检测问题:在密集场景或极小文本区域上,分割可能略显不足;
- 计算资源需求:对上下文信息的建模(如 CAB 模块)带来一定计算开销,不过在现代 GPU 上可接受。
适用场景:
- 艺术场景与广告牌:适合检测弯曲、手写或任意形状的文本;
- 多语言混排文档:对于字体、形态多样的文本检测更具鲁棒性;
- 自动驾驶与智能监控:在复杂视觉环境中对文本区域进行精细定位。
三种算法的对比分析
下面我们将对 DB、EAST、SAST 三种算法进行横向比较,以便在具体应用中择优选择:
指标 | DB | EAST | SAST |
---|---|---|---|
模型结构 | 基于 FCN,多任务分支预测 | 单阶段回归直接预测文本框 | 分割与边界回归相结合 |
训练方式 | 端到端训练,可微分二值化 | 直接回归几何信息 | 多任务联合训练 |
复杂场景适应性 | 对复杂背景有较好表现 | 针对旋转文本有优势 | 任意形状与弯曲文本检测优势 |
推理速度 | 结构轻量,适合实时应用 | 单阶段检测速度非常快 | 多任务计算带来一定开销 |
实现难度 | 较简单,借助可微分模块实现 | 算法成熟,后处理依赖 NMS | 网络设计较复杂,后处理较精细 |
适用场景 | 自然场景、混乱背景文本检测 | 视频监控、倾斜文本检测 | 艺术场景、手写与曲线文本检测 |
总体上,DB 算法适用于对实时性有较高要求且背景复杂的任务;EAST 算法则因其简单高效适合实时监控、车牌检测等场景;而 SAST 算法凭借对任意形状文本的精准检测,在处理弯曲、手写等特殊场景中拥有优势。
实际应用与发展方向
7.1 实际应用案例
在实际应用中,这三种算法均有广泛使用,例如:
- PaddleOCR 工具包:其中 DB、EAST、SAST 均内置于 PaddleOCR 中,各有专属应用场景。用户可根据应用场景选择合适的模型,提高文字检测与识别效果。
- 移动端 OCR 应用:许多手机 OCR 应用采用 DB 算法,实现低延迟的实时文字检测。
- 监控视频分析:利用 EAST 算法快速定位视频中倾斜的车牌或路标文本。
- 智能文档处理:在合同、发票或身份证识别中,SAST 通过更为精细的文本分割实现高精度检测,从而提高后续文本识别的准确率。
7.2 算法发展的未来趋势
在未来,文本检测算法可能沿着以下方向不断发展:
- 轻量化设计:以适应边缘计算和移动设备,大幅压缩模型参数并加速推理。
- 多任务协同:进一步融合文本检测、方向分类和识别任务,实现端到端高效系统。
- 自适应阈值与增强:除了可微分二值化,还可能引入注意力机制与上下文建模,更准确地区分前景与背景。
- 跨域鲁棒性:提升算法在不同场景、不同语言文本上的泛化能力,适应多种应用环境。
- 无监督与半监督学习:利用弱标注数据和大规模未标注数据来提升检测性能,降低标注成本。
随着算力的不断提升及算法理论的深入研究,未来的文本检测算法将更加准确、稳健,同时具有更低的延时和能耗,为多样化的 OCR 应用场景提供更有力的技术保障。
总结与展望
本文详细介绍了 DB、EAST、SAST 三种主流文本检测算法的理论基础、网络结构及其实现细节,并对它们在实际应用中的优缺点进行了深入比较和分析。可以看出,各算法在设计思路上均力求在提高检测精度的同时兼顾实时性和适应性。无论是在自然场景、监控视频还是文档图像处理中,都有各自适合的应用场景。
未来,随着端到端 OCR 系统的不断完善,这些算法将可能进一步结合文本识别与其他场景特征,实现更高精度和智能化的应用。研究人员和开发者应根据具体需求,在轻量化、鲁棒性和计算效率之间找到最佳平衡点,推动 OCR 技术在各行业中的深入落地。
参考文献
- Zhou, X., Yao, C., Wen, H., et al. “EAST: An Efficient and Accurate Scene Text Detector.” (2017). citeturn0search1
- Liao, M., Shi, B., Bai, X., et al. “Differentiable Binarization for Faster and Better Text Detection.” (2019). citeturn0search2
- 百度 PaddleOCR 文档及源码解读系列文章。 citeturn0search3
- CSDN 博客《PaddleOCR 文字检测部分源码学习(1)-EAST,DB,SAST》系列。 citeturn0search1
- 知乎专栏及博客园相关 OCR 技术及模型细节介绍文章。 citeturn0search6
相关文章:
基于 DB、EAST、SAST 的文本检测算法详解及应用综述
摘要 近年来,随着深度学习在计算机视觉领域的广泛应用,自然场景文字检测技术取得了飞速发展。针对复杂背景、任意形状、多角度文本等问题,学术界和工业界陆续提出了 DB、EAST、SAST 等多种算法。本文详细介绍了这几种主流文本检测方法的原理…...
牙刷生产中的视觉检测,让刷毛缺陷检测高效便捷!
在日常口腔护理中,一把优质牙刷至关重要,而刷毛质量直接决定了牙刷品质。从生产端来看,牙刷制造行业正面临着品质管控的严峻挑战。人工目检在检测刷毛缺陷时,不仅效率低下,还极易因主观因素导致漏检、误检,…...
面向对象编程(OOP)核心概念进阶
面向对象编程(OOP)核心概念进阶 final 关键字 行为特征:作为终结者关键字,用于限制类、方法、变量的可修改性 三层控制力: - 修饰类: 定义不可继承的最终类(如 String、Integer 等不可变类核…...
AI与教育的协奏曲:重构未来学习生态
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 引言:教育的“智变”来临 在经历了千年的教与学之后,教育终于迎来了最大规模的技术变革浪潮。随着ChatGPT、DeepSeek、Grok 等大语言模型的诞生与不断演进,AI正以前所未有的方式深入影响每一个学生、老师…...
性能炸裂的数据可视化分析工具:DataEase!
今天分享一款开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便地与他人分享。 技术栈 前端:Vue.js、Elemen…...
9.thinkphp的请求
请求对象 当前的请求对象由think\Request类负责,该类不需要单独实例化调用,通常使用依赖注入即可。在其它场合则可以使用think\facade\Request静态类操作。 项目里面应该使用app\Request对象,该对象继承了系统的think\Request对象ÿ…...
UBUNTU20.04安装ros2
ubuntu20.04安装ROS2 详细教程_ubuntu20.04 ros2-CSDN博客...
数据可视化工具LightningChart .NET v12.2.1全新发布——支持新的 .NET 目标框架
LightningChart.NET完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D,高级3D,Polar,Smith,3D饼/甜甜圈,地理地图和GIS图表以及适用于科学…...
Python + Playwright:规避常见的UI自动化测试反模式
Python + Playwright:规避常见的UI自动化测试反模式 前言反模式一:整体式页面对象(POM)反模式二:具有逻辑的页面对象 - POM 的“越界”行为反模式三:基于 UI 的测试设置 - 缓慢且脆弱的“舞台搭建”反模式四:功能测试过载 - “试图覆盖一切”的测试反模式之间的关联与核…...
蓝宝石狼组织升级攻击工具包,利用新型紫水晶窃密软件瞄准能源企业
网络安全专家发现,被称为"蓝宝石狼"(Sapphire Werewolf)的威胁组织正在使用升级版"紫水晶"(Amethyst)窃密软件,对能源行业企业发起复杂攻击活动。此次攻击标志着该组织能力显著提升&am…...
高光谱相机:温室盆栽高通量植物表型光谱成像研究
传统植物表型测量依赖人工观察与手工记录,存在效率低、主观性强、无法获取多维数据(如生化成分、三维形态)等缺陷。例如,叶片氮含量需破坏性取样检测,根系表型需挖掘植株,导致数据不连续且难以规模化。此外…...
Android Studio安装平板的虚拟机
其实很简单,但是我刚开始也是一窍不通,所以也查了好多资料才会的,本文仅作为个人学习笔记分享,有跟我一样的小白可以当做一个参考,有什么问题也欢迎大家提出建议,俺会虚心接受并改进的~ 首先我们打开项目&…...
Redis 常问知识
1.Redis 缓存穿透问题 缓存穿透:当请求的数据在缓存和数据库中不存在时,该请求就跳出我们使用缓存的架构(先从缓存找,再从数据库查找、这样就导致了一直去数据库中找),因为这个数据缓存中永远也不会存在。…...
UnityUI:Canvas框架获取鼠标悬浮UI
将下面脚本挂在主体Canvas上,Canvas会对下面所有Image挂上PointerHandler脚本,并且可以通过GetPointEnter方法判断当前鼠标是否悬停在UI上 public class BaseCanvas : MonoBehaviour {public static BaseCanvas Main;private void Awake(){Main this;I…...
NLP实战(3):RNN英文名国家分类
目录 1. 项目需求 2. 模型解析 2.1 网络模型 2.2 准备数据 2.3 双向循环神经网络 3. 代码解析 4. 完整代码 5. 结果 1. 项目需求 对名字的分类,几千个名字,总共来自于18个国家 2. 模型解析 对于自然语言处理来说,输入是一个序列&am…...
东方博宜OJ ——1335 - 土地分割
递归 入门 ————1335 - 土地分割 1335 - 土地分割题目描述输入输出样例问题分析递归解法(欧几里得算法)代码实现总结 1335 - 土地分割 题目描述 把一块m * n米的土地分割成同样大的正方形,如果要求没有土地剩余,分割出的正方形…...
在轨道交通控制系统中如何实现μs级任务同步
轨道交通作为现代城市化进程中的重要支柱,承载着数以亿计的乘客出行需求,同时也是城市经济运行的命脉。无论是地铁、轻轨还是高速铁路,其控制系统的稳定性和可靠性直接关系到运营安全和效率。在这样一个高风险、高复杂度的环境中,…...
【C++教程】进制转换的实现方法
在C中进行进制转换可以通过标准库函数或自定义算法实现。以下是两种常见场景的转换方法及示例代码: 一、使用C标准库函数 任意进制转十进制 #include <string> #include <iostream>int main() {std::string num "1A3F"; // 十六进制数int…...
日志文件爆满_配置使用logback_只保留3天日志文件_每天定时生成一个日志文件---SpringCloud工作笔记206
日志文件爆满,springCloud微服务架构中的,日志爆满如何解决,使用脚本直接删除,会导致, 如果要删除的日志文件,还正在被进程占用,那么你即使使用脚本定时删除了,这个日志文件,那么这个日志文件实际上还是不会删除的,他的大小,依然占用磁盘,就是因为,有进程还在占用它,所以之前说…...
DICOM通讯(ACSE->DIMSE->Worklist)
DICOM 通讯协议中的 ACSE → DIMSE → Worklist 这条通讯链路。DICOM 通讯栈本身是一个多层的协议结构,就像 OSI 模型一样,逐层封装功能。 一、DICOM 通讯协议栈总体架构 DICOM 通讯使用 TCP/IP 建立连接,其上面封装了多个协议层次…...
QML与C++:基于ListView调用外部模型进行增删改查(附自定义组件)
目录 引言相关阅读项目结构文件组织 核心技术实现1. 数据模型设计联系人项目类 (datamodel.h)数据模型类 (datamodel.h)数据模型实现 (datamodel.cpp) 2. 主程序入口点 (main.cpp)3. 主界面设计 (Main.qml)4. 联系人对话框 (ContactDialog.qml)5. 自定义组件CustomTextField.qm…...
# linux 设置宽容模式
linux 设置宽容模式 在Linux系统中,通常没有直接称为“宽容模式”的设置选项,但你可以通过几种方式来模拟或调整系统行为,使其表现得更加“宽容”,特别是在处理错误、权限问题或其他潜在问题时。以下是一些常见的方法:…...
#1 理解物联网
物联不是一个新概念,物联网如其中文译名, 虚拟和物的对应和联接。 对于人类的梦想而言,总是希望自己无比强大,但受限于外部条件而只能为此悻悻念念。 所以人们的目光聚焦在,上世纪70年代发展的传感器、大规模电路、通…...
物联网场景实战:智能电表数据管理与分析(二)
数据管理 数据清洗与预处理 智能电表在数据采集、传输和存储过程中,不可避免地会引入噪声、出现缺失值和异常值等问题,这些问题会严重影响数据的质量和后续分析的准确性,因此数据清洗至关重要。 噪声数据通常是由于测量误差、通信干扰等原…...
linux一次启动多个jar包
linux一次启动多个jar包并且可以自定义路径和端口号 代码使用 分享公司大神使用的一个脚步,可以一次启动多个jar包,也可以指定启动jar包 代码 #! /bin/sh # 端口号 PORTS(8080 8081 8082 8083) # 模块 MODULES(gateway auth system file) # 模块名称 MODULE_NAMES(网关服务 认…...
自然语言交互:NAS进化的下一站革命
自然语言交互:NAS进化的下一站革命 在数据爆炸式增长的数字时代,网络附加存储设备(NAS)早已突破企业级应用的边界,成为个人数字资产管理的核心枢纽。当全球NAS市场年复合增长率稳定在15%之际,耘想科技推出…...
go中我遇到的问题总结
go问题总结 1 - go中的nil等于java中的null吗 在 Go 和 Java 中,nil 和 null 都用于表示“空值”,但它们的实现和使用方式有所不同。 以下是 Go 中的 nil 和 Java 中的 null 之间的对比: 1. Go 中的 nil 在 Go 中,nil 是一个预定义的常量,表示零值。它的行为根据数据类…...
java面试题带答案2025最新整理
文章目录 一、java面试题集合框架1. 请简要介绍 Java 集合框架的体系结构2. ArrayList 和 LinkedList 的区别是什么3. HashMap 的工作原理是什么,它在 JDK 7 和 JDK 8 中有哪些不同4. 如何解决 HashMap 的线程安全问题5. TreeSet 是如何保证元素有序的 二、java面试…...
第七届浙江省大学生网络与信息安全竞赛决赛Unserialize深度解析 1.0
花还会重新开,不同的春来了又来。 - 2025.4.11 0x01 声明 仅作为个人学习使用,仅供参考,欢迎交流 可能是新生赛缘故,突发奇想,想好好梳理此题,顺便写成参考,于是有了这篇文章 当然很多理解可…...
onlyoffice 在线编辑集成
onlyoffice 在线编辑集成 项目中要使用word在线编辑功能,记录一下过程 安装使用docker版本 docker run -itd -p 8001:80 --name kodoffice --restart always registry.cn-hangzhou.aliyuncs.com/kodcloud/kodoffice:7.4.1.1 启动后http://192.168.x.x:8001/web/…...
2.4goweb 项目1
mysql库和表 CREATE DATABASE IF NOT EXISTS book_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;USE book_manager;-- 用户表(用于登录) CREATE TABLE IF NOT EXISTS users (user_id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(…...
ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(系列开篇)
目录 ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(系列开篇)简介模块概述功能定义架构位置核心特性 接口分析公共API概述1. 外设集合管理API2. 单个外设管理API3. 事件通信API4. 定时器管理API 数据结构关键数据结构分析枚…...
供应链管理:供应链管理的边界
一、追根溯源,什么是真正的财富 序号财富解释1土地作为生产资料,土地是农业、工业、商业的基础 城市中心的土地因稀缺性而价值连城,农业土地的肥沃程度直接影响粮食产量。2资源、矿产提供能源和原材料,支撑工业生产和经济发展。 …...
【Linux网络编程】TCP Echo Server的实现
本文专栏:linux网络编程 本文的基础知识是基于上篇文章:UDP Echo Server的实现 传送门: 【Linux网络编程】UDP Echo Server的实现 -CSDN博客 目录 一,InetAddr类的编写 二,客户端代码编写 创建套接字(s…...
信奥赛CSP-J复赛集训(数学思维专题)(11):P9585 「MXOI Round 2」酒店
信奥赛CSP-J复赛集训(数学思维专题)(11):P9585 「MXOI Round 2」酒店 题目描述 小 C 开了一家酒店,叫做 CC Hotel。 一天,CC Hotel 来了 n n n 位客人。小 C 需要把他们都安排在酒店的某一层…...
python: audioFlux XXCC 提取梅尔频率倒谱系数 MFCC
承上一篇:python:audioFlux 使用教程 XXCC: 倒谱系数,支持所有频谱类型. 可以提取梅尔频率倒谱系数(MFCC) Cepstrum coefficients, supports all spectrum types. 以下是使用 audioflux 库中 XXCC 类计算倒谱系数…...
PHP + Go 如何协同打造高并发微服务?
为什么需要 PHP Go 协同? 在微服务架构中,PHP 和 Go 看似是“两个世界”的语言,但它们的互补性极强: PHP:开发效率高、生态成熟,适合快速实现复杂业务逻辑(如电商订单、用户系统)…...
k8s工具使用
Kubectl Cheat Sheet k8s的命令级别 1.基础命令(初级) 2.基础命令(中级) 3.部署命令 4.集群管理命令 5.故障排查和调试命令 6.高级命令 7.设置命令 8.其它命令 命令行提示 为了使用kubectl命令更加高效,我们可以选择安装一下开源软件来增加操作kubectl命令的快捷方式,同…...
uml制做参考-以代码画UML图
【PlantUML系列】类图(一)_plantuml skin-CSDN博客 UML入门以及Plant UML工具介绍_plantuml-CSDN博客 UML类图详解-CSDN博客 【PlantUML】-类图-CSDN博客 【掌握绘图艺术】用PlantUML绘制完美UML图表,编程开发者的福音 - 知乎 如何优化P…...
深入解析B站androidApp接口:从bilibili.api.ticket.v1.Ticket/GetTicket到SendMsg的技术分析
前言 最近一段时间,我对B站的App接口进行了深入分析,特别是关注了认证机制和私信功能的实现。通过逆向工程和网络抓包,发现了B站移动端API的底层工作原理,包括设备标识生成机制、认证流程和消息传输协议。本文将分享这些研究成果…...
[AI ][Dify] 构建一个自动化新闻编辑助手:Dify 工作流实战指南
在内容创作行业中,自动化辅助工具已成为提升编辑效率的重要利器。本文将通过 Dify 平台,演示如何构建一个**“新闻编辑助手”**,实现从网页抓取、文本翻译、标题生成,到新闻配图的全流程自动化。 🎯 目标概览 这个工作流旨在实现如下功能: 从指定网页抓取新闻内容; 使…...
Unity中国战略调整简讯:Unity6下架 团结引擎接棒
Unity中国战略调整简讯:Unity6下架 团结引擎接棒 免费版 2025年4月9日 —— Unity中国宣布自即日起,中国大陆及港澳地区停止提供Unity 6及后续版本下载与服务,相关功能由国产引擎“团结引擎”承接。国际版2022 LTS及更早版本仍由Unity中国维护…...
司美格鲁肽用SNAC市场报告:2024年全球市场销售额达到了0.14亿美元
引言:了解司美格鲁肽与SNAC的重要性 在当前的医药领域,司美格鲁肽(Semaglutide)作为一种创新性的治疗2型糖尿病和肥胖症的药物,受到了广泛关注。而SNAC(N-(8-(2-羟苯基)…...
自动驾驶第一性原理
所谓的第一性原理: 就是指从最基本的物理规律,数据逻辑及工程约束条件出发,剥离所有的非本质的假设,直接推导出自动驾驶最核心的要素。 自动驾驶核心框架分解: 1、根本目标: 安全高效的将人/物从A地运送…...
《UE5_C++多人TPS完整教程》学习笔记36 ——《P37 拾取组件(Pickup Widget)》
本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P37 拾取组件(Pickup Widget)》 的学习笔记,该系列教学视频为计算机工程师、程序员、游戏开发者、作家(Engineer, Programmer, Game Developer, Author) Steph…...
Uniswap V2/V3/V4 流动性与价格计算详解
Uniswap V2/V3/V4 流动性与价格计算详解 一、核心概念对比 Uniswap V2 流动性模型: 恒定乘积公式 (x * y = k)价格决定: 完全由池子中的代币数量决定 (price = y/x)流动性衡量: 总储备量代表流动性,直接通过 getReserves() 获取流动性分布: 均匀分布在所有价格点交易费用: 固…...
yum安装MySQL数据库
yum安装方式 优点:操作简单易用。不用单独下载,服务器可以联网且yum源没有问题即可(可以选择国内的163/阿里源) 安装步骤: 1.关闭防火墙和selinux: systemctl stop firewalld ##关闭防火墙 systemctl disable firewalld …...
大联盟(特别版)双端互动平台完整套件分享:含多模块源码+本地部署环境
这是一套结构清晰、功能完整的互动平台组件,适合有开发经验的技术人员进行模块参考、结构研究或本地部署实验使用。 该平台覆盖前端展示、后端服务、移动端资源以及完整数据库,采用模块化架构,整体部署流程简单清晰,适合自研团队参…...
【Code】《代码整洁之道》笔记-Chapter15-JUnit内幕
第15章 JUnit内幕 JUnit是最有名的Java框架之一。就像别的框架一样,它概念简单,定义精确,实现优雅。但它的代码是怎样的呢?本章将研判来自JUnit框架的一个代码例子。 15.1 JUnit框架 JUnit有很多位作者,但它始于K…...
【Java八股】
JVM JVM中有哪些引用 在Java中,引用(Reference)是指向对象的一个变量。Java中的引用不仅仅有常规的直接引用,还有不同类型的引用,用于控制垃圾回收(GC)的行为和优化性能。JVM中有四种引用类型…...