golang
golang实践笔记
alden_ygq
一枚北漂5年多的资深SRE菜鸟,专注SRE方向,专注于运维体系建设。个人宣言:先努力成就自己,再用知识成就他人。
展开
-
go实现es数据清理工具
这里的Data是包含了ES服务地址等信息,我们后面会给出Data的数据结构。可以看到索引数据都是以日期结尾,我们可以根据日期去匹配索引数据,并对索引进行删除。这里需要考虑一点,有的Es服务开启了索引保护机制,不能通过。我们根据当前时间-保留天数,获取当前需要删除的日期数据。4、工具友好性,我们可以通过配置文件配置ES服务地址、日期格式化类型、保留天数等信息。3、通过字符串匹配,判断索引中是否包含要删除的日期,如果包含则进行删除。要获取Es服务中全部索引数据,我们首先连接Es服务器,这里我们使用。原创 2024-05-13 11:43:53 · 579 阅读 · 0 评论 -
容器下的 Go 应用程序优化
GOMAXPROCS 的值为物理机的 CPU 核心数,而不是容器的 CPU 核心数。过大的 GOMAXPROCS 会导致严重的上下文切换,浪费 CPU,在容器环境下,Go 程序不能最优设置 GOMAXPROCS,需要根据容器的 CPU 核心数来设置。原因是 Go 编译器在编译阶段,出于对 CPU 访问效率的考虑,保证尽量一次原子读取就可以读取一个完整字段,采用了一定的内存对齐策略。引入包之后,会自动执行 init 方法,获取 Pod 的 CPU Limit 值,设置 GOMAXPROCS。原创 2024-05-05 17:40:02 · 575 阅读 · 0 评论 -
Golang函数重试机制实现
在编写应用程序时,有时候会遇到一些短暂的错误,例如网络请求、服务链接终端失败等,这些错误可能导致函数执行失败。但是如果稍后执行可能会成功,那么在一些业务场景下就需要重试了,重试的概念很简单,这里就不做过多阐述了最近也正好在转golang语言,重试机制正好可以拿来练手,重试功能一般需要支持以下参数execFunc:需要被执行的重试的函数interval:重试的间隔时长attempts:尝试次数。原创 2024-04-17 19:23:39 · 385 阅读 · 0 评论 -
golang判断字符串是否包含中文
来判断字符是否属于中文的Unicode范围。来判断字符是否在中文的Unicode范围内。来判断字符串是否匹配正则表达式。可以使用正则表达式来匹配中文字符,使用regexp包中的函数。可以使用unicode包中的函数。可以使用unicode包中的函数。原创 2024-04-05 20:56:47 · 622 阅读 · 0 评论 -
Go 文本处理/正则表达式提取
【代码】Go 文本处理/正则表达式提取。原创 2024-02-18 10:22:27 · 392 阅读 · 0 评论 -
strings.Split获取字符串中的url/域名的简易方法
【代码】strings.Split获取字符串中的url/域名的简易方法。原创 2024-02-18 10:21:13 · 309 阅读 · 0 评论 -
golang 获取域名 ip dns 信息
TXT记录用来保存域名的附加文本信息,TXT记录的内容按照一定的格式编写,最常用的是SPF格式,SPF用于登记某个域名拥有的用来外发邮件的所有ip地址. MX记录的作用是给寄信者指明某个域名的邮件服务器有哪些,SPF格式的TXT记录的作用跟MX记录相反,它向收信者表明,哪些邮件服务器是经过某个域名认可发送邮件的. SPF的作用主要是反垃圾邮件,主要针对那些发信人伪造域名的垃圾邮件.按照SPF格式在DNS中增加一条TXT类型的记录,将提高该域名的信誉度,同时可以防止垃圾邮件伪造该域的发件人发送垃圾邮件.原创 2024-02-18 10:20:15 · 1234 阅读 · 0 评论 -
kubeconfig有效期巡检
golang调用shell实现kubeconfig文件有效期监测和监控,代码采用cobra命令行工具库编写。项目名称为:sretools。原创 2024-01-10 17:22:01 · 589 阅读 · 1 评论 -
error转string
在golang中,将error类型转换成string类型是非常常见的操作。本文介绍了几种常用的转换方法,包括使用Error()函数、fmt.Sprintf()函数、errors.New()函数以及github.com/pkg/errors库中的Errorf()函数,选择哪种方法取决于开发者具体的需求和项目的情况。原创 2023-12-03 20:26:49 · 616 阅读 · 0 评论 -
Golang数据库连接池技术原理与实现
对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,从而缩减了系统整体响应时间。对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术。在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。可以看出DB这个连接池内部存储连接的结构freeConn,并不是之前使用的chan,而是[]*driverConn,一个连接切片。连接池对外提供两个方法,Get:获取一个连接,Put:归还一个连接。就会打开一个连接池。原创 2023-07-19 23:23:46 · 733 阅读 · 0 评论 -
golang占位符%v、%+v、%#v详解
【代码】golang占位符%v、%+v、%#v详解。原创 2023-07-19 23:02:33 · 3984 阅读 · 0 评论 -
golang系列-golang的25个关键字
自定义数据结构应避免与关键字一致。用于选择不同类型的通讯。用于channel通讯。用于声明map类型数据。用于定义抽象数据类型。原创 2023-07-07 11:43:49 · 482 阅读 · 0 评论 -
go定时任务crontab
在linux里可以通过crontab -e或者vi /etc/crontab编辑定时任务,区别在于后者只有root用户可以,还可以指定shell环境,不建议修改,修改前建议备份,前者任何用户都可以使用,两者修改后都不用修改自动重启。1linux crontab定时任务# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | |原创 2023-06-28 20:06:45 · 595 阅读 · 0 评论 -
go系列-加密与解密
运行结果。原创 2023-06-26 22:18:33 · 979 阅读 · 0 评论 -
go系列-时间处理
time.Now()和Date()方法都可以获取当前时间,time.Now()用起来比较简单,但是Date()可以获取不同的精确值,如time.Date(t1,t2,t3,t4,t5,t6,0,time.Local)将毫秒省略,精确到秒,结果为:2017-04-11 12:52:52 +0800 CST。原创 2023-06-26 09:37:20 · 1793 阅读 · 0 评论 -
go系列-读取文件
直接将数据直接读取入内存,是效率最高的一种方式,但此种方式,仅适用于小文件,对于大文件,则不适合,因为比较浪费内存。原创 2023-06-25 14:02:04 · 599 阅读 · 0 评论 -
go系列-值类型与引用类型
Go语言的数据类型有 值类型 与 引用类型 两种。在Go语言中,只有slice、map、interface、channel是引用类型,其他的都是值类型。原创 2023-06-25 11:15:09 · 889 阅读 · 0 评论 -
make和new的区别
在Go语言中,new和make是两个用于创建对象的内建函数,主要用于go语言数据结构的初始化。原创 2023-06-25 10:52:47 · 795 阅读 · 0 评论 -
golang使用os/exec库查询进程
上述代码逻辑会获取到当前系统中所有运行的进程,但如果只需要获取制定进程信息呢,就需要针对进程进行过滤。本文主要介绍如何使用os/exec库查询进程。原创 2023-06-21 14:03:47 · 697 阅读 · 0 评论 -
golang去除字符串的换行符
在golang中,有时候需要处理换行符(\n)以便更好地访问和操作文本。但有时需要去除文本中的换行符以便进行某些计算或统计功能。原创 2023-06-21 11:17:46 · 2128 阅读 · 0 评论 -
go系列-golang跨平台编译
指可以在多种非linux操作系统上编译成linux平台可执行的文件。原创 2023-06-19 16:27:23 · 227 阅读 · 0 评论 -
golang判断文件是否存在
2)如果返回的错误类型使用os.IsNotExist()判断为true,说明文件或文件夹不存在。golang判断文件或文件夹是否存在的方法为使用。1)如果返回的错误为nil,说明文件或文件夹存在。3)如果返回的错误为其它类型,则不确定是否存在。函数返回的错误值进行判断。原创 2023-06-14 11:43:55 · 926 阅读 · 0 评论 -
cobra-cli init报 command not found
【代码】cobra-cli init报 command not found。原创 2023-06-13 16:20:36 · 178 阅读 · 0 评论 -
cobra cli命令行框架使用指南
cobra是一个命令行程序库,可以用来编写命令行程序,非常简单易用,类似于Go标准库中的Flag包,不过它比Flag包强大很多。它提供了一个脚手架,可以生成基于cobra的应用程序框架。cobra的github地址是https://github.com/spf13/cobra,可以看到很多知名的项目Kubernetes/Docker/Hugo/Etcd都在使用。cobra的作者是spf13,它是Google工程师,也是Go项目团队成员。原创 2023-06-13 17:04:02 · 456 阅读 · 0 评论 -
go mod init 在初始化时出现 cannot determine module path for source directory (outside GOPATH,module path)
新创建的golang项目,使用 go mod init 命令时出现 cannot determine module path for source directory xxxxxxx (outside GOPATH, module path must be specified)原创 2023-05-23 09:26:56 · 2565 阅读 · 1 评论 -
golang 实现递归
package mainimport "fmt"func Recursive(n int) int {if n == 0 {return 1}//相当于1098765432*1return n * Recursive(n-1)}func main() {fmt.Println(Recursive(10)...原创 2018-09-21 22:04:35 · 51 阅读 · 0 评论 -
go开发环境部署
国内资源Go语言中文网https://studygolang.com/dl一、下载安装包wget https://studygolang.com/dl/golang/go1.11.linux-amd64.tar.gz二、解压安装注:go安装包是已经编译,直接将解压后的包放置在/usr/local/下tar zxv...原创 2019-06-03 16:23:30 · 73 阅读 · 0 评论 -
go系列-golang 版本升级
go版本升级原创 2023-01-31 01:21:41 · 449 阅读 · 0 评论 -
go系列-go不同业务环境变量设置
go不同业务环境变量设置原创 2023-01-31 01:13:34 · 592 阅读 · 0 评论 -
go系列-centos 7.2配置go vim ide
go vim配置原创 2023-01-31 01:06:50 · 157 阅读 · 0 评论 -
go系列-go mod 管理
gomod 配置原创 2023-01-31 01:04:13 · 507 阅读 · 0 评论 -
go系列-linux操作系统go开发环境部署
go基础环境配置安装原创 2023-01-31 00:54:21 · 430 阅读 · 0 评论