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

[笔记]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

代付系统源码(支持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

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

嵌入式学习的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

为什么程序员适合做自由职业者

为什么程序员适合做自由职业者 官网“:www.yunzujia.com/?res=golang1 你也想开一个咖啡馆? 谈到梦想的时候,很多人会说:“想开个自己的咖啡馆/餐厅/奶茶店/旅馆”。 有人分析过,梦想之所以惊人相似,其实是因为大家有共同的诉求: 1、有份收入; 2、入门简单; 3、自己做主; 4、美美哒; 5、面向流动人群。 人们都向往自由的生活,钱够花就行,希望享受闲暇,认识更多有趣的朋友,做一个自由职业者。 生命不息,加班不止 有钱但忙到死,有趣但穷到哭,有空但无聊得要命,都不算一个好状态。如果没钱没时间又无聊,真的是生不如死。然而,程序员就是过着这样的生活... 大多数程序员从事业务或信息系统这样低技术含量...阅读全文

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...阅读全文

用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) ...阅读全文

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(...阅读全文

如何在 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

移植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

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

H5响应式网站定制

一般建设网站,要么就是找建站公司帮你做,要么就是自己利用建站工具来做。对于自己利用建站公司来做网站,很多人会遇到很多问题。比如:网站模板怎么设计?网站内容怎么搭建好?网站的结构怎么设计?诸如类似的问题会困扰很多人,也让他们对自建站望而止步了。所以更多人选择定制网站。让专业的人员来帮自己制作网站。一般的网站定制会比较容易,如果是H5响应式网站定制就会比较繁琐,因为响应式网站相比其他网站建设的过程要较为复杂,要通过不断的修改与磨合才能到达定制人的心里目标。 ![timg.jpg](http://studygolang.qiniudn.com/170207/9e18fde589b9c8e3350ad10dd945fcc6.jpg) 对于H5响应式网站可能你会疑惑,这是一个什么类型的网...阅读全文

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

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:05 chenxun2009

同步异步,阻塞与非阻塞

导言 最近在研究Mosn的IO模型的时候涉及到了netpoll这种经典的golang模型,最终暴露粗goroutine-per-connection的开发模式供开发者使用,而goroutine-per-connection又是基于I/O多路复用和goroutine构建的高性能原生网络模型。在研究I/O多路复用时,《UNIX网络编程》中,归纳总结了五种I/O模型,包括同步异步I/O: 阻塞 I/O (Blocking I/O) 非阻塞 I/O (Nonblocking I/O) I/O 多路复用 (I/O multiplexing) 信号驱动 I/O (Signal driven I/O) 异步 I/O (Asynchronous I/O) 因此,在研究I/O多路复用之前,先去明确下之前一直模...阅读全文

博文 2020-03-04 15:32:53 小刘要学习

2019年开源安全现状调查报告发布

Snyk 今天发布了2019年开源安全现状调查报告,这是一家针对开源项目提供安全服务的知名公司。 前言 为了更好地了解开源领域的安全现状,以及我们该如何让开源世界的安全性变得更好,Snyk 公司通过对大量的数据进行统计和分析,得到了2019年开源安全现状调查报告,其中数据来源包括: 由 Snyk 发起和分析的来自500多名开源项目维护者和用户填写的调查问卷 来自 Snyk 漏洞数据库的内部数据,以及由 Snyk 监控和保护的数十万个项目 从各个供应商发布的外部资源中获取到的研究报告 通过扫描数百万个公开 GitHub 仓库和包而收集到的数据 开源安全现状 先看一看报告提供的关键数据,总共包括六个方面。 1.开源项目被采用情况 数据显示,78% 的漏洞存在于间接依赖关系中。而在2017到201...阅读全文

博文 2019-02-28 15:34:44 开源中国

golang之redis入门: string

package main import ( "fmt" "github.com/garyburd/redigo/redis" ) /* redis操作之 string exists 检查是否存在某个key set key value ex time 键 值 过期模式 时间 eg: 127.0.0.1:6379> set a 444 ex 10 setnx key value 只有key不存在的情况下,将key的值设置为value eg: 127.0.0.1:6379> setnx a 333 (integer) 1 127.0.0.1:6379> get a "333" setex key seconds value 将key的值设置为value 并将key的生存时间设置为seconds秒 ...阅读全文

博文 2019-06-27 20:02:42 五知小白羊

ARTS第四周打卡(2019.04.08~2019.04.14)

所谓A(Algorithm)R(Review)T(Tips)S(Share): . 每周至少做一个 leetcode 的算法题 . 阅读并点评至少一篇英文技术文章 . 学习至少一个技术技巧 . 分享一篇有观点和思考的技术文章 3 week Algorithm 算法 # # @lc app=leetcode.cn id=5 lang=python # # [5] 最长回文子串 # # https://leetcode-cn.com/problems/longest-palindromic-substring/description/ # # algorithms # Medium (24.34%) # Total Accepted: 48.5K # Total Submissions: 195...阅读全文