自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (7)
  • 收藏
  • 关注

原创 TradeGraph媲美交易软件的python量化交易K线工具

之前用python做量化交易,需要画k线和各种曲线等,使用了mpl_finance,但体验太差,不支持拖拽而且性能很差,于是就自己写了个k线图工具TradeGraph,性能可媲美专业的股票软件。

2022-10-12 19:29:05 1424 3

原创 libevent C++面向对象的封装

libevent C++面向对象的封装作者:方振涛对event_base操作的封装如下:class TEventContext{public: static void InitLib() { WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD(2, 2); WSAStar

2013-09-15 10:42:38 2554 1

原创 基于 WebRTC 打造视频会议系统(五):从连接建立到音视频交付的完整流程

本文作为系列收官,串联所有模块,完整走一遍从连接建立到音视频交付的端到端流程。以 Alice 推流、Bob 拉流为典型场景,依次解析连接建立(KCP 握手、CreateRtcConn)、推流流程(Publish、编码发送、RTP 投递)、拉流流程(Subscribe、抖动缓冲、解码渲染)、RTCP 反馈闭环、多人会议 SSRC 分配与流转发,最后讨论首帧延迟、线程调度等性能优化要点。

2026-05-06 20:04:00 627

原创 基于 WebRTC 打造视频会议系统(四):信令协议与推拉流模型

本文详解如何用 JSON-RPC 2.0 替代 SDP 实现信令,以及 Publish/Subscribe 推拉流模型的设计。针对 SDP 不可读、不可扩展、原子性操作僵化等痛点,采用 JSON-RPC 实现清晰可调试的信令交互,用 publish/subscribe 替代 sendrecv 方向协商,实现灵活的流订阅控制。文章涵盖完整信令方法列表、推拉流生命周期管理、RequestClient 请求超时与重试机制,以及多人会议中的 SSRC 协调策略。

2026-05-06 20:01:43 182

原创 基于 WebRTC 打造视频会议系统(三):直接驾驭 MediaEngine — 绕过 PeerConnection 的音视频通道构建

WebRTC 最有价值的并非 PeerConnection,而是其背后精心调优的 MediaEngine。本文详解如何绕过 PeerConnection 的 SDP 协商模型,直接使用 ChannelManager 和 MediaEngine 构建自定义音视频通道。从创建 MediaEngine、理解 ChannelManager 职责、自定义 BaseChannel 实现 MediaChannel,到 MediaConnection 管理音视频通道,逐步拆解每一步集成要点。

2026-05-05 20:28:19 647

原创 基于 WebRTC 打造视频会议系统(二):KCP 传输层设计与实现

本文详解视频会议系统的 KCP 传输层设计。针对 SFU 场景下标准 WebRTC 传输栈 ICE 握手复杂、DTLS 开销大的问题,采用 KCP 替代,在单一 UDP 连接上实现双通道传输:KCP 可靠通道传信令、UDP 透传通道传 RTP/RTCP 媒体数据。文章从自定义握手协议、心跳保活、消息序列化、加密层到 MediaNetwork 异步收发机制,逐层剖析实现细节。

2026-05-05 20:20:23 220

原创 基于 WebRTC 打造视频会议系统(一):架构总览与设计思路

本文介绍了一种基于WebRTC底层能力构建轻量级SFU视频会议系统的创新方法。通过摒弃标准PeerConnection+SDP协商模式,保留WebRTC核心的MediaEngine(包含编解码器、音视频处理等关键功能),同时采用KCP over UDP替代ICE/DTLS/SRTP传输方案,显著降低了系统复杂度和延迟。系统采用Publish/Subscribe模型替代SDP协商,实现了按需推拉流控制,支持灵活的多路流管理。

2026-05-04 19:27:54 521

原创 从零搭建自动驾驶中间件(六):交互式终端——为嵌入式系统注入灵魂

本文聚焦嵌入式自动驾驶场景下交互式终端的设计与实践。以作者亲身调试痛点为切入点,阐述终端"运行时观测+操控"的核心价值。HyperFlow Terminal 模仿 Bash 设计,采用组合模式构建 DirNode/FuncNode 命令树,支持 cd/ls/tab补全/命令历史等熟悉操作。底层基于 Telnet 协议(轻量、嵌入式友好),实现按键状态机解析ESC序列、asio异步I/O多会话并发。

2026-05-04 19:23:41 220

原创 从零搭建自动驾驶中间件(五):状态机、诊断与运维——让系统“可观测、可控制“

本文聚焦让自动驾驶系统从"能跑"到"可靠"的三大能力:层次化状态机(HFSM)支持事件触发、超时自动转换、muParser条件表达式守卫三种转换方式,并通过共享内存输出sys.state与Trigger通知深度集成框架;诊断系统参考AUTOSAR DTC管理,通过DiagComponent上报故障/恢复、稳定性判断防误报、DTC位图对接MCU;进程管理提供ProcessManager自动启停重启、cgroup资源隔离(CPU份额+内存限额)、ProcessMonitor实时监控。

2026-05-01 18:22:19 995

原创 从零搭建自动驾驶中间件(四):数据录制与回灌——算法调试的核心基础设施

本文聚焦自动驾驶中间件的数据录制与回灌系统,从实际调试场景出发阐述其"灵魂级"价值——精确复现bug、离线调参、回归测试。剖析三大核心挑战:时序控制、时间源切换、零侵入。HyperFlow 采用 Snapshot 快照驱动回灌方案,在模块的 Read/Write 操作中透明拦截记录帧号与读写模式,形成"节拍器"驱动回灌节奏;通过 frameid 精确匹配而非时间戳,保证数据一致性;通过 sys.timesync 共享内存实现时间源透明切换,业务代码无需任何改动。

2026-05-01 18:16:46 969

原创 从零搭建自动驾驶中间件(三):事件驱动与协程调度的工程实践

本文围绕自动驾驶中间件的调度层展开,从操作系统视角分析三种调度模型(一线程一模、线程池、协程)的优劣,阐述选择 marl 协程库的理由——M:N调度、轻量切换(~100ns)、跨平台、零依赖。详解 HyperFlow 的调度架构:每个 Module 运行在 marl Fiber 中,支持定时、事件驱动、混合三种模式,核心运行循环通过 marl::Event 实现挂起/唤醒。深入拆解 NotifyTrigger/ListenTrigger 的跨进程协作机制(POSIX实时信号 + 共享内存触发器表)。

2026-04-30 21:32:23 559

原创 从零搭建自动驾驶中间件(二):共享内存零拷贝通信的工程实践

本文深入拆解自动驾驶中间件通信层的设计与实现。以点云、图像等高频大数据场景的拷贝开销为切入点,阐述共享内存零拷贝的必要性。核心介绍了 DataQueue 环形缓冲区设计——一写多读、frameid 帧号追踪、READ_LATEST/READ_NEXT 两种读取模式,以及零拷贝读取的陷阱(异步访问、多写者冲突)。跨进程通信采用 shm_open 共享内存文件 + POSIX 实时信号通知 + TriggerManager 共享触发器表的三层架构。

2026-04-30 21:12:02 565

原创 从零搭建自动驾驶中间件(一):为什么自动驾驶需要自研中间件

本文由一位拥有3年自动驾驶行业经验的工程师分享中间件开发心得。文章对比了ROS2、CyberRT和自研中间件的优劣,指出自动驾驶系统对确定性、低延迟的特殊要求。作者通过具体场景分析(如120km/h时速下的刹车响应)说明传统中间件的不足,详细拆解了自动驾驶中间件的核心模块设计,包括通信层、调度层和运维层等关键组件。文章特别强调零序列化、零侵入和可观测性三大设计原则,分享了HyperFlow中间件的实践经验,为自动驾驶开发者提供了从工具选型到系统架构参考示例。

2026-04-29 21:09:34 411

原创 插件系统:让其他人也能给编辑器写节点

当 CvEditor 的内置节点越来越多,我意识到一个问题:不是所有节点都需要写在主程序里。于是我开始设计插件系统——通过动态链接库加载扩展节点,让其他人也能贡献节点。这篇文章记录了插件系统的设计过程、实现细节和踩坑经验。

2026-04-29 20:49:04 342

原创 CvEditor 节点开发实战:从写一个模糊节点到 YOLO 检测节点

上一篇聊了 CvEditor 的架构设计,这篇来聊更实际的问题:怎么写一个节点?从一个最简单的模糊节点开始,逐步过渡到需要加载模型的 YOLO 检测节点和带状态的跟踪节点。每个示例都附完整代码和我的踩坑经验。

2026-04-27 21:45:12 405

原创 从零搭建一个节点式计算机视觉编辑器 —— CvEditor 架构设计全解析

作为一个业余爱好者,我用 C++ 从零搭建了一个节点式的计算机视觉处理工具。这篇文章完整拆解了 CvEditor 的系统架构、核心模块设计和关键技术选型,分享我在开发过程中的思考与踩坑经验。

2026-04-26 14:42:50 398

原创 百人视频会议方案

钉钉和腾讯的视频会议均支持300人同时在线。近期我们完成了支持百人视频会议的项目开发,现将实现方案分享如下。

2025-10-27 20:00:49 445

原创 OpenGL 绘制函数图象

最近终于将OpenGL集成到 duilib库中,通过解析OpenGL标签就可以创建OpenGL窗口进行绘图了。废话不多说了,今天我要说的是如何使用opengl绘图函数图象。函数图象的绘制其实比较简单,我使用初中学的 “描点绘图”的方式来实现的。首先进行取点 为了使图象看起来平滑 点要多取一点,我取了2000个点,定义如下struct point {  GLfloat x;  GLf

2012-12-10 16:50:12 1422

原创 如何编写Lua扩展库 之编写原则

如何编写Lua扩展库我所说的扩展库是指使用C/C++为lua编写的扩展库。也就是将C/C++编写的接口导入到lua中供其调用。最近在为lua写UI界面的扩展库(luaUI)。有很多的接口(包括类接口)要导入到lua中,为了方便C++与lua的交互,提高编写效率我使用以前为lua封装的库(LuaOO)。为了减少出错机率便于维护我的项目使用lua原则如下:1.尽可能

2012-11-20 08:58:21 1066

原创 LuaOO DLL插件扩展的支持

LuaOO 0.1.1.2更新说明添加新功能:对dll插件的支持Lua的对插件操作如下:--加载LuaPlugin.dll并执行bool loadPlugin(LuaState*)导出函数--(注意定义导出函数时要将导出函数放入extern "C"{}的大括号内部,否则会导致查找不到导出函数)local r,err=LuaPlugin.load("LuaPlugin.dll

2012-11-01 21:11:33 510 1

原创 LuaOO 0.1.1.1发布

LuaOO 0.1.1.1是对0.1.1.0的修正,修正了很多bug。添加了LuaState::new*() 的一系列操作,方便对象的创建初始化。此版本提供一个demo示例是简单的数组操作的扩展库(像C语言中的数组),其功能远比不上lua自带的数组,但在性能以及所占内存上是有些优势的。此demo作为扩展lua库的示例,包含userdata类型的验证,以及面向对象的调用方法,metaTabl

2012-10-30 21:29:40 604

原创 LuaOO (Lua与C++交互的面向对象封装)

说明:LuaOO是Lua C API使用C++语言的面向对象封装。LuaOO是在lua原有的API基础之上扩展而来,极少地修改lua源码,主要是通过扩展lua原来的代码。扩展lua与C++环境交互。因此当有新版本的lua源码发布时也能够支持。LuaOO的很多接口的命名与lua API类似。LuaOO隐藏了lua栈的操作,LuaOO库将不会提供类似lua_gettop,lua_settop,lu

2012-10-20 08:43:20 988

游戏编程入门指南..

你想编一个怎样的游戏?2D游戏,2.5D游戏,3D游戏。去做吧,让你的激情成就一番事业。

2010-06-19

torque游戏引擎入门

本书学习使用Torque 游戏引擎。Torque 游戏引擎是加拿大Garagegames 公 司推出的一款非常出色的商业游戏引擎之一。国内越来越的多游戏公司和个人已 经开始使用它来开发自己的游戏

2010-06-19

TradeGraph python量化交易k线绘图工具

 之前用python做量化交易,需要画k线和各种曲线等,使用了mpl_finance,但体验太差,不支持拖拽而且性能很差,于是就自己写了个k线图工具TradeGraph,性能可媲美专业的股票软件

2022-10-12

Lua面向对象封装 链接库

Lua的面向对象封装 LuaOO是Lua C API使用C++语言的面向对象封装。LuaOO是在lua原有的API基础之上扩展而来,极少地修改lua源码,主要是通过扩展lua原来的代码。扩展lua与C++环境交互。因此当有新版本的lua源码发布时也能够支持。LuaOO的很多接口的命名与lua API类似。LuaOO隐藏了lua栈的操作,LuaOO库将不会提供类似lua_gettop,lua_settop,lua_pushvalue,lua_remove,lua_insert等对栈的操作的接口

2012-10-18

虚幻3游戏引擎自学教材

虚幻3自学教程,图文虚幻3引擎(Unreal Engine 3)又称虚幻引擎3,是一套为DirectX 9/10 PC、Xbox 360、PlayStation 3平台准备的完整的游戏开发构架,提供大量的核心技术阵列,内容编辑工具,支持高端开发团队的基础项目建设。   虚幻3引擎的所有编写观念都是为了更加容易的内容制作和编程的开发,为了让所有的美术开发人员能够牵扯到最少程序开发内容的情况下使用抽象程序助手来自由创建虚拟环境,以及提供程序编写者高效率的模块和可扩展的开发构架用来创建,测试,和完成各种类型的游戏制作。  虚幻3引擎给人留下最深印象的就是其极端细腻的人物和物品模型。通常游戏的人物模型由几百至几千个多边形组成,并在模型上直接进行贴图和渲染等工作从而得到最终的画面。而虚幻3引擎的进步之处就在于在游戏的制作阶段,引擎可以支持制作人员创建一个数百万多边形组成的超精细模型(最上面的模型由200万多边形组成,而下面的模型仅有5287个多边形),并对模型进行细致的渲染,从而得到一张高品质的法线贴图,这张法线贴图中记录了高精度模型的所有光照信息和通道信息。在游戏最终运行的时候,游戏会自动将这张带有全部渲染信息的法线贴图应用到一个低多边形数量(通常在5000-15000多边形)的模型上。这样的效果就是游戏的模型虽然多边形数量比较少但是其渲染精度几乎和数百万多边形的模型一样,这样可以在保证效果的同时在最大程度上节省显卡的计算资源。

2010-06-19

3D游戏开发大全......

如果愿意,您可以带上这本书和一台计算机,来到一个无法进行Internet访问的房间,在几个星期内构思一个完整的、即时的第一人称射击游戏。然后,可以根据需要花费更多的时间设计如何进行游戏的概念,并且把这些概念添加到游戏中。 您可能认为这是一个大胆的主张,但您可以亲身体验它。查看目录表,或者快速浏览章节内容。全部的内容都在其中。如果坚持到最后并进行相应的练习和实践,您将获得许多实际的经验,而不仅仅是书本上可以学到的内容。 相信自己

2010-06-19

游戏开发物理引擎。。。

本教程为英文版,请注意下载。Game Physics Engine Development is the first game physics book to emphasize building an actual engine. It focuses on the practical implementation details and addresses trade-offs that must be made. Ian’s experience with commercial physics engines definitely shows. His book fills a gap by demonstrating how you actually build a physics engine.”

2010-06-19

LuaOO 0.1.1.0更新版

LuaOO是Lua C API使用C++语言的面向对象封装。LuaOO是在lua原有的API基础之上扩展而来,极少地修改lua源码,主要是通过扩展lua原来的代码。扩展lua与C++环境交互。因此当有新版本的lua源码发布时也能够支持。LuaOO的很多接口的命名与lua API类似。LuaOO隐藏了lua栈的操作,LuaOO库将不会提供类似lua_gettop,lua_settop,lua_pushvalue,lua_remove,lua_insert等对栈的操作的接口。

2012-10-25

空空如也

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

TA关注的人

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