- 博客(37)
- 收藏
- 关注
原创 Windows 批处理(Batch)编程:从入门到入土(二)变量拓展与延迟环境变量拓展:1.即时拓展
摘要:本文深入解析Windows批处理中的变量扩展机制,重点探讨即时扩展的局限性和延迟扩展的解决方案。即时扩展采用"先读取后执行"的两阶段模式,导致在FOR循环和IF语句块中无法动态读取变量最新值,引发计数器错误、字符串拼接失败等经典问题。文章通过代码示例揭示预处理机制的本质,指出在动态读取场景必须放弃%VAR%语法,为后续介绍延迟扩展机制奠定基础。掌握这些核心概念是编写可靠批处理脚本的关键。
2026-05-03 22:59:08
593
原创 MySQL(2) 客户端工具和建库
本文介绍了MySQL客户端工具的使用和数据库创建方法。主要内容包括:1) 区分客户端mysql和服务端mysqld的角色;2) 通过命令行登录数据库;3) 理解C/S架构模型和本地回环地址127.0.0.1的作用;4) SQL语言的三大分类(DDL、DML、DCL);5) 使用SHOW DATABASES查看数据库;6) 使用CREATE DATABASE创建数据库并配置字符集与排序规则;7) 解读MySQL官方语法格式。文章还强调了使用IF NOT EXISTS保证脚本幂等性的重要性,适合MySQL初学者
2026-05-03 20:40:22
734
原创 Windows 批处理 (Batch) 编程: 从入门到入土. (一) 基础概念与环境配置
本文系统介绍了Windows批处理(Batch)编程的基础知识。首先解释了.bat和.cmd文件的区别,推荐使用.cmd以获得更稳定的错误处理。详细讲解了批处理脚本的基本结构,包括@echo off、rem注释、pause和exit等关键命令。重点剖析了环境变量系统,包括set命令的使用、预定义变量(PATH,TEMP等)和动态变量(%DATE%,%RANDOM%等)的特性与应用。文章强调批处理脚本在自动化任务中的强大功能,同时指出其特殊字符处理和区域设置依赖等需要注意的问题,为批处理编程提供了扎实的基础知
2026-05-02 22:55:54
546
原创 电脑上安装的服务会自动消失? 推荐项目: localhostSCmanager. 更好管理你的服务!
这篇文章介绍了一个名为localhostSCmanager的本地服务管理工具,主要用于解决Windows环境下MySQL、Redis等服务自动消失的问题。该项目基于Vite+React+Hono+tRPC技术栈开发,提供便捷的服务管理功能,包括添加/删除服务、启动/停止服务、查看日志等操作。文章详细说明了安装步骤(需要Node.js环境)、功能使用方法、常见问题解决方案,并特别提醒需要管理员权限的服务操作注意事项。该工具适合开发者在本地环境中快速管理各类服务,但强调不应用于生产环境。项目已开源在GitHub
2026-05-02 14:03:23
422
原创 Rust 枚举(enum)深度解析:从定义到 Option 的安全之道
Rust枚举深度解析:从基础到Option安全设计 Rust的枚举(enum)是一种强大的代数数据类型,远超过传统语言中的简单枚举。其核心特点包括: 枚举变体可以携带不同类型的数据,形成"或"关系 内存占用仅等于最大变体大小加标签 与结构体形成互补:结构体表示"与"关系,枚举表示"或"关系 Option<T>枚举是Rust安全设计的典范,通过编译时检查强制处理所有可能情况,彻底消除了空指针异常的风险。它包含Some(T)和None两个变
2026-04-29 13:29:15
457
原创 Rust 方法语法:从定义到实践
本文深入讲解了Rust中的方法语法,重点包括: 方法定义在结构体、枚举或trait上下文中,第一个参数总是self 使用impl块实现方法,遵循Rust"数据与行为分离"的设计哲学 方法语法通过自动引用和解引用简化调用 关联函数作为构造函数使用,不以self为参数 一个结构体可以拥有多个impl块 文章通过Rectangle结构体的实例,详细展示了如何定义和调用方法,包括带参数的方法和关联函数的使用方式。
2026-04-26 23:57:26
716
原创 Rust 结构体详解:从定义到实例化的指南
本文详细介绍了Rust结构体的使用:1) 定义结构体使用struct关键字,支持字段初始化简写语法和结构体更新语法;2) 实例化结构体后可通过.访问和修改字段;3) 使用#[derive(Debug)]属性实现结构体打印;4) 通过impl块定义方法和关联函数,方法以self为第一参数,关联函数常用于构造函数;5) 还介绍了元组结构体和单元结构体的特殊用法。文章通过代码示例展示了结构体的所有权规则、字段访问、方法定义等核心概念。
2026-04-23 23:55:28
419
1
原创 别的语言靠 GC,Rust 靠“所有权“:没有垃圾回收怎么保证内存安全?(三)切片Slice
Rust通过"所有权"机制实现内存安全,无需垃圾回收。本文重点介绍了所有权体系中的切片(Slice)类型,它允许引用集合中的连续元素序列而不拥有所有权。字符串切片(&str)通过绑定生命周期确保引用有效性,编译器会阻止可能导致数据不同步的操作。相比返回独立索引的方案,切片机制能在编译阶段发现潜在错误。文章还展示了切片在数组等其他数据类型中的应用。Rust的所有权系统通过严格的借用规则,在编译时就能消除内存安全问题。
2026-04-23 08:29:01
503
1
原创 MySQL(1) 安装与配置
MySQL安装与配置指南摘要 本文详细介绍了MySQL数据库的安装与配置全过程。主要内容包括: 下载安装:通过官网下载MySQL Installer,推荐选择8.0版本,安装时可自定义选择Server、Workbench等组件。 配置服务:设置root密码、认证方式,并配置为Windows服务自动启动。 数据迁移:修改my.ini配置文件中的datadir路径,将默认存放在C盘的数据迁移到其他磁盘。 验证使用:通过命令行和Workbench验证安装,提供常用服务管理命令。 注意事项:包括环境变量配置、常见问
2026-04-22 13:38:55
476
原创 别的语言靠 GC,Rust 靠“所有权“:没有垃圾回收怎么保证内存安全?(二)借用与调用
Rust通过所有权系统而非垃圾回收机制确保内存安全。引用与借用允许代码使用值而不获取所有权,可变引用则限制同一时间只能有一个可变引用以避免数据竞争。Rust在编译时严格检查引用规则,防止悬垂指针等内存安全问题。这种设计既保证了内存安全,又避免了运行时性能损耗。
2026-04-21 14:10:27
599
1
原创 别的语言靠 GC,Rust 靠“所有权“:没有垃圾回收怎么保证内存安全?(一)什么是所有权
Rust通过所有权系统实现内存安全,无需垃圾回收机制。所有权规则包括:每个值有唯一所有者,离开作用域时值被自动回收。String类型展示了堆内存的管理方式,通过移动(转移所有权)或克隆(深拷贝)实现数据交互,而简单类型如整数直接在栈上拷贝。这种设计避免了二次释放等内存问题,同时保证编译时安全检查。
2026-04-21 01:43:30
396
1
原创 Linux Vim 文本编辑器基础指南
本文详细介绍了Linux下Vim文本编辑器的使用指南。主要内容包括:Vim的三种模式(命令模式、编辑模式、底行模式)及其切换方法;命令模式下光标移动、复制粘贴、剪切删除等操作;底行模式常用命令;Vim配置文件设置;以及常用命令速查表。文章强调Vim的高效编辑哲学,建议初学者从基础命令开始,逐步掌握hjkl移动、yy/dd/p等核心操作,并通过配置文件优化使用体验。文中配有模式切换流程图和命令速查表,方便用户快速查阅常用功能。
2026-03-25 09:26:40
495
原创 如何创建一个堆?
堆构建摘要 堆是一种完全二叉树结构,最小堆要求父节点值不大于子节点值。构建堆的核心步骤: 从最后一个非叶子节点(n//2-1)开始向前遍历 对每个节点执行下沉操作(heapify): 比较当前节点与左右子节点 若子节点更小则交换位置 递归检查交换后的位置 使用0-based数组时: 左子节点=2i+1 右子节点=2i+2 父节点=(i-1)//2 建堆时间复杂度为O(n),通过自底向上的方式确保堆性质。代码示例展示了从数组构建最小堆的过程,包含详细的交换日志。
2026-03-23 03:31:41
62
原创 LangChain 能力详解
LangChain 是一个强大的 NLP 开发框架,旨在解决原生 LLM 开发中的常见问题,如提示词不规范、模型切换困难、输出非结构化等。它通过标准化组件将 NLP 流程模块化,提供环境配置、快速上手、核心概念、聊天模型能力等功能。LangChain 支持多种模型定义方式(ChatOpenAI、工厂函数、本地部署),并具备工具调用功能,使 LLM 能与外部世界交互。核心特性包括 Runnable 接口和 LCEL 声明式编程,简化了开发流程。该框架还支持提示词模板、文本处理、向量存储等高级功能,适用于复杂的
2026-02-25 22:24:58
1020
原创 LangChain 生态包全解析:你真正需要安装什么?
本文解析了LangChain生态包体系的结构和功能,帮助开发者按需安装。核心包langchain是必装入口,自动包含底层抽象langchain-core。集成包如langchain-openai需单独安装,未独立的功能可在langchain-community中找到。复杂代理需要langgraph,调试监控用langsmith。文章提供了场景化安装建议和清晰的包功能对比表,强调"核心与集成分离,按需取用"的设计理念,帮助开发者精准配置环境。(149字)
2026-02-23 21:39:42
1151
原创 C语言: 动态内存管理
本文介绍了C语言中动态内存管理的关键概念和方法。主要内容包括:动态内存分配的必要性(解决固定大小数组的局限性)、malloc/free函数的使用(申请和释放内存)、calloc/realloc函数的特点(初始化和调整内存大小)。文章还分析了常见动态内存错误(如空指针解引用、内存泄漏等)和解决方案,并通过示例代码演示了正确使用动态内存的方式。最后简要提及柔性数组和程序内存区域划分。动态内存管理是C/C++编程中的重要技能,合理使用可提高程序灵活性和效率。
2026-02-18 19:46:29
972
原创 大语言模型完全指南
大语言模型是基于深度神经网络的语言系统,拥有数百亿至万亿级参数。通过自监督学习方式,在海量文本上训练,掌握语言的深层规律。**核心理念:**将人类语言翻译成计算机的"数学语言"文本:"机器学习很有趣"↓ 嵌入模型向量:[0.023, 0.487, -0.129, ..., 0.325]关键区别:大语言模型:生成式,理解输入并创造新文本嵌入模型:表示型,将输入转换为语义向量。
2026-02-15 20:43:20
1066
原创 C语言: C语言内存函数详解
本文详细介绍了C语言中常用的4个内存操作函数:memcpy用于非重叠内存复制,memmove可处理重叠内存复制,memset用于按字节设置内存内容,memcmp用于按字节比较内存内容。文章包含函数原型、功能说明、使用示例和模拟实现代码,特别强调了memcpy和memmove在处理内存重叠时的区别。这些函数都是按字节操作内存的基础工具,使用时需注意目标内存空间大小和内存重叠问题。
2026-02-14 10:32:38
405
原创 C语言: 字符函数和字符串函数
C语言字符串处理函数摘要 本文介绍了C语言中常用的字符和字符串处理函数,包括: 字符分类函数:如islower()、isdigit()等,用于判断字符类型 字符转换函数:tolower()和toupper()实现大小写转换 字符串操作函数: strlen()计算字符串长度 strcpy()复制字符串 strcat()连接字符串 strcmp()比较字符串 安全版本函数:strncpy()、strncat()等带长度限制的函数 其他实用函数:strstr()查找子串、strtok()分割字符串等 文中不仅介绍
2026-02-13 22:25:56
806
原创 HTTP/HTTPS数据包拓展
本文介绍了HTTP/HTTPS数据包的基础知识,包括协议栈结构、通信流程和核心区别。重点讲解了HTTP请求/响应数据包格式、常见状态码和头字段,以及HTTPS的加密握手过程。对比分析显示,HTTPS通过SSL/TLS加密层提供更高的安全性,适合处理敏感数据。文章还提供了协议选择建议和安全实践提示,强调生产环境必须使用HTTPS并配置HSTS策略。这些知识对理解Web通信机制和网络安全防护具有重要意义。
2026-01-31 20:29:34
1775
原创 Java抽象类
本文介绍了Java中抽象类的概念与特性。抽象类通过abstract修饰,包含抽象方法但无需具体实现,不能直接实例化。关键特性包括:必须被继承且子类需重写抽象方法;抽象方法不能为private、final或static;抽象类可包含非抽象方法。文章着重解释了通过匿名子类间接实例化抽象类的方法,即创建具体子类实现所有抽象方法,并赋值给抽象类引用。这种设计既保证了抽象类的约束作用,又提供了灵活的扩展方式,增强了代码的结构性和安全性。
2025-09-18 15:11:32
806
原创 JavaScript WebAPI 指南
JavaScript WebAPI 是操作网页和浏览器的核心工具集,主要包括DOM(操作页面结构)和BOM(操作浏览器窗口)。DOM将网页视为树形结构,提供querySelector、innerHTML等方法获取和修改元素内容。事件处理包含事件源、类型和处理程序三要素。通过style和className可修改元素样式,而createElement、appendChild等方法用于节点增删。表单元素可通过value、disabled等属性动态控制。MDN提供了完整的WebAPI文档参考,是开发动态网页的重要基
2025-09-11 19:34:36
1321
原创 JavaScript 基础语法指南
本文介绍了JavaScript的基础语法知识,包括JavaScript简介、运行过程、书写形式、注释、输入输出、变量使用、数据类型、运算符、条件语句、循环语句、数组、函数、作用域和对象等核心概念。JavaScript是一种动态类型的脚本语言,广泛应用于Web开发。文章详细讲解了JavaScript的变量声明、数据类型转换、各种运算符的使用方法,以及条件判断、循环控制等流程控制结构。此外,还介绍了数组的基本操作、函数的定义与调用方式、作用域规则以及对象的创建方法。这些基础知识是学习JavaScript编程的重
2025-09-10 10:03:21
1350
1
原创 Java继承和多态
继承(inheritance)机制: 是面对对象程序设计使代码可以复用的最重要的手段,可以使在包持原有类特性的基础上进行拓展,增加性功能,这样产生新的类,成派生类.继承呈现了面向对象的层次结构,体现了由简单到复杂的认知过程.继承主要解决: 共性的抽取,实现代码的复用。子类成员由两部分组成, 基类继承下来的以及子类新增加的部分. 在构造子类对象的时候, 需要先调用基类的构造方法, 然后执行子类的构造方法。2.在非静态成员发方法中, this用来访问本来的方法和属性, super访问父类继承下来的方法和属性。
2025-09-08 08:09:54
932
原创 Java类和对象(下)
本文介绍了Java中对象的构造及初始化方法,重点讲解了构造方法的特性和使用规则。文章首先指出局部变量必须初始化而对象成员变量会自动赋默认值,然后详细说明了构造方法的概念、特性(如必须与类同名、无返回值、自动调用、可重载等)以及注意事项。同时解释了默认初始化的JVM处理流程和就地初始化的实现方式。最后简要提及封装概念和访问限定符的分类与作用范围,为后续继承和多态内容做铺垫。文章通过代码示例直观展示了构造方法的实际应用和初始化过程。
2025-09-01 22:07:14
1195
原创 Java类和对象(上)
本文介绍了Java面向对象编程的基础概念,包括类和对象的定义与使用。主要内容包括:1.面向对象是一种通过对象交互解决问题的编程思想;2.类的定义格式和使用方法,使用class关键字定义,采用大驼峰命名法;3.类的实例化过程,通过new关键字创建对象;4.this引用的概念及其特性,用于区分成员变量和局部变量。文章通过具体代码示例展示了如何定义类、实例化对象以及使用this引用,帮助读者理解Java面向对象编程的基本原理和实现方式。
2025-08-27 11:41:59
946
原创 Java数组的定义与使用详解
本文详细介绍了数组的定义、声明、初始化及使用方法。数组作为引用数据类型,在内存中连续存储,访问速度快。文章讲解了数组元素的访问、修改、长度获取等基本操作,特别强调了数组赋值的注意事项。此外,还介绍了数组的常见操作如复制、排序、查找,以及多维数组的使用。针对Java数组的引用特性,详细解释了数组初始化和赋值的区别,并提供了正确的数组复制方法。全文内容全面,涵盖了数组编程中的关键知识点。
2025-08-20 07:00:00
2282
1
原创 HTML简介
HTML是一种超文本标记语言,用于描述网页结构和内容。它通过标签(如<html>、<body>、<p>等)定义网页元素,这些标签通常成对出现。HTML文档由标签和纯文本组成,浏览器解析这些标签来呈现网页内容,但不显示标签本身。例如,<h1>定义标题,<p>定义段落。HTML不是编程语言,而是一种标记语言,专门用于创建网页。
2025-08-19 17:27:11
508
原创 贪心算法最快入门及学习步骤规划
本文介绍了贪心算法的基本概念和应用场景。贪心算法通过局部最优选择逐步达到全局最优解,适用于找零、最小路径和、背包等问题。文章指出贪心策略需要针对性设计且必须验证正确性,通过举例说明了如何证明策略的正确性。最后建议初学者先积累经验再研究证明,并提供了四步学习法:理解题目、掌握原理、编写代码、验证证明。贪心算法虽简单但策略多样,需要灵活运用。
2025-08-18 08:00:00
2019
原创 Java方法详解
本文详细介绍了Java方法的基本概念和使用方法。主要内容包括:方法的基本格式与注意事项,如修饰符、返回值类型、命名规范等;方法调用的完整过程;递归调用的原理与阶乘计算示例;形参与实参的区别;方法重载的实现方式(通过参数个数、类型或顺序区分)。文中还提供了多个代码示例,包括递归打印数字序列和计算数组元素和等实际应用场景,帮助读者深入理解Java方法的各种特性和使用技巧。
2025-08-17 20:20:13
965
原创 欧几里得算法最大公约数(GCD)
本文介绍了欧几里得算法求最大公约数的原理与实现方法。该算法通过反复取余运算,直到余数为0时获得最大公约数。文章提供了Java和C++两种语言的实现代码,并强调算法无需预先比较数字大小,均能正确计算出结果。代码示例展示了欧几里得算法的简洁实现过程,适用于两个正整数的最大公约数求解。
2025-08-16 10:35:58
536
原创 Java--数据类型加运算符
本文介绍了Java编程中的数据类型与运算符相关内容。首先说明Java源代码编译过程(.java→.class→JVM执行),体现"一次编写,到处运行"特性。其次详细分类了数据类型,包括8种基本数据类型(byte、short、int、long、float、double、char、boolean)及其内存占用和范围,以及引用数据类型。重点讲解了类型转换机制,包括隐式类型提升和必须的显式类型转换,强调数据丢失风险。最后对比了位运算(&|^~<<>>)和逻辑运算(
2025-08-14 14:36:18
1127
原创 编程中的注释:多样化的表达与不可忽视的重要性
代码中注释的作用不可忽视,如果你是一名初学者,那这是你所必备的,如果是学成者也不放看看是否概念混乱
2025-08-09 16:04:32
1208
原创 [Python]格式化字符串字面值(f-字符串)
Python格式化字符串(f-strings)是3.6引入的特性,允许在字符串中嵌入表达式。f-strings以f/F为前缀,使用花括号{}标记替换字段,表达式在运行时求值并转换为字符串。3.7支持await/async for表达式,3.8新增调试运算符(=),3.12放宽了表达式限制。支持多行字符串、格式说明符和类型转换(!a/r/s)。相比传统%格式化方式,f-strings更简洁安全,能避免元组/字典格式化错误。%格式化采用类似C语言printf的语法,支持宽度、精度、对齐等控制,但易出错,推荐使用
2025-08-05 08:35:03
1131
原创 [Python]String Methods 字符串方法(下)
Python字符串方法总结(下): join()方法将可迭代对象中的字符串元素用指定分隔符连接,要求元素必须为字符串类型,否则报错; ljust()实现字符串左对齐,通过指定宽度和填充字符(默认为空格)扩展字符串; lower()将字符串中所有大写字母转换为小写,遵循Unicode标准的大小写转换规则。这些方法常用于字符串拼接、格式化输出和大小写转换等场景......
2025-08-04 08:42:25
3009
原创 [Python]String Methods 字符串方法(上)
Python字符串方法摘要 Python字符串不仅支持常见序列操作,还提供两种格式化方式:灵活自定义的str.format()和基于C printf风格的快速格式化。标准库的文本处理模块(如re)还提供更多文本处理功能。主要字符串方法包括: capitalize() - 首字母大写,其余小写(3.8版后改为标题格式) casefold() - 比lower()更彻底的字母小写转换,能处理特殊字符(如德语'ß'转"ss"),适用于无大小写匹配 这些方法均返回新字符串,不修改原字符串....
2025-08-03 20:56:14
7663
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅