65 | 架构范式:文本处理
许式伟
该思维导图由 AI 生成,仅供参考
你好,我是七牛云许式伟。
我们选择的问题是 “文本处理”。
计算机之所以叫计算机,是因为计算机的能力基本上就是“计算 +I/O”两部分。I/O 只是为了让计算机与物理世界打交道,它也是为计算服务的。所以数据是软件的灵魂,数据处理是软件的能力。
今天我们聊的文本处理,不是通用的数据处理能力,而是收敛在数据的 I/O 上。这里说的文本,是指写入到磁盘的非结构化数据。它可能真的是文本内容,比如 HTML 文档、CSS 文档;也可能是二进制内容,比如 Word 文档、Excel 文档。文本处理则是指对这类非结构化数据的处理过程,常见文本处理的需求场景有:
数据验证(Data Validation)。比如判断用户输入的文本是否合法,值的范围是否符合期望。
数据抽取(Data Extraction)。比如从某 HTML 页面中抽取出结构化的机票信息(什么时间,从哪里出发,到哪里去,价格几何等等)。
编译器(Compiler)。特殊地,在文本格式是某种语言的代码时,我们可以将文本编译成可执行的机器码,或虚拟机解释执行的字节码。当然我们也可以边解释文本的语义边执行。
……
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了作者在文本处理领域的技术演进历程,从金山实习时的文件格式设计和读写任务,到不同项目中的文本处理技术的演进,以及C++版本的TPL和Go语言版本TPL的诞生,以及BPL的创建。文章重点讨论了词法分析和语法分析的两个阶段,以及TPL实现的通用的Scanner + Parser机制。此外,文章还介绍了正则表达式在文本内容处理中的应用。总的来说,本文展示了作者在文本处理领域的丰富经验和技术成果,对于从事文本处理相关工作的技术人员具有一定的借鉴意义。 文章还讨论了二进制内容的通用处理范式,探讨了序列化机制和其在C++和Go语言中的应用。作者指出了序列化机制的过度设计,强调了在文件I/O的序列化机制中,严谨的数据格式定义比提供智能更为重要。此外,文章还介绍了BPL的设计思想和功能,展示了其与MongoDB官方采用的伪代码的一致性。最后,作者呼吁读者在工作中有意识地分析业务场景,提炼通用的需求场景形成架构范式的积累,以便更好地进行架构的正交分解,使业务迭代变得更加容易。 总的来说,本文内容丰富,涵盖了文本处理和二进制内容处理的多个方面,展示了作者在技术领域的深厚造诣和丰富经验,对于从事相关工作的技术人员具有一定的借鉴意义。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《许式伟的架构课》,新⼈⾸单¥68
《许式伟的架构课》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- 沫沫(美丽人生)许老师好 ,如果有两个服务A和B,A依赖于B,同时B也依赖于A,出现这种情况是属于循环依赖吗?这种情况的出现,是业务的正交分解没有做好吗?如果系统中出现大量的这种依赖,感觉系统的调用就成了复杂的网络结构 这种情况,重构应该怎么做呢?盼复!
作者回复: 循环依赖是从源代码层面的,不是运行时的网络调用。所以你说的不属于循环依赖。但如果大量存在两个服务之间的相互调用,解耦肯定也是没做好。高内聚低耦合,从功能内聚性看边界划分
2019-12-1727 - Aaron Cheung可运行的系统做重构 需要耗费不少时间 更需要团队支持😂
作者回复: 首先团队要有重构价值的共识,找到重构的步骤,然后才是执行。下一讲我们就是谈重构。
2019-12-172 - leslie"数据是软件的灵魂,文件是软件最重要的资产。"老师这话很经典:故而之前老师讲数据库时提出的是"中间件存储"时,通过大量的查阅资料和总结研究找到另外一个称呼"数据系统"。 从硬件层考虑"中间件存储"就是资产,软件层考虑“数据系统”就是灵魂。说个真实的案例,前段时间一个DB圈子的朋友数据库出问题,软件层各种排查做尽就是没看到问题,后来问题就处在硬件的存储。朋友问题处理完告诉我问题时我就猜测其硬件端的问题,我说你肯定是硬件的许多问题没考虑;朋友反问我为何知道,我告诉他我有5年以上核心机房的运维经验-这段经验帮助了我当问题出现时会从软硬件两方面去思考和找寻问题。 这个案例体现了老师所说的"数据是软件的灵魂,文件是软件最重要的资产。":当我们更高的角度和维度去思考时绕着这个核心其实就更加明白其价值、意义和处理方式。感谢老师今天的分享,跟随老师的教诲在学习中进步和成长,期待老师后续的分享。2019-12-177
- candy这篇没太看懂,编译原理需要好好学2021-09-023
- ifelse学习打卡2023-10-08归属地:浙江
- 木木厉害,顺手实现了一个语言。这篇评论怎么这么少。2021-08-16
- 王建新人对现实世界的原物进行信息化管理,大致有几个阶段过程:1,将现实原物加工成信息原料 比如形成思想语言或文章图画等 2,将信息原料存储 过去存储在大脑里纸上现在存储在电脑里 电脑里存成文本文档或富媒体 3,人以自身价值取向定义原料对应原物价值的特征值 结构化数据或人脸特征或嗓音特征 4,将特征值存储 结构化数据存在结构化表格或表格库里 以前是纸上画表现在是电脑里用结构化数据库 但图像或语音的特征值过去无法抽象出数字化的特征值 只能将数字富媒体原料存储在电脑里 5,在需要的时候获取第一原料特征值或群里原料特征值 结构化数据本身就是特征值存储,便于读取。而富媒体存储的是数字化原料,现在有了人工智能算法比对特征值 可以人类定义训练后找到某个原料中的特征值。 因为存的是富媒体文件,所以要先定位找到合适的富媒体原料文件,这就是非结构化数据文件管理。找到文件后或找文件的过程中,通过人工智能确定目标特征值所在的富媒体文件。另外,搜索引擎也是这个情况,即特征值预先完全没有抽象和存储在电脑里,只不过过去主要针对文本文件。非常感谢许大的文章,让我想到了上面内容。2020-11-131
收起评论