- 博客(1284)
- 资源 (52)
- 收藏
- 关注
原创 老程序员解Bug的通用套路
程序员在很多人的印象里是一份严(ku)谨(bi)的职业,也是一个被搞怪吐槽乐此不疲的职业,程序员们面对复杂的代码敲打电脑时连眉头都不会皱一下,但是有一个词却是他们痛苦的根源,它就是Bug。 记得刚毕业入行时,我们老大派给我和另外一个新来同事的第一件事就是修Bug,要不是在学校敲过几年代码,还真不知道如何下手!和我一起进公司的另外一个同事完全就是以“看戏者”的身份,看我搞了...
2018-06-06 09:25:29
12690
26
原创 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
54867
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
6187
1
原创 C++模板详解
一.C++模板的定义: 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。模板是一种对类型进行参数化的工具;二.使用模板的目的: 能够使得程序员编写与类型无关的代码。比如编写了一个交换两个整型int 类型的swap函数,这个函数就只能实现int 型,对double,字符这些
2017-05-31 21:19:42
2652
1
原创 Qt的常用布局使用详解
Qt布局详解: 界面开发首先要对整个界面进行布局,使窗体上的所有的控件必须有一个合适的尺寸和位置。那么做出来的界面才看起来美观。那么如何对界面进行布局呢?Qt提供了一些类负责排列窗体上的控件,主要有:QHBoxLayout,QVBoxLayout,QGridLayout,QFormLayout,QStackLayout。(布局管理类)这些类简单易用,无论在代码中还是用Qt Design
2016-09-30 09:06:16
6017
1
原创 优秀程序设计的18大原则
优秀程序设计的18大原则1、避免重复原则(DRY - Don’t repeat yourself)编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就很容易形成一个抽象体。2、抽象原则(Abstraction Principle)与DRY原则相关。要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置。
2016-07-11 17:07:57
6462
原创 ffmpeg的静态编译配置和动态编译配置的优缺点
FFmpeg编译方式分为静态和动态两种。静态编译将所有库合并到可执行文件中,具有可移植性强、避免版本冲突的优点,但体积大且升级困难;动态编译则依赖外部库,体积小、便于维护升级,但依赖管理复杂。针对同时使用Intel核显和NVIDIA独显的场景,推荐动态编译,因其更符合Linux生态,便于硬件加速库的维护和调试。静态编译适合需要部署到多系统或无依赖环境的场景。动态编译是Ubuntu开发环境下的首选方案。
2026-04-05 23:53:37
338
原创 C++的四种类型转换详解
C++提供了四种类型转换操作符:static_cast用于相关类型转换(如数值转换、类层次转换),但不检查向下转换安全性;dynamic_cast用于多态类型的安全向下转换,提供运行时检查;const_cast用于添加/去除const限定符;reinterpret_cast进行底层位模式重新解释,风险最高。static_cast最常用但需程序员保证正确性,dynamic_cast最安全但有性能开销,const_cast需谨慎使用,reinterpret_cast应尽量避免。建议优先使用更安全的转换方式,仅在
2026-03-29 23:32:29
371
原创 常见C++笔试题整理(二)
本文整理了50道C++常见笔试题,涵盖引用、智能指针、容器、内存管理、多态等核心知识点。主要内容包括:引用与指针的区别、vector扩容机制、map与unordered_map对比、智能指针的循环引用问题、右值引用与移动语义、类设计原则等。题目配有详细解析,帮助开发者查漏补缺,掌握C++面试高频考点。特别对引用特性、容器实现原理、内存分配方式、面向对象特性等关键概念进行了深入剖析,适合准备技术面试的C++开发者参考学习。
2026-03-29 22:19:52
368
原创 常见C++笔试题整理(一)
本文整理了C++笔试中常见的面试题及解析,涵盖多个重要知识点:1. const指针的不同形式及区别;2. 引用与指针的核心差异;3. 拷贝构造函数与赋值运算符的调用场景;4. 字符串逆序实现;5. 位域结构的内存计算;6. 进程间通信方式;7. 递归实现整数倒序输出;8. 虚函数的多态特性等。同时包含典型编程问题如内存泄漏检查、数组越界防范等,并提供了算法题(如硬币称重)的解决思路。这些题目涉及C++基础语法、面向对象特性、内存管理、位操作等核心概念,适合准备技术面试时查漏补缺。
2026-03-22 22:09:13
333
原创 HAL层或硬件驱动对接经验详解
本文展示通过DMA-BUF内存直通、对象池复用和移动语义等技术优化性能,在Android相机元数据处理中实现30%以上的性能提升。示例代码使用CameraMetadata模板避免数据拷贝,直接操作内存池并原地更新元数据(如人脸矩形统计信息),显著减少内存分配开销。该方法通过find/update接口实现零拷贝数据处理,适用于高吞吐低延迟场景。
2026-03-15 22:48:42
158
原创 Windows查看端口占用并关闭
1.win+R输入cmd打开命令行窗口输入netstat -a -n -o查看端口与之对应的PID(如7680端口被3556PID程序占用)。2.打开任务管理器(Ctrl+Shift+ESC),点击上方详细信息将对应的PIN程序关闭,释放端口。
2026-03-15 22:48:39
33
原创 iOS开发中常用的第三方类库整理
本文汇总了iOS开发中常用的第三方库和组件,涵盖UI控件、网络请求、数据解析、动画等多个领域。主要包括:UI组件如SimpleButton、KrVideoPlayer等;网络库Alamofire、AFNetworking;JSON解析工具SwiftyJSON、HandyJSON;数据缓存SQLite.swift;动画框架Lottie、Spring;以及图片加载Kingfisher、SDWebImage等。这些开源项目为iOS开发提供了高效解决方案,可大幅提升开发效率和应用性能。
2026-03-08 21:03:55
360
原创 深入理解C++中的构造与析构:为什么构造函数不能是虚函数,而析构函数通常需要是虚函数?
本文探讨了C++中构造函数不能是虚函数和析构函数通常需要是虚函数的原因。构造函数不能为虚函数是因为对象构造时虚函数表尚未初始化,存在"先有鸡还是先有蛋"的逻辑悖论。析构函数需要为虚函数是为了确保通过基类指针删除派生类对象时能正确调用派生类的析构函数,避免内存泄漏。文章还指出,只有作为基类使用的类才需要虚析构函数,否则会带来不必要的开销。这些原理对理解C++对象模型和正确管理资源至关重要。
2026-03-08 20:54:28
272
原创 数组TOP-K问题:求前K个最小元素的多种解法与C++实现
本文探讨了寻找无序数组中最小的K个元素的多种算法方法。排序法(O(NlogN))简单直接但效率较低;堆方法(O(NlogK))适合大数据量和小K值;快速选择(平均O(N))效率高但可能不稳定;计数排序(O(N+range))在数据范围有限时性能最佳。文章通过C++代码示例展示了各方法的实现,并建议根据数据规模和特点选择合适方案,强调理解这些算法对培养计算思维的重要性。
2026-03-03 23:27:00
505
原创 机器人操作系统演进之路
本文系统梳理了机器人操作系统(ROS)的技术演进与工业应用。从ROS1到ROS2的技术革命,重点分析了DDS通信中间件引入带来的分布式通信、实时性能和安全认证等关键突破。详细介绍了ROS-Industrial工业扩展、Open-RMF多机器人协同框架以及Gazebo到Ignition的数字孪生进化。通过智慧物流、智能制造等应用案例,展现了ROS生态如何从实验室走向工业现场。文章最后探讨了ROS与AI融合、5G边缘计算等未来趋势,以及面临的技术标准化和商业化挑战,为读者提供了机器人操作系统发展的全景视角。
2026-03-01 22:42:56
91
原创 FFmpeg 获取视频信息和导出每一帧
本文介绍了使用FFmpeg工具分析视频信息和提取帧的方法。通过ffprobe可获取视频详细信息,如格式、编码、分辨率等,并以JSON格式输出便于解析。FFmpeg则用于提取视频帧,支持三种方式:1)提取所有帧为序列图片;2)按时间间隔提取(如每秒1帧);3)提取指定时间点的单帧。还介绍了高效提取关键帧(I帧)的方法。这些功能为视频分析处理提供了便利工具,适用于视频编辑、分析和机器学习等场景。
2026-02-22 22:30:24
182
原创 QuickJS 快速开发引擎使用详解
QuickJS是一个轻量级可嵌入的JavaScript引擎,由FFmpeg创始人Fabrice Bellard开发。其核心特点包括小巧体积(仅几百KB)、ES2020兼容性、快速启动和低内存占用。技术架构包含编译器、解释器、运行时和上下文等模块,支持将JS代码编译为字节码执行。通过丰富的C API,开发者可以将QuickJS嵌入C/C++程序,实现JavaScript与原生代码的交互。在嵌入式音视频处理场景中,可用C实现核心编解码功能,通过QuickJS暴露接口给JS脚本调用,兼顾性能与灵活性。该方案适合需
2026-02-22 22:29:51
490
原创 RK3568使用FFmpeg的RKMPP后端进行硬解码
本文详细介绍了在RK3568开发板上配置开发环境、交叉编译带RKMPP支持的FFmpeg,并实现视频硬解码的全过程。主要内容包括:1) 开发环境配置,包括系统依赖和FFmpeg的RKMPP补丁编译;2) C++代码实现,展示了如何通过FFmpeg的RKMPP后端解码H.264文件并使用DRM进行显示;3) 交叉编译、部署到开发板及测试验证的方法。重点强调了零拷贝技术的应用,通过DMA-BUF文件描述符实现高效视频处理,以及如何通过CPU占用率等指标验证硬解码是否成功。该方案充分发挥了RK3568的硬件解码能
2026-02-22 22:29:25
622
原创 RK3568使用GStreamer进行4k视频硬解码
本文介绍了在RK3568开发板上配置GStreamer视频播放器的完整流程。首先详细说明了Buildroot系统中需要包含的GStreamer组件及其配置方法,包括核心库、基础插件和Rockchip专用插件。然后提供了一个基于C++的GStreamer播放器实现方案,包含管道构建、硬件解码和视频渲染等关键代码。最后介绍了交叉编译、部署测试步骤以及常见问题的排查方法。该方案充分利用了RK3568的硬件解码能力,通过mpp解码器和rkximagesink实现高效视频播放,适用于嵌入式多媒体应用开发。
2026-02-22 22:28:45
592
原创 目前视频渲染显示硬加速的主要技术
视频渲染硬件加速主要依赖GPU加速、编解码加速器和Overlay合成引擎三大技术。GPU渲染适用于复杂特效处理,编解码加速器高效处理视频压缩/解压缩,Overlay则提供最低功耗的全屏播放方案。这些技术协同工作形成完整视频处理流水线:先由解码器解压视频,再由GPU或Overlay处理后,最终通过显示控制器输出。技术选型需权衡功耗、性能与功能需求,现代系统通常自动优化组合方案。
2026-02-22 22:28:08
607
原创 unitree go2主要功能及核心架构详解
Unitree GO2是一款消费级四足机器人,具备稳健行走、跳跃、地形适应等核心运动能力,支持语音、视觉和触摸交互。其分层架构包含硬件层、底层控制层、中间件层和应用层,通过SDK提供状态订阅、运动控制和服务调用功能。开发者可使用Python或C++连接机器人,发送运动指令并获取传感器数据,还支持Gazebo和IsaacSim仿真测试。GO2适用于家庭陪伴、教育娱乐和二次开发,开放SDK和通信协议增强了其可扩展性。
2026-02-22 22:24:02
1041
原创 深入剖析四大流媒体服务器:SRS、ZLMediaKit、Janus与Mediasoup的技术差异与选型之道
本文深入解析四大开源流媒体服务器(SRS、ZLMediaKit、Janus、Mediasoup)的技术特性与适用场景。SRS作为轻量级多协议网关,擅长RTMP转WebRTC;ZLMediaKit在协议转换方面表现优异;Janus以插件化架构支持WebRTC定制开发;Mediasoup则提供超低延迟的SFU方案。文章提出四维选型法,建议根据延迟、并发、协议栈和扩展性需求进行技术决策,并指出下一代架构将向QUIC、AI编码、Serverless等方向发展。最终强调技术选型应遵循场景匹配原则,必要时可采用混合架构
2026-02-08 22:49:29
124
原创 OBS技术深度剖析:从开源直播工具到专业制作引擎的进化之路
本文深入剖析了开源直播软件OBS的技术架构与发展历程。从2012年诞生至今,OBS已成长为直播领域的事实标准,其成功源于模块化设计和开源协作模式。文章详细解析了OBS的核心技术:1) 分层架构与插件系统,2) GPU加速的渲染管线,3) 智能音频处理,4) 多平台编码优化。同时探讨了虚拟摄像头、浏览器源等高级功能的实现原理,并提供了性能优化方案和硬件配置建议。随着AI、WebRTC等新技术发展,OBS将持续引领实时内容创作工具的创新,为开发者和创作者提供更强大的技术支持。
2026-02-01 23:35:10
135
原创 H264和H265的结构及区别详解!
H.264和H.265视频编码标准的核心区别在于处理单元的结构灵活性。H.264采用固定的16x16宏块结构,而H.265引入可变的64x64编码树单元(CTU),通过四叉树递归划分实现更智能的"量体裁衣"式编码。H.265新增35种帧内预测方向、1/2像素精度运动补偿等先进技术,在保持画质前提下压缩率比H.264提高50%,特别适合4K/8K超高清视频,但计算复杂度也显著增加。这种结构革新使H.265能更高效处理现代高分辨率视频内容。
2026-01-25 23:15:04
370
原创 C++的TCP和UDP怎么判断一个请求包是否接收完了?
本文介绍了在C++中判断TCP/UDP请求包完整性的方法。TCP需采用固定长度法、分隔符法或TLV格式处理流式数据和粘包问题;UDP因数据报特性,单次接收即为完整数据。文章提供了两种协议的实现代码示例和封装类,并比较了关键区别:TCP需应用层协议判断完整性,UDP数据报要么完整接收要么丢失。最佳实践建议TCP使用长度头,UDP注意缓冲区大小,并提供了错误处理和超时设置等注意事项。
2026-01-25 23:14:07
402
原创 C++解析正常包和粘包
TCP粘包问题是由于TCP流式传输特性导致的,主要原因包括发送方的Nagle算法合并小包、发送过快导致缓冲区堆积,以及接收方处理不及时造成多个包堆积。解决方案主要有三种:定长消息、分隔符法和长度前缀法(最常用)。文章提供了一个C++实现示例,采用长度前缀法(4字节长度头+实际数据)设计协议,通过PacketParser类实现数据打包、缓冲管理和消息提取功能。代码演示了正确处理正常包、粘包和半包的情况,关键点包括网络字节序转换、缓冲区管理和内存安全处理。该方案能有效解决TCP粘包问题,保证数据的正确解析。
2026-01-25 23:12:26
643
原创 C++静态函数类使用总结
本文探讨了C++中静态函数类的设计模式与应用技巧。静态函数类通过组织相关静态成员函数,提供清晰的命名空间和功能性,同时避免实例化。文章对比了静态函数类与命名空间的适用场景,阐述了单一职责、不可实例化、线程安全等设计原则,并介绍了策略模式、模板类等高级应用。此外,还分析了性能优化技巧、测试策略以及常见陷阱的解决方案,最后结合现代C++特性展示了如何创建更安全高效的静态函数类。静态函数类适用于需要封装性、私有成员或严格控制的场景,而简单函数集合更适合使用命名空间。
2026-01-18 23:10:05
63
1
原创 流媒体传输的两种核心方式:顺序流与实时流技术解析
本文探讨了流媒体传输的两种核心技术:顺序流传输和实时流传输。顺序流传输基于HTTP协议,适合预录制内容播放,但不支持随机访问;实时流传输采用专用协议,支持直播和动态自适应,但实现复杂。文章对比了两者的技术特性、适用场景和选择建议,指出随着5G发展,流媒体技术正向更低延迟、更高品质方向发展。理解这两种传输方式的区别有助于项目技术选型,提升用户体验。
2026-01-12 23:05:04
1241
1
原创 H.265码流分析详解
本文深入解析H.265/HEVC视频编码标准的码流结构。首先介绍其分层架构,包括视频参数集(VPS)、序列参数集(SPS)、图像参数集(PPS)等关键组成部分。详细讲解NAL单元的分割方法、类型判断及解析过程,并提供代码示例。重点分析VPS、SPS和PPS等参数集的具体内容和作用,阐述H.265的高级特性如并行处理支持、依赖关系与时序管理等。最后总结H.265通过精细块划分和先进预测技术实现的高效压缩优势,指出理解其码流结构对视频编码领域的重要意义。
2026-01-12 23:05:02
1382
原创 H264码流分析详解
本文深入解析H264视频编码标准的架构设计和技术特性。首先介绍了H264的分层结构和NAL单元封装机制,详细分析了SPS、PPS等关键参数集及帧类型判断方法。重点阐述了Slice结构、语法元素和高级特性,包括B帧双向预测和去块滤波技术。通过实际码流分析展示了H264的高效压缩原理,指出其采用的分层架构、网络友好封装等技术特点,使H264在压缩效率与计算复杂度间取得平衡。尽管新一代编码标准不断涌现,H264凭借其优雅设计和出色适应性,仍是当前应用最广泛的视频编码标准。
2026-01-12 23:04:59
1034
原创 C++中使用OpenMP进行多线程并行处理的性能优化详解
本文介绍了使用OpenMP进行C++多线程性能优化的方法。主要内容包括:OpenMP的基本特性(指令式编程、共享内存模型)、基础并行化示例,以及调度策略优化、减少伪共享等技巧。高级优化策略涵盖NUMA感知编程和负载均衡优化,并通过矩阵乘法和图像处理案例展示实际应用。文章还提供了性能测试方法、线程数选择建议和内存访问优化策略。最佳实践包括最小化同步开销、结合向量化等,强调合理使用这些技术可获得接近线性的加速比,同时需注意任务规模、内存带宽等潜在瓶颈。
2026-01-11 23:03:18
104
原创 流媒体引擎的技术实现及原理详解
本文系统介绍了流媒体技术的核心原理与发展趋势。主要内容包括:1)流媒体概述及其优势挑战;2)核心技术组件如编码压缩、容器格式和传输协议;3)自适应比特率(ABR)技术及其算法类型;4)服务器架构与CDN部署;5)客户端播放器技术;6)低延迟优化方案;7)AI、QUIC等新兴技术;8)性能监控与优化方法;9)安全与DRM保护机制。文章通过技术架构图和代码示例,深入解析了流媒体引擎的工作原理,并展望了未来在低延迟、沉浸式体验等方面的发展方向。
2026-01-11 23:02:32
1072
原创 36款开源的经典音视频项目
本文介绍了36款开源音视频工具,可替代商业软件满足各类媒体处理需求。涵盖视频编辑(如Cinelerra、OpenShot)、音频制作(如Hydrogen、LMMS)、多媒体管理(如DataCrow)、流媒体服务器(如Ampache、VideoLAN)以及字幕工具(如Jubler)等类别。这些跨平台工具具有专业功能,可显著降低个人和企业使用成本,适用于内容创作、教学等领域。特别推荐Ubuntu Studio等专为创意工作优化的Linux发行版,为音视频从业者提供完整开源解决方案。
2026-01-09 21:57:23
1382
原创 2025年回顾与总结:深耕、突破与感悟
时光荏苒,岁月如梭。当2025年的日历翻过最后一页,作为一名深耕于C++与算法领域的技术人,我静坐于屏幕前,回望这不平凡的一年。这一年,我们每个人都真切地感受到了技术浪潮前所未有的冲击,尤其是AI的狂飙突进,在全球范围内引发了一场深刻的职业与认知“地震”。身处其中,我也曾经历过焦虑与迷茫的时刻,内心不断叩问:在AI自动化逐步渗透的时代,传统程序员的深度价值究竟何在?
2026-01-03 23:12:46
1761
原创 离散化技巧:处理海量数据的空间压缩艺术
摘要:本文探讨了大数据时代下的离散化技术,用于解决数据规模庞大但存储资源有限的问题。离散化通过将大范围稀疏数据映射到紧凑连续整数空间,保持顺序关系的同时显著降低存储需求。文章分析了离散化的核心思想、应用场景(如算法竞赛和机器学习预处理),并详细介绍了排序去重法等实现技术,包括正向和逆向映射功能。该技术能有效解决10^9量级数据仅需0.4MB内存的存储优化问题,兼容树状数组等要求连续下标的算法。
2025-12-31 23:40:37
242
原创 嵌入式Linux摄像头应用软件开发技术设计方案
本文介绍了基于嵌入式Linux平台的视频采集、存储与推流系统开发方案。项目采用分层架构设计,硬件层依赖SoC的VPU加速,软件层通过V4L2实现视频采集,利用MPP进行硬件编码,结合FFmpeg封装存储和librtmp推流。同时提供了GStreamer框架的备选方案以提高开发效率。开发流程包括环境搭建、功能验证、核心开发及调试优化,针对瑞芯微、海思等不同平台给出了适配建议。方案兼顾性能与开发效率,充分利用硬件加速能力,为嵌入式多媒体应用提供了完整技术路径。
2025-12-31 23:11:46
1329
原创 从“一客一窗“到“多窗协售“:深度剖析线程池在高并发售票服务中的优化实践
通过从"一客一线程"到线程池的转变,我们的售票系统实现了质的飞跃:(1). 资源效率提升:线程复用避免了频繁创建销毁的开销(2). 系统稳定性增强:通过队列缓冲和线程数限制,防止系统过载(3).性能优化:合理的参数配置使系统在吞吐量和响应时间间找到最佳平衡(4).可管理性提高:统一的线程管理便于监控和调优数据库连接池的配合使用分布式锁的处理缓存策略的优化熔断和降级机制线程池技术是现代高并发系统的基石,掌握其原理和优化方法,对于构建高性能、高可用的服务至关重要。
2025-12-31 23:11:32
892
原创 C++多线程与多进程深度解析:从原理到实践
本文系统分析了多线程与多进程的核心区别及实现原理。从概念层面剖析了程序、进程和线程的关系,指出进程是资源分配单位而线程是CPU调度单位。技术实现方面,详细介绍了C++多线程编程(线程创建、同步机制)和Linux多进程编程(fork、IPC)。通过性能测试对比了线程与进程的优劣势:线程切换快但需处理同步问题,进程隔离性好但开销大。最后给出了现代C++并发编程的最佳实践,包括高级并发抽象和线程池实现。文章强调应根据任务特性(数据共享需求、隔离性要求)选择合适的并发模型,并合理使用同步机制确保数据一致性。
2025-12-31 23:11:18
872
原创 分治策略:归并排序与逆序对计算
本文探讨了分治策略在算法设计中的应用,重点分析了归并排序和逆序对计算两个经典案例。归并排序通过分解、递归排序和合并三个步骤实现O(nlogn)时间复杂度,具有稳定性和广泛适用性。逆序对问题则利用归并排序的特性,在合并过程中高效计算逆序对数量,同样达到O(nlogn)时间复杂度。文章还讨论了算法优化、并行化处理、树状数组解法等进阶内容,并介绍了逆序对在推荐系统、基因分析等领域的实际应用。最后指出分治策略作为一种强大的问题解决范式,其核心思想能广泛应用于各类算法问题中。
2025-12-31 23:10:56
797
jQuery瀑布流经典布局源码
2016-01-28
Navicat安装指导及安装资源
2024-03-23
vncserver和vncviewer
2017-06-01
Hadoop技术全套图书
2016-03-21
大数据资料集锦
2016-03-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅