本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!