- 博客(70)
- 收藏
- 关注
原创 为每个项目建立单独的AI规则
本文档详细制定了适用于项目初始化和已有项目的代码规范体系。在项目初始化场景下,提供了包括技术栈选择、目录结构、工具链配置等完整规范;针对已有项目则制定了代码增量生成规则和一致性检查机制。文档包含命名规范、代码风格、注释标准等通用规则,并提供了AI指令模板和代码示例。通过自动化检查和质量控制机制确保规范执行,同时建立了文档维护流程保持规范更新。该规范体系能有效统一团队代码风格,提高开发效率和质量。
2025-12-09 17:08:05
354
原创 MCP工具开发
摘要:本文探讨了如何利用大模型和MCP框架解决重复性工作自动化难题。传统自动化程序需要规范化输入,而MCP框架通过搭建智能体与操作能力的桥梁,使大模型能够理解并执行自然语言指令。文章详细介绍了开发MCPServer的流程,包括脚手架搭建、操作字典工具开发、IDE接入等步骤,并以字典添加为例展示了实际应用效果。该方案突破了传统自动化的局限,使智能体能够处理非结构化数据并执行复杂任务,为各类重复性工作提供了高效的自动化解决方案。
2025-12-09 16:33:06
578
原创 详细的Git 代码提交规范
Git提交规范指南:核心在于通过标准化的提交信息(类型+描述)形成清晰的项目历史。常用类型包括feat(新功能)、fix(bug修复)、docs(文档更新)等,提交信息包含标题、正文和页脚三部分。标题格式为"类型(范围):描述",使用祈使句;正文说明修改原因;页脚标注重大变更或关联Issue。建议保持原子性提交,使用工具辅助规范,并与工作流结合。实际应用中可简化格式,按团队需求调整规范。
2025-10-11 13:44:32
2130
原创 (数据库学习四)哈希处理
摘要:哈希处理是保护数据库用户密码的关键安全措施,通过单向加密将密码转换为不可逆的哈希值,即使数据库泄露也无法还原明文。单纯哈希还不够,必须结合"加盐"技术,为每个用户生成随机字符串与密码组合,防止彩虹表攻击。文章以Go语言为例,详细说明了如何将现有明文密码迁移到bcrypt哈希系统,包括数据库准备、核心迁移函数、登录验证流程和密码修改方案。实施密码哈希是开发者的基本责任,符合安全法规要求,能有效防止数据泄露引发的连锁反应。最佳实践包括使用bcrypt等强哈希算法、确保唯一加盐、及时清除
2025-10-10 11:11:53
1035
原创 (数据库学习三)API接口创建与数据库操作
本文介绍了使用Go语言构建RESTful API接口与数据库操作的具体实现方法。文章采用前后端分离架构,详细讲解了API创建流程:从定义请求/响应结构体、编写处理函数、注册路由到配置CORS。在数据库操作部分,重点说明了连接池管理、数据模型定义和CRUD实现,特别展示了事务处理在实际业务中的运用。作者通过个人博客项目作为案例,提供了完整的代码示例和项目地址,适合开发者参考学习后端API开发实践。
2025-10-09 17:38:23
586
原创 (数据库学习二)数据库的使用
摘要:本文介绍了一个个人博客网站后端与MySQL数据库的集成过程。主要内容包括:1)插入初始测试数据的两种方式;2)使用Go语言配置后端数据库连接,包括创建配置管理模块、数据库连接管理模块和主程序入口;3)实现用户模型和API处理函数;4)添加必要的依赖项。项目采用模块化设计,包含配置加载、连接池管理、优雅关闭等功能,并提供了CORS支持。文章最后给出了启动服务和测试连接的方法,项目代码已开源在GitHub持续更新。
2025-09-26 14:43:04
836
原创 (数据库学习一)从零开始创建数据库
本文记录了使用Navicat Premium创建个人博客数据库的过程。首先介绍了如何连接数据库服务器(MySQL/PostgreSQL等),包括主机、端口和认证设置。然后详细说明了数据库的创建步骤,建议使用utf8mb4字符集。重点讲解了四个核心表的设计:users(用户)、articles(文章)、categories(分类)和tags(标签),包括字段类型、主键设置和默认值。特别说明了外键关系的设置方法,推荐用户表到文章表使用RESTRICT约束防止误删。最后提供了SQL语句示例,并提示后续将介绍数据库
2025-09-26 13:47:04
1441
原创 Go语言模块开发
Go模块是Go 1.11引入的官方依赖管理系统,解决了GOPATH的限制。模块通过go.mod文件管理依赖,支持语义化版本控制,确保构建可重复性。创建模块需初始化go.mod文件,并通过go get管理依赖。编写模块需遵循规范,包括创建VCS仓库、编写代码、测试和文档。发布时需打tag版本,其他项目可通过go get引用。模块使Go项目依赖管理更灵活可靠,支持版本控制和多版本并存。
2025-08-26 16:10:48
921
原创 git报错解决:ssh: connect to host github.com port 22: Connection refused
摘要:Windows系统下使用Git连接GitHub报错"端口22被拒绝"的解决方法。主要思路是修改SSH配置,将端口从22改为443。具体步骤包括:1)编辑.ssh/config文件,添加GitHub的443端口配置;2)测试SSH连接;3)验证端口使用情况。若仍失败,需检查防火墙设置或直接指定443端口连接。注意首次连接需确认指纹真实性,并确保配置文件正确包含Host、Port等关键信息。成功连接后会显示认证成功提示,无法访问shell属正常现象。
2025-08-20 13:15:05
1062
原创 Go语言并发编程 ----- sync包
Go语言的sync包提供多种同步原语:WaitGroup用于等待一组goroutine完成;Once确保操作只执行一次;Cond用于goroutine间的信号通知;Pool用于临时对象复用以减少GC压力;Map是线程安全的字典实现,适用于读多写少场景。这些工具有效解决了并发编程中的同步问题,确保内存访问安全性和程序正确性。通过合理使用这些同步机制,可以编写高效、安全的并发Go程序。
2025-08-19 16:09:05
1031
原创 Go语言并发编程 ------ 锁机制详解
Go语言提供了Mutex和RWMutex两种同步原语处理并发问题。Mutex是基础互斥锁,保证同一时间只有一个goroutine访问共享资源,适用于读写操作频率相当或写多读少的场景。RWMutex是读写分离锁,允许多个读操作并行,但写操作独占,适用于读多写少的情况。文中通过并发计数器、线程安全缓存等示例展示了两种锁的用法,并对比了它们的性能特点和应用场景。开发者应根据具体业务需求选择适当的锁机制,Mutex简单但开销大,RWMutex在读多写少时性能更优。
2025-08-17 21:00:27
1013
原创 Go语言并发编程 ------ 临界区
本文介绍了并发编程中的临界区概念,即访问共享资源的代码段,需要同步机制确保互斥访问。文章详细说明了临界区的定义、特性及其与锁的关系,并提供了Go语言中的示例代码。还提出了临界区的设计规范,包括最小化原则、简短执行等。此外,对比了互斥锁、读写锁和通道三种保护机制,并分析了常见问题如数据竞争、死锁和活锁。最后通过银行账户转账案例展示了临界区的实际应用。文章强调合理设计临界区对并发程序的重要性,建议尽量减少临界区范围和避免耗时操作。
2025-08-17 14:00:18
734
原创 Go语言 队列
本文介绍了Go语言中队列的三种实现方式:1. 切片实现:使用泛型切片构建简单队列,支持Push、Pop、Peek和Size操作,类型安全但非并发安全。2. 链表实现:基于container/list包的高效队列,同样支持基本操作,适合频繁插入删除场景。3. 并发安全队列:通过sync.Mutex实现线程安全,适合多goroutine环境。文章重点对比了泛型与标准写法的区别,并详细解析了每种实现的核心代码逻辑,包括入队、出队和查看操作。通过具体示例展示了不同队列的使用方式及应用场景。
2025-08-07 15:39:07
1185
原创 Go语言 泛型
Go 1.18引入泛型特性,通过类型参数实现代码复用。主要特性包括:1)使用方括号声明类型参数;2)通过接口约束限制类型范围;3)支持可比较类型。泛型适用于通用数据结构(栈、队列)、算法复用(排序、搜索)等场景,能减少重复代码。示例展示了泛型函数Max和泛型结构体DynamicArray的实现,需要导入golang.org/x/exp/constraints实验包。泛型使Go在保持类型安全的同时提高了代码的通用性和可维护性。
2025-08-07 11:14:14
568
原创 Go 函数选项模式
Go语言的函数选项模式是一种优雅处理可选配置参数的设计模式。它通过定义Option函数类型和一系列With开头的配置函数,避免了冗长的构造函数参数列表。这种模式具有可扩展性强、参数可选、支持链式调用和集中处理默认值等优势,特别适用于配置参数较多或可能变化的场景。相比配置结构体或多参数构造函数等替代方案,函数选项模式提高了代码可读性和维护性,被广泛应用于gRPC等知名开源项目。
2025-08-04 15:21:19
395
原创 Go语言中的闭包详解
Go语言闭包解析:闭包是由函数及其引用环境组成的实体,能够访问并修改外部作用域变量,即使外部函数已执行完毕。关键特性包括:1)捕获外部变量;2)保持状态(变量生命周期延长);3)隔离性(每次调用创建独立实例)。典型应用场景包括状态封装、中间件实现和资源管理。需注意循环变量捕获的陷阱,可通过参数传递或立即执行解决。示例展示了闭包实现指数增长、函数工厂和并发隔离等功能,体现了闭包在状态保持和逻辑封装方面的优势。
2025-08-02 14:53:52
1036
1
原创 Go 语言make函数
摘要:Go语言中make函数用于初始化切片、映射和通道三种引用类型。关键用法包括:1)创建切片时指定长度和容量;2)初始化映射以避免nil引用错误;3)建立带缓冲或无缓冲通道。make会分配内存并初始化零值,不同于new只返回指针。典型场景包含预分配大容量数据结构、安全操作映射及创建通道。与字面量初始化相比,make更适合空容器或需要指定容量的情况。实际开发中应优先使用make,除非需要nil语义。文中还提供了并发安全映射操作、元素删除等完整示例代码。
2025-07-30 15:32:09
571
原创 深度解读Go 变量指针
Go语言指针解析:指针是存储变量内存地址的特殊变量,通过&取地址、*解引用操作间接访问数据。指针零值为nil,常用于修改变量、避免大对象拷贝和动态内存分配。需注意空指针解引用会panic,且Go不支持指针算术。与strings.Builder相比,指针修改字符串需类型转换,性能较低;而Builder适合频繁拼接,性能更优。指针适用直接修改变量场景,Builder更适合字符串拼接操作。
2025-07-27 11:03:35
490
原创 详细解读Go中的 fmt包
Go语言的fmt包提供了强大的格式化I/O功能,支持多种格式化输出和输入方法。主要功能包括:1)输出函数(Print系列)用于标准输出;2)字符串格式化(Sprint系列);3)指定目标输出(Fprint系列);4)输入扫描(Scan系列)。包内提供丰富的格式化动词(Verbs)如%v、%d、%f等,可精确控制数据类型和输出格式,支持宽度、精度调整及自定义格式。同时支持错误处理,所有函数返回写入字节数和可能出现的错误。fmt包是Go语言中处理格式化I/O的核心工具,适用于控制台、文件等各种场景的输入输出需求
2025-07-19 14:22:48
1120
原创 解读 Go 中的 constraints包(泛型)
Go 1.18引入的constraints包(golang.org/x/exp/constraints)为泛型编程提供了一组标准类型约束。该包定义了Signed(有符号整数)、Unsigned(无符号整数)、Integer(所有整数)、Float(浮点数)、Complex(复数)等基本类型约束,以及Ordered(可排序类型)等组合约束。这些约束接口用于限制泛型类型参数必须满足的条件,确保类型安全的同时提高代码复用性。开发者可以避免重复定义基本约束,或通过自定义约束组合满足特定需求。虽然该包目前处于实验阶段
2025-07-10 11:53:14
537
原创 Vite 双引擎架构 —— Esbuild 插件开发篇
Esbuild 与 Vite 是前端工具链中深度协作的互补关系:Esbuild 是 Vite 实现高性能的核心引擎,而 Vite 是基于 Esbuild 等工具构建的完整开发解决方案。esbuild 的核心价值在于「极速」与「轻量」,所以本篇带来Esbuild插件开发 。
2025-06-07 10:28:41
1184
原创 Vite 双引擎架构 —— Esbuild 概念篇
Vite采用Esbuild和Rollup双引擎架构,实现高性能构建。Esbuild基于Go语言并行处理,性能远超Webpack/Rollup,支持JS/TS/JSX/CSS等语言开箱即用。文章详细介绍了Esbuild的优势:极速构建、模块化支持、多场景适配;同时讲解了其安装与两种调用方式(命令行和代码API),包括Build API的项目打包功能和Transform API的单文件转译。虽然Esbuild生态插件较弱且缺乏高级功能,但其出色的性能表现使其成为Vite的核心引擎之一。掌握Esbuild是深入理
2025-06-06 11:52:39
1642
原创 什么是预构建,Vite中如何使用预构建
Vite通过预构建优化开发体验,其核心在于区分处理源代码和第三方依赖:开发模式下源代码采用no-bundle按需编译,而第三方依赖则通过Esbuild预打包。这种设计解决了多文件模块的请求瀑布问题、兼容非ESM格式,并利用Esbuild的Go语言优势实现秒级编译。预构建自动触发但可手动配置,支持缓存复用和增量更新。常见场景包括强制重建、Monorepo优化和CJS依赖处理。该机制显著提升开发效率,但需注意依赖变更时的缓存管理。
2025-06-04 16:15:44
1368
原创 在 Vite 中如何处理静态资源
在 Vite 中处理静态资源(如图片、字体、CSS/JS 文件等)主要通过自动路径解析、内联优化、显式后缀控制等机制实现,同时支持生产环境下的哈希命名和压缩优化。本文将详细介绍在 Vite 中如何处理静态资源。
2025-06-03 16:59:50
1789
原创 TypeScript 泛型讲解
泛型是 TypeScript 的核心特性,通过动态类型参数实现代码复用与类型安全。掌握其基础语法(函数、接口、类)、高级技巧(约束、条件类型)及适用场景,可显著提升代码质量。避免误用的关键在于明确泛型的约束目标,而非仅为语法而用。
2025-05-21 11:25:18
1225
原创 TypeScript 中 implements 和 extend 的用法与区别
在TypeScript中,extends和implements是两个关键的概念,分别用于继承和实现。extends用于类继承另一个类或接口继承另一个接口,允许子类复用父类的属性和方法,支持单继承。implements用于类实现接口,强制类实现接口中定义的所有属性和方法,支持多继承契约。
2025-05-20 11:42:49
1194
原创 解读 TypeScript 枚举Enum
TypeScript 枚举通过命名常量、类型安全和结构化组织,显著提升代码质量。使用时需根据场景选择合适的类型(数字、字符串或常量枚举),并权衡性能与动态访问需求。掌握其特性和使用的场景,能在复杂项目中有效提升代码的可维护性和健壮性
2025-05-17 16:50:50
780
原创 TypeScript 类型映射讲解
类型映射是 TypeScript 中强大的元编程工具,能够显著提升代码复用性和类型安全性。通过灵活运用键名重映射、修饰符操作和条件类型,开发者可以解决复杂类型转换需求,减少冗余代码。
2025-05-15 15:26:20
579
原创 Vue API 、element-plus自动导入插件
在TypeScript项目中使用Element Plus UI组件库时,手动导入组件和图标较为繁琐。通过配置自动导入插件(如unplugin-vue-components和unplugin-element-plus),可以简化这一过程。
2025-05-13 15:15:03
1072
原创 tsconfig.json的配置项介绍
tsconfig.json是 TypeScript 编译器的配置文件,用于指定编译 TypeScript 代码时的编译选项和编译目标等信息。通过修改该文件,可以定制 TypeScript 编译器的行为,例如指定编译目标、启用或禁用特定的语言特性、设置代码检查规则等
2025-04-28 15:25:59
1316
原创 解读TypeScript 类型工具
TypeScript 类型工具是用于操作和转换类型的编程手段,主要通过类型系统实现更安全的类型操作。接下来我将介绍代码 中常设计的主要类型工具以及作用。
2025-04-27 17:14:30
1259
原创 多角度分析Vue3 nextTick() 函数
nextTick()是 Vue 3 中的一个核心函数,它的作用是延迟执行某些操作,直到下一次 DOM 更新循环结束之后再执行。这个函数常用于在 Vue 更新 DOM 后立即获取更新后的 DOM 状态,或者在组件渲染完成后执行某些操作。
2025-04-16 17:22:56
2201
原创 TypeScript所有导出和导入语法详解
TypeScript支持使用CommonJS和ES6模块系统的导入和导出,是CommonJS用于导出模块的方式。
2025-04-15 14:49:08
1965
原创 详细解读TypeScript中 declare 关键字
在 TypeScript 中,declare 关键字用于告诉编译器有关类型或变量的信息,而不是实际提供实现。 它允许我们在 TypeScript 中使用一些没有具体实现的东西,比如全局变量、函数、类等。 Declare 关键字通常与声明文件(.d.ts)一起使用,声明文件用于描述已存在的 JavaScript 代码的类型信息。
2025-04-14 16:45:50
1471
原创 详细解读TypeScript 装饰器语法
随着TypeScript和ES6里引入了类,在一些场景下我们需要额外的特性来支持标注或修改类及其成员。 装饰器(Decorators)为我们在类的声明及成员上通过元编程语法添加标注提供了一种方式。
2025-04-12 17:03:15
1423
1
原创 详细讲解TypeScript 中 模块 以及与命名空间差异
TypeScript 模块通过显式的 import/export 机制实现了代码的封装与复用,是现代项目组织的核心工具。
2025-04-11 14:59:50
1032
原创 深度剖析TypeScript 中 readonly 和 as const 的差异
在 TypeScript 中,readonly 和 as const 都用于实现不可变性,但作用对象、语义和实现机制存在显著差异。本文介绍了是两者的核心区别及使用场景分析。
2025-04-10 10:58:50
1144
原创 解读typescript中class类
类(class)是面向对象编程的基本构件,封装了属性和方法,本文介绍了TypeScript 中类的属性、方法。
2025-04-08 16:21:09
1180
空空如也
前端开发工程师应该如何选择一门后端语言
2025-06-04
MySQL报错怎么解决
2024-12-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅