前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java|对xdm下载器的探究

Java|对xdm下载器的探究

作者头像
算法与编程之美
发布于 2020-03-12 10:10:55
发布于 2020-03-12 10:10:55
7250
举报

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的话,由子类随意去修改的话,接口建立这个常量就没有意义了。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
good ! 写的非常好!
good ! 写的非常好!
回复回复1举报
推荐阅读
加入讨论
的问答专区 >
    领券
    💥开发者 MCP广场重磅上线!
    精选全网热门MCP server,让你的AI更好用 🚀
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档