博文

目前显示的是 八月, 2019的博文

CentOS���yum������ffmpeg

图片
CentOS���yum������ffmpeg CentOS中yum安装ffmpeg 11点后看到我请举报  关注 2017.11.20 14:02 字数 229 阅读 6209 评论 0 喜欢 1 1.升级系统 sudo yum install epel-release -y sudo yum update -y sudo shutdown -r now 2.安装Nux Dextop Yum 源 由于CentOS没有官方FFmpeg rpm软件包。但是,我们可以使用第三方YUM源(Nux Dextop)完成此工作。 CentOS 7 sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm CentOS 6 sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm 3.安装FFmpeg 和 FFmpeg开发包 sudo yum install ffmpeg ffmpeg-devel -y 4.测试是否安装成功 ffmpeg 5.如果你想了解更多关于FFmpeg使用方面的资料,可以输入: 例子: 使用FFmpeg将mp3转为ogg ffmpeg -i MLKDream_64kb.mp3 -c:a libvorbis -q:a 4 MLKDream_64kb.ogg 使用FFmpeg将flv转为mp4 ffmpeg -i beeen.flv -y -vcodec copy -acodec copy beeen.mp4 Tags: published August 29,...

Java������������-������Google Guava������������ - ������

图片
Java������������-������Google Guava������������ - ������ 小码农薛尧 2019年08月23日 阅读 22 Java内存缓存-通过Google Guava创建缓存 谷歌Guava缓存 Guava介绍 Guava是Google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中。实际项目开发中经常将一些公共或者常用的数据缓存起来方便快速访问。 Guava Cache是单个应用运行时的本地缓存。它不把数据存放到文件或外部服务器。如果不符合需求,可以选择Memcached、Redis等工具。 小案例 pom.xml添加guava依赖 xml <? xml version= "1.0" encoding= "UTF-8" ?> < project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 </ modelVersion > < groupId > me.xueyao.cache </ groupId > < artifactId > java-demo </ artifactId > < version > 1.0.0 </ version > < dependencies > < dependency > < groupId > javax.cach...

java8���Stream������������������������ - ������

图片
java8���Stream������������������������ - ������ 坚持就是胜利 2019年08月22日 阅读 177 java8的Stream对集合操作飞起来 简介 java8也出来好久了,接口默认方法,lambda表达式,函数式接口,Date API等特性还是有必要去了解一下。比如在项目中经常用到集合,遍历集合可以试下lambda表达式,经常还要对集合进行过滤和排序,Stream就派上用场了。用习惯了,不得不说真的很好用。 Stream作为java8的新特性,基于lambda表达式,是对集合对象功能的增强,它专注于对集合对象进行各种高效、便利的聚合操作或者大批量的数据操作,提高了编程效率和代码可读性。 Stream的原理:将要处理的元素看做一种流,流在管道中传输,并且可以在管道的节点上处理,包括过滤筛选、去重、排序、聚合等。元素流在管道中经过中间操作的处理,最后由最终操作得到前面处理的结果。 集合有两种方式生成流: stream() − 为集合创建串行流 parallelStream() - 为集合创建并行流 上图中是Stream类的类结构图,里面包含了大部分的中间和终止操作。 中间操作主要有以下方法(此类型方法返回的都是Stream):map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 limit、 skip、 parallel、 sequential、 unordered 终止操作主要有以下方法:forEach、 forEachOrdered、 toArray、 reduce、 collect、 min、 max、 count、 anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 iterator 举例说明 首先为了说明Stream对对象集合的操作,新建一个Student类(学生类),覆写了equals()和hashCode()方法 public class Student { private Long id; private String name; private int age; priva...

Java������������������G��������������������� - ������

图片
Java������������������G��������������������� - ������ 沉默王二 2019年08月14日 阅读 1964 Java内存映射,上G大文件轻松处理 内存映射文件 (Memory-mapped File),指的是将一段虚拟内存逐字节映射于一个文件,使得应用程序处理文件如同访问主内存(但在真正使用到这些数据前却不会消耗物理内存,也不会有读写磁盘的操作),这要比直接文件读写快几个数量级。 稍微解释一下虚拟内存(很明显,不是物理内存),它是计算机系统内存管理的一种技术。像施了妖法一样使得应用程序认为它拥有连续的可用的内存,实际上呢,它通常是被分隔成多个物理内存的碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。 内存映射文件主要的用处是增加 I/O 性能,特别是针对大文件。对于小文件,内存映射文件反而会导致碎片空间的浪费,因为内存映射总是要对齐页边界,最小单位是 4 KiB,一个 5 KiB 的文件将会映射占用 8 KiB 内存,也就会浪费 3 KiB 内存。 java.nio 包使得内存映射变得非常简单,其中的核心类叫做 MappedByteBuffer,字面意思为映射的字节缓冲区。 01、使用 MappedByteBuffer 读取文件 假设现在有一个文件,名叫 cmower.txt,里面的内容是: 沉默王二,一个有趣的程序员 PS:哎,改不了王婆卖瓜自卖自夸这个臭毛病了,因为文章被盗得都怕了。 这个文件放在 /resource 目录下,我们可以通过下面的方法获取到它: java ClassLoader classLoader = Cmower.class.getClassLoader(); Path path = Paths.get(classLoader.getResource( "cmower.txt" ).getPath()); 复制代码 Path 既可以表示一个目录,也可以表示一个文件,就像 File 那样——当然了,Path 是用来取代 File 的。 然后,从文件中获取一个 channel(通道,对磁盘文件的一种抽象)。 java FileChannel fileChannel = FileChann...

��������� �� ���������������������������������������

图片
��������� �� ��������������������������������������� 微词云 · 简单强大的文字云艺术生成器 https://www.weiciyun.com/?utm_source=xinquji 简单强大的文字云艺术生成器 Tags: published August 23, 2019 at 10:56AM Open in Evernote

Redis���������SET������������������������������������ - ������

图片
Redis���������SET������������������������������������ - ������ Throwable 2019年08月15日 阅读 238 Redis的复合SET命令和简易的分布式锁优化 前提 最近在跟进一个比较老的系统的时候,发现了所有调度任务使用了 spring-context 里面的 @Scheduled 注解和自行基于 Redis 封装的简易分布式锁控制任务不并发执行。为了不引入其他框架的情况下做一些简单优化,笔者花点时间去研读了一下 Redis 的 SET 命令的相关文档。 场景还原 使用 @Scheduled 注解实现定时任务,使用 spring-data-redis 提供的API实现简易的 Redis 分布式锁的伪代码如下: java // 每30分钟跑一次 @Scheduled(cron = "* */30 * * * ? ") public void scheduledMethod(){ // 判断KEY存在性并且设置KEY,带超时时间5分钟 if (StringRedisTemplate#opsForValue()#hasKey("定时任务唯一字符串标识")){ StringRedisTemplate#opsForValue()#set("定时任务唯一字符串标识", "1[这里暂时可以使用任何值]", 5 , TimeUnit.MINUTES); } // 这里做调度正常业务逻辑 doBusiness(); // 删除KEY StringRedisTemplate#opsForValue()#delete("定时任务唯一字符串标识"); } 复制代码 上面的代码存在如下显然的缺陷: 如果应用部署多个节点,由于判断KEY的存在性和SET操作是两个操作(非原子操作),该定时任务有可能在同一个时刻并发执行多次。 如果业务逻辑执行方法 doBusiness() 抛出了异常,会导致删除KEY的操作无法执行,KEY会到达超时时间后被删除,这个时候相当于加锁时间长达5分钟,显然是无法接受的。...