首页 > TAG信息列表 > GOlang

探索GoLang编程语言的力量和简单性

并发变得容易GoLang的突出特点之一是其对并发编程的内置支持。Goroutines,轻量级线程,使实现并发和并行进程变得非常简单。通过使用通道,一种在goroutines之间共享数据的通信机制,开发人员可以实现高效的并发,而无需传统线程管理的复杂性。顺利处理数千个并发操作的能力使GoLang成为开发

用golang开发系统软件的总结

众所周知,golang非常适合用于开发后台应用,但也通常是各种各样的应用层软件。开发系统软件, 目前的首选还是C++, C, rust等语言。相比应用软件,系统软件需要更加稳定,更加高效。其维持自身运行的资源消耗要尽可能小,然后才可以把更多CPU、内存等资源用于业务处理上。简单来说,系统软件在CP

字节微服务HTTP框架Hertz使用与源码分析

一、前言Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp、gin、echo 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。 如今越来越多的微服务选择使用 Golang,如果对微服务性能有要

golang nat 打洞

golang nat 打洞 - 腾讯云开发者社区-腾讯云 https://cloud.tencent.com/developer/article/2065196 首先介绍下基础nat的四种方式,在进行nat转换的时候,我们在网关路由表上记录了映射关系,这个映射关系可以用六元祖表示 本地ip:本地port 外网ip:外网port 目标ip:目标port 复制 其中目

golang 包管理

一、工作目录结构说明 1、bin:用于放置发布的二进制程序 2、pkg:用于放置发布的库文件 3、src:用于放置源代码 二、go install命令介绍 1、使用共go install编译并发布二进制文件 命令:go install gpkgmain 说明:编译并发布路径gpkgmain下的包,main包,则在将编译后的以pkgmain命名的二进

Golang Gin实践 连载十二 生成二维码

前言 本章节将实现如下功能: 生成二维码 合并海报(背景图+二维码) 实现 首先,你需要在 App 配置项中增加二维码及其海报的存储路径,我们约定配置项名称为 QrCodeSavePath,值为 qrcode/ 生成二维码 安装:go get -u github.com/boombuler/barcode 工具包 考虑生成二维码这一动作贴合工具

Golang Gin实践 连载十一 实现导出、导入 Excel

前言 在本节,我们将实现对标签信息的导出、导入功能,这是很标配功能了,希望你掌握基础的使用方式 另外在本文我们使用了 2 个 Excel 的包,excelize 最初的 XML 格式文件的一些结构,是通过 tealeg/xlsx 格式文件结构演化而来的,因此特意在此都展示了,你可以根据自己的场景和喜爱去使用 配

go-golang学习笔记-1

golang学习笔记-1 golang源码包下载网站 golang导入多个包的写法 红色框和橙色框等价 橙色框,圆括号,分行写包名,注意没有逗号 go语言的函数的左括号 红色框所言,和函数名在同一行 声明变量 声明变量的默认值 红色框声明一个int型的变量 默认值是0 声明变量

fgprof golang profiler 支持on cpu 以及off cpu

fgprof 是相比golang 默认pprof 方便的工具,可以用来方便的分析on cpu 以及off cpu ,相比官方的提升不少 说明 没有银弹,fgprof 也有缺点的: 不支持c 函数,当前实现依赖go 的调度器,一些数据可能不准确,parca 也依赖了此包 具体是在parca server 中 参考处理   internalMux.H

polarsignals frostdb golang嵌入式列存

frostdb 是parca 内部存储的核心,是一个列式存储 包含的特点 golang 开发,方便golang 应用嵌入 不可变数据集 数据包含动态列,列可能在运行时扩展 技术上基于了apache parquet (存储) 以及apache arrow (查询) 参考资料 https://github.com/polarsignals/frostdbhttps://github.com/seg

golang 优先队列

前置条件 golang 优先队列几种构建方式,使用比起其他语言稍微有些复杂 6178. 将区间分为最少组数 简单构建优先队列 func minGroups(intervals [][]int) int { if len(intervals)==0{ return 0 } //按照前面一个位置进行排序,相等按照后面的升序 s

Golang 实现strtotime 字符串转换为时间戳的方法

                   在php中,有strtotime 将字符串转换为时间戳,在Golang 中,同样可以实现类型的函数。     1 package main 2 3 import ( 4 "fmt" 5 "time" 6 "regexp" 7 "strings" 8 "strconv" 9

Gin实践 连载六 Golang优雅重启HTTP服务

http.Server-Shutdown() package main import ( "context" "fmt" _ "gin_log/models" "gin_log/pkg/setting" "gin_log/routers" "log" "net/http" "os" "os/signal"

创建一个 Golang 库

创建一个 Golang 库 使用 go 模块 在本文中,您将学习如何使用 go mods 创建自己的库并将其导入所需的项目。 首先让我向您介绍一下 gomodules 是什么。 “模块是存储在文件树中的 Go 包的集合,其中包含 ** 去.mod** 根目录下的文件。这 ** 去.mod** 文件定义了模块的模块路径,它也是

golang指定客户端的端口

当客户端去连接服务端时,端口号是随机的,如果需要指定客户端端口号,就不要指定IP,否则会一直报错的,程序如下: netAddr := &net.TCPAddr{Port: 51860} d := net.Dialer{LocalAddr: netAddr} conn, err := d.Dial("tcp", "127.0.0.1:38001") if err != nil { fm

golang中读取配置文件的包go-ini/ini

思考 首先,在一个初始项目开始前,大家都要思考一下 各种程序配置,写在代码中好吗? API的错误码硬编在程序中,合适吗? DB句柄谁都去open,好吗? 获取分页等公共参数,不统一管理起来,好吗? 显然在较正规的项目中,这些问题的答案都是不可以 [https://github.com/go-ini/ini](https://github.com/go

golang面试经验2

1、make 和 new 的区别? 宝典导航 2、了解过golang的内存管理吗?宝典导航 3、调用函数传入结构体时,应该传值还是指针?说出你的理由?宝典导航 4、线程有几种模型?宝典导航 5、Goroutine 的原理了解过吗,讲一下实现和优势? 宝典导航 6、Goroutine 什么时候会发生阻塞? 7、PMG模型中Gorout

如何进行性能调优-golang

目录前言内存cpu占用docker镜像占用 前言 内存 cpu占用 docker镜像占用 docker load -I xx.tar.gz dive xxx

Golang占位符

有哪些占位符? 常见占位符 %T 类型占位符 %v 值占位符 %d 整数占位符 %f 浮点占位符 %c 字符占位符 %s 字符串的占位符 占位符类型 通用占位符 占位符 说明 举例 %v 获取数据的值 Printf(“%v”, people) %+v 获取数据的值,如果结构体,会携带字段名 Printf(“%+v”, peopl

golang sort.Slice用法

func Slice(x interface{}, less func(i, j int) bool) // 第一个形参是:待排序数据 x interface{} // 第二个形参是:排序判断方法 // 形参i 代表后一个元素 // 形参j 代表前一元素 // 返回值:代表i,j是否交换。true:交换,false:不交换。 less func(i, j int) bool demo: package ma

Golang基础-2

Golang基础2 指针 如果声明变量var x int ,则&x是获取x值所在的地址,类型是整型指针(*int),即我们可以声明一个变量来接收其返回值 var p *int=&x 那么p就是一个指针变量 age:=18 // 这里是输出i变量对应的地址通过&+名字获取 fmt.Println(&age) 这里我们要得到通过ptr指针

使用golang实现Redis中间件

(一).RESP协议解释   RESP协议在Redis1.2被引入,直到Redis2.0才成为和Redis服务器通信的标准。这个协议需要在你的Redis客户端实现。RESP 是一个支持多种数据类型的序列化协议:简单字符串(Simple Strings),错误( Errors),整型( Integers), 大容量字符串(Bulk Strings)和数组(Arrays)。该协议的

在ubuntu 上安装golang

https://golang.google.cn/dl/ 方式一 下载安装包 wget https://golang.google.cn/dl/go1.19.linux-amd64.tar.gz 解压到文件夹下 sudo tar -xvzf go1.19.linux-amd64.tar.gz -C /usr/local/ 编译配置环境变量 sudo nano ~/.bashrc export GOPATH=/home/zic/gopath export G

golang解析yaml文件

golang解析yaml文件   yaml 文件是目前最常用的配置文件,使用go语言编写代码和工具时,也会用到yaml文件,将服务配置及中间件等信息定义到yaml文件中,那么如何将yaml文件中定义的信息读取到代码中进行使用呢?此处使用yaml包和viper包来解析配置文件,后续可根据实际场景来选用。 一、yam

手写快排,解决栈溢出写法,Golang

package main import "fmt" var swapcnt int func main() { arr := []int{2, 3, 4, 5, 1} //idx := Swap(arr, 0, len(arr)) //fmt.Println(idx, arr) myquickSort(arr, 0, len(arr)-1) fmt.Println(arr) fmt.Println(swapcnt) } func Swap(arr []int, l,