经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
 Go语言

Go实现整合Logrus实现日志打印

目录1 初步使用2 增加标签WithFields3 配置常见参数4 输出日志到文件5 利用Hooks将日志输出到其他地方 Github:github.com irupsen/lo… 1 初步使用 package main import ( ? "context" ? ...[2022/7/4]

基于微服务框架go-micro开发gRPC应用程序

go-micro是golang的一个微服务框架。这篇文章将介绍使用go-micro最新版本v4开发gRPC服务的方式。 1、安装protoc 这个工具也称为proto编译器,可以用来生成各种开发语言使用proto协议的代码。 下载地址:https: github.com/protocol...[2022/7/4]

golang select 机制和超时问题

golang 中的协程使用非常方便,但是协程什么时候结束是一个控制问题,可以用 select 配合使用。 首先声明,golang 使用并不熟悉,本文仅仅是记录使用过程中遇到的一些坑。 子协程和父协程的通信通常用 context 或者 chan。我遇到一个通常的使用场景,在子协程中尝试多次处理,父协...[2022/6/27]

Go语言单元测试基础从入门到放弃

目录Go语言测试go test工具单元测试函数格式单元测试示例go test -vgo test -run回归测试跳过某些测试用例子测试表格驱动测试介绍示例并行测试使用工具生成测试代码测试覆盖率testify/a ert安装使用示例总结 Go语言测试 这是Go单测从入门到放弃系列教程的第0篇,主...[2022/6/21]

Go语言单元测试模拟服务请求和接口返回

Go语言单元测试模拟服务请求和接口返回

目录前言httptestgock安装使用示例总结 前言 这是Go单元测试从入门到放弃系列教程的第1篇,介绍了如何使用httptest和gock工具进行网络测试。 在上一篇《Go单元测试从入门到放弃—0.单元测试基础》中,我们介绍了Go语言编写单元测试的基础内容。 而实际工作中...[2022/6/21]

Go单元测试对数据库CRUD进行Mock测试

目录前言go-sqlmock安装使用示例miniredis安装使用示例总结 前言 最近在实践中也总结了一些如何用表格驱动的方式使用 gock Mock测试外部接口调用。以及怎么对GORM做mock测试,这些等这篇学完基础后,后面再单独写文章给大家介绍。 这是Go语言单元测试系列教程的第3篇,...[2022/6/21]

GoFrame框架数据校验之校验对象校验结构体

目录前言摘要基本概念方法介绍简要说明注意问题TIPS链式操作示例1:单数据校验简单示例进阶示例进阶示例打印结果示例2:Map数据校验示例3:Struct数据校验总结 前言摘要 这篇文章将会为大家介绍GoFrame数据校验中校验对象的知识点,包括:Validator对象常用方法的介绍、单数据校验、...[2022/6/20]

GoFrame基于性能测试得知grpool使用场景

目录前言摘要先说结论测试性能代码运行结果总结 前言摘要 之前写了一篇 grpool goroutine池详解 | 协程管理 收到了大家积极的反馈,今天这篇来做一下grpool的性能测试分析,让大家更好的了解什么场景下使用grpool比较好。 先说结论 grpool相比于goroutine...[2022/6/20]

GoFrame框架数据校验之校验结果Error接口对象

GoFrame框架数据校验之校验结果Error接口对象

目录基本介绍方法示例注意问题方法详解进阶注意问题总结 上一篇文章介绍了 GoFrame数据校验之校验对象 | 校验结构体 ,得到了大家积极的反馈。 再接再厉,这篇总结分享:GoFrame数据校验之校验结果总结分享。 基本介绍 校验结果为一个Error接口对象。当数据规则校验成功时,校验方...[2022/6/20]

golang时间及时间戳的获取转换

golang时间及时间戳的获取转换

目录一、获取时间1.1 获取当前时间1.2 获取之前/之后的时间获取1分钟之前的时间戳获取一小时之前的时间获取1小时后的时间二、获时间戳2.1 获取当前时间戳2.2 时间转时间戳2.2 时间戳转时间按模板格式化输出模板输出当前时间3. 时间计算3.1 时间加时间段3.2 计算两时间之差 一、获取时间...[2022/6/20]

Golang接口型函数使用小结

目录常规接口实现接口型函数出场进一步改造 什么是接口型函数?顾名思义接口函数指的是用函数实现接口,这样在调用的时候就会非常简便,这种方式适用于只有一个函数的接口。 这里以迭代一个map为例,演示这一实现的技巧。 常规接口实现 defer语句用于延迟函数调用,每次会把一个函数压入栈中,函数...[2022/6/20]

golang?对象深拷贝的常见方式及性能

目录关于golang拷贝的概念完整代码总结 关于golang拷贝的概念 Go语言中所有赋值操作都是值传递,如果结构中不含指针,则直接赋值就是深度拷贝;如果结构中含有指针(包括自定义指针,以及切片,map等使用了指针的内置类型),则数据源和拷贝之间对应指针会共同指向同一块内存,这时深度拷贝需要特别...[2022/6/20]

深入了解Go的interface{}底层原理实现

目录1. interface{}初探2. eface3. iface4. 接口转化 1. interface{}初探 Go是强类型语言,各个实例变量的类型信息正是存放在interface{}中的,Go中的反射也与其底层结构有关。 iface 和 eface 都是 Go 中描述interfac...[2022/6/6]

Golang的strings.Split()踩坑记录

目录背景场景前置排查验证打印底层信息追源码类似情况总结 背景 工作中,当我们需要对字符串按照某个字符串切分成字符串数组数时,常用到strings.Split() 最近在使用过程中踩到了个坑,后对踩坑原因做了分析,并总结了使用string.Split可能踩到的坑。最后写本篇文章做复盘总结与分享...[2022/5/30]

golang中按照结构体的某个字段排序实例代码

目录概述从大到小排序按照结构体的某个字段排序使用 sort.Stable 进行稳定排序附:根据结构体中任意字段进行排序总结 概述 golang的sort包默认支持int, float64, string的从小大到排序: int -> Ints(x []int)float64 ->...[2022/5/30]

go语言beego框架分页器操作及接口频率限制示例

目录获取所有文章数据获取总条数设置每页的条数总页数和当前页码获取分页数据返回数据beego接口频率限制 获取所有文章数据 o := orm.NewOrm() qs := o.QueryTable("Article") 12 获取总条数 count, _ := qs.Count()...[2022/4/18]

Go模板template用法详解

本文只介绍template的语法和用法,关于template包的函数、方法、template的结构和原理,见:深入解析Go template模板使用详解。 入门示例 以下为test.html文件的内容,里面使用了一个template语法{{.}}。 <!DOCTYPE html&g...[2022/4/18]

深入解析Go&nbsp;template模板使用详解

本文只关注Go text/template的底层结构,带上了很详细的图片以及示例帮助理解,有些地方也附带上了源码进行解释。有了本文的解释,对于Go template的语法以及html/template的用法,一切都很简单。 关于template的语法以及具体使用方法,见:Go template...[2022/4/18]

Go并发4种方法简明讲解

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

Golang原生rpc(rpc服务端源码解读)

创建rpc接口,需要几个条件 方法的类型是可输出的方法的本身也是可输出的方法必须有两个参数,必须是输出类型或者是内建类型方法的第二个参数是指针类型方法返回的类型为error rpc服务原理分析 server端 服务注册处理网络调用 服务注册 通过反射处理,将接口存入到map中,进行调...[2022/4/7]

Go?interface{}?转切片类型的实现方法

遇到这样一个情况想将变量v转化为[]string类型 var v interface{} a := []interface{}{"1", "2"} v = a v 这时还是interface{} 但其实是个 []interface{} newValue := v.([]string)...[2022/2/9]

对Go语言中的context包源码分析

目录一、包说明分析二、包结构分析三、Context接口类型分析四、后续分析规划五、基于实现类型到常用函数六、With-系列函数七、扩展功能以及如何扩展八、补充 一、包说明分析 context包:这个包分析的是1.15 context包定义了一个Context类型(接口类型),通过这个Cont...[2022/2/9]

golang数组和切片作为参数和返回值的实现

目录1. 数组作为参数和返回值时1.1数组的定义1.2数组作为参数和返回值的时候2.切片作为参数和返回值2.1 切片的定义初始化2.2 切片的存储大致分为3部分2.3 切片作为参数和返回值2.4 append 切片动态增长的原理2.5 copy 函数 通过赋值切片可以使得两个切片的数据不共享3. 总...[2022/2/9]

Go?结构体序列化的实现

目录更改JSON对象中的键在JSON对象中隐藏结构体字段附加内容结构体标签string指令 本文,我们将回到之前写的showMovieHandler方法,并更新它以返回一个JSON响应,表示系统中的单个电影信息。类似于: { ? ? "id": 123, ? ? "title": "Casa...[2022/1/24]

Go语言实现枚举的示例代码

在编程领域里,枚举用来表示只包含有限数量的固定值的类型,在开发中一般用于标识错误码或者状态机。拿一个实体对象的状态机来说,它通常与这个对象在数据库里对应记录的标识状态的字段值相对应。 在刚开始学编程的时候,你一定写过,至少见过直接使用魔术数字进行判断的代码。啥叫魔术数字呢,举个例子,要置顶一个...[2022/1/24]

Go中变量命名规则与实例

目录前言命名习惯很重要良好命名喜欢的特质经验法则大小写混用的变量名变量名避免冗余函数参数的命名返回值的命名方法 Receiver 的命名导出 package 级别变量命名接口类型error 命名Packages 名结论总结 前言 来自 Google 的 Andrew Gerrand 曾经关于 G...[2022/1/18]

beego下让swagger按照更新了controllers的接口信息自动更新commentsRouter_controllers.go

beego下让swagger按照更新了controllers的接口信息自动更新commentsRouter_controllers.go

beego下让swagger按照更新了controllers的接口信息自动更新commentsRouter_controllers.go (1)在beego环境中,当更新了controllers目录下面的接口后,在swagger的web页面虽然可以看到更新后的接口,但无法正常运行,这是因为sw...[2022/1/18]

为什么要避免在 Go 中使用 ioutil.ReadAll?

原文链接: 为什么要避免在 Go 中使用 ioutil.ReadAll? ioutil.ReadAll 主要的作用是从一个 io.Reader 中读取所有数据,直到结尾。 在 GitHub 上搜索 ioutil.ReadAll,类型选择 Code,语言选择 Go,一共得到了 637307...[2022/1/17]

DDIA 学习笔记

第一章 可靠性、可扩展性、可维护性 ? 可靠性: 系统在困境(adversity)(硬件故障、软件故障、人为错误)中仍可正常工作(正确完成功能,并能达到期望的性能水准。 ? 可靠性(Reliability) 意味着即使发生故障,系统也能正常工作。故障可能发生在硬件(通常是随机的和不相关的),软...[2022/1/17]

Go Error 嵌套到底是怎么实现的?

Go Error 嵌套到底是怎么实现的?

原文链接: Go Error 嵌套到底是怎么实现的? Go Error 的设计哲学是 「Errors Are Values」。 这句话应该怎么理解呢?翻译起来挺难的。不过从源码的角度来看,好像更容易理解其背后的含义。 Go Error 源码很简单,寥寥几行: src/builtin/...[2022/1/17]

Go - 如何编写 ProtoBuf 插件 (三) ?

目录前言演示代码小结推荐阅读 前言 上篇文章《Go - 如何编写 ProtoBuf 插件 (二) 》,分享了基于 自定义选项 定义了 interceptor 插件,然后在 helloworld.proto 中使用了插件,最后在 golang 代码中获取到使用的插件信息。 接上篇,继续分享。...[2022/1/17]

Excelize 2.5.0 正式发布,这些新增功能值得关注

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel? 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM ...[2022/1/3]

【CGO】C源码编译为动态库供go程序调用(linux环境、arm架构运行平台)

动态库编译 1.安装并配置交叉编译工具链 网上有详细教程 2.go env环境配置 go env -w CGO_ENABLED=1 go env -w GOOS=linux go env -w GOARCH=arm go env -w CC=...-...[2021/12/31]

如何在 Go 中将 []byte 转换为 io.Reader?

原文链接: 如何在 Go 中将 []byte 转换为 io.Reader? 在 stackoverflow 上看到一个问题,题主进行了一个网络请求,接口返回的是 []byte。如果想要将其转换成 io.Reader,需要怎么做呢? 这个问题解决起来并不复杂,简单几行代码就可以轻松将其转换...[2021/12/31]

雅可比行列式迭代及优化(golang版)

最近遇到的一个求解雅可比迭代的问题,这个计算方法在 python 中有现成的库,但是在 golang 中没找到相应的实现。 于是根据雅可比行列式的推导实现了一个 golang 版本的雅可比迭代。 ? 雅可比迭代 推导 一个 \(N \times N\) 的线性方程组 。 \[Ax = b...[2021/12/31]

Golang项目的配置管理——Viper简易入门配置

Golang项目的配置管理——Viper简易入门配置 What is Viper? From:https: github.com pf13/viper Viper is a complete configuration solution for Go applications includi...[2021/12/31]

Go 的 golang.org/x/ 系列包和标准库包有什么区别?

在开发过程中可能会遇到这样的情况,有一些包是引入自不同地方的,比如: golang.org/x/net/html 和 net/html, golang.org/x/crypto 和 crypto。 那这是什么原因呢? 引用 Go 官方 Wiki 的说法: The golang.org...[2021/12/24]

GO使用socket和channel实现简单控制台聊天室

使用socket和channel,实现简单控制台聊天室 这里使用socket和channel,演示在GO中如何编写一个简单网络程序 功能分析 聊天室主要功能:用户可以加入/离开聊天室;每个用户发送的消息,广播给所有人 聊天室分为客户端和服务端,客户端负责发送消息和打印服务器消息,服务器...[2021/12/20]

Goland的那些实用技巧

Goland的那些实用技巧

1、 自定义结构体tag    2、go mod tidy / download失败   解决办法:设置goproxy            3、取消/打开代码折叠  4、左侧project栏总是展示当前打...[2021/12/20]

Go - 如何编写 ProtoBuf 插件(二)?

Go - 如何编写 ProtoBuf 插件(二)?

目录前言定义插件使用插件获取自定义选项小结推荐阅读 前言 上篇文章《Go - 如何编写 ProtoBuf 插件 (一) 》,分享了使用 proto3 的 自定义选项 可以实现插件的编写,说到基于 MethodOptions 和 ServiceOptions 选项去实现 method 和 se...[2021/12/20]

Go Micro Dashboard - 实现细节(一)

前言 Go Micro Dashboard是基于go-micro和ng-alain开发的, 它既是go-micro开发过程中的工具,也可以作为学习go-micro的实际案例。接下来我将会详细介绍一下这个项目的一些实现细节。 一、服务列表 服务的发现与注册,是分布式微服务中重要的基础模块,单个服...[2021/12/20]

基于LSM的Key-Value数据库实现初篇

前篇文章对LSM的基本原理,算法流程做了简单的介绍,这篇文章将实现一个简单的基于LSM算法的迷你Key-Value数据库,结合上篇文章的理论与本篇文章的实践使之对LSM算法有更好的理解,当然此版本还有很大问题只是Demo模型,后面也会指出; ??此LSMDB有支持常见的数据库四大功能:CURD...[2021/12/20]

Sentinel-Go 源码系列(三)滑动时间窗口算法的工程实现

要说现在工程师最重要的能力,我觉得工程能力要排第一。 就算现在大厂面试经常要手撕算法,也是更偏向考查代码工程实现的能力,之前在群里看到这样的图片,就觉得很离谱。 算法与工程实现 在 Sentinel-Go 中,一个很核心的算法是流控(限流)算法。 流控可能每个人都听过,但真要手写一个,...[2021/12/20]

Golang?strings包常用字符串操作函数

目录func Contains func HasPrefix func HasSuffix func Replace func Split func ToLower func ToUpper func Repeat func Count func Index func Join 在编写代码的时候最...[2021/12/17]

go语言处理TCP拆包/粘包的具体实现

go语言处理TCP拆包/粘包的具体实现

目录part 1 part 2 part 3 part 1 最近在学习go自带的rpc,看完了一遍想着自己实现一个codec,也就是自定义消息的序列化和反序列化。消息的序列化和反序列化涉及到两步: 1、从网络中读取数据和将数据写到网络中; 2、根据拿到的二进制数据反序列化以及把现有...[2021/12/9]

go语言中五种字符串的拼接方式(小结)

目录+拼接方式 sprintf函数 Join函数 buffer.Builderbuffer.WriteString函数 buffer.Builder函数 ps:直接使用运算符 主要结论 +拼接方式 这种方式是我在写golang经常用的方式,go语言用+拼接,php使用.拼接,不过由于gol...[2021/12/9]

golang中gin框架接入jwt使用token验证身份

目录jwt 流程: 1.token 工具类 2. 使用该中间件 3. controller部分代码 jwt jwt的原理和se ion有点相像,其目的是为了解决rest api中无状态性 因为rest接口,需要权限校验。但是又不能每个请求都把用户名密码传入,因此产生了这个token的方...[2021/12/9]

Go与C语言的互操作实现

目录一、Go调用C代码的原理 二、在Go中使用C语言的类型 1、原生类型 数值类型 指针类型 字符串类型 数组类型 2、自定义类型 枚举(enum)结构体(struct)联合体(union) typedef 三、Go中访问C的变量和函数 四、C中使用Go函数 五、其他 Go有强烈的C背景,除了语法...[2021/12/9]

go&nbsp;gin+token(JWT)验证实现登陆验证

1.准备 go get github.com/dgrijalva/jwt-go go get github.com/gin-gonic/gin ?2.代码 package main import ( "errors" "fmt" "github.c...[2021/12/9]

使用Go&nbsp;HTTP客户端打造高性能服务

使用Go&nbsp;HTTP客户端打造高性能服务

目录问题一:默认的 HTTP Client 问题二:默认的 Http Transport 总结 HTTP(超文本传输协议)是一种用于客户端和服务器之间传输数据的通信协议。如果想要访问服务器资源,HTTP 请求是必不可少的。Go 语言里,net/http 包附带了默认配置,我们可以适当调整便可以获得...[2021/12/9]

347
2
记录数:891 页数:1/1812345678910下一页尾页
 友情链接: NPS
加载更多