Java|对xdm下载器的探究

简介: Java|对xdm下载器的探究

问题描述

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

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

 

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

目录
相关文章
|
3月前
|
缓存 算法 Java
Java面试题:深入探究Java内存模型与垃圾回收机制,Java中的引用类型在内存管理和垃圾回收中的作用,Java中的finalize方法及其在垃圾回收中的作用,哪种策略能够提高垃圾回收的效率
Java面试题:深入探究Java内存模型与垃圾回收机制,Java中的引用类型在内存管理和垃圾回收中的作用,Java中的finalize方法及其在垃圾回收中的作用,哪种策略能够提高垃圾回收的效率
32 1
|
3月前
|
存储 算法 Java
Java面试题:深入探究Java内存模型与垃圾回收机制,解释JVM中堆内存和栈内存的主要区别,谈谈对Java垃圾回收机制的理解,Java中的内存泄漏及其产生原因,如何检测和解决内存泄漏问题
Java面试题:深入探究Java内存模型与垃圾回收机制,解释JVM中堆内存和栈内存的主要区别,谈谈对Java垃圾回收机制的理解,Java中的内存泄漏及其产生原因,如何检测和解决内存泄漏问题
54 0
|
5月前
|
监控 Java 物联网
Java串口通信技术探究1:深入理解RXTX库
Java串口通信技术探究1:深入理解RXTX库
195 2
|
4月前
|
存储 Java 测试技术
滚雪球学Java(56):探究Java中Collection接口,理解集合框架的实现原理
【6月更文挑战第10天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
48 2
滚雪球学Java(56):探究Java中Collection接口,理解集合框架的实现原理
|
4月前
|
Java API
详细探究Java多线程的线程状态变化
Java多线程的线程状态主要有六种:新建(NEW)、可运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)、超时等待(TIMED_WAITING)和终止(TERMINATED)。线程创建后处于NEW状态,调用start()后进入RUNNABLE状态,表示准备好运行。当线程获得CPU资源,开始执行run()方法时,它处于运行状态。线程可以因等待锁或调用sleep()等方法进入BLOCKED或等待状态。线程完成任务或发生异常后,会进入TERMINATED状态。
|
5月前
|
Java 编译器
滚雪球学Java(34):探究Java方法的神奇魔法和参数传递奥秘
【5月更文挑战第9天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
31 1
滚雪球学Java(34):探究Java方法的神奇魔法和参数传递奥秘
|
5月前
|
存储 Java 编译器
Java语言局部变量深入探究
Java语言局部变量深入探究
|
4月前
|
安全 Java C++
深入探究Java中的TransferQueue:机制、特性与应用场景
深入探究Java中的TransferQueue:机制、特性与应用场景
|
5月前
|
存储 Java 程序员
滚雪球学Java(43):探究 Java 中的 Class 类:透视类的本质和实现原理
【5月更文挑战第18天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
25 0
滚雪球学Java(43):探究 Java 中的 Class 类:透视类的本质和实现原理
|
5月前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能对比
【5月更文挑战第4天】在移动开发的世界中,性能一直是衡量应用质量的重要指标。随着Kotlin的兴起,许多Android开发者开始考虑是否应该从传统的Java迁移到Kotlin。本文通过深入分析两者在Android平台上的性能差异,帮助开发者理解Kotlin在实际项目中的表现,并提供选择编程语言时的参考依据。
79 5