- 博客(7)
- 收藏
- 关注
原创 FFmpeg开发笔记(十八)FFmpeg兼容各种音频格式的播放
上述修改后的代码已经附在了《FFmpeg开发实战:从零基础到短视频上线》一书第10章的源码chapter10/playaudio2.c,这个c代码是playaudio.c的改进版,除了支持原来mp3和aac格式的音频播放,还支持ogg、amr、wma等格式的音频播放,以及asf、webm等视频文件的音频播放。鉴于重采样后的音频数据可能较大(主要是amr格式有这种情况),因此要按照len指定的长度切割数据,确保每次回调函数都刚好把长度为len的音频数据送往扬声器。程序运行完毕,发现控制台输出以下的日志信息。
2024-05-05 01:40:30
344
原创 Linux 文件系统之 --- ext4文件系统简介
在linux下面,常见的linux fs就是ext系列,linux里面的vfs也和这个ext fs息息相关。本文主要详解一下ext4 fs的实现原理,并且,从文件操作的角度来看,ext4 fs是怎么实现这一系列工作的。对于上层用户来说, 描述一个磁盘的相关属性使用扇区来描述,一个扇区一般是512字节,磁盘总容量是扇区数*512字节。文件系统是指通过什么样的结构来组织数据的存储方式。具体来说,就是怎么对某一个文件进行定位和操作。
2024-04-28 01:41:58
2056
原创 快速部署 微软开源的 Garnet 键值数据库
Garnet 是 Microsoft Research 推出的一种新型远程缓存存储,其设计速度极快、可扩展且延迟低。Garnet 在单个节点内是线程可扩展的。它还支持分片集群执行、复制、检查点、故障转移和事务。它可以在主内存以及分层存储(例如 SSD 和 Azure 存储)上运行。Garnet支持丰富的API接口和强大的可扩展性模型。Garnet 使用 Redis 的 RESP 作为其主要线路协议。
2024-04-26 01:39:45
1132
原创 深度解读《深度探索C++对象模型》之数据成员的存取效率分析(一)
接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。在这篇文章中已经详细分析过C++的对象在经过封装后,在各种情况下的内存布局以及增加的成本。本文将进一步分析C++对象在封装后,数据成员的存取的实现手段及访问的效率。上面的代码中,对数据成员的存取成本是什么?通过对象来存取成员x和通过对象的指针来存取成员x的效率存在差异吗?要搞清楚这个问题,得看具体的类的定义以及成员x的声明方式。
2024-04-21 01:40:24
728
原创 redis+lua脚本实现接口限流
在多线程的情况下对一个接口进行访问,如果访问次数过大,且没有缓存存在的情况下大量的请求打到数据库可能会存在数据库宕机,从而造成服务的不可用性。往往我们需要对其进行限流操作用来保证服务的高可用性,以下介绍下redis限流如何使用。
2024-04-20 01:40:04
1006
原创 golang开发 深入理解 context
可以看到最终实现结果和场景,跟Sameer Ajmani在博客描述的是一样的,context的出现主要两个作用,控制 goroutine,goroutine之间传值。可以看到介绍里面主要说的是,应用中怎么控制大量的goroutine退出释放资源、请求范围内怎么传值,也就是说,context的引入主要是为了解决这两个问题。context初始化的方法有五个,一个是main goroutine 初始化,一个主要是是用来传值的,经常使用的就三个。超时的时候执行结果,超过三秒的超时时间,依赖超时时间。
2024-04-19 01:39:58
870
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人