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

默默前行的livego--基于go语言的rtmp直播服务器

为什么go语言,原因太多了! 轻量级协程,随时goroutine方便的channel方便的interface强大的服务器性能 简单点GO语言---为服务器而生! 我们来看看: livego--基于go语言的rtmp直播服务器 github地址: https://github.com/runner365/livego 什么是livego livego是基于golang开发的rtmp服务器 为什么基于golang golang在语言基本支持多核CPU均衡使用,支持海量轻量级线程,提高其并发量 当前开源的缺陷: srs只能运行在一个单核下,如果需要多核运行,只能启动多个srs监听不同的端口来提高并发量; ngx-rtmp启动多进程后,报文在多个进程内转发,需要二次开发,否则静态推送到多个子进程,效...阅读全文

博文 2017-08-25 01:32:12 sweibd

Golang号称高并发,但高并发时性能不高

1.管道chan吞吐极限10,000,000,单次Put,Get耗时大约100ns/op,无论是采用单Go程,还是多Go程并发(并发数:100, 10000, 100000),耗时均没有变化,Go内核这对chan进行优化。 解决之道:在系统设计时,避免使用管道chan传递主业务数据,避免将业务流程处理流程分割到对个Go程中执行,这样做减少chan传输耗时,和Go程调度耗时,性能会有很大的提升。 案例分析:nsq和nats都是实时消息队列,nsq在客户端端和服务端大量使用chan转发消息,导致性能不佳,只有100,000/s;而nats服务端在分发消息流程中,没有使用chan,只在客户端接收时使用chan,性能可达到1,000,000/s。 2.互斥锁Mutex在单Go程时Lock,Unloc...阅读全文

Go框架、库和软件的中文收录大全 awesome-go-cn

## awesome-go-cn awesome-go-cn是一个很棒的Go框架、库和软件的中文收录大全,帮助你第一时间发现优质项目。 它在awesome-go的基础上完成了以下功能 - 为每个工程添加star,并在通过star进行降序排序。 - 为每个工程添加star/更新时间/中文文档等相关标签。 - 提供中文翻译,当然同时也保留了英文原版文档。 - 定期与原版awesome-go进行同步,保证与国际接轨^_^ **快捷访问方式** : [https://awesome-go.cn](https://awesome-go.cn) **github访问地址** : [https://github.com/yinggaozhen/awesome-go-cn](...阅读全文

开源项目 2019-08-07 14:22:30

golang动态调用方法

package main import ( "fmt" "reflect" ) type YourT1 struct { } func (y *YourT1) MethodBar() { fmt.Println("MethodBar called") } type YourT2 struct { } func (y *YourT2) MethodFoo(i int, oo string) { fmt.Println("MethodFoo called", i, oo) } func InvokeObjectMethod(object interface{}, methodName string, args ...interface{}) { inputs := make([]reflect....阅读全文

博文 2014-10-04 19:26:16 ziyouchutuwenwu

golang 判断是否实现interface接口的方法

由于golang的interface使用很灵活,不需要显示的实现接口interface的方法, 有点动态化的感觉, 缺点:如果没有实现interface的方法,强行转换成interface,运行时候异常报错 解决办法:在编译的时候就把这种错误抛出来,上代码: package main import ( "fmt" ) type value interface { Show() } type test_value struct{} // func (value *test_value) Show() { fmt.Printf("test \n") } var _ value = new(test_value) // 使用类似方法处理,编译的时候会报错 func main() { } // --...阅读全文

博文 2017-01-22 10:00:08 golang_yh

GO语言学习-匿名函数和闭包

Go语言支持匿名函数,即函数可以像普通变量一样被传递或使用。 使用方法如下 a := func(input1 int) int{ return input1 += 1 }() b :=a(2) GO语言的匿名函数就是闭包,以下是《GO语言编程》中对闭包的解释  基本概念 闭包是可以包含自由(未绑定到特定对象)变量的代码块,这些变量不在这个代码块内或者 任何全局上下文中定义,而是在定义代码块的环境中定义。要执行的代码块(由于自由变量包含 在代码块中,所以这些自由变量以及它们引用的对象没有被释放)为自由变量提供绑定的计算环 境(作用域)。  闭包的价值 闭包的价值在于可以作为函数对象或者匿名函数,对于类型系统而言,这意味着不仅要表示 数据还要表示代码。支持闭包的多数语言都将函数作为第一级对象...阅读全文

博文 2015-06-17 23:00:24 phlong999

golang动态解析xml

package main import ( "encoding/xml" "fmt" "mahonia" "os" "strconv" "text/template" ) type Attribute struct { Name string Value string } type Token struct { Name string Attributes []Attribute Tokens []Token } type Result struct { Root Token } var result = Result{} func main() { if !parse("config.xml") { return } if !output("code_h.tpl", "code.h") {...阅读全文

博文 2015-06-18 08:02:33 esrrhs

Go-Slice

要点 一个区间:[low:high] 两个概念:length, capability 三个函数:make(), append(), copy() 概念 Array是在声明的时候都确定了长度,之后不可更改。Slice和数组类似,也是表示一个有序元素,但这个序列的长度可变。 在Go中,Slice序列中各元素的数据类型必须一致,因为在声明slice的时候即要指定类型。 可以在Python中找到Slice,和Go的Slice基本上是一致的语义和用法。Slice中文通常被译为切片,大抵是因为可以从一个序列中存取指定的某一部分。下面是Collins词典中对于slice的解释,有助于了解该词的含义: N-COUNT (指食物切下的)片,薄片 A slice of bread, meat, fruit, o...阅读全文

博文 2016-09-02 07:00:05 u013344915

Mac 必备神器之 Go2Shell 以及使用技巧

Go2Shell 一个可以快速在当前目录打开Shell的工具,小巧,非常好用! 但是它默认打开是 系统的iterm ,而我希望它打开 iTerm2 !~ 设置默认iterm 而Go2Shell默认没有设置界面,需要用命令行打开(隐藏得真深啊!)在Shell中输入: open -a Go2Shell --args config 会打开设置界面 设置界面 选择iTerm2 ,保存并退出即可!~ 配合其他利器使用 Go2Shell还可以配合其他软件进一步提升效率,让你爽翻!~ 配合Alfred 使用Alfred快捷打开,我这里输入2就可以快速打开 效果图 配合Finder 打开Finder,按住command键,拖动Go2Shell的图标到Finder菜单就可以在Finder快捷打开Go2Shel...阅读全文

Windows 托盘图标例子 walk 和 炫彩界面库混写

walk地址:https://github.com/lxn/walk 炫彩官网:http://www.xcgui.com 炫彩界面库:https://github.com/CodyGuo/xcgui 效果图: 由于上传图片错误,没办法展示。 可访问 http://www.golangtc.com/t/566b8de8b09ecc6de0000064 查看效果图。