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

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

Golang Module 帮助文档翻译

备注:本猿翻译水平有限,请各位看客见谅 翻译内容: go1.11 版本中 go help modules文档内容 总述 模块是Go Packages关联的集合,是源代码交换和版本控制的单元。 Go命令直接支持使用模块,包括记录和解决对其他模块的依赖。 模块取代了传统的基于GOPATH的方法来指定在给定的构建中使用哪个源文件。 模块的初级支持 Go 1.11包含了对Go Module的初级支持,包括一个新的感知模块命令“go get”。我们打算继续修正这一支持,并同时保持兼容性,直到它可以被宣布为正式版本(不再是初级版本)。在之后的版本,我们会移除对GOPATH和旧的“go get”命令的支持。获得最新Go 1.11 Module技术支持的最快途径是将你的代码仓库check out到GOPAT...阅读全文

博文 2019-02-15 10:34:44 星云数联

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

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

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

go的卸载与重装(linux系统)

前言 我在安装配置(非本人操作)了go的linux虚拟机上,尝试用 $ go get github.com/astaxie/beego 获取beego框架。但是,却出现了一个奇怪的错误: go: cannot find main module; see 'go help modules' ,怎么查询都没有找到问题原因。这对于一个刚接触go和linux的新手来说,是手足无措的。于是,心生一计,卸载重装。 一、卸载 1.删除GOROOT目录 用 $ go env 找到GOROOT目录,在我的linux上为 srv/go ,而常见的应该是 usr/local/go 。然后,使用$ rm -rf删除该目录。(用这个命令是不可能的,这辈子都不可能用的,这个命令删除文件真香)我不建议这样删除,因为与Wi...阅读全文

博文 2019-02-20 12:34:41 99MyCql

忘掉GOPATH,迎接Go modules,进入Go项目依赖库版本管理新时代

Go SDK 1.13测试版马上就要发布了。从此版本开始,Go modules依赖库版本管理特性将正式开始推荐使用。本文将解释一些和Go modules相关的一些命令和概念。 Module(模块)定义为一些Go代码包的集合。通常体现为一个含有若干代码包的目录。每个模块可以发布一系列版本。版本号使用semver(语义化版本)表示。一个模块可能依赖于其它若干模块;准确说来,是依赖于其它若干模块的各自的某个具体版本。每个模块可以在自己的根目录下的go.mod文件中指定其所依赖的各个模块的具体版本。 如果你所维护的某个模块尚未使用Go modules管理依赖,你可以打开一个命令行终端,进入此模块根目录,运行下面这条命令将此模块转换为一个使用Go modules管理依赖的模块。 go mod init...阅读全文

博文 2019-05-23 07:34:47 liulaomo

.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

第一个go程序

1)建立运行环境 版本:Go 1.3 beta 1 下载地址:https://code.google.com/p/go/wiki/Downloads 选择自己操作系统的版本,建议下载安装版本,不推荐ZIP,按默认步骤安装,这样程序会帮助我们添加环境变量。 2)编写第一个程序 hello.go package main import "fmt" func main() { fmt.Printf("hello") } 注意:go的花括号不能随便放置 姑且将hello.go文件放置D盘根目录 3)测试 运行cmd D: go run hello.go 4)结果 hell...阅读全文

博文 2015-06-18 09:01:04 wow4464

算法导论习题: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高级架构开发

Golang modules 初探

今天天色刚刚亮起,起床看到golang 1.11正式发版了,有着两个重要的特性:modules和WebAssembly。 本博文只要说的是modules,congJava转golang的同学肯定是对golang的包管理充满了无奈之情,我也曾在博客中介绍过glide,也介绍过dep,现在我们再一次升级介绍modules。 什么是modules 现在都在说modules,那么它是什么? 到文档看看 Modules, module versions, and more: A module is a collection of related Go packages. Modules are the unit of source code interchange and versioning. Th...阅读全文

博文 2018-08-27 00:35:54 梦朝思夕

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 小韩说课

Go1.11 module 简明使用指南

Go Mod 命令 download download modules to local cache (下载依赖的module到本地cache)) edit edit go.mod from tools or scripts (编辑go.mod文件) graph print module requirement graph (打印模块依赖图)) init initialize new module in current directory (再当前文件夹下初始化一个新的module, 创建go.mod文件)) tidy add missing and remove unused modules (增加丢失的module,去掉未用的module) vendor make vendored co...阅读全文

博文 2019-01-23 11:34:45 柳浪闻笛

golang-go获取第三方依赖

# 在项目目录下,执行 # 获取想要的依赖 go get xxxxxxxxx 但是获取gethub上的可以成功,国外的确实失败 那么就可以使用一个工具 gopm 先要获取 gopm go get -v github.com/gpmgo/gopm 然后通过 gopm 获取第三方依赖 gopm get -g -v [-u] xxxxxxx ================= 分割线 ==================== 如果需要编译到 bin 目录 和 产生 pkg 可执行文件 go install xxxxxxx(第三方项目的根目录) 表示编译后在放到bin目录下 # 如果需要编译 go build xxxxxxxx # 直接编译运行 go run # 产生可执行文件 go install...阅读全文

博文 2019-12-17 22:32:44 爱吃豆包

sublime Text2:go环境配置

1.安装 http://blog.csdn.net/love_se/article/details/7754274 2.Go编译配置:Tool=>Build System=>Go,然后就可以按ctrl+B或者F7编译了 3. GoCode提示问题: 如果没有把当前的工程目录设置成gopath那么gcode提示会有问题,主要表现为:无法自动提示当前工程里其他package的内容 解决方法: 把下面脚本放到工程的根目录,用这个启动工程 (注:start C:\Users\lenovo\Dropbox\golang\Sublime\sublime_text_cracked.exe换成你自己的sublime的路径即可) set PROMPT=$g$s set GOPATH=%~dp0 mkdir "...阅读全文

博文 2015-06-17 20:12:48 varding

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

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

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

2018-07-23

0702 历史性的一天。一大早坐在小铁的电动车后座上,我到了公司最后一次打卡,吃了一份早餐,去了一趟工位,看了一眼esp和w3,拿到离职证明后,刚毕业的这一年终于尘埃落定。从上海到杭州的距离很短动车也很快,我从初入社会的青涩到如今的渐渐成熟,却已经走了不少弯路、花费了一年时光。新公司的技术氛围很棒,有着理想的工作场所,中等规模正好适合混迹社会不久的我。随着各行各业都重视IT技术,服务器端、网络层的开发必然有很大的市场需求,所以在这个领域做到精通,将会让我达到新的人生高度。 0703 我昨天回家后,搬行李上楼、打扫、整理归类,一整个晚上都待在房间里;疲惫困顿却充实不已,果然新环境带来的兴奋感,可以抵消很多的辛酸和不快。另外杭州的消费水平确实不低,今天早、中、晚三顿饭吃下来,6+23+16=45...阅读全文

博文 2018-07-23 18:34:46 brightsunp

兄弟连区块链培训分享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

关于go module的使用

在go1.11版本以后go modules成为了go官方的依赖管理方式,替换一起的Godep。使用go modules管理依赖后会在当前的项目根目录下生成go.mod和go.sum. go.mod 在其中记录当前的项目的所有依赖,文件格式如下: module go-demos go 1.13 require github.com/x-mod/routine v1.2.7 或 module go-demos go 1.13 require ( github.com/x-mod/routine v1.2.7 ) replace ( // 针对有些被墙不能下载 可以替换成其他依赖包 golang.org/x/text v0.3.0 => github.com/golang/text v0.3.0 ...阅读全文

博文 2019-12-26 14:32:51 神奇的考拉

go mod 使用

简介 go 1.11以后提供了新的管理依赖的方式, 使得管理依赖,尤其是依赖版本更加的明确且易于管理, 这种方式就是go mod 在项目的根目录有个go.mod的文件, 文件的内容是所有依赖的go package的集合, 以文件树的形式存在. 文件中中明确的说明了go所有依赖的路径及版本 配置 # 这三个路径一直存在 export GOPATH=$HOME/go export GOROOT=/usr/local/go export GOBIN=$GOPATH/bin # 支持 go mod 需要配置如下两个选项 # 开启go mod export GO111MODULE=on # 配置go mod使用的依赖库代理服务器 export GOPROXY=https://goproxy.io 创建...阅读全文

博文 2020-04-06 21:32:56 allenhaozi

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

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

Notepad++配置Golang关键字高亮

1.Go语言支持包下载到后,解压会得到两个xml,一个是userDefineLang_Go.xml,一个是go.xml。http://notepad-plus.sourceforge.net/commun/userDefinedLang/go.zip2.配置Notepad++1).打开userDefineLang_Go.xml,把文件开头和结尾的注释取消掉。2).把userDefineLang_Go.xml拷贝到Notepad++的安装目录,我是放到了根目录。把go.xml拷贝到Notepad++安装目录下的 plugins\APIs 下面。3).打开Notepad++,在菜单栏中选择语言 -> 自定义语言。在弹出的对话框里点击Impor...阅读全文

博文 2018-06-27 12:34:47 々菰單

php-composer作用分析

项目开发过程中,拓展包的引入能够帮助我们快速且强大的开发我们的项目,js中的node install ,golang中的go mod而php我们用的就是composer,像这样 composer require lingyuyizhipao/http 当然你也可以用原声自己慢慢造轮子,但引入可以帮助更好更快的做更多的事情,那么composer是如何帮助我们的呢,下面来好好分析分析。其实我们的初衷是我们需要使用的对象能够给我们使用就行了,但是计算机肯定是要code加载到内存中去运行才行的啊,那就意味着每使用一个对象之前php就得require_once该对象的class文件到内存中,麻烦!spl_autoload_register 这个函数就是php专门用来解决这个问题的,它可以帮我注册一个我...阅读全文

博文 2019-05-11 12:34:50 Best博客

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

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

在 Go 中如何串联 HTTP 处理程序

你好,今天我想分享一下,在 `Go` 语言中串联 HTTP 处理器。 在使用 Go 之前, 我使用 Nodejs + [ExpressJS](http://expressjs.com/en/4x/api.html) 去编写 HTTP 服务器应用。 这个框架提供了很简单的方法去使用中间件和串联很多路由节点,因此,不必指定完整的路由路径来为其添加处理程序。 ![图1](https://raw.githubusercontent.com/studygolang/gctt-images/master/chain-http-hanlders/1.png) 这个想法是通过分割你的路由和处理每一个部分,串联到处理器,每个处理程序只负责一部分。它理解起来非常简单且非常容易使用和维护,所以首先我尝试在 Go...阅读全文

博文 2018-01-12 22:18:02 polaris

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 | 马谦的博客

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

linux 部署golang 项目

很多朋友开发环境是windows,需要把项目部署在linux上面,并且后台运行项目,现在我们直接进行操作1.先在打开cmd切换到你所在的项目文件名这里。 bee pack -be GOOS=linux2.把生成的打包文件上传到你项目的根目录,并且 把上传的文件 sudo chmod 777 权限设置为777 3.最后执行 ./main 就行了。如果想让项目在后台执行:执行 nohup ./main & ,这样就可以程序在后台运行了...阅读全文

博文 2019-07-09 15:32:48 会飞的小盒子

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

前端项目中使用husky做预检查

具备基本工程素养的同学都会注重编码规范,而代码风格检查(Code Linting,简称 Lint)是保障代码规范一致性的重要手段。 使用 Lint 会有什么好处呢?在我看来至少具有如下 3 点: 更少的 Bug 更高的开发效率,Lint 很容易发现低级的、显而易见的错误 更高的可读性 很多时候我们lint的校验是放在持续集成阶段,大概流程如下: 代码提交 --> 跑 CI 发现问题(远程) --> 本地修复问题 --> 重新提交 --> 通过检查(远程) 但这样有一个问题,我们的 CI(持续集成) 往往不是仅仅只做 Lint工作,它还有会有很多其它的任务(如打包文件,静态资源上传 CDN 等),这样就导致特别的浪费时间,往往可能需要几分钟之后你才会发现问题,或者有的时候你根本就没有发现你的 ...阅读全文

博文 2019-07-02 18:32:57 面的技术杂坛

有关 dep 对子目录(二级包)的拉取方式

[dep](https://github.com/golang/dep)是 Go 官方的依赖管理工具,现在已经比较成熟了,我个人也使用了一段时间,觉得很不错。 没有 glide 那么多 bug,比 godep 更加智能。 但是今天总算是发现它一个弊端了,dep 不会对二级目录进行拉取,默认要求所有 .go file 都放在顶级目录。 例如 [gin-swagger](https://github.com/swaggo/gin-swagger) 这个项目在使用的时候分别要导入顶级包和子包: ```` import "github.com/swaggo/gin-swagger" // gin-swagger middleware import "github.com/...阅读全文

小白求助 退出登录时点击链接自动跳转到根目录

登录时跳转都正常,退出时就会自动跳转到根目录,看了好几天没有找到问题原因在哪儿,遇到这种问题我们通常应该怎么去分析? ![image.png](https://static.studygolang.com/180430/f80c3b30f9eefb723461fbc58fa05ffc.png) ![image.png](https://static.studygolang.com/180430/8208f51879a7816be5070acb9557f5d9.png) ...阅读全文

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