zoukankan      html  css  js  c++  java
  • 把漫画浏览器的漫画多数据源切换给实现了一下

    我的漫画浏览器本地没有数据库,漫画数据是实时从漫画网站上爬出来的,最开始设计的时候就考虑了支持多个漫画数据网站的数据源,本身就支持多个漫画的解析器,要实现某个网站的漫画数据支持,只需要实现相关的接口函数即可。

    最开始我的设计思路是实现漫画的聚合:所有的Parser同时爬漫画资源,然后统一合并到漫画浏览器中,若同一个漫画存在于多个漫画源中,自动选取最快的漫画源,甚至实现负载分担功能,同时从多个漫画源下载。这样Parser实现得越多,漫画资源就越丰富,浏览速度也就越快。

    后来实现的时候发现存在如下问题:

    1. 不同的网站中相同的漫画叫做不同的名字,没有远程服务器支持的话,很难实现本地智能合并。
    2. 不容易判断哪个漫画源具有最佳的速度。
    3. 不同的网站中相同的漫画可能有不同的分页,无法简单实现负载分担。

     这几个问题如果有远程服务器支持,再加上编辑人员手动勘误的话,还是能解决的(事实上,如果有远程服务器支持,解析程序和聚合功能就实现在服务器端了,本地直接获取聚合后的结果,更加简单,效率也更高)。

    但是如果要在本地自动实现,还是比较困难的。便退而求其次,改成支持多漫画源切换,每实现一个Parser后就多了一个漫画源,可以在选项菜单中切换,重启后生效(这个主要是为了实现简单,不重启生效实现也不难)。

    一开始我就实现了两个漫画网站的数据源的支持,其实以前发布的版本中就是支持漫画数据源切换的,只不过有一个漫画源的速度不快,发布的时候被我屏蔽了。今天晚上闲来无事的时候又写了一个,就干脆放开漫画源的切换功能了。这里之所以用“漫画源1”这样不易识别的名字而不是直接用漫画源的网站名,主要是怕解析程序被漫画源网站给屏蔽了,应该不影响使用。

  • 相关阅读:
    textarea宽度、高度自动适应处理方法
    Table嵌套去掉子table的外边框
    发现原来自己挺能给自己找理由开脱的
    Life is not the amount of breath you take.
    在遍历ResultSet的循环中再执行SQL会发生什么(前提:同一个Statement)
    按月查询数据
    Oracle SQL 判断某表是否存在
    在Python程序中执行linux命令
    在Oracle中十分钟内创建一张千万级别的表
    Redis Sentinel结构 及相关文档
  • 原文地址:https://www.cnblogs.com/TianFang/p/2828664.html
Copyright © 2011-2022 走看看