Java|对xdm下载器的探究
发布日期:2021-06-23 12:16:24 浏览次数:10 分类:技术文章

本文共 2026 字,大约阅读时间需要 6 分钟。

欢迎点击「算法与编程之美」↑关注我们!

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

问题描述

Xdm是一款非常实用的下载器,他通过与浏览器插件的配合,可以对网页上许多视频内容进行下载,以下是对其代码的浅显探究。

解决方案

浏览

首先,查看在main目录里Java包下的代码文件:第一个便是downloaders包,里面存放的是文件下载时的线程管理、文件管理、当前速度计算等操作。第二个是mediaconversion包,应该是关于转换媒体格式。第三个是monitoring包,应该是监控下载链接里的格式。在第四个network包是关于网络的,如ftp与http协议,以及keep-alive,在main类中,使用Keep-Alive,使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。后面包别是preview、ui、util、videoparser、以及一些类和接口

查看探究

3.1 第一步

先去看了Config,首先引入了Logger类,这个类主要用途就是判断obj是否是它右边的类的实例,再返回boolean类型的数据并根据返回的boolean类型值调用不同的get-XXX-Stream()的方法,得到打印这个线程的名字,如果有错,会一并打印异常信息在程序中出错的位置及原因。。

public static void log(Object obj)  {

    if (obj instanceof Throwable) {  //instanceof与=类似
       getErrorStream().print(
             "[ " + Thread.currentThread().getName()  + " ] ");
       ((Throwable)  obj).printStackTrace(getErrorStream());
    } else {
       getLogStream().println(
             "[ " + Thread.currentThread().getName()  + " ] " + obj);
    }
 }

引入的StringUtils类,这个类里面有几个方法,第一个是对str判断空字符串;第二个也是判断空字符串,但是使用了trim()函数,去掉了字符串首尾的空格;第三个和第四个是分别将sb和s字符串转换为字节数组类型。

public static boolean isNullOrEmpty(String str) {

             return str == null ||  str.length() < 1;

      }

public static boolean isNullOrEmptyOrBlank(String str) {

             return str == null ||  str.trim().length() < 1;

      }

public static byte[] getBytes(StringBuffer sb) {

             return  sb.toString().getBytes();

      }

public static byte[] getBytes(String s) {

             return s.getBytes();

      }

引入的XDMUtils类,但这个类其中又引入了一个Main类,在Main里使用了下面这段代码设置了一些指定键对值的系统属性。

System.setProperty(String prop, String value);

而且后面还使用了一个main函数,在其中用Logger对obj进行判断,并用以下方法获取到Java 运行时环境版本和操作系统的版本。

System.getProperty("java.version");

System.getProperty("os.version");

在StringUtils类里还引入了XDMConstants接口,并且在这个接口中使用了public static final来修饰常量,这几个的意义及使用如下:

public: 使接口的实现类可以使用这个常量

static:static修饰就表示它属于类的,随的类的加载而存在的,如果是非static的话,就表示属于对象的,只有建立对象时才有它,而接口是不能建立对象的,所以接口的常量必须定义为static

final:final修饰就是保证接口定义的常量不能被实现类去修改,如果没有final的话,由子类随意去修改的话,接口建立这个常量就没有意义了。

    这个源码还有非常多的知识尚未探究,更好更正确的探究路线等待发现。

 

暂时到此,如有错误,欢迎指正!

END

主  编   |   张祯悦

责  编   |   黄晓峰

 where2go 团队


   

微信号:算法与编程之美          

长按识别二维码关注我们!

温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!

转载地址:https://where2go.blog.csdn.net/article/details/104687918 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:scp 使用
下一篇:linux 指定 jdk 启动 java 程序

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月13日 05时19分25秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章