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

Go语言适合做什么?

Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面,Go语言广泛应用于Web应用、API应用、下载应用等;除此之外,Go语言还可用于内存数据库和云平台领域,目前国外很多云平台都是采用Go开发。Go语言成功案例Nsq:Nsq 是由Go语言开发的高性能、高可用消息队列系统,性能非常高,每天能处理数十亿条的消息;Docker:基于lxc的一个虚拟打包...阅读全文

博文 2018-12-11 17:32:37 lmseo5hy

golang mysql 简单封装与使用

有时候真的没必要使用xorm, gorm这些重量级orm工具。 golang本来就有成熟的mysql库,相比node.js那些反人类又半吊子的mysql库,真的好太多了。 打开mysql import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) dbtemp, err := sql.Open("mysql", "root:password@/dbname?charset=utf8") db = dbtemp if err != nil { fmt.Println(err) } stmt, err := db.Prepare("create table if not exists dev(id int UNSIGNED AUTO_...阅读全文

博文 2015-08-13 09:00:02 dearplain

ubuntu16.10上部署golang1.7.4

因为之前一直在win下开发,所以直接下载安装就解决问题了。最近为了测试项目在ubuntu下运行状况,特别研究了ubuntu的部署方法,把具体步骤和遇到的问题记下,方便以后查阅。 安装方法 1、去golang官方下载最新版的goxx.linux-amd64.tar.gz。这里也可以到http://www.golangtc.com下载,地址是:http://www.golangtc.com/download。 2、下载后将压缩包解压到任意路径,这里以"/etc/go"为例。 3、进入$HOME目录,建立如下目录: $HOME/gosrc 4、在终端,输入命令,建立系统路径: # 打开profile文件 vim .profile # 指定go相关目录 export GOROOT=/etc/go e...阅读全文

博文 2016-12-20 09:00:06 fotomxq

PHP 混合 Go 协程并发

想法很简单。通过设置 runtime.GOMAXPROCS(1) 让 golang 的进程变成单线程执行的。类似python用gevent的效果。然后通过调度多个协程实现异步I/O并发。php作为一个子函数跑在go的进程内,php需要yield到其他协程时,通过回调到golang函数来实现。从php里调用go提供的子函数时,go保证保存php的当前上下文。当协程执行权让渡回来的时候,把原来的php上下文恢复。关键的代码在: // 保存当前协程上的php上下文 oldServerCtx := engine.ServerContextGet() fmt.Println(oldServerCtx) defer engine.ServerContextSet(oldServerCtx) oldExe...阅读全文

博文 2016-10-28 17:00:01 jinpengxx8

从Maven,Gradle到Go

为什么要有依赖管理工具? 谈依赖管理之前,我们先谈谈为什么要有依赖管理工具这东西。 我们学了一种编程语言,然后写了个“Hello World”,然后宣称自己学了一门语言,这时候确实不需要关心依赖问题。 然而,当你要写一个稍微复杂点的应用,那怕就是留言板这样的,需要读写数据库,就需要依赖数据库驱动,就会遇到依赖管理的问题了。 再进一步,你写了一个库,想共享给别人使用,更需要了解依赖管理的问题。 当然,如果项目足够简单,你可以直接将依赖方的源码放置在自己的项目中,或者将依赖库的二进制文件(比如jar,dll)放置在项目的lib里。要提供给别人呢?把二进制包提供下载或者给别人传过去。依赖管理工具出现之前大多数都是这样搞的。 但如果再复杂些,依赖库本身也有依赖怎么弄呢?将依赖压缩打包,然后放个rea...阅读全文

Golong语言学习--Mac下搭建go语言开发环境(学习摘抄)

Go语言是Google内部主推的语言,它作为一门全新的静态类型开发语言,与当前的开发语言相比具有许多令人兴奋不已的新特性。专门针对多处理器系统的应用程序编程进行了优化,使用go语言完全可以媲美c、c++的速度,而且更加安全、简洁,支持并行进程。 以下是go语言的主要特性: 1、自动垃圾回收 2、更丰富的内置类型 3、函数多反回值 4、错误处理 5、匿名函数和闭包 6、类型和接口 7、并发编程 8、反射 9、语言交互性 Mac开发环境搭建 以上基本都属废话,搭建开发环境尽快开启编程之旅才是王道,笔者使用的是mac系统,因此介绍下mac下golang的环境搭建。 1、安装Golang的SDK google官网被墙下载地址如下: http://www.golangtc.com/download ,...阅读全文

Go语言 使用CGo进行优化

载自达达的博客 前阵子我利用cgo对游戏内存数据库的数据存储方式做了优化,减少了对象数量。但是程序放到线上环境后出现了段错误,直接导致进程退出,只好临时又把优化的部分去掉,去掉后程序又继续稳定运行了两周。 优化代码撤下来后,我重新整理了代码。整理下来,我觉得对含有字符串字段的表的优化逻辑太过复杂了,并且很难控制边界情况。 这里举个例子: type MyTable struct { Name string } func InsertMyTable(myTable MyTable) { nameLen := C.size_t(len(myTable.Name)) name := C.calloc(1, nameLen) C.memcpy(name, unsafe.Pointer((*reflec...阅读全文

博文 2014-10-27 10:00:01 abv123456789

D语言和Go语言有前途吗?

发信人: vimer (老来多忘事,惟不忘相思), 信区: Programming 标 题: [合集] D语言和Go语言有前途吗? (转载) 发信站: 水木社区 (Wed Dec 14 21:11:33 2011), 站内 ☆─────────────────────────────────────☆ zhicxv99me (小气鬼) 于 (Sat Dec 3 22:34:49 2011) 提到: 【 以下文字转载自 ITExpress 讨论区 】 发信人: zhicxv99me (小气鬼), 信区: ITExpress 标 题: D语言和Go语言有前途吗? 发信站: 水木社区 (Sat Dec 3 22:16:16 2011), 站内 ☆──────────────────────────...阅读全文

博文 2015-04-03 11:00:24 ilvu999

使用CGO进行GC优化的注意事项

前阵子我利用cgo对游戏内存数据库的数据存储方式做了优化,减少了对象数量。但是程序放到线上环境后出现了段错误,直接导致进程退出,只好临时又把优化的部分去掉,去掉后程序又继续稳定运行了两周。 优化代码撤下来后,我重新整理了代码。整理下来,我觉得对含有字符串字段的表的优化逻辑太过复杂了,并且很难控制边界情况。 这里举个例子: type MyTable struct { Name string } func InsertMyTable(myTable MyTable) { nameLen := C.size_t(len(myTable.Name)) name := C.calloc(1, nameLen) C.memcpy(name, unsafe.Pointer((*reflect.String...阅读全文

博文 2014-10-13 20:37:36 达达

go管理多个项目如何书写gopath以及利用脚本控制项目管理路径

项目组织结构 yishiyaonie:go liuhanlin$ pwd /Users/liuhanlin/qiniuwork/go yishiyaonie:go liuhanlin$ ls aone public qbox 所以设置gopath为pwd的内容:/Users/liuhanlin/qiniuwork/go aone为新项目,public为公共的go库,qbox为第三方库。 提倡的写法 yishiyaonie:go liuhanlin$ $GOPATH -bash: /Users/liuhanlin/qiniuwork/go/public:/Users/liuhanlin/qiniuwork/go/qbox/base/qiniu:/Users/liuhanlin/qiniuwor...阅读全文

博文 2016-08-04 11:00:06 guoer9973

golang time.Duration()的问题解疑

文: How to multiply duration by integer? 看到golang项目中的一段代码, -------------------------------------------------------------------------------------------------- You have to cast it to a correct format Playground. yourTime := rand.Int31n(1000) time.Sleep(time.Duration(yourTime) * time.Millisecond) If you will check documentation for sleep, you see that ...阅读全文

博文 2017-07-01 10:00:09 oxspirt

内部排序算法(Golang版本)

package main import ( "fmt" ) func main() { //保存需要排序的Slice arr := []int{9, 3, 4, 7, 2, 1, 0, 11, 12, 11, 13, 4, 7, 2, 1, 0, 11, 12, 11} //实际用于排序的Slice list := make([]int, len(arr)) copy(list, arr) BubbleSortX(list) fmt.Println("冒泡排序:\t", list) copy(list, arr) QuickSort(list, 0, len(arr)-1) fmt.Println("快速排序:\t", list) copy(list, arr) //将arr的数据覆盖到li...阅读全文

博文 2015-11-23 03:00:00 achst

google go 语言介绍(一)

翻译自golang.org 介绍 这是一篇为熟悉c或c++语言的开发人员提供的介绍go语言的基础教程。本文不是综合性的语言指南,而更接近于语言规范。在你阅读本教程后,你可以继续阅读“如何更有效率的编写Go程序”这篇文章,更深入的了解这门语言应该如何被使用。同时,这里还提供了一个Go语言的三天教程:第一天,第二天,第三天。 接下来将通过一系列适度的例子程序来展现这门语言的关键特性。所有的程序都存放在/doc/progs/目录中。 程序片断都标注了该片断在原始文件中的行号。为了代码的清晰,空白行将被保留。 Hello,World 让我们以一种常用的方式开始我们的教程: 05 package main 07 import fmt "fmt" // Package implementing form...阅读全文

博文 2014-10-04 19:26:20 fffvvvzz

可带癞子的通用麻将胡牌算法

笔者前段时间做过一款地方麻将游戏的后端,麻将游戏有个特点就是种类繁多,有的玩法木有癞子,有的玩法有4个癞子,有的甚至癞子数量更多,甚至有的有花牌(春夏秋冬等),有的红中可以代替宝牌,具体玩法笔者在此不介绍,做相关开发的自行研究玩法就好 查表法 笔者看过其它的算法思路,比如查表法,首先生成好麻将牌型的表存文件中,通过将牌型与文件中的牌型进行对比,此类算法,简单玩法效率也挺高 缺点: 是要提前生成好表文件,并且,由于麻将玩法种类繁多,对于复杂的玩法,表记录非常多,多达数百万条记录,虽然算法中有剪枝,但是效率仍然没有显著优势 表文件读入到内存中,长期占用大量内存 移植性弱,换一种玩法,就得重新生成表数据 在此笔者根据自己的经验总结出一种通用的麻将胡牌算法 思路 满足M x ABC + N x DD...阅读全文

博文 2017-09-05 14:34:48 tomorrowwu

从零开始用golang编写一个分布式测试工具

起源 当开发http 接口的时候,往往我们会关心开发的server能承受多少压力,这时候一个比较常用的工具是 apache bench。一部分情况下ab工具确实能满足需求,但是很多时候并不能,需要分布式式测试工具。 压力测试比较关心的是产生压力、获取测试对象的如TPS、响应时延等性能数据和主机资源如cpu,memory消耗数据以定位性能瓶颈,简单的单机测试工具并不能很好的满足这些需求。 我们可以选择云平台的分布式测试工具,比如腾讯的wetest,阿里云也有类似产品。但是这种产品往往收费不菲。也可以选择类似的开源产品,比如locust。但是调研发现,这种开源产品往往比较简单,或者过于陈旧。google官网有一个压力测试例子,用的就是locust。大家可以看一下这个工具,基于python,功能非...阅读全文

OS X 10.11搭建go语言1.5.1开发环境

1、安装Golang的SDKhttp://golang.org ,下载最新的安装包,之后双击安装即可。某此同学国内打不开的。。。我只想说,学谷歌的东西,自己想个好点办法吧。。。你懂的 安装完成之后,打开终端,输入go、或者go version(查看安装版本)出现如下信息即表示安装成功: $ go version go version go1.5.1 darwin/amd64 2、配置环境变量安装完sdk之后接下来便是配置环境变量了,打开终端输入cd ~ 进入用户主目录,之后输入ls -all命令查看是否存在.bash_profile 文件,存在既使用vim .bash_profile打开并编辑该文件。根据自己实际情况,内容如下: export GOPATH=/Users/lvtao/Docu...阅读全文

Go:操作注册表

package main import ( "fmt" "log" "golang.org/x/sys/windows/registry" ) func main() { key, exists, err := registry.CreateKey(registry.CURRENT_USER, "SOFTWARE\\Hello Go", registry.ALL_ACCESS) if err != nil { log.Fatal(err) } defer key.Close() if exists { fmt.Println("键已存在") } else { fmt.Println("新建注册表键") } // 写入32位整形值 key.SetDWordValue("DWORD", 0xFF...阅读全文

博文 2016-08-23 13:00:03 aqtata

Go:操作注册表

package main import ( "fmt" "log" "golang.org/x/sys/windows/registry" ) func main() { key, exists, err := registry.CreateKey(registry.CURRENT_USER, "SOFTWARE\\Hello Go", registry.ALL_ACCESS) if err != nil { log.Fatal(err) } defer key.Close() if exists { fmt.Println("键已存在") } else { fmt.Println("新建注册表键") } // 写入32位整形值 key.SetDWordValue("DWORD", 0xFF...阅读全文

博文 2016-09-21 01:00:00 aqtata

如何使用Go 项目.

今天看到有说写了一个项目, 用于学习. 但是我下载下来却不知道如何使用. 我算是新手中的新手.问这样一个低级的问题不知道有没有高手回答一下我. 非常感谢 我的第一个想法就是运行**go install** 结果出现下面的错误 ![enter image description here][1] [1]: http://drupalmodule.cn//sites/default/files/images/20142002134638.pn...阅读全文

采用interface实现的限时调用方法

在实时性要求高的工程项目中,对于方法执行的时间有较高的要求,本示例程序,实现了一种安全的传入任意参数的方法限时调用工具类,能执行方法的最大容忍运行时间,保证服务不超时。