自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 前端应用的离线暂停更新策略:从原理到实践

离线暂停更新策略是现代 Web 应用追求“原生体验”的重要一环。通过将更新控制权交还给用户,并在技术层面保证其可靠性与安全性,可以显著提升产品的稳定性和用户满意度。未来,随着 PWA、WebAssembly 等技术的成熟,离线更新能力将变得更加强大和智能。

2026-07-24 11:18:05 212

原创 Cursor + GitOps:自动化运维新姿势

在下一个运维脚本或配置文件中,先让Cursor生成初稿。将你的GitOps仓库与Cursor项目关联,体验上下文感知的辅助。建立一个“AI运维助手”知识库,持续优化你的提示词。

2026-07-24 11:17:01 171

原创 vLLM 与 SGLang 推理框架性能横评:架构、吞吐与延迟的深度对决

吞吐量(Throughput)延迟(Latency):Time to First Token(TTFT),Per-token 延迟,端到端时间。内存效率:峰值显存占用,KV Cache 利用率。功能支持:流式输出、长上下文、多模态、工具调用等。技术融合趋势:vLLM 与 SGLang 设计思想的相互借鉴与可能的整合。硬件演进的影响:新一代 GPU 与推理芯片对框架设计的挑战。最终结论:没有绝对的赢家,只有最适合场景的选择。vLLM 是“量”的专家,SGLang 是“质”的先锋。

2026-07-24 11:15:56 340

原创 CANN Runtime:华为昇腾AI计算平台的核心运行时引擎

是华为昇腾AI计算平台(Ascend Computing Platform)的核心运行时引擎,全称为。它位于AI应用与昇腾硬件(如Ascend系列AI处理器)之间,负责管理计算资源、执行神经网络模型,并提供高效、稳定的推理与训练服务。简单来说,CANN Runtime是连接上层AI框架(如TensorFlow, PyTorch, MindSpore)与底层昇腾AI芯片的“桥梁”和“调度中心”。CANN Runtime作为昇腾AI生态的基石,为开发者屏蔽了底层硬件的复杂性,提供了统一、高效、易用的编程接口。

2026-07-20 11:04:19 296

原创 C++ 标准日志流:从基础到实战

std::cout:标准输出流,通常连接到控制台,用于输出普通信息。std::cerr:标准错误流,无缓冲,用于输出错误信息。std::clog:标准日志流,有缓冲,设计用于日志记录。这些流对象都是的实例,位于<iostream>头文件中。C++ 标准库中的std::clog为日志记录提供了基础支持,但在实际项目中通常需要额外封装或使用第三方库。选择日志方案时应综合考虑项目规模、性能要求、功能需求和团队技术栈。对于学习和小型项目,基于标准流的自定义封装是一个很好的起点;

2026-07-20 11:02:36 211

原创 C++ 标准输出流详解:从基础到高级用法

在 C++ 中,标准输出流(Standard Output Stream)是程序向控制台或终端输出数据的主要通道。它通常与std::cout对象关联,是<iostream>库的核心组件之一。通过重载<<private:int age;public:// 友元函数重载 << 运算符return os;return 0;C++ 标准输出流是程序与用户交互的重要接口。掌握std::cout的基本用法、格式控制、缓冲区管理和性能优化技巧,能够编写出更高效、更易读的输出代码。

2026-07-20 11:00:09 232

原创 Java super 关键字详解:用法、场景与常见误区

在 Java 面向对象编程中,super是一个特殊的关键字,用于在子类中引用其直接父类(超类)的成员。它主要解决了子类与父类成员命名冲突时的访问问题,是实现继承和多态特性的重要工具。super关键字是 Java 继承体系中的“桥梁”,它确保了子类在扩展父类功能时,仍能安全、清晰地访问父类的资源。掌握其三种用法(访问变量、调用方法、调用构造器)并理解其使用限制,是编写健壮、可维护的面向对象 Java 代码的基础。

2026-07-15 10:40:15 242

原创 Java 方法重写(Override)详解:从概念到实战

方法重写(Override)是面向对象编程中多态性的核心体现之一。它允许子类重新定义从父类继承而来的方法,以提供更适合自身特性的实现。核心定义:在继承关系中,子类定义一个与父类方法签名(方法名、参数列表)完全相同的方法,从而覆盖父类的原有实现。方法重写是实现运行时多态的关键机制,它让子类能够定制继承自父类的行为。掌握其规则(签名一致、访问权限、异常、返回类型协变)和与重载的区别,是深入理解 Java 面向对象编程的基础。在实际开发中,养成使用@Override注解的习惯,能有效避免潜在的错误。

2026-07-15 10:39:09 240

原创 Java 继承:从入门到精通

继承(Inheritance)是面向对象编程(OOP)的四大特性之一,它允许一个类(子类/派生类)基于另一个类(父类/基类)来构建。子类会自动获得父类的属性和方法,同时可以添加自己特有的属性和方法,或重写父类的方法以满足特定需求。在 Java 中,继承通过关键字extends来实现。继承是 Java 面向对象编程的基石,它通过建立类之间的“is-a”关系,极大地提升了代码的复用性和可扩展性。掌握继承、方法重写、super关键字以及构造器的调用顺序,是深入理解 Java OOP 的关键一步。

2026-07-15 10:37:48 231

原创 Java 表达式、语句与代码块详解

定义:由变量、常量、运算符和方法调用等组成,并能计算出一个值的代码片段。核心特征:表达式必须有返回值(值可以是基本数据类型或对象引用)。结束符:表达式不以分号(;)结尾。加上分号就变成了表达式语句。定义:构成程序执行步骤的完整指令。核心特征:语句执行一个动作(如赋值、控制流程、声明等)。结束符:绝大多数语句以分号(;)结尾。// 零条或多条语句statement1;statement2;// ...表达式求值,是计算的原子单位。语句执行动作,是程序执行的步骤。

2026-07-12 11:33:52 189

原创 Java运算符详解:从基础到高级应用

运算符是Java编程语言中用于执行特定操作的符号。Java提供了丰富的运算符类型,用于处理各种数据运算、逻辑判断和位操作。掌握运算符是编写高效Java代码的基础。Java运算符是编程的基础工具,熟练掌握各类运算符的特性和使用场景对于编写高效、可靠的代码至关重要。在实际开发中,应根据具体需求选择合适的运算符,并注意运算符的优先级、类型转换和边界情况,避免常见的陷阱和错误。

2026-07-12 11:25:39 242

原创 Java 数据类型详解:从基础到高级

Java 数据类型分为基本数据类型和引用数据类型两大类。基本数据类型包括 8 种,直接存储值;引用数据类型存储对象的引用,包括类、接口、数组和枚举。理解它们的区别、内存分配、自动装箱/拆箱以及类型转换规则,是编写正确、高效 Java 程序的基础。在实际开发中,应根据数据的特点和操作需求选择合适的数据类型。

2026-07-12 11:23:31 242

原创 C++ 块作用域详解:从基础到实战

在 C++ 中,块作用域(Block Scope)指的是由一对花括号{}所限定的代码区域。在这个区域内声明的变量、常量或对象,其生命周期和可见性都仅限于该块内部。块作用域是 C++ 最基本的作用域类型之一,理解它对于编写正确、高效且安全的代码至关重要。通过自动管理局部变量的生命周期,简化了内存管理。通过限制标识符的可见性,提高了代码的模块化和安全性。是 RAII(资源获取即初始化)等现代 C++ 惯用法的基石。有助于编写更清晰、更高效、更易于维护的代码。

2026-07-10 11:08:59 319

原创 C++ 常量详解:从基础到高级应用

在 C++ 中,常量(Constant)是指在程序运行期间其值不能被修改的标识符。使用常量可以提高代码的可读性、可维护性和安全性,避免意外修改重要数据。使用const。

2026-07-10 11:05:30 223

原创 前端应用的离线暂停更新策略:构建稳定可靠的渐进式部署方案

明确更新策略:根据应用类型(工具型、内容型、强交互型)制定不同的更新节奏。始终保障可用性:离线与更新期间,核心功能必须可用。用户知情与可控:给予用户选择权,避免强制中断。监控与度量:建立更新成功率、用户采纳率、错误率等关键指标。持续迭代:将更新策略本身作为产品功能进行持续优化。

2026-07-10 11:03:57 220

原创 Java数组复制和C++数组复制有什么区别?

特性Java数组复制C++数组复制赋值仅复制引用,共享数组原生数组禁止赋值;std::array/vector可完整拷贝内存管理自动堆分配,GC回收栈自动释放,堆需手动delete[]底层拷贝函数System.arraycopy(带校验)memcpy(无校验,危险)安全机制下标越界抛异常无检查,易内存越界崩溃对象数组统一浅拷贝memcpy浅拷贝;容器可自定义深拷贝多维数组浅拷贝外层引用连续静态数组整块深拷贝;指针数组浅拷贝长度处理API自动适配长度、扩容。

2026-07-07 09:49:56 190

原创 Java 数组复制 4 种常用方法(对比 + 代码)

逐个遍历赋值,适合需要中途修改元素的场景。

2026-07-07 09:49:02 252

原创 如何在循环中使用break和continue语句?

break:彻底结束整个while循环;continue:仅跳过当前这一次循环,循环继续;continue必须放在变量自增代码之后,防止死循环。

2026-07-04 10:56:29 173

原创 如何优化while循环的性能?

常量、长度、外部函数、属性全部提到循环外部缓存;删除循环内print、文件读写、网络请求等IO操作;尽早使用break减少迭代次数;简化内部计算,减少临时对象创建;小规模逻辑用for/推导式替代while;大规模数值计算用NumPy向量化规避循环;高频队列操作使用collections.deque。

2026-07-04 10:55:49 197

原创 【2026】Adobe After Effects 2026 安装激活完整指南

Adobe After Effects 2026(版本 26.x)专业影视后期、MG 动态图形、视觉特效合成软件,用于短视频、影视包装、三维动态设计,新版强化内置 3D、AI 工具与预览性能。影视后期、MG 动画设计师、短视频创作者、广告包装、产品三维动效设计师。一、解压安装包,或者用winRaR及其他解压软件解压。六、软件在开始菜单拖到桌面即可,然后打开。如果打开是英文,关闭重新打开即可显示中文。二、双击Setup开始安装。七、软件打开安装完毕。

2026-07-02 11:58:26 471

原创 如何使用反射机制来创建对象?

前提:反射入口Class对象,先拿到类字节码。

2026-06-28 10:39:03 242

原创 Java 反射(Reflection)完整讲解

正常开发:编译期就确定类、方法,直接new 对象()调用;反射:运行时才解析类,无需提前硬编码。

2026-06-28 10:38:25 222

原创 在Java中,文档注释有哪些常用的标签?

作用:标注代码作者作用:标注当前类/接口版本号作用:标注该功能从哪个JDK/项目版本开始提供作用:参考其他类、方法、网址,生成跳转链接@see User引用类引用本类方法作用:标记该类/方法已废弃,不推荐使用,搭配替代方案。

2026-06-26 11:24:10 167

原创 Java 三种注释完整详解

不能换行,换行就要再加。

2026-06-26 11:23:34 299

原创 详细介绍一下Java中缺省class的作用

天然实现包级封装,隐藏内部工具类,外部无法依赖;不限数量,可和 public class 放同一文件,减少文件碎片;无文件名强制绑定,使用灵活;控制跨包继承,防止类被外部随意扩展。

2026-06-26 11:15:19 166

原创 详细介绍一下Java中public class和缺省class的区别

只有顶层类区分public/缺省,方法内的内部类不受文件名规则限制;不能修饰顶层类,只能修饰成员变量、方法、内部类;缺省权限没有关键字,不要写成default(default仅用于接口方法、switch分支);一个文件一个public类,不要大量缺省类堆在同一个文件。

2026-06-26 11:14:26 221

原创 在 Python 中,continue 语句和 pass 语句有什么区别?

pass:占位符,啥事不干,流程照常走;continue:循环专属,跳过本次循环剩下代码,直接下一轮。

2026-06-22 11:14:34 234

原创 python continue语句

continue 不会触发 else 跳过,只有 break 才会让 else 不执行。注意:while 里使用 continue 前一定要更新变量,否则会死循环。,直接进入下一次循环,循环不会终止。只跳过本次剩余代码,不跳出整个循环。输出:1 3 4 5。

2026-06-22 11:13:51 185

原创 从函数返回指针时,如何避免出现野指针?

❌ 禁止返回普通局部栈变量地址(野指针最大来源)✅ 合法内存四选一:全局变量 / static静态局部 / malloc堆 / 外部传入指针✅ 失败场景返回NULL,使用前判空✅ 堆内存free后立刻置NULL,防止悬空野指针✅ 常量字符串可返回,但不可修改内部数据。

2026-06-20 10:30:21 177

原创 从函数返回指针时需要注意哪些细节?

❌ 禁止返回普通局部变量/局部数组地址✅ static 慎用:多调用覆盖、多线程不安全✅ malloc 返回必须 free,防止内存泄漏✅ 失败统一返回 NULL,使用前判空✅ 保证指针类型严格匹配✅ 常量字符串只读,不可修改✅ 释放内存后指针置空,杜绝悬空指针✅ 设计接口明确内存所有权(谁分配谁释放)

2026-06-20 10:29:20 202

原创 Java switch语句的执行流程是怎样的?

先算switch括号值;从上往下挨个匹配case;匹配到就执行分支代码;传统switch遇break才退出,无break会穿透;箭头switch自动阻断穿透;全都不匹配执行default;结束后执行switch外部代码。

2026-06-18 11:44:42 240

原创 Java switch 语句

支持两种形式:传统switch、Java14+ 增强switch(带箭头、yield返回值)。需求:1、2、3、4、5输出工作日,6、7输出周末。可以把匹配结果赋值给变量。

2026-06-18 11:43:50 227

原创 C++异常和错误码有什么区别?

错误码:快、简单、兼容 C,适合底层、高性能、高频场景;缺点是代码乱、错误易被忽略。异常:结构清晰、安全、信息丰富、适合复杂多层业务;缺点是抛异常时有性能开销。实际开发中常两者结合:底层用错误码,向上封装转为异常抛出。

2026-06-14 10:08:50 170

原创 C++ 异常 完整讲解

继承,重写what()实现自定义异常。// 自定义异常类private:string msg;public:// 重写 what 方法throw MyException("自定义业务异常:权限不足");return 0;noexcept:C++11 及以上,表示该函数不会抛出异常。错误处理与业务代码分离,可读性强异常可跨多层函数传递,不用每层判断返回值支持标准异常、自定义异常,分类清晰。

2026-06-14 10:07:40 188

原创 字符串转数字时,可能会遇到哪些问题?

C 风格函数最大坑:出错只返回 0,无法区分是真 0 还是转换失败;溢出无提示。C++11 stoi 系列最大坑:非法格式、溢出直接抛异常,不捕获就崩程序。中间含字母/符号:两类函数都会截断解析。空串、多正负号:属于典型非法格式。追求健壮性优先用stringstream + 状态位判断。

2026-06-12 10:21:03 237

原创 sprintf还有其他数字转字符串的方法

如果坚持只用 C 风格通用场景(整数+浮点、要格式化):优先snprintf(安全版)Windows 下整数多进制转换:用_itoa纯浮点简单转换:可用gcvt拓展(不属于 C 风格,仅作区分)之前讲的 C++to_string是C++ 专属方案,不属于 C 风格,不要和上面 C 函数混淆。

2026-06-12 10:19:32 234

原创 const/ volatile/ restrict的底层原理

/ ⚠️ 未定义行为(C++)4️⃣ 为什么 C++ 标准不内置 restrict?3️⃣ 常量折叠(Constant Folding)mov eax, [x];三、restrict 的底层原理(最容易误解)3️⃣ 违反 restrict 会发生什么?1️⃣ 它不是“常量”,而是“只读约束”4️⃣ 突破 const(危险但合法)

2026-06-10 10:09:16 224

原创 什么是类型限定符?

是加在类型前面的关键字,用来修饰“这个类型如何被访问或修改”,不改变对象的大小,只改变语义和使用规则。• C++ 中:const 可作为常量表达式(满足条件时)const int * p1;3️⃣ restrict(C99 / C++ 扩展)5️⃣ constexpr(C++11 起)• 但可能被外部因素修改(volatile)二、C / C++ 中常见的类型限定符。• C 中:const ≠ 编译期常量。四、限定符在指针中的位置(C/C++)

2026-06-10 10:07:21 218

原创 Python 还有容器类型互转、进制转换、字符编码转换

基础类型intfloatstrbool(入门必学)容器互转listtuplesetdict(数据处理主力)进制转换binocthex+ 带参数int(底层、算法、运维)编码转换encodedecode(爬虫、文件、网络)特殊转换frozensetevalrepr(特定场景)

2026-06-08 10:29:17 194

原创 详细介绍一下Python中的数据类型转换

转数字int()float()转字符串str()(万能)转布尔:空、0 → False,其他 Trueinput 输入必须转才能计算文字+数字必须用 str() 拼接。

2026-06-08 10:28:09 185

空空如也

空空如也

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

TA关注的人

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