主页

IB 原生 RDMA 与 以太网卡 + RoCE 对比

1. IB 原生 RDMA 方案(InfiniBand 网卡) IB = InfiniBand,是一种高速、低延迟、高带宽的数据中心互连技术,原生支持 RDMA,无需额外协议封装。 典型带宽:40Gbps、100Gbps、200Gbps 及更高。 主要应用于 高性能计算(HPC)、人工智能训练集群、分布式存储 等对延迟和吞吐极度敏感的场景。 常见 IB 网卡型号: Mellanox ConnectX-6 (CX6) Mellanox ConnectX-7 (CX7) NVIDIA BlueField 系列 DPU(带 IB 接口) 优势: 原生 RDMA:直接在节点间读写内存,绕过 CPU,延迟可达微秒级。 带宽利用率极高,吞吐稳定。 在 HPC、A...

阅读更多

云防火墙 与 WAF 产品上的区别

云防火墙(Cloud Firewall)和 WAF(Web Application Firewall)都属于网络安全产品,但防护层级和保护对象不同,经常作为互补方案同时部署。 一、云防火墙(Cloud Firewall) 定义 云防火墙是部署在云上的网络边界安全产品,相当于传统硬件防火墙的云化形态,用于保护云环境整体的网络流量。 主要功能 网络访问控制(ACL / 安全组增强) 状态检测、防入侵(IDS/IPS) DDoS 防护(部分集成) NAT、VPN 管理 跨 VPC 的东西向流量可视化与控制 出入口(南北向)及内网(东西向)防护 保护对象 云服务器实例(ECS) 子网/VPC 整体网络 非 Web 应用(数据库、SSH、...

阅读更多

lambda 与 bind ,类与模版

Lambda 底层:编译器生成闭包类 Lambda 不是模板,而是编译器生成的类 每个 lambda 表达式,编译器都会自动生成一个匿名的类(闭包类型),这个类重载了 operator()。 // 你写的 lambda auto lambda = [x, &y](int a) -> int { return x + y + a; }; // 编译器实际生成类似这样的类 class __lambda_123 { // 编译器生成的匿名类名 private: int x_; // 按值捕获的 x int& y_; // 按引用捕获的 y public: // 构造函数:初始化捕获的变量 __la...

阅读更多

boost::bind 参数量限制与现代 C++ 替代方案

boost::bind 参数量限制与现代 C++ 替代方案 问题背景 在维护老代码时,遇到了一个使用 Boost 1.63 版本的 boost::bind 的问题:发现该函数无法传入超过 9 个参数(包括 this 指针)。这个限制其实是 C++03 时代的历史遗留问题。 根本原因:C++03 的”转发问题” 在 C++03 时代,由于缺乏可变参数模板和完美转发机制,boost::bind 面临一个被称为”转发问题”(forwarding problem)的根本性限制。 转发问题的本质 C++03 中,模板函数的参数通常写成 T&(非 const 左值引用)来”原样传递”对象,但这样的写法无法接受右值(临时对象、字面量): template<class T&...

阅读更多

广告展示的”随机“选择:三种算法的深度对比

在互联网广告投放、负载均衡、A/B测试等场景中,我们经常需要按照预设权重从多个选项中进行选择。本文将深入探讨三种不同的加权随机选择算法,并通过大规模模拟实验对比它们的性能表现。 问题背景 假设我们有4个广告,权重分别为2、3、4、5,需要每次展示2个不同的广告。看似简单的需求,实际上涉及到几个关键问题: 如何确保长期展示比例符合权重设定? 如何处理”不重复选择”带来的概率分布变化? 在需要结果可重现的场景下,如何实现确定性选择? 理论分布的计算 简单权重 vs 不重复选择 首先需要理解一个重要概念:当我们进行不重复选择时,实际的概率分布会与简单权重比例有所不同。 简单权重比例(假设每次选择独立): Ad0: 2/14 = 14.29% Ad1: ...

阅读更多

GPC(General Polygon Clipper)多边形布尔运算库

概述 它最初由 Alan Murta 在曼彻斯特大学开发。 官方主页:Alan Murta’s GPC page Key operations supported: Difference (A-B) Intersection (A∩B) Exclusive-or (A⊕B) Union (A∪B) 算法特点 扫描线算法(Sweep Line): 预处理阶段 Inital Validation: 检查简单的空结果情况 使用边界框测试优化(minimax_test)识别潜在的轮廓 构建局部最小值表(LMT): 为主体(subject)和裁剪(clip)多边形构建LMT 对于...

阅读更多

valhalla 算路引擎

基于openstreetmap数据的算路引擎,括路径规划、等时线计算、高程采样、地图匹配和旅行优化 核心特性 Tiled Hierarchical Data Structure: Allows for small memory footprint on constrained devices, enables offline routing, and provides a means for regional extracts and partial updates. 支持在资源受限设备上使用较小内存,便于离线路由,并支持区域提取与局部更新。 Dynamic Runtime Costing: Edge and vertex costing via a plugin archite...

阅读更多

渲染为什么需要三角化:渲染管线的最小单位

在图形渲染领域,有一个不成文的共识:一切几何,最终都要变成三角形。 无论你在建模时使用的是曲面、N边形、多边折线还是Bezier曲线,到了 GPU 渲染阶段,都会经历一个不可或缺的步骤——三角化(Triangulation)。 这篇文章将带你理解:为什么渲染一定要三角化?有哪些主流三角化算法?OpenGL 又是如何处理三角形的? 一、为什么渲染必须三角化? 1. 三角形是最稳定的平面单位 任意三个不共线的点,唯一确定一个平面。 多边形(如四边形)如果顶点不共面,就可能出现 扭曲 或 不确定面方向。 三角形天然“平”,不管顶点位置如何,都不会在图形管线中引起数学歧义。 稳定性意味着更少的渲染bug、更容易进行裁剪、光照、纹理插值等操作。 2. 三角形最适...

阅读更多