自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

REDcker的博客

技术改变生活

  • 博客(243)
  • 收藏
  • 关注

原创 CSDN博客汇总(101-200篇)

CSDN博客汇总(101-200篇)

2026-03-15 15:50:24 474

原创 CSDN博客汇总(1-100篇)

本文档汇总了已发布的99篇CSDN博客文章。

2026-01-15 09:12:14 1179

原创 Git worktree:多工作区并行开发与实践

Git worktree 允许在单一仓库下创建多个工作目录,每个目录可检出不同分支,实现并行开发而无需频繁切换分支或克隆多份仓库。与多次 clone 不同,worktree 共享同一套 Git 对象库和 refs,节省空间且保持分支同步。本文介绍了 worktree 的核心概念、常用命令、与 clone 的区别、常见问题及修复方法,并提供了 Monorepo 协作场景下的实践建议。通过合理使用 worktree,开发者可以更高效地管理多分支并行开发任务。

2026-04-08 08:21:22 212

原创 Android Bionic Libc 原理与实现综述

Android Bionic Libc 原理与实现综述

2026-04-08 08:19:59 339

原创 OpenSSL:C 语言 TLS 客户端完整示例

本文提供OpenSSL TLS客户端的C语言实现指南,包含1.1.x和3.x版本的完整示例代码。内容涵盖环境准备、编译链接、核心对象说明、程序逻辑分解、TLS握手流程等关键知识点。 摘要要点: 提供从安装到运行的快速上手指南 详细说明核心对象SSL_CTX和SSL的作用及调用顺序 分解程序九大组成部分及其时序关系 包含TLS握手与应用数据传输的示意图 给出1.1.x和3.x版本的完整代码示例 说明版本间主要差异及编译链接方法 强调教学代码与生产环境的区别 适用于需要快速实现基础TLS客户端功能的开发者参考。

2026-04-07 09:18:20 384

原创 Makefile 入门与 C/C++ 项目构建指南

本文是一份关于Makefile和C/C++项目构建的实用指南。主要内容包括: Makefile基础概念:介绍Makefile作为项目构建"施工图"的作用,通过依赖关系图说明构建流程。 核心功能: 规则三要素(目标、依赖、命令) 增量编译机制(基于文件时间戳比较) 变量定义与赋值方式(=、:=、?=等) 高级特性: 模式规则(%.o: %.c)和自动化变量($@、$<等) 伪目标(.PHONY)和常用目标约定(all、clean等) 内置函数(wildcard、patsubst等)

2026-04-07 08:57:24 237

原创 WebXR 技术详解:标准、生态与开发入门

WebXR是由W3C制定的Web开放标准,用于在浏览器中访问VR/AR/MR设备。它并非单一开源项目,而是由各浏览器自行实现的API规范,围绕标准形成了丰富的开源生态。文章详细介绍了WebXR的发展历程(从WebVR演进而来)、核心架构、API概念、会话模式、参考空间类型以及扩展模块。同时提供了典型开发流程、浏览器支持现状、主流开源框架选型建议、性能优化要点和应用场景分析,最后给出入门学习资源。WebXR通过统一接口实现跨平台沉浸式体验,但开发者需注意不同设备和浏览器的兼容性差异。

2026-04-06 09:07:31 318

原创 C++ 多线程内存模型与 memory_order 详解

本文深入解析C++11引入的多线程内存模型与memory_order机制。主要内容包括:1) 数据竞争与原子操作std::atomic的解决方案;2) 内存顺序问题与memory_order的六种枚举值;3) release/acquire语义实现线程同步的原理;4) 硬件层面缓存一致性协议(MESI)和写缓冲对内存可见性的影响;5) 实际应用中的选型建议和典型误用场景。文章通过生产者-消费者等示例,阐明仅靠原子性不足以保证正确性,必须配合适当的内存顺序约束才能建立跨线程的happens-before关系。

2026-04-06 09:06:49 326

原创 CMake: target_include_directories、target_compile_definitions、target_link_libraries 详解

CMake目标级命令解析 本文详细讲解了Modern CMake中三个核心目标级命令:target_include_directories、target_compile_definitions和target_link_libraries。它们通过PRIVATE/PUBLIC/INTERFACE作用域控制属性传递,分别管理头文件路径(-I)、预定义宏(-D)和链接库(-l)。重点包括:作用域选择原则、传递机制、构建阶段影响,以及三者协同使用示例。

2026-04-04 09:24:27 485

原创 无人机 Remote ID(RID)广播与技术标准概览

无人机 Remote ID(RID)广播与技术标准概览

2026-04-04 09:23:06 614

原创 WebRTC 接收端音频流畅低延迟播放:原理与源码对照(NetEQ / Opus)

本文深入解析了WebRTC接收端如何实现音频流畅低延迟播放,重点分析了NetEQ模块的工作原理与源码实现。文章从接收端面临的网络抖动、乱序、丢包等问题切入,系统梳理了音频数据从RTP包到扬声器的处理流程。通过源码对照,详细展示了NetEQ的双入口API设计(InsertPacket与GetAudio)、内部信号处理机制、关键对象关系以及与Opus解码器的协同工作。文章还澄清了常见误区,指出NetEQ并非WebRTC中唯一的音频处理模块,而是专门负责抖动缓冲与播放决策的核心组件。

2026-04-03 08:10:24 535

原创 Linux ss 命令详解与 Netlink 原理

本文详细介绍了Linux下的ss命令及其实现原理。ss是iproute2套件中的套接字统计工具,用于查看TCP/UDP/UNIX等套接字连接状态,相比传统的netstat具有更快速度和更详细的内核信息。文章涵盖了常用场景(如查看监听端口、已建立连接、UDP套接字等)、参数详解(如-tinp组合)、实现原理(基于Netlink与内核直接通信)以及与其他工具(netstat、lsof、ip)的对比。此外还提供了典型排查场景、权限说明和网络命名空间中的使用建议,是Linux网络问题排查的实用指南。

2026-04-03 07:59:13 448

原创 Git分支可视化管理面板设计与选型

Git分支可视化管理面板摘要 本文提出了一种面向管理者的Git分支可视化解决方案,区别于传统Git客户端,聚焦于分支生命周期、负责人、版本发布等管理视角需求。核心推荐纯前端+文件存储方案,通过JSON格式保存分支节点数据,实现轻量级部署和离线使用。系统包含画布编辑、时间轴展示、数据存储和风险识别四大MVP功能,采用"一份数据多视图渲染"架构,支持分支关系图与时间轴双向联动。技术选型建议使用AntV X6或LogicFlow作为图引擎,ECharts实现时间轴,并提供了完整的设计方案

2026-04-02 08:54:54 507

原创 OpenAI 兼容 API 规范与自建大模型服务要点

摘要: OpenAI兼容API规范提供了一套与官方REST API相似的HTTP+JSON接口标准,便于客户端通过修改base_url和API Key切换后端服务。核心接口包括/v1/chat/completions(支持多轮对话)和流式SSE输出,同时涵盖模型列表、向量计算等常见端点。自建服务需实现协议转换、鉴权、流式映射等功能,可分阶段完成核心开发、测试验证及部署运维。该规范有助于复用现有生态工具,但需注意不同实现的字段差异,建议参考官方文档和实际抓包数据确保兼容性。(149字)

2026-04-02 08:53:05 791

原创 软件开发中的背压机制详解

摘要 背压机制是解决生产与消费速率不匹配的关键技术,通过阻塞、丢弃、限流等方式避免系统过载。本文系统梳理了背压机制在各领域的实现: 后端系统:TCP滑动窗口、HTTP/2流控、消息队列缓冲策略 前端场景:事件节流、WebSocket队列管理、RxJS操作符 移动端:Kotlin Flow缓冲策略、Combine拉取机制 通用原则:必须明确缓冲区边界、降速责任方和监控指标 文章提出背压设计四问框架(可丢性、等待时间、降速主体、满策略),并给出指标监控建议和常见反模式修正方案。

2026-04-01 08:56:35 624

原创 接口调用失败与重试策略详解

接口调用失败与重试策略摘要 远程调用失败时,合理重试可提高系统容错性,但不当设计会加剧负载或导致重复操作。本文总结了常见重试策略的关键要点: 前置条件:仅对幂等或可去重操作重试,识别可重试错误类型(如超时、5xx),设置重试上限和截止时间 核心策略: 立即重试(适合瞬时故障) 指数退避+抖动(推荐方案,避免重试风暴) 异步队列重试(适合最终一致场景) 最佳实践: 配合熔断机制防止雪崩 添加随机抖动避免同步重试 监控重试指标(成功率、延迟分布等) 避免常见反模式(如无限重试、多层重复重试)

2026-04-01 08:55:39 447

原创 CPU 上下文切换:原理、类型与性能调优

摘要 CPU上下文切换是操作系统核心调度机制,涉及保存当前任务状态并恢复新任务状态的过程。本文系统性地介绍了上下文切换的原理、类型及性能调优方法。 主要内容包括: CPU上下文定义:硬件状态快照(寄存器、程序计数器等) 切换诱因:系统调用、中断、时间片耗尽等 三种切换类型对比(进程、线程、中断)及其开销差异 性能影响:直接开销(内核路径耗时)和间接开销(缓存失效) 高切换场景的系统表现及诊断方法(vmstat/pidstat)

2026-03-31 08:13:37 541

原创 Nagle 算法与 TCP_NODELAY、TCP_CORK 详解

本文详细解析了Nagle算法及其与TCP_NODELAY、TCP_CORK的关系。Nagle算法通过缓冲小数据包减少网络传输中的头部开销,适用于对延迟不敏感的场景。但在实时交互、小包高频等场景下,Nagle算法可能导致性能问题,此时可通过TCP_NODELAY关闭算法。文章还分析了Nagle与延迟确认(Delayed ACK)的交互问题,并提供了缓解策略和实用建议,包括代码示例和平台排障命令。

2026-03-31 08:12:57 550

原创 C++ vcpkg:安装、使用、原理与选型

C++ vcpkg 包管理器指南 vcpkg 是微软维护的开源 C/C++ 包管理工具,支持 Windows/Linux/macOS 平台,提供从依赖安装到构建集成的完整解决方案。本文介绍了 vcpkg 的核心概念与使用方式,包括两种工作模式(经典模式与清单模式)、与 CMake/Visual Studio 的集成方法、Triplet 目标三元组的作用、二进制缓存优化以及私有依赖管理。同时对比了 vcpkg 与 Conan/Spack 的差异,并针对大型项目提供了版本治理建议。

2026-03-30 08:57:15 494

原创 C++ new、堆分配与 brk / mmap

摘要:C++的new操作符和堆分配(malloc)通常先在用户态通过分配器缓存(如ptmalloc、jemalloc)完成,不一定触发内核态切换。仅当分配器需要扩展内存(通过brk调整堆顶或mmap新建映射)时才会陷入内核。现代分配器(如tcmalloc)通过线程缓存减少全局锁和系统调用。小块分配多在堆内完成,大块则倾向于mmap独立映射,以降低碎片。实际行为取决于libc版本、分配器实现和运行时参数,可通过工具观察内存映射变化。

2026-03-30 08:55:51 418

原创 C++ STL 迭代器:原理、分类与现代演进

C++ STL迭代器作为容器与算法的桥梁,通过抽象接口实现解耦。文章系统介绍了五种迭代器类别(Input/Output/Forward/Bidirectional/RandomAccess)及其能力层次,剖析了const_iterator、反向迭代器等特殊类型。重点讲解了iterator_traits元编程技术和编译期分派机制,以及C++17/20的演进:弃用std::iterator、引入Concepts和Ranges特性。

2026-03-28 08:12:06 336

原创 C++ operator== 重载与比较语义

本文总结了C++中operator==重载与比较语义的关键要点。主要内容包括:自定义类型默认没有==操作,需要通过成员或非成员函数定义;C++20引入默认相等比较和三路比较运算符<=>;比较运算符的对称性、等价关系要求;浮点数比较的特殊处理;隐藏友元惯用法等。文章还探讨了三路比较返回类型选择、与STL容器的配合、继承场景下的比较实现等实际问题,并提供了工程实践建议和参考链接。

2026-03-28 08:11:09 223

原创 ARMv8、AArch64 与 arm64:命名与体系结构要点

本文介绍了ARMv8、AArch64与arm64的关系与要点。ARMv8是ARM架构的64位版本,包含AArch64(64位执行状态)和AArch32(32位兼容状态)。AArch64使用A64指令集,具有31个64位通用寄存器。工程中常用arm64或aarch64表示AArch64,二者二进制兼容。文章对比了AArch64与x86-64的差异,并概述了ARMv9在AArch64基础上的扩展方向,包括SVE2向量扩展和安全特性。开发时需注意ARM的弱内存模型,正确使用原子操作和内存屏障。

2026-03-27 08:42:46 526

原创 Java 语言版本演进与特性概要

Java 语言演进与版本特性概览 摘要:本文系统梳理了 Java 语言从 JDK 1.0 到最新 LTS 版本 JDK 21 的关键演进历程。内容涵盖:1)版本发布节奏转变(2018年起采用半年周期+LTS模式);2)各阶段代表性语言特性(如JDK 5泛型、JDK 8 Lambda、JDK 17密封类等);3)模块系统(JPMS)的引入与影响;4)生产环境选型建议(推荐基于LTS版本)。特别标注了各LTS版本(8/11/17/21)的核心改进,并提供了升级检查清单的工程实践参考。

2026-03-27 08:41:58 605

原创 无锁环形队列与高并发日志设计要点

摘要 无锁环形队列利用原子操作和显式内存序实现高效并发访问,适用于高吞吐场景如日志系统、包处理等。其核心优势在于减少锁竞争和阻塞,但实现复杂度较高。SPSC(单生产者单消费者)模型实现最简单,MPMC(多生产者多消费者)需严格验证。关键设计要点包括:环形缓冲区索引管理(通常取2的幂)、原子操作与内存序配对(release/acquire)、ABA问题防范、伪共享优化等。实践建议优先使用成熟库(如DPDK rte_ring),若需自实现应明确并发模型、容量策略,并通过压力测试验证正确性。

2026-03-26 08:59:50 762

原创 C++ 模板与泛型编程入门

C++模板与泛型编程入门摘要 本文介绍了C++模板的基本概念和用法。模板通过将类型参数化实现泛型编程,是STL的基础。主要内容包括: 函数模板 - 通过template <typename T>定义,避免为不同类型重复编写相同逻辑 类模板 - 用于创建通用容器和类,使用时需显式指定类型参数 模板实例化 - 编译期根据实际调用生成具体代码 标准库应用 - STL容器和算法广泛使用模板 选择排序示例 - 展示模板如何实现通用算法 自定义比较 - 通过传入比较函数或lambda实现灵活排序

2026-03-26 08:59:08 475

原创 C/C++ snprintf 函数详解

snprintf函数详解:C/C++中安全格式化输出的关键工具。该函数通过size参数限制写入长度,防止缓冲区溢出,保证size>0时结果以\0终止。返回值表示完整输出所需字符数(不含终止符),可用于检测截断。相比sprintf更安全,比strncpy更适合格式化场景。使用时需注意正确传入缓冲区总长度,检查返回值处理截断情况,并避免格式串漏洞。现代代码推荐用snprintf替代无边界检查的sprintf和不保证终止符的strncpy。

2026-03-25 10:05:54 497

原创 Linux 驱动框架设计详解

本文详细介绍了Linux内核驱动框架的设计思想与实现机制。主要内容包括: 架构设计:通过分离设备信息与驱动逻辑、分层设计(子系统核心层+具体驱动)以及总线-设备-驱动模型,实现驱动代码的复用性和可移植性。 关键组件: Platform总线用于片上外设 设备树描述硬件资源 子系统分层(如TTY、Input等) 开发流程: 资源获取(通过platform_get_resource等接口) 设备匹配机制 probe/remove生命周期管理 devm_*资源自动管理

2026-03-25 10:05:09 662

原创 C++ STL:相等与等价

本文探讨了C++ STL中相等与等价的概念差异。有序容器和算法使用比较谓词comp定义严格弱序,而operator==则定义值语义上的相等。文章通过std::set_difference和忽略大小写比较等案例,说明自定义比较谓词的正确实现方式,强调必须满足非自反、非对称和传递性等严格弱序要求。同时对比了相等与等价在不同场景下的应用,并指出常见错误模式,如错误使用==或<=作为比较谓词。最后提供了验证严格弱序属性的测试方法。

2026-03-24 13:20:30 556

原创 C++ static 关键字详解

static关键字在C++中根据上下文影响变量/函数的链接性、存储期或类成员归属。对局部变量,它使存储期变为静态且只初始化一次;对命名空间作用域变量/函数,它强制内部链接;对类成员,它创建共享的静态数据成员或无this的成员函数。C++11保证函数内静态局部变量的线程安全初始化,C++17引入inline变量简化定义。需注意静态变量的析构顺序不确定性及并发写入风险。合理使用static可控制符号可见性、实现延迟初始化和共享数据。

2026-03-24 13:19:59 563

原创 libevent、libev 与 libuv:对比、演进与实现原理

libevent、libev与libuv对比摘要 本文对比了三种主流C语言事件驱动库:libevent、libev和libuv。libevent作为全功能框架提供HTTP/DNS等高级组件;libev专注轻量级事件循环,适合Unix环境;libuv则提供跨平台统一抽象,是Node.js的底层实现。三者均采用事件循环模型,但在设计取向、平台支持、线程模型等方面存在差异。libuv通过IOCP+epoll/kqueue双栈适配实现跨平台一致性,而libev在Unix上性能更优但Windows支持有限。

2026-03-23 09:28:29 515

原创 Linux 网卡名称详解:从 lo 到 docker0,一篇搞懂所有网络接口

你是否曾经对着 `ip a` 输出中的一堆网卡名称感到困惑?eth0、ens33、enp0s3、docker0… 它们都是什么?这篇文章说明 Linux 系统中各类网络接口名称的含义、来源及适用场景。

2026-03-23 09:27:15 561

原创 SSH 协议详解

本文系统介绍SSH协议的核心原理与OpenSSH实践应用。主要内容包括: SSHv2协议分层架构(传输层/用户认证/连接协议)与RFC规范 密钥交换机制与算法协商流程 典型认证方式(公钥/密码/交互式)对比 OpenSSH常用功能(远程命令/端口转发/SFTP等) 服务端配置要点与免密登录完整实现 安全加固建议与故障排查简表 高级应用场景(跳板机/连接复用/代理转发等) 文章通过流程图与表格辅助说明SSH握手过程和安全机制,既涵盖协议原理又提供实用操作指南,适用于从入门到进阶的SSH学习需求。

2026-03-22 09:50:08 590

原创 C++ std::vector:对象与元素的存储位置及实现原理

本文深入解析C++中std::vector的存储机制和实现原理。首先区分vector对象本身与其管理元素的存储位置:对象存储取决于声明方式(栈/堆/全局区),而元素数据几乎总在堆上。文章详细剖析了vector的三指针实现模型(_M_start、_M_finish、_M_end_of_storage),并对照GNU libstdc++(GCC 13)源码验证核心操作。

2026-03-22 09:49:19 468

原创 CentOS 与主流 Linux 发行版:版本与时间表(年表)

本文汇总了主流Linux发行版(CentOS、Debian、Ubuntu、RHEL等)的版本时间表,包括各版本的代号、首发时间和生命周期。重点介绍了CentOS从传统稳定版转向Stream开发线的变化,Debian稳定版的演进历程,Ubuntu LTS和非LTS版本的区别,以及RHEL和Fedora的版本支持周期。同时涵盖了openSUSE Leap和Slackware等发行版的版本信息,为系统管理员和开发者提供版本对照参考。

2026-03-20 09:31:19 626

原创 CentOS 与主流 Linux 发行版历史与版本综述

本文梳理了CentOS从RHEL兼容克隆到CentOS Stream的变迁历程,并概述了主流Linux发行版谱系。主要内容包括:CentOS历史发展脉络,CentOS Linux与CentOS Stream的区别,红帽生态上下游关系示意图,Debian/Red Hat/SUSE等主流发行版特点比较,以及版本号与发布周期概述。文章建议生产环境需核对官方生命周期和安全更新策略,从CentOS迁移需明确兼容性需求,并提供了各发行版官方文档查询入口。本文为技术整理笔记,不替代官方发布说明。

2026-03-20 09:30:40 513

原创 CMake 常见陷阱与规避要点

CMake 常见问题与解决方案摘要 本文总结了CMake工程中的常见问题及其解决方法,主要包括变量缓存、目标依赖、路径查找等关键方面。通过表格和流程图展示了12类典型问题,如子目录option覆盖、目标可见顺序、第三方库封装等,并提供了对应的代码示例和最佳实践建议。文章特别强调了变量优先级、依赖顺序控制、INTERFACE库封装等技术要点,帮助开发者规避配置错误、链接失败等问题。适合作为CMake项目的自查清单和代码评审参考。

2026-03-19 08:40:41 855

原创 CMake 策略 CMP0077:子目录中 option() 与父目录同名变量的行为及规避方法

摘要 CMake策略CMP0077规范了子目录中option()与父目录同名变量的交互行为。在层次化项目中,父级通过set()设置的变量可能被子目录的option()覆盖,导致条件编译结果与预期不符。本文分析了问题成因,对比了CMP0077的OLD/NEW行为差异,并给出两种解决方案:子工程侧采用条件化option()声明,或顶层工程显式设置策略为NEW。建议子模块优先使用条件化声明以保证兼容性,而聚合工程可在CMake≥3.13时设置NEW策略。两种方法可互补使用,确保变量传递的正确性。

2026-03-19 08:40:07 513

原创 Linux systemd发展演进与实战指南

本文介绍了Linux系统管理框架systemd的发展历程及其核心特性。systemd取代了传统的SysVinit和Upstart,通过并行启动、按需激活等机制显著提升系统启动速度。文章详细解析了systemd的架构设计,包括其单元类型(Unit)、依赖管理系统和日志服务(journald),并提供了常用命令、自定义服务配置示例以及典型服务单元(如nginx)的分析。通过对比三代init系统的特点,展现了systemd作为现代Linux系统管理框架的技术优势,包括统一接口、功能集成和更好的资源管理能力。

2026-03-18 13:19:54 632

原创 开源软件开源协议详解与选择指南

开源协议选择指南:本文系统梳理了常见开源协议的类型、特点和使用场景,帮助开发者根据需求选择合适的许可方式。文章将开源协议分为宽松型(如MIT、Apache)、强Copyleft(如GPL、AGPL)和弱Copyleft(如LGPL、MPL)三类,详细比较了各协议的宽松程度、核心条款和适用场景。特别强调协议兼容性、版权声明和专利条款等关键注意事项,并提供决策表和快速判断流程。对于文档等非代码资源推荐使用CC系列许可,建议软件源码使用OSI认可的协议。文末提醒开发者务必阅读协议全文,必要时咨询法务。

2026-03-18 13:18:58 802

空空如也

空空如也

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

TA关注的人

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