-
深入学习golang(4)—new与make
所属栏目:[大数据] 日期:2020-12-16 热度:90
http://www.cnblogs.com/hustcat/p/4004889.html Go语言中的内建函数new和make是两个用于内存分配的原语(allocation primitives)。对于初学者,这两者的区别也挺容易让人迷糊的。简单的说,new只分配内存,make用于slice,map,和channel的初始化。 1. new[详细]
-
Go Commons Pool发布以及Golang多线程编程问题总结
所属栏目:[大数据] 日期:2020-12-16 热度:174
转自: http://jolestar.com/go-commons-pool-and-go-concurrent/ Go Commons Pool发布以及Golang多线程编程问题总结 Jan 3,2016 ? jolestar 趁着元旦放假,整理了一下最近学习Golang时,『翻译』的一个Golang的通用对象池,放到 githubGo Commons Pool开源[详细]
-
Golang 并发模式:超时和继续 Go Concurrency Patterns: Timing
所属栏目:[大数据] 日期:2020-12-16 热度:104
翻译自 Go Blog。 原文地址:https://blog.golang.org/go-co... 并发编程有自己的一些习惯用语,超时就是其中之一。虽然 Golang 的管道并没有直接支持超时,但是实现起来并不难。假设遇到了这样一种场景:在从 管道 ch 中取值之前至少等待 1 秒钟。我们可以[详细]
-
golang
所属栏目:[大数据] 日期:2020-12-16 热度:139
infile,_ := os.Open(target)fmt.Println("opentarget.." + target)seekPosition := offset + int64(start) - int64(InputBlockSize)if seekPosition 0 { seekPosition = 0 } count := InputBlockSize if offset == 0 start InputBlockSize { count = start[详细]
-
golang生产者与消费者
所属栏目:[大数据] 日期:2020-12-16 热度:128
使用golang可以很容易实现,生产者与消费者功能。 实现一:(只生产一定数量数据) //写入专用通道//一次写10条func produce(p chan- int) {for i := 0; i 10; i++ {p - i//主线程不能产生死锁,所以此处报错fmt.Println("send:",i)}}//消费专用通道//一次只[详细]
-
golang定时器函数
所属栏目:[大数据] 日期:2020-12-16 热度:126
tick := time.Tick(1 * time.second) 表示每隔一段生产一条数据到tick通道中。 boom := time.After(500 * time.Millisecond) 表示在一段时间之后产生一条数据到tick通道中,不会持续产生。 func timetick() { tick := time.Tick(100 * time.Millisecond) boo[详细]
-
Golang使用amqp发送消息
所属栏目:[大数据] 日期:2020-12-16 热度:141
1. 为什么使用信道(channel)而不使用TCP连接发送AMQP命令?对操作系统来说频繁的建立和销毁TCP连接开销非常昂贵,而操作系统每秒建立的连接是有上限的,性能瓶颈不可避免,而只建立一条TCP连接无疑是一个很好的方案,在这条连接当中建立多条信道与RabbitMQ[详细]
-
Golang 基础 HTTP请求
所属栏目:[大数据] 日期:2020-12-16 热度:135
本篇只是自己学习过程中的一个记录 首先需要引入”net/http”包 import "net/http" 最简单的Get和Post请求 GET resp,err := http.Get( "http://blog.csdn.net/zyjying520/article/details/52669538" ) if err != nil { return } defer resp.Body.Close() //[详细]
-
Golang 文件名命名规则
所属栏目:[大数据] 日期:2020-12-16 热度:165
1、平台区分 文件名_平台。 例: file_windows.go,file_unix.go 可选为:windows,unix,posix,plan9,darwin,bsd,linux,freebsd,nacl,netbsd,openbsd,solaris,dragonfly,notbsd, android,stubs 2、测试单元 文件名 test.go或者 文件名 平台_test.go。 例: p[详细]
-
Golang 基础 HTTP服务器
所属栏目:[大数据] 日期:2020-12-16 热度:116
本篇只是自己学习过程中的一个记录 首先需要引入”net/http”包 import "net/http" 导入了相关包后,接下来在main函数中初始化即可,几行代码就搭建好一个http服务器 err := http.ListenAndServe( ":8080" , nil ) if err != nil { fmt.Println( "服务启动失[详细]
-
Golang 基础 XML
所属栏目:[大数据] 日期:2020-12-16 热度:77
本篇只是自己学习过程中的一个记录 首先需要引入xml包 import "encoding/xml" 这里我们先定义一个用于序列化和反序列化的结构用于测试。 type TTest struct { Path string `xml:"path"` Val int `xml:"val"` Name string `xml:"name,attr"` // 属性的也可写[详细]
-
Golang 基础 JSON
所属栏目:[大数据] 日期:2020-12-16 热度:57
本篇只是自己学习过程中的一个记录 首先需要引入json包 import "encoding/json" 这里我们先定义一个用于序列化和反序列化的结构用于测试。 type TTest struct { Path string `json:"path"` Val int `json:"val"` } 序列化 test := TTest{ "C:abc123" , 2[详细]
-
golang 进程出现too many open files的排查过程
所属栏目:[大数据] 日期:2020-12-16 热度:130
1. 现象 服务的cpu跑满(golang实现),并大量报too many open files错误.服务使用systemd来运行,部署在阿里ecs上. 2.分析 从日志来看,cpu的上升主要为到达文件数限制引起的,但之前已经更改过系统的文件数及所有用户的文件数,按道理是不应该出现这个问题的,后来[详细]
-
Golang为别人写的csv文件处理的例子
所属栏目:[大数据] 日期:2020-12-16 热度:197
package main import ( "encoding/csv" "flag" "io" "log" "os" "sort" "strings" ) var quick,first,unrepeat bool func main() { path := flag.String( "p" , "" , "-p 指定csv文件路径" ) logname := flag.String( "l" , "-l 指定结果输出路径,不指定则输[详细]
-
golang简单获取上传文件大小的实现代码
所属栏目:[大数据] 日期:2020-12-16 热度:160
package mainimport ("fmt""io""log""net/http""os")// 获取文件大小的接口type Size interface {Size() int64}// 获取文件信息的接口type Stat interface {Stat() (os.FileInfo,error)}// hello world,the web serverfunc HelloServer(w http.ResponseWrite[详细]
-
golang中并发sync和channel
所属栏目:[大数据] 日期:2020-12-16 热度:146
golang中实现并发非常简单,只需在需要并发的函数前面添加关键字"go",但是如何处理go并发机制中不同goroutine之间的同步与通信,golang 中提供了sync包和channel机制来解决这一问题. sync 包提供了互斥锁这类的基本的同步原语.除 Once 和 WaitGroup 之外[详细]
-
golang 模板(template)的常用基本语法
所属栏目:[大数据] 日期:2020-12-16 热度:72
golang 模板(template)的常用基本语法 模板 在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成动态网页,golang提供了html/template包来支持模板渲染。 这篇文章不讨论golang后端的模板读取及渲染方法,只讨论[详细]
-
NSQ的golang客户端简单使用
所属栏目:[大数据] 日期:2020-12-16 热度:147
NSQ的golang客户端简单使用 NSQ 是由国外的一个短链服务商bitly使用golang开发的一个消息队列系统,正好使用到了这个东西,在这里简单的记录下。 获取客户端 nsq的golang客户端是官方版本的 go get github.com/nsqio/go-nsq 即可 简单的消费者和生产者使用[详细]
-
[golang把文件复制到另一个目录]
所属栏目:[大数据] 日期:2020-12-16 热度:93
//本程序 主要功能是把A文件夹下的文件与B目录下文件对比,如果找到就覆盖到B相应的目录下。 // 用法: merge A目录 B目录 // merge.go package main import ( "flag" "fmt" "os" "path/filepath" "strings" "time" "github.com/Unknwon/com" ) const ( IsDi[详细]
-
使用vendor管理Golang项目依赖
所属栏目:[大数据] 日期:2020-12-16 热度:196
http://www.tuicool.com/articles/NjMzIbJ 我们在项目中除了大量的使用Python外,也大量的使用了Golang构建高效基础运行服务。在使用Golang过程中,我们发现Golang程序缺少依赖库版本功能是一个非常令人头大的问题:某些依赖在某个commit之后发生了API变更之[详细]
-
golang中container/list包用法
所属栏目:[大数据] 日期:2020-12-16 热度:119
list是一个双向链表。该结构具有链表的所有功能。 type Element type Element struct { Value interface{} // 在元素中存储的值} func (e *Element) Next() *Element //返回该元素的下一个元素,如果没有下一个元素则返回nil func (e *Element) Prev() *Elem[详细]
-
golang 异常处理
所属栏目:[大数据] 日期:2020-12-16 热度:54
简洁的panic recover代码: https://www.cnblogs.com/songxingzhu/p/5255485.html https://www.cnblogs.com/baiyuxiong/p/4770980.html panic recover error 几个概念的说明: https://blog.csdn.net/wuwenxiang91322/article/details/9042503 异常处理的几个[详细]
-
golang udp 指定本地地址和端口
所属栏目:[大数据] 日期:2020-12-16 热度:200
指定本地地址为127.0.0.1 端口7770 localip := net .ParseIP ( "127.0.0.1" ) remoteip := net .ParseIP ( "127.0.0.1" ) lAddr := net .UDPAddr {IP: localip,Port: 7770 } rAddr := net .UDPAddr {IP: remoteip,Port: 9130 } conn,err := net .DialUDP ( "[详细]
-
Go语言微服务系列文章
所属栏目:[大数据] 日期:2020-12-16 热度:147
微服务、Go语言、Docker技术也算目前比较热门的技术话题,本人也是抱着学习的思想,整理一些学习心得,和志同道合的朋友一起探讨学习一下。 接下来是一系列关于Go语言微服务的系列文章。 简介 为什么是Go语言的微服务, 原因很简单,最近对Go语言花了些时间[详细]
-
Go微服务 - 第一部分 - 介绍及理论基础
所属栏目:[大数据] 日期:2020-12-16 热度:105
Go微服务理论基础介绍 蓝图概述 下图是我们整个系列文章中构建的系统蓝图整体视图。然而,我们将从头开始写我们的第一个Go微服务,然后当我们沿着博客系列的各部分进展时,我们将会越来越接近下面的图所代表的结构。 图例基本如下: 虚线白框: 在一个或多个节[详细]
