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

[笔记]Go语言的字符串拼装方式性能对比

Go语言中字符串的拼装方法很多,那么问题来了,到底哪家性能好? 下面代码,分别比较了 fmt.Sprintf,string +,strings.Join,bytes.Buffer,方法是循环若干次比较总时间。 在VMWare下的Ubuntu 14.04下运行的结果表明: fmt.Sprintf 和 strings.Join 速度相当 string + 比上述二者快一倍 bytes.Buffer又比上者快约400-500倍 如果循环内每次都临时声明一个bytes.Buffer来使用,会比持续存在慢50%,但是仍然很快 测试代码如下: package main import ( "bytes" "fmt" "strings" "time" ) func benchmarkStringFuncti...阅读全文

博文 2015-03-08 03:00:01 journeyonmyway

go时间比较

go中time比较时需要注意写法 package main import ( "fmt" "time" ) func main() { format := "2006-01-02 15:04:05" now := time.Now() //now, _ := time.Parse(format, time.Now().Format(format)) a, _ := time.Parse(format, "2015-03-10 11:00:00") b, _ := time.Parse(format, "2015-03-10 16:00:00") fmt.Println(now.Format(format), a.Format(format), b.Format(format)) fmt.Pr...阅读全文

博文 2015-03-10 16:00:01 beyondforever68

golang处理 json中非法字符

文: Hi there, I just discovered Go and decided to port a little program to Go. The program reads JSON-Data from an URL and process the Data. The Go port works well till now. I dont have any influence on the JSON data and so sometimes there are control character in it and my program crashes with "invalid character '\x12' in string literal" here the c...阅读全文

博文 2015-03-13 03:00:01 zhangqingping

代付系统源码(支持API代付)

下载地址 系统图截 视频教程 代付系统演示 系统说明 1. 同一账户日限额20万 2. 同一账户每日最高交易15笔 3. 支持谷歌验证器登录 4. 单笔交易最低10元,最高49999元 5. 支持商户IP白名单系统功能 1. 应用管理: 同时支持公司多个业务系统对接。 2. 商户管理: 支持商户入驻,费率设置,商户需要向平台方提供相关的资料备案。 3. 渠道管理: 支持微信、支付宝、银联、京东支付等多种渠道。 4. 账户管理: 渠道账户管理,支持共享账户(个人商户)及自有账户。 5. 支付下单: 可手动批量下单、提供退款服务。 6. 通知模块: 处理第三方支付渠道的异步通知,并将处理结果同步至业务系统。 7. 对账处理: 实现支付系统的交易数据与第三方支付渠道交易明细的自动核对(通常T+1)...阅读全文

博文 2020-02-08 01:32:43 ckakarotto

给终端来点彩色(c语言和Golang版)

如果用过AIX或Linux下的nmon工具的应当会注意到,它可以把文字显示成多种颜色,并巧妙的利用颜色和字符组合出各种图形 来显示系统的运行情况。看看它官网附的这张图: 如果你看过它的源码,你会发现它用的是 Ncurses 库来实现彩色显示的。Ncurses很强大,可以在任何遵循ANSI/POSIX标准的UNIX系统上运行, 包含了一系列强大的功能。 但在这里,它并不是我要研究的对象,它太重量级了。 我想在这说明的是一种简单的可以让终端显示彩色文本的方法。利用16进制的颜色控制符就足以在终端打印出各种颜色了。这种方法不必调用 API,使用方式也很简单,我用c语言演示下: #include int main(void) { printf("\x1b[0;%dmhello w...阅读全文

博文 2014-12-09 17:00:03 xcltapestry

Go实现线程池

本文通过代码讲解如何实现一个线程池。代码及注释如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 package main import "fmt" import "time" //这个是工作线程,处理具体的业务逻辑,将jobs中的任务取出,处理后将处理结果放置在results中。 func worker(id int, jobs <-chan int, results chan<- int) { for j := range jobs { fmt.Println("worker", id, "processing job", j) ...阅读全文

博文 2016-09-17 01:00:06 kc87654321

golang urlencode

u := url.Values{} u.Set("a", "1") u.Set("b", "2") u.Set("data", `{"sessionId":"0bts0W1DWKm70B4UZq3V1h3r2DpsbhDsc2WD","eventId":"8F2qNf0bts0W1DWKm70B4UZq3V1h3r2Dpsbh","androidId":"b22f3d41736f748c","userAgent":"Mozilla/5.0 (Linux; Android 5.1; MI PAD 2 Build/LMY47I; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Safari/53...阅读全文

博文 2017-09-27 23:30:01 kccdzz

golang append时slice len 和 cap

声明: 源slice= src 添加slice = app 结果slice=tar append时 len tar === len src + len app 1)如果len(src) + len(app) <= cap(src) cap tar = cap(src) 2)否则 a) len(src) + len(app) > 2* cap(src) cap tar = len(src) + len(app) b) cap(src) < len(src) + len(app) <= 2* cap(src) cap tar = 2* cap(src) data := make([]int, 10, 20) data[0] = 1 data[1] = 2 dataappend := make([...阅读全文

博文 2014-10-04 19:27:08 咖啡伴侣

七牛云音视频新功能:音频支持 AAC_HE

![1.png](http://studygolang.qiniudn.com/160229/ae427c76a903c127fb114c705f44f355.png) 与大家所熟知的 MP3 一样, AAC 也是一种常见的音频格式。现如今常见的 AAC 规格有三种: LC-AAC (最基本的), HE-AAC ( AACPlus v1 ), HE-AAC v2 。 HE :“ High Efficiency ”(高效性)。 HE-AAC (又称 AACPlus v1 , SBR ),用容器的方法实现了 AAC ( LC )和 SBR(频段复制)技术。 SBR 把频谱切割开来,低频单独编码保存主要成分,高频单独放大编码保存音质,在减少文件大小的情况下还保存了音质。 HEv2...阅读全文

golang map to struct

http://stackoverflow.com/questions/26744873/converting-map-to-struct func SetField(obj interface{}, name string, value interface{}) error { structValue := reflect.ValueOf(obj).Elem() structFieldValue := structValue.FieldByName(name) if !structFieldValue.IsValid() { return fmt.Errorf("No such field: %s in obj", name) } if !structFieldValue.CanSet() ...阅读全文

博文 2016-06-16 13:00:15 diegodu

go开发者工具gotool

gotool ======= gotool是一个小而全的Golang工具集,主要是将日常开发中常用的到方法进行提炼集成,避免重复造轮子,提高工作效率,每一个方法都是作者经过工作经验,和从以往的项目中提炼出来的。 ## 2021-7-9更新内容详细使用请看文档 - 添加文件IO操作工具FileUtils - 添加验证码生成工具CaptchaUtils - 添加文件目录压缩和解压缩工具ZipUtis - 字符串数组工具StrArrayUtils ### 如何使用gotool呢? ### 安装 go get github.com/druidcaesa/gotool go.mod github.com/druidcaesa/gotool ### 引...阅读全文

开源项目 2021-07-08 08:55:03

74.根路径总是被访问两次,都是favicon.ico惹出来的

在使用golang做web开发的时候,如果在根路径上直接输出内容,你会发现,你的访问总是被执行 2 次。 根路径的 handler 是这个样子的 func indexHandler(writer http.ResponseWriter, request *http.Request) { tms := time.Now().Format("2006-01-02 15:04:05.00000000") fmt.Println(tms,"Yes you in path: ",) fmt.Fprintln(writer, tms,"你正在访问的路径:index") } 可是执行效果是这样的 服务器显示 服务器显示效果 web界面显示 web界面显示 很显然,这样的服务器显示会对维护人员造成困扰。 这...阅读全文

博文 2018-10-14 00:34:39 厚土火烟

嵌入式学习的13大法则,你造吗?

![QQ截图20160909173057.png](http://studygolang.qiniudn.com/160909/bf156e01821db5bab860f038637f0bb5.png)   学习嵌入式的过程,是一个不断积累,不断实践的过程。毕竟,一名有成就的程序员不是一蹴而就的,下面是来自一个嵌入式开发高级工程师为我们总结的关于嵌入式开发学习的13大法则,大家不妨参考一下:   一、资源有限性法则   嵌入式计算不仅需要网络快速、一致的计算,而且也要求系统能够井然有序地将其执行代码和数据,存储在一个“共同”的“狭小”的空间内。   二、冗余度法则   在嵌入式系统具有足够的冗余度之后,系统的“初始敏感性”对于其“最终计算结果”的影响就变得微乎其...阅读全文

go语言实现斐波数列

斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*) 递归实现 package main import "fmt" func fibonacci(num int) int{ if num<2{ return 1 } return fibonacci(num-1) + fibonacci(num-2) } func main(){ for i := 0; i<10; i++{ nums := fibonacci(i) fmt.Println(nums) } } 闭包实现 package main import "fmt" func f...阅读全文

博文 2016-08-30 01:00:08 chenxun2009

调查显示:明年容器企业级用户将出现井喷式增长

如果调查可信的话,很多企业已经将容器技术投入使用,但这只是冰山一角,而未来几年将会迎来井喷式增长。另外值得注意的是,对于系统管理员来讲,安全仍然是最大的担忧。 容器安全公司Twistlock的一项调查显示,有将近86%的企业IT决策者表明他们已经使用容器技术,或者将在未来一年内使用容器技术。值得一提的是,这86%的调查者中,有35%表示容器技术已经在企业广泛使用。 来自ClusterHQ的调查也证实了这一点:在285名调查对象中有94%表示在过去的一年里他们要么调研过容器技术,要么已经在企业中实际使用过一些容器技术。和Twistlock调查结果稍微不同的是,有38%表示他们已经把容器投入到生产环境。但65%的人表示,到明年他们公司才会应用容器技术到生产环境。ClusterHQ 为...阅读全文

在 Golang 定时任务中判断函数是否执行完成

使用 golang 的定时任务(采用 robfig/cron 包),每 5s 调用一个函数进行处理,但是这个函数的处理可能会耗时,在没有执行完之前如果再次调用,就会导致计算结果不对。如定时任务:// 5s 定时任务 func run5Second() { spec := "*/5, *, *, *, *, *" c := cron.New() //npc刷新 c.AddFunc(spec, modelFish.NpcRefresh) c.Start() }NpcRefresh 方法定义:// NpcRefresh 返回需要刷新的NPC func NpcRefresh() { online := getOnlineRoomIds() //online := []string{"5"} fmt....阅读全文

博文 2017-06-19 14:46:54 nfwater

golang 实现递归

package main import "fmt" func Recursive(n int) int {if n == 0 {return 1}//相当于10987654321 return n Recursive(n-1)}func main() {fmt.Println(Recursive(10))} 执行结果:sf@SFdeMacBook-Pro  ~/Documents/project/src/test  go build Recursive.gosf@SFdeMacBook-Pro  ~/Documents/project/src/test  ./Recursive362880...阅读全文

博文 2018-09-21 22:36:39 IT职场小白

bytes.Join的用法

```go package main import ( "bytes" "fmt" ) func main() { hello := "hello" helloBytes := []byte( hello ) fmt.Println( helloBytes ) world := "world" worldBytes := []byte( world ) fmt.Println( worldBytes ) helloWord := [][]byte{ helloBytes,worldBytes } fmt.Println( helloWord ) helloWords := bytes.Join(helloWord,[]byte{}) fmt.Println( helloWords ) } `...阅读全文

博文 2018-09-15 09:07:13 JimPang

关于json转struct struct中有map

有这么一个json,我想直接转成struct struct ``` type whatBean struct { action string control string } ............... tmp := "{\"这个key好多\":{\"action\":\"123\",\"control\":\"456\"},\"这个key真的好多所以用map\":{\"action\":\"/roamApi/getAuthStatus.action\",\"control\":\"https://sosona.com:8443\"}}" var grid map[string]whatBean json.Unmarshal([]byte(tmp), &g...阅读全文

golang模仿tail命令,显示文件末尾指定行数的文件内容

项目中需要实现读取文件末尾指定行数的功能(类似于tail命令),就去看了一下tail命令的实现思路。然后用go语言按照思路仿写了一下。后面可以结合 https://github.com/fsnotify/fsnotify 实现日志的实时输出功能。类似于 `tail -f xxx.log`效果 ``` package main import ( "bufio" "bytes" "io" "log" "os" "strings" ) func main(){ lines := int64(200) file, err := os.Open("C:\\Users\\Administrator\\Desktop\\test.log") if err != nil { log.Println(err)...阅读全文

博文 2018-02-06 17:06:43 iuoui

用js异步提交表单后,怎么接受服务端返回的cookie

我用jqury.form.js 异步提交了一个登陆账号表单,服务端验证通过了,我写了一个cookie,返回的数据全被js拦截了,cookie也没有写到浏览器,我要怎么才能处理这个cookie呢? 下面是我的golang代码片段 ``` func loginHandler(w http.ResponseWriter, r *http.Request){ //do something // 获取表单信息 加 判断 //返回cookie SetCookie(loginInfo.username,w) http.Redirect(w, r, "/", 302) return } func SetCookie(name string, w http.Respons...阅读全文

如何深入的理解gorountine的执行效率问题?

执行环境:window7/64 , go1.4 在学习go的gorountine时执行的例子: ``` package main import "fmt" func sum(values [] int, resultChan chan int) { sum := 0 for _, value := range values { sum += value } resultChan <- sum // 将计算结果发送到channel中 } func main() { values := [] int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} resultChan := make(chan int, 2) ...阅读全文

[转]golang压缩加压

压缩文件 package main import ( "fmt" "os" "io" "archive/tar" "compress/gzip" ) func main() { // file write fw, err := os.Create("tar/lin_golang_src.tar.gz") if err != nil { panic(err) } defer fw.Close() // gzip write gw := gzip.NewWriter(fw) defer gw.Close() // tar write tw := tar.NewWriter(gw) defer tw.Close() // 打开文件夹 dir, err := os.Open("file/") if ...阅读全文

博文 2014-10-04 19:27:11 weilai

chan 的疑惑

``` package main import "fmt" func sum(values [] int, resultChan chan int) { sum := 0 for _, value := range values { sum += value } resultChan <- sum // 将计算结果发送到channel中 } func main() { values := [] int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} resultChan := make(chan int, 2) go sum(values[:len(values)/2], resultChan) go sum(values[len(...阅读全文

ldd、objdump、nm、strings、strip等工具

最近在做Docker镜像的时候发现镜像文件非常大,需要找出程序的依赖库,减少程序的大小,所以整理了一下相关的工具。基本上这些工具都在GNU Binutils中。 GNU Binary Utilities或binutils是一整套的编程语言工具程序,用来处理许多格式的目标文件。当前的版本原本由在Cygnus Solutions的程序员以Binary File Descriptor library(libbfd)所撰写。这个工具程序通常搭配GCC、make、和GDB这些程序来使用。 它包含20个左右的工具,本文介绍了我在创建Docker镜像的时候的使用的几种工具。 ldd ldd不是GNU Binutils工具集中的一个工具,但是却是一个非常有用的工具, 它可以显示程序或者共享库所需的共享库。 ...阅读全文

博文 2018-09-01 17:08:44 smallnest

如何在 Go 中优雅关闭子进程

有时我们会遇到这样的需求,在一个主进程中启动另外一个进程,而在 Go 中可以使用 exec 包的 Cmd 来轻松实现这类需求,例如代码: package main import ( "fmt" "log" "os" "os/exec" "os/signal" ) func main() { cmd := exec.Cmd{ Path: "nc", Args: []string{"-u", "-l", "8888"}, Dir: "/usr/bin", } if err := cmd.Start(); err != nil { log.Panic(err) } fmt.Println("Start child process with pid", cmd.Process.Pid) c := m...阅读全文

CUDA 及其 golang 调用 - 从入门到放弃 - 1.初见

环境: NVIDIA GeForce GTX 1050 cuda 10.2.89 windows visual studio 2017 windows SDK 10.0.14393.0 go 1.13.4 windows/amd64 我们在文件 lib.cu 中实现一个 GPU 计算的浮点数向量内积函数,以及一个 CPU 的入口函数进行数据传递和调用: __global__ void devDot(double *x, double *y, int n, double *r) { double res = 0.0; for (int i = 0; i < n; i++) { res += x[i] * y[i]; } *r = res; } extern "C" __declspec(dll...阅读全文

博文 2020-06-06 05:32:39 Platanuses

golang

Go语言教程 http://yiibai.com/go/ CMD窗口正确显示UTF-8字符 http://www.360doc.com/content/13/0424/13/2569758_280582390.shtml 在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。 如果想正确显示UTF-8字符,可以按照以下步骤操作: 1、打开CMD.exe命令行窗口 2、通过 chcp命令改变代码页,UTF-8的代码页为65001 chcp 65001 执行该操作后,代码页就被变成UTF-8了。但是,在窗口中仍旧不能正确...阅读全文

博文 2015-07-10 03:00:12 mitang

移植java web 项目到go语言要解决的一系列问题

最近想把一个java web 服务项目用go语言重写一遍,虽然go语言非常简洁易用,设计思想也非常好,但在移植过程中还是遇到了一系列的问题,先把问题列在这里,以后有时间逐个解决。 web服务器:go语言自带,很好用 mysql数据库驱动:github.com/go-mysql-driver实现了官方驱动接口,推荐使用 数据库连接池:没有合适的,自己实现一个吧 session操作库:github.com/sessions 还算好用,在不自己重写的情况下,可以使用 json操作库:go语言自带,很好用 返回固定格式的json消息:未完成 重新包装sql操作及处理结果集:未完成,下一步继续研究...阅读全文

博文 2014-12-16 10:00:13 jinciyulang

[译]REST和微服务——用异步交互分解单体系统

前段时间我大发雷霆,因为有人曲解了REST在微服务中的作用,而且没能正确使用它。有人认为无法基于HTTP进行异步交互,所以基于HTTP的单体系统无法被分解成微服务。大多数人认为HTTP就是REST,这是件让人感到悲哀的事情。在我们的行业里,这些人都是很有经验的,本该知道这两者其实是不一样的。如果你也分不清它们之间的区别,那么请先看看Rest Cookbook或者Roy博士的文章。 好吧,似乎有点跑题了,让我们回到之前说的问题上:我之所以大发雷霆,是希望把大家引导到正确的方向上,同时给大家提供一些建议。 REST和HTTP 首先,并不是说构建微服务一定要基于HTTP。关于这个,可以看看InfoQ上早前发表的一些相关文章,或者回顾过去7年我们在WildFly/EAP及其它项目上所做的事情。 HT...阅读全文

博文 2016-08-05 11:19:13 xuemingdeng

golang 文件服务器

在go语言中可以用一句代码做一个文件服务器。如果有很多文件需要通过网页来供其他人下载,可以使用这个方法。 package main import ( "log" "net/http" ) func main() { // 注意斜杠! http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(http.Dir("public")))) // 正确 //http.Handle("/", http.FileServer(http.Dir("public"))) // 正确(访问根目录时转到public目录) //http.Handle("/public", http.StripPrefix("/public", htt...阅读全文

博文 2016-11-03 11:00:02 ibgo

Go并发编程模型:pipeline和cancellation

本文是Go Concurrency Patterns: Pipelines and cancellation的读书笔记: (1)Pipeline定义: What is a pipeline? There’s no formal definition of a pipeline in Go; it’s just one of many kinds of concurrent programs. Informally, a pipeline is a series of stages connected by channels, where each stage is a group of goroutines running the same function. In each stage, ...阅读全文

computer go

这学期做了一个计算机围棋的项目,也因此自学了围棋,就程序而言虽然最后比赛结果不是很好,但仍然有了一个初步的轮廓。 先上一个程序自己跟自己下的截图 接下来我来逐步介绍一些细节,里面会涉及到很多围棋方面的知识,但大部分是简单的,因为复杂的围棋概念,例如薄厚,眼形,模样,目前还是很难用计算机程序来描述的。另外这个程序还存在一些其他更重要的问题尚未解决,下面我会一一道来。如果你有任何问题,也可以在留言中回复,我尽力回答。由于这篇文章规模巨大,再加上我一边还在重写代码,更新的进度估计很慢,我估计寒假能把这篇文章写完。 首先,读者需要建立一个这样的概念,计算机围棋的搜索空间是10^700次方,目前为止没有任何一台机器能够解决如此复杂的问题。第二,计算机围棋作为人工智能领域的著名难题,至今仍然没有超过人类...阅读全文

博文 2015-12-23 20:00:00 u012520030

Go for循环

9. 循环 循环语句是用来重复执行某一段代码。 for 是 Go 语言唯一的循环语句。Go 语言中并没有其他语言比如 C 语言中的 while 和 do while 循环。 for 循环语法 for initialisation; condition; post { } 初始化语句只执行一次。循环初始化后,将检查循环条件。如果条件的计算结果为 true ,则 {} 内的循环体将执行,接着执行 post 语句。post 语句将在每次成功循环迭代后执行。在执行 post 语句后,条件将被再次检查。如果为 true, 则循环将继续执行,否则 for 循环将终止。(译注:这是典型的 for 循环三个表达式,第一个为初始化表达式或赋值语句;第二个为循环条件判定表达式;第三个为循环变量修正表达式,即此处...阅读全文

go的临时对象池--sync.Pool

一个sync.Pool对象就是一组临时对象的集合。Pool是协程安全的。Pool用于存储那些被分配了但是没有被使用,而未来可能会使用的值,以减小垃圾回收的压力。一个比较好的例子是fmt包,fmt包总是需要使用一些[]byte之类的对象,golang建立了一个临时对象池,存放着这些对象,如果需要使用一个[]byte,就去Pool里面拿,如果拿不到就分配一份。这比起不停生成新的[]byte,用完了再等待gc回收来要高效得多。 type buffer []byte // pp是用于存储printer状态的一个结构体 type pp struct { buf buffer arg interface{} value reflect.Value fmt fmt reordered bool goodA...阅读全文

博文 2017-03-07 08:36:36 bigtom

go语言实现斐波数列

斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*) 递归实现 package main import "fmt" func fibonacci(num int) int{ if num<2{ return 1 } return fibonacci(num-1) + fibonacci(num-2) } func main(){ for i := 0; i<10; i++{ nums := fibonacci(i) fmt.Println(nums) } } 闭包实现 package main import "fmt" func f...阅读全文

博文 2016-08-30 05:00:00 chenxun2009

golang中的switch

func main(){ arr := []interface{}{true,int16(1),uint8(2),"a",uint16(3),4,int8(5),"c",1.1} for _,v := range arr { fmt.Print(v) fmt.Print(" print type ") switch v.(type){ case bool: fmt.Println("bool") continue case string: fmt.Println("string") break case uint8: case uint16: fmt.Println("uint") case int,int8,int16: fmt.Println("int") default: fmt.Pr...阅读全文

博文 2019-02-15 14:26:01 yanglikai