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

golang中bytes包用法

本文转自 Golove的博客http://www.cnblogs.com/golove/p/3287729.html bytes 包中的函数和方法 // bytes 包实现了用于操作 []byte 的函数,类似于 strings 包中的函数 // bytes.go ------------------------------------------------------------ // Compare 用于比较两个 []byte,并返回 int 型结果 // a == b 返回 0 // a < b 返回 -1 // a > b 返回 1 // 如果参数为 nil 则相当于传入一个空 []byte func Compare(a, b []byte) int ---------------...阅读全文

博文 2016-01-31 20:00:01 chenbaoke

棋牌的胡牌算法QiPai

棋牌的胡牌算法,特殊牌型判断算法 1、跑胡子算法 实现: 2、高效的麻将胡牌算法,能处理任意张赖子: 速度:1S左右处理100万次每次四个赖子的麻将判胡;5秒处理1亿次八个赖子判胡(golang虚拟机上实测)。 实现: 3、无敌的拆牌判胡算法,不占用额外内存,速度、简洁度超过查表法。支持任意赖子数量。 4、特殊牌型判断:一条龙、掐张、七对、碰碰胡、十三幺、单吊、大吊车、清一色、缺门、门清...阅读全文

开源项目 2017-12-12 10:00:01 网友

Golang版的CRC16校验(查表法)

用go仿写了一个CRC16校验方法 var ( aucCRCHi = []byte{ 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0...阅读全文

博文 2017-12-14 08:06:00 iuoui

golang对象内存分配

一、分配对象(源码) // 分配对象内存入口 func newobject(typ *_type) unsafe.Pointer { return mallocgc(typ.size, typ, true) } // 分配指定object的大小(bytes数) // 当分配的object大小 <= 32kb 使用每个P本地缓存空闲列表即可 // > 32 kB 直接堆上进行分配. func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer { // 零长度对象 if size == 0 { return unsafe.Pointer(&zerobase) // 在heap上分配,则都指向预设的同一全局变量(零长度...阅读全文

博文 2019-01-07 19:34:46 神奇的考拉

信道编码之纠删码编码

简介 随着数据的存储呈现出集中化(以分布式存储系统为基础的云存储系统)和移动化(互联网移动终端)的趋势,数据可靠性愈发引起大家的重视。集群所承载的数据量大大上升,但存储介质本身的可靠性进步却很小,这要求我们必须以更加经济有效的方式来保障数据安全。 副本与纠删码都是通过增加冗余数据的方式来保证数据在发生部分丢失时,原始数据不发生丢失。但相较于副本,纠删码能以低得多的存储空间代价获得相似的可靠性。比如3副本下,存储开销为3,因为同样的数据被存储了三份,而在10+3(将原始数据分为10份,计算3份冗余)的纠删码策略下,存储开销为为1.3。采用纠删码能够极大地减少存储系统的存储开销,减少硬件、运维和管理成本,正是这样巨大的收益驱使各大公司纷纷将纠删码应用于自己的存储系统,比如Google、Faceb...阅读全文

Go程序基础

Go 中的名称 Go 中函数、变量、常量、类型、语句标签和包的名称遵循一个简单的规则:名称的开头是一个字母(Unicode 中的字符即可)或下划线,后面可以跟任意数量的字符、数字和下划线,并区分大小写。 关键字 共25个关键字,只能用在语法允许的地方,不能作为名称: break //退出循环 default //选择结构默认项(switch、select) func //定义函数 interface //定义接口 select //channel case //选择结构标签 chan //定义channel const //常量 continue //跳过本次循环 defer //延迟执行内容(收尾工作) go //并发执行 map //map类型 struct //定义结构体 else /...阅读全文

博文 2019-04-24 23:35:10 骑士救兵

bitcount优化之路

问题: 使用Go实现bitcount函数,统计一个uint64型数值中被设置为 1 的比特位的数量。 方案一: 最容易想到的实现就是每次右移一位,检测最后一位是否是1,这样完成挨个比特检测后,就可以得出结果。 func bitCount1(n uint64)int8{ var count int8 var i uint for i < 64 { if ( (n >> i) & 1) != 0{ count += 1 } i += 1 } return count } var BitCount = bitCount1 实现一个测试函数和一个基准测试函数测试正确性和性能: 测试环境: 型号名称: MacBook Pro 处理器名称: Intel Core i7 处理器速度: 2.5 GHz 处理...阅读全文

博文 2019-06-30 01:32:42 李说的对

bitcount优化之路

问题: 使用Go实现bitcount函数,统计一个uint64型数值中被设置为 1 的比特位的数量。 方案一: 最容易想到的实现就是每次右移一位,检测最后一位是否是1,这样完成挨个比特检测后,就可以得出结果。 func bitCount1(n uint64)int8{ var count int8 var i uint for i < 64 { if ( (n >> i) & 1) != 0{ count += 1 } i += 1 } return count } var BitCount = bitCount1 实现一个测试函数和一个基准测试函数测试正确性和性能: 测试环境: 型号名称: MacBook Pro 处理器名称: Intel Core i7 处理器速度: 2.5 GHz 处理...阅读全文

博文 2019-06-30 00:02:39 李说的对

bitcount优化之路

**问题:** 使用Go实现bitcount函数,统计一个uint64型数值中被设置为 1 的比特位的数量。 **方案一:** 最容易想到的实现就是每次右移一位,检测最后一位是否是1,这样完成挨个比特检测后,就可以得出结果。 func bitCount1(n uint64)int8{ var count int8 var i uint for i < 64 { if ( (n >> i) & 1) != 0{ count += 1 } i += 1 } return count } var BitCount = bitCount1 实现一个测试函数和一个基准测试函数测试正确性和性能: **测试环境:** 型号名称: MacBook Pro 处理器名称: Intel Core i7 处理器速度...阅读全文

博文 2019-06-30 01:12:08 leeright

「Go」Golang中的字符串处理

自https://my.oschina.net/u/3625745/blog/3007674 以便查阅 Count(s string, str string) int 计算字符串str在s中的非重叠个数。如果str为空串则返回s中的字符(非字节)个数+1。 Index(s string, str string) int 返回子串str在字符串s中第一次出现的位置。如果找不到则返回-1;如果str为空,则返回0。 LastIndex(s string, str string) int 返回子串str在字符串s中最后一次出现的位置。如果找不到则返回-1;如果str为空则返回字符串s的长度。 IndexRune(s string, r rune) int 返回字符r在字符串s中第一次出现的位置。如...阅读全文

博文 2020-07-11 02:33:17 叨码