- 博客(91)
- 收藏
- 关注
原创 【软件介绍】RVC本地部署使用方法
【摘要】RVC是一款功能强大的开源语音转换工具,具有实时处理、多音效选择、高质量音频处理等特点。文章详细介绍了RVC的安装与使用方法:1)配置Python环境;2)根据电脑系统选择对应安装包解压;3)启动程序进入浏览器操作界面。重点讲解了声音克隆的关键步骤:建议使用短音频素材,选择合适训练方法(推荐pm或rmvpe),设置100次训练轮数,生成的模型文件存入weights文件夹。最后通过上传音频即可实现声音克隆。操作过程需注意保持程序运行状态,并提供了相关资源下载地址。
2025-08-06 16:26:59
351
原创 Linux_详解进程信号
本文系统介绍了Linux操作系统中信号机制的原理与应用。主要内容包括:1. 信号概念与分类:信号是进程间异步通知的软中断方式,分为普通信号(1-31)和实时信号(34-64)。普通信号用于分时系统的事件通知,实时信号适用于实时系统。2. 信号产生方式:通过按键(如Ctrl+C)、系统命令(kill)、函数调用(kill/raise/abort)和软件条件(如alarm函数)等多种方式产生信号。3. 信号处理机制:内核通过未决(pending)和阻塞(block)标志位管理信号。信号处理方式包括默认动作、忽略
2025-08-06 16:24:55
796
原创 Linux_进程间通信
本文系统介绍了进程间通信(IPC)机制,重点分析了管道通信的实现方式。文章首先阐述了进程间通信的四大目的(数据传输、资源共享、事件通知和进程控制),然后详细比较了三种IPC发展历程(管道、SystemV、POSIX)。在管道通信部分,深入讲解了匿名管道和命名管道的创建方法、读写规则、使用场景及差异,并通过多个代码示例(如进程池、文件拷贝、客户端-服务器通信)展示了实际应用。特别强调了管道的特点:半双工、流式服务、生命周期随进程等。最后,通过完整的客户端/服务器通信示例代码,展示了命名管道在不相关进程间通信的
2025-08-02 14:42:47
1058
原创 Linux_库制作与原理
本文介绍了Linux系统中动静态库的基本概念和使用方法。主要内容包括:1. 库的定义与分类,解释了静态库(.a/.lib)和动态库(.so/.dll)的区别;2. 静态库的制作与使用,详细说明了ar命令打包.o文件的方法,以及gcc链接静态库的三种场景;3. 动态库的制作与加载,重点讲解了动态库的编译选项(-fPIC,-shared)和四种解决库路径搜索问题的方法;4. 目标文件和ELF文件格式分析,包括ELF文件的组成结构、从编译到加载的过程,以及程序表头和节表头的作用;5. 深入解析了静态链接和动态链接
2025-07-29 18:50:26
829
1
原创 Linux_软硬连接
硬链接:不支持对目录创建硬链接,虽然现代一些Linux版本允许对目录做硬链接,但在一般情况下并不推荐这样做,因为可能导致循环引用等问题。硬链接:即使源文件(即其他硬链接所指向的文件)被删除,只要存在至少一个硬链接,文件内容仍能通过其它硬链接访问,不会消失。软链接:如果删除了软链接所指向的源文件,那么通过软链接尝试访问文件将会失败,因为软链接失去了有效的指向。#取消链接,注意:删除目录链接时目录后面加“/”是删除目录,不加是删除链接。软链接:可以对文件或目录创建软链接,经常被用来链接目录。
2025-07-24 16:41:45
1013
原创 Linux_Ext系列文件系统基本认识
从现在开始,磁盘就是一个元素为扇区的一维数组,数组的下标就是每一个扇区的LBA地址。机械磁盘作为计算机中唯一的一个机械设备,虽然他的访问速度慢于机械硬盘,但因其容量大,价格便宜,被服务器所选中。那我们如何找到LBA地址呢,我们需要通过CHS地址转化成LBA,CHS转换LBA地址,这是有硬件本身磁盘来做的。每一个扇区都有一个下标,我们叫做LBA(LogicalBlockAddress)地址,其实就是线性地址。到这我们要思考一个问题,文件数据都储存在”块”中,那么很显然,在柱面上的磁道,扇区个数是一样的。
2025-07-22 22:14:50
582
原创 Linux_基础IO详解
【Linux文件操作指南】 本文系统讲解了Linux文件操作的核心概念:1.文件本质是磁盘上的永久存储,包含元数据与内容;2.回顾了C语言文件接口(fopen/fread/fwrite)及标准流(stdin/stdout/stderr);3.详解系统调用open/read/write/dup2,阐述文件描述符分配规则与重定向原理;4.通过结构体file_operations揭示"一切皆文件"的设计思想;5.分析缓冲机制(全缓冲/行缓冲/无缓冲)对IO效率的影响,并提供fflush等刷新策
2025-07-22 17:08:04
854
原创 Linux入门_线程控制详解
获取命令行解析命令行建立一个子进程 (fork)替换子进程(execvp)父进程等待子进程退出 (wait)// 下面是shell定义的全局数据// 1. 命令行参数表// 2. 环境变量表// 3. 别名映射表// 4. 关于重定向,我们关心的内容// {// index++;// }if(pwd!g_envs = 0;//本来要从配置文件来//1. 获取环境变量environ[i]
2025-07-19 14:31:16
559
原创 Linux入门_线程概念详解
先描述后组织例子:学生,辅导员,校长描述被管理的对象组织被管理的对象总结计算机管理硬件1.描述起来,用struct结构体2.组织起来,用链表或其他高效的数据结构。
2025-07-07 16:42:24
748
原创 linux_git的使用
本文介绍了版本控制工具Git的基本概念和使用方法。首先解释了版本控制系统的功能是记录文件历史变更,并重点说明Git是目前主流的分布式版本控制系统。文章回顾了Git的发展历史,从Linux社区开发背景到其设计目标。在操作部分详细讲解了Git的安装步骤(通过yum或apt命令)以及基本使用流程——“三板斧”:git clone克隆仓库、git add添加文件、git commit提交变更、git push推送至远程服务器。最后指出这些操作完成后即可在Github页面查看代码改动。
2025-07-04 21:03:26
1060
1
原创 Linux_编辑器Vim基本使用
Vim是vi编辑器的升级版,支持语法高亮和多平台使用。它有三种主要模式:命令模式(移动光标、删除等操作)、插入模式(文字输入)和末行模式(保存、查找等)。常用操作包括:i进入插入模式,ESC返回命令模式,:w保存,:q退出。命令模式下,hjkl移动光标,dd删除行,yy复制行,p粘贴,u撤销。末行模式支持行号显示(setnu)、跳转行号(#)、查找(/或?)等功能。Vim通过模式切换和丰富指令实现高效文本编辑。
2025-05-26 20:56:53
1167
1
原创 Linux详解基本指令
如果当前⽤⼾是root: yum install -y tree (因为现在开始⽤的都是root,所以推荐这个⽤法) # 如果当前⽤⼾是普通⽤⼾: sudo yum install -y tree (后⾯讲讲完vim,⼤家才能将⾃⼰添加到系统信任列表中,暂时普通⽤⼾⽆法使⽤sudo)理解路径存在的意义:树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位文件。其中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,路径具有唯一性。
2025-05-19 17:46:46
1242
原创 Linux环境搭载
Linux环境的搭建主要有三种方式:直接安装在物理机、使用虚拟机软件和购买云服务器。直接安装不推荐,因为Linux桌面使用不友好;虚拟机软件如VMWare可能存在bug,导致环境问题;最推荐的是使用云服务器,如腾讯云、阿里云等,不仅搭建简单,还能让项目被外网访问,适合学生共用。远程连接Linux需要服务器的公网IP、管理员账户(root)和密码。使用Xshell远程终端软件,通过新建会话并输入ssh [ip]和密码即可连接。在Xshell中,复制粘贴使用ctrl+insert和shift+insert,而非
2025-05-19 09:14:45
378
原创 C++_数据结构_哈希表(hash)实现
当key是string/Date等类型时,key不能取模,那么我们需要给HashTable增加一个仿函数,这个仿函数支持把key转换成一个可以取模的整形,如果key可以转换为整形并且不容易冲突,那么这个仿函数就用默认参数即可,如果这个Key不能转换为整形,我们就需要自已实现一个仿函数传给这个参数,实现这个仿函数的要求就是尽量key的每值都参与到计算中,让不同的key转换出的整形值不同。在理想状态中,去找到符合的哈希函数是不可能的,哈希冲突是必然发生的,所以我们要尽可能减少设计的哈希函数的哈希冲突。
2025-05-18 22:03:08
1122
原创 C++_unordered_map和unordered_set的使用
1. unordered_set系列的使用1.1unordered_set和unordered_multiset参考文档。
2025-04-27 22:36:44
978
原创 C++_数据结构_详解红黑树
大家应该都学过平衡二叉树(AVLTree),了解到AVL树的性质,其实平衡二叉树最大的作用就是查找,AVL树的查找、插入和删除在平均和最坏情况下都是O(logn)。AVL树的效率就是高在这个地方。如果在AVL树中插入或删除节点后,使得高度之差大于1。此时,AVL树的平衡状态就被破坏,它就不再是一棵二叉树;为了让它重新维持在一个平衡状态,就需要对其进行旋转处理, 那么创建一颗平衡二叉树的成本其实不小.
2025-04-25 11:42:41
1440
原创 LeetCode_滑动窗口_长度最小的子数组
我们继续观察,当我们sum -= nums [left],并且进行判断,sum <= target,那我们需要再回到left的位置吗,当然这是没有必要的,当我们的sum <=target时,此时已经满足,不再进入判断,我们只需要再次right++即可;然后我们通过判断,每次大于我们的target,我们让left++,重新回到left的位置,这样我们的效率来到了n!,当我们大于target时,后续的遍历都会比前一次长度更长,所以省略这些不必要的过程。是该条件下的长度最小的子数组。个正整数的数组和一个正整数。
2025-03-28 13:43:07
469
原创 C++_数据结构_AVL树
因为10 < b子树的值 < 15,将b变成10的右⼦树,10变成15的左子树,15变成这棵树新的根,符合搜索树的规则,控制了平衡,同时这棵的高度恢复到了插入之前的h+2,符合旋转原则。因为5 < b子树的值 < 10,将b变成10的左子树,10变成5的右子树,5变成这棵树新的根,符合搜索树的规则,控制了平衡,同时这棵的高度恢复到了插入之前的h+2,符合旋转原则。对不平衡子树旋转,旋转后本质调平衡的同时,本质降低了子树的高度,不会再影响上一层,所以插入结束。1->2 或者 -1->-2。
2025-02-06 16:52:39
1035
原创 OJ_两个数组的交集_环形链表 ll
数据结构初阶阶段,我们通过证明一个指针从头开始走一个指针从相遇点开始走,会在入口点相遇,指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。这里我们利用set插入的性质,返回的pair(iterator,bool)根据常规解法中的思路,我们发现这与set的性质类似,链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,返回链表开始入环的第一个节点。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。给定一个链表的头节点。,则在该链表中没有环。
2025-02-04 19:09:05
699
原创 C++_数据结构_map与set
map的声明如下,Key就是map底层关键字的类型,T是map底层value的类型,set默认要求Key支持小于比较,如果不支持或者需要的话可以自行实现仿函数传给第二个模版参数,map底层存储数据的内存是从空间配置器申请的。一般情况下,我们都不需要传后两个模版参数。map底层是用红黑树实现,增删查改效率是OlogN,迭代器遍历是走的中序,所以是按key有序顺序遍历的。
2025-02-04 15:29:35
714
原创 C++_详解多态
多态是一个继承关系下的类对象,去调用同一个函数,产生不同行为。比如student继承person对象。person是全价买票,student是优惠买票。
2024-12-02 22:46:06
871
原创 C++二叉树OJ_中序遍历(非递归)
二叉树的中序遍历(迭代):主要考虑根与左子树插入的前后关系,利用栈(存节点)解决无法访问父节点的问题。主要考虑根与左子树插入数组的前后关系,我们先观察一下二叉树的前序遍历。递归对于你来说,手到擒来(这里就不过多的解释了)在中序遍历(左子树,根,右子树)与上一章。给定一个二叉树的根节点。
2024-11-26 12:55:54
498
原创 C++_深入理解继承与虚继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,而继承是类设计层次的复用。比如说一个人,他具有身高,年龄,姓名等个人信息,然后利用这些信息我们可以定义一个Person类。而当我们想定义一个学生Student类时,学生首先肯定是一个人,所以这时候我们可以复用Person类。但是学生除了具备一个人的基本信息外,
2024-11-25 18:05:06
1077
原创 C++OJ_ 二叉搜索树与双向链表
当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。数据范围:输入二叉树的节点数 0≤n≤10000≤n≤1000,二叉树中每个节点的值 0≤val≤10000≤val≤1000。要求:空间复杂度O(1)O(1)(即在原树上操作),时间复杂度 O(n)O(n)3.函数返回的TreeNode,有左右指针,其实可以看成一个双向链表的数据结构。输入题面图中二叉树,输出的时候将双向链表的头节点返回即可。2.返回链表中的第一个节点的指针。双向链表的其中一个头节点。
2024-11-16 23:48:24
464
原创 C++_STL之priority_queue(优先级队列)
priority_queue文档介绍优先级队列的实现的关键取决于数据结构的堆,如果忘记了,就回去看看吧【数据结构】详解堆1.优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。2. 此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。3. 优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。
2024-11-15 19:58:40
910
原创 C++_模板进阶
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。
2024-11-15 19:57:35
743
原创 C++OJ_ 栈的压入、弹出序列
例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。由于是[1,2,3,4,5]的压入顺序,[4,3,5,1,2]的弹出顺序,要求4,3,5必须在1,2前压入,且1,2不能弹出,但是这样压入的顺序,1又不能在2之前弹出,所以无法形成的,返回false。it_pop++指向下一元素,再次进入循环判断,新的辅助栈的栈顶是否与++后的*it_pop的值相等,所以此处应该加入一个判断。如果不等,压入压入栈的下个元素。
2024-11-09 16:45:52
994
原创 C++OJ_最小栈
设计一个支持pushpoptop操作,并能在常数时间内检索到最小元素的栈。实现MinStackMinStack()void pop()int top()--> 返回 -3.--> 返回 0.--> 返回 -2.topgetMinpushpoptopgetMin3 * 104。
2024-11-09 14:57:08
640
原创 C++OJ_二叉树的层序遍历
/所以++level后右子树不必++rootlevel(root->left, ++level, s, size);//由于左子树与右子树为同一层。由于题目要求存放在 vector二维数组中,我们。//释放掉不需要的空间。(即逐层地,从左到右访问所有节点)。开辟(2000*(int))的空间。int level(控制存放位置)由于树中节点数目在范围。
2024-11-09 14:10:54
767
原创 C++_STL之Stack,Queue的使用及其模拟实现
stack的文档介绍深入了解栈在数据结构中有讲解深入了解栈这里作简要讲解。queue的文档介绍在数据结构中有讲解最小栈这里作简要讲解。1. 队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。3. 底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。
2024-10-17 18:10:28
793
原创 C++_STL之vector的使用及实现
1.2vector的使用(constructor)构造函数声明接口说明vector()(重点)无参构造构造并初始化n个val(重点)拷贝构造使用迭代器进行初始化构造//vectoe//长度为4,值为100的数组//拷贝构造//与s3类似//迭代器it!// const对象使用const迭代器进行遍历打印while (it!it++;
2024-09-30 11:41:37
829
原创 C++_实现日期类
/ 日期-日期 返回天数*this = A;A = *this;*x = *y;*y = tmp;int _month;int _day;
2024-09-26 21:05:06
836
gitee(基于Git的代码托管和研发协作平台)
2024-09-26
TortoiseGit
2024-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人