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

Go语言/golang/位操作/取反/异或/左移/右移

Go语言位操作实例 package main import ( "fmt" ) // 获取0-n之间的所有偶数 func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样 array = append(array, i) } } return array } // 互换两个变量的值 // 不需要使用第三个变量做中间变量 func swap(a, b int) (int, int) { a ^= b // 异或等于运算 b ^= a a ^= b return a, b } // 左移、右移运算 func shifting(a int) int { a = a << 1 ...阅读全文

博文 2014-10-04 19:27:13 viney

golang二进制bit位的常用操作

package main import ( "fmt" "github.com/imroc/biu" ) /** golang二进制bit位的常用操作,biu是一个转换二进制显示的库 mengdj@outlook.com */ func main() { var( /** 1个字节=8个二进制位,每种数据类型占用的字节数都不一样 注意位操作千万不要越界了,如某个类型占8个bit位,偏移时候不要超过这个范围 */ a uint8=30 ) //a输出结果:00011110 fmt.Println(biu.ToBinaryString(a)) /** 将某一位设置为1,例如设置第8位,从右向左数需要偏移7位,注意不要越界 1<<7=1000 0000 然后与a逻辑或|,偏移后的第8位为1,逻辑|...阅读全文

博文 2018-08-17 12:30:00 mengdejun

golang 位运算

http://blog.opskumu.com/golang-bitwise.html 位操作是程序设计中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算). 位操作符 一、简介 关于位运算的操作,维基百科关于 位操作符 的理论介绍已经非常清楚了。关于 Golang 的位运算其实和 C 语言比较类似,除了取反的操作和 C 语言有点区别,Golang 使用的是^x,而 C 使用的则是 ~x取反。 二、概念 << [ 左移 ] 1 << 2 == 4输出 0100 ,相比右移更常见,移位后空缺的部分全部填0 >> [ 右移 ] 10 >>...阅读全文

博文 2016-03-10 15:00:03 leonpengweicn

GoLang基础语法

变量定义 从hello world入手 package main import "fmt" func main() { fmt.Println("Hello World") } 控制台输出: Hello World 变量默认值 package main import "fmt" func main() { var a int var s string fmt.Println(a, s) } 控制台输出: 0 注:s为"",故打印出来没有效果 如果想让""字符串显示,则代码如下: package main import "fmt" func main() { var a int var s string fmt.Println(a, s) fmt.Printf("%d %q\n", a, s)...阅读全文

博文 2018-09-23 21:34:39 等她下班

用GO语言实现一个简单的搜索引擎

用GO语言实现一个简单的搜索引擎 项目地址是:https://github.com/wyh267/FalconEngine 对搜索引擎感兴趣的可以去看看这本书,比较浅并且也比较完整的介绍了一个搜索引擎的全部机能。 我的这个搜索引擎原始数据是MySql数据库的,大家可以根据需要进行二次开发,用来支持其他数据库或者本地文件,Detail文件是存储在Redis数据库中,同样这部分也可以根据自己的需要二次开发,使用本地文件或者其他数据库,倒排索引和正排索引本地存储的时候使用的json格式,比较耗磁盘,第一版暂时这样了吧,后续再做优化。 使用方法 依赖以下几个库 github.com/outmana/log4jzl log文件 github.com/ewangplay/config 配置文件解析 gi...阅读全文

博文 2015-07-28 00:00:00 ygrx

常用位操作技巧(Golang)

1,判断奇偶 for i := 0; i < 100; i++ { if i % 2 == 0 { println(i) } if i & 0x1 == 0 { println(i) } } 2,交换两个数 func Swap(a, b *int) { if *a^*b != 0 { temp := *a *a = *b *b = temp } } func Swap(a, b *int) { if *a^*b != 0 { *a = *a + *b *b = *a - *b *a = *a - *b } } func Swap(a, b *int) { if *a^*b != 0 { *a ^= *b *b ^= *a *a ^= *b } } 3,交换符号 func ExcangeSym...阅读全文

博文 2014-11-14 08:00:01 xlplbo

golang 位操作

package main import ( "fmt" ) // 获取0-n之间的所有偶数 func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样 array = append(array, i) } } return array } // 互换两个变量的值 // 不需要使用第三个变量做中间变量 func swap(a, b int) (int, int) { a ^= b // 异或等于运算 b ^= a a ^= b return a, b } // 左移、右移运算 func shifting(a int) int { a = a << 1 a = a >> 1...阅读全文

博文 2014-12-20 19:00:01 moodlxs

Go 位运算

// xuhh_go_位运算符 project main.go /* 位移操作 << : 向左移位 可以看做是 乘以2的几次方 位移操作 >> : 向右移位 可以看做是 除以2的几次方 and操作 & : 都为1 才是1 or 操作 | : 只要有一个是1 那么就是1 取反 ^ :有一个为1 则 就是1 两个1 或者两个0 全是 0 标志位操作 &^ : a &^ b = (a^b) & b 其实就是清除标记位 (将a中为1的位 如果b中相同位置也为1,则将a中该位置修改为0,a中其他位不变) */ package main import ( . "fmt" ) func main() { var p = Person{"xuhh", "12"} Println(p) const a = 2...阅读全文

博文 2016-03-17 12:00:01 xuheazx

GO代码实现判断字符编码格式及编码格式转换(utf-8、gbk)

引入 最近使用go开发http服务,在使用http进行通信时,发现接收报文中如果包含中文字符(非utf-8编码),直接使用go将二进制格式数据转换成字符串文本会出现乱码的情况。因为golang中的字符编码格式是utf-8,如果是其他类型的编码,例如gbk,那么直接转码后出现乱码也就理所当然了。 GBK编码格式 为了更好地说明GBK的编码方式,首先在这里先说明一下ASCII码,GB2312, GBK, GB18030的兼容性关系: 各种编码兼容关系.png ASCII编码使用一个字节的低7位(范围0-127)来表示共128个字符,最高位为0,即 0XXX_XXXX GB2312为了能表示更多字符,使用单字节和双字节来进行编码,单个字节编码与ASCII完全一样,也就兼容了ASCII码,双字节编码...阅读全文

Go 的 rune byte 和 string

- `rune` 、 `byte` 和 `string` 都是 `Go` 的内置类型 ----- - `byte` - byte是`uint8`的别名,在所有方面都等同于`uint8` - 按惯例,它用于区分**字节值**和**8位无符号整数值**。 - `rune` - `rune`是`int32`的别名,在所有方面都等同于`int32` - 按惯例,它用于区分**字符值**和**整数值**。 - `string` - string是所有**8位字节字符串**的集合,通常但不一定代表UTF-8编码的文本 - 字符串可能为空,但是不能为 `nil` - 字符串类型的值是不可变的 - 由上面得解释我们大概可以明白 - `rune` 可以表示得比 `byte` 多 - `string` 类型的底...阅读全文

阿里云专家为你解读安全管家服务

课程介绍 阿里云安全管家服务是阿里云安全专家基于阿里云多年安全最佳实践经验为云上用户提供的全方位安全技术和咨询服务,为云上用户建立和持续优化云安全防御体系,保障用户业务安全。 阿里云应急响应服务能够在您的系统遭受黑客攻击时提供快速、专业的应急处理,包括入侵行为排查、病毒木马查杀、入侵原因分析、入侵影响评估等;能够帮助客户正确应对黑客攻击,降低攻击带来的安全损失。 产品详情:https://www.aliyun.com/product/sos/ 课时列表 • 课时1:安全管家服务规格介绍 • 课时2:基础巡检功能介绍 • 课时3:如何使用应急响应服务 开始学习http://click.aliyun.com/m/27864/ ...阅读全文

go 位图(bitmap)的实现

## 位图 [github地址](https://github.com/xiaomeng79/go-algorithm) https://github.com/xiaomeng79/go-algorithm ### 概念 在一个结构中,用一个比特位来描述一个数据的状态,这种结构就称为位图。位图实际上是哈希表的一种变形 ### 位图可以干什么 - 大数据滤重 - 数据排序 ### 为什么使用 - 节省内存 - 可以位操作,更快 ### 代码 ``` package bitmap import "fmt" //位图 type BitMap struct { bits []byte max int } //初始化一个BitMap //一个byte有8位,可代表8个数字,取余后加1为存放最大数所需的...阅读全文

博文 2019-03-01 12:22:53 xiaomeng

golang实现快排

// QuickSort package main import ( "fmt" "math/rand" "time" ) func swap(a int, b int) (int, int) { return b, a } func partition(aris []int, begin int, end int) int { pvalue := aris[begin] i := begin j := begin + 1 for j < end { if aris[j] < pvalue { i++ aris[i], aris[j] = swap(aris[i], aris[j]) } j++ } aris[i], aris[begin] = swap(aris[i], aris[begi...阅读全文

博文 2016-08-04 10:00:00 datakv

golang plugin热更新尝试

电视剧《萌妃驾到》即将和观众见面,剧中很多皇妃的扮演者颜值演技都在线,在电视剧《萌妃驾到》中曲碗碗扮演者尤其受关注,那么剧中曲碗碗扮演者是谁,还演过哪些电视剧? ======================================= 薇.信.关.注.工.众.号:戏说影院 点击影院入口→阅读原文→输入"片名"搜索→即可观看! ======================================= 该剧主要讲述了萌妃步萌与皇上温楼两人在一路“逗智逗勇”的过程中相恋的故事。 在宣布定档的同时,该剧还发布了定档海报,海报尽显独特“萌式美学”。《萌妃驾到》剧中女主步萌由90后人气小花旦金晨饰演,在已公布的定档海报中,步萌作为芳华宫主位,一身唐装俏皮又不失妩媚。而饰演男主温楼的全能偶像艺...阅读全文

go语言初记2(备忘)

看《Go入门指南》 ,这里讲得比较基础,针对go 1.0版,以下是一些我自己觉得特别和不容易理解的地方的摘抄! 上次有说到go里不同类型之间操作必须显示转换,int和uint不固定,所以int 不是int32 int 和 uint 在 32 位操作系统上,它们均使用 32 位(4 个字节),在 64 位操作系统上,它们均使用 64 位(8 个字节)。 package main func main() { var a int var b int32 a = 15 b = a + a // 编译错误 b = b + 5 // 因为 5 是常量,所以可以通过编译 } 格式化说明符(应该不止这些) 在格式化字符串里,%d 用于格式化整数(%x 和 %X 用于格式化 16 进制表示的数字),%g 用于...阅读全文

博文 2014-10-04 19:26:32 haanico

golang 进程出现too many open files的排查过程

1. 现象 服务的cpu跑满(golang实现), 并大量报too many open files错误.服务使用systemd来运行,部署在阿里ecs上. 2.分析 从日志来看,cpu的上升主要为到达文件数限制引起的,但之前已经更改过系统的文件数及所有用户的文件数,按道理是不应该出现这个问题的,后来查阅资料发现,文件数可以从三个维度限制分别为操作系统限制,用户态限制,以及进程限制,对于这三个维度选取最小值生效.于是对系统进行分析. 首先查看当前打开文件数, 进程占用的文件数并不多. lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more 然后获取系统级文件数限制 输入命令cat /etc/sysctl.conf得到fs.file-max = 1...阅读全文

博文 2016-10-11 09:00:11 u010511236

日志搜索平台Poseidon

波塞冬,是希腊神话中的海神,在这里是寓意着海量数据的主宰者。 Poseidon 系统是一个日志搜索平台,可以在数百万亿条、数百PB大小的日志数据中快速分析和检索特定字符串。 360公司是一个安全公司,在追踪 APT(高级持续威胁)事件时,经常需要在海量的历史日志数据中检索某些信息, 例如某个恶意样本在某个时间段内的活动情况。在 Poseidon 系统出现之前,都是写 Map/Reduce 计算任务在 Hadoop 集群中做计算, 一次任务所需的计算时间从数小时到数天不等,大大制约了 APT 事件的追踪效率。 Poseidon 系统就是为了解决这个需求,能在几秒钟内从数百万亿条规模的数据集中找出我们需要的数据,大大提高工作效率; 同时,这些数据不需要额外存储,仍然存放在Hadoop集群中,节...阅读全文

开源项目 2017-02-07 03:16:54 Qihoo360

go语言的hashmap

go语言中map的数据结构,以下只摘取了关键的几个属性: struct Bucket { uint8 tophash[BUCKETSIZE]; // top 8 bits of hash of each entry (0 = empty) Bucket *overflow; // overflow bucket, if any byte data[1]; // BUCKETSIZE keys followed by BUCKETSIZE values }; struct Hmap { uint8 B; // log_2 of # of buckets (can hold up to LOAD * 2^B items) byte *buckets; // array of 2^B Bucket...阅读全文

博文 2015-05-18 03:00:01 richmonkey

今日头条推荐系统架构设计实践

互联网时代内容分发的变革​今日头条本质上是一个强大的智能推荐引擎​数据截止于:截至2016年12月底头条DAU : 7800w ;头条MAU : 1.75亿;单用户日平均使用时长: 76分钟;用户行为峰值: 150w+ msg/s;每天训练数据: 300T+ (压缩后) ;机器规模:万级;系统架构​面临挑战期望快速反馈: 10min内;feature数量: 200+;存量用户数和每天的用户行为数据量巨大;在线存储:读写吞吐高,要求延时低且可预期;流式计算实现Storm Python框架写MR的方式写Streaming Job ;Topology用Yaml描述,代码自动生成,降低编写job成本;框架自带KafkaSpout ,业务仅关注拼接和计算逻辑;Batch MR相关算法逻辑可以直接复用在...阅读全文

博文 2019-07-25 14:05:33 wyygxly

Golang 1.9的主要更新

因网上这个资料难查,因此转载一份,原文请点击 Go1.9的主要更新 golang每半年更新一次版本,上次最新的版本是Go1.8,而Go1.9将在今年8月释出。Go1.9中语法的更改只有一个,那就是增加了类型别名,大部分更改是工具链,运行时,库的更改, 语法的更改 Go1.9中增加了类型别名这个语法,类型别名可以更优雅的实现当两个包之间struct的移动。类型别名的语法如下: type T1 = T2 意思是声明一个T2类型的别名T1. 工具 并行编译 在Go1.9中并行编译啊包是默认的设置,如果需要关闭并行编译,需要设置环境变量GO19CONCURRENTCOMPILATION=0。 ./…可以匹配vendor了 应各位亲们的要求,之前./...不支持匹配vendor目录下的文件,现在Go1...阅读全文

常用位操作技巧(Golang)

1,判断奇偶 for i := 0; i < 100; i++ { if i % 2 == 0 { println(i) } if i & 0x1 == 0 { println(i) } } 2,交换两个数 func Swap(a, b *int) { if *a^*b != 0 { temp := *a *a = *b *b = temp } } func Swap(a, b *int) { if *a^*b != 0 { *a = *a + *b *b = *a - *b *a = *a - *b } } func Swap(a, b *int) { if *a^*b != 0 { *a ^= *b *b ^= *a *a ^= *b } } 3,交换符号 func ExcangeSym...阅读全文

博文 2014-11-14 14:00:01 seago123

Go中的bit位和位运算符

一.二进制长什么样 bit比特是计算机的最小单元,是一个二进制位1或者0 t.Log("start") t.Logf("%b", 0) //0 t.Logf("%b", 1) //1 t.Logf("%b", 2) //10 t.Logf("%b", 3) //11 /* int是带符号的,表示范围是:-2147483648到2147483648,即-2^31到2^31次方。 uint则是不带符号的,表示范围是:2^32即0到4294967295。 */ var one uint one = 10000 t.Logf("%b", one) //10011100010000 13位,uint最多是32位 二.运算符 主要有下面几种运算符 & 位运算 AND | 位运算 OR ^ 位运算 XOR...阅读全文

用Golang写一个搜索引擎(0x01)--- 基本概念

从零开始,写一个搜索引擎 (0x01) 第零部分我们已经列了一个提纲了,这一篇文章开始要详细说说了。 搜索引擎基本概念 在说搜索引擎架构分层之前,我们先确定几个搜索引擎的概念。 文档,搜索引擎的基本数据单元,比如一张网页,一个商品,多个文档合在一起就是一个搜索引擎的完整数据 倒排索引,正排索引,存储在搜索引擎内部的数据结构,也是搜索引擎最底层的数据结构。 索引器,将文档数据生成可供搜索的倒排索引和正排索引的程序就是索引器。 检索器,通过对倒排索引和正排索引进行查找,从而查找到文档的程序。 字段,每个文档可能有多个字段,比如一篇文章有标题,作者,摘要,详情,发布时间的,这些东西虽然在一个文档中,但是搜索的时候需要区别对待。 索引,多个文档通过索引器生成了一堆倒排正排索引,我们把这些倒排正排索引...阅读全文

博文 2016-07-27 10:54:23 吴yh坚

用Golang写一个搜索引擎(0x02)--- 倒排索引技术

这一篇,我们来说说搜索引擎最核心的技术,倒排索引技术,倒排索引可能需要分成几篇文章才说得完,我们先会说说倒排索引的技术原理,然后会讲讲怎么用一些数据结构和算法来实现一个倒排索引,然后会说一个索引器怎么通过文档来生成一个倒排索引。 倒排索引 什么是倒排索引呢?索引我们都知道,就是为了能更快的找到文档的数据结构,比如给文档编个号,那么通过这个号就可以很快的找到某一篇文档,而倒排索引不是根据文档编号,而是通过文档中的某些个词而找到文档的索引结构。 倒排索引技术简单,高效,简直是为搜索引擎这种东西量身定做的,就是靠这个技术,实现一个搜索引擎才成为可能,我们也才能在海量的文章中通过一个关键词找到我们想要的内容。 我们看个例子,有下面的几个文档: 文档编号 文档内容 1 这是一个Go语言实现的搜索引擎 ...阅读全文

博文 2016-07-20 11:10:55 吴yh坚

用Golang写一个搜索引擎(0x05)--- 文本相关性排序

上面我们已经说过了一些倒排索引的东西,并且也知道了如何来实现一个倒排索引完成检索功能,那么检索完了以后如何排序呢,这一篇简单的说一下倒排索引的文本相关性排序,因为排序实在是太复杂了,我们这里就说说文本的相关性排序,而且是最简单的TD-IDF排序,之后有机会可以再说说整个搜索的排序算法有些什么。 文本相关性排序 首先明白几个概念: Term,分词以后最小的单位,比如用Golang写一个搜索引擎,分词以后就是用,golang,写,一个,搜索引擎,那么每一个词就是一个Term。 TF(Term Frequency),Term在文章中出现的频率,就是当前term在文章中出现的频率,就是term次数/总term数,比如上文中的搜索引擎这个term的TF就是1/5,TF越高那么这篇文章中的这个词就越重要...阅读全文

博文 2017-02-09 08:18:07 吴yh坚

请问go标准库里面有没有对一个uint32某几个bit更改或者移位的package?

最近要做一个小工具,对uint32的整数进行逻辑位操作,想请教大家一下,想实现下面的功能,有没有标准库的支持,省得自己再开发了。 (1)对某连续的几个bit进行赋值; (2)循环左移或者右移; (3)左移低位补零,或者右移高位补零。 麻烦各位专家指点一下! 谢谢...阅读全文

用Golang写一个搜索引擎 (0x00)--- 从零开始

很早就想写一系列的这样的文章了,之前在一个电商公司做搜索,对搜索引擎有一些认识,来到一个新的创业公司以后非常高兴还有机会继续做这方面的事情,虽然领域已经变了,而且不是做搜索了,但是技术还是那些技术,并且有机会接触到了Go语言,对于一个将近10年C/C++的程序员来说,Go的一些特质让我觉得非常舒服,可参见我之前的这篇文章。 从公司项目衍生出了一个自己的搜索引擎项目,然后有了这篇文章。 先聊聊目标吧,我希望实现一个这样的搜索引擎 使用Go语言实现,方便部署,最好就用一个二进制文件搞定一些,不需要安装任何依赖。 类似一个电商的搜索引擎,支持多字段的检索,不仅仅是文本的全文索引,还需要包括过滤功能(比如价格区间过滤),汇总功能(比如结果集中品牌数量汇总),基本的统计功能。 索引器和搜索器在一起,主...阅读全文

博文 2016-07-11 13:50:21 吴yh坚

【转】 golang slice array

1. array 同一类型数据的集合 var arr [n]type //声明type类型一维数组 var arr [m][n]type //声明type类型二维数组 多维数组以此类推 也可以用 := 声明 arr := [n]type{元素1[,元素2, ...]} 其中n可以用 "..." 三个点表示,系统会根据元素个数来确定 下标只能为 int 类型,而 php 还支持 string 类型的下标 1.1 数组长度 len(arr) 注:数组长度在定义后就不可变 1.2 遍历: a. 循环通过过数组下标访问 arr[0] ~ arr[(len(arr))] b. range arr, 有两个返回值 第一个为数组下标,第二个为元素的值,与php遍历数组相似 [plain] view pla...阅读全文

博文 2015-06-08 03:00:00 freebird92

理解位运算及使用场景

最近在看APUE,函数umask的例子用到了位运算,认为这是个非常适合使用位运算的场景,有必要笔记一下。例子代码基于golang,因为最近在学习golang. 位运算 先来看下位运算的定义:程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。摘自百度百科 比如,&运算本来是一个逻辑运算符,但整数与整数之间也可以进行&运算。举个例子,6的二进制是110,11的二进制是1011,那么6 & 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理),下面的代码是用go实现的...阅读全文

博文 2017-03-06 05:47:00 kuuyee

用Golang写一个搜索引擎(0x07)--- 正排索引

最近各种技术盛会太多,朋友圈各种刷屏,有厂商发的各种广告,有讲师发的各种自拍,各种参会的朋友们各种自拍,好不热闹,不知道你的朋友圈是不是也是这样啊,去年还没这么多技术会议,今年感觉爆发了,呵呵,真是一个互联网技术的好时代,而且还有各种撕B可看,真想八一八,怕得罪人,我们这种码农还是专注技术专注写代码吧。 你有什么想了解的也可以给我留言哈,欢迎交流,我的工作之前主要做的是搜索的,也做推荐和广告,这部分的东西可能写得多点,对了,嵌入式领域也行(跨得有点大,这个嵌入式不是iOS和Android,是真的嵌入式),没什么高端背景,也不是BAT这种大厂的,就是一小公司写代码的,所以有很多东西还是不懂,你要是和我交流了发现我答不上来很正常啊,人艰不拆啊。。 本篇也比较长,但是干货不多,建议上厕所的时候看,...阅读全文

博文 2017-02-09 08:18:15 吴yh坚

go语言hello.go

前言 运行环境在ubuntu,按照官方网站说明简单安装,在这就不具体说明了,安装过错中没有任何错误。下面我就按照光放网站照这写一个hello.go。 代码如下: package main import "fmt" func main(){ fmt.Printf("你好,世界") } 运行命令: 6g hello.go 6l hello.6 ./6.out 输出结果:你好,世界 运行一下命令会生成64 位的exe程序: 6l -o hello.exe hello.6 生成的文件大小有1.1MB,在window 7 32 位下运行会报如下错误: Program too big to fit memory. 下面想办法在64位操作系统下生成32程序。 找了,好久没找到,不过,除了6g,还有gccg...阅读全文

博文 2014-10-04 19:26:39 zitsing

Go语言核心技术(卷一)之2.1-整数

第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数,浮点数,复数,每一种都包含了大小(size)不同的数值类型,例如有符号整数包含int8,int16,int32,int64,int。每一种数值类型都会决定值的大小和符号(正负),我们...阅读全文

博文 2016-03-16 15:00:05 abv123456789

6.Golang数字操作

Go 语言具有严格的静态类型限制,运算符操作的数字类型必须是相同类型数据。且数字操作不能超出该类型的取值范围,不然计算溢出得到的结果就是错的。 一、加减乘除、取模 package main import "fmt" func main() { // 加 + var ui1, ui2 uint8 ui1 = 1 ui2 = 2 ui := ui1 + ui2 fmt.Println(ui) // 输出:3 ui += 255 fmt.Println(ui) // 溢出后计算的值就是错的,输出:2 // 减 - var i, j int32 i = 10 j = 5 fmt.Println(i - j) // 输出:5 // 乘 * var f1, f2 float32 f1 = 1.2 f2 ...阅读全文

博文 2018-11-11 22:34:40 野尘lxw

饿了么:分布式时序数据库 - LinDB

饿了么对时序数据库的需求主要来自各监控系统,主要用于存储监控指标。原来使用graphite,后来慢慢有对指标有多维的需求(主要体现在对一个指标加多个Tag, 来组成Series,然后对Tag进行Filter和Group进行计算),这时graphite基本很难满足需求。 业界现在用的比较多的主要有如下几类TSDB: 免费获取学习Java高架构、分布式架构、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师视频免费获取 架构群:863621962 InfluxDB:很多公司都在用,包括饿了么有部分监控系统也是用InfluxDB。优点,支持多维和多字段,存储也根据TSDB的特点做了优化。但...阅读全文

博文 2018-09-19 20:21:12 Java1324

go语言:Eclipse与LiteIDE之间路径问题

今天做文件操作的时候,发现了一个路径问题. 当我在使用相对路径进行文件操作时(之前项目是用Eclipse写的),使用"./"得到的路径是基于GoPath的当前路径. 当我今天换成LiteIDE的时候,项目报错了.提示找不到文件,很纳闷找了半天,排查了半天发现,LiteIDE使用"./"是获取当前运行程序所在的当前路径. 与Eclipse环境恰恰相反...阅读全文

博文 2015-06-17 23:07:43 x369201170

位运算详解

位运算 Bitwise operation 前言 日常提出疑问,然后引出今天的下文: 如何在代码里不用 “+” 、“-” 实现加减法的操作? 接下来我就介绍一项一招制敌的技能 —— 位运算 正文 什么是位运算 程序中的所有数在计算机内存中都是以二进制的形式存储的。位运算(Bitwise operation)就是直接对整数在内存中的二进制位进行操作,因此其执行效率非常高。 在程序中使用位运算进行操作,会大大提高程序的性能。 位运算的本质 位运算是在二进制之间操作,粗略地说就是 0 和 1 之间的转换 位运算的基本操作 与运算 & 两个位都是 1 时,结果才为 1 1 & 1 = 1 1 & 0 = 0 100 & 001 = 0 100 & 101 = 100 或运算 | 两个位都是 0 时,...阅读全文

博文 2019-12-11 15:32:58 曲镇

用Golang写一个搜索引擎(0x0B)--- 第一部分结束

这一篇算给这一个系列告一个小的段落,之前开始写这些文章的时候,只是想把自己最近用Golang写的这个搜索引擎说一说,准备了大概3,4篇的量,但是一写下来,发现有点收不住,写到后面其实和Golang没什么关系了,主要在写搜索引擎的架构和一些数据结构了,我觉得这比写代码注释有用吧,而且通过这样写下来,我自己对这些个数据结构的理解也更深了。 一个月的时间,写了14篇了,虽然14篇文字不足以说明一个搜索引擎的实现,但我觉得基本上一些重要的东西我都说了,搜索引擎本身原理上其实比较简单,并且我们并没有涉及搜索引擎爬虫的部分,所以说起来并不是很复杂,复杂是复杂在外围一些算法上的东西,比如分词,比如排序之类的。 来看看我们都说了些啥 开了个头以后,先说了一下搜索引擎的基本概念,包括docid的概念,以及整个...阅读全文

博文 2017-02-09 08:21:00 吴yh坚

Go语言核心之美 2.1-整数

第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数,浮点数,复数,每一种都包含了大小(size)不同的数值类型,例如有符号整数包含int8,int16,int32,int64,int。每一种数值类型都会决定值的大小和符号(正负),我们...阅读全文

Go语言核心之美 2.1-整数

版权声明:本文为Sunface(孙飞)原创文章,转载请注明出处 https://blog.csdn.net/abv123456789/article/details/50902368 第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数...阅读全文

Go基础-012 练习题集合

1.老鼠试毒 10 只老鼠(小白鼠),1000 瓶水,其中一瓶有毒药,老鼠喝毒药水 1 个小时死掉。 要求利用 10 只老鼠,在 1 个小时内找出那瓶水有毒。 经典思路: 将 1000 瓶水从 1 至 1000 编号。 将10只老鼠从 1 至 10 编号。 将水瓶的编号转为 2 进制数据,至多有 1000 瓶水,至多需要 10 个位即可。 例如: 之后控制老鼠喝水,将老鼠的编号与水瓶编号二进制位对应。如果某瓶水的编号第一位为 1,则让 1 号老鼠喝水,第二位为 1 则让 2 号老鼠喝水,以此类推。 等 1 个小时后,看死掉的老鼠,将对应的老鼠编号位设置为 1,其他为 0,转成 10 进制, 就是对应水瓶编号。 例如 1,456910 号老鼠死了,那就意味着编号:1100111001,转成 1...阅读全文

博文 2020-02-24 01:32:44 LikePlayAPiano

关于使用go语言来进行cidr合并遇到一些问题,求帮助

就是根据一个开始IP地址和IP数然后将起始IP地址和掩码存入一个结构中,但是在根据IP数进行划分cidr的时候又一些问题。大多数的IP数都符合直接划分的规则,既直接imask := UintToIP(0xffffffff ^ uint32(num_ip-1))这样就能直接获得一个掩码,但是有部分IP数进行上述操作会导致直接处理的话掩码不是高位全1低位全0,需要额外进行划分处理,如num_ip=4627457,则掩码变为255.185.128.0, 要怎么对num_ip进行分段的处理才能使获得的掩码符合规则。。。...阅读全文

海量数据处理常用方法有哪些?

处理海量数据是大数据工程师必备技能,通过对PB级别的数据进行挖掘与分析发掘出有价值的信息,为企业或政府做出正确决策提供依据,是十分必要的一项工作,以下是常用的海量数据处理方法! **1. Bloom filter** Bloom filter是一种二进制向量数据结构,具有很好的空间效率和时间效率,可用来检测一个元素是否属于一个集合。该方法的优点是它的插入和查询时间都是常数,并且它查询元素却不保存元素本身,因此,具有良好的安全性,但因其算法的原因,其正确率稍低,可以确定不存在数据一定不存在,确定存在的数据不一定存在,适合对低错误率可以容忍的场合。 **2. Hash** Hash即散列函数,其是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数,根据处理需求的不同,...阅读全文

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写一个搜索引擎 (0x04) --- B+树

本篇较长较枯燥,请保持耐心看完。 前面两章介绍了一下倒排索引以及倒排索引字典的两种存储结构,分别是跳跃表和哈希表,本篇我们介绍另一种数据结构,他也被大量使用在信息检索领域,我在github上实现的搜索引擎的词典也是用的这个数据结构,它就是B+树。 首先,我们看看什么是树,树是程序设计中一个非常基础的数据结构,记得大学时候的数据结构课,链表,栈,队列,然后就是树了,虽然那时候想必大家都被前序遍历,中序遍历,后序遍历折腾过,不过树确实是一种非常有用的数据结构。 上一篇我们说过,表2的第一列首要解决的问题就是能快速找到对应的词,然后找到对应词的倒排列表,除了跳跃表和哈希表,B+树也能满足条件,B+树是B树的变种,我们B树我们就不看了,感兴趣的大家可以直接去google一下,我们主要讲的是B+树,下...阅读全文

博文 2017-02-09 08:18:01 吴yh坚

记录golang初始化mysql连接失败问题

package mysql import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) var ( db *sql.DB err error ) func init() { db, err = sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/database?charset=utf8") if err != nil { panic(err.Error()) } db.SetMaxOpenConns(1000) err = db.Ping() if err != nil { fmt.Println("Failed to connect to mysql, err:" ...阅读全文

博文 2019-03-31 18:34:38 莫夏_b560