自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 尝试写一个脚手架

FastGo是一个基于Gin框架的后端脚手架工具,旨在提高开发效率。它集成了常用功能模块,包括配置文件读取、数据库连接(MySQL/PostgreSQL/SQLite)、Redis缓存、日志系统、JWT认证、图片验证码、文件上传等核心功能。项目采用模块化设计,包含配置管理、中间件、路由、工具类等组件,并提供了命令行工具支持数据库迁移和用户管理。通过封装常用功能如参数验证、响应格式、限流等,FastGo可以快速搭建标准化的后端服务,减少重复开发工作。主要技术栈包括Gin、GORM、Redis、JWT等,适合中

2025-12-08 23:18:44 932

原创 学习笔记:后端鉴权方法

本文系统介绍了后端鉴权的四种主要方式:HTTP Basic、Session-Cookie、Token和JWT。分析了从HTTP无状态到Session、再到Token和JWT的技术演进原因,重点对比了各方案在安全性、状态存储、水平扩容、跨域支持等方面的优劣。针对JWT,详细阐述了其工作流程、安全机制(双令牌、密钥轮换、黑名单等)及实现方案,并提供了完整的Go语言示例代码。文章指出,应根据具体场景选择合适方案:内部工具用Basic+HTTPS,传统网站用Session,前后端分离用Token,微服务架构用JWT

2025-09-21 19:51:28 1743

原创 学习笔记:Gin_05(文件上传和下载)

本文比较了原生net/http和Gin框架在文件上传下载功能实现上的差异。在单文件上传方面,原生方式需要手动解析表单、创建文件流并拷贝数据,而Gin通过FormFile和SaveUploadedFile方法简化了流程。多文件上传时,原生需遍历FileHeader数组处理每个文件,Gin则直接提供MultipartForm获取文件集合。文件下载时,Gin的FileAttachment方法自动设置响应头,比原生手动设置Content-Disposition更便捷。两种方式都实现了基本功能,但Gin框架通过封装常

2025-09-20 20:36:59 177

原创 学习算法第五天(二叉树)

本文总结了二叉树常见问题的解法,涵盖对称性判断、合并、镜像转换、BST验证、完全二叉树判断和平衡性检查等场景。所有解法均提供递归和迭代两种实现方式,并分析时间/空间复杂度。 关键解法包括:利用镜像遍历判断对称性(递归/队列);同步遍历合并两棵树(DFS/BFS);交换左右子树实现镜像;上下界检查或中序遍历验证BST;层序遍历检测完全二叉树;后序遍历计算高度差判断平衡性。 这些解法展示了二叉树问题的核心思路:通过递归或迭代遍历,在适当位置进行节点比较、子树操作或状态维护,同时注意空指针处理。不同遍历顺序(前序

2025-09-13 23:45:00 234

原创 学习笔记:Gin_04(渲染)

Gin框架提供了多种响应方式(JSON/XML/HTML/文件等),并非炫技而是为满足不同场景需求。HTTP协议支持多种数据载体,前端消费方式各异(AJAX需JSON,传统网页需HTML),且客户端类型多样(浏览器/移动端/IoT设备)。不同响应方式在性能上也有差异(如零拷贝文件传输)。Gin通过封装常用方法(如c.JSON())简化开发,同时支持统一封装响应结构,便于项目维护。最佳实践推荐使用结构体统一JSON响应格式,并区分业务状态码和HTTP状态码。此外,Gin还保留了HTML模板渲染等传统Web开发

2025-09-13 20:10:45 1415

原创 学习笔记:Gin_03(数据解析和绑定)

本文介绍了Gin框架中参数绑定的最佳实践。核心推荐使用结构体统一接收参数,并通过ShouldBind和Bind方法进行绑定校验。ShouldBind更灵活,需手动处理错误;Bind会自动返回400错误。文章详细对比了不同绑定方法的使用场景,并展示了JSON、表单和URI三种常见数据格式的绑定示例。特别强调了请求体只能读取一次的特点,建议合理使用ShouldBindBodyWith方法复用流数据。同时指出Query和Form数据可重复绑定,无需特殊处理。最后提供了多种数据格式混合绑定的解决方案。

2025-09-12 22:44:21 627

原创 学习算法第四天(二叉树)

本文系统介绍了二叉树的基本概念、存储结构、遍历算法及常见操作。主要内容包括:1.二叉树的分类(满二叉树、完全二叉树等)和两种存储方式;2.深度优先遍历(前序、中序、后序)的递归与迭代实现,广度优先的层序遍历;3.二叉树常见操作如节点插入删除、高度计算等;4.5个经典算法题解:前/中/后序遍历、层序/之字形遍历、最大深度、路径求和、BST转双向链表,均提供详细解题思路和Go代码实现。文章最后还推荐了二叉树相关的进阶知识点和学习资源。

2025-09-12 19:15:00 410

原创 学习笔记:Gin_02(路由)

Gin框架基于HttpRouter实现高效路由,采用Radix树结构存储路径,支持RESTful风格API设计。路由注册时构建树形结构,支持参数解析和分组管理。提供多种参数获取方式:URL参数、表单数据和文件上传。路由组功能可减少路径重复。整体设计遵循HTTP规范,兼顾性能与开发效率,适合构建现代化Web服务。

2025-09-12 00:43:07 697

原创 学习算法第三天(二分查找/排序)

本文摘要:本文系统讲解了二分查找算法及其应用场景。首先介绍二分查找的基本概念和O(logn)时间复杂度特性,适用于有序数组的快速查找。随后通过多个题目案例详细解析解题思路和实现代码:1) 标准二分查找实现;2) 二维数组中的查找;3) 寻找峰值元素;4) 计算逆序对;5) 旋转数组找最小值;6) 版本号比较。每个题目都给出清晰的算法思路图示和代码实现,并强调边界条件处理。最后总结了常见错误调试技巧和学习建议,包括从模板题到变种题的渐进学习路径,以及二分查找在实际业务场景中的应用价值。

2025-09-11 23:45:00 782

原创 学习算法第二天(链表)

本文总结了链表相关的算法题及实际应用场景,主要包括: 合并K个升序链表:采用分治策略,先二分拆解再两两合并,应用于日志归并、分段合并等场景。 环检测与入口查找:使用快慢指针判断环,哈希表定位入口,适用于内存泄漏检测、链路追踪等。 倒数节点操作:通过快慢指针高效定位节点,用于日志tail、分页查询等场景。 链表相加:先反转链表逐位相加,再处理进位,适用于大数计算、财务系统等。 这些算法在实际工程中会进行优化改进,如节点存储优化、并行计算等,并应用于日志系统、微服务链路、版本控制等场景。掌握这些基础算法能有效解

2025-09-11 00:00:23 2008

原创 学习笔记:Gin_01

Gin框架是Go语言的高性能Web微框架,以简洁API和优雅封装著称。相比Django、Flask等框架,Gin依赖更少,基于Go标准库net/http进一步封装,兼具高效开发与性能优势。它坚持"少即是多"理念,仅提供核心功能,支持灵活扩展。安装简单,通过go get命令即可引入,默认集成Logger和Recovery中间件。Gin已成为Go语言Web开发的主流选择,特别适合构建高效API服务,其轻量级特性和清晰源码深受开发者青睐。

2025-09-10 23:45:00 164

原创 学习笔记:学习算法第一天(链表)

链表作为线性数据结构,由节点通过指针连接构成,主要分为单链表、双链表和循环链表三种类型。其核心优势在于O(1)时间复杂度的插入/删除操作(已知前驱节点)和动态内存管理能力。常见面试题包括:反转链表(迭代/递归)、检测环(快慢指针)、合并有序链表等,在LRU缓存、内存管理等场景有重要应用。以Golang实现为例,区间反转(1→2→3→4→5 m=2,n=4→1→4→3→2→5)和K组翻转(k=2时1→2→3→4→5→2→1→4→3→5)需注意边界处理和指针操作。建议通过手写模拟、复杂度分析和LeetCode题

2025-09-10 00:00:00 667

空空如也

空空如也

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

TA关注的人

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