golang

Go通过cobra快速构建命令行应用

来自jetbrains Go 语言现状调查报告 显示:在go开发者中使用go开发实用小程序的比例为31%仅次于web,go得益于跨平台、无依赖的特性,用来编写命令行或系统管理这类小程序非常不错。 本文主要介绍Steve Francia(spf13)大神写的用于快速构建命令行程序的golang包cob ... »

Go能实现AOP吗?

hello~大家好,我是小楼,今天分享的话题是Go是否能实现AOP? 背景 写Java的同学来写Go就特别喜欢将两者进行对比,就经常看到技术群里讨论,比如Go能不能实现Java那样的AOP啊?Go写个事务好麻烦啊,有没有Spring那样的@Transactional注解啊? 遇到这样的问题我通常会回 ... »

zhuochongdashi

Golang WaitGroup源码解析

Go WaitGroup源码解析 结构体 type WaitGroup struct { noCopy noCopy state1 [3]uint32 } 其中state1代表三个字段:counter, waiter, sema counter:计数器,每次经过wg.Add(X)或者wg.Done( ... »

golang常用库包:Go依赖注入(DI)工具-wire使用

google 出品的依赖注入库 wire:https://github.com/google/wire 什么是依赖注入 依赖注入 ,英文全名是 dependency injection,简写为 DI。 百科解释: 依赖注入是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而 ... »

golang-grpc

1. 什么是grpc和protobuf 1.1 grpc gRPC是一个高性能、开源和通用的RPC框架,面向移动和HTTP/2设计。目前提供C、Java和Go语言版本,分别是:grpc,grpc-java,grpc-go.其中C版本支持C,C++,Node.js,Python,Ruby,Object ... »

guyouyin123

golang 工厂模式

随笔背景 某一天询问某大牛--贺某人。询问golang为啥没有构造函数。他给我的回复就是,为啥要有构造函数,给爷爷我写清楚点,不要啥都写隐式标识!!把我一顿怼!(注:不用担心,我被怼很有经验。)然后我就亮出了我的王牌我知道你背着你老婆看小姐姐的证据” (注:他老婆也是好朋友,本人善于告状!)。被逼无 ... »

limanman233

Go 1.18泛型的局限性初探

前言 Go 1.18 版本之后正式引入泛型,它被称作类型参数(type parameters),本文初步介绍 Go 中泛型的使用。长期以来 go 都没有泛型的概念,只有接口 interface 偶尔类似的充当泛型的作用,然而接口终究无法满足一些基本的泛型需求,比如这篇文章里,我们会尝试用 Go 的泛 ... »

maxzhang1985 Golang

【图像处理】Golang 获取JPG图像的宽高

一、背景 有些业务需要判断图片的宽高,来做一些图片相关缩放,旋转等基础操作。 但是图片缩放,旋转,拼接等操作需要将图片从 JPG 格式转成 RGBA 格式操作,操作完毕后,再转回 JPG 图片。 那如何不做 RGBA 的转换就能得到 JPG 图片的宽和高呢? 如下通过 JPG 文件的分析,并编写一个 ... »

voipman go

记-Golang日志文件读取及写入操作

Golang语言的 os 包中OpenFile 函数,如下所示: func OpenFile(name string, flag int, perm FileMode) (*File, error) { } 其中 name 是文件的文件名,如果不是在当前路径下运行需要加上具体路径;flag 是文件的 ... »

Biuget-Golang Golang

Golang | 测试与性能调优

Test 我们在日常的工作过程中,自测是不可缺少的,公司还会要求所有的公共方法必须要写单测,在别的语言中,我们如果想要写单测还需要使用到测试框架,但是Go语言中,直接支持测试,并且使用起来非常简单。 比如说我现在写了一个: // twoSum 给定数组,求两个之和的数组内地址 func twoSum ... »

FrostBoy Go

golang 中 sync.Mutex 的实现

mutex 的实现思想 mutex 主要有两个 method: Lock() 和 Unlock() Lock() 可以通过一个 CAS 操作来实现 func (m *Mutex) Lock() { for !atomic.CompareAndSwapUint32(&m.locked, 0, 1) { ... »

Golang | 并发

goroutine 协程(Coroutine) Golang 在语言层面对并发编程进行了支持,使用了一种协程(goroutine)机制, 协程本质上是一种用户态线程,不需要操作系统来进行抢占式调度,但是又寄生于线程中,因此系统开销极小,可以有效的提高线程的任务并发性,而避免多线程的缺点。但是协程需要 ... »

FrostBoy Go

golang开发:go并发的建议

这个是前段时间看到Go语言的贡献者与布道师 Dave Cheney对Go并发的建议或者叫使用的陷阱(不是我自己的建议),结合自己最近几年对gorotine的使用,再回头看这几条建议,真的会茅塞顿开,觉得特别重要。这篇文章对并发的建议的章节地址 https://dave.cheney.net/prac ... »

feixiangmanon golang

golang对接阿里云私有Bucket上传图片、授权访问图片

golang对接阿里云私有Bucket上传图片、授权访问图片 1、为什么要设置私有bucket 公共读写:互联网上任何用户都可以对该 Bucket 内的文件进行访问,并且向该 Bucket 写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可能会侵害您的合法权益 私有:只有该存 ... »

gofs使用教程-基于golang的开源跨平台文件同步工具

概述 gofs是基于golang开发的一款开箱即用的跨平台文件同步工具,开源地址如下:https://github.com/no-src/gofs,欢迎点个Star或者提交Issue和PR,共同进步! 安装 首先需要确保已经安装了Go (版本必须是1.18+),然后你就可以使用下面的命令来安装gof ... »

Golang中常用的代码优化点

Golang中常用的代码优化点 大家好,我是轩脉刃。 这篇想和大家聊一聊golang的常用代码写法。在golang中,如果大家不断在一线写代码,一定多多少少会有一些些代码的套路和经验。这些经验是代表你对一些问题,或者一类问题的思考和解决。处理一个问题的方法有很多,如果频繁遇到同样的场景和问题,我们会 ... »

yjf512 Go

一种优雅的Golang的库插件注册加载机制

一种优雅的Golang的库插件注册加载机制 你好,我是轩脉刃。 最近看到一个内部项目的插件加载机制,非常赞。当然这里说的插件并不是指的golang原生的可以在buildmode中加载指定so文件的那种加载机制。而是软件设计上的「插件」。如果你的软件是一个框架,或者一个平台性产品,想要提升扩展性,即可 ... »

yjf512 Go

Golang 包了解以及程序的执行

Golang 包了解以及程序的执行 引言 Go 语言是使用包来组织源代码的,包(package)是多个 Go 源码的集合,是一种高级的代码复用方案。Go 语言中为我们提供了很多内置包,如 fmt、os、io等。 任何源代码文件必须属于某个包,同时源码文件的第一行有效代码必须是package paca ... »

lvrui Go

golang实现WebSocket的商业化使用的开发逻辑(1)

WebSocket是什么 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。其最大特点之一就是:服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话。 开发前期准备(默认已经安装了golang语言环境) 我这里通过两个库来实现整个WebSocke ... »

Golang 常见设计模式之装饰模式

想必只要是熟悉 Python 的同学对装饰模式一定不会陌生,这类 Python 从语法上原生支持的装饰器,大大提高了装饰模式在 Python 中的应用。尽管 Go 语言中装饰模式没有 Python 中应用的那么广泛,但是它也有其独到的地方。接下来就一起看下装饰模式在 Go 语言中的应用。 ## 简单 ... »

upyun