许式伟的架构课
许式伟
七牛云CEO
立即订阅
20237 人已学习
课程目录
已更新 75 讲 / 共 87 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 怎样成长为优秀的软件架构师?
免费
基础平台篇 (21讲)
01 | 架构设计的宏观视角
02 | 大厦基石:无生有,有生万物
03 | 汇编:编程语言的诞生
04 | 编程语言的进化
05 | 思考题解读:如何实现可自我迭代的计算机?
06 | 操作系统进场
07 | 软件运行机制及内存管理
08 | 操作系统内核与编程接口
09 | 外存管理与文件系统
10 | 输入和输出设备:交互的演进
11 | 多任务:进程、线程与协程
12 | 进程内协同:同步、互斥与通讯
13 | 进程间的同步互斥、资源共享与通讯
14 | IP 网络:连接世界的桥梁
15 | 可编程的互联网世界
16 | 安全管理:数字世界的守护
17 | 架构:需求分析 (上)
18 | 架构:需求分析 (下) · 实战案例
19 | 基础平台篇:回顾与总结
加餐 | 我看Facebook发币(上):区块链、比特币与Libra币
加餐 | 我看Facebook发币(下):深入浅出理解 Libra 币
桌面开发篇 (16讲)
20 | 桌面开发的宏观视角
21 | 图形界面程序的框架
22 | 桌面程序的架构建议
23 | Web开发:浏览器、小程序与PWA
24 | 跨平台与 Web 开发的建议
25 | 桌面开发的未来
26 | 实战(一):怎么设计一个“画图”程序?
27 | 实战(二):怎么设计一个“画图”程序?
28 | 实战(三):怎么设计一个“画图”程序?
29 | 实战(四):怎么设计一个“画图”程序?
30 | 实战(五):怎么设计一个“画图”程序?
31 | 辅助界面元素的架构设计
课外阅读 | 从《孙子兵法》看底层的自然法则
加餐 | 想当架构师,我需要成为“全才”吗?
32 | 架构:系统的概要设计
33 | 桌面开发篇:回顾与总结
服务端开发篇 (14讲)
34 | 服务端开发的宏观视角
35 | 流量调度与负载均衡
36 | 业务状态与存储中间件
37 | 键值存储与数据库
38 | 文件系统与对象存储
39 | 存储与缓存
40 | 服务端的业务架构建议
41 | 实战(一):“画图”程序后端实战
42 | 实战(二):“画图”程序后端实战
43 | 实战(三):“画图”程序后端实战
44 | 实战(四):“画图”程序后端实战
45 | 架构:怎么做详细设计?
46 | 服务端开发篇:回顾与总结
加餐 | 如何做HTTP服务的测试?
服务治理篇 (11讲)
47 | 服务治理的宏观视角
48 | 事务与工程:什么是工程师思维?
49 | 发布、升级与版本管理
50 | 日志、监控与报警
加餐 | 怎么保障发布的效率与质量?
51 | 故障域与故障预案
52 | 故障排查与根因分析
53 | 过载保护与容量规划
54 | 业务的可支持性与持续运营
55 | 云计算、容器革命与服务端的未来
56 | 服务治理篇:回顾与总结
架构思维篇 (12讲)
57 | 心性:架构师的修炼之道
用户故事 | 站在更高的视角看架构
58 | 如何判断架构设计的优劣?
59 | 少谈点框架,多谈点业务
60 | 架构分解:边界,不断重新审视边界
加餐 | 实战:“画图程序” 的整体架构
61 | 全局性功能的架构设计
62 | 重新认识开闭原则 (OCP)
63 | 接口设计的准则
64 | 不断完善的架构范式
65 | 架构范式:文本处理
66 | 架构老化与重构
许式伟的架构课
登录|注册

65 | 架构范式:文本处理

许式伟 2019-12-17
你好,我是七牛云许式伟。
上一讲 “64 | 不断完善的架构范式” 我们提到架构师的武器库是不断完善的架构范式。今天我们围绕一个具体的问题域,看看我们日常能够积累什么样的经验和成果,来完善作为一个架构师的知识体系。
我们选择的问题是 “文本处理”。
计算机之所以叫计算机,是因为计算机的能力基本上就是“计算 +I/O”两部分。I/O 只是为了让计算机与物理世界打交道,它也是为计算服务的。所以数据是软件的灵魂,数据处理是软件的能力。
今天我们聊的文本处理,不是通用的数据处理能力,而是收敛在数据的 I/O 上。这里说的文本,是指写入到磁盘的非结构化数据。它可能真的是文本内容,比如 HTML 文档、CSS 文档;也可能是二进制内容,比如 Word 文档、Excel 文档。文本处理则是指对这类非结构化数据的处理过程,常见文本处理的需求场景有:
数据验证(Data Validation)。比如判断用户输入的文本是否合法,值的范围是否符合期望。
数据抽取(Data Extraction)。比如从某 HTML 页面中抽取出结构化的机票信息(什么时间,从哪里出发,到哪里去,价格几何等等)。
编译器(Compiler)。特殊地,在文本格式是某种语言的代码时,我们可以将文本编译成可执行的机器码,或虚拟机解释执行的字节码。当然我们也可以边解释文本的语义边执行。
……
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《许式伟的架构课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(3)

  • leslie
    "数据是软件的灵魂,文件是软件最重要的资产。"老师这话很经典:故而之前老师讲数据库时提出的是"中间件存储"时,通过大量的查阅资料和总结研究找到另外一个称呼"数据系统"。
          从硬件层考虑"中间件存储"就是资产,软件层考虑“数据系统”就是灵魂。说个真实的案例,前段时间一个DB圈子的朋友数据库出问题,软件层各种排查做尽就是没看到问题,后来问题就处在硬件的存储。朋友问题处理完告诉我问题时我就猜测其硬件端的问题,我说你肯定是硬件的许多问题没考虑;朋友反问我为何知道,我告诉他我有5年以上核心机房的运维经验-这段经验帮助了我当问题出现时会从软硬件两方面去思考和找寻问题。
           这个案例体现了老师所说的"数据是软件的灵魂,文件是软件最重要的资产。":当我们更高的角度和维度去思考时绕着这个核心其实就更加明白其价值、意义和处理方式。感谢老师今天的分享,跟随老师的教诲在学习中进步和成长,期待老师后续的分享。
    2019-12-17
    2
  • Aaron Cheung
    可运行的系统做重构 需要耗费不少时间 更需要团队支持😂

    作者回复: 首先团队要有重构价值的共识,找到重构的步骤,然后才是执行。下一讲我们就是谈重构。

    2019-12-17
    1
  • 沫沫(美丽人生)
    许老师好 ,如果有两个服务A和B,A依赖于B,同时B也依赖于A,出现这种情况是属于循环依赖吗?这种情况的出现,是业务的正交分解没有做好吗?如果系统中出现大量的这种依赖,感觉系统的调用就成了复杂的网络结构 这种情况,重构应该怎么做呢?盼复!

    作者回复: 循环依赖是从源代码层面的,不是运行时的网络调用。所以你说的不属于循环依赖。但如果大量存在两个服务之间的相互调用,解耦肯定也是没做好。高内聚低耦合,从功能内聚性看边界划分

    2019-12-17
    1
收起评论
3
返回
顶部