- 博客(146)
- 收藏
- 关注
原创 设置SCP无需输入密码
其中,username是远程机器的用户名,remote_host是远程机器的IP地址或主机名。如果无需输入密码,则文件将被传输到远程机器上。如果需要输入密码,则需要重新配置SSH密钥认证。
2025-02-19 15:53:26
447
原创 内核数据结构用法(5)hlist
(哈希链表)是一种在 Linux 内核中使用的链表结构,主要用于实现哈希表。它是一种轻量级的数据结构,适用于需要高效插入和删除操作的场景。以下是对 的详细介绍及用法。在 Linux 内核中, 由两个主要结构组成:特点双向链表:每个节点都有一个指向下一个节点的指针和一个指向前一个节点的指针(通过 实现)。减少内存开销:相比于传统链表, 结构能够减少内存占用,尤其是在使用哈希表时。适用于哈希表:常与哈希表结合使用,提供高效的查找、插入和删除操作。用法1. 初始化在使用 之前,需要先初始化
2025-02-19 15:46:58
451
原创 内核数据结构用法(4)idr (ID Radix Tree)
内核中的 IDR(ID Radix Tree)是一种用于管理分配给对象的唯一标识符(ID)的数据结构。它在 Linux 内核中被广泛使用,可以有效地存储和查找这些 ID。是 Linux 内核中用于动态分配 ID 的函数,通常用在 ID 的管理中,例如为设备、资源等分配唯一的标识符。这个函数的特点是支持循环分配,也就是说,当达到最大 ID 后,会重新从最小 ID 开始分配。确保在适当的上下文中使用 IDR 函数,以避免竞态条件。要向 IDR 中添加一个新的 ID,可以使用。在不再需要 IDR 时,可以使用。
2025-02-19 15:46:19
357
原创 内核数据结构用法(3)rbtree
红黑树(RBTree)是 Linux 内核中用于高效管理有序数据集合的一种自平衡树结构。以下是红黑树的基本概念及其在内核中的使用方法:在使用红黑树之前,需要定义一个红黑树结构:2. 定义节点结构红黑树的每个节点通常包含数据和红黑树节点的结构:3. 插入节点使用 函数插入新节点:4. 查找节点使用 函数查找节点:5. 删除节点使用 删除节点:6. 遍历红黑树可以使用 , 等函数进行遍历:若要遍历删除所有的节点,则使用: 是 Linux 内核中用于方便地获取红黑树节点数据的宏。它
2025-02-19 15:45:13
299
原创 内核数据结构用法(3)rbtree
红黑树(RBTree)是 Linux 内核中用于高效管理有序数据集合的一种自平衡树结构。以下是红黑树的基本概念及其在内核中的使用方法:在使用红黑树之前,需要定义一个红黑树结构:2. 定义节点结构红黑树的每个节点通常包含数据和红黑树节点的结构:3. 插入节点使用 函数插入新节点:4. 查找节点使用 函数查找节点:5. 删除节点使用 删除节点:6. 遍历红黑树可以使用 , 等函数进行遍历:若要遍历删除所有的节点,则使用: 是 Linux 内核中用于方便地获取红黑树节点数据的宏。它
2025-02-19 15:44:13
341
原创 ioctl基础
IO:定义没有参数的ioctl命令。<<8type:设备类型,通常是一个字符或字符串,用于标识设备驱动。nr:命令号,表示特定的操作。_IOR:定义从内核到用户空间读取数据的ioctl命令。<<8<<16size:传输数据的大小,表示用户空间结构的字节数。_IOW:定义从用户空间向内核写入数据的ioctl命令。<<8<<16_IOWR:定义既可以从用户空间读取数据也可以向用户空间写入数据的ioctl命令。<<8<<16。
2025-02-19 15:40:06
351
原创 内核和qemu
dm-verity是 Linux 内核中的一种数据完整性验证机制,主要用于保护存储在设备上的数据,确保其未被篡改。它特别适用于嵌入式设备和安全敏感的环境,例如 Android 操作系统。dm-verity 是一种强大的机制,用于确保存储数据的完整性,防止未授权的篡改。对于需要高安全性的环境,例如嵌入式设备和移动操作系统,dm-verity 提供了有效的保护措施。通过自动化的验证过程,dm-verity 能够增强系统的安全性,确保用户数据的可信性。
2025-02-19 15:33:18
347
原创 /proc/[pid]/smaps
是一个非常有用的工具,用于分析和调试进程的内存使用情况。通过查看该文件,您可以深入了解每个内存段的状态和使用情况,从而帮助优化程序性能和资源管理。
2025-02-19 15:28:40
170
转载 chrome浏览器STATUS_STACK_BUFFER_OVERRUN解决方案
windows安全中心–》应用和浏览器控制—》Exploit Protection设置–》程序设置–》添加进行自定义–》选择准确的文件路径—》C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe–》在弹出窗口中找到“硬件强制实施的堆栈保护” 替代系统设置开,仅审核勾上—》应用–》重启Edge完成修复。修复前的一个解决方案分享给大家。
2023-05-17 16:37:10
3238
原创 近期edge、谷歌浏览器崩溃的问题解决方案
尝试了网上各种各样的方法都没用,原因大概率就是浏览器自动升级了chrome113版本,有bug,退回到chrome112版本就能使用了。
2023-05-08 19:53:53
1188
原创 cpp之十大排序算法
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-riZ9z3wf-1678258189998)(null)]排序算法的稳定性:在具有多个相同关键字的记录中,若经过排序这些记录的次序保持不变,说排序算法是稳定的。
2023-03-08 14:52:06
1689
1
原创 cpp之STL
Iterator(迭代器)模式又称游标(Cursor)模式,用于提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。或者这样说可能更容易理解:Iterator模式是运用于聚合对象的一种模式,通过运用该模式,我们可以在不知道对象内部表示的情况下,按照一定顺序(由iterator提供的方法)访问聚合对象中的各个元素。
2023-02-28 11:01:54
1265
原创 cpp语言基础
只能在堆上生成对象:将析构函数设置为私有。原因:C++是静态绑定语言,编译器管理栈上对象的生命周期,编译器在为类对象分配栈空间时,会先检查类的析构函数的访问性。若析构函数不可访问,则不能在栈上创建对象。只能在栈上生成对象:将new 和 delete 重载为私有。原因:在堆上生成对象,使用new关键词操作,其过程分为两阶段:第一阶段,使用new在堆上寻找可用内存,分配给对象;第二阶段,调用构造函数生成对象。将new操作设置为私有,那么第一阶段就无法完成,就不能够再堆上生成对象。static关键字。
2023-02-19 10:56:12
1886
原创 一文搞懂MySQL基础语法
在分组的列上通常配合 COUNT, SUM, AVG等函数一起使用。两个计算结果是不一样的,ifnull函数的作用就是发现值为null后将其值变为0。通过deptno字段对表数据进行分组后,然后通过sum(sal)来计算每个分组的总和。LIMIT 接受⼀个或两个数字参数,参数必须是⼀个整数常量。顺序:SELECT …如果只给定⼀个参数,它表示返回从第一行开始记录行的数⽬;例如:求工资总和大于9000的部门,并按照工资总和排序。如果给定两个参数,第⼀个参数指定起始记录⾏的。关键字,后面的参数是记录行的。
2023-02-14 15:35:21
1147
原创 通关算法题之 ⌈动态规划⌋
动态规划是什么?解决动态规划问题有什么技巧?如何学习动态规划?首先,动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法,只不过在计算机问题上应用比较多,比如说让你求最长递增子序列呀,最小编辑距离呀等等。既然是要求最值,核心问题是什么呢?求解动态规划的核心问题是穷举。因为要求最值,肯定要把所有可行的答案穷举出来,然后在其中找最值呗。首先,虽然动态规划的核心思想就是穷举求最值,但是问题可以千变万化,穷举所有可行解其实并不是一件容易的事,需要你熟练掌握递归思维,只有列出正确的「状态转移方程」,
2022-12-30 15:24:39
1235
原创 通关算法题之 ⌈字符串⌋
设计一个支持 , , 操作,并能在常数时间内检索到最小元素的栈。实现 类:使用两个栈,一个正常的按照栈的逻辑进行压入和弹出操作,另一个存储最小值。225. 用队列实现栈请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(、、 和 )。实现 类:注意:一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时在去弹出元素就是栈的顺序了。232. 用栈实现队列请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作
2022-12-07 11:29:25
832
原创 通关算法题之 ⌈栈和队列⌋
设计一个支持 , , 操作,并能在常数时间内检索到最小元素的栈。实现 类:使用两个栈,一个正常的按照栈的逻辑进行压入和弹出操作,另一个存储最小值。225. 用队列实现栈请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(、、 和 )。实现 类:注意:一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时在去弹出元素就是栈的顺序了。232. 用栈实现队列请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作
2022-12-06 11:17:31
480
原创 通关算法题之 ⌈数组⌋ 下
给定一个 个元素有序的(升序)整型数组 和一个目标值 ,写一个函数搜索 中的 ,如果目标值存在返回下标,否则返回 -1。版本一:版本二:🔥while 循环的条件是
2022-11-23 16:48:44
570
原创 通关算法题之 ⌈数组⌋ 上
过程中会将数组划分成最小为1个元素的子数组,然后依次比较子数组的每个元素的大小,依次取出较小的一个合并成大的子数组。这里我们也可以用相同的方法划分,划分之后相邻一个元素的子数组就可以根据大小统计逆序对,而不断往上合并的时候,因为已经排好序了,我们逆序对可以往上累计。将和数组元素值相同的数组下标中对应的值置为其对应的负数,这样,当两个相同的元素映射到同一个位置,会发现元素值已经为负数了,既该值为重复的值。在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。本身模拟哈希集合的效果。
2022-11-22 17:01:05
281
原创 通关算法题之 ⌈二叉树⌋ 下
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 。初始状态下,所有 next 指针都被设置为 。示例:这道题若使用常规的遍历二叉树的话,只能将一个节点的左子树指向右子树,不同节点的子树之间无法建立联系,所以要改变遍历的方式。传统的 函数是遍历二叉树的所有节点,但现在我们想遍历的其实是两个相邻节点之间的「空隙」,所以可以在二叉树的基础上进行抽象,
2022-11-20 10:01:12
805
原创 音视频总结
AAC是高级音频编码(Advanced Audio Coding)的缩写,被认为是MP3的继任者,相对MP3有更高的压缩效率。由Fraunhofer IIS、杜比实验室、AT&T、Sony(索尼)等公司共同开发。出现于1997年,最初是基于MPEG-2的音频编码技术,目的是取代MP3格式。2000年,MPEG-4标准出台,AAC重新集成了其它技术包括SBR或PS特性,目前AAC可以定义为⼀种由 MPEG-4 标准定义的有损音频压缩格式。AAC被iPhone、iTunes以及大多数便携式设备所使用。
2022-11-09 20:27:28
2266
原创 ijkplayer项目
【错误记录】编译 Android 版本的 ijkplayer 报错 ( You must define ANDROID_NDK before starting. | 下载指定版本 NDK )_韩曙亮的博客-优快云博客AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载git大文件下载文件结构ijkplayer在底层重写了ffplay.c文件,主要是去除ffplay中使用sdl音视频库播放
2022-11-09 20:26:49
1853
原创 ffplay源码分析
由于音频和视频的输出不在同一个线程,而且,也不一定会同时解出同一个pts的音频帧和视频帧。更有甚者,编码或封装的时候可能pts还是不连续的,或有个别错误的。因此,在进行音频和视频的播放时,需要对音频和视频的播放速度、播放时刻进行控制,以实现音频和视频保持同步,即所谓的音视频同步。在ffplay中,音频(audio)和视频(video)有各自的输出线程,其中音频的输出线程是sdl的音频输出回调线程,video的输出线程是程序的主线程。
2022-11-09 20:26:15
416
原创 音视频同步
音视频同步的目的是为了使播放的声音和显示的画面保持一致。视频按帧播放,图像显示设备每次显示一帧画面,视频播放速度由帧率确定,帧率指示每秒显示多少帧;音频按采样点播放,声音播放设备每次播放一个采样点,声音播放速度由采样率确定,采样率指示每秒播放多少个采样点。如果仅仅是视频按帧率播放,音频按采样率播放,二者没有同步机制,即使最初音视频是基本同步的,随着时间的流逝,音视频会逐渐失去同步,并且不同步的现象会越来越严重。这是因为:一、播放时间难以精确控制,二、异常及误差会随时间累积。
2022-11-09 20:25:33
2780
原创 视频播放总结
基于 FFmpeg 和 SDL 实现简易视频播放器,主要分为读取视频文件解码和调用 SDL 播放两大部分。首先尝试实现(无声音)。使用FFmpeg库实现视频播放的函数调用流程图:初始化打开视频文件读取文件头,将文件格式信息存储在"fmt context"中。搜索流信息读取一段视频文件数据,尝试解码,将取到的流信息填入pFormatCtx->streams。p_fmt_ctx->streams是一个指针数组,数组大小是pFormatCtx->nb_streams。查找第一个视频流。
2022-11-09 20:24:17
142
原创 音视频基础
通过 av_read_frame() 从媒体文件中获取得到的一个 packet 可能包含多个(整数个)音频帧或单个视频帧,或者其他类型的流数据。图像格式转换的目的,是为了解码后的视频帧能被 SDL 正常显示,因为FFmpeg解码后得到的图像格式不一定就能被SDL支持,这种情况下不作图像转换是无法正常显示的。:搜索流信息:读取一段视频文件数据,尝试解码,将读取到的流信息填入pFormatCtx->streams;音频:PCM->ACC数据,视频:YUV->H264,音视频封装:FLV / MP4。
2022-11-09 20:22:04
1539
原创 cmake使用教程
可以用来指定工程的名字和支持的语言,默认支持所有语言PROJECT (HELLO) 指定了工程的名字,并且支持所有语言—建议PROJECT (HELLO CXX) 指定了工程的名字,并且支持语言是C++PROJECT (HELLO C CXX) 指定了工程的名字,并且支持语言是C和C++该指定隐式定义了两个CMAKE的变量_BINARY_DIR,本例中是 HELLO_BINARY_DIR_SOURCE_DIR,本例中是 HELLO_SOURCE_DIR。
2022-11-08 21:17:44
9138
1
空空如也
最近github.io被墙了吗,怎么访问不了了?
2022-12-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人