2022-04-17 GO做WEB服务实现文件上传功能 GO做WEB服务实现文件上传功能 GO做WEB服务实现文件上传功能直接上代码:package main import ( "fmt" "io" "log" "mime/multipart" "net/http" "os" "strconv" "strings" "time" ) //首页 func index(w http.ResponseWriter, r *http.Request) { _, err := fmt.Fprintln(w, "我是首页") if err != nil { log.Fatalln(err) } } //文件上传 func upload(w http.ResponseWriter, r *http.Request) { //读取表单中提交过来的文件,这个只能上传... 2022-04-17 GO相关 957 阅读 0 评论 2022年04月17日 957 阅读 0 评论
2022-01-25 GO语言实现二维码解码 GO语言实现二维码解码 go语言实现二维码解码直接上代码package main import ( "fmt" "github.com/tuotoo/qrcode" "io/ioutil" "log" "net/http" "os" "strings" ) func main() { qrDecode() } func qrDecode(){ var fileName string fmt.Println("\n========二维码解析【支持网络二维码】========\n") fmt.Println("文件为绝对路径【D:\\a.png】") fmt.Printf("【按Q建为退出程序】请输入文件地址:") fmt.Scanln(&fileName) if strings.ToLo... 2022-01-25 GO相关 14,421 阅读 1 评论 2022年01月25日 14,421 阅读 1 评论
2021-12-11 Golang语言中的json格式互转 Golang语言中的json格式互转 Golang语言中的json格式互转//json数据互转 package main import ( "encoding/json" "fmt" ) func main() { type Infos struct { Name string `json:"name"` Age int `json:"age"` Likes []string `json:"likes"` Jobs []struct { JobName string `json:"job_name"` JobAddress string `json:"job_address"` } `json:"jobs"` } //定义一个结构体,便于转json va... 2021-12-11 GO相关 1,050 阅读 0 评论 2021年12月11日 1,050 阅读 0 评论
2021-11-29 go module说明 go module说明 go module是什么?go module是Go语言的包管理工具,使用Go module,项目代码就不需要放在gopath下的src文件夹。go1.11出现go module,go.1.13推荐使用,go1.14版本默认使用只需要在指定的文件夹下运行,例如 demo :go mod init demo这样就可以在dome这个目录进行开发了,初始化之后会生成一个go.mod,里面记录了一些项目的环境和第三方包等安装第三方包,例如安装 gin微框架:go get -u github.com/gin-gonic/gin安装第三方包之前先修改GOPROXY这个配置,否则可能会很慢或者下载失败~,怎么修改 https://www.dcr163.cn/605.html 2021-11-29 GO相关 1,077 阅读 0 评论 2021年11月29日 1,077 阅读 0 评论
2021-11-29 golang环境修改GOPROXY为七牛云镜像,加速下载第3方包 golang环境修改GOPROXY为七牛云镜像,加速下载第3方包 golang环境修改GOPROXY为七牛云镜像,加速下载第3方包大家都知道,在我们的网络环境下都是有防火墙的,想要访问github.com是比较慢的,为了防止go开发过程中下载第3方包失败的情况,我们需要修改一下配置直接在用go运行下面的命令即可go env -w GOPROXY=https://goproxy.cn,direct 2021-11-29 GO相关 1,450 阅读 0 评论 2021年11月29日 1,450 阅读 0 评论
2021-11-29 go语言介绍 go语言介绍 Go语言为并发而生o语言(或 Golang)是Google开发的开源编程语言,诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。go是非常年轻的一门语言,它的主要目标是“兼具Python 等动态语言的开发速度和C/C++等编译型语言的性能与安全性”很多公司,特别是中国的互联网公司,即将或者已经完成了使用 Go 语言改造旧系统的过程。经过 Go 语言重构的系统能使用更少的硬件资源获得更高的并发和I/O吞吐表现。充分挖掘硬件设备的潜力也满足当前精细化运营的市场大环境。Go语言的并发是基于 goroutine 的,goroutine 类似于线程,但并非线程。可以将 goroutine 理解为一种虚拟线程。Go 语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用CPU性能。开启一个goroutine的消耗非常小(大约2KB的内存),你可以轻松创建数百万个goroutine。g... 2021-11-29 GO相关 898 阅读 0 评论 2021年11月29日 898 阅读 0 评论
2021-11-29 2020新版Go开发工程师完结视频教程 2020新版Go开发工程师完结视频教程 2020新版Go开发工程师完结阶段一:Go语言基础入门和编程思维阶段二:租辆酷车小程序与TypeScript阶段三:“租辆酷车”共享出行产品设计与研发阶段四:“租辆酷车”架构演进之高性能位置更新与服务部署阶段五:电商项目- 微服务基础阶段六:从0到1实现完整的微服务框架阶段八:分布式系统核心、微服务的部署直接上链接:链接:https://www.aliyundrive.com/s/DC3dyEFswd7 2021-11-29 日志 958 阅读 0 评论 2021年11月29日 958 阅读 0 评论
2021-11-28 golang中内置map类型使用routing报错方案笔记 golang中内置map类型使用routing报错方案笔记 golang中内置map类型使用routing报错方案笔记//gorouting中内置map类型报错笔记 package main import ( "fmt" "strconv" "sync" ) var ( wg sync.WaitGroup map1 = make(map[string]int) map2 = sync.Map{} //不需要make初始化 ) func main(){ //fatal error: concurrent map writes 使用内置的map类型,做并发的时候会报致命错误 //for i := 0; i < 20; i++ { // wg.Add(1) // go appedMap(i) //} for i := 0; i < 200; i++ { wg.Add(1) go appedSyncMap(i) ... 2021-11-28 GO相关 990 阅读 0 评论 2021年11月28日 990 阅读 0 评论
2021-11-28 golang读写互斥锁笔记 golang读写互斥锁笔记 golang读写互斥锁笔记//读写锁笔记 package main import ( "fmt" "sync" "time" ) var ( x = 0 rwlock sync.RWMutex wg sync.WaitGroup ) func main() { //开始时间 stime := time.Now() // for i := 0; i < 5; i++ { wg.Add(1) //因为写操作需要等待,所以这里会花费 5*模拟写操作需要1s 的时间 go write() } for i := 0; i < 1000; i++ { wg.Add(1) go read() //因为读操作不需要等待,所以1000次,花费的时间也是第一次读取的时间 } wg.Wait() //结束时间 eti... 2021-11-28 GO相关 980 阅读 0 评论 2021年11月28日 980 阅读 0 评论
2021-11-28 golang里的互斥锁使用 golang里的互斥锁使用 golang里的互斥锁使用package main import ( "fmt" "sync" ) var wg sync.WaitGroup var lock sync.Mutex var run int = 0 func main() { //未加锁,造成读写混乱 //wg.Add(3) //go addNum() //go addNum() //go addNum() //wg.Wait() //fmt.Println(run) //这里不是我们预期的结果3000,随机的 //加上互斥锁,解决读写混乱;将并发变成了串行,牺牲效率,保证数据安全性。 wg.Add(3) go addRun("a1") go addRun("a2") go addRun("a3") wg.Wait() fmt.Println(run) //4500 } ... 2021-11-28 GO相关 858 阅读 0 评论 2021年11月28日 858 阅读 0 评论