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

Go语言搭建环境+运行一个HelloWorld实例(Win10)

1.下载地址: 安装包下载地址为:https://golang.org/dl/。 如果打不开可以使用这个地址:https://golang.google.cn/dl/ 上面地址下载需要使用到VPN ps:笔者使用的环境为win10 64位,所以我把自己下载的安装包上传到了百度云,使用win10 64位的小伙伴们,无须翻墙下载: 下载地址: 2.Go语言的安装及环境搭建: GO语言安装为傻瓜式安装,选择好安装路径后,按next,直到完成就可以了 环境搭建: 选择环境变量->系统变量找到PATH->编辑->新建输入go\bin安装路径,我把go\bin放在了E盘,所以我这里为E:\GO\bin 3.运行HelloWorld实例 1)创建工作目录G:\study\go 文件名:HelloWorld...阅读全文

博文 2019-01-21 23:34:44 DouMarK

1.9 新特性预览:Logging, interfaces, and allocation

该文翻译自:http://commaok.xyz/post/interface-allocs/几个星期前,Peter Bourgon在golang-dev开了一个关于标准化日志记录的帖子。 日志很常用,因此性能很快提升。 go-kit日志包使用结构化日志,接口如下:type Logger interface { Log(keyvals ...interface{}) error}调用代码:logger.Log("transport", "HTTP", "addr", addr, "msg", "listening")请注意,进入日志调用的所有内容都将转换为interface{}。 这意味着它分配了不少内存。与另一个结构化日志库zap进行比较。 Zap为了避免内存分配和interface{}使...阅读全文

博文 2017-02-13 02:42:51 方圆

Golang_tag

Golang tag也就是go语言中的注解 比如 type PostBody struct { Ids []int `json:"Id__in__int"` }`json:"Id__in__int"` 这一段内容就是Ids这个属性的一个tag 我们可以通过反射来获取这个tag的值 如下所示 package main import ( "fmt" "reflect" ) type PostBody struct { Ids []int `json:"Id__in__int"` } func main() { // s := "{\"Id__in__int\":[101010,101009],\"text__in__string\":[\"开单\",\"测试页\"]}" // var pb st...阅读全文

博文 2015-06-17 20:03:52 u012807459

今天是我XX岁生日(2018-10-21)

一、还没有完成的事项: 1、婚姻问题。大问题,因为还没有喜欢的人。 2、出书问题。一直以来想写一本高中数学书籍,但是一直没有写出来。 3、驾照问题。去年报名的,今年还没有拿到,科目二还没有去训练。 4、房子车子。都没得,尴尬。 5、工作前的准备。mysql高性能,redis开发与运维,鸟哥的私房菜,golang语言,python语言,数据结构与算法。 6、论文问题。开题都还没搞。 ############################################ 二、已完成的事项。 1、工作。基本确定了,就在武汉的小米,感觉满意。待遇不错,又在武汉,只是会累一点,在该累的时候绝不含糊。 2、身体。身体是健康的,没毛病的。 ################################...阅读全文

博文 2018-10-21 14:34:39 igoodful

第一节 如何用Go实现单链表

一、概念介绍 下面这副图是我们单链表运煤车队。 每节运煤车就是单链表里的元素,每节车厢里的煤炭就是元素中保存的数据。前后车通过锁链相连,作为单链表运煤车,从1号车厢开始,每节车厢都知道后面拉着哪一节车厢,却不知道前面是哪节车厢拉的自己。第一节车厢没有任何车厢拉它,我们就叫它车头,第五节车厢后面拉其他车厢,我们称为车尾。 作为单链表它最大的特点就是能随意增加车队的长度,也能随意减少车队的长度。这是比数组公交车最大的优点。 二、Go语言实现讲解 1、节点每节车厢都由车体、绳索和煤炭构成。在Go语言中表示这种自定义组合体的类型就是结构,当然为了通用性,我们这里要把车厢转换成节点也就是元素,煤炭转换成数据,绳索转换成指针。 type Node struct { data Object next *N...阅读全文

博文 2017-10-27 07:04:53 懒人记

转发服务小应用 Gooverssh

gooverssh 是基于[gosshtool](http://www.oschina.net/p/gosshtool)的一个ssh开发包开发的一个基于ssh本地端口转发服务小应用,可以方便突破一些网络限制,如通过ssh代理访问内网数据库服务。 使用 编辑config.toml文件:

  [ssh]
  local_bind_address = ":3306"
  ssh_server = "222.222.222.222"
  ssh_user = "root"
  ssh_password = "pa...阅读全文

开源项目 2016-03-13 16:00:00 scottkiss

.net的快递鸟物流单号自动识别查询api接口demo实例

1、应用场景(1)PC端、移动端应用或网站应用集成运单物流信息查询功能时,只需要录入单号即可完成查询,无需用户输入快递公司。(2)电商网站要在快递鸟查询或者订阅运单时,可通过单号识别先行判断物流公司后,再订阅到快递鸟。2、是否需要授权要Free申请服务3、接口描述/说明API ID:点击申请API Key:点击申请示例(1)请求示例JSON格式(1)该接口仅对运单号做出识别,识别可能属于的一家或多家快递公司。(2)接口并不返回物流轨迹,用户可结合即时查询接口和订阅查询接口完成轨迹查询、订阅的动作。(3)接口识别会返回一家或者多家快递公司,返回的数据根据快递鸟大数据分析结果排序,排名靠前的命中率更高。(4)若识别失败,快递鸟返回的匹配结果为空。(5)接口支持的消息接收方式为HTTP POST,...阅读全文

博文 2019-09-09 15:36:04 fire70

网站打开速度慢的解决方法

判断一个网站成功与否,可能很多人会首先从网站优化、网站布局、网站内容等方面来判定,但是判定一个网站的好与坏最基本的是网站打开的速度。再完美、再精致的网站,如果当用户访问你网站时,打开速度慢,甚至出现空白页面、打不开等情况,会在用户心中大打折扣,觉得你的网站是个不入流的网站。通过整理研究:用户打开网站,最满意的时间是2-5秒,如果超过10秒以上,98%的用户会选择直接关闭这个网站。前面小编也给大家整理出了网站打开速度慢是什么原因导致,今天给大家分析下网站打开速度慢的解决方法。 1. 测试内在原因还是外在原因导致 当你发现网站打开速度慢的时候,首先要先查明是网站的问题,还是其他因素引起的问题,这里的其他因素指的是: (1) 网络是否正常,可以浏览其他网页检测一下网络情况。 (2...阅读全文

算法导论习题:10.2-7 in Go语言

10.2-7题:给出一个时间复杂度为O(n)的非递归过程,实现对一个含n个元素的单链表的逆转。 程序的主要思想就是,转变指标的指向,例如原本是1->2->3->4,现在变成1<-2<-3<-4,就实现了逆转 package main import ( "fmt" ) type Node struct { next *Node data int } type List struct { first *Node } func (l *List) Insert(d int) { node := &Node{nil, d} node.next = l.first l.first = node } func revise(l *List) { if l.first == nil { return } ...阅读全文

博文 2016-05-24 03:00:14 u013564276

gorilla/sessions 学习笔记

简单样例 首先调用NewCookieStore初始化一个store,同时传入一个secret key用来对session进行认证。 在Handler中,调用store.Get()获取一个已经存在的session或(如果不存在)创建一个新的。 设置sesssion.Values中的值,session.Values是map[interface{}]interface{}类型。 调用session.Save()将session保存到响应中。在实际项目中,调用session.Save(r,w)时需要检测返回的错误并处理。Save()方法必须在写入response之前调用,否则session cookie不会发送到客户端。 var store = sessions.NewCookieStore([]b...阅读全文

博文 2017-07-06 02:07:01 kingeasternsun

分布式分布订阅消息系统

image.png 几千行 C 代码实现了的一个优先级/延时队列,短小精悍 概念 tube - 消息通道,类似于 kafka 里面的 topic, 用来存储某一类或者业务的任务 job - 生产和消费的基本单元,每个 job 都会有一个 id 和 优先级 特点 1、协议,类 Memcached 协议, 非二进制安全 2、全内存, 可开启 binlog, 断电从 binlog 恢复数据 3、单线程, 使用 epoll/kqueue 来实现事件机制 基于golang和beanstalk封装的分布式发布订阅消息系统 主要工作 1、producer消息路由 2、维护client与topic的订阅关系 3、dispatcher并发投递消息给多个相关订阅者,从而支持1对N的关系 delivery gua...阅读全文

博文 2019-03-22 18:34:43 loloxiaoz

高可用 Redis 服务架构分析与搭建

基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出现异常...阅读全文

博文 2018-10-07 21:34:39 JAVA高级架构开发

Go中单引号和双引号和反引号(飘号)

Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 。Go语言中的字符串字面量使用 双引号 或 反引号 来创建 :双引号用来创建 可解析的字符串字面量 (支持转义,但不能用来引用多行);反引号用来创建 原生的字符串字面量 ,这些字符串可能由多行组成(不支持任何转义序列),原生的字符串字面量多用于书写多行消息、HTML以及正则表达式。根据我找到的资料以及碰到的情况来看, Go语言的单引号一般用来表示「rune literal」 ,即——码点字面量...阅读全文

博文 2018-10-06 02:35:09 ck_god

免费物流快递查询API接口对接攻略

目前提供快递查询的接口平台有:快递鸟(非淘系用户使用最多)菜鸟 (淘系用户使用)不同接口的区别:(1)快递鸟支持400多家物流快递公司,接口稳定免费,提供多种方式接口对接(2)菜鸟支持100多家物流快递公司接口,主要支持阿里淘系商家用户使用。快递API的应用场景与用途1. 最常见的应用场景如下:(1)电商网站:例如B2C、团购、B2B、批发分销站、C2C、本地生活交易等网站。(2)管理系统:订单处理平台、订货平台、发货平台、分销系统、渠道管理系统、客户管理系统、ERP等。2. 快递API的用途如下:(1)让顾客登录网站后,直接在“我的订单”页面内就能看到订单的物流状态。(2)自动筛选出“已签收”、“疑难件”等状态的单号,减轻物流跟单人员的压力。(3)改变订单的状态和交易流程,例如单号变为“已...阅读全文

博文 2019-08-15 17:33:51 fire70

go语言 基础编程学习笔记

无闻的 GO基础编程 1,在方法外部 只能声明变量 或者类型, 不能执行语句,比如说赋值(声明并且赋值 算到声明里面), 或者控制语句(这个和java是一样的, 要注意呀!)、 2,testAB := 10000 变量的简写形式 不能指定类型. 并且 这种方式只能在方法内部使用,在方法外部不能使用 3, 变量只有在声明 并且赋值的时候, 才能省略类型。在先声明后赋值的情况下面不能省略类型 4, 全局变量的声明不可以省略 var 5,强制类型转换获取一个值, 如何用 这个用这个给 这个变量赋值无所谓 可以使用:=, 也可以使用 var testVar int = . 赋值的时候的类型 必须得是一样的。 6,并行声明变量, 常量, 如果要指定的话,只能指定一个类型, 在声明的最后指定。并且所有的...阅读全文

Go语言中多字节字符的处理

1 概述 Go语言的字符串是使用 UTF-8 编码的。UTF-8 是 Unicode 的实现方式之一。本文内容包括:UTF-8 和 Unicode 的关系,Go语言提供的 unicode 包和 unicode/utf8 包的使用。 2 UTF-8 和 Unicode 的关系 Unicode一种字符集,是国际标谁化组织(ISO)设计的一个包括了地球上所有文化、所有字母和符号 的编码。他们叫它 Universal Multiple-Octet Coded Character Set,简称 UCS,也就是 Unicode。Unicode 为每一个 字符 分配一个唯一的 码点(Code Point),就是一个唯一的值。例如 康 的码点就是 24247,十六进制为 5eb7。Unicode 字符集仅仅...阅读全文

博文 2018-10-28 07:35:09 小韩说课

网站打开速度慢是什么原因导致

一个网站无论优化、页面布局、各方面搭建多好,如果网站打开速度慢会导致用户流失。是什么原因导致网站打开慢?网站打开慢的原因是什么?网站打开的速度与页面的响应时间,往往是站长们所忽视的,但这个问题是导致用户流失的一个大根源。当用户访问你的网站时,打开网站速度慢或者不能打开,那在用户心里对你网站的印象会大大降低。用户的直观印象会觉得只有不正规的网站才会有这样的现象。如果用户是通过搜索关键字进入你的网站想要需求合作或者帮助,一旦你网站打开速度慢,用户就会直接认为你是一个不入流的公司或者是小公司,对于公司企业网站来讲,网站打开速度很重要。网站打开速度慢的原因有很多,可能是空间问题、网站建设问题、域名解析问题等多方面。如果是新站搭建可以用建站宝盒来进行,可以大大减少网站打开速度慢的问题。今天小编给大家分...阅读全文

git 设置和取消代理

学习golang,首先需要在 https://golang.org/dl/ 下载安装包,如果打不开可以使用这个地址:https://golang.google.cn/dl/在开发过程中,需要到github、goole code等网站,下载各种引入包,这个时候需要安装git,下载地址为 https://git-scm.com/科学上网后,GIt也需要设置,才能正常访问github、goole code等网站,go get 也会调用gitgit代理设置如下(可复制):git config --global https.proxy http://127.0.0.1:1080git config --global https.proxy https://127.0.0.1:1080git confi...阅读全文

博文 2020-03-23 19:32:43 陈树树go

送你一份Redis书单,以后使用缓存的问题不用再问我啦!

点击蓝色“程序员书单”关注我哟 加个“星标”,每天带你读好书! ![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")​ 经过了10多年的发展,Java Web从开发框架到社区都已经非常成熟,很多程序员都可以通过使用框架很快速地搭建起一个Java Web应用,特别是近几年SpringBoot大热,干脆连配置都不需要了解了,直接一键式编译部署运行,让Java工程师的入门成本变得越来越低。 但于此同时,互联网公司对于Java的应用场景也在不断地升级换代,从单机部署再到分布式,从SOA再到微服务,Java后端技术栈变得更加庞大,对于工程师的要求也越来越高,特...阅读全文

博文 2020-05-08 23:32:51 程序员书单

读《Introducing Go》O'Reilly 第 6 ~ 11 章

一,开始 二,类型 三,变量 四,控制结构 五,数组,切片(slice)和字典(maps) 六,函数 七,结构和接口 八,包 九,测试 十,并发 十一,下一步 第 6 章,函数 43页 函数通常表示为一个黑盒子 func average(xs []float64) float64 { panic("not implemented") } 函数参数是一个数组,返回一个浮点64 数。 func average(xs []float64) float64 { total := 0.0 for _, v := range xs { total += v } return total / float64( len(xs) ) } func main() { xs := []float64{98, 93...阅读全文

博文 2016-03-16 23:00:06 wide288

兄弟连区块链培训分享Go语言获取packed struct的大小

“区块链是一门集合密码学、共识算法、智能合约、超级账本等多门技术的复杂性综合学科。”尹正表示,区块链培训机构的师资质量及其对区块链行业的认知水平参差不齐,普通消费者也无从考究。 Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。网络协议里面,很可能遇到自定义的封包,对应到c里面的是typedef struct _PackageHeader{ int headerLen; int timeStamp; short cmd };为了保证单字节对齐,可以加上编译...阅读全文

博文 2018-08-21 16:35:19 兄弟连区块链培训

「Go」byte、rune与string

不积跬步,无以至千里;不积小流,无以成江海。 码字不易,点赞再看。 byte 占用1个节字,也就是 8 个比特位,所以它和 uint8 类型本质上没有区别,它表示的是 ACSII 表中的一个字符。 如下这段代码,分别定义了 byte 类型和 uint8 类型的变量 a 和 b import "fmt" func main() { var a byte = 65 // 8进制写法: var c byte = '\101' 其中 \ 是固定前缀 // 16进制写法: var c byte = '\x41' 其中 \x 是固定前缀 var b uint8 = 66 fmt.Printf("a 的值: %c \nb 的值: %c", a, b) // 或者使用 string 函数 // fmt.Pr...阅读全文

博文 2020-04-20 21:32:43 不住隔壁的王老师

Golang学习(14)——Unicode utf8包

Golang学习 - unicode/utf8 包----------------------------// 编码所需的基本数字const ( RuneError = '\uFFFD' // 错误的 Rune 或 Unicode 代理字符 RuneSelf = 0x80 // ASCII 字符范围 MaxRune = '\U0010FFFF' // Unicode 码点的最大值 UTFMax = 4 // 一个字符编码的最大长度)------------------------------------------------------------// 将 r 转换为 UTF-8 编码写入 p 中(p 必须足够长,通常为 4 个字节)// 如果 r 是无效的 Unicode 字符,则写入 ...阅读全文

博文 2017-02-10 10:20:23 1160636144

go语言之json的使用

go语言之json的使用 作为先天具有高并发的go语言,经常用于网络传输,go语言为我们提供了json的数据封装, 便于数据的交换和解析。下面来看看go语言中的json使用。代码最为明显。 重要函数 func Marshal(v interface{}) ([]byte, error) 编码成JSON数据 func Unmarshal(data []byte, v interface{}) error 将JSON数据解码 package main import ( "encoding/json" "fmt" ) type test struct { Name string `json:"test_name"` Age int `json:"test_age"` g int `json:"te...阅读全文

博文 2015-06-17 23:01:32 bojie5744

Golang的单引号、双引号与反引号

Go语言的字符串类型string在本质上就与其他语言的字符串类型不同: Java的String、C++的std::string以及Python3的str类型都只是定宽字符序列 Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 即:一个Go语言字符串是一个任意字节的常量序列。 Golang的双引号和反引号都可用于表示一个常量字符串,不同在于: 双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行) 反引号用来创建原生的字符串字面量,这些字符串可能由多行组成(不支持任何转义序列),原生的字符串字面量多用于书写多行消息、HTML以及正则表达式 而单引号则用于表示Golang的一个特殊类型:rune,类似其他语言的byte但又不完全一样,是指:码...阅读全文

博文 2018-07-25 11:30:02 sunsky303

高可用Redis服务架构分析与搭建

c基于内存的Redis应该是目前各种Web开发业务中最为常用的Key-Value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较MySQL而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。 不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。 首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出...阅读全文

go语言的字符和字符串

Go语言中的字符 在Go语言中,没有字符类型,字符类型是rune类型,rune是int32的别称。 下面用一个简单的程序来演示字符类型: package main import ( "fmt" "reflect" ) func main() { r := '我' fmt.Printf("%q的类型为:%t 二进制为:%b\n", r, r, r) rType := reflect.TypeOf(r).Kind() fmt.Printf("r的实际类型为:%s\n", rType) } 程序输出: '我'的类型为:%!t(int32=25105) 二进制为:110001000010001 r的实际类型为:int32 那我产生一个问题:Unicode字符的长度是多少?这个问题的问法有没有问题?其...阅读全文

博文 2016-10-26 14:00:01 davidsu33

windows下的go开发环境搭建

1.在goolge上下载go语言的开发包: 下载地址 现在,貌似goolge也被和谐了,能下载算你运气,我反正是链接这地方费了很长时间。 2.该环境下有两种开发包,分为.msi安装版和.zip压缩版。 msi的文件直接点击安装就行了。 而zip的需要自己设置环境变量: 系统变量名:GOROOT 值:go的位置 系统变量名:path 追加值:;%GOROOT%\bin 3.检验go是否安装成功: 在命令行输入:go env 如果安装成功的话,就可以得到类似的环境配置信息了。 4.安装集成开发环境LiteIDE: LiteIDE是一款专门为Go语言开发的跨平台轻量级集成开发环境,在其他的开发环境(如Sublime Text,Vim,Eclipse......等)也可以。 下载开发包: 点击下载 ...阅读全文

博文 2016-01-27 14:00:01 yueqinglkong

golang单点推送

package main import ( "encoding/json" "flag" "fmt" "log" "net/http" "time" "config" "framework/logger" "global" "models/function" "models/schema" "github.com/go-redis/redis" "github.com/gorilla/websocket" "github.com/labstack/echo" ) var clients = make(map[*websocket.Conn]bool) var broadcast = make(chan Message) var upgrader = websocket.Upgrader{Ch...阅读全文

博文 2017-12-08 06:00:02 zhangym

时间序列数据的处理

摘要: 随着云计算和IoT的发展,时间序列数据的数据量急剧膨胀,高效的分析时间序列数据,使之产生业务价值成为一个热门话题。阿里巴巴数据库事业部的HiTSDB团队为您分享时间序列数据的计算分析的一般方法以及优化手段。 演讲嘉宾简介:钟宇(悠你) 阿里巴巴 数据库高级专家,时间序列数据库HiTSDB的研发负责人。在数据库、操作系统、函数式编程等方面有丰富的经验。 本次直播视频PPT,戳这里!http://click.aliyun.com/m/51142/ 本次分享主要分为以下几个方面: 1. 时序数据库的应用场景 2. 面向分析的时序数据存储 3. 时序数据库的时序计算 4. 时序数据库的计算引擎 5. ...阅读全文

go IOTA常量计数器1期

iota是golang语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。 举例如下: 1、iota只能在常量的表达式中使用。 fmt.Println(iota) 编译错误: undefined: iota 2、每次 const 出现时,都会让 iota 初始化为0. const a = iota // a=0 const ( b = iota //b=0 c //c=1 ) 3、自定义类型 自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。 type Stere...阅读全文

博文 2018-07-15 21:34:44 WalkingInTheAir

C# Golang Python类型转换

C#的类型转换 隐式转换: int--float,int--double,float--double,容量小的转换成容量大的,可以直接隐式转换 显示转换: 1.使用(目标type)待转换数据 (int)float,(int)double,(float)double#大的数据类型转换为小的数据类型 2.使用Convert类的转换方法 Convert.ToInt32() 转换为整型(int) Convert.ToChar() 转换为字符型(char) Convert.ToString() 转换为字符串型(string) Convert.ToDateTime() 转换为日期型(datetime) Convert.ToDouble() 转换为双精度浮点型(double) Conert.ToSingl...阅读全文

博文 2020-03-11 17:33:01 stardust_0000

Golang的socket编程(三):并发Server

一、概述上一篇实现了一个server和client通信,完成了小写转大写的功能,但是是一个单任务式的响应:客户端发送连接接收响应,程序结束;服务端则接收数据响应数据也结束!就实际需要而言,并没有很大的用处,所以现在我们就给客户端和服务端添加上并发功能。 逻辑其实很简单,就是利用golang的gorutine,一旦来新的连接,就开启一个gorutine去处理,然后响应,直到客户端关闭连接。 二、服务端1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950package mainimport ( "net" "fmt" "strings")func handle(con...阅读全文

博文 2018-05-17 09:28:40 Client | 马谦的博客

配置 Sia 开发环境—— Windows 篇

1、安装Go语言编译器和 GitHub 客户端 下载 32 位 Go 语言安装包 go1.8.3.windows-386.msi (根据实际也可下载 64 位安装包 go1.8.3.windows-amd64.msi). 安装过程没有什么特别之处, 一路单击下一步即可完成安装. GitHub 的 Windows 客户端要到 desktop.github.com 页面下载, 运行安装包程序时会在线下载微软的.NetFramework4.5, 比较费时间, 有时候还会莫名其妙被和谐, 如果下载失败就需要多运行几次, 一般可以成功. 安装完毕之后, 桌面出现两个新的快捷方式, 我们手动打开如图所示的这个名为 Git Shell 的快捷方式. 双击此图标打开一个cmd窗口 2、 步骤2.1: 打开G...阅读全文

博文 2017-07-04 08:06:39 阿群1986

NSQ深入与实践

1. 介绍 最近在研究一些消息中间件,常用的MQ如RabbitMQ,ActiveMQ,Kafka等。NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,由bitly公司开源出来的一款简单易用的消息中间件。 官方和第三方还为NSQ开发了众多客户端功能库,如官方提供的基于HTTP的nsqd、Go客户端go-nsq、Python客户端pynsq、基于Node.js的JavaScript客户端nsqjs、异步C客户端libnsq、Java客户端nsq-java以及基于各种语言的众多第三方客户端功能库。 1.1 Features 1). Distributed NSQ提供了分布式的,去中心化,且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和HA(高可用)特性。 2...阅读全文

windows下配置Go+Eclipse开发环境

最近开始学习研究Go语言,工欲善其事,必先利其器,想要实现第一个 Hello World,咱们就得先把开发环境配置好! 我是windows下使用Eclipse开发,在安装配置开发环境时遇到一些问题,记录下来,以便遇到相同问题的朋友能参考 一、下载安装开发包 1.第一步,安装Go语言的开发包,下载地址:https://studygolang.com/dl 选择合适的安装包,我的系统是64位的win7,因此选择了windows-amd64.msi,下载完后双击安装程序,我是默认安装到C:\Go下。 2.第二步,安装完成后默认在系统环境变量Path后添加了Go安装目录下的bin目录C:\Go\bin,并添加了环境变量GOROOT,值为Go的安装根目录C:\Go; 此时再在环境变量中添加Go的工作空...阅读全文

博文 2018-06-02 17:30:00 yefeng654321

Go语言使用Golang连接MongoDB数据库实现增删改查

Go语言使用Golang连接MongoDB数据库实现增删改查 1.通过mongodb服务端口号启动mongodb服务 text 2.连接mongodb数据库 3.插入数据到持久层mongodb中 4.在持久层mongodb中删除数据 5.将数据在持久层mongodb中更改 6.在数据库中查询单条或多条数据 7.显示数据库集合中元素数目 本文转载自:http://www.hemadaili.com/help/news/detail/5d54ff289f02b700084d92a5.htm...阅读全文

博文 2019-08-16 15:03:16 犀牛代理

撮合引擎开发:MVP版本

欢迎关注「Keegan小钢」公众号获取更多文章 撮合引擎开发:开篇 撮合引擎开发:MVP版本 撮合引擎开发:数据结构设计 撮合引擎开发:对接黑箱 撮合引擎开发:解密黑箱流程 撮合引擎开发:流程的代码实现 开篇文章发出去之后,我的撮合引擎被一位超级大佬(曾担任上交所的首席架构师)定位为玩具,直接将我的撮合引擎和国家级撮合引擎作对比了。如果我的撮合引擎达到上交所级别,那就不止值5万了,估计至少值500万了。不过,我的撮合引擎随着不断升级迭代,以后能达到国家级别也说不定。为了避免再次出现这种尴尬,我还是先说明清楚对此撮合引擎的定位。 MVP版本需求 《精益创业》有个核心概念叫 MVP(Minimum Viable Product),即最小可行性产品。我的撮合引擎第一个版本也是一个 MVP,只实现最...阅读全文

博文 2019-12-01 18:32:40

订阅通知 | 我的代码没有else

嗯,我的代码没有else系列,一个设计模式业务真实使用的golang系列。 前言 本系列主要分享,如何在我们的真实业务场景中使用设计模式。 本系列文章主要采用如下结构: 什么是「XX设计模式」? 什么真实业务场景可以使用「XX设计模式」? 怎么用「XX设计模式」? 虽然本文的题目叫做“订阅通知”,但是呢,本文却主要介绍「观察者模式」如何在真实业务场景中使用。是不是有些不理解?解释下: 原因一,「观察者模式」其实看起来像“订阅通知” 原因二,“订阅通知”更容易被理解 什么是「观察者模式」? 观察者观察被观察者,被观察者通知观察者 我们用“订阅通知”翻译下「观察者模式」的概念,结果: “订阅者订阅主题,主题通知订阅者” 是不是容易理解多了,我们再来拆解下这句话,得到: 两个对象 被观察者 -> ...阅读全文

博文 2020-04-12 18:32:43 TIGERB

iota: Golang 中优雅的常量

注:该文作者是 Katrina Owen,原文地址是 iota: Elegant Constants in Golang 有些概念有名字,并且有时候我们关注这些名字,甚至(特别)是在我们代码中。 const ( CCVisa = "Visa" CCMasterCard = "MasterCard" CCAmericanExpress = "American Express" ) 在其他时候,我们仅仅关注能把一个东西与其他的做区分。有些时候,有些时候一件事没有本质上的意义。比如,我们在一个数据库表中存储产品,我们可能不想以 string 存储他们的分类。我们不关注这个分类是怎样命名的,此外,该名字在市场上一直在变化。 我们仅仅关注它们是怎么彼此区分的。 const ( CategoryBook...阅读全文

博文 2017-02-09 13:41:34 yexiaobai

高可用Redis服务架构分析与搭建

基于内存的Redis应该是目前各种Web开发业务中最为常用的Key-Value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较MySQL而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。 不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。 首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出现...阅读全文

golang爬坑:操作Linux命令

通常在启动项目服务程序的时候,需要判断该服务是否已经被启动,一般的做法有两种,其一是每次启动后将pid写入文件中,启动的时候读取这个文件,如果里面有数值,就表示服务已启动;另一种是通过shell命令查找: ps -ef | grep XXX | grep -v grep | awk '{print $2}' 很多语言都可以直接执行这行命令;偏偏go语言不行,因此,我们可以利用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 38 39 40 41 42 43 44 45 46 47 48 ...阅读全文

博文 2016-10-15 17:00:02 jiayouzl

FPGA资源平民化的新晋- F3 技术解析

摘要: FPGA (现场可编程门阵列)由于其硬件并行加速能力和可编程特性,在传统通信领域和IC设计领域大放异彩。一路走来,FPGA并非一个新兴的硬件器件,由于其开发门槛过高,硬件加速算法的发布和部署保护要求非常高,FPGA的使用一直是高冷的美人,没有走入平常百姓家。 FPGA (现场可编程门阵列)由于其硬件并行加速能力和可编程特性,在传统通信领域和IC设计领域大放异彩。一路走来,FPGA并非一个新兴的硬件器件,由于其开发门槛过高,硬件加速算法的发布和部署保护要求非常高,FPGA的使用一直是高冷的美人,没有走入平常百姓家。也就导致FPGA的计算潜力还没有得到深入的挖掘。 阿里云虚拟化团队异构计算和高性能计算团队一直致力于将计算资源"平民化";高性能计算团队在做的E-HPC就是要让所...阅读全文

订阅通知 | 我的代码没有else

嗯,我的代码没有else系列,一个设计模式业务真实使用的golang系列。 前言 本系列主要分享,如何在我们的真实业务场景中使用设计模式。 本系列文章主要采用如下结构: 什么是「XX设计模式」? 什么真实业务场景可以使用「XX设计模式」? 怎么用「XX设计模式」? 虽然本文的题目叫做“订阅通知”,但是呢,本文却主要介绍「观察者模式」如何在真实业务场景中使用。是不是有些不理解?解释下: 原因一,「观察者模式」其实看起来像“订阅通知” 原因二,“订阅通知”更容易被理解 什么是「观察者模式」? 观察者观察被观察者,被观察者通知观察者 我们用“订阅通知”翻译下「观察者模式」的概念,结果: “订阅者订阅主题,主题通知订阅者” 是不是容易理解多了,我们再来拆解下这句话,得到: 两个对象 被观察者 -> ...阅读全文

博文 2020-04-12 18:34:25 TIGERB