专栏首页麒思妙想要解析一个配置文件,当打开文件的时候我崩溃了

要解析一个配置文件,当打开文件的时候我崩溃了

薛定谔的猫

首先,说一些题外话,按照我一贯的风格,这篇文章本应该叫《浅谈如何优雅读取特殊格式配置文件》,但是最近被某些网站的推送恶心到了,我是不太喜欢这种标题的,所以我一直尽量避免使用这种标题党式的标题,但是,好奇心驱使我,想做一次实验,欢迎大家留言,说出你的想法,你更喜欢哪个标题?

A. 要解析一个配置文件,当打开文件的时候我崩溃了 | 为人性癖耽佳句,语不惊人死不休

B. 浅谈如何优雅读取特殊格式配置文件 | 少一点套路,多一点真诚

C. 冇所谓

一点点创意

最近需要读取一些配置文件,但他并不是常用格式,而且需要我们对该文件进行操作除了正常的读写外,还要尽量保存原文件的注释、顺序等信息。

这个配置文件原本也是键值对性质的文件,但是这里键值的分隔符,用了空格和制表符而不是等号。

键也不是唯一的,同名键可能有多个值的情况。

如何满足这个需求呢?将文件加载进来,处理成一个特殊的数据结构,标记出来注释,字段,值等信息,直接对这个结构进行操作,然后再落盘回去,即形成如下图结构。

如上所示,尽管也可以完成需求,但是总觉得不够优雅,逻辑结构混杂在一起。

那么如何能更优雅一些呢?作为一名老CRUD,我是这么想的,在原始数据加载时候,引入一个纯数据缓存队列,用于应对读取操作,引入一个辅助元数据队列, 用于协助判断键具体的类型,例如,键值对、键多值对等情况。

在进行数据更新的时候,引入变更队列,用于处理数据变更,这里并不会直接更新实际数据,而是在落盘的时候,才会合并处理。在外层加入一个布隆过滤器,用于在遍历的时候,先抵消部分无变更键。

这样,还能顺便实现一波恢复操作。

整体架构,归结如上图所示。架构设计,有时就是这样,一点点的变更,看着能笑出来。

希望能对正在读文章的你有所启发,也欢迎与我交流。

本文分享自微信公众号 - 麒思妙想(qicai1612),作者:dafei1288

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 要解析一个配置文件,当打开文件的时候我崩溃了

    首先,说一些题外话,按照我一贯的风格,这篇文章本应该叫《浅谈如何优雅读取特殊格式配置文件》,但是最近被某些网站的推送恶心到了,我是不太喜欢这种标题的,所以我一直...

    麒思妙想
  • 零基础学Flink:监控 on Prometheus & Grafana

    在上一篇文章中,对使用 Prometheus 监控Flink进行了阐述(传送门),这里就不再赘述了。

    麒思妙想
  • 如何看待OceanBase、OpenGauss等只开源很低版本数据库源代码的行为?

    今天刚好在 oschina 上看到这么一个问答,一时兴起就说了两句,仅代表个人观点,欢迎交流,讨论。

    麒思妙想
  • Numpy 理解ndarray对象的示例代码

      numpy作为python科学计算的基础模块,支撑起了pandas、matplotlib等使用。其中,ndarray作为numpy的重要使用对象不得不研究理...

    砸漏
  • 图解HashMap(一)

    HashMap是日常开发中经常会用到的一种数据结构,在介绍HashMap的时候会涉及到很多术语,比如时间复杂度O、散列(也叫哈希)、散列算法等,这些在大学课程里...

    陈宇明
  • php计算字符串相似度similar_text

    因为发送邮件要限制发送频率,有一些邮件都是同类型的邮件,只是时间不一样,这样就需要判断发送邮件内容的相似度。网上找了相关方法,发现这个 similar_text...

    猿哥
  • 【Leetcode】146.LRU缓存机制

    运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。

    Leetcode名企之路
  • Python读取PDF内容

    1,引言 晚上翻看《Python网络数据采集》这本书,看到读取PDF内容的代码,想起来前几天集搜客刚刚发布了一个抓取网页pdf内容的抓取规则,这个规则能够把pd...

    py3study
  • AndroidStdio1_4

    通过getMenuLnter方法得到MenuLNflater对象,再调用它的inflater方法给当前活动创建菜单.两个参数,一个指定用什么资源文件.第二个参数...

    云深无际
  • 推荐 38个miRNA数据库

    -1.psRNATarget http://plantgrn.noble.org/psRNATarget/ 一个在线的植物小RNA的靶基因预测工具,发表在核酸研...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券