搭建自己的OCR服务
网上看到相关文章,这里整理记录一下,仅供学习。
搭建自己的OCR服务,第一步:选择合适的开源OCR项目 - PandaCode辉 - 博客园
一、OCR是什么?
光学字符识别(Optical Character Recognition, OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。
亦即将图像中的文字进行识别,并以文本的形式返回。
二、OCR的基本流程
1. 图像输入、预处理:
不同的图像格式有不同的存储、压缩方式,目前有OpenCV、CxImage等。
2. 二值化:
如今数码摄像头拍摄的图片大多是彩色图像,彩色图像所含信息量巨大,不适用于OCR技术。为了让计算机更快的、更好地进行OCR相关计算,
我们需要先对彩色图进行处理,使图片只剩下前景信息与背景信息。二值化也可以简单地将其理解为“黑白化”。
3. 图像降噪:
对于不同的图像根据噪点的特征进行去噪的过程称为降噪。
4. 倾斜校正:
由于一般用户,在拍照文档时,难以拍摄得完全符合水平平齐与竖直平齐(我本人就经常拍的歪歪扭扭),
因此拍照出来的图片不可避免的产生倾斜,这就需要图像处理软件进行校正。
5. 版面分析:
将文档图片分段落,分行的过程称为版面分析。
6. 字符切割:
由于拍照、书写条件的限制,经常造成字符粘连、断笔,直接使用此类图像进行OCR分析将会极大限制OCR性能。
因此需要进行字符切割,即:将不同字符之间分割开。
7. 字符识别:
早期以模板匹配为主,后期以结合深度网络的特征提取为主。版面还原:将识别后的文字像原始文档图片那样排列,
段落、位置、顺序不变地输出到Word文档、PDF文档等,这一过程称为版面还原。
8. 后期处理:根据特定的语言上下文的关系,对识别结果进行校正。
9. 输出:将识别出的字符以某一格式的文本输出。
三、OCR的使用现状
ocr的发展已经有了非常多的积累,一般人或者企业使用, 都是直接使用第三方的服务,目前提供第三方服务的大企业也非常多,百度,阿里云,腾讯等等,都提供了非常方便的api接口,可以进行调用,识别的速度、精确度和效果也都是非常不错的。唯一的缺点就是api的调用是需要收费的,对于调用频次不高的个人和企业,这个费用还是非常低的。
1,为什么企业要使用开源的而不是直接使用api服务?
目前因为公司的现状,使用开源的有几个目的
- 每天调用的频次比较高 , 以后可能越来越高, 所以基于费用的考虑是最主要的。
- 目前ocr的算法研究基本趋于成熟,并且目前对识别的精度要求不是太高,目前开源项目基本能够满足。
- 对于cv和深度学习进行一定程度的积累和了解,为后续工作做一些铺垫。
- 学习开源ocr的模型构建,方便后续对于模型的更新。
2,目前常用的几个OCR开源的项目
目前针对ocr的相关开源项目还是很多的,做了一些简单的调研和试用,在这里进行记录。对于调研不准确的希望大家指出。
第一名:PaddleOCR
PaddleOCR 是百度开源的中文识别的ocr开源软件,PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力开发者训练出更好的模型,并应用落地。
支持多种OCR相关前沿算法,在此基础上打造产业级特色模型PP-OCR和PP-Structure,并打通数据生产、模型训练、压缩、预测部署全流程。
开源地址: https://github.com/PaddlePaddle/PaddleOCR.git
官网地址: https://www.paddlepaddle.org.cn/
优势
- github上面star非常多,项目非常活跃
- 模型只针对中文进行训练
- 后面做背书的公司非常强(baidu)
- 相关的中文文档非常齐全
- 识别的精确度比较高
- 安装和教程详细
- 支持前沿算法和标注工具
劣势
- 目前使用的训练模型是基于百度公司自己的PaddlePaddle框架,对于小公司来说并不主流(对比于ts或者pytorch),所使用深度学习框架为后续其他深度学习无法做很好的铺垫
- 项目整体比较复杂,学习成本较高
所以根据自己实际情况,我最终选择了这个百度飞浆OCR开源项目学习。
第二名:Tesseract
Tesseract 一款由HP实验室开发由Google维护的开源OCR引擎,支持多语言,多平台,使用python开发。
开源地址: https://github.com/tesseract-ocr/tesseract.git
优势
- github上面star非常多,项目非常活跃
- 识别的语言和文字非常多
- 后面做背书的公司非常强(google)
劣势
- 不是专门针对中文场景
- 相关文档主要是英文,对于阅读和理解起来有一定困难
- 学习成本比较高
- 源码较多,并且部分源码是c++,学习起来难度比较大
所以根据自己实际情况放弃了这个项目的学习。
第三名:EasyOCR
EasyOCR是用Python编写基于Tesseract的OCR识别库,用于图像识别输出文本,目前支持80多种语言。
开源地址: https://github.com/JaidedAI/EasyOCR.git
优势
- github上面的star也是比较多,但是最近不是特别活跃
- 支持的语言也是非常多的,多达80多种
- 识别的精确度尚可
劣势
- 从官方的页面体验来说识别的速度较慢
- 识别的文字种类多,学习难度较高
- 相关的官方文档是基于英文的,学习难度较高,对于新手不太友好
tesseract.js
js版本的Tesseract OCR,支持一百多种语言,使用也是非常简单,可以用npm安装,也可以直接在页面引用js
https://github.com/naptha/tesseract.js.git
mmocr
MMOCR 是基于 PyTorch 和 mmdetection 的开源工具箱,专注于文本检测,文本识别以及相应的下游任务,如关键信息提取。
https://github.com/open-mmlab/mmocr.git
simple-ocr-opencv
基于opencv 和numpy开源的OCR识别引擎
https://github.com/goncalopp/simple-ocr-opencv.git
OCRmyPDF
OCRmyPDF是基于Tesseract-OCR开发、训练的文字识别提取的开源项目。它可以将扫描或图像文件中的文本转换为可编辑的PDF文档。
Umi-OCR
Umi-OCR是基于PaddleOCR实现的一款开源的文字识别工具。它可以快速为您生成高质量的OCR模型,并提供简单易用的API,支持多种语言和文件格式。它特别适用于需要进行自定义训练的OCR应用程序。
3、OCR工具
OCRmyPDF
OCRmyPDF是基于tesseract-ocr开发、训练的文字识别提取的开源项目
https://github.com/ocrmypdf/OCRmyPDF.git
Umi-OCR
基于 PaddleOCR 实现的一款开源的文字识别工具,
一般开源项目,识别率肯定没有商用的那么高,只有通过训练自己的字库来提高识别率。文字识别场景,有时候就会涉及到图片处理,这里又会关联到其它强大的图像处理开源项目,如:OpenCV。这些项目中,PaddleOCR相对来说会更符合我们常见的业务场景,也支持我们自己去训练。
四、OCR实际应用场景
在本文中,我们介绍了八种常见的开源OCR框架和工具,包括Tesseract、Tesseract.js、PaddleOCR、EasyOCR、MMOCR、simple-ocr-opencv、OCRmyPDF和Umi-OCR。这些工具具有不同的特点和优势,可以根据实际需要进行选择。下面列出了这些工具的一些实际应用场景:
-
Tesseract:广泛应用于图像识别和文本转换领域,如扫描仪、数字化文档等。
-
Tesseract.js:用于网页端OCR识别,可实现将图像中的文字转为可编辑文本,适用于在线编辑器、智能表单、在线阅读器等应用场景。
-
PaddleOCR:适用于复杂文本场景下的OCR识别,比如身份证、银行卡、车牌等。
-
EasyOCR:适用于文本排列和字检测准确度要求较高的 OCR 应用场景,如名片识别、发票识别、商品标签识别等。
-
MMOCR:适用于中英文混合、竖排文字、非结构化场景下的OCR识别,如手写字、表格、小说等。
-
simple-ocr-opencv:适用于处理常见的OCR任务,如身份证、营业执照、车牌等。
-
OCRmyPDF:将扫描或图像文件中的文本转换为可编辑的PDF文档,适用于需要编辑PDF文档的场景。
-
Umi-OCR:可以帮助用户快速生成高质量的OCR模型,并支持多种语言和文件格式。适用于需要自定义训练的OCR应用程序。
五、OCR技术国内应用情况
OCR技术在信创领域中应用广泛,主要包括文字识别、表格识别、印刷体识别以及各种证件的识别。随着各种开源OCR工具的出现和不断完善,OCR技术得到了广泛应用,国内OCR技术也已相对成熟,并且得到广泛应用。常见的厂商有图鼎科技、中标信息、神州数码、讯飞OCR等,互联网公司如阿里云、腾讯云也推出了自己的OCR技术产品。
这些OCR技术可以应用于各个领域,例如:
- 电子商务:在订单处理、发票管理、商品识别等方面的应用,提高效率和准确性。
- 金融服务:在银行卡、身份证、证券账户等领域的识别,可以提高客户体验,降低工作量和出错率。
- 医疗健康:在病历管理、药品监管、个人隐私信息保护等方面的应用也十分重要。
除此之外,OCR技术还可以用于政务管理、教育、交通运输、安防等各个领域。应用范围广泛,具有广阔的市场前景。
当然,OCR技术也存在一些缺陷。例如,一些手写文字识别的准确性尚待提高。在复杂环境下、格式多样化的文档处理中,OCR技术也可能出现误识别等问题。此外,OCR技术也需要不断地优化和改进,以适应新场景的需求并提高产品质量。
总体来说,OCR技术在信创领域中将会越来越重要,并且其应用也会不断扩展和深化。各家厂商可以通过技术创新、算法优化、运营推广等方面提高产品性能和竞争力,为用户带来更好的体验和服务。
综上所述,OCR技术作为一项重要的人工智能技术,已经得到了广泛的应用,并且将会越来越重要。通过使用开源的OCR框架和工具,开发者可以更灵活地构建高质量的OCR应用程序,实现更多实际的场景应用。
六、参考
搭建自己的OCR服务,第一步:选择合适的开源OCR项目 - PandaCode辉 - 博客园
http://juejin.cn/post/7261861496564940859
相关文章:
搭建自己的OCR服务
网上看到相关文章,这里整理记录一下,仅供学习。 搭建自己的OCR服务,第一步:选择合适的开源OCR项目 - PandaCode辉 - 博客园 一、OCR是什么? 光学字符识别(Optical Character Recognition, OCR)…...
vue:组件的使用
Vue:组件的使用 1、什么是组件 1.1、传统方式开发的应用 一个网页通常包括三部分:结构(HTML)、样式(CSS)、交互(JavaScript)。在传统开发模式下,随着项目规模的增大&a…...
leetcode日记(105)买卖股票的最佳时机Ⅱ
原本以为是一个很难想的动态规划,没想到是最简单的贪心…… 如果实在想不出就画个折线图,只买上涨的就行了,所有上涨的段都取到。 真的没想到会这么简单…… class Solution { public:int maxProfit(vector<int>& prices) {int …...
7种数据结构
7种数据结构 顺序表sqlite.hseqlite.c 单链表linklist.clinklist.h 双链表doulinklist.cdoulinklist.h 链式栈linkstack.clinkstack.h 队列SeqQueue.cSeqQueue.h 树tree.c 哈希表hash.c 顺序表 sqlite.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ typedef struct person…...
论文阅读:Deep Hybrid Camera Deblurring for Smartphone Cameras
今天介绍一篇 ACM SIGGRAPH 2024 的文章,关于手机影像中的去模糊的文章。 Deep Hybrid Camera Deblurring for Smartphone Cameras Abstract 手机摄像头尽管取得了显著的进步,但由于传感器和镜头较为紧凑,在低光环境下的成像仍存在困难&am…...
Redis 三主三从集群部署的完整方案
一、架构设计原理 分布式数据分片 哈希槽机制:Redis Cluster 将数据划分为 16384 个槽位,每个主节点负责部分槽位(如主节点1管理槽0-5460,主节点2管理5461-10922等)。 自动负载均衡:数据按哈希值分配…...
C++项目:高并发内存池_上
目录 1. 项目介绍 2. 内存池概念 2.1 池化技术 2.2 内存池和内存碎片 2.3 细看malloc 3. 定长内存池的实现 ObjectPool.hpp 4. 高并发内存池框架 5. thread cache测试 5.1 thread cache框架 5.2 ConcurrentAlloc.hpp 6. central cache测试 6.1 central cache框架 …...
『Plotly实战指南』--折线图绘制基础篇
在数据分析的世界中,折线图是一种不可或缺的可视化工具。 它能够清晰地展示数据随时间或其他变量的变化趋势,帮助我们快速发现数据中的模式、趋势和异常。 无论是金融市场分析、气象数据监测,还是业务增长趋势预测,折线图都能以直…...
【css酷炫效果】纯CSS实现波浪形分割线
【css酷炫效果】纯CSS实现波浪形分割线 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u011561335/90492023 缘 创作随缘,不定时更新。 创作背景 刚看到csdn出活动了&…...
【资料分享】全志科技T113-i全国产(1.2GHz双核A7 RISC-V)工业核心板规格书
核心板简介 创龙科技SOM-TLT113 是一款基于全志科技T113-i 双核ARM Cortex-A7 玄铁C906 RISC-V HiFi4 DSP 异构多核处理器设计的全国产工业核心板,ARM Cortex-A7 处理单元主频高达1.2GHz。核心板 CPU、ROM、RAM、电源、晶振等所有元器件均采用国产工业级方案&…...
Coco AI 智能检索 Hugo Blog 集成指南
在此前的文章中,我们介绍了如何使用 Coco Server 连接 Notion,实现智能内容检索。本次,我们将进一步探索如何在 Coco Server 最新版本 中集成 Hugo Site,以便对 Hugo 站点 进行高效检索。 Coco Server 部署方式 要在本地或服务器…...
【MySQL数据库】多表查询(笛卡尔积现象,联合查询、内连接、左外连接、右外连接、子查询)-通过练习快速掌握法
在DQL的基础查询中,我们已经学过了多表查询的一种:联合查询(union)。本文我们将系统的讲解多表查询。 笛卡尔积现象 首先,我们想要查询emp表和stu表两个表,按照我们之前的知识栈,我们直接使用…...
jmeter将返回的数据写入csv文件
举例说明,我需要接口返回体中的exampleid与todoid的数据信息(使用边界提取器先将其提取),并将其写入csv文件进行保存 使用后置处理器BeanShell 脚本实例如下 import java.io.*;// 设置要写入的文件路径 String filePath "…...
AI如何在财务工作中提升效率的一些看法
文章目录 1. 自动化重复性任务2. 财务预测与分析3. 欺诈检测与风险管理4. 智能报表与决策支持5. 税务管理优化6. 提升团队协作与客户体验未来的趋势与挑战结论 随着人工智能(AI)技术的迅猛发展,其正全方位地革新各行各业的运作模式࿰…...
OpenCV入门指南:从安装到基本操作
引言 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它包含了数百种计算机视觉算法,广泛应用于图像处理、视频分析、物体检测、人脸识别等领域。本文将带你从安装OpenCV开始,逐步了解其基…...
简单以太网配置
display arp //查看路由器mac地址 交换机配置命令: system-view // 从用户视图进入系统视图 dis mac-address //查看mac地址表 路由器配置命令: system-view // 从用户视图进入系统视图 int GigabitEthernet 0/0/0 //进入G口 0/0/0 进入之后配置网关: ip addre…...
蓝桥杯嵌入式组第十四届省赛题目解析+STM32G431RBT6实现源码
文章目录 1.题目解析1.1 分而治之,藕断丝连1.2 模块化思维导图1.3 模块解析1.3.1 KEY模块1.3.2 LED模块1.3.3 LCD模块1.3.4 TIM模块1.3.4.1 频率变化处理1.3.4.1 占空比计算 1.3.5 ADC模块 2.源码2.1cubemx配置3.第十四届题目 前言:STM32G431RBT6实现嵌入…...
让双向链表不在云里雾里
又来博客留下我的足迹了,哈哈哈,这次是对于双向链表的理解 目录 创建双向链表: 申请结点: 双向链表初始化: 双向链表插入结点: 双向链表删除结点: 双向链表的打印: 双向链表…...
基于django+vue的购物商城系统
开发语言:Python框架:djangoPython版本:python3.8数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 系统首页 热卖商品 优惠资讯 个人中心 后台登录 管理员功能界面 用户管理 商品分类管理…...
在Vue3中使用Echarts的示例
1.常用-引用ts文件方式 1.1 导出ts文件-一个简单的柱状图 export const baseBarChart (xdata: string[], data: number[][], legendData: string[]) > {if (data.length 0) {return noData;}// 定义颜色数组const color [#00CCCC,#FF9900,#1677DC,#FF6666,#B366FF,#666…...
TCP协议的多线程应用、多线程下的网络编程
DAY13.2 Java核心基础 多线程下的网络编程 基于单点连接的方式,一个服务端对应一个客户端,实际运行环境中是一个服务端需要对应多个客户端 创建ServerSocketNable类,多线程接收socket对象 public class ServerSocketNable implements Run…...
每日学习Java之一万个为什么(待补充)
Git分支操作 git branch 分支名 git branch -v git checkout -b 分支名 git checkout 分支名 git merge 分支名 git branch -d | -D 分支名Git冲突 git同名文件合并的最基本单位是行。同名文件同一行不同就会发生冲突。 解决办法:及时沟通,手动更改&…...
设计C语言的单片机接口
一、主要内容 (一)控制引脚 1、定义管脚 // 定义管脚的结构体 struct pin{ int id; // 管脚编号 int mode; // 模式,输入为1,输出为0 int pull; // 输入电阻 int driver; // 功率 } 2、输出电平 语法: void pin_output(s…...
博客迁移----宝塔面板一键迁移遇到问题
前景 阿里云轻量级服务器到期了,又免费领了个ESC, 安转了宝塔面板。现在需要迁移数据,使用宝塔面板一键迁移功能,完成了数据的迁移,改了域名的解析,现在进入博客是显示502 bad grateway 宝塔搬家参考链接…...
抽象工厂模式 (Abstract Factory Pattern)
抽象工厂模式 (Abstract Factory Pattern) 是一种创建型设计模式,它提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 一、基础 1. 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 2. …...
LeetCode 第14~16题
目录 LeetCode 第14题:最长公共前缀 LeetCode 第15题:三数之和 LeetCode 第16题:最接近的三数之和 LeetCode 第14题:最长公共前缀 题目描述 编写一个函数来查找字符数组中的最长公共前缀。如果不存在公共前缀,返回字符…...
深入了解Linux —— git三板斧
版本控制器git 为了我们方便管理不同版本的文件,就有了版本控制器; 所谓的版本控制器,就是能够了解到一个文件的历史记录(修改记录);简单来说就是记录每一次的改动和版本迭代的一个管理系统,同…...
再学:abi编码 地址类型与底层调用
目录 1.内置全局变量及函数 2.abi 3.地址类型 4.transfer 1.内置全局变量及函数 2.abi data就是abi编码 abi描述:以json格式表明有什么方法 3.地址类型 4.transfer x.transfer:合约转给x call 和 delegatecall 是 Solidity 中用于底层合约调用的函数࿰…...
Redis的消息队列是怎么实现的
Redis 本身并不是一个专门的消息队列系统,但它的 List、Pub/Sub 和 Stream 数据结构可以用来实现消息队列的功能。以下是 Redis 实现消息队列的几种常见方式: 1. 基于 List 实现消息队列 Redis 的 List 是一个双向链表,支持在头部和尾部进行高效的插入和删除操作,非常适合…...
图论入门【数据结构基础】:什么是树?如何表示树?
图论是计算机科学和数学中的一个重要分支,研究图的结构及其性质。之前我们介绍了图的基本概念和表示:图论入门【数据结构基础】:什么是图?如何表示图?,本文将介绍树的基本概念、性质及其在计算机科学中的应…...
微信小程序订阅消息发送消息,点击消息进入小程序页面
1、在小程序官网订阅消息选用或创建消息模板获取模板ID可多个 如图: 2、微信小程序前端页面发送请求订阅权限 请求模板id的权限可以是一个可以是多个,用户同意订阅,获取code传递给后端——后端拿到code生成唯一的openid用于发送订阅消息 注…...
基于小参数量大语言模型(Small Language Models) ---- 在制造业落地降本增效应用:可行性研究初探
文章大纲 一、引言二、小参数量模型概述基本技术要求小参数量大语言模型在制造业场景中的适用性分析(一)排产优化(二)错误根因分析三、制造业小参数量大语言模型开源解决方案简介Bert 系列 模型Google微软MetaMistral AI国产解决方案四、技术实现方案进行逻辑(一)模型选择…...
pandas中excel自定义单元格颜色
writerpd.ExcelWriter(filepathf05教师固定学生占比1月{today}.xlsx,engineopenpyxl) df.to_excel(writer,sheet_name明细) piv1.to_excel(writer,sheet_name1月分布) wswriter.book.create_sheet(口径) ws.cell(1,1).value综合占比: ws.cell(1,2).value固定学生占比…...
MySQL事务:确保数据一致性的关键机制
目录 1. 为什么需要事务? 2. 什么是事务? 3. 事务的四大特性 3.1 原子性(Atomicity) 3.2 一致性(Consistency) 3.3 隔离性(Isolation) 3.4 持久性(Durability&…...
图论入门【数据结构基础】:什么是图?如何表示图?
图(Graph) 是一种非线性数据结构,用于表示对象之间的关系。图由 顶点(Vertex) 和 边(Edge) 组成,其中顶点表示对象,边表示对象之间的关系。图广泛应用于计算机科学、数学…...
SpringBoot中使用AJ-Captcha实现行为验证码(滑动拼图、点选文字)
简介 AJ-Captcha行为验证码,包含滑动拼图、文字点选两种方式,UI支持弹出和嵌入两种方式。后端提供Java、Golang实现,前端提供了php、angular、html、vue、uni-app、flutter、android、ios等代码示例。点击前往AJ-Captcha代码仓库 引入Maven…...
【国际研讨会】2025年3-5月通信、算法、电气工程、自动化等领域国际学术会议征稿开启!大型学术盛宴!
【国际研讨会】2025年3-5月通信、算法、电气工程、自动化等领域国际学术会议征稿开启!大型学术盛宴! 【国际研讨会】2025年3-5月通信、算法、电气工程、自动化等领域国际学术会议征稿开启!大型学术盛宴! 文章目录 【国际研讨会】…...
AI战略家:X厂三年复盘大纲——业务与组织双视角深度拆解
一、业务负责人视角:从0到1与从1到100的核心能力模型 (一)阶段能力要求与问题预判 1. 从0到1:破局能力 核心能力升级框架: 需求洞察三阶漏斗: 行业需求池:广泛收集行业内的各种需求ÿ…...
LuaJIT 学习(4)—— FFI 语义
文章目录 C Language SupportC Type Conversion RulesConversions from C types to Lua objects例子:访问结构体成员 Conversions from Lua objects to C typesConversions between C types例子:修改结构体成员 Conversions for vararg C function argum…...
剑指 Offer II 078. 合并排序链表
comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20078.%20%E5%90%88%E5%B9%B6%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8/README.md 剑指 Offer II 078. 合并排序链表 题目描述 给定一个链表数组,每个链…...
go回调函数的使用
在Go语言中,回调函数可以有参数,也可以没有参数。它们的定义和使用方式略有不同,但本质上都是将函数作为参数传递给另一个函数,并在适当的时候调用它。以下是带参数和不带参数的回调函数的示例和说明。 1. 不带参数的回调函数 不…...
CBNet:一种用于目标检测的复合骨干网架构之论文阅读
摘要 现代顶级性能的目标检测器在很大程度上依赖于骨干网络,而骨干网络的进步通过探索更高效的网络结构带来了持续的性能提升。本文提出了一种新颖且灵活的骨干框架——CBNet,该框架利用现有的开源预训练骨干网络,在预训练-微调范式下构建高…...
k8s中PAUSE容器与init容器比较 local卷与hostpath卷比较
目录 一、PAUSE容器与INIT容器比较 1. Pause 容器 作用 特点 示例 2. Init 容器 作用 特点 示例 3. Pause 容器 vs Init 容器 4. 总结 这两个哪个先启动呢? 详细启动顺序 为什么 Pause 容器最先启动? 示例 总结 二、local卷与hostpath卷…...
施耐德PLC仿真软件Modbus tcp通讯测试
安装仿真软件:EcoStruxure™ Control Expert - PLC 仿真器 下载地址:https://www.schneider-electric.cn/zh/download/document/EIO0000001719/ 配置CPU: 切换至仿真模式,系统托盘中出现仿真器图标 新建变量test,地址…...
TCP、UDP协议的应用、ServerSocket和Socket、DatagramSocket和DatagramPacket
DAY13.1 Java核心基础 TCP协议 TCP 协议是面向连接的运算层协议,比较复杂,应用程序在使用TCP协议之前必须建立连接,才能传输数据,数据传输完毕之后需要释放连接 就好比现实生活中的打电话,首先确保电话打通了才能进…...
【HarmonyOS Next】常见的字节转换
【HarmonyOS Next】常见的字节转换 字节转换、位运算在实际开发中具有广泛的应用价值,特别是在处理字节级数据时发挥着重要作用。例如,在网络通信中用于大小端序转换,在数据解析时进行位提取操作。这些特性使得位运算在USB通信、蓝牙&#x…...
Redis-锁-商品秒杀防止超卖
一、秒杀(Seckill) 1. 定义 秒杀:短时间内(如1秒内)大量用户同时抢购 限量低价商品 的营销活动。典型场景:双11热门商品抢购、小米手机首发、演唱会门票开售。 2. 技术挑战 挑战点说明后果…...
RHCE(RHCSA复习:npm、dnf、源码安装实验)
七、软件管理 7.1 rpm 安装 7.1.1 挂载 [rootlocalhost ~]# ll /mnt total 0 drwxr-xr-x. 2 root root 6 Oct 27 21:32 hgfs[rootlocalhost ~]# mount /dev/sr0 /mnt #挂载 mount: /mnt: WARNING: source write-protected, mounted read-only. [rootlocalhost ~]# [rootlo…...
KNN算法性能优化技巧与实战案例
KNN算法性能优化技巧与实战案例 K最近邻(KNN)在分类和回归任务中表现稳健,但其计算复杂度高、内存消耗大成为IT项目中的主要瓶颈。以下从 算法优化、数据结构、工程实践 三方面深入解析性能提升策略,并附典型应用案例。 一、核心性…...
安装并使用anaconda(宏观版)
conda安装 windows 安装 1 官网下载-下载地址 2 配置环境 - 安装目录 bin,script 三个填入环境变量(windows “系统属性” -> “高级系统设置” -> “环境变量” ) 这些值可以被运行在操作系统上的程序使用。它是一个通用的概念,在不同的操作系统和应用程序…...