Go语言中文网 为您找到相关结果 67

golang文件下载

golang文件下载 func downloadFile(fileFullPath string, res *restful.Response) { file, err := os.Open(fileFullPath) if err != nil { res.WriteEntity(_dto.ErrorDto{Err: err}) return } defer file.Close() fileName := path.Base(fileFullPath) fileName = url.QueryEscape(fileName) // 防止中文乱码 res.AddHeader("Content-Type", "application/octet-stream") res.AddHeader(...阅读全文

博文 2016-11-18 08:00:03 yueguanyun

谈谈go.sum

众所周知,Go 在做依赖管理时会创建两个文件,go.mod 和 go.sum。相比于 go.mod,关于 go.sum 的资料明显少得多。自然,go.mod 的重要性不言而喻,这个文件几乎提供了依赖版本的全部信息。而 go.sum 看上去就是 go module 构建出来的天书,而不是什么人类可读的数据。 但实际上,日常开发中我们仍然不得不跟 go.sum 打交道(通常是解决这个文件带来的合并冲突,抑或试图手工调整里面的内容)。如果不了解 go.sum,只凭经验随便涂改,不一定能够改对。因此,为了更好地掌握 Go 的依赖管理,完全有必要了解 go.sum 的来龙去脉。 鉴于涉及 go.sum 的资料是如此地稀少(即使 Go 官方文档中,对于 go.sum 的描述也是支离破碎的),我花了些时间...阅读全文

博文 2019-12-27 22:32:41 spacewander

IE 11下载文件中文乱码解决(go/php)

IE 11下载文件的时候发现乱码. 网上查了下资料,了解了一下,主要是user-agent变了,不再是MSIE,面是rv:11.0这样,所以只要服务端判断出是IE 11,处理跟MSIE一样。 GO: func setDownloadFileName(w http.ResponseWriter, fileName, agent string) { if strings.Contains(agent, "MSIE") { fileName = url.QueryEscape(fileName) fileName = strings.Replace(fileName, "+", "%20", -1) } if strings.Contains(agent, "rv:") && strings.Co...阅读全文

博文 2016-04-07 21:00:06 rariki

golang 数组 slice 乱序

数组乱序 方法1.sliceOutOfOrder 选定随机数r 将下标r和下边i交换,i– ,就是和当前最后一位交换 方法2.rand.Perm(数组长度) 将原数组下标按照随机出来的数据赋值给另一数组 package main import "fmt" import "math/rand" import "time" var ( rr = rand.New(rand.NewSource(time.Now().UnixNano())) a1 = [2]int{} a2 = [10]int{} ) func main() { a := []int{0, 1} for i := 0; i < 10000; i++ { randslice() //fmt.Println(rr.Intn(10)) ...阅读全文

博文 2015-10-20 18:00:37 csapr1987

golang截取中文字符串

1.问题: 在golang中可以通过切片截取一个数组或字符串,但是当截取的字符串是中文时,可能会出现的问题是:由于中文一个字不只是由一个字节组成,所以直接通过切片可能会把一个中文字的编码截成两半,结果导致最后一个字符是乱码。 例如: 想要截取前四个字 name := "我是胡八一" fmt.Println("name[:4] = ",name[:4]) 执行后得到的结果会是这样的: name[:4] = 我? 2.解决方法: 先将其转为[]rune,再截取后,转会string nameRune := []rune(name) fmt.Println("string(nameRune[:4]) = ",string(nameRune[:4])) 运行结果: string(nameRune[:4...阅读全文

博文 2016-04-09 17:00:06 vrinux

goLang的前景

今天听了csdn的go语言培训,虽然进入会场的时间比较晚了,听了半个小时吧, 讲师讲的很好,先谢谢讲师 总之听起来go的前景一片大好呀,现在go的关注度也越来越高 从分布式计算,网站后台,gui程序,等等等等,很多地方go都可以胜任,并且性能也比较好,值得学习 不过就最近来讲,go的招聘信息的确不是很多,依然是java,c++,ios的天下,虽然现在已经有很多公司再用go完成一些项目了, 我自已现在也从事的是java开发的工作,提升java技能的同时,继续保持关注和学习go吧 最近大家关注go的程度真是越来越高了,随然我没有什么朋友在从事go的工作, 听讲师说go1.4以后也支持android开发了,非常期待。。 http://wenku.baidu.com/view/9321fb22316...阅读全文

博文 2015-12-11 19:00:01 threeyax

布隆过滤器

这篇文章可能涉及到一些拓扑知识,可以参考之前的文章: 常见哈希函数FNV和MD5 Golang binary包——byte数组如何转int? 布隆过滤器的原理不算复杂。对数据进行查找,简单点的可以直接遍历;对于拍好顺序的数据,可以使用二分查找等。但这些方法的时间复杂度都较高,分别是O(n)和O(logn)。无法对大量乱序的数据进行快速的查找。 哈希,将给定的数据通过哈希函数得到一个唯一的值,此值可以作为数据的唯一标识,只要通过该标识,再通过哈希函数逆向计算,就能还原出来原始的数据。在前面的网址压缩的调研分析里面介绍的压缩网址的方法,其实也就是一种哈希,只不过借助了数据库的支持。 布隆过滤器就是借助了哈希实现的过滤算法。通过将黑名单的数据哈希之后,可以得到一个数据。申请一个数组空间,长度是黑名...阅读全文

GO request 库 返回结果 乱码

package main import ( "compress/gzip" "fmt" "io" "io/ioutil" "net/http" "reflect" "github.com/mozillazg/request" ) func test1(url string) (bt []byte, err error) { testResp, err := http.Get(url) if err != nil { return } bt, err = ioutil.ReadAll(testResp.Body) return } func test2(url string) (bt []byte, err error) { c := new(http.Client) req := reque...阅读全文

博文 2016-08-29 12:00:03 yjnic

Go中字符串的遍历

首先说一下go中的字符串类型: 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。 Go语言的字符串的字节使用UTF-8编码标识Unicode文本,这样Golang统一使用UTF-8编码,中文乱码问题不会再困扰程序员。 字符串一旦赋值了,字符串就不能修改了:在Go中字符串是不可变的。 下面介绍字符串的三种遍历方式,根据实际情况选择即可。 常规遍历方式: var str = "Hello world!" for i := 0; i < len(str); i++ { fmt.Printf("str[%d]=%c\n", i, str[i]) } 运行结果: image 该遍历方式==缺点==:遍历...阅读全文

博文 2018-07-16 20:34:48 波涛澎湃

golang 导出数据到csv文件

```go // 导出设备列表信息到csv func (ba *businessActor) ExportDeviceListInfo(deviceList []device.AllDevice, filename string) error { // 创建文件 newFile, err := os.Create(filename) if err != nil { return errors.Wrap(err, "创建文件失败") } defer func() { newFile.Close() }() // 写入UTF-8 newFile.WriteString("\xEF\xBB\xBF") // 写入UTF-8 BOM,防止中文乱码 // 写数据到csv文件 w := csv.NewW...阅读全文

博文 2018-05-31 11:00:49 18393910396

golang遇到的win下读取txt字符乱码的问题

import ( "encoding/csv" "os" "github.com/axgle/mahonia" ) // GetCSV 读取csv文件. func GetCSV(csvPath string) [][]string { file, err := os.Open(csvPath) if err != nil { glog.Error("Error when open file in GetCSV():", err) return nil } defer file.Close() decoder := mahonia.NewDecoder("gbk") // 把原来ANSI格式的文本文件里的字符,用gbk进行解码。 // r := csv.NewReader(file) r :=...阅读全文

博文 2016-06-15 09:00:00 xiaouisme

Golang 下载文件

这里使用net/http下载文件,可以设置Content-Type(具体参考)告诉客户端返回的内容类型实际上是什么,实现不同方式的文件的下载。 示例 package main import ( "fmt" "io/ioutil" "net/http" "net/url" "os" ) func main() { http.HandleFunc("/", downloadHandler) // 设置访问路由 http.ListenAndServe(":8080", nil) } func downloadHandler(w http.ResponseWriter, r *http.Request) { r.ParseForm() //解析url传递的参数,对于POST则解析响应包的主体(req...阅读全文

博文 2019-08-27 16:02:49 guyan0319

autogo的使用

请问有人用过polaris大的autogo吗...按readme 说的一步步操作不成功啊...cmd上又显示不了提示(乱码) 我的目录结构是这样的. E:\work\jxc\src\test\test.go E:\work\autogo\ test.go就是github.com/polaris1119/autogo上readme 那的例子... 在文件头加了句package main 修改了E:\work\autogo\config\projects.json 内容为 [ { "name": "jxc", "root": "../jxc", "go_way": "inst...阅读全文

使用cpu的时钟周期作为随机数发生器的种子

对于一个伪随机数发生器来说,种子的设置是非常重要的;Go语言runtime中的每个线程也有自己的一个随机数发生器,当然也是伪的,这个伪随机数发生器的种子设置采用了另外一种方法——使用了cpu的时钟周期计数器。 go语言的实现采用了一段汇编代码读取cpu的cycle信息,如下: TEXT runtime·cputicks(SB),7,$0 RDTSC SHLQ $32, DX ADDQ DX, AX RET 这段汇编代码的语法好像有点奇怪,和平时常见的AT&T语法有那么一点不同;确实,Go语言有一套自己的编译器,汇编器当然也是自己的了。这套编译器其实是Plan9平台上的玩意,个人觉得这汇编语法更顺眼一点,相比AT&T来说。 这里采用汇编实现的函数runtime·cputicks,第一条就是rd...阅读全文

博文 2014-12-21 14:51:03 skoo

[go]linux环境中文乱码问题

之前一直在windows下测试go代码,保存为utf-8,就可以正常显示中文. 迁移到linux后发现中文无法正常显示. 搜索了一下类似问题几乎没有. 测试发现是使用终端的问题. 我一直用的secure crt4.0, 懒得升级.但是4.0版本没有设置字符集的功能 换成putty就没问题了 下载了一个7.0的便携版的crt,把字符集设置成utf-8也可以了. cat和more显示都无问题(LANG=en_US也可以) 因为go必须是utf编码,所以使用vim要设置一下.vimrc set termencoding=utf-8 set fileencodings=ucs-bom,utf-8,cp936 set fileencoding=utf-8 set encoding=utf-...阅读全文

博文 2015-06-18 09:09:20 laputa73

golang发送邮件以及附件

最近工作上有个需要发送邮件的需求,所以研究了下golang怎么发送邮件,这里记录下。 这里推荐一个第三方库 go get -v github.com/jordan-wright/email 之前也研究了官方库net/smtp,以及其他第三方库如gomail但是都不符合我的开发需求,使用的这个第三方库完美的解决了需求。 下面写个例子,演示一下 email 第三方库的使用,以及使用自定义模板发送邮件 首先在同级目录创建email-template.html,main.go两个文件。 // email-template.html

亲爱的{{.ToUserN...阅读全文

博文 2018-12-28 19:34:44 Sixah

go.mongodb.org bson.M{}使用排序的坑

起因今天一位朋友问了我一个问题 他说多字段排序有问题 乱序 而我也是模棱两可 最后自己做了一个测试 记在这里 深化了一下学习成果。正文使用排序时不能使用bson.M{}去排序否则排序结果是和预期结果有差异的原因:底层的结构是Map结构 在golang中map值是无序的 而排序是根据字段值的先后顺序优先级进行排序 所以排序取值的时候就是乱序的 所以会造成乱序 测试使用元数据 已经明确提示 已经明确提示 黄色框为 非预期值 既然是无序的那么我们弄成有序的,恰好jdk已经为我们提供了方法 只需要换成bson.D{}即可, 至于原理底层是切片类型。 E类型的切片map 正确结果 总结bson.M{}进行排序不是不可以使用,在只有一个字段排序的情况下还是能使用的。当大于等于两个字段值以上的时候就会有乱...阅读全文

博文 2019-12-18 20:32:43 chaunsin

GO 在window 64bit的下的常见问题(一)

安装 1. GO 无法识别 D:\install\GO112\test>D:\install\GO112\bin\go.exe run helloworld.go package runtime: cannot find package "runtime" in any of: c:\go\src\pkg\runtime (from $GOROOT) ($GOPATH not set) 解决方法: 安装window版的GO,会运行不起来GO,请配置 GOPATH = $GOROOT/bin - go run $GOROOT/test/helloword.go 2. 中文在CMD中显示乱码: 解决方法: 在CMD窗口无法正常显示中文: - chcp 65001 - 属性->字体->选择Luci...阅读全文

博文 2015-08-10 01:00:00 u010567180

深入内核架构--内存屏障

简介 之前在看golang gc、java gc及volatile 可见性的时候,经常会看到内存屏障,但是对于其基本原理似懂非懂,也对于内存屏障是如何保障多个CPU之间的数据可见性保持好奇,网上的博客基本上只是停留于表面,导致我产生了几个误区: 1. CPU之间内存数据可见性问题是由于cpu cache没及时同步数据导致的。 2. 内存屏障为啥能通过防止指令重排序,就能让cpu cache及时同步数据? 不过最近发现这只是表面现象!所以今天写一下这篇文章来彻底介绍一下内存屏障 CPU cache 虽然内存可见性问题不是直接由cpu cache导致的,还是与cpu cache是有密切联系的,所以我们先来简单介绍一下cpu cache。 在我之前的文章中有提到内核对于小块内存是通过slab来管理...阅读全文

Go 内存模型和Happens Before关系

Happens Before 是内存模型中一个通用的概念,Go 中也定义了Happens Before以及各种发生Happens Before关系的操作,因为有了这些Happens Before操作的保证,我们写的多goroutine的程序才会按照我们期望的方式来工作。什么是Happens Before关系Happens Before定义了两个操作间的偏序关系,具有传递性。对于两个操作E1和E2:如果E1 Happens Before E2, 则E2 Happens After E1;如果E1 Happens E2, E2 Happens Before E3,则E1 Happens E3;如果 E1 和 E2没有任何Happens Before关系,则说E1和E2 Happen Concur...阅读全文

博文 2018-08-11 22:31:20 hsiafan

帮忙看一下代码的执行乱序

输入内容,并将输入的内容传输至网络服务端。但是目前的代码,cmd.go中的Execmd函数,从打印的日志来看,dealConn函数输入内容后会执行2次。 main.go ```go package main import ( "fmt" "github.com/client/cmd" "net" "os" "github.com/spf13/cobra" ) const version = "1.0.0" var address string var versionFlag bool var conn net.Conn var RootCmd = &cobra.Command{ Use: "client", RunE: exec...阅读全文

win命令行程序在使用more参数后,输出变化了是什么原理?

请教各位高手1个问题。 我用go写了个简单的ls命令,用kernel32.dll中的SetConsoleTextAttribute设置可以有颜色,但是如果使用了more命令后,输出的颜色没有了,而且输出中文也会乱码,请问这是什么原理? 谢谢了。 ![alt 文本](http://a2.qpic.cn/psb?/3d512566-ae8e-48cc-b028-f71e76c716a1/11Q1aag6plv4iRNkGLUDr6K320JtwaSVI7wxKEMYLz4!/b/dOIAAAAAAAAA&bo=TwTUAAAAAAABB78!&rf=viewer_4...阅读全文

go map操作需要注意的地方

map 数据直接赋值,或者作为函数参数传递时是 指针传递, 修改其中一个则会修改全部变量数据 func main() { var s_map = make(map[int]int) for i := 0; i <= 5; i++ { s_map[i] = i } fmt.Println(s_map) s_map2 := s_map s_map2[10] = 100 fmt.Println(s_map) fmt.Println(s_map2) test_map(s_map) fmt.Println(s_map) fmt.Println(s_map2) } 输出: map[0:0 1:1 2:2 3:3 4:4 5:5] map[0:0 1:1 2:2 3:3 4:4 5:5 10:100] m...阅读全文

博文 2014-10-04 19:26:44 984195889

go语言操作mysql数据库问题

hi 我用github.com/Go-SQL-Driver/Mysql操作mysql 例子参照go web 编程教程 增改删按顺序操作没问题,但是只修改就报错,求助大神是什么原因造成的? 报错信息: .\test.go:47: undefined: stmt .\test.go:48: undefined: res .\test.go:48: undefined: stmt .\test.go:49: undefined: res //代码如下: package main import ( "database/sql" "fmt" _ ...阅读全文

golang channel string 信号乱码

因golang代码编写是允许在同一个for select代码结构中使用相同的变量名,这样会造成运行时chan发送的内容出现乱码现象,乱码率大概在98%左右,所以这是一个坑,希望大家别重复踩坑。以下是代码说明:var DelHubs chan string = make(chan string)var DelHub chan string = make(chan string)go func() { Deller.DelHub <- key}() //会出现乱码的代码,我在两个不同的chan中定义并使用了两个相同命名的变量,这就是造成乱码问题所在func delChan() { for { select { case ukey, ok := <-Deller.DelHubs: if ok { ...阅读全文

博文 2016-07-24 12:00:00 jacle169

Ubuntu 下 nginx , php , mysql 和 golang 的简单安装

我是搞php出身,自然安装lnmp是常规技能。以前的手段还是lnmp安装包,比如军哥的lnmp1.0。随着php和mysql的更新,大多数一键安装都开始版本老化,更新困难的问题。因此,重新研究了一下Ubuntu下lnmp的安装,发现现在简单的多,记录一下。 另外最近在学习golang,Ubuntu下安装自然也是必须的过程。不过golang的安装也有一些奥妙。当然,不是源码安装的啦。 Nginx Stable/Development Ubuntu下的包管理器是apt-get或者说dpkg。常规的安装命令apt-get install(注意权限sudo apt-get install)。Nginx是这几个软件里最友好的,直接可以添加stable源: add-apt-repository ppa:...阅读全文

博文 2014-10-04 19:26:42 傅小黑

go 处理zip解压时乱码问题

问题 go语言自带的zip包可以解压zip文件 然而,如果你用winrar压缩成zip后。再用go去解压会发现文件名称是乱码。 而当你使用一众国产压缩软件压缩后再解压却不是乱码。 原因 winrar压缩时,默认采用本地编码方式来进行压缩。 在中国,本地编码方式一般是GBK。 而我们知道go语言字符串都是utf-8格式的,所以有可能出现乱码的情况。 image.png 解决方案 判定文件名编码方式,如果为GBK则转换GBK=》utf-8 由上面图片我们知道如果flags字段11bit为为1则是utf-8编码。0位本地编码 代码 代码中要用到如下两个包 "golang.org/x/text/encoding/simplifiedchinese" "golang.org/x/text/transf...阅读全文

博文 2019-06-21 21:32:41 丶赤水断

并发与锁

并发与锁 JUC AQS AQS整体结构 锁的获取过程 CAS rote 回转数的问题 获取失败挂起的过程 释放锁唤醒等待的过程 如何防止丢失唤醒 入队时不能“贪睡”,找可靠等待者并让他叫醒自己,不在进而就获取锁,其他所有情况都告诉标记前驱别忘了叫醒自己 这就够了吗,显然还不行;满足自己去“睡”的条件的check和“睡”显然不是一个原子操作。在check后和“睡着”前如果条件变了就没人叫醒 unpark和park早就预防相关问题,猜想内部是有变量记忆了上次的操作后状态,同时基于操作系统提供的锁保证了原子性 如何防止惊群问题 锁的唤醒通常是有唤醒一个等待线程和唤醒全部等待线程的;通常在编程条件下如果想减少全部唤醒的引发不必要的竞争时,还要注意虚假 唤醒问题,被唤醒的线程如果条件不满足条件释放锁...阅读全文

博文 2018-08-05 22:34:50 七赤九紫星

[golang] 数据结构-堆排序

接上文 树形选择排序上篇也说了,树形选择排序相较简单选择排序,虽然减少了时间复杂度,但是使用了较多空间去储存每轮比较的结果,并且每次还要再和胜出节点比较。而堆排序就是为了优化这个问题而在1964年被两位大佬发明。 原理首先有几个关于树的定义: 如果一棵树每个节点的值都大于(小于)或等于其字节点的话,那么这棵树就是大(小)根树如果一棵大(小)根树正好又是完全二叉树,则被称为大根堆(小根堆) 堆排序就是利用大根堆(小根堆)的特性进行排序的。从小到大排序一般用大根堆,从大到小一般用小根堆。 流程 先把待排序的数组8、4、12、7、35、9、22、41、2用完全二叉树表示 按大根堆的特性把这个完全二叉树从最后一个非叶子节点开始比较,把较大值交换到当前位置。遇到上层节点顺序影响下层节点不满足大根堆特性...阅读全文

博文 2018-07-19 23:35:47 NicoChen

go语言接收c语言消息中文乱码问题

`import:”github.com/axgle/mahonia” enc := mahonia.NewDecoder(“gb18030”) goStr:= enc.ConvertString(cStr) fmt.Println(goStr)` 强大的VS!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

    ').addClass('pre-numbering').hide(); $(this).addClass('has...阅读全文

博文 2016-10-31 03:00:02 MR1269427885

Go语言之rune

自公众号:“灰子学技术”,原文链接:https://mp.weixin.qq.com/s/Q5RPN0NUmAQzs3o2Tw7HXg本章算是Go语言中的一个小知识点,很简单,了解就好。1. rune类型rune类型是Go语言中的一个基本类型,其实就是一个uint32的别名,主要用于表示一个字符类型大于一个字节小于等于4个字节的情况下,特别是中文字符,定义如下所示:rune is an alias for int32 and is equivalent to int32 in all ways. It is used, by convention, to distinguish character values from integer values.type rune = int32备注:...阅读全文

博文 2020-01-08 10:02:08 ZhDavis

Go Select的实现

select语法总结 select对应的每个case如果有已经准备好的case 则进行chan读写操作;若没有则执行defualt语句;若都没有则阻塞当前goroutine,直到某个chan准备好可读或可写,完成对应的case后退出。 Select的内存布局了解chanel的实现后对select的语法有个疑问,select如何实现多路复用的,为什么没有在第一个channel操作时阻塞 从而导致后面的case都执行不了。为了解决疑问,对应代码看一下汇编调用了哪些runtime层的函数,发现select语法块被编译器翻译成了以下过程。 创建select–>注册case–>执行select–>释放select 12345select { case c1 <-1: // non-blocking c...阅读全文

博文 2017-12-26 03:25:43 nino's blog

Go字符集编码转换

title: Go字符集编码转换 tags: Go 背景 从文本中读取内容的时候发现中文乱码 问题:在 Golang 的调试过程中出现中文乱码 原因:Golang 默认不支持 UTF-8 以外的字符集 解决:将字符串的编码转换成UTF-8 前提 首先我们需要使用mahonia 这个包,可以使用命令安装。 go get github.com/axgle/mahonia 使用方法 导入mahonia import "github.com/axgle/mahonia" 编写以下函数 func ConvertToString(src string, srcCode string, tagCode string) string { srcCoder := mahonia.NewDecoder(srcC...阅读全文

博文 2019-03-28 20:34:43 Clown95

golang学习笔记之-采集gbk乱码的问题?

package main import ( "bufio" "fmt" "golang.org/x/net/html/charset" "golang.org/x/text/transform" "io" "io/ioutil" "net/http" ) func DetermineEncoding(r io.Reader) []byte { OldReader := bufio.NewReader(r) bytes, err := OldReader.Peek(1024) if err != nil { panic(err) } e, _, _ := charset.DetermineEncoding(bytes, "") reader := transform.NewReader(Old...阅读全文

博文 2019-02-18 19:34:44 Maggie_up

golang导出csv乱码解决方法

golang导出csv乱码解决方法: 在csv文件的开头写入 UTF-8 BOM // 创建文件 dstf, err := os.Create(``"./data/" + fileName) defer dstf.Close() if err != nil { beego.Error(``"create file error: " + err.Error()) return ""``, err } `dstf.WriteString(``"\xEF\xBB\xBF"``)` `// 写入UTF-8 BOM,防止中文乱码` `// 写数据到文件` `w := csv.NewWriter(dstf)` `w.Write([]string{``"开始时间:"``, model.StartTime}...阅读全文

博文 2019-12-25 21:33:44 流浪猫吗