文章目录 引言 什么时候适合加缓存? 示例1 示例2: 示例3: 缓存应该怎么配置? 数据分布 缓存容量大小: 数据淘汰策略 缓存的副作用 总结 引言   在上一篇文章IO密集型服务提升性能的三种方法中,我们提到了三种优化IO密集型系统的方法,其中添加缓存(cache)的方法是最常用的,而且普适性也是最强的,今天展开讲下如何正确使用缓存。准确说我们需要解决下面三个大问题。 什么样的情况下才适合加缓存? 缓存应该怎么配置? 如何解决或者减少缓存的副作用? 什么时候适合加缓存?   我们先解决第一个问题,什么情况下适合加缓存。一句话总结就是如果某个数据获取”成本高“,...

  在我之前的文章IO密集型服务提升性能的三种方法中提到过,提升IO密集型应用性能有个方式就是异步编程,实现异步时一定会用到Future,使用多线程+Future我们可以让多个任务同时去执行,最后统一去获取执行结果,这样整体执行的时长就取决于最长的一个任务,比如如下代码: publicstaticvoidmain(String[]args)throwsExecutionException,InterruptedException{ ExecutorServiceexecutorService=Executors.newFixedThreadPool(2); System.out.print...

  最近在开发过程中,遇到了好多次“这个需求点这次要不要做?”的问题,主要有两方阵营,比如以研发主导的“这次先不做、等必要的时候再做”,另外一方是以PM主导的“这个不做需求不完整,可能影响用户体验”。争议主要出现在一些小需求或者细节点上,一般不是啥核心功能,比如一些鸡肋需求或者有些极端异常case的处理。前者的主要观点是“这个需求不重要可能会浪费时间,有哪些时间还不如做一些更重要的事”,后者的主要观点是“这个点虽然不是核心功能,但没有的话可能让用户决定我们产品有缺陷。”如果遇到的两方脾气不好,甚至可能闹到剑拔弩张的情况。   这两种不同的观点其实就是我标题上说的两种不同思维模式导致的,前者...

  最近我们尝试在网页上叠加数字人讲解的功能,发现如果直接在网页上放一个矩形的数字人视频,效果会很差,首先是会遮挡很多画面的内容,其次就是不管使用任何任务背景,画面都和后面的网页不是很协调,如图所示:   如果能去掉视频的背景,只展示人物效果就会好很多。经过一些调研和实验,我终于探索出一种可以批量自动化实现透明背景视频的方法,最终实现的效果如下:   数字人的视频我是使用的腾讯智影生成带绿幕的视频,要实现透明背景,有个很关键的信息需要知道,不是所有的视频格式(视频编码)都支持透明背景,首先我们最常用的mp4就是不支持(不管是h264还是h265)都不支持,目前支持透明背景的只有少部分视...

  最近在一个需求中,我需要批量从hls视频中截取出10s的视频,发现有很小概率会截取失败,视频截取的完整命令如下: ffmpeg-ihttps://file.xindoo.xyz/utopia-file/local/video/605d3af0a9cb469c91fbb309422e6672/playlist.m3u8-r15-ss19-t10.0-b:v4096k-vcodeclibx26412345.mp4   开始以为是hls中的视频片段有问题,后来和同事一起排查发现,所有失败的情况下,执行ffmpeg命令截取时都会报[mov,mp4,m4a,3gp,3g2,mj2@0x7fd6...

文章目录 批处理 缓存 多线程 总结   大部分的业务系统其实都是IO密集型的系统,比如像我们面向B端提供摄像头服务,很多的接口其实就是将各种各样的数据汇总起来,展示给用户,我们的数据来源包括Redis、Mysql、Hbase、以及依赖的一些服务方的数据,并不涉及到太多复杂的计算逻辑。在过去的半年中,因为我们数据量和业务复杂性的增长,确实遇到了一些明显的性能问题,分析大部分问题的本质原因就是IO太慢了。我们系统中最复杂的计算逻辑执行最慢也就微秒级,而调一次数据库最快也得1-2毫秒,有着2-3个数量级的差距。   然而IO又是业务系统中不可能干掉的操作,但频繁或者错误的使用IO会给系...

提取音频 使用ffmpeg可以很轻易从原视频中抽取出其中的音频和视频,抽取音频的命令如下: ffmpeg-iinput.mp4-vn-c:acopyoutput.aac ​​-vn​​​表示novideo,-c:a是codecofaudio的意思,copy是直接拷贝视频中的原始的音频,这里不会涉及音频的编解码,速度会很快。也可以指定​​-c:amp3​​导出mp3格式的音频。 对于音频提取,可以使用​​-b:a128k​​​指定音频的码率是128kb/s,​​-ar44k​​指定音频的采样频率为44kHz,完整命令如下: ffmpeg-iinput.mp4-vn-b:a12...

最近在工作中遇到一个ffmpeg的坑,特此记录下。我们在工作中,有个需求是将分段存储的视频拼接成一个完整的视频,发现使用ffmpeg拼接后视频时长不对。举个列子,我用ffmpeg将4个半小时的mp4视频拼接后,得到的视频长度远超过2小时,观看后发现在视频的连接点,会出现长时间的卡顿,导致最终视频时间超长。 在ffmpeg官方文档​​Concatenatingmediafiles​​中,介绍了三种视频拼接的方式,分别如下: 1.针对同种编码的视频 可以将所有视频文件名列到一个文本文件中,格式如下: file'/path/to/file1.wav'file'/path/to/file2.w...

  今天分享一个我制作表情包的技巧。现在视频编辑的门槛已经非常低了,只要装个剪映稍微学一下,很容易就能把你想要的内容剪出来,真的是有手就行。但是视频剪出来的视频是无法直接用做表情包的,只有gif格式的动图才是真正可以用的表情包。另外一点,在微信、企微等通讯软件中,gif动图的大小也是有严格限制的,比如微信和企微里最大是5MB,超过这个大小就会被当成文件传输,且无法被别人收藏转发,也就失去了表情包的意义。我这里分享一些用ffmpeg来生成gif动图的命令行示例,助力大家生产出更多有趣的表情包。   首先就是将一个视频直接转成gif动图,基本命令格式如下: ffmpeg-i你的视频文件.m...

  HLS(HTTPLiveStreaming)是苹果推出的视频流协议,HLS格式的视频包含一个m3u8文本文件,以及众多的.ts的视频片段,而m3u8文本文件的作用就是将这些ts片段索引起来。因为HLS协议是将视频切分成很多小的ts片段,这些小片段很适合放到cdn上,有很多视频文章都使用了hls格式传输视频。今天我在这里教大家如何用ffmpeg将mp4格式的视频转为HLS(m3u8)格式。   如果不对视频重新编码的话,命令也很简单,如下: ffmpeg-iinput.mp4-c:vcopy-hls_time2-hls_segment_filename%d.ts-fhlsoutput...

  tIQHVfBFNQez   2023年11月02日   53   0   0 hls文本文件文件名命令行ffmpeg

  之前在工作中,有遇到需要程序化截取视频片段的场景,这里使用ffmpeg命令行就可以很容易实现,这里也记录下我们使用过程中遇到的坑,希望对大家也有所帮助。  举个例子,当我们要截取视频文件中input.mp4的第15秒到第98秒时,ffmpeg命令行可以这么写: ffmpeg-ss15-to98-iinput.mp4-c:vcopyoutput.mp4   这里的参数​​-c:vcopy​​​指的是复用原始视频的编码格式,如果想切换视频编码也可以直接指定,比如​​-c:vlibx264​​(关于修改视频和音频编码的问题,后续会继续出一篇博客)。另外-ss和-to后面也可以写成...

  tIQHVfBFNQez   2023年11月02日   68   0   0 官网音视频命令行sedffmpeg

  近期,我们线上遇到了一个性能问题,几乎快引起线上故障,后来仅仅是修改了一行代码,性能就提升了几十倍。一行代码几十倍,数据听起来很夸张,不过这是真实的数据,线上错误的配置的确有可能导致性能有数量级上的差异,等我说完我们这个性能问题你就清楚了。   我们线上是对接了腾讯云的IOT平台,任何iot设备的上传事件都是通过腾讯云的ckafka传递给我们的,随着设备量以及事件数据量的增加,我们消费腾讯云ckafka出现了性能瓶颈,数据高峰期会有数据拥堵,从而因数据处理延迟导致业务的问题。解决最简单的方案就是扩partition和consumer,实际上半年前我们发生性能问题的时候就是这么做的,扩了一...

  tIQHVfBFNQez   2023年11月02日   71   0   0 腾讯云kafka数据数据库spring

文章目录 虚拟线程的使用 什么是虚拟线程 虚拟线程和协程 相同之处: 不同之处: 总结   就在前几天,java21正式版发布了,作为继java17之后的又一个长期支持版本(LTS),为我们带来了很多新的特性,其中我最感兴趣的就是虚拟线程(virtualthread),相信大家对虚拟线程也很好奇。趁着空闲时间安装了jdk21来体验一把,顺便把我查到的关于java21虚拟线程相关的资料也分享下。 虚拟线程的使用   首先来看下虚拟线程怎么使用,jdk21在Thread类中,专门提供了虚拟线程和虚拟线程工厂的创建入口,我们挨个看下。首先就是虚拟线程的创建和启动,使用lambda...

  tIQHVfBFNQez   2023年11月02日   22   0   0 Java多线程上下文切换jvm
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~