如何正确理解消息送达成功率?
初接触极光推送的使用者,为了衡量消息推送的质量。经常会纠结到消息的"送达率"这个概念.那么究竟什么是送达率呢?或者如何正确理解消息的送达情况呢? 基本概念 先来看与消息送达相关的几个基本概念: iOS 目标用户数:匹配推送条件的 iOS 用户的数量。 iOS 推送成功数:推送到 APNS 并被 APNS 成功接收的数量。如果 device token 变更,过期或者与推送环境不匹配则不会成功。 Android 目标用户数:匹配推送的条件的Android 用户数(1个月内与服务器有过连接的用户。如果超过1个月都没有与 JPush server 产生任何连接,那么将不向此用户推送)。 Android 在线推送数:消息推送时,目标用户在线...阅读全文
golang-MD5
什么是MD5? MD5:为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321. MD5算法具有以下特点: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。 3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。 4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。 下面是在goalng下如何实现md...阅读全文
Golang的socket编程(一):常用数据结构和函数介绍
工作的原因接触到socket,要使用socket实现一个长连接。之前只在C/C++上用过socket,而且在学校的时候也只是简单的做聊天室小程序,并没有涉及到长连接。突然用到工作项目上,心里还是有点悬的,毕竟网上的资料也不是很多。这里就一步一步记录下学习的过程、遇到的问题以及最重要的——解决问题的方法。 一、说明golang中的socket需要用到net包,里面封装好了很多常用的函数方法以及元素类型。而且无需像C一样要经历socket,bind,listen,accept等等流程,只需要简单的几步流程就能完成,非常方便。 二、IP类型net包中定义的ip类型直接就是byte数组: 1type IP []byte 我们可以使用func parseIP(s string) IP 来把一个ip地址...阅读全文
Golang 笔记之深入浮点数
引言 下面的一段简单程序 0.3 + 0.6 结果是什么? var f1 float64 = 0.3 有人会天真的认为是0.9,但实际输出却是0.8999999999999999(go 1.13.5)问题在于大多数小数表示成二进制之后是近似且无限的。 以0.1为例。它可能是你能想到的最简单的十进制之一,但是二进制看起来却非常复杂:0.0001100110011001100… 其是一串连续循环无限的数字(涉及到10进制转换为2进制,暂不介绍)。 结果的荒诞性告诉我们,必须深入理解浮点数在计算机中的存储方式及其性质,才能正确处理数字的计算。 golang 与其他很多语言(C、C++、Python…)一样,使用了IEEE-754标准存储浮点数。 IEEE-754 如何存储浮点数 IEEE-754规...阅读全文
Go语言核心之美 2.2-浮点数
版权声明:本文为Sunface(孙飞)原创文章,转载请注明出处 https://blog.csdn.net/abv123456789/article/details/50904902 Go提供了两种size的浮点数,float32和float64。它们的算术规范是由IEEE754国际标准定义,现代CPU都实现了这个规范。 浮点数能够表示的范围可以从很小到很巨大,这个极限值范围可以在math包中获取,math.MaxFloat32表示float32的最大值,大约是3.4e38,math.MaxFloat64大约是1.8e308,两个类型最小的非负值大约是1.4e-45和4.9e-324。 float32大约可以提供小数点后6位的精度,作为对比,float64可以提供小数点后15位的精度。通常情...阅读全文
老虞学GoLang笔记-变量声明与初始化
变量声明 官方DOC: http://golang.org//spec#Variable_declarations Go中使用全新的关键字var来声明变量。var我们并不陌生,在Javascript 和C#中均有出现。不同的是Go和C#中变量属于强类型,在声明变量后就不允许改变其数据类型。 声明变量有多种形态: var a int //声明一个int类型的变量 var b struct { //声明一个结构体 name string } var a = 8 //声明变量的同时赋值,编译器自动推导其数据类型 var a int = 8 //声明变量的同时赋值 var { //批量声明变量,简洁 a int b string } 变量初始化 变量的初始化工作可以在声明变量时进行初始化,也可以先声...阅读全文
老虞学GoLang笔记-变量声明与初始化
变量声明 官方DOC: http://golang.org//spec#Variable_declarations Go中使用全新的关键字var来声明变量。var我们并不陌生,在Javascript 和C#中均有出现。不同的是Go和C#中变量属于强类型,在声明变量后就不允许改变其数据类型。 声明变量有多种形态: var a int //声明一个int类型的变量 var b struct { //声明一个结构体 name string } var a = 8 //声明变量的同时赋值,编译器自动推导其数据类型 var a int = 8 //声明变量的同时赋值 var { //批量声明变量,简洁 a int b string } 变量初始化 变量的初始化工作可以在声明变量时进行初始化,也可以先声...阅读全文
CUDA 及其 golang 调用 - 从入门到放弃 - 1.初见
环境: NVIDIA GeForce GTX 1050 cuda 10.2.89 windows visual studio 2017 windows SDK 10.0.14393.0 go 1.13.4 windows/amd64 我们在文件 lib.cu 中实现一个 GPU 计算的浮点数向量内积函数,以及一个 CPU 的入口函数进行数据传递和调用: __global__ void devDot(double *x, double *y, int n, double *r) { double res = 0.0; for (int i = 0; i < n; i++) { res += x[i] * y[i]; } *r = res; } extern "C" __declspec(dll...阅读全文
抽奖问题分析
普通抽奖问题 问题描述 用户随机抽奖,数据如下: // map中,key代表用户名,value代表成用户下单数 var users map[string]int64 = map[string]int64{ "a": 10, "b": 6, "c": 3, "d": 12, "f": 1, } 思路 随机问题,一般就是通过随机函数从某个范围内随机取出某个数值,则该数值对应的就是中奖用户 在这里,如果我们能给map中每个元素设置对应的索引,即转化为数组,是不是就可以解决问题了呢? 代码实现 func GetAwardUserName(users map[string]int64) (name string) { size := len(users) awardIndex := rand.Intn...阅读全文
浅析 Go 语言的数字常量
## 概述 Go 语言的常量的实现方法是 Go 的一个亮点。在 Go 的语言规范中的定义[常量规则](http://golang.org/ref/spec#Constants) 是 Go 独有的。 它们在编译器级别提供 Go 所需要的灵活性,使我们编写的代码可读且直观,同时仍保持类型安全。 本文将会探讨”什么是数字常量“、”它们在最简单的情况下时有怎样的行为“以及”怎样去探讨它们才是最好的“这几个方面,其中会有很多吓人的细节问题、名词和概念,所以本文将会放慢速度慢慢的剖析之。 如果你准备好瞧瞧数字常量的底下有些啥,那就跟我撸起袖子开始干吧: ## 无类型和有类型的数字常量 在 Go 语言中,你既可以在声明常量时指定类型,也可以不指定类型。当我们在代码中声明一个字面量时,我们其实就声明了一个匿...阅读全文
golang比较浮点数是否相等
由于小数二进制和十进制转换的时候,会有精度丢失的问题,所以我们在比较浮点数是否相等,指的是在一定精度范围内的两个浮点数是否相等。 参看了网上其他人的实现 实现1,实现2 基本上都一样,于是我就改了几个值验证了一下, 结果发下 package main import ( "fmt" "math" ) const MIN = 0.000001 // MIN 为用户自定义的比较精度 func IsEqual(f1, f2 float64) bool { return math.Dim(f1, f2) < MIN } func main() { a := 0.9 b := 1.0 if IsEqual(a, b) { fmt.Println("a==b") }else{ fmt.Println("a...阅读全文
golang编程之时间编程
本文转载于:http://blog.chinaunix.net/uid-24774106-id-4006530.html 编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学习,毕竟这是官方文档干的事情。我们初步的学习下常用的函数。 第一个是UNIX epoch time,确切的说就是自1970-01-01 00:00:00 GMT以来的秒数,不知道如何获取的,可以在shell下执行 date +%s manu@manu-hacks:~/code/go/self$ date +%s 13...阅读全文
golang 浮点数操作
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lengyuezuixue/article/details/81354749 数据库中金额元存储的数据结构使用的是decimal(15,2),golang中使用float64保存变量内容。通过转换将 float64 -> int64 最简单的方式:int64(float64 * 100),但是由于浮点数在计算机内的表示方式问题导致有一部分数据会出现问题, 例如: var v = 67.6 fmt.Println(int64(v *100)) 输出结果为:6759 解决方法: 使用"github.com/shopspring/decimal"包,将对浮点数进行精确计算,例如: f1 := deci...阅读全文
理解Golang的Time结构
在golang中创建并打印一个时间对象,会看到如下输出 2018-10-26 14:15:50.306558969 +0800 CST m=+0.000401093 前面表示的意义好理解,分别是年月日和时间时区,最后的m=+xxxx这部分代表什么呢? Monotonic Clocks 和 Wall Clocks 根据golang的time包的文档可以知道,golang的time结构中存储了两种时钟,一种是Wall Clocks,一种是Monotonic Clocks。 Wall Clocks,顾名思义,表示墙上挂的钟,在这里表示我们平时理解的时间,存储的形式是自 1970 年 1 月 1 日 0 时 0 分 0 秒以来的时间戳,当系统和授时服务器进行校准时间时间操作时,有可能造成这一秒是20...阅读全文
Go语言核心技术(卷一)之2.1-整数
第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数,浮点数,复数,每一种都包含了大小(size)不同的数值类型,例如有符号整数包含int8,int16,int32,int64,int。每一种数值类型都会决定值的大小和符号(正负),我们...阅读全文
学习记录:go语言中读写文件的小练习
package main import ( "os" "fmt" "bufio" "strings" "strconv" ) func main() { f, _:=os.OpenFile("a.txt", os.O_RDONLY, 0666) defer f.Close() m:=bufio.NewReader(f) char:=0 words:=0 lines:=0 for{ s, ok:=m.ReadString('\n') fmt.Println(s) char+=len(s) words+=len(strings.Fields(s)) lines++ if ok!=nil{ break } } fmt.Println("char:"+toString(char)+",words:"...阅读全文
golang中encoding/binary包
1、golang包中的binary包是什么? 2、binary为我们开发者提供了哪些内容?以及怎么使用? 3、编解码有哪几种方法? 转化成二进制格式与原本数据转字符串相比会更节省空间 一、golang包中的binary包是什么? 此包实现了对数据与byte之间的转换,以及varint的编解码。 二、binary为我们开发者提供了哪些内容?以及怎么使用? 数据的byte序列化转换 func Read(r io.Reader, order ByteOrder, data interface{}) error func Write(w io.Writer, order ByteOrder, data interface{}) error func Size(v interface{}) int u...阅读全文
Golang strconv包使用
// atob.go ------------------------------------------------------------ // ParseBool 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False. // 其它任何值都返回一个错误 func ParseBool(str string) (value bool, err error) func main() { fmt.Println(strconv.ParseBool("1")) // true fmt.Println(strconv.ParseBool("t")) // true fmt.Println...阅读全文
Go文件操作大全
## 1,介绍 在做对视频文件的处理时,对使用`Go`做文件操作有了锻炼。同时在网上搜索了相关文章和资料,将文件操作的例子整理如下。 [原文连接](https://niannian.cleer.club/category/Go%E6%96%87%E4%BB%B6%E6%93%8D%E4%BD%9C%E5%A4%A7%E5%85%A8/) ## 2,基本操作 ### 2.1 创建空文件 ```go package main import ( "log" "os" ) var ( newFile *os.File err error ) func main() { newFile, err = os.Create("test.txt") if err != nil { log.Fatal(err...阅读全文
gRPC源码/transport/流控
流控 代码 https://github.com/messixukej... 在liangzhiyang/annotate-grpc-go基础上补充了部分注释 发送流控 HTTP/2 流量控制的目标,在流量窗口初始值的约束下,给予接收端以全权,控制当下想要接受的流量大小。 算法: 两端(收发)保有一个流量控制窗口(window)初始值。 发送端每发送一个DATA帧,就把window递减,递减量为这个帧的大小,要是window小于帧大小,那么这个帧就必须被拆分。如果window等于0,就不能发送任何帧。 接收端可以发送 WINDOW_UPDATE帧给发送端,发送端以帧内指定的Window Size Increment作为增量,加到window上。 // 用于发送流控。 将当前可用的quota(...阅读全文
[翻译] effective go 之 Functions
Functions Multiple return values 返回多个值 One of Go's unusual features is that functions and methods can return multiple values. This form can be used to improve on a couple of clumsy idioms in C programs: in-band error returns (such as -1 for EOF) and modifying an argument. Go的函数和方法可以同时返回多个值 这个特性可以改善C程序中的不太理想的多值返回形式 -- 参数传入指针 通过这个指针来修改参数 另外再返回一个值 比如-...阅读全文
常用Python数据类型转换方法 学习python课程
Python 支持四种不同的数值类型,分别是整型、长整型、浮点型和复数,这些类型的数据有各自的特点,在使用过程中也可以进行类型转换,具体转换方法如下: int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将x转换到一个浮点数 complex(real [,imag ]) 创建一个复数 str(x ) 将对象 x 转换为字符串 repr(x ) 将对象 x 转换为表达式字符串 eval(str ) 用来计算在...阅读全文
Go语言学习 第四章 基本数据类型
> Go语言数据类型分为五种: > > + 布尔类型 > + 整型类型 > + 浮点类型 > + 字符类型 > + 字符串类型 > > | **类型** | **名称** | **长度** | **零值** | **说明** | > | --------- | -------- | -------- | -------- | --------------------------------------------- | > | bool | 布尔类型 | 1 | false | 其值不为真即为假,不可以用数字代表true或false | > | byte | 字节型 | 1 | 0 | uint8别名 | > | int, uint | 整型 | - | 0 | 根据操作系统设定数据的值。 ...阅读全文
go源码阅读笔记(math.2)
go源码阅读笔记(math.2) 浮点数与整形数转换math/unsafe.go 在阅读math代码的时候,发现Float64bits以及Float64frombits使用非常多,先查看一下这两个函数是做什么用的 package math import "unsafe" // Float32bits returns the IEEE 754 binary representation of f. func Float32bits(f float32) uint32 { return *(*uint32)(unsafe.Pointer(&f)) } // Float32frombits returns the floating point number corresponding // to ...阅读全文
golang中crypto/md5包
md5包实现了MD5哈希算法 先介绍这个包内里的内容,然后再给出生成一个md5值,go使用md5比较复杂很多,php的话,就直接md5(值),就生成md5值了,php更加适合用于生产,而不是学习。 常量 const BlockSize = 64 // MD5字节块大小 const Size = 16 // MD5校验和字节数 func Sum(data []byte) [Size]byte 返回数据data的MD5校验和 func New() hash.Hash 返回一个新的使用MD5校验的hash.Hash接口 h := md5.New() h.Write([]byte("123456")) fmt.Println(h.BlockSize()...阅读全文
beego api项目求教
 如上图,我希望在点击alarm_receive的post的时候跳转到我自定义的url,替代这个bee框架帮我生成的url,请问该怎么改?修改哪一个文件?swagger的相关文件要不要对应修改?麻烦说的详细点,在线等...阅读全文
go中 elastic 聚合统计(1)
go调用elastic使用es聚合统计:1、查询指定金额的订单数func queryCount(indexstring) {client :=getCli()aggsMatch :=es.NewMatchQuery("amount", 1000)result, err := client.Search().Index(index).Size(0).Query(aggsMatch).Do(context.Background())if err !=nil {fmt.Println("err:", err)return}fmt.Sprintf("count:%v,%v", result.Hits.TotalHits, err)}2、字段值汇总和去重复值func aggeQueryCount(in...阅读全文
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 字符集仅仅...阅读全文
GoLang Go 基础类型
Boolean 布尔值的类型为bool,true或false,默认false var isActive bool // 全局变量声明 var enabled, disabled = true, false // 忽略类型的声明 func test() { var available bool // 一般声明 valid := false // 简短声明 available = true // 赋值操作 } 数值类型 整数类型 整数类型有无符号和带符号两种。 Go同时支持int和uint,这两种类型的长度相同,但具体长度取决于不同编译器的实现。Go里面也有直接定义好位数的类型:rune, int8, int16, int32, int64和byte, uint8, uint16, uint32...阅读全文
兄弟连区块链教程btcpool矿池源码分析JobMaker模块解析
btcpool矿池-JobMaker模块解析 核心机制总结 同时监听kafka KAFKA_TOPIC_RAWGBT和KAFKA_TOPIC_NMC_AUXBLOCK,以支持混合挖矿 接收的Gbt消息,如果与本地时间延迟超过60秒将丢弃,如果延迟超过3秒将打印log 可用的Gbt消息,将以gbtTime+isEmptyBlock+height来构造key写入本地Map,另gbtHash也会写入本地队列 本地gbtHash队列仅保存最近20条,本地gbtMap中Gbt消息有效期:非空Gbt有效期90秒,空Gbt有效期15秒,过期将清除 有效期可从配置文件中指定 Gbt消息如果高度低于本地Gbt高度,且本地Gbt非空,且与本地时间间隔没超过2倍stratumJobInterval_,Gbt消息将...阅读全文
docker 的windows 7 详细安装教程
文章不错,点击进入:http://blog.csdn.net/zistxym/article/details/4291833...阅读全文
兄弟连区块链教程btcpool矿池源码分析JobMaker模块解析
兄弟连区块链教程btcpool矿池源码分析JobMaker模块解析,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。# btcpool矿池-JobMaker模块解析## 核心机制总结* 同时监听kafka KAFKA_TOPIC_RAWGBT和KAFKA_TOPIC_NMC_AUXBLOCK,以支持混合挖矿* 接收的Gbt消息,如果与本地时间延迟超过60秒将丢弃,如果延迟超过3秒将打印log* 可用的Gbt消息,将以gbtTime+isEmptyBlock+height来构造key写入本地Map,另gbtHash也会写入本地队列* 本地gbtHash队列仅保存最...阅读全文
Go语言核心之美 2.1-整数
第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数,浮点数,复数,每一种都包含了大小(size)不同的数值类型,例如有符号整数包含int8,int16,int32,int64,int。每一种数值类型都会决定值的大小和符号(正负),我们...阅读全文
「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...阅读全文
Golang代码搜集-基于RSA的公钥加密私钥解密-私钥签名公钥验证
2018年03月02日 22:29:54 阅读数:465 首先由genkey.go生成公钥和私文件,在rsa.go里使用生成的公钥和私钥进行加密和解密 //文件 genkey.go //生成公钥和私钥 pem文件 ```go package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "flag" "log" "os" ) func main() { var bits int flag.IntVar(&bits, "b", 1024, "秘钥长度,默认为1024") if err := GenRsaKey(bits); err != nil { log.Fatal("秘钥文件生成失败") } lo...阅读全文
Golang不同类型比较
在日常开发过程中难免会遇到各个类型的变量的比较以及运算操作,这里我们做了一些简单的汇总,希望能给各位同学在开发中带来帮助。 这里先上一波关系运算符==,!=,<,<=,> 和 >=。 float浮点数比较 golang 支持两种浮点float32和float64,众所众知,涉及浮点数比较或运算是会遇到精度问题,具体要根据golang实现IEEE 754的情况定。 默认情况下,float32精度是小数后7位,float64精度是小数点后15位。 如例1: var a float32 = 1.00000001 var b float32 = 1.000000000001 var c float32 = 1.0000001 var d float32 = 1.000000000001 fmt.Pr...阅读全文
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 字符,则写入 ...阅读全文
Go语言核心之美 2.1-整数
版权声明:本文为Sunface(孙飞)原创文章,转载请注明出处 https://blog.csdn.net/abv123456789/article/details/50902368 第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数...阅读全文
go语言总结第二章
var和const :变量和常量的声明 var varName type 或者 varName : = value package and import: 导入 func: 用于定义函数和方法 return :用于从函数返回 defer someCode :在函数退出之前执行 go : 用于并行 select 用于选择不同类型的通讯 interface 用于定义接口 struct 用于定义抽象数据类型 break、case、continue、for、fallthrough、else、if、switch、 goto、default 流程控制 chan用于channel通讯 type用于声明自定义类型 map用于声明map类型数据 range用于读取slice、map、channel数据大写,即...阅读全文
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),就是一个唯一的值。例如 康 的码点就...阅读全文
Go语言入门——Hello World
Go语言入门——Hello World 1.环境准备: 点击这里去官网下载对应的安装文件,我下载的是go1.4.2.darwin-amd64-osx10.8.pkg。 打开Terminal,输入go version,如果能看的版本号,说明go的环境已经配置好了。 2.Hello World 照例,第一个程序依旧是Hello World,在工作目录下新建test.go文件: package main import "fmt" // this is a comment func main(){ fmt.Println("Hello World") } 保存后,执行go run test.go,可以看到已经输出了Hello World。 2015年05月21日 $(function () { $(...阅读全文
google访问hosts文件
#google hosts 2015.05.19 V2 64.233.162.84 google.com 64.233.162.84 www.google.com 64.233.162.84 m.google.com 64.233.162.84 scholar.google.com 64.233.162.84 translate.google.com 64.233.162.84 books.google.com 64.233.162.84 appengine.google.com 64.233.162.84 maps.google.com 64.233.162.84 news.google.com 64.233.162.84 images.google.com 64.233.162.84 f...阅读全文
Go学习笔记之基础数据类型
http://studygolang.com/articles/1348 1 整数 在 Go 语言中,如果不加特殊前缀,都是10进制表示,例如:“100” 整数可以直接用指数形式,例如:“1E9”,意思是 1 * (10^9),1 乘以 10 的 9 次方 整数的加减法用 + 和 - 号,乘法用 * 号,除法用 / 号, 得到的商是整数,例如 5 / 2 = 2,而 % 号是求余(取模), 例如 5 % 2 = 1 在 Go语言中,整数类型分为带符号整型和不带符号整型,接着又分别按照长度各自划分为4个类型。 带符号整型 int8 int16 int32 int64 不带符号整型 uint8 uint16 uint32 uint 64 除此之外还有默认类型 int 和 uint,目前都是32位...阅读全文
golang bytes.buffer详解
Buffer 介绍 Buffer 是 bytes 包中的一个 type Buffer struct{…} A buffer is a variable-sized buffer of bytes with Read and Write methods. The zero value for Buffer is an empty buffer ready to use. (是一个变长的 buffer,具有 Read 和Write 方法。 Buffer 的 零值 是一个 空的 buffer,但是可以使用) Buffer 就像一个集装箱容器,可以存东西,取东西(存取数据) 创建缓冲器 func main() { buf1 := bytes.NewBufferString("hello") buf2...阅读全文
阿里员工都是这样排查Java问题的,附工具单
平时的工作中经常碰到很多疑难问题的处理,在解决问题的同时,有一些工具起到了相当大的作用,在此书写下来,一是作为笔记,可以让自己后续忘记了可快速翻阅,二是分享,希望看到此文的同学们可以拿出自己日常觉得帮助很大的工具,大家一起进步。Linux命令类tail最常用的tail -fgrepawk1 基础命令2 匹配3 内建变量NR:NR表示从awk开始执行后,按照记录分隔符读取的数据次数,默认的记录分隔符为换行符,因此默认的就是读取的数据行数,NR可以理解为Number of Record的缩写。FNR:在awk处理多个输入文件的时候,在处理完第一个文件后,NR并不会从1开始,而是继续累加,因此就出现了FNR,每当处理一个新文件的时候,FNR就从1开始计数,FNR可以理解为File Numb...阅读全文
GO语言学习笔记
Go语言的基本数据类型与表达式 基本数据类型 go的数据类型可归纳如下: 基本类型 整型: int、 int8、 int16、 int32、 int64 bool: true、 false 浮点数: float32、 float64 复数: complex64、 complex128 错误(error) 构造类型 数据类型([]) 结构体类型(struct) 指针类型(*) 声明变量 1、整型(int、int8、int16、int32、int64) var i int = 1 //定义整型变量i并赋值1 var j int j = 1 // 也可以这样定义 k := 1 // 还可以这样定义 给整型赋值时需要注意 var a int // a是通用整数类型 var b int32 // b是...阅读全文
golang中encoding/base64包
go标准库中的base32包与base64包的提供的方法以及使用几乎一至,不同的地方就是就是底层实现,一个是进行base32编解码操作,另一个是进行base64编解码操作。如果是已经知道go base32包的使用的话,可以不用看下面的内容,或者是简单的过一遍。 1、golang中的base64包中有什么内容? 2、base64给我们开发者提供了什么?以及用法? 3、编码与解码各有哪几种操作? 一、golang中的base64包中有什么内容? 这个包实现了RFC 4648 里定义的 base64 编码。封装了base64的编解码操作。 二、base64给我们开发者提供了什么?以及用法? 变量 RFC 4648 里定义的标准 base64 编码方法 var StdEncoding = NewEn...阅读全文
Golang基本结构之练习(day2)
笔记: 1. 任何一个代码文件隶属于一个包 2. import 关键字,引用其他包: import(“fmt”) import(“os”) 通常习惯写成: import ( “fmt” “os” ) 3. golang可执行程序,package main, 并且有且只有一个main入口函数 4. 包中函数调用: a. 同一个包中函数,直接调用 b. 不同包中函数,通过包名+点+ 函数名进行调用 5. 包访问控制规则: 大写意味着这个函数/变量是可导出的 小写意味着这个函数/变量是私有的, 包外部不能访问 练习: package main /* 算出结果是: 0+10=10 1+9=10 2+8=10 3+7=10 4+6=10 5+5=10 6+4=10 7+3=10 8+2=10 9+1=...阅读全文