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

golang fmt格式“占位符”

golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan} %#v 相应值的Go语法表示 Printf("#v", people) main.Human{Name:"zhangsan"} %T 相应值的类型的Go语法表示 Printf("%T", people...阅读全文

Go 字符串格式化

Go对字符串格式化提供了良好的支持。下面我们看些常用的字符串格式化的例子。 package main import "fmt" import "os" type point struct { x, y int } func main() { // Go提供了几种打印格式,用来格式化一般的Go值,例如 // 下面的%v打印了一个point结构体的对象的值 p := point{1, 2} fmt.Printf("%v\n", p) // 如果所格式化的值是一个结构体对象,那么`%+v`的格式化输出 // 将包括结构体的成员名称和值 fmt.Printf("%+v\n", p) // `%#v`格式化输出将输出一个值的Go语法表示方式。 fmt.Printf("%#v\n", p) // 使用`...阅读全文

博文 2014-11-22 12:00:06 fer_ba

golang中sort包用法

golang中也实现了排序算法的包sort包. sort包中实现了3种基本的排序算法:插入排序.快排和堆排序.和其他语言中一样,这三种方式都是不公开的,他们只在sort包内部使用.所以用户在使用sort包进行排序时无需考虑使用那种排序方式,sort.Interface定义的三个方法:获取数据集合长度的Len()方法、比较两个元素大小的Less()方法和交换两个元素位置的Swap()方法,就可以顺利对数据集合进行排序。sort包会根据实际数据自动选择高效的排序算法。 type Interface type Interface interface { Len() int // Len 为集合内元素的总数 Less(i, j int) bool //如果index为i的元素小于index为j的元素...阅读全文

博文 2015-06-17 20:02:37 chenbaoke

NSQ:分布式的实时消息平台

NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub,其当前最新版本是0.3.1版。NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。NSQ具有分布式、去中心化的拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。NSQ非常容易配置和部署,且具有最大的灵活性,支持众多消息协议。另外,官方还提供了拆箱即用Go和Python库。如果读者兴趣构建自己的客户端的话,还可以参考官方提供的协议规范。 NSQ是由四个重要组件构成: nsqd:一个负责接收、排队、转发消息到客户端的守护进程 nsqlookupd:管理拓扑信息并提供最终一致性的发...阅读全文

博文 2015-05-05 11:09:59 李小兵

golang的fmt包

package fmt import "fmt" mt包实现了类似C语言printf和scanf的格式化I/O。格式化verb('verb')源自C语言但更简单。 Printing verb: 通用: %v 值的默认格式表示。当输出结构体时,扩展标志(%+v)会添加字段名 %#v 值的Go语法表示 %T 值的类型的Go语法表示 %% 百分号 布尔值: %t 单词true或false 整数: %b 表示为二进制 %c 该值对应的unicode码值 %d 表示为十进制 %o 表示为八进制 %q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示 %x 表示为十六进制,使用a-f %X 表示为十六进制,使用A-F %U 表示为Unicode格式:U+1234,等价于"U+%04...阅读全文

博文 2014-10-04 19:26:41 刘地

golang中的格式化输入输出

【简介】 fmt 包实现了格式化 I/O 函数,类似于 C 的 printf 和 scanf。格式“占位符”衍生自 C,但比 C 更简单。 【打印】 占位符: [一般] %v 相应值的默认格式。在打印结构体时,“加号”标记(%+v)会添加字段名 %#v 相应值的 Go 语法表示 %T 相应值的类型的 Go 语法表示 %% 字面上的百分号,并非值的占位符 [布尔] %t 单词 true 或 false。 [整数] %b 二进制表示 %c 相应 Unicode 码点所表示的字符 %d 十进制表示 %o 八进制表示 %q 单引号围绕的字符字面值,由 Go 语法安全地转义 %x 十六进制表示,字母形式为小写 a-f %X 十六进制表示,字母形式为大写 A-F %U Unicode 格式:U+1234...阅读全文

博文 2016-06-01 11:00:01 xiaoyida11

Go语言fmt.Printf的使用

Fmt包 import "fmt" 简介 ▾ Package fmt包含有格式化I/O函数,类似于C语言的printf和scanf。格式字符串的规则来源于C但更简单一些。 输出 格式: 一般: %v 基本格式的值。当输出结构体时,扩展标志(%+v)添加成员的名字。the value in a default format. when printing structs, the plus flag (%+v) adds field names %#v 值的Go语法表示。 %T 值的类型的Go语法表示。 %% 百分号。 布尔型: %t 值的true或false 整型: %b 二进制表示 %c 数值对应的Unicode编码字符 %d 十进制表示 %o 八进制表示 %q 单引号 %x 十六进制表示,...阅读全文

博文 2015-10-28 21:00:32 fyxichen

golang struct结构体方法中的参数需要定义为指针类型

前几日写一个网页的简单计数器问题时发现,计数器居然永远为0,计数器不计数,见鬼了。。。 代码如下: type Counter struct { n int } func (ctr Counter) ServeHTTP(c http.ResponseWriter, req *http.Request) { fmt.Fprintf(c, "%08x\n", ctr) ctr.n++ fmt.Fprintf(c, "counter = %d\n", ctr.n) } func main() { http.Handle("/counter", new(Counter)) log.Fatal("ListenAndServe: ", http.ListenAndServe(":80", nil)) } ...阅读全文

博文 2014-10-04 19:26:11 songbohr

Go-Ping

package conn import ( "bytes" "net" "os" "time" ) const ( ICMP_ECHO_REQUEST = 8 ICMP_ECHO_REPLY = 0 ) // Ping Request func makePingRequest(id, seq, pktlen int, filler []byte) []byte { p := make([]byte, pktlen) copy(p[8:], bytes.Repeat(filler, (pktlen-8)/len(filler)+1)) p[0] = ICMP_ECHO_REQUEST // type p[1] = 0 // code p[2] = 0 // cksum p[3] = 0 // ...阅读全文

博文 2015-02-26 12:28:25 nulijiabei

RedMonk的语言排名:JavaScript,Java保持领先;Go未进前20

avaScript在基于Github和Stack Overflow的排名统计中,均排名第一。 在RedMonk的这个月编程语言指数中:JavaScript,Java和PHP排名前三。这个指数基于Github 的语言代码行数和Stack Overflow上的语言标签数量。 “在狭隘的比较中,Java总是在排名中超过JavaScript,但二者的差异总是如此之远,以至于并不显著”,RedMonk首席分析师Stephen O'Grady这样说。“最显著的特点是该语言经常被描述为将死,有时又被吹捧地上升几位” RedMonk的指数中 Python, C#, C++, Ruby, CSS, C, 和 Objective-C也进入前十。排名11~20的语言为:Perl 和 Shell (并列11), R...阅读全文

Go fmt包 翻译 完毕

Fmt包 import "fmt" 简介 ▾ Package fmt包含有格式化I/O函数,类似于C语言的printf和scanf。格式字符串的规则来源于C但更简单一些。 输出 格式: 一般: %v 基本格式的值。当输出结构体时,扩展标志(%+v)添加成员的名字。the value in a default format. when printing structs, the plus flag (%+v) adds field names %#v 值的Go语法表示。 %T 值的类型的Go语法表示。 %% 百分号。 布尔型: %t 值的true或false 整型: %b 二进制表示 %c 数值对应的Unicode编码字符 %d 十进制表示 %o 八进制表示 %q 单引号 %x 十六进制表示,...阅读全文

博文 2015-01-08 14:00:01 cometwo

Go strconv包_字符串和数值类型的转换

Go strconv包_字符串和数值类型的转换 将字符串转换成数值类型和布尔类型 package main import ( "fmt" "strconv" ) func main() { str1 := "0.23" f1, _ := strconv.ParseFloat(str1, 64) f2, _ := strconv.ParseFloat(str1, 32) fmt.Println(f1) //0.23 fmt.Println(f2) //0.23 fmt.Println(f2 * 100) str2 := "1234f" // 16进制的字符串 // 将字符串解析为整数,ParseInt 支持正负号,ParseUint 不支持正负号。 // base 表示进位制(2 到 36),...阅读全文

RobotGo v0.10.0,Golang 跨平台 GUI 自动化系统(模拟鼠标键盘和控制bitmap以及屏幕)

RobotGo v0.10.0 发布了。v0.10.0 是针对RobotGo优化完善的版本,用于类似于GUI自动化等场景(模拟鼠标键盘和控制bitmap以及屏幕)。 主要变更: 增加主要的bitmap操作支持 更新屏幕方法,增加直接返回bitmap方法 更新测试 优化内存释放 更新文档 更新C方法命名 修复BUG: 修复输入法导致的空指针bug 修复Mac ScreenCapture模糊问题 修复mouse类型冲突bug 安装: go get github.com/go-vgo/robotgo 项目地址: https://github.com/go-vgo/robotg...阅读全文

分布式任务执行系统Gleam-Go

Gleam 是一个高性能和高效的分布式执行系统。纯 Go 编写,可独立运行,也可分布式运行。 纯 Go 编写的 mapper 和 reducer 具有高性能和并发性 LuaJIT 的性能,可与 C,Java,Go 相媲美。 它可流式处理数据,而不用在 Go 和 Lua 之间的上下文切换 数据通过内存时,可选择是否流入磁盘 多个 map/reduce 步骤被合并在一起以获得更好的性能 Gleam 不会发生常见的 GC 问题。 每个执行器在单独的 OS 进程中运行。 存储器由 OS 管理。 一台机器可以托管多个执行器 Gleam 主服务器和代理服务器是内存高效,只消耗大约 10 MB 内存 Gleam 尝试根据数据大小提示自动调整所需的内存大小,避免尝试法导致的错误,及手动调整...阅读全文

Go 实现的数学表达式解析计算引擎math-engine

使用 Go 实现的数学表达式微型计算引擎,无任何依赖,相对比较完整的完成了数学表达式解析执行,包括词法分析、语法分析、构建AST、运行。 [Demo](http://wx3.sinaimg.cn/large/c2a95e3dly1g4i4unamlhg211o0iokk1.gif) ## TODO ### 已实现 *  加 + *  减 - *  乘 * *  除 / *  取余 % *  整数次方 ^ *  科学计数法 e.g. 1.2e7 *  括号 () *  混合运算 e.g. 1+26/4_+_(456_-_89.2)-(2+4^5) *  友好的长数字 e.g. 123_456_789 *  友好的错误消息 e.g. 阅读全文

[go]增加并发控制的并发ping

参照anyevent/coro版的ping功能实现. golang没有方便的pop/shift语法,只能自己按数组进行计数 /*gorouting版本的并行ping */ package main import ( "ping" "fmt" "time" "strconv" ) var fin chan string; //用于实现joinall //go没有pop/shift操作,只能自己计数 var cur int /*定义协程 ping单个目标 输入:目标ip/域名 输出:结果, 时延 */ func doit(){ if cur >= len(iplist){ return } ip:=iplist[cur] cur++ go pingr(ip,1000) } func pingr(...阅读全文

博文 2015-06-18 09:09:11 laputa73

golang循环递增数组查找值

循环递增数组查找值 golang1.实现要求 在循环递增数组中查找某个值2.实现方法使用二分法实现查找使用定义循环递增数组是指数组收尾项链能够形成递增的环eg:[4,5,6,7,8,9,1,2,3]严格单调数组 数组从左往右一直增长eg:[1,2,3,4,5,6]实现思路将数组根据二分法进行分割将数组通过中间值分割后得到两个数组 一个为低调递增数组 另一个为循环递增数组 通过查找值比较进而确定查找值得范围在那个数组中 一次循环执行这一步得到是否能够查找值代...阅读全文

博文 2017-07-04 16:06:15 我是不是小明

golang fmt.printf I/O 函数格式化说明

[TOC] 说明 fmt 包实现了格式化 I/O 函数,类似于 C 的 printf 和 scanf格式“占位符”衍生自 C,但比 C 更简单 常用格式化输出 fmt.Printf("start at number %v, end count %v\n",start, count) 注意参数输出数量和占位符数量要一致 IDEA开发快速格式化模板 使用IDEA开发可以配置自定义代码模板快速生成 Settings -> Editor -> Live Templates 选中 go 语言展开 选则增加一条 Abbreviation 填写 fpf Description 填写 print fmt format Template text fmt.Printf("$END$",$VAR$) Appli...阅读全文

博文 2017-03-05 19:34:39 泛原罪

5亿次请求,95万QPS HTTPS CC攻击——阿里云云盾抗下全球最大DDoS攻击

5亿次请求,95万QPS HTTPS CC攻击——阿里云云盾抗下全球最大DDoS攻击 3月29日, 阿里云正式对外发布《2015下半年云盾互联网DDoS状态和趋势报告》。报告披露,去年11月,阿里云安全团队成功防御了黑客对阿里云平台上某互联网金融用户发起的超大规模HTTPS/SSL CC流量攻击,此次攻击也是迄今为止全球有统计数据最大的HTTPS SSL/CC攻击。 作为国内最大的公共云计算服务提供商,大量网站选择阿里云的安全防护,也因此为国内客户防御了当前互联网上主要的攻击行为。 攻击者从11月5日下午14点开始针对网站开始发起攻击,出现两次波峰分别在14点10和晚上7点30左右,总攻击量达到了5亿次请求。 ![1攻击请求QPS变化.jpg](http://stu...阅读全文

Go语言fmt包Printf方法详解

Go语言的标准输出流在打印到屏幕时有些参数跟别的语言(比如C#和Java)不同,下面是我整理的一些常用的格式化输入操作。 General %v 以默认的方式打印变量的值 %T 打印变量的类型 Integer %+d 带符号的整型,fmt.Printf("%+d", 255)输出+255 %q 打印单引号 %o 不带零的八进制 %#o 带零的八进制 %x 小写的十六进制 %X 大写的十六进制 %#x 带0x的十六进制 %U 打印Unicode字符 %#U 打印带字符的Unicode %b 打印整型的二进制 Integer width %5d 表示该整型最大长度是5,下面这段代码 12 fmt.Printf("|%5d|", 1) fmt.Printf("|%5d|", 1234567) 输出结...阅读全文

博文 2017-09-21 12:17:25 johng

golang 格式化输入输出

fmt 包实现了格式化 I/O 函数,类似于 C 的 printf 和 scanf。格式“占位符”衍生自 C,但比 C 更简单。 【打印】 占位符: [一般] %v 相应值的默认格式。在打印结构体时,“加号”标记(%+v)会添加字段名 %#v 相应值的 Go 语法表示 %T 相应值的类型的 Go 语法表示 %% 字面上的百分号,并非值的占位符 [布尔] %t 单词 true 或 false。 [整数] %b 二进制表示 %c 相应 Unicode 码点所表示的字符 %d 十进制表示 %o 八进制表示 %q 单引号围绕的字符字面值,由 Go 语法安全地转义 %x 十六进制表示,字母形式为小写 a-f %X 十六进制表示,字母形式为大写 A-F %U Unicode 格式:U+1234,等同于 ...阅读全文

博文 2015-12-22 12:00:05 zhangxing__

golang语法总结(七):常量计数器

关键字为iota,没遇到一个const关键字就会置为0,然后递增。还有就是如果定义常量组,没有赋值的编译器会自动将其赋值表达式置为和它前面那个变量的表达式一样 const ( A = 55 B = iota C D)func main() { fmt.Println(A) fmt.Println(B) fmt.Println(C) fmt.Println(D)} 输出: 55 1 2 ...阅读全文

博文 2016-02-22 14:00:06 QQ245671051

golang printf 格式化输出

https://blog.csdn.net/qq_34777600/article/details/81266453 Printf 格式化输出 通用占位符: v 值的默认格式。 %+v 添加字段名(如结构体) %#v 相应值的Go语法表示 %T 相应值的类型的Go语法表示 %% 字面上的百分号,并非值的占位符 布尔值: %t true 或 false 整数值: %b 二进制表示 %c 相应Unicode码点所表示的字符 %d 十进制表示 %o 八进制表示 %q 单引号围绕的字符字面值,由Go语法安全地转义 %x 十六进制表示,字母形式为小写 a-f %X 十六进制表示,字母形式为大写 A-F %U Unicode格式:U+1234,等同于 "U+%04X" 浮点数及复数: %b 无小数部分的...阅读全文

博文 2019-05-09 12:34:53 DragWellGoHead

Go语言学习笔记(二) [变量、类型、关键字]

日期:2014年7月19日 1、Go 在语法上有着类 C 的感觉。如果你希望将两个(或更多)语句放在一行书写,它们 必须用分号分隔。一般情况下,你不需要分号。 2、Go 同其他语言不同的地方在于变量的类型在变量名的后面。例如:不是,int a,而是 a int。当定义了一个变量,它默认赋值为其类型的 null 值。这意味着,在 var a int后,a 的 值为 0。而 var s string,意味着 s 被赋值为零长度字符串,也就是 ""。 3、Go语言的变量声明和赋值 在Go中使用var对变量进行声明, 例如: var a int a = 15 var将变量a声明为int型,然后通过=赋值。 当然在Go语言中,我们可以把声明和赋值过程一步完成, 例如: a := 15(这一形式只可用在...阅读全文

博文 2014-10-10 21:00:00 whxaing2011

算法代码实现之二分法查找,Golang(Go语言)实现

封装成函数: //二分法查找//切片s是升序的//k为待查找的整数//如果查到有就返回对应角标,//没有就返回-1func BinarySearch(s []int, k int) int { lo, hi := 0, len(s)-1 for lo <= hi { m := (lo + hi) >> 1 if s[m] < k { lo = m + 1 } else if s[m] > k { hi = m - 1 } else { return m } } return -1} 测试: s := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}fmt.Println(BinarySearch(s, 6)) 输出: ...阅读全文

博文 2016-03-03 19:00:00 QQ245671051

golang fmt占位符

golang fmt格式“占位符” qing123 · 2015-03-21 03:00:01 · 43307 次点击 · 预计阅读时间 2 分钟 · 大约1分钟之前 开始浏览 这是一个创建于 2015-03-21 03:00:01 的文章,其中的信息可能已经有所发展或是发生改变。 golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字段...阅读全文

博文 2018-07-14 18:30:00 Csir

[翻译]编译器(5)-语言规格说明书

文在此。 ————翻译分隔线———— 编译器(5)-语言规格说明书 第一部分:介绍 第二部分:编译、转译和解释 第三部分:编译器设计概览 第四部分:语言设计概述 这是最后一部分关于 Calc 的设计规格! 设计语言 我希望尽量让语言保持简单。我管这个语言叫 Calc。很明了,就是用于计算器(calculator)。聪明吗,聪明吗?好,嗯,继续! 我还希望有一个单一的基础类型。我决定做一些与这个语言名字一样聪明的事情,就叫它 Integer(整数)。我知道,聪明绝顶。你的赞赏将被载入史册。为了简单期间,我决定避免处理浮点数,以及二进制、八进制、十六进制还有科学计数法。我将添加其他计数方式作为练习留给你。 我们还需要表示文件结尾、注视和数学符号。 在开始解析和执行我们的语言之前,还有一个需要确定...阅读全文

博文 2014-10-13 22:00:05 mikespook

八皇后问题详细推导(递归和非递归,Go语言实现)

回溯法解八皇后问题(递归和非递归,Go语言实现) 问题重现: 在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法?如果问题拓展到n*n,又有多少种摆法? 分析: 回溯法解8*8问题 棋盘横坐标i,纵坐标j,7>=i>=0且7>=j>=0,皇后摆法位置(i,j) 用pos[i]记录第i个皇后放的位置 分析:用0表示没有,用1表示已有 用a[i]表示第i行是否摆放了皇后(a取值在0~7) 用b[j]表示第j列是否摆法了皇后(b取值在0~7) 用c[j-i+7]正对角线是否摆放了皇后(c取值在0~14) 用d[i+j]斜对角线是否摆法了皇后(d取值在0~14) 优化: a[i]这个判断条件可以省略,因为在取皇后的时候,皇后不能放...阅读全文

博文 2015-06-17 23:00:50 WAPWO

Go语言学习之路(五)输入和输出

输出语句 1.输出方法 fmt.Println()//换行输出 fmt.Print()//不换行输出 fmt.Printf() 2.输入方法 数据间隔只能使用回车 数据间隔可以使用空格和回车 fmt输入输出(printf和scanf采用的数据类型格式化) Scan()函数和Scanf()方法关于字符型变量的问题: var a byte fmt.Scan(&a) fmt.Printf("%c",a) Scan接收字符型变量时只接收整型 并通过ASCII码值转换为字符型 var a byte fmt.Scanf("%d",&a) fmt.Printf("%c",a) Scanf %d只能接收整型,不能接收字符型 所以在输入字符型变量时应该使用fmt.Scanf(“%c”,&a) 格式 含义 %%...阅读全文

博文 2018-12-17 00:31:01 weixin_39640179

从golang的垃圾回收说起(上篇)

本文来自网易云社区1 垃圾回收中的重要概念1.1 定义In computer science, garbage collection (GC) is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program. Garbage collection was invented by John McCarthy around 1959 to simplify manual memory manage...阅读全文

博文 2018-08-28 21:30:00 163yun

零基础学GoLang-2-Helloworld

package main import "fmt" func main() { fmt.Print("hello, world\n") }运行输出 helloworld;内容分析:fmt :fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. 格式“占位符”衍生自C,但比C更简单。 一般: %v 相应值的默认格式。在打印结构体时,“加号”标记(%+v)会添加字段名 %#v 相应值的Go语法表示 %T 相应值的类型的Go语法表示 %% 字面上的百分号,并非值的占位符 布尔: %t 单词 true 或 false。 整数: %b 二进制表示 %c 相应Unicode码点所表示的字符 %d 十进制表示 %o 八进制表示 %q 单引号围绕的字符字面值,由Go语法安全地转义 %...阅读全文

博文 2015-10-17 03:00:00 yunhai0417

我的Go语言本地安装经历 - msi安装法

1.下载并安装 首先我在https://golang.org/dl/上面下载了适合自己的安装包,注意有些版本没有在置顶的几个项目里面,比如i386的版本就需要自己到下方列表去找 中间要选择一下安装目录 设置以下环境变量 GOROOT g:\go\ GOBIN g:\go\bin\ PATH里面加上g:\go\bin、 验证方法,在命令行窗口下输入go命令出现了go命令信息 2.编译和运行 我创建helloworld.go文件写入 package main import "fmt" func main() { fmt.Println("Hello, World") } 然后运行指令:go run helloworld.go直接执行go语句 或者运行指令:go build helloworld....阅读全文

博文 2016-09-15 05:00:02 danteLiujie

Golang学习(6)——sort包

Golang学习 - sort 包--------------------// 满足 Interface 接口的类型可以被本包的函数进行排序。type Interface interface { // Len 方法返回集合中的元素个数 Len() int // Less 方法报告索引 i 的元素是否比索引 j 的元素小 Less(i, j int) bool // Swap 方法交换索引 i 和 j 的两个元素的位置 Swap(i, j int)}// 对 data 进行排序(不保证相等元素的相对顺序不变)// data 默认为升序,执行 Reverse 后为降序。func Sort(data Interface)// 对 data 进行排序(保证相等元素的相对顺序不变)// data 默认...阅读全文

博文 2017-02-09 18:26:28 1160636144

【Leetcode】:242. Valid Anagram问题 in Go语言

Given two strings s and t, write a function to determine if t is an anagram of s. For example, s = "anagram", t = "nagaram", return true. s = "rat", t = "car", return false. Note: You may assume the string contains only lowercase alphabets. Follow up: What if the inputs contain unicode characters? How would you adapt your solution to such case? 这个问...阅读全文

博文 2016-05-23 00:00:03 u013564276

通过leetcode学算法——动态规划(dp)

先贴问题: Delete Operation for Two Strings Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 the same, where in each step you can delete one character in either string. 说白了就是找到两个字符串非连续最大公共字符串。如果对dp算法很熟悉的很快就能想到这个问题的解法,然而我并不是很熟悉,所以用了一个很挫很慢的方法,个人理解应该是分治法,很多步骤被重复算了很多次。 写的很搓,轻喷。 下面就要介绍一下简单易懂的dp算法啦,先上代码(leetco...阅读全文

博文 2017-08-02 03:06:31 Tibbersshao

如何泄漏一个协程然后修复它

很多 go 语言开发者都知道这句格言,[永远不要启动一个你不知道如何停止的协程](https://dave.cheney.net/2016/12/22/never-start-a-goroutine-without-knowing-how-it-will-stop),但是泄漏一个协程还是超级的简单。让我们看一种常碰到的泄漏协程的方式,然后修复它。 为了实现这个,我们先建立一个包含一个自定义 `map` 类型的库,这个 `map` 类型的 key 在经过了一段可配置的时间后过期。我们把这个库叫做 [ttl](https://en.wikipedia.org/wiki/Time_to_live) ,这个库有一个 `API` 类似如下: ```go // 创建一个生存周期为5分钟的map m :=...阅读全文

[翻译]编译器(5)-语言规格说明书

文在此。 ————翻译分隔线———— 编译器(5)-语言规格说明书 第一部分:介绍 第二部分:编译、转译和解释 第三部分:编译器设计概览 第四部分:语言设计概述 这是最后一部分关于 Calc 的设计规格! 设计语言 我希望尽量让语言保持简单。我管这个语言叫 Calc。很明了,就是用于计算器(calculator)。聪明吗,聪明吗?好,嗯,继续! 我还希望有一个单一的基础类型。我决定做一些与这个语言名字一样聪明的事情,就叫它 Integer(整数)。我知道,聪明绝顶。你的赞赏将被载入史册。为了简单期间,我决定避免处理浮点数,以及二进制、八进制、十六进制还有科学计数法。我将添加其他计数方式作为练习留给你。 我们还需要表示文件结尾、注视和数学符号。 在开始解析和执行我们的语言之前,还有一个需要确定...阅读全文

博文 2014-10-09 16:20:27 mikespook

二分法查找(golang实现)

封装成函数: //二分法查找 //切片s是升序的 //k为待查找的整数 //如果查到有就返回对应角标, //没有就返回-1 func BinarySearch(s []int, k int) int { lo, hi := 0, len(s)-1 for lo <= hi { m := (lo + hi) >> 1 if s[m] < k { lo = m + 1 } else if s[m] > k { hi = m - 1 } else { return m } } return -1 } 测试: s := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} fmt.Println(BinarySearch(s, 6)) 输出: ...阅读全文

博文 2017-09-03 07:05:00 imroc

Alpha Go、Master为什么会下围棋

简单的说Alpha Go、Master就是一个函数y = f(x),x是当前棋子位置,y是x的应对棋子落位,也就是说下一步棋的位置,由于棋类的对抗性,显然y是对x最不利的一步走法。 假定有N个棋谱,每个棋谱有K步棋( 1<= k <361),当输入第1个棋谱的第一步棋时,使用y=f(x)计算,y就是Alpha Go、Master计算出来的第2步棋的落子位置,由于函数f没有学习好全部棋谱,所以y不是正确的走法,与棋谱中第2步棋比较有偏差,学习的目的就是让这个偏差最小趋近于零。Alpha Go、Master使用了深度学习算法不断训练这个函数f,当训练完成后对于每步棋都能得到较好的下法...阅读全文

博文 2017-01-06 02:00:01 量子世界的我

在 Go 中探索 IEEE-754 标准

在六月份时,Gustavo Niemeyer 在他的博客 [Labix.org](http://blog.labix.org/) 上提出了下面这个问题: *假设 uf 是一个无符号的 64 位整型,但包含的内容却是符合 IEEE-754 标准的二进制浮点数,你怎么去区分 uf 是表示整型还是浮点型呢?* 由于我对这方面的了解并不是很多,所以无法快速得出这个问题的答案,而且我也无法用语言来向你解释,只能通过写一个相关的程序来进行示范。幸运的是 Gustavo 发布了答案的思路,我认为非常有意思,然后我将思路进行了分解,这样能更好地理解最初的那个问题。为了更通俗易懂,后面的示例我将使用 32 位的数字。 IEEE-754 标准是如何将一个浮点数字储存为二进制格式的呢?最开始我找到了下面两篇论文:...阅读全文

博文 2018-08-24 16:14:59 polaris

内容定义组块实现 Chunker

Chunker 是基于滚动 Rabin Hash 实现内容定义组块(CDC)。  CDC 算法是一种变长分块算法,它应用数据指纹(如Rabin指纹)将文件分割成长度大小不等的分块策略。与定长分块算法不同,它是基于文件内容进行数据块切分的,因此数据块大小是可变化的。 **package chunker** `import "github.com/restic/chunker"` 对于以十六进制系数表示法对指定的多项式列表进行过滤,可以使用以下脚本:

# create x over F_2 = GF(2)
x := Indeterminate(GF(2), "x");

# test if polynomial is irreducible, ...阅读全文

golang fmt格式“占位符”

本文为转发,原文地址 golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan} %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan} %#v 相应值的Go语法表示 Printf("#v", people) main.Human{Name:"zhangsan"} %T 相应值的类型的Go语法表示 Printf("%...阅读全文

博文 2017-07-06 09:07:13 动物园园长熊熊酱

go学习

一个特殊的变量名是_(下划线)。任何赋给它的值都被丢弃。在这个例子中,将35赋值给b,同时丢弃34。 _, b := 34, 35 完整的整数类型列表(符号和无符号)是int8,int16,int32,int64 和byte,uint8,uint16,uint32,uint64。byte 是uint8 的别名。浮点类型的值有float32 和float64 (没有float 类型)。64 位的整数和浮点数总是64 位的,即便是在32 位的架构上。需要留意的是这些类型全部都是独立的,并且混合用这些类型向变量赋值会引起编译器错误,例如下面的代码:相似的类型都是独立的 package main func main() { var a int //通用整数类型 var b int32 //32 位整...阅读全文

博文 2016-02-18 21:00:01 dai_dai

《Go语言四十二章经》第三十二章 fmt包

《Go语言四十二章经》第三十二章 fmt包 作者:李骁 ## 32.1 fmt包格式化I/O 上一章我们有提到fmt格式化I/O,这一章我们就详细来说说。在fmt包,有关格式化输入输出的方法就两大类:Scan 和 Print ,分别在scan.go 和 print.go 文件中。 print.go文件中定义了如下函数: ```go func Printf(format string, a ...interface{}) (n int, err error) func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) func Sprintf(format string, a ...interfac...阅读全文

博文 2018-10-13 20:27:43 roteman

golang中fmt的'占位符'使用

golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan} %#v 相应值的Go语法表示 Printf("#v", people) main.Human{Name:"zhangsan"} %T 相应值的类型的Go语法表示 Printf("%T", people...阅读全文

博文 2017-03-05 05:54:58 skh2015java

golang nats queue模式

队列订阅模式 此模式中,订阅者要指定两个属性,主题和队列(queue,其实就是队列名称) 注意:下面所有前提=必须订阅同一个主题 发布消息后,N个具有同样的主题和queue的订阅者,只有一个会收到消息。(random算法) 说明:queue=工作组,工作组中有N个worker,发布消息后,同一个工作组中,仅有一个worker会收到消息。 相同主题,不同queue的订阅者之间,不符合上面的描述。这种情况下,可以把同一个queue的订阅者们,当成一个订阅者来处理,这样就和普通的发布订阅模式一样了。 主题subj1,queue=q1的订阅者有sub1-q1,sub2-q1,sub3-q1 主题subj1,queue=q2的订阅者有sub1-q2,sub2-q2,sub3-q2 一个主题,两组订阅者...阅读全文

博文 2018-08-18 12:35:04 luckyase

Golang Printf、Sprintf 、Fprintf 格式化

https://www.cnblogs.com/dfsxh/p/10316601.html /* %v 输出结构体 {10 30} %+v 输出结构体显示字段名 {one:10 tow:30} %#v 输出结构体源代码片段 main.Point{one:10, tow:30} %T 输出值的类型 main.Point %t 输出格式化布尔值 true %d输出标准的十进制格式化 100 %b输出标准的二进制格式化 99 对应 1100011 %c输出定整数的对应字符 99 对应 c %x输出十六进制编码 99 对应 63 %f输出十进制格式化 99 对应 63 %e输出科学技科学记数法表示形式 123400000.0 对应 1.234000e+08 %E输出科学技科学记数法表示形式 1234...阅读全文

博文 2019-06-18 14:02:47 w85278161