onconfigchange golang viper
golang中的切片
索引:https://waterflow.link/articles/1666277946416 在go中切片的底层是数组,所以切片的数据连续存储在数组的数据结构中。如果底层的数组满了,切片还需要添加元素的话,底层数组就需要扩容。如果底层数组几乎为空时,就会缩容。 在切片内部其包含一个指向底部数组的 ......
golang中的接口
0.1、索引 https://waterflow.link/articles/1666171320273 1、概念 接口提供了一种指定对象行为的方法。 我们使用接口来创建多个对象可以实现的通用抽象。 Go 接口不同的原因在于它们是隐式的。 没有像 implements 这样的显式关键字来标记对象 A ......
golang中的错误处理
0.1、索引 https://waterflow.link/articles/1666716727236 1、panic 当我们执行panic的时候会结束下面的流程: package main import "fmt" func main() { fmt.Println("hello") panic ......
golang中的字符串
0.1、索引 https://waterflow.link/articles/1666449874974 1、字符串编码 在go中rune是一个unicode编码点。 我们都知道UTF-8将字符编码为1-4个字节,比如我们常用的汉字,UTF-8编码为3个字节。所以rune也是int32的别名。 ty ......
golang常用库包:log日志记录-uber的Go日志库zap使用详解
Go 日志记录库:uber-go 的日志操作库 zap 使用 一、简介 zap 是 uber 开源的一个高性能,结构化,分级记录的日志记录包。 go1.20.2 zap v1.24.0 zap的特性 高性能:zap 对日志输出进行了多项优化以提高它的性能 日志分级:有 Debug,Info,Warn ......
[golang]使用logrus自定义日志模块
简介 logrus是一个第三方日志库,性能虽不如zap和zerolog,但方便易用灵活。logrus完全兼容标准的log库,还支持文本、JSON两种日志输出格式。 特点 相较于标准库,logrus有更细致的日志级别,从高到低分别是:trace > debug > info > warn > erro ......
Golang创建临时文件
临时文件是一个程序运行时才创建,程序结束后就无用的文件。这就延伸出了一个很重要的点:不管创建的临时文件是否已经存在,程序都应该以读写的方式打开,也就是一旦打开,就会抹除原来的内容;程序结束时就无用的文件,这就需要在程序结束时自动删除。 现在的操作系统都提供了临时文件夹,临时文件夹的意思,就是重启操作 ......
批量上传知识库功能-Golang读取Excel的数据
在 Go 语言中,读取 Excel 数据可以使用第三方库 github.com/tealeg/xlsx,该库提供了丰富的 API,可以方便地读取和操作 Excel 文件。 以下是一个简单的示例代码,演示了如何使用 github.com/tealeg/xlsx 库读取 Excel 文件: import ......
Golang语言之Channel通信,并发编程
1.Go语言特点 Go是一种静态强类型的开源语言,诞生于2009年,是非常年轻的一门语言其主要目标时“兼具Python等动态语言的开发速度,同时又具备想C语言C++的安全性与应能”,其中最大的特点(优势)就是并发编程 不同于大多编程语言的多线程,golang的并发执行单元是一种称之为goroutin ......
ChatGPT垂直行业私有数据知识库功能-咨询接口采用流式响应输出-JS和Golang实现流式响应
近期开发私有数据知识库功能,想要实现和ChatGPT聊天效果类似的逐字流式输出展示效果。 GPT3.5本身就有流式聊天补全接口,后端Golang对接后,也需要能流式输出。下面就介绍下前端JS后端Golang来实现这种输出效果 大部分介绍是使用EventStream来实现,我现在不使用EventStr ......
golang使用grpc的demo
Crafted by Genie You golang使用grpc的demo Genie 好的,这里是一个简单的 golang 使用 grpc 的示例代码: 1. 安装 gRPC 和 protobuf 首先需要安装 gRPC 和 protobuf 的支持库。可以在终端中使用以下命令来安装: go g ......
golang读取用户名和密码文件并生成笛卡尔积
密码爆破时需要读取用户名字典和密码字典来生成笛卡尔积派发爆破任务;直接读取全部字典内容到内存时成本较高; package main import ( "bufio" "fmt" "os" ) func main() { // 打开1.txt文件 file1, err := os.Open("1.tx ......
Golang基础-- select的用法
select是golang在语言层面提供的多路IO复用的机制,其可以检测多个channel是否ready 三个题目示例来说明一下select的大概作用: 题目一: 声明两个channel,分别为chan1和chan2,依次启动两个协程,分别向两个channel中写入一个数据就进入 睡眠。select ......
golang 中的 goto 用法和使用场景(转)
转自:golang中的goto 场景一:跳出多重循环 package main import "fmt" func main() { for x := 0; x < 10; x++ { for y := 0; y < 10; y++ { if y == 2 { // 跳转到标签 goto break ......
golang 编译碰到问题 Package python-2.7 was not found in the pkg-config search path.
golang 运行单测或者编译程序时提示需要配置 PKG_CONFIG_PATH 环境变量,原因是在程序里使用了 go-python 包,要求运行环境有 python2.7,并设置 PKG_CONFIG_PATH 环境变量,解决方案如下: # pkg-config --cflags -- pytho ......
Golang与Java全方位对比总结
本文针对Golang与Java的基础语法、结构体函数、异常处理、并发编程及垃圾回收、资源消耗等各方面的差异进行对比总结,有不准确、不到位的地方还请大家不吝赐教。 ......
Golang基础--defer的用法
defer语句用于延迟函数的调用,每次defer都会把一个函数压入栈中,函数返回前再把延迟的函数取出执行。 三个示例: import "fmt" func main() { var init = 1 defer fmt.Println(init) init = 2 } 输出1。延迟函数fmt.Pri ......
Golang回调函数
Golang回调函数实例二则 定义 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。 回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响 ......
Golang常用库之UUID
Golang 中生成唯一的字符串(UUID,GUID) 什么是UUID? 通用唯一标识符 (UUID) 是一种特定形式的标识符,在大多数实际用途中可以安全地认为是唯一的。两个正确生成的 UUID 相同的可能性几乎可以忽略不计,即使它们是由不同的各方在两个不同的环境中创建的。这就是为什么说 UUID ......
Golang反射获取变量类型和值
Golang反射获取变量类型和值 1. 什么是反射 反射是程序在运行期间获取变量的类型和值、或者执行变量的方法的能力。 Golang反射包中有两对非常重要的函数和类型,两个函数分别是: reflect.TypeOf能获取类型信息reflect.Type; reflect.ValueOf 能获取数据的 ......
使用Golang实现Nginx代理功能
由于业务需要实现对多个web应用做同域二级目录代理,用NGINX的又感觉太重了,而且不好做配置页面,用golang来实现代理功能 支持正则表达式匹配机制 支持多应用多级目录代理。 支持应用子路由代理 支持webapi代理 支持websocket代理 支持禁用缓存设置 支持http、https混合使用 ......
巧如范金,精比琢玉,一分钟高效打造精美详实的Go语言技术简历(Golang1.18)
转自刘悦 研发少闲月,九月人倍忙。又到了一年一度的“金九银十”秋招季,又到了写简历的时节,如果你还在用传统的Word文档寻找模板,然后默默耕耘,显然就有些落后于时代了,本次我们尝试使用云平台flowcv高效打造一份巧如范金、精比琢玉的高品质Golang技术简历。 首先来到云平台:flowcv.com ......
golang TLS方式发送邮件
package mail import ( "crypto/tls" "errors" "fmt" "net/smtp" "net/textproto" ) type loginAuth struct { username, password string } // LoginAuth is fun ......
golang 不聲明額外變量循環指定次數
range + make + struct{} = ? for range make([]struct{}, 10) { // TODO } 差不多就是 Rust 當中的 for _ in 0..10 { // TODO } 或 (0..=10).for_each(|_| { // TODO }); ......
day7 golang GMP
大名鼎鼎的GMP模型 需要自行学习的知识:进程、线程、协程、多线程、线程池、io多路复用,内核态用户态,,同步阻塞异步非阻塞等等相关知识 代码是在线程中运行的,协程也是,所以当协程阻塞的时候该线程也阻塞了,其他任务就无法调度了,该线程就死了。 如何解决,那就需要让协程自由的在线程中移动,当阻塞的时候 ......
Golang之常用方法[总结]
1. 有一堆数字,如果除了一个数字以外,其他数字都出现了两次,那么如何找到出现一次的数字? nums := []int{1, 5, 1, 6, 5, 3, 6} i := 0 for _, v := range nums { i ^= v } fmt.Print(i) 重点是异或的使用 ......
(转)使用 Golang 创建和读取 Excel 文件
原文:https://juejin.cn/post/7117578016858849293 摘要 本文提出一种使用 Golang 进行 Excel 文件创建和读取的方案。首先对问题进行分析,引出方案的基本架构;然后分章节描述了 Excelize 基础库的基本用法,以及 Excel 数据在 Golan ......
运行 Golang 程序时让程序不会在运行结束后立即关闭命令行窗口
在运行 Golang 程序时,为了让程序不会在运行结束后立即关闭命令行窗口,可以采用以下两种方法: 使用 fmt.Scanln() 函数 在程序的末尾添加一行 fmt.Scanln() 可以暂停程序运行,等待用户在命令行中输入任何字符,程序将等待用户输入,然后再继续执行直到程序结束。 package ......
golang pprof 监控系列(4) —— goroutine thread 统计原理
golang pprof 监控系列(4) —— goroutine thread 统计原理 大家好,我是蓝胖子。 在之前 golang pprof监控 系列文章里我分别介绍了go trace以及go pprof工具对memory,block,mutex这些维度的统计原理,今天我们接着来介绍golan ......