- 博客(1185)
- 资源 (52)
- 收藏
- 关注

原创 老程序员解Bug的通用套路
程序员在很多人的印象里是一份严(ku)谨(bi)的职业,也是一个被搞怪吐槽乐此不疲的职业,程序员们面对复杂的代码敲打电脑时连眉头都不会皱一下,但是有一个词却是他们痛苦的根源,它就是Bug。 记得刚毕业入行时,我们老大派给我和另外一个新来同事的第一件事就是修Bug,要不是在学校敲过几年代码,还真不知道如何下手!和我一起进公司的另外一个同事完全就是以“看戏者”的身份,看我搞了...
2018-06-06 09:25:29
12416
25

原创 C++17新属性详解
C++17的入选特性有:(1).非类型模板参数的 auto 模板参数分为两种,一种是类型模板参数,也是我们用得最多的一种:template <typename T, typename U>auto add(T t, U u) { return t+u;} 里面的 T 和 U 都是类型模板参数。另一种是非类型模板参数,它可以让不同的字面量成为模板的参数:te...
2018-05-27 21:59:38
54420
5

转载 C++大牛的博客
1. C++大牛的博客 Bjarne Stroustrup的博客: Bjarne Stroustrup’s HomepageBjarne Stroustrup,不认识的可以去面壁了,没有他,就没有我们现在的饭碗。Bjarne Stroustrup是丹麦人,目前任教于TAMU。他的Homepage和他的书籍The C++ Programming Language一样
2018-01-21 21:37:00
5983
1

原创 C++模板详解
一.C++模板的定义: 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。模板是一种对类型进行参数化的工具;二.使用模板的目的: 能够使得程序员编写与类型无关的代码。比如编写了一个交换两个整型int 类型的swap函数,这个函数就只能实现int 型,对double,字符这些
2017-05-31 21:19:42
2481
1

原创 Qt的5种常用布局搭建
Qt布局详解: 界面开发首先要对整个界面进行布局,使窗体上的所有的控件必须有一个合适的尺寸和位置。那么做出来的界面才看起来美观。那么如何对界面进行布局呢?Qt提供了一些类负责排列窗体上的控件,主要有:QHBoxLayout,QVBoxLayout,QGridLayout,QFormLayout,QStackLayout。(布局管理类)这些类简单易用,无论在代码中还是用Qt Design
2016-09-30 09:06:16
5693
1

原创 优秀程序设计的18大原则
优秀程序设计的18大原则1、避免重复原则(DRY - Don’t repeat yourself)编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就很容易形成一个抽象体。2、抽象原则(Abstraction Principle)与DRY原则相关。要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置。
2016-07-11 17:07:57
6332
原创 BBR算法原理与实现深度解析
BBR算法通过重新定义拥塞控制的基本范式,为现代网络应用提供了突破性的解决方案。随着QUIC协议的普及和智能网卡技术的发展,BBR类算法将在边缘计算、云游戏、工业物联网等领域发挥更重要的作用。
2025-03-31 23:26:00
641
原创 音频编解码器Opus详解
Opus是一款完全开放、免版税、功能多样的音频编解码器。它适用于互联网上的交互式语音和音乐传输,但也适用于存储和流媒体应用。Opus是由IETF(互联网工程任务组)标准化的开源音频编解码器(RFC 6716),由Xiph.Org基金会、微软、Mozilla等公司联合开发。它结合了Skype的SILK语音编码和Xiph的CELT音乐编码技术,支持从6kbps到510kbps的可变比特率,以及8kHz到48kHz的采样率范围。
2025-03-30 23:15:39
823
原创 实时美颜直播SDK开发总结
实时美颜是一种通过算法对视频或图像中的人脸进行实时美化处理的技术,广泛应用于直播、短视频、视频通话等场景。其核心目标是在保证低延迟的前提下,对人脸皮肤、五官、轮廓等进行自然优化,同时保留细节和真实感。
2025-03-30 22:21:47
499
原创 从文本文件里读取信息,然后对里面的数据进行排序
要清楚"文件结束符"(0xff).就是说我们文件最后的字符不是文件结束符,而最后的字符的下一位才是.所以操作再读多一次.就为什么上面if (FILE.eof())总是false的. 在一些编译器中(dev c++),它读到最后一个字符后文件位置的指针会定在那儿,所以就会重复最后一个字符.主要的是把eof()改为peek() == EOF来判别,其中peek()是取文件当前指针,EOF是文件尾标符,它的值为-1.所以采用这种方法就解决上面eof()的问题了..这种方法也可以用在读写二进制文件中.
2025-03-23 21:45:17
1001
原创 递归算法详解
递归调用一种是解决方案,一种是逻辑思想,将一个大工作分为逐渐减小的小工作,比如说一个和尚要搬50块石头,他想,只要先搬走49块,那剩下的一块就能搬完了,然后考虑那49块,只要先搬走48块,那剩下的一块就能搬完了……递归调用就是在当前的函数中呼叫当前的函数并传给相应的参数,这是一个动作,这一动作是层层进行的,直到满足一般情况的的时候,才停止递归调用,开始从最后一个递归调用返回。这个函数叫做fact,它自己调用自己,这个就是一个典型的递归调用,调用过程类似一个栈。
2025-03-23 20:59:55
1224
原创 判断检查链表是否有环
判断两个链表是否有环是C++中一个常见的问题。在正常情况下,链表的最后一个节点的指针指向nullptr,表示链表的结束。但如果链表中存在环,意味着链表中的某个节点的指针指向了链表中之前的某个节点,形成了一个循环结构。
2025-03-23 20:31:33
325
原创 判断两个链表是否相交
判断两个链表是否相交,指的是判断两个单链表是否存在至少一个公共节点。如果存在公共节点,那么从这个公共节点开始,两个链表后续的所有节点都是相同的,因为单链表的每个节点只有一个指向下一个节点的指针。如果遍历到链表末尾都没有找到相同的节点,则说明两个链表不相交。可以通过遍历两个链表,找到它们的长度,然后让较长的链表先走差值步,使得两个链表剩余的长度相同,再同时遍历两个链表,判断是否有相同的节点。如果两个链表相交,那么从相交节点开始,它们的后续节点是完全相同的。也就是说,相交节点及其之后的节点在内存中是共享的。
2025-03-23 20:19:03
577
原创 单向链表的反转
最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。初始化三个指针,分别为 prev(指向前一个节点,初始值为 nullptr)、curr(指向当前节点,初始值为链表头节点)和 next(指向下一个节点)。reverseList 函数:实现了链表的反转逻辑,通过遍历链表,改变每个节点的 next 指针指向。在这个过程中,需要记录当前节点、前一个节点和下一个节点,以避免在修改指针时丢失后续节点的信息。
2025-03-23 19:59:13
888
原创 C++堆和栈详解
优先使用栈:适合小数据、短生命周期、确定性内存需求。谨慎使用堆:适合动态、大数据、跨作用域共享的场景,但需注意释放和同步。个人建议大家通过智能指针(C++) 简化堆管理。
2025-02-25 23:36:40
1176
原创 C++实现经典的“快速排序(Quick Sort)”算法
快速排序是一种基于分治法的排序算法。它的基本思想是通过一个“基准元素”(pivot)将待排序数组分成两个子数组,其中一个子数组的元素全部小于基准元素,另一个子数组的元素全部大于基准元素,然后递归地对两个子数组进行排序。
2025-02-25 23:26:26
594
原创 C实现的单链表及其19种操作
单链表是一种线性数据结构,由一系列节点组成,这些节点按顺序链接。每个节点包含数据部分和一个指向下一个节点的指针。链表的第一个节点称为头节点 ,最后一个节点的指针指向空 ,表示链表的结束。以上代码完整实现了所有18种链表操作,并包含快速排序实现。使用时需要注意指针操作的正确性和内存管理。
2025-02-23 21:02:19
1056
原创 C++实现单链表及其19种操作
单链表是一种线性数据结构,由一系列节点组成,这些节点按顺序链接。每个节点包含数据部分和一个指向下一个节点的指针。链表的第一个节点称为头节点 ,最后一个节点的指针指向空 ,表示链表的结束。在C++语言中,可以使用结构体来定义节点:int data;} Node;//定义链表节点结构int data;Node* next;以上代码完整实现了所有18种链表操作,并包含快速排序实现。使用时需要注意指针操作的正确性和内存管理。
2025-02-23 21:00:35
402
原创 PTS、Timebase和视频编码器码率控制
开发者容易犯的一类错误是,设置Timebase = 1 / FPS,而PTS的数值又是按照毫秒或微秒得来的,即设置给编码器的Timebase,不是PTS真正的时间单位。两个是等效的,可以认为固定帧率时,用frame_num作为pts,用1/fps作为timebase。固定帧率的视频,以上两种码率控制结果相同。另一种码率自适应实现方式是设置VFR = true,需要调整码率时reconfig新的码率给编码器。一般而言,设置给编码器的VFR参数应该按照真实采集情况而定。对于固定帧率的视频,
2025-02-23 20:58:13
758
原创 Timestamp详解
POC表达的是显示序,只有顺序的概念。没有重排序的视频编码格式,或者像AV1等在解码器内部处理重排序的编码格式,理论上也不需要显示的DTS,但现有的媒体处理框架很多地方依赖DTS。随着距离变远,因为光的传播速度远大于声音,先观测到闪电,后接收到雷声,表现出“音视频的不同步”(除非已知光速和声速,通过计算做出补偿)可以认为,采集端的音视频同步是自然发生的(忽略采集设备自身延迟),播放端的音视频同步是主动控制的结果。在后续环节打时间戳,离音视频事件发生的时刻变远了,引入中间环节的浮动时间,音视频同步效果变差。
2025-02-23 20:49:11
685
原创 哈希表使用详解
int data;}NODE;hash表是一种非常好用的数据结构,我们可以通过哈希函数直接定位数据,避免线性搜索快速访问数据。而且hash表的灵活性比较好,适用于需要频繁插入和查询的场景,如数据库索引、缓存系统等。
2025-02-09 19:08:09
956
原创 git 多个工程一次更新所有工程模块的办法
在大型项目中,通常会有多个子项目或模块分布在不同的Git仓库中。以上这些方法可以帮助我们高效地管理和更新多个Git仓库。选择最适合我们项目和团队的方式来实现批量更新。
2025-01-25 16:33:19
347
原创 TortoiseGit提示No supported authentication methods available
在使用TortoiseGit与远程仓库进行同步代码的时候提示如下错误,即:没有支持认证的方法可用。然后,再试,问题解决,能够正常提交和克隆代码。远程仓库的公匙无法和本地的密匙进行匹配认证造成的(主要是。通过几次分析和百度相关资料,发现应该是。的密匙添加进去,就可以了,如下图。来将本地生成的后缀名为。
2025-01-25 16:07:39
574
原创 TortoiseGit安装、配置(全网最全)
TortoiseGit 是一个 Git 版本控制系统的 Windows Shell 界面。它为 Windows 用户提供了一个图形用户界面,使得在 Windows 环境下使用 Git 变得更加直观和便捷。下面是对 TortoiseGit 的发展、功能和作用的详细介绍,以及在 Windows 系统上的安装和配置指南。TortoiseGit 的发展源于 TortoiseSVN,这是一个流行的 Subversion 版本控制系统的 Windows Shell 界面。
2025-01-25 15:51:19
1048
原创 Git安装配置使用详解(全网最全)
最近开发环境更换升级了一个工作站,正好需要安装版本管理工具,顺手把安装的流程细节记录下来分享一下,希望能帮助大家快速的搭建开发环境。Git 是一种分布式版本控制系统,最初由 Linus Torvalds 于 2005 年创建。它是用于跟踪文件更改、协调团队协作开发的重要工具。Git 的分布式特性允许每个人都有一个完整的代码库副本,可以离线工作,并且可以轻松地进行分支和合并。
2025-01-25 09:23:55
24465
1
原创 MySQL数据库常用命令和语句总结2(超详细)
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL作为网站数据库。主要通过SQL命令来进行数据库的各种功能操作,上一篇我们总结了MySQL基本语句,DML,DQL,多表查询,子查询等,今天把剩余一些常用的命令总结一下,希望对大家有帮助。
2025-01-24 23:55:01
643
原创 2024年回顾与总结
通过系统学习和实践,我对常用算法有了更深的理解和应用能力。尤其是排序算法、搜索算法和图算法的优化,使得我在解决复杂算法问题时游刃有余。2024年是充满挑战和机遇的一年,新的一年,不管你从事什么技术,也不管你身在何地,技术人只有不断学习和进步,才能在激烈的竞争中立于不败之地。愿大家在新的一年里继续努力,不断突破自我,取得更大的成功。
2025-01-24 23:51:30
1905
原创 mysql数据库实现数据分页详解
在MySQL数据库中,实现数据分页通常使用LIMIT和OFFSET子句。这些子句使得查询结果可以分批返回,从而实现分页功能。在MySQL中实现分页有多种方法,每种方法都有其适用的场景和优缺点。选择哪种方法取决于具体的应用场景、数据量以及性能要求。在实际应用中,通常会根据需求选择最适合的分页方式,并在应用程序中集成分页逻辑,通过传递页码和每页记录数参数来动态生成SQL查询语句。
2025-01-12 22:35:28
1396
原创 MySQL数据库常用命令和语句总结(超详细)
启动 MySQL 服务器:1、通过 "服务" 管理工具: 打开"运行"对话框(Win + R),输入 services.msc,找到"MySQL"服务,右击选择"启动"。2、通过命令提示符: 打开命令提示符(以管理员身份),输入以下命令:关闭MySQL服务器:1、通过 "服务" 管理工具:同样打开"运行"对话框,输入 services.msc,找到 "MySQL" 服务,右击选择"停止"。2、通过命令提示符: 打开命令提示符(以管理员身份),输入以下命令:#1.查询MySQL中所有的数据库。
2025-01-12 22:35:06
1150
原创 Mysql基本使用总结
MySQL 是一种广泛使用的关系型数据库管理系统 (RDBMS),其技术架构和使用方式在很多应用场景中都有体现。以下是 MySQL 技术架构的简要介绍及一些常见使用举例:MySQL 作为一个强大的数据库管理系统,其架构设计使其能够满足各种规模的应用需求。通过上述常见的使用举例,我们可以初步了解如何在实际项目中应用 MySQL。进一步的高级功能如分区、分片、性能调优等,需要根据具体的业务需求进行深度学习和实践。
2024-12-31 23:36:09
686
原创 Mysql的安装配置教程(最新最全)
MySQL是一个流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,现属于Oracle公司。MySQL使用SQL语言进行数据操作,是一种开源的数据库系统,广泛应用于中小型和大型网站的开发中。其特点包括体积小、速度快、总体拥有成本低,并且支持多线程和优化的SQL查询算法,能够充分利用CPU资源并提高查询速度。“window+R”键弹出运行框,输入”cmd"进入window命令提示符,输入“mysql -uroot -p"按下回车,再输入密码,按下回车,出现下面界面则是配置成功。
2024-12-31 22:37:36
1289
原创 ExoPlayer 媒体播放器使用总结
ExoPlayer 是 Android 上一个应用级开源的媒体播放器库,由 Google 提供,专为 Android 平台设计。它在性能、可定制性和功能性方面优于 Android 自带的 MediaPlayer它为 Android MediaPlayer 的 API 在播放本地或在线的视频与音频上提供了一个候选。ExoPlayer 支持一些 Android MediaPlayer API 无法提供的特性,包括 DASH 和 SmoothStreaming 自适应回放,持久的高速缓存和自定义渲染器。
2024-12-29 23:00:26
1511
原创 C++开发常用工具分享
微软提供的功能强大的IDE,支持C++开发,拥有丰富的调试和代码分析工具。windbg是分析release发布运行程序崩溃的重要调试工具,详见:windbg调试分析dump工具,使用windbg分析Qt崩溃原因。VS自带工具查看lib、dll、exe依赖库和函数,查看dll位数等。在VS安装目录找Developer Command Prompt命令行工具,一般在开始菜单容易找到,在命令行运行:dumpbin /dependents myapp.exe #查看可执行程序依赖的动态库。
2024-12-29 22:45:53
521
原创 unexpected disconnect while reading sideband packetfatal: early EOFfatal: fetch-pack: invalid ind
如果在Windows机器装了多个Git客户端,在clone的时候会报如下错误,在网上尝试了几种方法,都不行,尝试了3种方法,问题解决,现分享给大家。然后再clone对应的仓库到本地。然后再clone对应的仓库到本地。再次clone,成功。1.1、仓库内容太大或者文件太大。1.2、网络环境不好。
2024-12-29 22:08:29
436
原创 SIP协议协议使用指南
会话发起协议 (Session Initiation Protocol, SIP) 是一种用于在互联网协议 (IP) 网络上建立、修改和终止多媒体会话的信令协议。这些会话可以包括语音、视频、即时消息、在线游戏等。SIP 是由互联网工程任务组 (IETF) 开发的,并在 RFC 3261 中进行了标准化。确定会话参与者的位置。判断目标用户是否可用(在线或离线)。确定会话参与者的媒体能力(例如,支持的音频和视频编解码器)。建立会话并传输媒体流。包括修改会话参数(如添加或删除媒体流)以及终止会话。
2024-12-29 22:02:37
948
原创 时间基Time Base详解
时间基,即Time Base,是用于衡量时间的单位,在多媒体编程中被广泛使用。对于FFmpeg,它主要用于描述帧率、持续时间和时间戳等概念。简单地说,时间基是一种将数值时间戳转化为真实时间(秒)的方式。
2024-11-28 21:46:04
755
原创 FFmpeg调整音频文件的播放音量
1.2、调节音量为当前音量的一半。1.1、调节音量为当前的10倍。1.3、调节音量为静音。1.4、增加10dB。
2024-11-28 21:45:01
287
原创 HEAP CORRUPTION DETECTED:after Normal block 错误处理
最近在调试时,遇到这个HEAP CORRUPTION DETECTED:after Normal block报错。
2024-11-28 21:44:25
516
原创 TS流格式及传输详解
TS格式(Transport Stream)是一种用于传输和存储多媒体数据的格式,全称为MPEG2-TS。其中TS即"Transport Stream"的缩写。常用于广播,直播和流媒体传输。
2024-11-28 21:43:56
1068
Navicat安装指导及安装资源
2024-03-23
vncserver和vncviewer
2017-06-01
大数据资料集锦
2016-03-30
Hadoop技术全套图书
2016-03-21
jQuery瀑布流经典布局源码
2016-01-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人