0%

有时候看到喜欢的视频,想把它下载下来,如何下载呢?

有些网页上的视频,是分成多个 ts 文件片段的,我们可以通过 Chrome 的开发者工具发现。

通过 m3u8 过滤,我们可以发现一个独立的 m3u8 文件,这个文件就是播放列表,如图:

我们可以到这个网站 www.ffmpeg.org 去下载这个 ffmpeg 工具。然后执行命令,把视频片段拼接起来。

命令如下:

1
sudo ./ffmpeg  -i <m3u8 url> -c copy output.mp4

然后就开始下载了,非常好用。

两个 Service 下面的方法,互相调用,这时就会涉及到事务的传播。

传播机制类型

这些类型都是针对被调用的方法来说的。

PROPAGATION_REQUIRED (默认)

支持当前事务,如果当前没有事务,则新建事务

如果当前存在事务,则加入当前事务,合并成一个事务

REQUIRES_NEW

新建事务,如果当前存在事务,则把当前事务挂起

这个方法会独立提交事务,不受调用者的事务影响,父级异常,它也是正常提交

NESTED

如果当前存在事务,它将会成为父级事务的一个子事务,方法结束后并没有提交,只有等父事务结束才提交

如果当前没有事务,则新建事务

如果它异常,父级可以捕获它的异常而不进行回滚,正常提交

但如果父级异常,它必然回滚,这就是和 REQUIRES_NEW 的区别

SUPPORTS

如果当前存在事务,则加入事务

如果当前不存在事务,则以非事务方式运行,这个和不写注解是一样

NOT_SUPPORTED

以非事务方式运行

如果当前存在事务,则把当前事务挂起

MANDATORY

如果当前存在事务,则运行在当前事务中

如果当前无事务,则抛出异常,也即父级方法必须有事务

NEVER

以非事务方式运行,如果当前存在事务,则抛出异常,即父级方法必须无事务。