自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 欢迎光临~

来都来了,不进来看看吗?

2020-08-23 09:22:39 2544 1

原创 树莓牌4B安装Centos8

查看能可用的wifi。一般这个颜色的就是能用的,SSID 就是 wifi 的名字。后续以 TP-LINK_9FF7 为例。将上述工具烧制好的SD卡插入树莓派,通电。通过网线将树莓派与电脑连接(需要开启网络共享)。默认 /dev/root 只有很小一点存储。此时分区容量尚未变化。首先记录下 Gateway。默认密码:centos。执行下述命令开始配置,,按照下图红字操作。再记下当前的IP地址。

2023-08-20 18:18:22 378

原创 深入理解计算机系统(CSAPP) 第二章

信息的表示和处理

2022-12-04 12:17:04 1644 1

原创 深入理解计算机系统(CSAPP) 第一章 (1.3 节有问题待解决)

计算机系统漫游

2022-10-18 22:26:14 482

原创 现代操作系统(原书第四版)课后题答案 —— 第四章 文件系统

来刷题呀

2022-10-03 20:10:43 7608 2

原创 现代操作系统(原书第四版)课后题答案 —— 第三章 内存管理

来刷题呀

2022-10-02 22:15:26 8448 4

原创 排列组合中的八种球盒模型

排列组合中的八种球盒模型

2022-07-10 20:38:15 2314

原创 现代操作系统(原书第四版)课后题答案 —— 第二章 进程与线程

来刷题呀

2022-07-10 16:00:07 9648 4

原创 现代操作系统(原书第四版)课后题答案 —— 第一章 引论

来刷题呀

2022-05-05 23:30:00 7954 4

原创 RTMP(5):Command Message

Command Message 可以细分为:NetConnectionconnectcallclosecreateStreamNetStreamplayplay2deleteStreamcloseStreamreceiveAudioreceiveVideopublishseekpause在协议格式上,请求可以划分为三部分:Command Name:命令名称。String 类型。如 connect,play,publish 等。Transaction ID

2022-05-03 11:29:50 289

原创 RTMP(4):User Control Message

并不重要.jpg

2022-04-17 16:04:47 376

原创 RTMP(3):Protocol Control Message

写一写 RTMP 的 Protocol Control Message

2022-04-17 14:51:44 340

原创 RTMP(2):Chunk 和 Message

这一篇主要记录对 chunk 和 message 两个概念的理解。

2022-04-16 21:06:36 2758

原创 RTMP(1):Handshake

最近学习了 RTMP,自己也简单实现了一个 RTMP 服务器,可以和 FFmpeg 交互实现推拉流。接下来计划写几篇笔记梳理一下,欢迎大家斧正~

2022-04-15 20:37:12 802

原创 FFmpeg:浅谈 AVFrame 结构体

浅谈 AVFrame 结构体的成员变量及其相关函数。

2022-03-20 16:22:05 2467

原创 FFmpeg:浅谈 AVBuffer 和 AVBufferRef 结构体

FFmpeg 借助 struct AVBuffer 和 struct AVBufferRef 以及相关 API 实现了引用计数功能。结构体定义struct AVBuffer 目前共包含七个成员变量,从功能上可以划分为三部分:数据部分uint8_t *data 和 size_t size:指向一段长度为 size 的内存。void *opaque:一个指针,指向一个用户自定义类型的对象,也可为空,FFmpeg 不关心。void (*free)(void *opaque, uint8_t *da

2022-03-15 21:40:52 801

原创 FFmpeg:macOS 上使用 ffmpeg 的库时出现 Undefined symbols 错误

在使用 g++ 编译器链接 FFmpeg 的静态库时经常出现 Undefined symbols 错误。编译命令示例如下:g++ -o main main.cc -lavutil -lavcodec -lavformat -lavfilter -lavdevice;错误示例如下:Undefined symbols for architecture x86_64: "_AudioObjectGetPropertyData", referenced from: _at_write_he

2022-03-03 22:30:00 2223

原创 SDL:升级 OpenAudio 至 OpenAudioDevice 后不能播放音频

OpenAudio 与 OpenAudioDevice 简介使用 SDL 库可以快捷实现 PCM 音频文件的播放功能。以播放 44100Hz,双声道,S16 格式的音频数据为例:SDL_Init(SDL_INIT_TIMER|SDL_INIT_AUDIO); // 初始化SDL_AudioSpec audio_spec;audio_spec.format = AUDIO_S16SYS; // 设置格式audio_spec.freq = 44100; // 设置频率audio_spec.cha

2022-02-19 15:27:30 2711 4

原创 Mac OS 安装 FFmpeg

最近开始学习音视频相关技能啦,从安装 FFmpeg 开始~

2021-12-04 15:10:27 3645 1

原创 链表练习题目:反转链表

给出一个长度为n链表,反转链表中的所有节点。比如,输入一个长度为 nnn 链表:N1→N2→...→Nn−1→NnN_1→ N_2 → ... → N_{n-1}→ N_nN1​→N2​→...→Nn−1​→Nn​翻转后为:Nn→Nn−1→...→N2→N1N_n→ N_{n-1} → ... → N_2→ N_1Nn​→Nn−1​→...→N2​→N1​链表的反转不同于数组:数组反转只需交换数据,链表反转一般要求交换指针域。比如,一个长度为 4 的链表,如下所示:反转之后变为:不难发现

2021-09-28 22:28:33 218

原创 链表入门练习:寻找环的入口节点

NC3 链表中环的入口结点给出一个链表,如果其中有环,则需找出环的入口节点:即从头结点开始遍历,第一个被访问到的环中的节点。如下图示,入口节点的值为 2。方法一:双指针;分析距离当一个链表有环时,快慢指针必然会进入到环中。想象一下在操场跑步的场景,只要一直跑下去,快的总会追上慢的(也就是套了一圈)。当两个指针都进入环后,每轮移动使得慢指针到快指针的距离增加一,同时快指针到慢指针的距离也减少一,只要一直移动下去,快指针总会追上慢指针。设环的入口节点为 EEE,两指针相遇的节点为 CCC。设头结

2021-09-24 21:41:08 1044

原创 链表入门练习:判断是否有环的两种解法

NC4 判断链表中是否有环给出一个链表,判断其中是否有环。如上图示,如果链表中有环,则意味着尾结点的 next 指针指向了某个结点。方法一:双指针当一个链表有环时,快慢指针必然会进入到环中。想象一下在操场跑步的场景,只要一直跑下去,快的总会追上慢的(也就是套了一圈)。当两个指针都进入环后,每轮移动使得慢指针到快指针的距离增加一,同时快指针到慢指针的距离也减少一,只要一直移动下去,快指针总会追上慢指针。不难得出结论,如果一个链表存在环,那么快慢指针必然会相遇。实现代码如下:class Sol

2021-09-23 22:37:15 589

原创 链表入门指北

给出维护有序数组的场景,分析数组的局限性。引入链表。链表是什么。链表的存储方式。链表的基本操作。链表和数组的区别。链表和数组的应用场景。链表的解题技巧。相爱相杀好基友——数组与链表作为线性表的两种存储方式 —— 链表和数组,这对相爱相杀的好基友有着各自的优缺点。接下来,我们梳理一下这两种方式。数组,所有元素都连续的存储于一段内存中,且每个元素占用的内存大小相同。这使得数组具备了通过下标快速访问数据的能力。但连续存储的缺点也很明显,增加容量,增删元素的成本很高,时间复杂度均为 O(n)O(

2021-08-24 22:00:48 348 1

原创 数组入门练习:螺旋遍历二维数组

NC38 螺旋矩阵给出一个 nnn 行 mmm 列的二维数组,按螺旋的顺序返回矩阵中的所有元素。比如:输入为:[1,2,3][4,5,6][7,8,9]输出为:[1,2,3,6,9,8,7,4,5]观察上图,螺旋遍历可定义为从左上角开始,按照顺时针方向,从外向内依次遍历所有元素。如上图示,可将二维数组拆解为若干个环。由外向内的,从左上角开始遍历每一个环,即可完成对整个二维数组的螺旋遍历。特殊的,当行或列为奇数时,位于中心处的“环”只有一行或一列。接下来,将整个问题拆解为三个步骤:

2021-08-19 22:26:05 1156 1

原创 数组入门练习:调整数组顺序使奇数位于偶数前面

NC77 调整数组顺序使奇数位于偶数前面给出一个长度为 nnn 的数组 arrarrarr,将其中的奇数调整至所有偶数的前面,并要求奇偶性相同的数字之间的相对次序不变。比如,输入为 [1,2,3,4][1,2,3,4][1,2,3,4],输出为 [1,3,2,4][1,3,2,4][1,3,2,4]。不能输出 [3,1,2,4][3,1,2,4][3,1,2,4],因为 1 和 3 的相对位置变了。一个比较直观的思路是排序,将奇偶性作为比较条件,奇优于偶。借助库函数 std::stable_sort

2021-08-17 22:42:45 115

原创 数组入门练习:寻找数组的最大峰值下标

NC107 寻找峰值给出一个长度为 nnn 的数组 arrarrarr,找出下标 iii,满足 arri−1≤arri≤arri+1arr_{i-1} \le arr_i \le arr_{i+1}arri−1​≤arri​≤arri+1​。特别的:当 i=0i = 0i=0 时,可忽略 arri−1≤arriarr_{i-1} \le arr_iarri−1​≤arri​ 的限制。当 i=n−1i = n-1i=n−1 时,可忽略 arri≤arri+1arr_i \le arr_{i+1}arr

2021-08-16 22:01:07 241

原创 数组入门练习:三个数的最大乘积

NC106 三个数的最大乘积给出一个长度为 nnn (n≥3n \ge 3n≥3) 的数组 arrarrarr,包含 nnn 个正数,负数,或 0。从中任选三个数,使得乘积最大。比如,输入为 [−10,−10,−10,2,3,4][-10, -10, -10, 2,3,4][−10,−10,−10,2,3,4]。选取 [−10,−10,4][-10, -10, 4][−10,−10,4] 可获得最大乘积 400。方法一要使乘积最大,则无非以下几种选法:当 arrarrarr 中全为非负数时,选取

2021-08-15 21:28:23 230

原创 数组入门练习:数组中未出现的最小正整数

NC30 数组中未出现的最小正整数给出一个长度为 nnn 的数组 arrarrarr,找出未在 arrarrarr 中出现的最小的正整数。比如一下几组输入:arr=[1,2,3,4]arr=[1,2,3,4]arr=[1,2,3,4],答案为 5。arr=[2,3,4,5]arr=[2,3,4,5]arr=[2,3,4,5],答案为 1。arr=[−1,4,1,4]arr=[-1,4,1,4]arr=[−1,4,1,4],答案为 2。方法一:暴力枚举不难发现,对于长度为 nnn 的 arr

2021-08-14 18:08:35 630 1

原创 数组入门练习:一维数组循环移动的两种解法

NC110 旋转数组题目大意给出一个长度为 nnn 的一维数组 arrarrarr,将 arrarrarr 中的每个元素循环向右移动 mmm 个位置。更严格一点的定义是:将原本在位置 iii 处的元素移动至 (i+m) mod n(i+m)\bmod n(i+m)modn 处。比如,输入为 (1,2,3,4,5,6)(1,2,3,4,5,6)(1,2,3,4,5,6),m=2m=2m=2,操作结果如下图示:方法一首先明确一件事情,根据取模运算的分配律可得(i+m) mod n=(i mod n

2021-08-11 22:59:15 784

原创 数组入门练习:顺时针旋转的两种方法

NC18 顺时针旋转矩阵方法一标准的模板题啦,按照《数组入门指北》里面总结的套路:先计算出左上角子矩阵的边界:行下标的取值范围 0≤r≤n2−10 \le r \le \frac{n}{2}-10≤r≤2n​−1列下标的取值范围 0≤c≤n−120 \le c \le \frac{n-1}{2}0≤c≤2n−1​然后按照下述公式找出四个位置:{i′=jj′=n−i−1\begin{cases}i' = j \\j' = n-i-1 \\\end{cases}{i′=jj′

2021-08-09 21:57:34 729

原创 数组入门指北

产品经理的需求先看下面这样一段代码:#include <stdio.h>int main() { int a, b; scanf("%d %d", &a, &b); printf("%d+%d=%d\n", a, b, a+b); return 0;}稍有C语言基础的老铁,应该都能看明白:输入两个整数,然后求和并打印。在实现上:我们先定义了两个 int 类型的变量 a 和 b。接着,借助库函数 scanf 读入数据并存储在 a

2021-08-06 16:03:47 237

原创 楼教主男人八题,告一段落

各位老板好,我是自在飞花。细心的老铁可能发现了我没有讲第七题。这个是因为第七题太难了。倒不是代码实现有多么难,而是把思路讲明白很难。这个题的正解是 Garsia-Wachs 算法,一种在已知键值和查询概率的前提下,构造最优二叉搜索树的算法。我大约想了三周了,也没想出比较易懂的讲解方式,又不想抄书,所以暂且放弃了,等哪天顿悟了再回来补上。另外,我为大家找到了一个证明,很严谨也很晦涩,有兴趣的老铁可以看下 《The Art of Computer Programming》第3卷 6.2.2 节 Al

2021-08-05 16:04:43 265

原创 楼教主男人八题(第六题)

第六题了。干吧,年轻人~题目链接http://poj.org/problem?id=1739题目描述A square township has been divided up into n*m(n rows and m columns) square plots (1<=N,M<=8),some of them are blocked, others are unblocked.The Farm is located in the lower left plot and the Ma.

2021-07-12 11:38:30 165

原创 楼教主男人八题(第三题)

按照通过数排序,今天开搞 1743 Musical Theme。题目链接http://poj.org/problem?id=1743题目描述A musical melody is represented as a sequence of N (1<=N<=20000)notes that are integers in the range 1…88, each representing a key on the piano. It is unfortunate but true that

2021-07-04 16:34:05 125

原创 楼教主男人八题(第五题)

第五题啦。开始针对语言咧,用 Java 来搞会非常简单~题目链接http://poj.org/problem?id=1737题目描述An undirected graph is a set V of vertices and a set of E∈{V*V} edges.An undirected graph is connected if and only if for every pair (u,v) of vertices,u is reachable from v.You are to.

2021-07-04 16:29:00 128

原创 楼教主男人八题(第四题)

先讲几句,上周五开始,一直在头晕,稍微一动就感觉双脚离地了。去医院检查了下,万幸只是过度疲劳。在家静养了一周,吃了些药,感觉又能卷起来了。不过还是友提下,身体才是革命的本钱,老铁们一定要好好保护身体呀~接下来继续战斗~开搞 1740 「A New Stone Game」。题目链接http://poj.org/problem?id=1740题目描述Alice and Bob decide to play a new stone game.At the beginning of the ga

2021-07-03 21:10:36 331 2

原创 楼教主男人八题(第一题)

楼天城,1986 年出生,高中毕业于杭州十四中。 2004 年保送进清华大学计算机系。2008年进入姚期智院士领导的清华大学理论计算机中心攻读博士。 2017年初,创办小马智行(pony.ai)。楼天城是中国公认的大学生计算机编程第一人,经常以一人单挑一个队,在CEOI、ACM 界无人不晓其大名,人称“楼教主”。2004年,楼教主在 POJ(http://poj.org/) 举办了第一场"是男人就过八题"的主题比赛。2018年,举办了第二场。绝大多数参赛选手只过了一道题,赛后纷纷表示做男人真难。这

2021-06-19 17:47:30 2961

原创 楼教主男人八题(第二题)

今天来搞1741 Tree男人进度:2/8题目链接http://poj.org/problem?id=1741题目描述Give a tree with nnn vertices,each edge has a length(positive integer less than 1001).The defination of dist(u,v)dist(u,v)dist(u,v) is The min distance between node uuu and vvv.Give an int.

2021-06-19 17:46:44 183

原创 乘法逆元的解法及证明

》》》》

2021-05-29 20:56:35 5082

原创 浅谈辗转相除法

写在前面本文主要包含辗转相除法的正确性证明,以及时间复杂度证明。已经懂了的老铁可以右滑退出了(或者拉倒最下面点亮小手)~如何求最大公约数给定两个正整数,求解最大公约数,代码很简单,比如直接使用__gcd:int gcd = __gcd(a, b);或者撸一个辗转相除法,像下面这样:int gcd(int a, int b) { return b ? gcd(b, a%b) : a;}代码很简单,不过还是应该掌握它的证明过程和时间复杂度~辗转相除法是什么辗转相除法是用来求两个正整数

2021-04-26 10:39:30 1282

Modern Operating Systems - Andrew S. Tanenbaum

Modern Operating Systems - Andrew S. Tanenbaum

2022-10-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除