timzaak / blog

8 stars 1 forks source link

Jsoup 源码阅读 #36

Closed timzaak closed 5 years ago

timzaak commented 5 years ago

先前一直觉得这个相关的挺diao的。现在粗粒度浏览了下代码,发现还是ok,能看的懂。总结下套路,就是

  1. BufferString 遍历数据,构造成高效数据索引结构
  2. 将搜索语言转译成数据搜索结构
  3. 遍历数据索引结构,匹配数据搜索结构
  4. 完活!

里面的坑其实不少,主要还要考虑一下几个点:

  1. 优良的错误信息提示
  2. 数据格式化时字符串转译的问题
  3. 数据结构化抽象
  4. 向后兼容

Jsoup 是单线程的,这让我想起 rust 多线程dom渲染,真不知道 rust 是怎么解决 dom 解析的,难道是单线程解析结构,然后根据特点,进行任务分发渲染,再组合到一起?留待以后看。

感觉这个库性能上,应该还有可提升的地方。 例如 Lazy/ 部分 解析(高级技术)。再看看 fastparse2,学习一下。