![](https://img-blog.csdnimg.cn/20201123172056483.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Go
文章平均质量分 78
go语言学习
西京刀客
Crypto/Web3.
A bug bounty hunting and a lot of coding is my passion!
展开
-
Go语言-big.Int
`math/big` 作为 Go 语言提供的进行大数操作的官方库。原创 2024-05-29 20:49:07 · 588 阅读 · 1 评论 -
golang并发模型CSP(Communicating Sequential Processes)
不要通过共享内存来通信,而要通过通信来实现内存共享。原创 2024-05-15 11:18:25 · 316 阅读 · 0 评论 -
Go编程语言的调试器Delve | Goland远程连接Linux开发调试(go远程开发)
Golang 支持使用 gdb 来进行调试,这与 C 语言几乎是一致的。但 GDB 是一个通用性调试工具,不非常能直接地反映出 Golang 的特点,所以,推荐使用 delve(`https://github.com/go-delve/delve`),可以理解为是 Golang 版本的 GDB,使用方式大致与 gdb 一致。原创 2024-05-12 22:55:17 · 942 阅读 · 1 评论 -
golang实现定时监控 CLOSE_WAIT 连接的数量
监控指定端口的连接状态,特别是关注 CLOSE_WAIT 连接的数量。CLOSE_WAIT 是指 TCP 连接关闭时,连接的一端等待关闭的另一端发送最后的确认信号。如果存在大量的 CLOSE_WAIT 连接,可能意味着网络连接没有正常关闭,可能会导致资源泄漏或其他问题。原创 2024-04-09 16:18:21 · 959 阅读 · 0 评论 -
gRPC超时重传机制
gRPC 是在 HTTP/2 之上实现的 RPC 框架,HTTP/2 是第 7 层(应用层)协议,它运行在 TCP(第 4 层 - 传输层)协议之上,相比于传统的 REST/JSON 机制有诸多的优点。原创 2024-04-08 13:06:53 · 881 阅读 · 0 评论 -
golang常用库之-golang常用库之-ladon包 | 基于策略的访问控制
基于策略的访问控制-ladonhttps://github.com/ory/ladonLadon是保护您资源的蛇龙。Ladon是一个库,用于访问控制策略,类似于基于角色的访问控制或访问控制列表。与ACL和RBAC相比,您可以获得细粒度的访问控制,并能够在复杂环境中回答问题,例如多租户或分布式应用程序和大型组织。Ladon受到AWS IAM Policies 的启发。原创 2024-03-17 20:18:44 · 802 阅读 · 0 评论 -
golang常用库之-操作数据库ORM:GORM 包介绍 | 一些 GORM 提示和注意事项
GORM 是 Go 语言的 ORM 包,功能强大,调用方便。像腾讯、华为、阿里这样的大厂,都在使用 GORM 来构建企业级的应用。原创 2024-02-10 20:08:36 · 2456 阅读 · 1 评论 -
什么是数据库软删除,什么场景下要用软删除?(go GORM硬删除)
使用的是 GORM,默认启用了软删除功能,即通过将 deleted_at 字段设置为非空来标记删除的记录。这就是为什么在执行 db.Delete(&image) 后,实际上只是更新了 deleted_at 字段而不是真正删除记录。原创 2024-02-07 16:29:55 · 1322 阅读 · 1 评论 -
golang常用库之-disintegration/imaging图片操作(生成缩略图)
imaging 是一个 Go 语言的图像处理库,它提供了一组功能丰富的函数和方法,用于进行各种图像处理操作。原创 2024-02-06 09:06:59 · 1073 阅读 · 2 评论 -
什么是协程goroutine?
Goroutine 是一个由 Go 运行时管理的轻量级线程,一般称其为 “协程”。操作系统本身是无法明确感知到 Goroutine 的存在的,Goroutine 的操作和切换归属于 “用户态” 中。Goroutine 由特定的调度模式来控制,以 “多路复用” 的形式运行在操作系统为 Go 程序分配的几个系统线程上。原创 2024-01-29 17:14:28 · 825 阅读 · 0 评论 -
链路追踪-调用链跟踪-Jaeger
链路跟踪在微服务为我们提供了模块分,低耦合的高效开发和DevOPS中,具体业务中当一个请求中,请求了多个服务单元,如果请求出现了错误或异常,很难去定位是哪个服务出了问题,这时就需要链路追踪。可能你会想在业务系统中请求中埋点,或写日志,但是这种都需要在业务代码中来写,而且耦合在代码中,不具备微服务的扩张性后后期的易维护行。JaegerJaeger-分布式调用链跟踪系统理论与实战参考URL: https://blog.csdn.net/zuiyijiangnan/article/details/1038原创 2024-01-26 18:35:55 · 1009 阅读 · 0 评论 -
golang常用库之-golang-jwt/jwt包
golang-jwt/jwt 是一个在 Go 语言中使用 JSON Web Tokens(JWT)进行身份验证和授权的库。JWT 是一种用于在跨网络进行安全通信的开放标准(RFC 7519),它使用一个 JSON 对象来表示被声明的安全性信息。原创 2024-01-23 09:24:33 · 790 阅读 · 0 评论 -
Golang条件编译 | 获取系统的磁盘空间内存占用demo | gopsutil/disk库(跨平台方案)
Go中获取磁盘空间信息,你可以使用第三方库 `github.com/shirou/gopsutil/disk` 这个库提供了一个跨平台的方法来获取磁盘的使用情况。原创 2024-01-11 21:11:01 · 1679 阅读 · 1 评论 -
golang常用库之-操作sqlite数据库
SQLite 是一个开源的嵌入式关系数据库,实现了自给自足的、无服务器的、配置无需的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库系统不同,比如 MySQL、PostgreSQL 等,SQLite 不需要在系统中设置和管理一个单独的服务。这也使得 SQLite 是一种非常轻量级的数据库解决方案,非常适合小型项目、嵌入式数据库或者测试环境中。原创 2023-12-01 21:26:22 · 2258 阅读 · 2 评论 -
syslog快速开始
Syslog 协议最初由 Eric Allman 编写,并在 RFC 3164 中定义。消息通过 IP 网络发送到事件消息收集器或系统日志服务器。Syslog 使用用户数据报协议 (UDP) 端口 514进行通信。虽然,系统日志服务器不会发回收到消息的确认。自 2009 年以来,系统日志已由 IETF 在RFC 5424 中标准化。原创 2023-11-18 21:00:34 · 687 阅读 · 2 评论 -
监控系统-Prometheus(普罗米修斯)(三) Prometheus中的指标(Metrics)
Prometheus整体架构分为Server端和Exporter端,而Exporter通常是基于官方的SDK开发(例如Go SDK)。原创 2023-10-23 20:15:05 · 2839 阅读 · 0 评论 -
华为云云耀云服务器L实例评测|华为云上安装监控服务Prometheus三件套安装
Prometheus监控系统常见的组合方式是Prometheus + Alertmanager + Grafana,也就是所谓的Prometheus三件套。原创 2023-09-15 20:36:59 · 597 阅读 · 2 评论 -
AEAD(Authenticated Encryption with Associated Data) 认证加密之 AES-GCM
结论:AEAD模式是一个密码学的规范和标准。它定义了一种同时提供认证和加密的算法模式,已经被广泛采用于各种主流的安全通讯协议和标准中。原创 2023-06-09 09:12:23 · 5030 阅读 · 0 评论 -
go编写python拓展模块(python如何调用go语言的模块)
将 Go 源文件直接编译成 Python 扩展模块,当然这要求在使用 CGO 的时候**需要遵循 Python 提供的 C API**原创 2023-06-06 11:31:25 · 835 阅读 · 2 评论 -
golang gRPC:根据.protobuf文件生成go代码
在最新版本的Protocol Buffer编译器中,--go-grpc_out选项已经取代了--go_out=plugins=grpc选项,并且成为了生成gRPC服务端和客户端代码的推荐选项。原创 2023-03-30 23:15:00 · 3416 阅读 · 0 评论 -
golang常用库之-web框架搭建restful api服务 gin-gonic/gin
Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确。对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。原创 2023-01-22 12:26:19 · 1138 阅读 · 0 评论 -
缩减Golang编译后文件大小(npx压缩执行文件)
go编译出来的程序有点大,怎么解决?原创 2022-11-18 15:41:26 · 868 阅读 · 0 评论 -
golang生成可供python调用的库(python调用Go代码)
由于Python项目中有关于支付签名与验签的模块,是自定的一些内部逻辑,基于安全性考虑, 希望改用C/C++或者Go 来重构该部分模块,做到加解签过程透明,上层代码只需要关心结果。原创 2022-11-08 09:27:28 · 821 阅读 · 0 评论 -
golang使用channel通道实现非阻塞队列和超时阻塞队列
Channel是Golang中非常重要的数据结构, golang的channel读或写是会造成阻塞的,但是可以用select的多路复用解决这个问题。原创 2022-10-31 21:28:00 · 2004 阅读 · 0 评论 -
mongodb报错:Problem inserting to mongo collection: no reachable servers
使用mgo操作mongo时遇到了上述的异常,原因是session的使用失败。在程序启动时,我创建了一个主 mgo.Session,然后,对于每个处理的请求,我复制主会话( `dbSession.Copy()`)并在完成后关闭它。但是,当并发调 `dbSession.Copy()` 时,报错:Problem inserting to mongo collection: no reachable servers原创 2022-10-31 10:18:21 · 823 阅读 · 0 评论 -
golang的defer的理解- defer的函数一定会执行吗?
go语言中defer可以完成延迟功能,当前函数执行完成后再执行defer的代码块。通过defer,我们可以在代码中优雅的关闭/清理代码中所使用的变量。原创 2022-10-23 15:45:36 · 776 阅读 · 0 评论 -
golang设置socket选项参数SO_LINGER、SO_SNDBUF
golang设置socket选项参数SO_LINGER、SO_SNDBUF原创 2022-10-22 17:34:32 · 1934 阅读 · 0 评论 -
golang切片和数组拷贝(浅拷贝和深拷贝)
我们提到的深拷贝和浅拷贝,则指的是引用类型的值处理方案。数组和切片属于哪种?浅拷贝指的是,把变量里面存的内存地址拷贝了,所指向的真实值并没拷贝。原创 2022-10-22 00:26:43 · 6699 阅读 · 3 评论 -
golang-json构建和解析:Marshal与Unmarsha、json转换为map
Json(Javascript Object Nanotation)是一种数据交换格式,常用于前后端数据传输。任意一端将数据转换成json 字符串,另一端再将该字符串解析成相应的数据结构,如string类型,strcut对象等。go语言本身为我们提供了json的工具包”encoding/json”。原创 2022-10-14 21:22:10 · 2157 阅读 · 0 评论 -
Go语言-switch case | switch中判断多个值、interface conversion: interface {} is float64, not int
当嵌套的 if 比较少时(三个以内),用 if 编写程序会比较简洁。但是当选择的分支比较多时,嵌套的 if 语句层数就会很多,导致程序冗长,可读性下降。因此用 switch 语句来处理多分支选择。原创 2022-10-13 21:38:20 · 2006 阅读 · 0 评论 -
golang常用库之-ants包 | golang协程池(goroutine池)
ants是一个高性能的 goroutine 池,实现了对大规模 goroutine 的调度管理、goroutine 复用,允许使用者在开发并发程序的时候限制 goroutine 数量,复用资源,达到更高效执行任务的效果。ants的 Goroutine Pool 的容量是可以自定义的,也就是说使用者可以根据不同场景对这个参数进行调优直至达到最高性能。自动调度海量的 goroutines,复用 goroutines定期清理过期的 goroutines,进一步节省资源。原创 2022-10-12 22:15:45 · 4459 阅读 · 0 评论 -
golang语言 []interface{}和interface{}
在Goland中有一种特殊类型:interface{} ,空接口。interface{} 类型是没有方法的接口。由于没有 implements 关键字,所以所有类型都至少实现了 0 个方法,所以 所有类型都实现了空接口。这意味着,如果编写一个函数以 interface{} 值作为参数,那么可以为该函数提供任何值,并且,[]interface{}在golang中也可以认为是interface{}。原创 2022-10-05 11:04:19 · 3495 阅读 · 0 评论 -
Go (Golang) 语言-快速开始
Golang一般指go。 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。原创 2022-10-04 09:00:00 · 4185 阅读 · 4 评论 -
golang常用库之mapstructure包 | 多json格式情况解析、GO json 如何转化为 map 和 struct、Go语言结构体标签(Struct Tag)
Go library for decoding generic map values into native Go structures and vice versa.原创 2022-10-01 09:28:44 · 3907 阅读 · 0 评论 -
golang常用库之-kelseyhightower/envconfig | 读取和设置环境变量、根据环境变量填充指定的结构
使用os包可以很容易的设置和读取环境变量。第三方库envconfig使用结构体tag将环境变量映射给结构体的方式很方便。原创 2022-09-28 23:00:00 · 759 阅读 · 0 评论 -
golang常用库之标准库os/signal | go 服务器如何优雅的退出
golang中对系统信号的处理主要使用标准库的 os/signal包。原创 2022-09-28 01:30:00 · 275 阅读 · 0 评论 -
golang常用库之-pkg/term包、moby.term包、go-runewidth包 | 返回用户终端的当前宽度和高度、获取字符或字符串的固定宽度 | 基于文本的界面的库ui
常用于命令行程序最大给定列数打印给定名称命令行标志集。根据终端列长度,调试命令行打印的格式。原创 2022-09-27 23:30:00 · 1080 阅读 · 0 评论 -
Golang并发-Go优雅的退出程序(同步等待组 sync.WaitGroup)
Golang并发:并发协程的优雅退出sync.WaitGroup对于Golang开发者来说并不陌生,其经常作为多协程之间同步的一种机制。原创 2022-09-26 06:53:57 · 789 阅读 · 0 评论 -
golang常用库之-配置文件解析 spf13/viper包 | 解析&加载配置
在我们开发过程中,像数据库信息、邮件配置和其他的第三方服务密钥等这些固定的信息都会写在配置文件中,而配置文件又有多种表现形式和格式,有 JSON, TOML, YAML各种格式,而且测试环境,开发环境和生产环境用的配置文件也不是同一份。我们需要一个go 库可以做这件事!原创 2022-09-25 22:14:38 · 1667 阅读 · 0 评论 -
golang常用库之-go net包 | golang实现udp 服务器、客户端 | UDP基础(PPS)| 微软开源的支持多平台多协议的网络性能检测工具 Ethr
golang提供了网络编程使用net包,使用net包可以进行很基础的socket编程。由于UDP是“无连接”的,所以,服务器端不需要额外创建监听套接字,只需要指定好IP和port,然后监听该地址,等待客户端与之建立连接,即可通信。原创 2022-09-25 08:22:30 · 1356 阅读 · 2 评论