Golang中SSE协议实现方法
目录Gin流式返回实现方法🧑💻 User🤖 Assistant1. 使用 Server-Sent Events (SSE)2. 手动控制响应流3. 结合上下文取消机制4. JSON 流式返回5. 文件流式下载6. 前端示例关键要点🧑💻 User🤖 Assistant响应格式解析Gin 框架实现代码示例更完整的实现(包含错误处理)前端接收示例关键技术点🧑💻 User🤖 Assist ...
Go的ORM框架的使用
目录特性安装快速入门模型的定义约定示例自定义约定示例gorm.Model字段级权限控制连接数据库CRUD特性
全功能 ORM关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)Create,Save,Update,Delete,Find 中钩子方法支持 Preload、Joins 的预加载事务,嵌套事务,Save Point,Rollback To Saved PointConte ...
rust、go、java、python、nodejs各语言内存对比详解
目录前言一、测试场景:为什么选择二叉树基准?测试环境要求二、测试结果:5种语言内存占用大比拼三、核心代码解析:相同逻辑,不同实现1. Rust:无GC的极致内存控制2. Go:并发GC的平衡之道3. Python:灵活背后的内存开销4. Node.js:V8引擎的GC代价5. Java:JVM的"预分配"哲学四、深度解析:各语言的内存管理哲学1. Rust ...
go语言常用的map是怎么实现的(原理)详解
目录前言一、哈希冲突二、map的结构三、map的访问原理四、map的赋值原理五、map的删除六、map的扩容七、map的遍历前言
作为从java转来的go学长,我们当初常用的hashmap八股背的再熟悉不过了,那go的map是怎么实现的呢?
为此我前往不可视境界线,探索了B站世界,结合了几篇大佬们的博客文章以及源码,最后肝出本文,希望大 ...
Go语言类型转换的实现
目录引言类型转换规则类型转换方式显式类型转换隐式类型转换类型转换应用场景类型转换示例总结引言
Go 语言,也称为 Golang,是一种静态类型、编译型、并发型编程语言。在 Go 语言中,类型转换是程序员需要经常处理的一个问题。类型转换允许我们在不同的数据类型之间进行操作,从而提高了编程的灵活性。本文将详细介绍 Go ...
Go语言反射使用及优缺点总结
目录一:什么是反射二:Go 语言反射reflect.TypeOf()reflect.ValueOf()三:反射使用值对象获取 struct 反射值类型对象struct 反射类型指针反射类型反射获取 struct 方法通过反射调用方法通过反射设置值四:反射的优缺点五:共勉一:什么是反射
反射可以认为是程序在运行时的一种能力,反射可以在程序运行时访问、检测和修改 ...
Go JSON中序列化大整数精度丢失的问题分析
目录场景示例JSON 序列化JSON 反序列化到 map[string]interface{}再转回 int64对比差值问题分析解决方案方案 1:使用字符串存储大整数方案 2:使用json.Number解析方案 3:使用 struct 明确类型结论在 Go 项目中,我们经常使用 map[string]interface{} 来表示动态字段,或者用 JSON 序列化对象存入数据库、发送到 MQ。然而 ...
Golang协程中channel和sync的角色扮演分析
目录Channel代码示例Sync代码示例实际应用问题代码问题分析解决方案Mutex(互斥锁)解决案例Channel 解决案例结论Channel 的角色Sync 的角色Channel
channel 是Go语言中用于协程(goroutine)之间通信的一种机制。通过channel,你可以在不同的goroutine之间安全地传递数据。
代码示例
package main
import (
"fmt"
" ...
Go语言中的函数、闭包、defer、错误处理的学习教程
目录1、函数的定义1、 函数作为“一等公民”2、函数的定义与调用3、 参数传递:值传递 (Pass-by-Value)2、函数的可变参数1、返回值详解2、可变参数 (Variadic Parameters)3、函数一等公民特性1、函数作为变量2、函数作为参数(回调函数)3、 函数作为返回值4、 匿名函数 (Anonymous Functions)4.1定义和使用方式4 ...
gorm结构体零值不更新问题及解决方案
目录问题描述解决办法总结问题描述
在使用gorm的时候如果用结构体进行update或者updates会出现零值、空值不更新的问题,常见的办法有两种:
1.使用Save(),但是Save会保存所有字段,也就是说,必须将所有字段信息全部获取才能更新,否则没有传值的字段会更新成空。
2.使用map接口,即map[string]interface{},但是当我们使 ...
Golang将接口文档字段转结构体的实践指南
目录问题提出实现思路和代码测试小结本文给出一个从接口文档字段说明文字转换成golang结构体的方法。
问题提出
近期使用golang完成一个数据传输的工程的编写,难度不大,但接口较多,每个接口传输的字段都不少,最多的接口字段,有超过150个。这些字段在查询数据库和发送数据都用到——只是部分字段名称不同,为 ...
go语言中的结构体嵌入详解(最新推荐)
目录一、什么是结构体嵌入?二、最直观的效果:字段“提升”(Promoted Fields)1️⃣ 直接访问被嵌入结构体的字段三、方法也会被“提升”(非常关键)1️⃣ 嵌入结构体的方法四、结构体嵌入 ≠ 继承,但很像五、嵌入多个结构体(类似多继承)六、字段 / 方法冲突规则(必考点)1️⃣ 同名字段冲突2 ...
Golang对于用户密码的加密解决方案
目录MD5实现性能测试PBKDF2实现性能测试Argon2实现性能测试scrypt实现性能测试bcrypt实现性能测试测试总结完整代码对于用户密码的存储一直以来都是用户系统的重中之重,对安全性有较高要求的系统会采取双端加密,即前端使用非对称加密+Base64编码,后端用私钥解密后再采用不可逆的哈希算法进行加密。
笔者以前一直都是在用m ...
golang实现ftp功能简单又实用(示例代码)
配置文件部分:
FtpServer:
ListenAddr: ":2121"
ListenDir: "/data/ftpwww" # ftp目录
PassivePortRange: # end必须大于start,否则会panic, 非被动模式不用配置
Start: 3121
End: 3124
ListenUsers: # ftp账号
- Username: ftpadmin
Password: "123456..."
- Username: ftpadmin
Pa ...
Golang信号处理实战
目录1. 为什么需要信号处理2. 核心 API3. 基本使用示例:监听SIGINT(Ctrl+C)和SIGTERM(kill)4. 使用NotifyContext优雅退出5. 高级用法5.1 忽略信号5.2 动态取消订阅5.3 同时监听多个信号6. 原理机制7. 最佳实践8. 实战案例:优雅关闭 HTTP 服务器1. 为什么需要信号处理
在类 Unix 系统中,信号(Signal)是一种异步通知 ...
Golang中NetPoll机制的实现
目录Linux 网络IOLinux 非阻塞IO Select、Poll、EpollGolang 中Epoll 应用一个简单的网络IONetPoll的调度Linux 网络IO
Linux 的阻塞网络 I/O (输入/输出) 是指在进行网络操作(如 read() 或 write())时,如果操作无法立即完成,调用线程将被操作系统“阻塞”,直到操作成功或失败才返回。它属于同步 I/O 模型的 ...
Go语言中范围range的使用小结
目录一、什么是range二、遍历数组 / 切片(最常用)三、遍历字符串四、遍历 map五、遍历 channel六、range 的“值拷贝陷阱”七、什么时候不用 range?八、总结一、什么是range
range 是 Go 里 用于遍历数据结构的语法糖,常见用法:
for k, v := range collection {
...
}
它能遍历的对象包括:
数组 / 切片 ...
Go语言接口 + 结构体模式实战指南
目录一、核心认知:接口和结构体的分工基础示例:标准 “接口 + 结构体” 模式二、实战调用:上层代码只依赖接口,不依赖结构体正确调用方式(Controller 层)为什么不直接 new 结构体?三、简化场景:空结构体 + 全局实例简化示例(无依赖、简单逻辑)简化写法的适用场景两种写法对比四、分层中的 “接口 + ...
Go中的闭包函数Closure示例详解
目录前言1. 通俗定义:自带“背包”的函数2. 代码演示:最经典的计数器3. 底层原理:变量去哪了?(CS 专业向)4. 闭包在实战中的三大用途A. 封装状态(像简化的类)B. 延迟执行 / 回调 (Callback)C. 中间件 / 装饰器 (Middleware / Decorator)总结情况一:调用两次“工厂函数” (你的 main ...
Golang 中 return 与 defer关键字实践指南
目录一、基础认知:return 不是“一步到位”的操作二、关键差异:命名返回值 vs 匿名返回值1.命名返回值:defer可以直接修改返回值示例代码:执行流程拆解:2.匿名返回值:defer无法影响返回值示例代码:执行流程拆解:3. 特殊场景:返回指针时defer会生效示例代码:执行流程拆解:三、defer的其他核心特性拓展1. ...