将数据导入excel
三方包"github.com/tealeg/xlsx"将数据导入excel 定义表头字段和导入结构体 ```go type Student struct { Name string Age int Phone string Gender string Mail string } // HeaderColumn 表头字段定义 type HeaderColumn struct { Field string // 字段,数据映射到的数据字段名...阅读全文
三方包"github.com/tealeg/xlsx"将数据导入excel 定义表头字段和导入结构体 ```go type Student struct { Name string Age int Phone string Gender string Mail string } // HeaderColumn 表头字段定义 type HeaderColumn struct { Field string // 字段,数据映射到的数据字段名...阅读全文
序本文主要研究一下gorm的读写分离DBResolvergorm.io/plugin/dbresolver@v1.1.0/dbresolver.gotype DBResolver struct { *gorm.DB configs []Config resolvers map[string]*resolver global *resolver prepareStmtStore map[gorm.ConnPool]*gorm.PreparedStmtDB compileCallbacks []fu...阅读全文
golang代码实现。 package main import ( "encoding/hex" "errors" "flag" "fmt" "io/ioutil" "os" "path/filepath" ) //JPEG (jpg),文件头:FFD8FF //PNG (png),文件头:89504E47 //GIF (gif),文件头:47494638 //TIFF (tif),文件头:49492A00 //Windows Bitmap (bmp),文件头:424D const ( Jpeg...阅读全文
WebRTC通话最典型的应用场景应该是一对一视频通话,如微信视频,QQ视频等。我们回想一下日常生活中是怎么进行“实时音视频”交流的,假设A与B要进行面对面说话,通常A会说:B,xxx,向B发出“问候”声明,表明我要和你开始对话了,你方便嘛。这时候,如果B正在和C说话,可能就会说:稍等,我和C聊完再和你说。如果B带了降噪耳机,可能只是收到了A的信号,还没听清楚具体的意思,那么可能就会说:再说一遍,刚刚没听清楚。也有可能B心情不好,没有理睬A的话语。情况很多,甚至B是外国人,可能会回复:dsl#%¥...阅读全文
apisix官方文档:https://github.com/apache/apisix服务器信息:10.199.250.72,10.199.250.44,以下操作,两台服务器都要执行。一:安装依赖# 安装 epel, `luarocks` 需要它wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmsudo rpm -ivh epel-release-latest-7.noarch.rpm# 添加 Op...阅读全文
最简单舒适的Mock测试应该是怎样的? 指着源文件调用了外部依赖的那行代码说: “你,在测试的时候,换成这个假的调用!” 结束。 甭管他是私有方法、静态方法,还是别的类的方法,直接换掉,不要有任何多余动作。 一 Mock测试八股文 Java的Mock工具伴随着单元测试技术不断迭代发展,可谓前仆后继、历久弥新,虽然原理各不相同,但核心的使用模式却几乎没发生过多少变化。不论是当下流行的Mockito和PowerMock,或是曾经著名的JMockit、EasyMock、MockRunner等等,基本使...阅读全文
快速入门 安装依赖 go get github.com/oliveagle/jsonpath 例子程序 package main import ( "encoding/json" "fmt" // 0. 安装该依赖 // go get github.com/oliveagle/jsonpath "github.com/oliveagle/jsonpath" ) var dataStr string = ` { "store": { "book": [ { "category": "referen...阅读全文
话不多说直接上代码 package main //导入需要的包 import ( "errors" "fmt" "io/ioutil" "net" "net/http" "os" "strings" ) //获取本地机器ip列表 func externalIP() (net.IP, error) { ifaces, err := net.Interfaces() if err != nil { return nil, err } for _, iface := range ifaces { if...阅读全文
话不多说直接上代码 package main //导入需要的包 import ( "errors" "fmt" "io/ioutil" "net" "net/http" "os" "strings" ) //获取本地机器ip列表 func externalIP() (net.IP, error) { ifaces, err := net.Interfaces() if err != nil { return nil, err } for _, iface := range ifaces { if...阅读全文
作者:阿啄debugIT 前言 go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。 go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。 这么牛,怎么不想去试一下?! go语言环境搭建 配置GO语言环境 新增go的代理 GOPROXY=h...阅读全文
go语言实现选择排序,为什么叫选择排序呢?从数组元素中第一个元素开始array[0],和其他元素相比,然后找出第一次元素最小的那个索引,将最小的元素排序到元素第一个位置package main; import "fmt"; func main() { array := []int{5,4,3,21} res := selectSort(array) fmt.Println(res) } func selectSort(array []int) []int { n := len(array) fo...阅读全文
概述 用户业务在上云或者云迁移过程中,需要对镜像进行批量迁移。基于此背景,腾讯云容器专家团队开发了镜像批量迁移工具:image-transfer。该工具支持多种云厂商镜像仓库之间的批量迁移,同时支持腾讯云镜像仓库 TCR 个人版 CCR 一键全量迁移至腾讯云镜像仓库企业版 TCR。 本文首先介绍业务上云/迁移过程中镜像迁移的痛点。随后详细介绍镜像批量迁移工具 image-transfer 的设计思想,功能模块以及最佳实践。 工具已正式开源,项目地址:https://github.com/tkes...阅读全文
目标 实现指定个核心最大化使用,比如核心总数减一。 代码 package main import ( "runtime" "sync" ) var ( cpunum = runtime.NumCPU()-1 ) func main(){ ch := make(chan string) runtime.GOMAXPROCS(cpunum) wg := sync.WaitGroup{} for i := 0; i < cpunum; i++{ go WgReadLogs(ch, &wg) } wg....阅读全文
原文地址:https://dave.cheney.net/2018/01/06/if-aligned-memory-writes-are-atomic-why-do-we-need-the-sync-atomic-package 这是受到在Go论坛上一篇帖子的启发想到的问题。问题的大意是:“如果处理器保证正确对齐的写入是原子的,那么为什么还需要数据竞态检测器?” 答案是,原子这个词在这里有两种用法。第一个是OP引用的,是大多数微处理器的属性,只要写入的地址自然对齐即可,例如,如果它是32位,则始...阅读全文
项目架构设计LogAgent的工作流程:读日志 --tailf第三方库func main() {fileName := "./my.log" config := tail.Config{ ReOpen: true, // 重新打开 Follow: true, // 是否跟随 Location: &tail.SeekInfo{Offset: 0, Whence: 2}, // 从文件的哪个地方开始读 MustExist: false, // 文件不存在不报错 Poll: true, } tails...阅读全文
前言创建这个库的目的是,Go的现有库没有诸如灵活定义作业运行、批量提交任务减少小任务提交等特性。过去,可能会基于Worker池的思想创建代码,但是使用时的麻烦,从来没有一般化地创建一个完整的库。go-zero 就创建了 executors。介绍在 go-zero 中,executors 充当任务池,做多任务缓冲,使用做批量处理的任务。如:clickhouse 大批量 insert,sql batch insert。同时也可以在 go-queue 也可以看到 executors 【在 queue ...阅读全文