自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Go语言实战案例-实现分页查询接口

我们以Userimport ("log""net/http"// User 用户模型Age intif err!= nil {log.Fatal("数据库连接失败:", err)// 自动迁移✅ 本案例实现了一个分页查询接口• 支持动态page和pageSize参数• 返回总数total,便于前端计算总页数• 返回当前页数据1.封装通用分页函数,避免每个接口都重复写分页逻辑。2.加入排序功能,如。3.加入搜索过滤,例如按用户名查询。这样,我们就能快速实现一个完整的。

2025-08-19 09:18:58 84

原创 Go语言实战案例-创建模型并自动迁移

在 GORM 中,模型(Model)就是一个 Go 结构体,它会与数据库中的表一一对应。比如我们定义一个Userimport ("log"// User 用户模型ID uint `gorm:"primaryKey"` // 主键Name string `gorm:"size:100"` // 用户名,最大长度100Email string `gorm:"unique"` // 邮箱,唯一Age int // 年龄Password string `gorm:"size:255"` // 密码。

2025-08-18 05:00:57 327

原创 Go语言实战案例-使用ORM框架 GORM 入门

•ORM的核心思想是:把数据库的表映射为 Go 结构体,把表中的记录映射为结构体实例。• 使用 ORM,可以直接操作对象,而不是写大量 SQL。• GORM 提供了自动迁移、链式查询、关联关系、事务等功能。我们以Userimport ("fmt"Age intif err!= nil {panic("连接数据库失败: " + err.Error())fmt.Println("数据库连接成功!")// 自动迁移: 如果表不存在则创建,存在则更新字段。

2025-08-17 15:10:31 355

原创 Go语言实战案例:执行基本的增删改查

• Go 使用+ MySQL 驱动可以很方便地执行 CRUD 操作。• 推荐使用参数化查询,避免 SQL 注入。• 在生产中,要结合事务、连接池和错误重试机制,确保数据安全性与稳定性。

2025-08-16 05:51:18 368

原创 Go语言实战案例:连接MySQL数据库

• Go 使用配合可以方便地连接 MySQL。• 连接数据库的关键步骤:安装驱动 → 配置 DSN → 打开连接 → Ping 测试。• 在生产环境中,要注意连接池、错误处理、以及防止 SQL 注入(使用Prepare或参数化查询)。

2025-08-16 05:49:48 251

原创 Go语言实战案例:接入支付宝/微信模拟支付回调接口

本篇示例展示了支付宝与微信异步回调接口的核心流程接收参数 → 验证签名 → 更新订单状态 → 返回响应。在真实生产环境中,需要结合官方文档与 SDK,实现完整的签名算法与安全策略。

2025-08-15 09:03:20 442

原创 Go语言实战案例:静态资源服务(CSS、JS、图片)

• Gin 提供Static()方法一行就能完成静态文件托管。• 静态文件路径映射和 URL 前缀可以灵活配置。• 结合 HTML 模板,可以很方便地构建完整的前端页面服务。

2025-08-15 09:01:53 670

原创 Go语言实战案例:简易图像验证码生成

使用结合 Gin,可以非常方便地生成和校验验证码。本篇示例已经可以直接应用到注册、登录等防刷场景中。

2025-08-14 09:54:04 740

原创 Go语言实战案例:用Gin实现图书管理接口

• 使用 Gin 可以非常轻松地构建 RESTful API• 路由映射到不同的处理函数• JSON 参数解析只需• 后续可以把books切片替换为数据库(MySQL、PostgreSQL、MongoDB等)

2025-08-14 09:38:47 370

原创 Go语言实战案例:使用Gin处理路由参数和查询参数

在实际项目中,你可以将参数解析和验证抽取成中间件,提升代码可维护性。

2025-08-13 21:36:03 504

原创 Go语言实战案例:使用Gin框架构建Hello API

Gin 是一个轻量级 Web 框架,基于net/http• 高性能路由• 参数绑定与验证• 中间件机制• JSON/XML/YAML 渲染• 错误处理机制适合用来快速搭建 RESTful API 服务。我们用 Gin 实现了一个简单的 Hello API。• 添加 POST 请求处理• 使用路由分组管理接口• 绑定 JSON 请求体• 集成 JWT 进行身份验证Gin 不仅适合快速原型开发,也能支撑生产级项目,是 Go Web 开发中非常值得学习的工具。

2025-08-12 08:10:21 605

原创 Go语言实战案例:使用模板渲染HTML页面

•Header:声明类型(JWT)和加密算法(如 HMAC SHA256)。•Payload:存放业务数据(如用户ID、角色、过期时间)。•Signature:对前两部分进行签名,保证数据不可篡改。import ("fmt""time"// 生成Token// 验证Token})JWT 在 Go 中实现并不复杂,但它带来的无状态身份验证机制,非常适合 RESTful API 和分布式架构场景。通过本示例,你可以快速搭建一个基于 JWT 的登录验证系统,并根据业务需求进行扩展,比如。

2025-08-12 08:07:49 558

原创 Go语言实战案例:构建简单留言板(使用文件存储)

每条留言包含用户名、留言内容和留言时间。本文示范了如何用 Go 语言快速搭建一个简易留言板,涵盖 HTTP 请求处理、表单解析、模板渲染和文件存储等基础知识,帮助初学者掌握实用的 Web 开发技能。

2025-08-11 08:55:49 403

原创 Go语言实战案例:使用模板渲染HTML页面

使用 Go 的• 简单:模板语法直观易学;• 安全:默认转义机制防止 XSS;• 高效:模板可预解析并复用,支持并发执行。

2025-08-11 08:54:20 452

原创 Go语言实战案例:用户注册与登录(无数据库)

在实际 Web 应用中,是最常见的功能之一。本案例不使用数据库,而是将用户信息存储在内存中,主要用于学习和演示。

2025-08-10 08:40:45 541

原创 Go语言实战案例:Cookie与Session基础

在 Web 开发中,HTTP 协议是的,每一次请求都是独立的。为了让服务器记住客户端的状态,我们需要使用和。

2025-08-10 08:33:11 347

原创 Go语言实战案例:文件上传服务

在 Web 开发中,是常见需求,例如头像上传、文档存储、图片分享等功能。Go 语言的标准库net/http已经内置了对类型的支持,能让我们轻松构建一个文件上传服务。本文将带你实现一个可运行的文件上传接口,并附带 HTML 表单和curl测试方法。

2025-08-09 13:11:16 458

原创 Go语言实战案例:表单提交数据解析

通过本案例,你掌握了 Go 原生的表单解析方法:✅ 支持多种表单类型(URL 编码、Multipart)✅ 可用快速获取字段值✅ 与 JSON 编解码结合,轻松返回结构化数据。

2025-08-09 13:10:41 397

原创 Go语言实战案例:简易JSON数据返回

本案例实现了一个 Go 最小可用的 JSON 接口:✅ 使用标准库,无需第三方框架✅ 面向新手,极易上手✅ 为构建 RESTful API 打下基础。

2025-08-08 20:37:32 372

原创 Go语言实战案例:用net/http构建一个RESTful API

REST(Representational State Transfer)是一种软件架构风格,常用于 Web API 的设计。方法语义说明GET获取资源读取某个资源的内容POST创建资源向服务器添加新资源PUT更新资源修改已有资源DELETE删除资源移除某个资源通过本案例,我们学习了如何用 Go 原生的net/http✅ 实现 RESTful 风格的接口✅ 处理不同的 HTTP 方法✅ 编解码 JSON 数据✅ 线程安全地管理数据结构。

2025-08-08 20:36:48 594

原创 Go语言实战案例:使用sync.Map构建线程安全map

sync.Map方法功能描述Load(key)获取键对应的值和是否存在设置键值获取已存在值,否则存入新值删除指定键值对遍历所有键值对,返回 false 可中断遍历sync.Map提供了一种简洁、高效的方式来处理并发情况下的共享数据。它避免了手动加锁的繁琐,让我们更专注于业务逻辑。✅ 并发安全✅ 使用简单✅ 性能优越(适合读多写少)下一个实战案例:我们将结合实现带过期控制的并发缓存服务,敬请关注!

2025-08-07 09:38:00 413

原创 Go语言实战案例:使用Pipeline实现数据处理流水线

Pipeline 本质上是多个任务的串联,每个任务在独立的协程中运行,并通过 channel 将数据传递给下一个阶段。• 易于解耦,每个阶段职责单一;• 利用并发,提高处理效率;• 易于扩展,插拔式维护。Pipeline 是 Go 中非常优雅的并发设计模型,具有以下优势:✅ 简洁直观,符合处理流程思维✅ 利用协程和通道,实现高并发数据流✅ 模块化结构,易于调试与扩展。

2025-08-07 09:29:19 703

原创 Go语言实战案例:任务调度器:定时执行任务

通过和 goroutine,Go 可以非常优雅地实现定时任务调度器。虽然标准库方案简单,但足以应对大多数日常应用。你可以在此基础上封装出强大的任务调度框架,用于后台服务、数据处理、定时推送等业务场景。

2025-08-06 11:23:24 697

原创 Go语言实战案例:使用WaitGroup等待多个协程完成

是 Go 标准库中的一个结构体,用于等待一组 goroutine 执行完成。在并发控制中,是一种简单却非常强大的工具,能帮助我们控制 goroutine 的生命周期,避免程序提前退出或资源泄漏等问题。掌握其使用方法,是每位 Go 开发者的必备技能。✅ 实战建议:在进行网络抓取、任务分发、并发计算等场景时,推荐优先考虑 WaitGroup 来管理协程。

2025-08-06 10:40:38 614

原创 Go语言实战案例:使用sync.Mutex实现资源加锁

Mutex是 mutual exclusion(互斥)的缩写,是 Go 标准库sync包提供的一种锁机制。它确保同一时间只有一个 goroutine 能进入临界区访问共享资源。// 内部实现省略通过本案例我们深入理解了 Go 中sync.Mutex的使用方式和适用场景。虽然它使用起来非常简单,但如果忽略其潜在的陷阱,可能会导致难以发现的 bug 和性能问题。掌握并合理使用Mutex是每一位 Go 开发者进行并发编程的第一步。

2025-08-05 22:23:20 607

原创 Go语言实战案例:使用context控制协程取消

context是 Go 1.7 起加入标准库的一个重要包,用于跨 API 边界传递取消信号、超时时间、截止时间等信息。•Done():返回一个 channel,当 context 被取消或超时关闭时,该 channel 会被关闭;•Err():返回取消的原因,例如或。context是 Go 并发控制中不可或缺的利器。它不仅解决了协程取消的痛点,还能为任务设置统一的生命周期控制逻辑,是构建高可靠网络服务、后台任务系统、爬虫等并发程序的基础设施。

2025-08-05 22:20:34 425

原创 Go语言实战案例:编写一个简易聊天室服务端

本篇为《Go语言100个实战案例 · 网络与并发篇》第9篇,介绍如何使用 Go 编写一个简易的聊天室服务端。聊天室的实现涉及到并发连接管理、消息广播和客户端管理等重要的并发编程概念。通过本案例,你将学会如何构建一个高效、灵活的聊天系统。

2025-08-04 08:33:50 418

原创 Go语言实战案例:实现一个并发端口扫描器

本篇为《Go语言100个实战案例 · 网络与并发篇》第8篇,介绍如何使用 Go 实现一个。通过 Goroutine 并发扫描多个端口,极大地提升端口扫描的效率。本文不仅讲解了如何使用 Go 的并发特性,还涉及了如何处理超时和错误,保证端口扫描的健壮性和效率。

2025-08-04 08:32:59 957

原创 Go语言实战案例:TCP服务器与客户端通信

在网络编程中,TCP 是最常见的传输协议之一。Go 提供了net包,可以方便地实现 TCP 服务器与客户端通信。本篇将以实战形式演示如何用 Go 创建一个 TCP 服务器,并让多个客户端与之通信。

2025-08-03 14:46:53 552

原创 Go语言实战案例:多协程并发下载网页内容

本文是《Go语言100个实战案例 · 网络与并发篇》第6篇,实战演示如何使用 Goroutine 和 Channel,实现多协程并发抓取网页内容,提升网络请求效率,为构建爬虫、内容聚合器、API 批量采集器打下基础。

2025-08-03 14:45:53 432

原创 Go语言实战案例:使用select监听多个channel

select通过本案例你学会了:✅ 如何使用select同时监听多个 Channel✅ 如何实现超时机制(time.After✅ 如何在主线程中等待异步任务完成✅ 如何构建可扩展的并发通信模型select是 Go 并发编程的核心工具之一,它让我们能够优雅地处理多路异步事件,是构建高性能系统的利器。

2025-08-02 08:15:37 266

原创 Go语言实战案例:使用channel实现生产者消费者模型

在并发编程中,生产者-消费者模型是最基础、最常见的通信模式之一。它广泛应用于日志系统、任务队列、消息传递、数据流管道等场景。Go 语言对并发编程的支持非常强大,其中最具代表性的就是 Channel —— 一种内置的通信机制,用于在多个 Goroutine 之间安全地传递数据。share memory by communicating.” —— Go 编程哲学在本篇文章中,我们通过 Go 的 Channel 构建了一个完整的生产者-消费者模型。你学会了:✅ 如何创建 Channel 并传递任务。

2025-08-02 08:12:27 501

原创 Go语言实战案例:使用 Goroutine 并发打印

在本篇文章中,我们将从最基础的 Goroutine 并发模型入手,逐步掌握 Go 语言中并发控制的核心思想。通过一个简单的“并发打印任务”案例,掌握 Goroutine 的使用、输出顺序的控制、主协程退出时机等关键知识。

2025-08-01 07:40:17 345

原创 Go语言实战案例:实现HTTP客户端请求并解析响应

在日常开发中,无论是调用 RESTful API、采集网页数据,还是进行微服务之间的通信,HTTP 客户端几乎无处不在。Go 的标准库net/http不仅强大,还非常易用。掌握其用法,是成为高效后端开发者的基础。User-Agent很多服务器会基于请求头判断来源,尤其是爬虫或API请求时需要设置合适的头部。本篇案例展示了如何使用 Go 语言内置的net/http构建强大而灵活的 HTTP 客户端。通过设置请求头、读取响应、处理错误并支持并发请求,我们可以轻松应对各种 Web API 调用和数据采集需求。

2025-08-01 07:38:43 585

原创 Go语言实战:创建一个简单的 HTTP 服务器

本文是《Go语言100个实战案例》系列之《网络与并发篇》的第一篇。我们将从零开始,用Go语言构建一个基础的 HTTP 服务器,掌握 Go 在服务端开发中的关键能力。

2025-07-31 07:27:04 791

原创 Go语言实战:图的邻接表表示法实现详解

在图(Graph)的表示方法中,邻接表(Adjacency List)是一种常用的结构。它适用于稀疏图,即边数远少于点数平方的图。邻接表使用链表或切片来保存每个顶点的相邻顶点,相较邻接矩阵节省大量空间。• 每个顶点对应一个链表(或切片),存储与该顶点相邻的边(即相邻的顶点)。• 可以用于有向图和无向图。

2025-07-31 07:25:45 275

原创 Go语言实战案例-广度优先遍历BFS

广度优先遍历(Breadth-First Search,简称 BFS)是一种层级展开的搜索策略。先访问当前层的所有节点,再访问下一层的节点。常借助队列(Queue)实现,保证先入先出,按层推进。g.adj[v] = append(g.adj[v], u) // 无向图项目内容说明算法类型广度优先搜索核心结构队列(Queue)最适用问题最短路径、层序遍历、感染传播问题数据结构支持树、图、二维数组(网格)空间复杂度O(n)

2025-07-30 07:49:58 443

原创 Go语言实战案例-深度优先遍历DFS

在图、树等数据结构中,**深度优先遍历(DFS)**是一种重要的遍历方式,其核心思想是“一条路走到底”,在每个分支尽可能深入,直到无法继续再回溯。•前序遍历(Pre-order):根 → 左 → 右•中序遍历(In-order):左 → 根 → 右•后序遍历(Post-order):左 → 右 → 根• 寻找路径• 连通分量计数• 拓扑排序• 拓展岛屿问题、迷宫路径等经典题g.adj[v] = append(g.adj[v], u) // 无向图点位内容说明算法本质。

2025-07-30 07:47:30 1114

原创 Go语言实战案例-判断二叉树是否对称

Val int内容说明核心判断条件左右子树是否镜像结构,对应节点值是否相等递归 vs 迭代递归写法更直观,迭代适合大树或避免栈溢出技巧点左-右子树配对判断,使用队列模拟递归过程实用价值面试高频,掌握树结构对称性判断通用技巧。

2025-07-29 08:08:40 828

原创 Go语言实战案例-计算字符串编辑距离

编辑距离,也称为,指的是将字符串 A 转换成字符串 B 所需的最少操作次数。• 插入一个字符(Insert)• 删除一个字符(Delete)• 替换一个字符(Replace)设dp[i][j]表示将字符串 A 的前i个字符转换成字符串 B 的前j个字符所需的最小操作数。点位内容算法思想动态规划实现结构dp[i][j]表示 A 的前 i 个字符转换为 B 的前 j 个字符的最小编辑距离时间复杂度O(m * n)空间优化支持优化为滚动数组,空间降为 O(n)实战价值。

2025-07-29 08:06:17 514

空空如也

空空如也

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

TA关注的人

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