百度paddlepaddle
paddleocr下pp-structure包含了版面分析及表格解析两项工作,本文是对表格解析的技术详述。
代码:
https://github.com/PaddlePaddle/PaddleOCR
简要概览:
PaddleOCR新发版v2.2:开源版面分析与轻量化表格识别_飞桨PaddlePaddle的博客-CSDN博客
RARE
百度paddlepaddle包含表格解析功能,被称为RERE算法。RARE算法原本用于进行文本识别,是一个img2seq任务,修改该网络head部分,分成表格描述和单元格定位两个任务,这两个任务共享了backbone的输出及head中一部分attention信息。“图片由表格结构和cell坐标预测模型拿到表格的结构信息和单元格的坐标信息”,最后输出表格的HTML描述。
一个完整的表格解析工程需要用到四个模型:版面分析模型、文本定位模型、文本识别模型、表格结构解析模型。
版面分析模型:飞桨用到了yolov2检测模型,对文档图片中的文本、表格、图片、标题与列表区域进行检测。当前主流是用分割做。
文本定位模型、文本识别模型:可使用其他定位识别模型。
表格结构解析模型:该技术的精髓所在。

如何进行训练:
python3 tools/train.py -c configs/table/table_mv3.yml
所有的模型训练都会用到这个train文件,可以视为一个主分支,根据配置文件调用不同的次分支。
# 统一化的处理配置、创建文件夹等
config, device, logger, vdl_writer = program.preprocess(is_train=True)
# 加载数据集、后处理、搭建模型、损失、优化器、执行训练等
main(config, device, logger, vdl_writer)
如何进行推理:
python3 ppstructure/table/predict_table.py
--det_model_dir=./inference/ch_PP-OCRv2_det_infer # 检测模型
--rec_model_dir=./inference/ch_PP-OCRv2_rec_infer # 识别模型
--table_model_dir=./inference/en_ppocr_mobile_v2.0_table_structure_infer # 表格结构识别模型
--image_dir=./doc/imgs/163558403291484de11ac8c.jpg # 测试图片
--rec_char_dict_path=./ppocr/utils/ppocr_keys_v1.txt # 识别词表,6623字符
--table_char_dict_path=./ppocr/utils/dict/table_structure_dict.txt # 表格结构词表,实际只用其中28个表格描述符
--det_limit_side_len=960 # 两个参数限制图像最短边为960,否则resize
--det_limit_type=min
--output ./output/table # 输出表格文件路径
推理中的det_limit_side_len与det_limit_type参数:
参数默认设置为`limit_type='max', det_limit_side_len=960`。表示网络输入图像的最长边不能超过960,如果超过这个值,会对图像做等宽比的resize操作,确保最长边为`det_limit_side_len`。
设置为`limit_type='min', det_limit_side_len=960` 则表示限制图像的最短边为960。
表格结构词表
table_structure_dict.txt 第0行是 277 28 1267 1186,第1行到277行为表格内字符,实际未用到,第278行开始28个为表格结构字符。限制了这个可解析表格的大小空间跨行跨列最大为10,没有跨1行或跨1列的字符。
词表中有28种表格结构符,模型为30分类,在分类中argmax=1,为,argmax=0、29 代表beg、end。
单元格开始
| 单元格结束
colspan="5". # 横跨5列
>
colspan="2"
colspan="3"
rowspan="2"。 # 横跨2行
colspan="4"
colspan="6"
rowspan="3"
colspan="9"
colspan="10"
colspan="7"
rowspan="4"
rowspan="5"
rowspan="9"
colspan="8"
rowspan="8"
rowspan="6"
rowspan="7"
rowspan="10"
不包含的html描述:
加粗文本
模型的结构
main函数调用build_model调用BaseModel,先后进行输入预处理(表格解析没有做这步)、backbone、neck(表格解析没有这一步)、head、输出
paddleocr/PaddleOCR-release-2.4/ppocr/modeling/architectures/__init__.py 调用BaseModel
配置文件模型参数为:
Architecture:
model_type: table
algorithm: TableAttn
Backbone:
name: MobileNetV3
scale: 1.0
model_name: large
Head:
name: TableAttentionHead
hidden_size: 256
l2_decay: 0.00001
loc_type: 2
max_text_length: 100
max_elem_length: 800
max_cell_num: 500
很多paper中经常把一个网络分为几个部分组成backbone、head、neck等深度学习中的术语解释_t20134297的博客-CSDN博客_深度学习neck
backbone:主干网络,经常是resnet、vgg这种成熟有预训练模型的结构
neck:放在backbone和head间,提取更好的特征
head:预测
bottleneck:瓶颈,输出维度小于输入维度,用于降维
backbone内部结构
为了轻量化,build_backbone为mobilenetv3,参考性不大
PaddleOCR-release-2.4/ppocr/modeling/backbones/rec_mobilenet_v3.py
Attention内部结构
PaddleOCR-release-2.4/ppocr/modeling/heads/table_att_head.py
self.head.out_channels= TableAttentionHead(
(structure_attention_cell): AttentionGRUCell(
(i2h): Linear(in_features=960, out_features=256, dtype=float32)
(h2h): Linear(in_features=256, out_features=256, dtype=float32)
(score): Linear(in_features=256, out_features=1, dtype=float32)
(rnn): GRUCell(990, 256)
)
(structure_generator): Linear(in_features=256, out_features=30, dtype=float32)
(loc_fea_trans): Linear(in_features=256, out_features=801, dtype=float32)
(loc_generator): Linear(in_features=1216, out_features=4, dtype=float32)
)
获取结构信息
第一步切片获取Attention:
(outputs, hidden), alpha = self.structure_attention_cell(hidden, fea, elem_onehots)
第二步将Attention结果进行cat:
output = paddle.concat(output_hiddens, axis=1)
第三步线性层获取结构信息:
structure_probs = self.structure_generator(output)
structure_probs = F.softmax(structure_probs)
输出维度为801*30
获取定位信息,比获取结构信息多了线性层:
第一步基于线性层处理出入特征:
loc_fea = self.loc_fea_trans(loc_fea)
第二步cat上面的Attention获得的output信息:
loc_concat = paddle.concat([output, loc_fea], axis=2)
第三步线性层获取坐标信息:
loc_preds = self.loc_generator(loc_concat)
loc_preds = F.sigmoid(loc_preds)
输出维度为801*4
坐标聚合
定位框和cell的对应关系基于下方2个度量计算,一个cell内多个定位框的排序按照先来后到排,推测是默认从上到下。
compute_iou函数计算Iou,distance函数计算角点距离
distances.append((distance(gt_box, pred_box), 1. - compute_iou(gt_box, pred_box)))
html转xlsx文件
后处理阶段build_post_process——TableLabelDecode
from tablepyxl import tablepyxl # tablepyxl将html读入excel
tablepyxl.document_to_xl(html_table, excel_path)
评估方式
理论上是用树编辑距离,但从build_metric——TableMetric来看,需要完全一致
for bno in range(batch_size):
all_num += 1
if (structure_probs[bno] == structure_labels[bno]).all():
correct_num += 1
损失
TableAttentionLoss由2部分组成
structure_loss :nn.CrossEntropyLoss
loc_loss:F.mse_loss 均方损失
可用loc_loss_giou:GIoU详解_景唯acr-CSDN博客_giou iou
损失权重:
structure_weight: 100.0 loc_weight: 10000.0
数据加载方式
main函数调用build_dataloader
加粗文本
在源码中,用识别模型的及,用的是识别模型的加粗文本识别能,但ch_PP-OCRv2_rec_infer并没有识别加粗文本的能力
HTML填充复原:
class TableSystem(object):
根据单元格开始字符所在的cell定位信息进行坐标聚合,从而进行文本聚合
if text in ['', ' |
文本信息填充到单元格结束字符前
if ' | ' in tag:
你可能感兴趣的:(计算机视觉,人工智能)
- DeepSeek:大模型时代的“破局者”
qq_44233281
ai深度学习人工智能
DeepSeek,是谁?DeepSeek,中文名深度求索,是一家成立于2023年7月17日的创新型科技公司,由知名量化资管巨头幻方量化创立,法定代表人系裴湉。公司专注于开发先进的大语言模型(LLM)和相关技术,致力于在人工智能领域实现技术突破和创新应用。在成立后的短时间内,DeepSeek取得了令人瞩目的成绩。2024年1月5日,发布首个包含670亿参数的大模型DeepSeekLLM,该模型从零开
- 脑洞打开话题:deepseek这么火,什么时候能完全代替人类?
噔噔噔噔@
网络
AI完全代替人类是一个复杂且充满争议的话题,涉及技术、伦理、社会和经济等多个方面。目前来看,AI在某些领域已经表现出超越人类的能力,但要完全代替人类仍然面临许多挑战和限制。以下是关于AI何时可能完全代替人类的一些分析和思考:1.技术层面的限制尽管AI在某些特定任务上已经超越了人类(如图像识别、语音识别、围棋等),但要完全代替人类,AI需要在以下几个方面取得突破:通用人工智能(AGI)目前的AI主要
- 未来至少十年时间里,哪些行业的岗位更有发展前景且很难被人工智能替代?
向贤
人工智能人工智能
未来至少十年时间里,哪些行业的岗位更有发展前景且很难被人工智能替代?在人工智能技术快速迭代的背景下,未来十年内,以下六大类行业因其对人类独特能力的依赖,将展现出强大的抗替代性,并成为具有长期发展潜力的领域:一、医疗健康行业:生命科学与人文关怀的交织复杂决策与不确定性应对医学诊断需要结合患者个体差异、病史和社会背景进行综合判断,AI虽能辅助影像识别和数据分析,但面对突发并发症或罕见病例时,医生的临床
- AI人工智能机器学习之监督线性模型
rockfeng0
人工智能机器学习sklearn
1、概要 本篇学习AI人工智能机器监督学习框架下的线性模型,以LinearRegression线性回归和LogisticRegression逻辑回归为示例,从代码层面测试和讲述监督学习中的线性模型。2、监督学习之线性模型-简介监督学习和线性模型是的两个重要概念。监督学习是一种机器学习任务,其中模型在已标记的数据集上进行训练。线性模型是一类通过线性组合输入特征来进行预测的模型。线性模型的基本形式可
- 大数据模型:技术赋能,引领未来
大模型教程
人工智能AI大模型大模型语言模型
随着互联网、物联网、人工智能等技术的飞速发展,我们正身处一个数据爆炸的时代。数据,已经成为这个时代最为宝贵的资源之一。而如何挖掘和利用这些海量数据,为企业和社会创造价值,正是大数据模型所追求的目标。本文将从以下几个方面对大数据模型进行探讨:概述、技术原理、应用场景、挑战与发展趋势。一、概述大数据模型是一种基于数据挖掘和机器学习技术的分析方法,通过对海量数据进行处理和分析,挖掘出有价值的信息和知识,
- 人工智能深度学习系列—深入探索KL散度:度量概率分布差异的关键工具
学步_技术
自动驾驶人工智能人工智能深度学习自动驾驶机器学习
人工智能深度学习系列—深度解析:交叉熵损失(Cross-EntropyLoss)在分类问题中的应用人工智能深度学习系列—深入解析:均方误差损失(MSELoss)在深度学习中的应用与实践人工智能深度学习系列—深入探索KL散度:度量概率分布差异的关键工具人工智能深度学习系列—探索余弦相似度损失:深度学习中的相似性度量神器人工智能深度学习系列—深度学习中的边界框回归新贵:GHM(GeneralizedH
- 点云配准(点云拼接)论文综述
点云SLAM
点云数据处理技术点云数据处理点云配准DeepICPICP深度学习配准方法特征匹配
点云配准(点云拼接)论文综述1.引言点云配准(PointCloudRegistration)是三维计算机视觉与机器人感知领域的核心任务,其目标是通过几何变换将多个点云对齐至统一坐标系,形成完整的场景表示。该技术广泛应用于自动驾驶、增强现实、工业检测、医学影像等领域。随着传感器技术(如LiDAR、RGB-D相机)的进步与深度学习的发展,点云配准方法经历了从传统优化算法到数据驱动模型的演变。本文系统综
- 解读 DeepSeek 关键 RL 算法 GRPO
进一步有进一步的欢喜
LLM算法DeepSeekGRPO
DeepSeekGRPO:面向超大规模RLHF的梯度正则化策略优化算法引言在当下人工智能蓬勃发展的浪潮里,DeepSeek无疑是一颗耀眼的明星,频繁出现在各类科技前沿讨论中,热度持续攀升。从惊艳的模型表现,到不断拓展的应用场景,DeepSeek正以强劲之势重塑着行业格局。大家不难发现,无论是复杂的自然语言处理任务,还是充满挑战的智能推理难题,DeepSeek都能展现出卓越的性能。而这斐然成绩的背后
- 详细介绍人工智能学习框架
日记成书
反正看不懂系列人工智能
人工智能学习框架是开发者用于构建、训练和部署机器学习模型的核心工具。以下从框架分类、核心框架介绍、学习方法三个维度展开详解:一、主流人工智能框架全景图(一)基础框架层TensorFlow(Google)核心优势:工业级部署能力,支持移动端(TFLite)、浏览器(TF.js)、服务器(TFServing)特色功能:SavedModel格式跨平台兼容,XLA编译器优化计算图适用场景:生产环境部署、大
- Python常见库的使用
浪子西科
Pythonpython开发语言
文章目录人工智能与机器学习1.NumPy2.Pandas3.Scikit-learn4.TensorFlow5.PyTorch数据可视化1.Matplotlib2.Seaborn网络请求与爬虫1.Requests2.Scrapy自动化测试1.unittest2.pytest自然语言处理1.NLTK2.SpaCy数据库操作1.SQLite32.SQLAlchemy日期和时间处理1.datetime2
- 使用 yolov8 进行对象检测
算法资料吧!
YOLO
在计算机视觉领域,YOLOv8对象检测确实以其超高的准确性和速度而脱颖而出。它是YOLO系列的最新版本,以能够实时检测物体而闻名。YOLOv8凭借其一流的对象检测将Web应用程序、API和图像分析提升到一个新的水平。在本文中,我们将了解如何利用yolov8进行对象检测。YOLO概述YOLO(YouOnlyLookOnce)是一种改变游戏规则的对象检测算法,于2015年问世,以其一次闪电般快速处理整
- 中国AI震撼教育界!DeepSeek让个性化学习“弯道超车”?
盼达思文体科创
经验分享
引言家人们,最近科技圈简直炸锅了!中国AI的一股强大力量——DeepSeek横空出世,它带来的震撼可远不止于科技领域,更是像一颗重磅炸弹,投向了传统的教育行业。在过去,教育常常是“一刀切”的模式,就像给所有学生都穿上同样尺码的鞋子,合适与否只有学生自己知道。而如今,随着人工智能技术的飞速发展,个性化学习成为了教育界追求的新目标。DeepSeek的出现,无疑为实现这一目标带来了新的曙光。DeepSe
- 一文读懂智能体架构:模块化设计如何提升效率与灵活性
功城师
人工智能大语言模型自然语言处理大模型深度学习智能体LLM
随着人工智能技术的快速发展,智能体在企业知识管理、客户服务、业务数据分析等领域的应用愈加广泛。一个优秀的智能体设计不仅要具备高效处理用户需求的能力,还需要灵活适配不同场景的任务需求。本文将通过一个智能体的具体设计流程图,结合实际案例,详细解析其架构设计、功能实现及背后的技术逻辑,帮助大家深入了解智能体的构建过程。一、智能体设计的核心思路在智能体的设计过程中,最关键的是对用户需求的精准理解和快速响应
- CSDN 博客文章:Genesis 安装指南与环境配置(Python 3.9+)
qq_27492797
python开发语言
引言随着人工智能和机器学习的蓬勃发展,各式各样的框架和工具如雨后春笋般涌现,为科研人员和开发者的创新之路提供强大支持。今天,我们聚焦于Genesis——一个在物理模拟、计算机图形学以及机器人领域展现出卓越潜力的先进平台。需要特别说明的是,目前Genesis项目中备受期待的对话式生成AI接口,当前仍处于概念展示阶段,仅存在于PPT之中,尚未对外开放,大家在关注其发展时需留意这一情况。本文将着重介绍如
- 星河飞雪网络安全学习笔记-安全见闻1-3
芝士布偶
网络安全
安全见闻-了解安全知识编程语言日常编程语言C语言:一种通用的、面向过程的编程语言,广泛运用于系统软件呵呵嵌入式开发C++:面向对象的编程语言,常用于游戏开发、高性能计算等领域Java:一种广泛使用的面向对象编程语言、具有跨平台性、应用于企业级应用开发等Python(萌新推荐):简洁易学,拥有丰富的库,适用于数据分析、人工智能、web开发等Javascript:主要用于网页前端开发,也可用于服务器端
- 《人工智能之高维数据降维算法:PCA与LDA深度剖析》
机器学习人工智能
在人工智能与机器学习蓬勃发展的当下,数据处理成为关键环节。高维数据在带来丰富信息的同时,也引入了计算复杂度高、过拟合风险增大以及数据稀疏性等难题。降维算法应运而生,它能将高维数据映射到低维空间,在减少维度的同时最大程度保留关键信息。主成分分析(PCA)与线性判别分析(LDA)作为两种常用的降维算法,在人工智能领域应用广泛。本文将深入探讨它们的原理。PCA:无监督的降维利器核心思想PCA基于最大方差
- 物联网+人工智能:发那科、思科、罗克韦尔自动化联合推出FIELD system
weixin_33962621
人工智能嵌入式
2016年11月2日,工博会,发那科与全球科技领导厂商思科、全球最大的专注于工业自动化与信息化公司罗克韦尔自动化,共同为FIELDsystem进行中国区的合作发布,实现工厂中设备的智能互联,推动智能制造的发展。发那科株式会社会长稻叶善治、发那科株式会社社长山口贤治、发那科株式会社董事、专务执行役员兼机器人事业本部本部长稻叶清典、上海发那科机器人有限公司总经理钱晖、思科系统(中国)网络技术有限公司副
- 使用django调用deepseek api,搭建ai网站
陈王卜
人工智能
一、deepseek简介DeepSeek是一家人工智能公司,专注于开发先进的人工智能模型和技术。以下是关于DeepSeek的一些详细介绍:1.公司背景DeepSeek由杭州深度求索人工智能基础技术研究有限公司开发,致力于通过创新的技术和算法,推动人工智能领域的发展。2.技术与模型DeepSeek-V3:这是DeepSeek开发的一个大型语言模型,具有超过600B的参数,在多项性能指标上与国际顶尖模
- AI大模型时代,新手和程序员如何转型入局AI行业?
大模型RAG实战
人工智能aiagi程序员转行
在人工智能(AI)的浪潮中,大模型技术正以前所未有的速度发展,并在各个领域展现出其强大的应用潜力。在近期的全国两会上,“人工智能”再次被提及,并成为国家战略的焦点。这一举措预示着在接下来的十年到十五年里,人工智能将获得巨大的发展红利。技术革命正在从“互联网+”向“人工智能+”逐步迈进,我们将迎来新一轮技术革新和人才需求的增长。毫无疑问,AI工程师将是未来最紧俏的岗位。对于想要进入AI领域的新手或转
- 深入探索 llama-cpp-python:在 LangChain 中启用本地 LLM 推理
aehrutktrjk
llamapythonlangchain
引言在人工智能的迅猛发展中,大语言模型(LLM)扮演着不可或缺的角色。Llama.cpp是一个用于推理许多LLM模型的开源库,它的Python绑定——llama-cpp-python提供了在Python中更加便捷的接口。这篇文章旨在介绍如何在LangChain中运行llama-cpp-python,并探讨其安装和使用中的一些细节。主要内容1.安装llama-cpp-python首先,我们需要选择合
- GLake:优化GPU内存管理与IO传输的开源项目
2401_87458718
开源
GLake:突破GPU内存和IO瓶颈的利器在人工智能快速发展的今天,大模型训练和推理正面临着严峻的挑战。随着模型规模的不断扩大,GPU内存容量和IO带宽的增长速度已经远远跟不上AI模型规模的增长速度,形成了所谓的"内存墙"和"IO传输墙"。为了应对这些挑战,一个名为GLake的开源项目应运而生,旨在通过底层优化来突破GPU内存和IO传输的瓶颈。GLake简介GLake是一个专注于优化GPU内存管理
- OpenAI: 人工智能领域的领军企业
2401_87458718
人工智能
OpenAI简介OpenAI是一家位于美国旧金山的人工智能研究实验室,成立于2015年。作为人工智能领域的领军企业,OpenAI致力于开发安全友好的通用人工智能(AGI),其使命是确保人工通用智能能够造福全人类。自成立以来,OpenAI在自然语言处理、计算机视觉、强化学习等多个人工智能领域取得了突破性进展,推出了一系列广受关注的AI模型和产品。OpenAI的发展历程OpenAI由埃隆·马斯克、山姆
- Nginx + ElasticSearch + Kibana结合
周天祥
ElasticSearch大数据
Nginx+ElasticSearch+Kibana结合操作系统软件下载安装编译工具及库文件安装PCRE安装NginxElasticSearch配置Kibana配置Nginx配置启动Nginx对人工智能感兴趣点下面链接现在人工智能非常火爆,很多朋友都想学,但是一般的教程都是为博硕生准备的,太难看懂了。最近发现了一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默。所以忍不住分享一下给大家。点这
- DeepSeek:突破闭源封锁,引领大模型新时代
fanstinmsl
算法语言模型
近年来,人工智能领域蓬勃发展,大模型作为其中的核心技术,其重要性不言而喻。然而,大模型的训练和部署往往面临着硬件依赖性强、成本高昂、效率低下等挑战。DeepSeek的出现,为解决这些问题提供了全新的思路和方案。DeepSeek的核心优势:1.减少硬件依赖:DeepSeek通过算法优化和架构创新,降低了对高性能硬件的依赖,使得大模型的训练和部署可以在更广泛的硬件平台上进行,极大地降低了应用门槛。**
- 如何通过提示词更好地利用AI
lally.
人工智能
如何通过提示词工程释放AI的全部潜力:7个深度优化技巧前言:为什么提示词决定AI的输出质量?在人工智能对话系统的使用中,提示词(Prompt)就像开启宝藏的密码钥匙。研究表明,优化后的提示词可使输出质量提升300%(AIResearchLab,2023)。本指南将系统解析提示词设计的核心方法论,并提供可直接复用的模板库。一、基础构建:打造高效提示词的4大支柱1.1精准目标定位术原理分析:模糊指令导
- 2024年Agent AI:Agent AI的基本概念、关键技术、应用前景、未来展望
大模型部署
人工智能langchain程序员知识图谱LLMAI大模型编程
在2024年,人工智能领域迎来了一个新的里程碑——AgentAI的兴起。AgentAI,即代理智能,是一种能够感知并在不同领域和应用中采取行动的系统。它不仅是人工智能研究的一个新方向,更是通向人工通用智能(AGI)的一条充满希望的途径。本文将详细介绍AgentAI的基本概念、关键技术和应用前景。一、AgentAI的基本概念AgentAI,或称代理智能,是指一类能够感知环境、理解情境并在此基础上执行
- 终于明白了!人工智能、机器学习、深度学习、集成学习及大模型的定义与联系
大模型玩家
人工智能机器学习深度学习产品经理算法学习方法集成学习
在当今快速发展的科技领域,人工智能(ArtificialIntelligence,AI)、机器学习(MachineLearning,ML)、深度学习(DeepLearning,DL)、集成学习(EnsembleLearning)以及大模型(LargeModels)等概念频繁出现在人们的视野中。它们不仅推动了科技的进步,也深刻影响了社会生活的方方面面。本文将对这些概念进行全面解析,并探讨它们之间的联
- 学习心得体会:深入探讨大语言模型的世界——读《自然语言处理:大模型理论与实践》(预览版)有感
Nuyoah_610
自然语言处理学习语言模型
《自然语言处理:大模型理论与实践》(预览版)由赵宇教授编写,是一本深入探讨大语言模型世界的专业著作。作为一名正在学习和研究自然语言处理的学生,这本书为我提供了宝贵的理论基础和实践指导。《自然语言处理:大模型理论与实践》教材官网:首页|自然语言处理:大模型理论与实践赵宇教授简介西南财经大学教授,博导,四川省学术和技术带头人后备人选,金融智能与金融工程四川省重点实验室副主任,通用人工智能与数字经济创新
- AI工具 | 每个打工人必备的15款人工智能超级工具
Qingmu2024
AIGC(文本图像视频)特训营人工智能AIGC
咱们得面对一个残酷的事实:大多数“人工智能”工具本质上华而不实,往往没什么用。不过,还是有一些靠谱的人工智能平台,它们可不只是营销噱头。有些AI公司正试图改变游戏规则。人工智能工具让人们能够更聪明地工作,而不是更辛苦地劳作。如果你想知道未来有什么,那就来看看这10款人工智能工具吧,它们将彻底改变我们的工作方式。1.AI驱动的插画和动态设计网址:https://lottiefiles.com/lot
- 人人都看得懂的DeepSeek入门科普
程序员一一涤生
当大家都在好奇下一代AI会怎样改变我们的工作与生活时,中国公司DeepSeek正以惊人的速度和态度闯进大众视野。它究竟是什么,能做什么,又为何能在AI热潮里高调崭露头角?本文带你了解DeepSeek及其最新推出的两款大模型,顺便一起讨论它如何搅动整个AI行业的水面。1.DeepSeek是什么?DeepSeek=AI+国产+免费+开源+强大DeepSeek是一家专注通用人工智能(AGI)的中国科技公
- Java常用排序算法/程序员必须掌握的8大排序算法
cugfy
java
分类:
1)插入排序(直接插入排序、希尔排序)
2)交换排序(冒泡排序、快速排序)
3)选择排序(直接选择排序、堆排序)
4)归并排序
5)分配排序(基数排序)
所需辅助空间最多:归并排序
所需辅助空间最少:堆排序
平均速度最快:快速排序
不稳定:快速排序,希尔排序,堆排序。
先来看看8种排序之间的关系:
1.直接插入排序
(1
- 【Spark102】Spark存储模块BlockManager剖析
bit1129
manager
Spark围绕着BlockManager构建了存储模块,包括RDD,Shuffle,Broadcast的存储都使用了BlockManager。而BlockManager在实现上是一个针对每个应用的Master/Executor结构,即Driver上BlockManager充当了Master角色,而各个Slave上(具体到应用范围,就是Executor)的BlockManager充当了Slave角色
- linux 查看端口被占用情况详解
daizj
linux端口占用netstatlsof
经常在启动一个程序会碰到端口被占用,这里讲一下怎么查看端口是否被占用,及哪个程序占用,怎么Kill掉已占用端口的程序
1、lsof -i:port
port为端口号
[root@slave /data/spark-1.4.0-bin-cdh4]# lsof -i:8080
COMMAND PID USER FD TY
- Hosts文件使用
周凡杨
hostslocahost
一切都要从localhost说起,经常在tomcat容器起动后,访问页面时输入http://localhost:8088/index.jsp,大家都知道localhost代表本机地址,如果本机IP是10.10.134.21,那就相当于http://10.10.134.21:8088/index.jsp,有时候也会看到http: 127.0.0.1:
- java excel工具
g21121
Java excel
直接上代码,一看就懂,利用的是jxl:
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import
- web报表工具finereport常用函数的用法总结(数组函数)
老A不折腾
finereportweb报表函数总结
ADD2ARRAY
ADDARRAY(array,insertArray, start):在数组第start个位置插入insertArray中的所有元素,再返回该数组。
示例:
ADDARRAY([3,4, 1, 5, 7], [23, 43, 22], 3)返回[3, 4, 23, 43, 22, 1, 5, 7].
ADDARRAY([3,4, 1, 5, 7], "测试&q
- 游戏服务器网络带宽负载计算
墙头上一根草
服务器
家庭所安装的4M,8M宽带。其中M是指,Mbits/S
其中要提前说明的是:
8bits = 1Byte
即8位等于1字节。我们硬盘大小50G。意思是50*1024M字节,约为 50000多字节。但是网宽是以“位”为单位的,所以,8Mbits就是1M字节。是容积体积的单位。
8Mbits/s后面的S是秒。8Mbits/s意思是 每秒8M位,即每秒1M字节。
我是在计算我们网络流量时想到的
- 我的spring学习笔记2-IoC(反向控制 依赖注入)
aijuans
Spring 3 系列
IoC(反向控制 依赖注入)这是Spring提出来了,这也是Spring一大特色。这里我不用多说,我们看Spring教程就可以了解。当然我们不用Spring也可以用IoC,下面我将介绍不用Spring的IoC。
IoC不是框架,她是java的技术,如今大多数轻量级的容器都会用到IoC技术。这里我就用一个例子来说明:
如:程序中有 Mysql.calss 、Oracle.class 、SqlSe
- 高性能mysql 之 选择存储引擎(一)
annan211
mysqlInnoDBMySQL引擎存储引擎
1 没有特殊情况,应尽可能使用InnoDB存储引擎。 原因:InnoDB 和 MYIsAM 是mysql 最常用、使用最普遍的存储引擎。其中InnoDB是最重要、最广泛的存储引擎。她 被设计用来处理大量的短期事务。短期事务大部分情况下是正常提交的,很少有回滚的情况。InnoDB的性能和自动崩溃 恢复特性使得她在非事务型存储的需求中也非常流行,除非有非常
- UDP网络编程
百合不是茶
UDP编程局域网组播
UDP是基于无连接的,不可靠的传输 与TCP/IP相反
UDP实现私聊,发送方式客户端,接受方式服务器
package netUDP_sc;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Ine
- JQuery对象的val()方法执行结果分析
bijian1013
JavaScriptjsjquery
JavaScript中,如果id对应的标签不存在(同理JAVA中,如果对象不存在),则调用它的方法会报错或抛异常。在实际开发中,发现JQuery在id对应的标签不存在时,调其val()方法不会报错,结果是undefined。
- http请求测试实例(采用json-lib解析)
bijian1013
jsonhttp
由于fastjson只支持JDK1.5版本,因些对于JDK1.4的项目,可以采用json-lib来解析JSON数据。如下是http请求的另外一种写法,仅供参考。
package com;
import java.util.HashMap;
import java.util.Map;
import
- 【RPC框架Hessian四】Hessian与Spring集成
bit1129
hessian
在【RPC框架Hessian二】Hessian 对象序列化和反序列化一文中介绍了基于Hessian的RPC服务的实现步骤,在那里使用Hessian提供的API完成基于Hessian的RPC服务开发和客户端调用,本文使用Spring对Hessian的集成来实现Hessian的RPC调用。
定义模型、接口和服务器端代码
|---Model
&nb
- 【Mahout三】基于Mahout CBayes算法的20newsgroup流程分析
bit1129
Mahout
1.Mahout环境搭建
1.下载Mahout
http://mirror.bit.edu.cn/apache/mahout/0.10.0/mahout-distribution-0.10.0.tar.gz
2.解压Mahout
3. 配置环境变量
vim /etc/profile
export HADOOP_HOME=/home
- nginx负载tomcat遇非80时的转发问题
ronin47
nginx负载后端容器是tomcat(其它容器如WAS,JBOSS暂没发现这个问题)非80端口,遇到跳转异常问题。解决的思路是:$host:port
详细如下:
该问题是最先发现的,由于之前对nginx不是特别的熟悉所以该问题是个入门级别的:
? 1 2 3 4 5
- java-17-在一个字符串中找到第一个只出现一次的字符
bylijinnan
java
public class FirstShowOnlyOnceElement {
/**Q17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
* 1.int[] count:count[i]表示i对应字符出现的次数
* 2.将26个英文字母映射:a-z <--> 0-25
* 3.假设全部字母都是小写
*/
pu
- mongoDB 复制集
开窍的石头
mongodb
mongo的复制集就像mysql的主从数据库,当你往其中的主复制集(primary)写数据的时候,副复制集(secondary)会自动同步主复制集(Primary)的数据,当主复制集挂掉以后其中的一个副复制集会自动成为主复制集。提供服务器的可用性。和防止当机问题
mo
- [宇宙与天文]宇宙时代的经济学
comsci
经济
宇宙尺度的交通工具一般都体型巨大,造价高昂。。。。。
在宇宙中进行航行,近程采用反作用力类型的发动机,需要消耗少量矿石燃料,中远程航行要采用量子或者聚变反应堆发动机,进行超空间跳跃,要消耗大量高纯度水晶体能源
以目前地球上国家的经济发展水平来讲,
- Git忽略文件
Cwind
git
有很多文件不必使用git管理。例如Eclipse或其他IDE生成的项目文件,编译生成的各种目标或临时文件等。使用git status时,会在Untracked files里面看到这些文件列表,在一次需要添加的文件比较多时(使用git add . / git add -u),会把这些所有的未跟踪文件添加进索引。
==== ==== ==== 一些牢骚
- MySQL连接数据库的必须配置
dashuaifu
mysql连接数据库配置
MySQL连接数据库的必须配置
1.driverClass:com.mysql.jdbc.Driver
2.jdbcUrl:jdbc:mysql://localhost:3306/dbname
3.user:username
4.password:password
其中1是驱动名;2是url,这里的‘dbna
- 一生要养成的60个习惯
dcj3sjt126com
习惯
一生要养成的60个习惯
第1篇 让你更受大家欢迎的习惯
1 守时,不准时赴约,让别人等,会失去很多机会。
如何做到:
①该起床时就起床,
②养成任何事情都提前15分钟的习惯。
③带本可以随时阅读的书,如果早了就拿出来读读。
④有条理,生活没条理最容易耽误时间。
⑤提前计划:将重要和不重要的事情岔开。
⑥今天就准备好明天要穿的衣服。
⑦按时睡觉,这会让按时起床更容易。
2 注重
- [介绍]Yii 是什么
dcj3sjt126com
PHPyii2
Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。名字 Yii (读作 易)在中文里有“极致简单与不断演变”两重含义,也可看作 Yes It Is! 的缩写。
Yii 最适合做什么?
Yii 是一个通用的 Web 编程框架,即可以用于开发各种用 PHP 构建的 Web 应用。因为基于组件的框架结构和设计精巧的缓存支持,它特别适合开发大型应
- Linux SSH常用总结
eksliang
linux sshSSHD
转载请出自出处:http://eksliang.iteye.com/blog/2186931 一、连接到远程主机
格式:
ssh name@remoteserver
例如:
ssh [email protected]
二、连接到远程主机指定的端口
格式:
ssh name@remoteserver -p 22
例如:
ssh i
- 快速上传头像到服务端工具类FaceUtil
gundumw100
android
快速迭代用
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOExceptio
- jQuery入门之怎么使用
ini
JavaScripthtmljqueryWebcss
jQuery的强大我何问起(个人主页:hovertree.com)就不用多说了,那么怎么使用jQuery呢?
首先,下载jquery。下载地址:http://hovertree.com/hvtart/bjae/b8627323101a4994.htm,一个是压缩版本,一个是未压缩版本,如果在开发测试阶段,可以使用未压缩版本,实际应用一般使用压缩版本(min)。然后就在页面上引用。
- 带filter的hbase查询优化
kane_xie
查询优化hbaseRandomRowFilter
问题描述
hbase scan数据缓慢,server端出现LeaseException。hbase写入缓慢。
问题原因
直接原因是: hbase client端每次和regionserver交互的时候,都会在服务器端生成一个Lease,Lease的有效期由参数hbase.regionserver.lease.period确定。如果hbase scan需
- java设计模式-单例模式
men4661273
java单例枚举反射IOC
单例模式1,饿汉模式
//饿汉式单例类.在类初始化时,已经自行实例化
public class Singleton1 {
//私有的默认构造函数
private Singleton1() {}
//已经自行实例化
private static final Singleton1 singl
- mongodb 查询某一天所有信息的3种方法,根据日期查询
qiaolevip
每天进步一点点学习永无止境mongodb纵观千象
// mongodb的查询真让人难以琢磨,就查询单天信息,都需要花费一番功夫才行。
// 第一种方式:
coll.aggregate([
{$project:{sendDate: {$substr: ['$sendTime', 0, 10]}, sendTime: 1, content:1}},
{$match:{sendDate: '2015-
- 二维数组转换成JSON
tangqi609567707
java二维数组json
原文出处:http://blog.csdn.net/springsen/article/details/7833596
public class Demo {
public static void main(String[] args) { String[][] blogL
- erlang supervisor
wudixiaotie
erlang
定义supervisor时,如果是监控celuesimple_one_for_one则删除children的时候就用supervisor:terminate_child (SupModuleName, ChildPid),如果shutdown策略选择的是brutal_kill,那么supervisor会调用exit(ChildPid, kill),这样的话如果Child的behavior是gen_
|