- 博客(265)
- 收藏
- 关注
原创 Linux disown命令详解 后台作业脱管与终端退出
Linux disown命令摘要 disown是交互式shell中的内置命令,主要用于管理后台作业与终端退出的关系。关键点: 作用:将后台作业从shell作业表中移除(-h选项则仅标记),避免终端退出时连带终止进程 典型场景:关闭终端后仍需运行的长时间任务 常用组合:配合nohup使用更可靠(nohup处理SIGHUP信号,disown处理作业表) 替代方案:setsid创建新会话、tmux/screen终端复用器更彻底隔离进程 注意:disown不保证进程完全脱离会话,生产环境建议使用systemd等
2026-04-21 08:37:56
390
原创 Linux nohup命令详解 忽略SIGHUP与后台常驻
本文详解Linux的nohup命令,它通过忽略SIGHUP信号使命令在终端关闭后仍能继续运行。文章涵盖:1) nohup解决的问题(防止终端断开导致进程终止);2) SIGHUP信号与nohup的关系;3) 默认重定向规则(stdin指向/dev/null,stdout/stderr输出到nohup.out);4) 基本语法与典型用法(配合&后台运行);5) 与其他方案(disown/setsid/tmux)的对比;6) 常见问题(日志位置、进程被杀原因等)。
2026-04-21 08:36:45
306
原创 哔哩哔哩技术微信公众号:多媒体技术文章索引
本文摘要总结了哔哩哔哩技术公众号的多媒体技术文章索引,包含31篇技术文章的目录和链接。这些文章涵盖了B站在视频编解码、流媒体传输、画质优化、AI算法应用等多媒体技术领域的创新实践,包括WebAssembly软解HEVC、自研视频编码器BILIAV1、直播P2P技术、4K实时超分算法等核心成果。索引表提供了每篇文章的标题和原文链接,便于读者快速查阅B站在多媒体技术领域的最新技术分享。
2026-04-20 08:46:25
504
原创 软件复杂性成因与应对
本文探讨了软件复杂性的成因、表现及管理方法。复杂性源于依赖过多和设计晦涩,表现为变更放大、认知负荷高和未知风险。治理需结合模块化、信息隐藏和战略投入,建议固定10%-20%迭代容量用于技术债偿还。文章对比了战术性编程与战略性编程的差异,强调深模块设计、一致性维护和自动化测试的重要性。技术债管理需显性化并嵌入开发流程,通过童子军原则和热点治理实现快节奏下的平衡。最终目标是建立可持续的软件演进能力,避免复杂性累积导致的效率下降。
2026-04-20 08:45:03
560
原创 Java多版本环境管理工具选型与命令速查
Java多版本环境管理工具指南 本文系统介绍了Java多版本环境管理的各类工具和方案,涵盖SDKMAN、jEnv、Jabba等主流工具,以及操作系统包管理、手动配置等方法。主要内容包括: 明确管理多JDK的四类核心能力:获取二进制、多版本并存、切换默认版本和项目级版本锁定 详细对比各工具特点及适用场景,提供选型决策流程图 具体说明SDKMAN、jEnv、Jabba等工具的安装和使用方法 介绍各操作系统原生包管理方案和手动配置PATH/JAVA_HOME的技巧
2026-04-19 09:09:55
401
原创 UTC、CST、GMT与主流时区:概念、换算与开发实践
本文摘要: UTC、GMT与CST时区概念解析与开发实践指南。UTC是国际标准时间基准,GMT常与UTC混用但不建议工程使用,CST存在多义性(中国/北美/古巴标准时间)。文章提供6条核心原则:优先使用UTC存储、避免CST缩写歧义、考虑夏令时影响等。包含时区换算方法、主流时区速查表(含IANA标识)、开发者实践场景(数据库存储、API设计、定时任务等),以及常见错误排查清单。强调应使用ISO 8601格式传输时间数据,存储层用UTC,展示层按用户时区转换,并提供了时区处理决策流程图。
2026-04-19 09:09:15
425
原创 C++跨平台与跨语言绑定工具:SWIG、Djinni 等选型
本文介绍了C++跨平台开发中的构建工具和跨语言绑定解决方案。主要内容包括: 跨平台构建:推荐使用CMake作为构建系统,配合vcpkg/Conan进行依赖管理,实现C++代码在不同操作系统上的编译运行。 跨语言绑定工具: SWIG:通过解析C++头文件和接口文件生成多种语言的绑定代码,适合已有大量C++ API需要导出的场景 Djinni:使用IDL定义接口,生成多端源码,特别适合移动端开发中C++核心与平台层的交互
2026-04-17 08:35:49
491
原创 Android ADB 命令教程与速查
ADB 命令摘要(150字) ADB (Android Debug Bridge) 是 Android 开发核心工具链,用于设备连接、应用管理、日志抓取等操作。本文提供模块化命令速查,涵盖设备连接(USB/无线调试)、应用安装(install/uninstall)、包管理(pm list/path)、活动控制(am start/stop)等关键功能。包含多设备管理(-s参数)、文件传输(push/pull)、日志捕获(logcat)等实用场景,并附架构示意图和版本差异说明。
2026-04-17 08:35:08
594
原创 C++相比C多了什么 语言特性并发内存序与ABI对比
C++相比C语言的主要差异体现在设计哲学和功能扩展上。C强调过程式编程和硬件贴近性,而C++在兼容C的同时提供了多范式抽象(OOP、泛型、函数式)和丰富的标准库(STL、线程、时间等)。关键差异包括:类型系统更严格(enum class、nullptr)、支持函数重载和引用、RAII自动资源管理、模板泛型编程、异常处理机制等。C++11后新增了移动语义、lambda、并发支持等现代特性。C的ABI更稳定,C++则因特性复杂导致跨版本兼容挑战。工程上,C++适合大型项目,C更适合底层和跨平台场景。
2026-04-16 08:35:21
761
原创 C++ std::move实现原理与vector扩容移动语义
C++ std::move 实现原理与移动语义摘要 std::move 并不直接移动数据,而是将表达式转换为右值引用形式,触发移动构造/赋值。核心要点: std::move 仅做类型转换,真正移动发生在目标类型的移动操作中 vector 扩容通过移动构造每个元素到新内存实现高效搬迁 移动性能取决于类型:资源句柄类(如string)移动快,简单POD类移动与拷贝差异小 移动构造应标记noexcept以确保容器优化 短字符串可能因SSO使移动退化为拷贝
2026-04-16 08:33:57
475
原创 iOS 与 Android:浏览器引擎、WebView 与生态差异概览
iOS与Android在浏览器引擎架构上存在显著差异:iOS强制使用WebKit内核,所有浏览器(包括Chrome/Firefox)实质都是Safari的封装;而Android则允许Chromium/Blink、Gecko等多引擎并存。iOS 17.4后在欧盟地区开放第三方引擎,但全球仍以WebKit为主。技术实现上,iOS通过WKWebView提供现代网页支持,Android则依赖System WebView(基于Chromium)。
2026-04-15 08:53:20
747
原创 Safari 26.4 新增 WebTransport:对 iOS WebView 的影响与落地建议
Safari 26.4新增WebTransport支持,为iOS生态的Web应用带来低时延传输能力。这一更新不仅影响Safari浏览器,也适用于WKWebView等Web容器,使H5页面获得更接近原生的实时通信性能。WebTransport基于HTTP/3/QUIC协议,相比WebSocket在多流并发、传输控制等方面具有优势。开发者可采用能力检测优先、协议降级兜底的策略,并提供最小检测代码示例。上线前需验证版本兼容性、链路回退机制及性能对比。本文为技术解读,实际应用请以官方说明和实机测试为准。
2026-04-15 08:52:32
598
原创 RabbitMQ系列04 - 流控与信用机制
RabbitMQ通过两种机制实现流控:1)全局资源告警(内存/磁盘水位触发阻塞)和2)连接级信用机制(基于邮箱的反压传导)。当生产速率超过处理能力时,全局机制会保护节点避免OOM,而信用机制则在连接内部形成端到端反压。两者配合prefetch设置,共同确保系统稳定性。运维中需关注内存告警、连接阻塞和队列深度等指标,不同版本实现细节需参考官方文档。
2026-04-14 08:06:48
534
原创 RabbitMQ系列03 - AMQP分层与协议流转
摘要:本文解析RabbitMQ使用的AMQP 0-9-1协议分层架构,从传输层(TCP帧)、会话层(信道管理)到模块层(业务命令)。重点阐述了生产者建连发布(Connection.Start→Basic.Publish)和消费者订阅确认(Basic.Qos→Basic.Ack)的协议流程,并通过Mermaid时序图展示核心交互。文章还对比了AMQP命令与Java客户端API的对应关系,强调分层设计实现的多路复用、可靠传输等优势。
2026-04-14 08:03:44
522
原创 RabbitMQ系列02 - RabbitMQ 消息模型:Broker、交换器、队列与收发路径
RabbitMQ是基于AMQP 0-9-1协议的消息中间件,其核心架构包含Exchange(交换器)、Queue(队列)和Binding(绑定)三大组件。消息由Producer发送到Exchange,根据Exchange类型(fanout/direct/topic/headers)和routing key路由到相应队列,最终被Consumer消费。系统通过Connection建立TCP连接,Channel实现轻量级虚拟连接完成具体操作。多消费者场景下采用轮询分发,可通过prefetch控制流量。
2026-04-13 09:03:40
381
原创 RabbitMQ系列01 - 消息中间件与 MQ:在分布式系统里解决什么问题
本文介绍了消息队列中间件(MQ)和面向消息的中间件(MOM)在分布式系统中的作用。通过对比同步调用和引入Broker的差异,阐述了MQ在解耦、冗余、扩展性、削峰等方面的优势。文章还展示了典型部署架构和流量削峰示意图,并提供了RabbitMQ、Kafka等主流产品的粗粒度选型参考。最后指出低延迟强一致、流量极小等场景可能不需要引入MQ。全文强调具体实现需参考官方文档和实际测试,不构成产品选型建议。
2026-04-13 09:02:53
328
1
原创 EtherCAT 工业实时以太网技术概览
EtherCAT工业实时以太网技术摘要 EtherCAT是一种高性能工业实时以太网技术,采用主从架构和独特的"On-the-Fly"数据处理方式,在工业自动化领域具有显著优势。其核心特点包括: 主从结构:主站控制通信周期,从站通过ESC芯片快速处理数据帧 高实时性:通信周期可达100μs量级,同步抖动可控制在亚微秒级 高效带宽:单帧承载多从站数据,有效载荷占比高 灵活拓扑:支持线型、环型等多种拓扑结构 精确同步:分布式时钟技术实现多设备高精度时间同步
2026-04-11 11:39:31
493
原创 Linux iptables 与 Netfilter:原理、路径与运维要点
Linux iptables与Netfilter运维摘要 本文系统介绍了Linux防火墙核心机制: 架构分层:Netfilter是内核框架,iptables为用户态配置工具 处理流程:通过5个钩子点(PREROUTING/INPUT/FORWARD/OUTPUT/POSTROUTING)和4张表(raw/mangle/nat/filter)实现报文处理 运维要点: 常用命令格式与匹配条件 状态防火墙配置示例 iptables-save/restore备份恢复机制 规则性能优化建议
2026-04-11 11:38:37
545
原创 C++ 包管理工具概览
C++包管理工具生态概览:文章系统梳理了C++领域各类包管理解决方案,包括专用工具(vcpkg/Conan)、CMake集成方案(CPM/Hunter/FetchContent)、构建系统一体方案(Bazel/xmake/Meson)等。重点对比了vcpkg和Conan的核心特点与集成方式,vcpkg侧重源码构建与微软生态集成,Conan强调二进制包管理与多配置支持。同时提供选型决策树和工具总览表,帮助开发者根据项目规模、平台需求等选择合适方案。
2026-04-10 06:54:07
518
原创 Jenkins 开源 CI/CD 平台概览与版本演进
Jenkins开源CI/CD平台演进与核心功能概述 Jenkins是领先的开源自动化服务器,起源于2004年Hudson项目,2011年分叉后成为主流CI/CD解决方案。其核心能力包括: 多语言构建支持:兼容Maven、Gradle等主流构建工具 Pipeline即代码:通过Groovy DSL编写Jenkinsfile实现版本化配置
2026-04-09 06:41:20
829
原创 CI/CD 平台选型对比:与 Jenkins 同类的方案
CI/CD 平台选型对比摘要 本文系统对比了主流 CI/CD 工具与 Jenkins 的替代方案,从概念分层、部署形态到具体选型建议。内容涵盖: 概念分层:区分 CI(构建)、CD(交付)和 GitOps(部署)的不同关注点 方案分类:包括代码托管内置方案(GitLab CI)、通用服务器(Jenkins)、云原生工具(Argo CD)和国内一站式平台 对比维度:从自托管灵活性、K8s 亲和性到运维成本等角度分析各工具特点 典型组合:提出 CI 构建+GitOps 发布的推荐架构模式
2026-04-09 06:40:14
594
原创 Git worktree:多工作区并行开发与实践
Git worktree 允许在单一仓库下创建多个工作目录,每个目录可检出不同分支,实现并行开发而无需频繁切换分支或克隆多份仓库。与多次 clone 不同,worktree 共享同一套 Git 对象库和 refs,节省空间且保持分支同步。本文介绍了 worktree 的核心概念、常用命令、与 clone 的区别、常见问题及修复方法,并提供了 Monorepo 协作场景下的实践建议。通过合理使用 worktree,开发者可以更高效地管理多分支并行开发任务。
2026-04-08 08:21:22
656
原创 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
449
原创 Makefile 入门与 C/C++ 项目构建指南
本文是一份关于Makefile和C/C++项目构建的实用指南。主要内容包括: Makefile基础概念:介绍Makefile作为项目构建"施工图"的作用,通过依赖关系图说明构建流程。 核心功能: 规则三要素(目标、依赖、命令) 增量编译机制(基于文件时间戳比较) 变量定义与赋值方式(=、:=、?=等) 高级特性: 模式规则(%.o: %.c)和自动化变量($@、$<等) 伪目标(.PHONY)和常用目标约定(all、clean等) 内置函数(wildcard、patsubst等)
2026-04-07 08:57:24
272
原创 WebXR 技术详解:标准、生态与开发入门
WebXR是由W3C制定的Web开放标准,用于在浏览器中访问VR/AR/MR设备。它并非单一开源项目,而是由各浏览器自行实现的API规范,围绕标准形成了丰富的开源生态。文章详细介绍了WebXR的发展历程(从WebVR演进而来)、核心架构、API概念、会话模式、参考空间类型以及扩展模块。同时提供了典型开发流程、浏览器支持现状、主流开源框架选型建议、性能优化要点和应用场景分析,最后给出入门学习资源。WebXR通过统一接口实现跨平台沉浸式体验,但开发者需注意不同设备和浏览器的兼容性差异。
2026-04-06 09:07:31
338
原创 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
357
原创 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
509
原创 WebRTC 接收端音频流畅低延迟播放:原理与源码对照(NetEQ / Opus)
本文深入解析了WebRTC接收端如何实现音频流畅低延迟播放,重点分析了NetEQ模块的工作原理与源码实现。文章从接收端面临的网络抖动、乱序、丢包等问题切入,系统梳理了音频数据从RTP包到扬声器的处理流程。通过源码对照,详细展示了NetEQ的双入口API设计(InsertPacket与GetAudio)、内部信号处理机制、关键对象关系以及与Opus解码器的协同工作。文章还澄清了常见误区,指出NetEQ并非WebRTC中唯一的音频处理模块,而是专门负责抖动缓冲与播放决策的核心组件。
2026-04-03 08:10:24
558
原创 Linux ss 命令详解与 Netlink 原理
本文详细介绍了Linux下的ss命令及其实现原理。ss是iproute2套件中的套接字统计工具,用于查看TCP/UDP/UNIX等套接字连接状态,相比传统的netstat具有更快速度和更详细的内核信息。文章涵盖了常用场景(如查看监听端口、已建立连接、UDP套接字等)、参数详解(如-tinp组合)、实现原理(基于Netlink与内核直接通信)以及与其他工具(netstat、lsof、ip)的对比。此外还提供了典型排查场景、权限说明和网络命名空间中的使用建议,是Linux网络问题排查的实用指南。
2026-04-03 07:59:13
499
原创 Git分支可视化管理面板设计与选型
Git分支可视化管理面板摘要 本文提出了一种面向管理者的Git分支可视化解决方案,区别于传统Git客户端,聚焦于分支生命周期、负责人、版本发布等管理视角需求。核心推荐纯前端+文件存储方案,通过JSON格式保存分支节点数据,实现轻量级部署和离线使用。系统包含画布编辑、时间轴展示、数据存储和风险识别四大MVP功能,采用"一份数据多视图渲染"架构,支持分支关系图与时间轴双向联动。技术选型建议使用AntV X6或LogicFlow作为图引擎,ECharts实现时间轴,并提供了完整的设计方案
2026-04-02 08:54:54
516
原创 OpenAI 兼容 API 规范与自建大模型服务要点
摘要: OpenAI兼容API规范提供了一套与官方REST API相似的HTTP+JSON接口标准,便于客户端通过修改base_url和API Key切换后端服务。核心接口包括/v1/chat/completions(支持多轮对话)和流式SSE输出,同时涵盖模型列表、向量计算等常见端点。自建服务需实现协议转换、鉴权、流式映射等功能,可分阶段完成核心开发、测试验证及部署运维。该规范有助于复用现有生态工具,但需注意不同实现的字段差异,建议参考官方文档和实际抓包数据确保兼容性。(149字)
2026-04-02 08:53:05
857
原创 软件开发中的背压机制详解
摘要 背压机制是解决生产与消费速率不匹配的关键技术,通过阻塞、丢弃、限流等方式避免系统过载。本文系统梳理了背压机制在各领域的实现: 后端系统:TCP滑动窗口、HTTP/2流控、消息队列缓冲策略 前端场景:事件节流、WebSocket队列管理、RxJS操作符 移动端:Kotlin Flow缓冲策略、Combine拉取机制 通用原则:必须明确缓冲区边界、降速责任方和监控指标 文章提出背压设计四问框架(可丢性、等待时间、降速主体、满策略),并给出指标监控建议和常见反模式修正方案。
2026-04-01 08:56:35
641
原创 接口调用失败与重试策略详解
接口调用失败与重试策略摘要 远程调用失败时,合理重试可提高系统容错性,但不当设计会加剧负载或导致重复操作。本文总结了常见重试策略的关键要点: 前置条件:仅对幂等或可去重操作重试,识别可重试错误类型(如超时、5xx),设置重试上限和截止时间 核心策略: 立即重试(适合瞬时故障) 指数退避+抖动(推荐方案,避免重试风暴) 异步队列重试(适合最终一致场景) 最佳实践: 配合熔断机制防止雪崩 添加随机抖动避免同步重试 监控重试指标(成功率、延迟分布等) 避免常见反模式(如无限重试、多层重复重试)
2026-04-01 08:55:39
465
原创 CPU 上下文切换:原理、类型与性能调优
摘要 CPU上下文切换是操作系统核心调度机制,涉及保存当前任务状态并恢复新任务状态的过程。本文系统性地介绍了上下文切换的原理、类型及性能调优方法。 主要内容包括: CPU上下文定义:硬件状态快照(寄存器、程序计数器等) 切换诱因:系统调用、中断、时间片耗尽等 三种切换类型对比(进程、线程、中断)及其开销差异 性能影响:直接开销(内核路径耗时)和间接开销(缓存失效) 高切换场景的系统表现及诊断方法(vmstat/pidstat)
2026-03-31 08:13:37
550
原创 Nagle 算法与 TCP_NODELAY、TCP_CORK 详解
本文详细解析了Nagle算法及其与TCP_NODELAY、TCP_CORK的关系。Nagle算法通过缓冲小数据包减少网络传输中的头部开销,适用于对延迟不敏感的场景。但在实时交互、小包高频等场景下,Nagle算法可能导致性能问题,此时可通过TCP_NODELAY关闭算法。文章还分析了Nagle与延迟确认(Delayed ACK)的交互问题,并提供了缓解策略和实用建议,包括代码示例和平台排障命令。
2026-03-31 08:12:57
562
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅