斜杠golang

golang技术降本增效的手段

最近一年各大中小厂都在搞"优化",说到优化,目的还是"降本增效",降低成本,增加效益(效率)。 技术层面,也有一些降本增效的常规操作。 比如池化、io缓冲区技术 | | golang | C# | eg. | | | | | | | 池化技术 | snnc.Pool | ObjectPool | 前 ......
手段 golang 技术

Golang安装

[TOC](目录) # Go安装 ## 下载安装Go 地址:[https://studygolang.com/dl](https://studygolang.com/dl) 1、根据系统来选择下载包。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b2854cb5 ......
Golang

Golang之工作区workspace

快速开始 创建工作区 写一个最简单的基础项目实际演练一下 Go workspace。 首先,创建 workspace 工作区。 $: mkdir workspace $: cd workspace $: go work init 完成以上步骤后,工作区目录就会出现一个新的文件 go.work . 内 ......
工作区 workspace Golang

Golang中结构体映射mapstructure库深入详解

mapstructure用于将通用的map[string]interface{}解码到对应的 Go 结构体中,或者执行相反的操作。很多时候,解析来自多种源头的数据流时,我们一般事先并不知道他们对应的具体类型。只有读取到一些字段之后才能做出判断 + 目录 在数据传递时,需要先编解码;常用的方式是JSO ......
mapstructure 结构 Golang

golang版本管理-gvm

1 如果你是mac 简单 brew install go 2 其他就用 # zshzsh < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) # bash u ......
版本 golang gvm

Golang的GC和内存逃逸

简介 每个版本的Golang的垃圾回收都在不断优化中,而且方法和策略都在变化,因此这里只是总结出以下几个关键点: 什么样的数据需要GC 触发GC的条件是什么 GC时发生了什么 能否从代码层面上提高GC的效率 GC的基本流程 Golang在确定的时间,或者内存分配到达一定程度时,进行GC。GC时,会停 ......
内存 Golang

golang中defer的作用

defer是golang里面一个很有用的语法,但很多人可能都不太清楚它具体应该怎么用,博主之前就因为用错了引起了一些bug。 ......
作用 golang defer

Golang 规则引擎原理及实战

本文主要介绍规则引擎在 golang 中的使用,将首先介绍 golang 中主要的规则引擎框架,然后利用 golang 原生的 parser 搭建一个简单的规则引擎实现基本的 bool 表达式解析工作。 背景 随着业务代码的不断迭代,诞生出了越来越多的 if-else,并且 if-else 中的逻辑 ......
实战 原理 规则 引擎 Golang

想在golang里用好泛型还挺难的

golang的泛型已经出来了一年多了,从提案被接受开始我就在关注泛型了,如今不管是在生产环境还是开源项目里我都写了不少泛型代码,是时候全面得回顾下golang泛型的使用体验了。 先说说结论,好用是好用,但问题也很多,有些问题比较影响使用体验,到了不吐不快的地步了。 这篇文章不会教你泛型的基础语法,并 ......
golang

golang uuid库介绍

简介: 在现代软件开发中,全球唯一标识符(UUID)在许多场景中发挥着重要的作用。UUID是一种128位的唯一标识符,它能够保证在全球范围内不重复。在Go语言中,我们可以使用第三方库`github.com/google/uuid`来方便地生成UUID。本文将介绍如何使用这个库来生成不同版本的UUID ......
golang uuid

golang channel 未关闭导致的内存泄漏

### 现象 某一个周末我们的服务 oom了,一个比较重要的job 没有跑完,需要重跑,以为是偶然,重跑成功,因为是周末没有去定位原因 又一个工作日,它又oom了,重跑成功,持续观察,job 在oom之前竟然占用了30g左右(这里我们的任务一个数据量都在内存中计算,所以这里数据量大一点) 应用使用3 ......
内存 channel golang

使用golang灵活处理动态文案

代码 package scripts_stroage import ( "fmt" "github.com/duke-git/lancet/v2/slice" "github.com/gogf/gf/util/gconv" "github.com/gookit/goutil/dump" "regex ......
文案 动态 golang

golang 实现 RPC(远程过程调⽤实例)

golang 实现 RPC 前提概要,先了解几个概念,websocket简介 什么是websocket WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的Websocke ......
实例 过程 golang RPC

golang自带库使用说明

Go 中的时间操作 Golang中与时间有关的操作,主要涉及到 time 包,核心数据结构是 time.Time,如下: type Time struct { wall uint64 ext int64 loc *Location} 1、获取时间相关函数 1.1 获取当前时间 // 返回当前时间,注 ......
使用说明 golang

Golang 中 Gin 框架开发学习记录 ——(二)

4、响应页面 首先创建 template 文件夹将需要的 hmtl 文件放在里面,然后编写 hmtl <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>我的GO web页面</title> <link rel= ......
框架 Golang Gin

linux Vim配置Golang语言环境

下载vim 要配置Linux上的Vim,可以按照以下步骤进行操作: 打开终端并运行以下命令安装Vim: sudo apt-get update sudo apt-get install vim 1 2 在主目录下创建.vimrc文件: cd ~ touch .vimrc 1 2 编辑.vimrc文件 ......
语言 环境 Golang linux Vim

Golang中Gin框架开发学习记录——(一)

1、环境配置 在GO语言中,使用"go get"命令获取相关包"go get"命令的作用与“git clone”类似,这里使用: go get -u github.com/gin-gonic/gin 来获取,相关代理问题可以参考以下链接: (19条消息) 解决GO安装gin框架(go get -u ......
框架 Golang Gin

Golang学习笔记-处理HTTP请求参数

``` func body(w http.ResponseWriter, r *http.Request) { fmt.Println(r.Header) // 获取请求头信息:r.Header // 获取请求头的某条信息:h := r.Header["Accept-Encoding"]或h := ......
参数 笔记 Golang HTTP

Golang连接kafka记录

上代码 一个简单的demo package mainimport ( "fmt" "github.com/IBM/sarama")func main() { //1.生产者配置 config := sarama.NewConfig() config.Producer.RequiredAcks = s ......
Golang kafka

golang io复用端口监听

开发高性能server的时候,不可避免的需要接触到io复用——多个线程或者进程,可以创建一个或多个监听程序(监听同一个地址和端口),并且可以多个线程接收数据,让系统进行负载均衡。不同系统下有不同的模型:windows的iocp,linux的epoll和unix的kqueue。这里只讨论linux下的 ......
端口 golang

百度文心一言文心千帆大模型 ERNIE-Bot-turbo调用示例(golang版本)

百度的文心一言推出来也有一段时间了,但是接口部分一直没有公开,需要进行申请 最近,有朋友提供了文心千帆大模型的api权限,拿到了必须的参数,现在就来测试一下 下面是使用golang封装的文心千帆 ERNIE-Bot-turbo模型的调用示例 ERNIE-Bot-turbo.go package li ......
文心 ERNIE-Bot-turbo 示例 模型 版本

golang slice (切片) 扩容机制详解(1.18版本后)

**slice源码定义**: ```go type slice struct { array unsafe.Pointer //指向底层数组的指针 len int //切片长度 cap int //切片容量 } ``` **growslice()方法**:用于 slice 的扩容 ```go fun ......
机制 版本 golang slice 1.18

golang println与fmt.Println性能差距

具体原因和底层细节没有仔细看,不做描述,只说一下结果。循环获取UDP的socket数据,满速情况下(每个数据包获取后输出一下当前接收数据包总数),println比fmt.Println慢了1倍。比如发送10万个包,fmt.Println可以接收到9万多,而println只能接收4万~5万 ......
差距 性能 Println println golang

golang: 模仿 VictoriaMetrics 中的做法,通过把局部变量放在自定义 Context 对象中来做到hot path 的 0 alloc

**作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!** * [cnblogs博客](https://www.cnblogs.com/ahfuzhang/) * [zhihu](https://www.zhihu.com/people/ahfuzhang/posts) * [G ......
VictoriaMetrics 变量 局部 做法 对象

golang实现的 https 协议的四层代理和七层代理

**作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!** * [cnblogs博客](https://www.cnblogs.com/ahfuzhang/) * [zhihu](https://www.zhihu.com/people/ahfuzhang/posts) * [G ......
golang https

深入理解golang的nil类型

误区 刚开始总是以为golang的nil和其他编程语言的NULL是一个东西,golang 的nil表示复杂类型的默认值,比如golang中基本类类型都有自己的默认值如 int=0 bool=false string="" nli关键字?还是类型?还是变量? nil是一个变量 nil本质上是一个 Ty ......
类型 golang nil

centos7 下全局配置最新版的golang语言开发环境

按照以下步骤进行操作: 1. 前往Go官方网站下载页面(https://golang.org/dl/)查找最新版本的Go二进制文件。 2. 使用`wget`命令下载最新版本的Go二进制文件。例如,如果最新版本是1.17,执行以下命令: ```shell $ wget https://golang.o ......
全局 最新版 centos7 语言 环境

golang 重塑切片指针接口

result *[]xxx 1. 判断接口是否为空 2. 构造新指针类型,并赋值空切片 if reflect.ValueOf(result).Elem().IsNil() { resultType := reflect.TypeOf(result).Elem() t2 := reflect.New( ......
指针 接口 golang

用 Golang 从0到1实现一个高性能的 Worker Pool(一) - 每天5分钟玩转 GPT 编程系列(3)

[TOC] ## 1. 概述 话说,早几天一口气过了一遍 Golang 的并发机制: - [跟着 GPT-4 从0到1学习 Golang 并发机制(一)](https://www.danielhu.cn/from_0_to_1_go_concurrency_with_gpt_1/) - [跟着 GP ......
高性能 Golang Worker Pool GPT

GoFrame v2.5 版本发布,企业级 Golang 开发框架

开发工具新增了 `gf gen ctrl` 命令,以规范化定义、开发 API 接口,增加控制器、SDK 的代码生成提高开发效率,以解决 `Golang` 工程开发中接口层面的规范和效率问题。 ......
框架 GoFrame 版本 Golang 企业