Go坑:time.After可能导致的内存泄露问题分析
Go 中 time.After 可能导致的内存泄露
一、Time 包中定时器函数
go v1.20.4
定时函数:NewTicker,NewTimer 和 time.After 介绍
time 包中有 3 个比较常用的定时函数:NewTicker,NewTimer 和 time.After:
NewTimer: 表示在一段时间后才执行,默认情况下执行一次。如果想再次执行,需要调用 time.Reset() 方法,这时类 ...
基于Golang构建一个网络漏洞扫描器
目录1. 项目设置创建漏洞扫描器配置包和环境网络扫描的伦理考量与风险2. 简单端口扫描器低级端口扫描实现使用net包对首次扫描进行测试3. 从这里开始改进:多线程扫描为何最初的版本运行缓慢添加线程支持多线程结果4. 添加服务检测服务旗标抓取(Banner Grabbing)实现识别正在运行的服务基本版本检测5. 漏洞检测实现编写简 ...
Go 语言递归函数实现方法及应用场景
目录Go 语言递归函数引言一、递归函数的基本概念1. 什么是递归?2. 递归的优点3. 递归的缺点二、Go 语言中的递归函数1. 递归函数的定义2. 递归基准条件3. 递归调用三、递归函数的应用场景1. 斐波那契数列2. 树形结构遍历四、递归函数的优化1. 尾递归优化2. 动态规划五、总结Go 语言递归函数
引言
递归函数是编程中一种重要 ...
go之gorm
1、简介
ORM
Object-Relationl Mapping, 它的作用是映射数据库和对象之间的关系,方便我们在实现数据库操作的时候不用去写复杂的sql语句,把对数据库的操作上升到对于对象的操作。
gorm
gorm就是基于Go语言实现的ORM库。
类似于Java生态里大家听到过的Mybatis、Hibernate、SpringData等。
Github
https://github.com/jinz ...
go debug
https://www.cnblogs.com/li-peng/p/8522592.html
0 转
通过log库输出日志,我们可以对程序进行异常分析和问题追踪。但有时候,我也希望能有更直接的程序跟踪及定位工具能够帮助我们更方便快捷的追踪、定位问题,最直观的感觉还是使用调试器。Linux平台下,原生的C/C++程序,我们往往使用gdb进行程序调试,切换到Golang ...
深度解密 Go 语言之 sync.map
工作中,经常会碰到并发读写 map 而造成 panic 的情况,为什么在并发读写的时候,会 panic 呢?因为在并发读写的情况下,map 里的数据会被写乱,之后就是 Garbage in, garbage out,还不如直接 panic 了。
目录是什么有什么用如何使用源码分析数据结构StoreLoadDeleteLoadOrStoreRange其他总结参考资料
是什么
Go 语言原生 ...
Go | Go 使用 consul 做服务发现
Go 使用 consul 做服务发现
目录Go 使用 consul 做服务发现前言一、目标二、使用步骤1. 安装 consul2. 服务注册定义接口具体实现测试用例3. 服务发现接口定义具体实现测试用例总结参考
前言
前面一章讲了微服务的一些优点和缺点,那如何做到
一、目标
二、使用步骤
1. 安装 consul
我们可以直接使用官方提供的二进制文件 ...
Go 1.14解决Go Modules模式下更新私有库问题
在Go 1.11之后推出了依赖包管理工具Go Modules之后,Go项目可以在 GOPATH 之外的位置创建,当项目中仅使用了公有库作为依赖时,使用 go get 或 go mod 更新依赖一切如初,没有任何问题。
由于Go Modules默认使用代理去更新依赖,所以当使用了私有仓库作为依赖时,Go更新依赖的相关命令将不再可 ...
Go语言GC实现原理及源码分析
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/475
本文使用的 Go 的源码1.15.7
介绍
三色标记法
三色标记法将对象的颜色分为了黑、灰、白,三种颜色。
黑色:该对象已经被标记过了,且该对象下的属性也全部都被标记过了(程序所需要的对象);
灰色:该对象已经被标记过了, ...
多图详解Go的互斥锁Mutex
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com
本文使用的go的源码时14.4
Mutex介绍
Mutex 结构体包含两个字段:
字段state:表示当前互斥锁的状态。
字段 sema:是个信号量变量,用来控制等待 goroutine 的阻塞休眠和唤醒。
type Mutex struct {
state int32
sema uint32
}
...
深入 Go 语言 defer 实现原理
转载请声明出处哦~,本篇文章发布于luozhiyun的博客: https://www.luozhiyun.com/archives/523
本文使用的go的源码 1.15.7
介绍
defer 执行规则
多个defer的执行顺序为"后进先出LIFO "
package main
import (
"fmt"
)
func main() {
name := "Naveen"
fmt.Printf("Original String: %s\n", string(nam ...
从栈上理解 Go语言函数调用
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/518
本文使用的go的源码 1.15.7
前言
函数调用类型
这篇文章中函数调用(Function Calls)中的函数指的是 Go 中的任意可执行代码块。在 《Go 1.1 Function Calls》中提到了,在 Go 中有这四类函数:
top-level func
method with ...
从源码剖析Go语言基于信号抢占式调度
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/485
本文使用的go的源码15.7
这一次来讲讲基于信号式抢占式调度。
介绍
在 Go 的 1.14 版本之前抢占试调度都是基于协作的,需要自己主动的让出执行,但是这样是无法处理一些无法被抢占的边缘情况。例如:for 循环或者垃圾回收长时 ...
Python、CSharp、Go、Nextjs,不同框架的性能到底差多少?
前言
不知不觉居然12月了,最近琐事太多,产出并不高,继续整理一下近期的一些笔记吧。
上次我对部署 Django 框架时用的不同服务器进行对比测试,详见:不同Django服务器和部署方式的性能调研
在探索的过程中,我还对不同语言的框架进行了测试对比。
Django测试补充
对于上次的 Django 性能测试,还有一些补充的结论:
drf ...
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 方法通过反射调用方法通过反射设置值四:反射的优缺点五:共勉一:什么是反射
反射可以认为是程序在运行时的一种能力,反射可以在程序运行时访问、检测和修改 ...