Golang 实现Socket服务端和客户端使用TCP协议通讯

Socket服务器是网络服务中常用的服务器。使用go语言实现这个业务场景是很容易的。这样的网络通讯,需要一个服务端和至少一个客户端。我们计划构建一个这样的通讯工程。服务端...

聊聊Golang中很好用的viper配置模块

前言viper 支持Yaml、Json、 TOML、HCL 等格式,读取非常的方便。安装go get github.com/spf13/viper如果提示找不到golang.org/x/text/这个库,是因为golang.org/x/text/这个库...

如何使用go-zero开发线上项目

前言​说在最前面,我是一个外表谦让,内心狂热,外表斯文,内心贪玩的一个普通人。我的职业是程序员,是一个golang语言爱好者,一半是因为golang好用,一半是因为其他语言学不好。...

Go外部依赖包从vendor,$GOPATH和$GOPATH/pkg/mod查找顺序

vendorvendor概念最早是由Keith提出,用来存放依赖包。在版本1.5出现。例如gb项目提供了一个名为gsftp的示例项目,它有一个gsftp程序,在标准库之外有三个依赖项。golang.org/x/c...

Golang 实现分片读取http超大文件流和并发控制

分片读取http超大文件流Golang中的HTTP发送get请求,在获取内容有两种情况。Golang发送http get请求方式resp, err := http.Get(sendUrl)if err != nil { fmt.Println("出错",...

使用go求幂的几种方法小结

我就废话不多说了,大家还是直接看代码吧~/** 二分幂法 求x^n */// 求整数幂package mainimport ( "fmt" "math")func main() { var x float64 var n int fmt.Scanf("%f...

Golang二进制文件混淆保护操作

Go实在是太棒了。一处编译,处处运行,没有依赖,毫无麻烦!不过麻烦的事情来了。我们写一个程序,就是想在别人的电脑上运行的。然而,Go语言的默认机制,会泄漏我们的一些信息,虽然不多,但...

如何用go-zero 实现中台系统

最近发现golang社区里出了一个新星的微服务框架,来自好未来,光看这个名字,就很有奔头,之前,也只是玩过go-micro,其实真正的还没有在项目中运用过,只是觉得 微服务,grpc 这些很高大尚...

golang实现ftp实时传输文件的案例

一、项目简介本项目主要实现的功能是ftp客户端不断地将xml文件和jpg文件实时地上传到服务器,当然也可以是其他格式的文件。每当ftp客户端取到一个文件之后,将文件上传到服务器...

解决golang http.FileServer 遇到的坑

上次写了一个2行实现一个静态服务器的文章今天群里有个哥们是这么写居然返回的是404 见鬼了嘛??http.handle("/js", http.FileServer(http.Dir("js"))http.ListenAndServe("80...

Golang 运算符及位运算详解

什么是运算符?运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”。在vb2005中运算符大致可以分为5种类型:算术运算符...

Go语言实现牛顿法求平方根函数的案例

牛顿法求平方根原理计算机常用循环来计算F的平方根.从某个猜测的x值开始,根据x^2与F的近似度来调整x,产生一个更好的猜测:x -= (x * x - F) / (2 * x)重复调整过程,猜测的结...

Golang Socket Server自定义协议的简单实现方案

在Server和Client通讯中,由于网络等原因很可能会发生数据丢包的现象。如果数据缺失,服务端接收的信息不完整,就会造成混乱。我们需要在Server和Client之间建立一个通讯协议,通过...

在go文件服务器加入http.StripPrefix的用途介绍

例子:http.Handle("/tmpfiles/", http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))当访问localhost:xxxx/tmpfiles时,会路由到fileserver进行处理当访问U...

golang xorm日志写入文件中的操作

golang访问数据库记录SQL语句:使用的包为:1:github.com/arthurkiller/rollingwriter //写入日志包2: github.com/go-xorm/xorm //xorm包具体实现为:package main import ( "time"...

golang中xorm的基本使用说明

简单的用法package main import ( _ "github.com/go-sql-driver/mysql" "github.com/go-xorm/xorm" "log") //定义结构体(xorm支持双向映射)type User struct { User_id int...

golang 结构体初始化时赋值格式介绍

golang在给结构体赋值初始值时,用:分割k,v值 x := ItemLog{ Id: GetUuid(), ItemId: u.Id, UsrId: "123", Name: u.Name, Price: u.Price, Desc: u...

golang时间字符串和时间戳转换的案例

1. 获取当前时间字符串和时间戳package mainimport ( "fmt" "time")func main() { now := time.Now().UTC() // 显示时间格式: UnixDate = "Mon Jan _2 15:04:05 MST 200...

浅谈golang for 循环中使用协程的问题

两个例子package main import ( "fmt" "time") func Process1(tasks []string) { for _, task := range tasks { // 启动协程并发处理任务 go func() { fmt.Printf("Worker...

golang连接kafka消费进ES操作

1.首先初始化conf配置把kafka和ES的地址配置好还有一个日志方便查看配置信息如下 用到的库是github.com/astaxie/beego/config[logs]log_level = debuglog_path = "./logs/l...

golang xorm及time.Time自定义解决json日期格式的问题

golang默认的time.Time类型在转为json格式时不是常用的2019-05-08 10:00:01这种格式,解决办法是自定义一个时间类型,例如type myTime time.Time ,然后针对myTime实现Marshaler...

go语言的初始化顺序,包,变量,init详解

依次见例子代码:p1.gopackage p1import "fmt" //1.1var x float32 = 1.2 //1.2func init() { //1.3 fmt.Printf("p1 package, x:%f\n", x) //1.4}func Donothing() { fmt.P...

浅谈golang结构体偷懒初始化

运行一段程序,警告:service/mysqlconfig.go:63::error: golang.guazi-corp.com/tools/ksql-runner/model.CreatingMysqlMongodbRecord composite literal uses unkeyed fields...

golang time包做时间转换操作

Time类型Now方法表示现在时间。func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time返回现在的时间,func (t Time) Unix() int64将时间转...

如何判断Golang接口是否实现的操作

前言在看一个底层库的的时候,看到了一个比较奇怪的写法,于是乎有了本文。主要探讨两个问题:1.利用编译来判断Golang接口是否实现2.延伸出的make和new的区别正文1.利用编译来判...

Golang之defer 延迟调用操作

前言defer语句被用于预定对一个函数的调用。我们把这类被defer语句调用的函数称为延迟函数。而defer 延迟语句在其他编程语言里好像没有见到。应该是属于 Go 语言里的独有的...

浅谈golang类型断言,失败类型断言返回值问题

失败的类型断言,返回的值为最近断言类型的零值代码入下:func main() { var data interface{} = "ehoo" if res, ok := data.(int); ok { fmt.Printf("int res:%d\n", res) } e...

golang 字符串切片去重实例

实现目的:实现字符串切片去重,只是两个字符完全相同时,去除一个。实现方式:考虑两种,一种是常规的双重循环去除,另一种是利用map的key的唯一性实现。1、通过双重循环来过滤重复元...

浅谈golang并发操作变量安全的问题

我就废话不多说了,大家还是直接看代码吧~package main import ( "fmt" "time" "sync" "sync/atomic") func main() { test1() test2()} func test1() { var wg sync.WaitGrou...

快速解决Golang Map 并发读写安全的问题

一、错误案例package mainimport ( "fmt" "time")var TestMap map[string]stringfunc init() { TestMap = make(map[string]string, 1)}func main() { for i := 0; i < 1000...

golang执行命令操作 exec.Command

我就废话不多说了,大家还是直接看代码吧~cmd := exec.Command("cmd") in := bytes.NewBuffer(nil) cmd.Stdin = in//绑定输入 var out bytes.Buffer cmd.Stdout = &out //绑...

go语言实现接口查询

一句话总结:如果接口A实现了接口B中所有方法,那么A可以转化为B接口。package optionstype IPeople interface { GetName() string}type IPeople2 interface { GetName() strin...

Golang获取目录下的文件及目录信息操作

一、获取当前目录下的文件或目录信息(不包含多级子目录)func main() { pwd,_ := os.Getwd() //获取文件或目录相关信息 fileInfoList,err := ioutil.ReadDir(pwd) if err !=...

golang将切片或数组根据某个字段进行分组操作

我就废话不多说了,大家还是直接看代码 吧~package mainimport ( "fmt" "sort")type Person struct { Name string Age int}func main() { p1 := Person{"Tom",20} p2 := Pers...

以alpine作为基础镜像构建Golang可执行程序操作

Alpine介绍Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上...

golang 解析word文档操作

baliance/gooxmlgooxml是可以对整个office document提供支持的golang库,功能很强大,这里简单给出对word文档的读取案例安装go get baliance.com/gooxml/go build -i baliance....

golang 64位linux环境下编译出32位程序操作

目标:在64位linux系统上编译出32位程序。操作:1.执行 go env 查看当前go环境配置2.执行 export GOARCH=386 配置go输出系统平台为32位3.go build 编译程序4.使用file main 指...

解决Golang map range遍历结果不稳定问题

闲言少叙,本文主要是想介绍一个Golang开发常见的一个问题。然而,此问题对于初学者来说却经常容易陷入坑中。问题我在写一段代码时,使用了Golang的map数据结构,目的是想用map缓存...

golang等待触发事件的实例

我就废话不多说了,大家还是直接看代码吧~type Wait interface { // Register waits returns a chan that waits on the given ID. // The chan will be triggered when Trigg...

Golang中的path/filepath包用法

path/filepath包下的相关函数1. ToSlash函数func ToSlash(path string) string功能:将path中平台相关的路径分隔符转换成'/'例如:windows当前路径: D:\gopro\src\study,转换之...

golang-redis之sorted set类型操作详解

1:安装redigogo get github.com/garyburd/redigo/redis2:引用redigoimport ( "github.com/garyburd/redigo/redis")3:连接Redisc, err := redis.Dial("tcp", "192.168.2.225:63...

golang移除数组中重复的元素操作

我就废话不多说了,大家还是直接看代码吧~方法一://这种发放适用于string,int,float等切片,会对切片中的元素进行排序func SliceRemoveDuplicates(slice []string) []string {...

Go 修改map slice array元素值操作

在“range” 语句中生成的数据的值其实是集合元素的拷贝。它们不是原有元素的引用。这就意味着更新这些值将不会修改原来的数据。我们来直接看段示例:package mainimport "fm...

解决golang sync.Wait()不执行的问题

goroutine 似乎不用解释太多,可以利用它实现多线程,也可以利用它来实现异步事件。在使用关键字go的过程中,常常会将用到sync.WaitGroup,如下一段代码。package mainimport ( "fm...

golang 实现每隔几分钟执行一个函数

1、使用定时器2、使用这种方式go function() func function() { // TODO 具体逻辑 // 每5分钟执行一次 time.AfterFunc(5*time.Minute, function)}补充:Golang:每天零点定时...

golang定时器和超时的使用详解

我就废话不多说了,大家还是直接看代码吧~func main() { var a chan string a =make(chan string) go sendDataTo(a) go timing() getAchan(10*time.Second,a)}func send...

golang逐行读取文件的操作

我就废话不多说了,大家还是直接看代码吧~func ReadLine(fileName string) ([]string,error){ f, err := os.Open(fileName) if err != nil { return nil,err } buf := bufio...

GO语言开发环境搭建过程图文详解

一.GO语言开发包1.什么是GO语言开发包go 语言开发包其实是对go语言的一种实现,包括相应版本的语法, 编译, 运行, 垃圾回收等, 里面包含着开发 go 语言所需的标准库, 运行时...

golang 字符串拼接性能的对比分析

背景最近在做一个服务发现/注册的agent, 各个服务需要通过这个agent来注册自己的服务,在完成开发后,测试性能时发现性能达不到要求,通过pprof 来确认cpu主要耗费在gc上,分析结果...

Go 自定义error错误的处理方法

Go的error比较灵活.但是自身对error处理的机制有不太好用,我们可以自定义错误输出:
只要所有实现了Error()方法的对象都可以, 这里给个比较简单的demo,后续整理一个error的...

返回顶部
顶部