- 博客(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
原创 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
torque游戏引擎入门
2010-06-19
TradeGraph python量化交易k线绘图工具
2022-10-12
Lua面向对象封装 链接库
2012-10-18
虚幻3游戏引擎自学教材
2010-06-19
3D游戏开发大全......
2010-06-19
游戏开发物理引擎。。。
2010-06-19
LuaOO 0.1.1.0更新版
2012-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅