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

Golang flag包使用详解(一)

概述 flag包提供了一系列解析命令行参数的功能接口 命令行语法 命令行语法主要有以下几种形式 -flag //只支持bool类型 -flag=x -flag x //只支持非bool类型 以上语法对于一个或两个‘-’号,效果是一样的,但是要注意对于第三种情况,只支持非bool类型,原因是碰到如下情况时 cmd -x * *为0,false有可能表示一个文件名或文件,也有可能表示x标签的值为0或false,会产生二义性,因此规定第三种只支持非bool类型。对于整形flag,合法的值可以为1234, 0664,0x1234或负数等。对于布尔型flag,可以为1, 0, t, f, T, F,true, false, TRUE, FALSE, True, False等 命令行参数解析方法 使用f...阅读全文

博文 2015-06-17 20:03:05 thulpf

Go 语言运算符

Go 语言运算符运算符用于在程序运行时执行数学或逻辑运算。Go 语言内置的运算符有:算术运算符关系运算符逻辑运算符位运算符赋值运算符其他运算符接下来让我们来详细看看各个运算符的介绍。算术运算符下表列出了所有Go语言的算术运算符。假定 A 值为 10,B 值为 20。运算符描述实例+相加A + B 输出结果 30-相减A - B 输出结果 -10*相乘A * B 输出结果 200/相除B / A 输出结果 2%求余B % A 输出结果 0++自增A++ 输出结果 11--自减A-- 输出结果 9以下实例演示了各个算术运算符的用法:package main import "fmt" func main() { var a int = 21 var b int = 10 var c int c =...阅读全文

博文 2015-11-25 19:00:32 u011225629

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

Go 语言教程实战

安装在线教程 由于墙,golang.org 国内无法访问,其在线教程也一样 tutorial.golang.org http://go-tour-zh.appspot.com/ 可以在本机运行, 先安装Go 编译器 http://code.google.com/p/go/downloads/list 然后安装教程 go get code.google.com/p/go-tour/gotour 或者中文的 go get bitbucket.org/mikespook/go-tour-zh/gotour 最后执行安装产生的 gotour 执行文件,即可在http://localhost:3999 打开教程。 一些练习的答案 #46 练习:斐波纳契闭包 package main import "f...阅读全文

博文 2014-10-26 05:00:00 mebusw

《Golang 入门系列三》golang的运算符

前言:运算符优先级,是描述在计算机运算计算表达式时执行运算的先后顺序。 先执行具有较高优先级的运算,然后执行较低优先级的运算。 一、算数运算符 下表列出了所有Go语言的算术运算符。假定 A 值为 10,B 值为 20。 运算符 描述 实例 + 相加 A + B 输出结果 30 - 相减 A - B 输出结果 -10 * 相乘 A * B 输出结果 200 / 相除 B / A 输出结果 2 % 求余 B % A 输出结果 0 ++ 自增 A++ 输出结果 11 -- 自减 A-- 输出结果 9 二、关系运算符 下表列出了所有Go语言的关系运算符。假定 A 值为 10,B 值为 20。 运算符 描述 实例 == 检查两个值是否相等,如果相等返回 True 否则返回 False。 (A == B...阅读全文

博文 2018-02-28 01:33:07 IT--小哥

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二进制转换十进制代码

Golang二进制转换十进制代码,使用 container/list 实现出入栈操作,完成转换。 二进制转十进制的方法是:‍‍从右到左的取数值乘以2的N次幂,依次相加,N为数值在二进制中的位数。‍‍ package main /** 二进制转换成十进制 核心: 入栈、出栈、类型转换 sum += int(v-48) * int(math.Pow(2, N)) **/ import ( "container/list" "fmt" "math" ) func main() { stack := list.New() var input string var sum int var stnum, conum float64 = 0, 2 fmt.Printf("请输入一段二进制数字:") fmt...阅读全文

博文 2015-06-05 14:00:01 一曲

golang之交叉编译设置

俺的环境,os x,目的,生成64位linux的elf文件 直接下载osx的包就可以,不需要特意去下载源码包,我的go目录是~/golang/go cd ~/golang/go/srcCGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash 终端党 到工程目录直接执行 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build liteIde党 编译cross-linux64的配置文件,大概和这样差不多 # cross-compiler linux amd64 GOROOT=$HOME/golang/go GOBIN= GOPATH=$HOME/golang/3rdLibs:$HOME/golang/myLibs:$...阅读全文

博文 2014-10-04 19:26:01 ziyouchutuwenwu

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 等她下班

golang map 用range遍历不能保证顺序输出

按照之前我对map的理解,map中的数据应该是有序二叉树的存储顺序,正常的遍历也应该是有序的遍历和输出,但实际试了一下,却发现并非如此,网上查了下,发现从Go1开始,遍历的起始节点就是随机了,当然随机到什么程度还不清楚。 package main import ( "fmt" ) func main() { x := make(map[int]int) for i := 0; i < 30; i++ { x[i] = i } for k, v := range x { fmt.Println(k, v) } } build后,多次执行,每次输出的结果都不同。当然,用 fmt.Println("map: ", x) 输出同样是无序的结果 参考http://xhrwang.me/2014/12/...阅读全文

博文 2016-06-13 13:00:03 hificamera

raspberry安装go

修改软件源 我的source.list #替换国内源 #中山大学 deb http://mirror.sysu.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi #中国科学技术大学 deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi #清华大学 deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi #华中科技大学 #deb http://mirrors.hustunique.com/r...阅读全文

博文 2015-04-13 15:00:07 scotth

Go语言 操作二进制文件

二进制文件的内容: Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F 00000000 12 31 23 12 31 22 31 23 12 31 22 22 22 22 22 22 1# 1"1# 1"""""" 00000010 22 22 22 12 23 12 23 00 00 00 00 00 00 00 00 00 """ # # 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 0...阅读全文

博文 2015-06-17 23:02:25 king1076

golang 二进制操作

http://blog.guoqiangti.com/?p=538 以前很少对二进制进行操作,在看effective go的时候,好像没有看到关于二进制操作符的说明.今天在看其他源码的时候,看到一些二进制操作符,不知道他的意思,所以就查查资料,温习一下. 按位或 | .| (按位或):【解义】对两个整数的二进制形式逐位进行逻辑或运算,原理为:1|0=1,0|0=0,1|1=1,0|1=1 等。 4|-5: 4的二进制形式为:00000000 00000000 00000000 00000100, -5的二进制形式为:11111111 11111111 11111111 11111011, 逐位进行逻辑或运算:11111111 11111111 11111111 11111111,即得到-1....阅读全文

博文 2016-03-16 09:00:02 leonpengweicn

要啥自行车之Termux:将我们的(Android)安卓手机打造成全能的服务器

Termux不仅是一个终端模拟器,还是一个完善的Linux终端环境(进一步说,一个完善且活跃的社区).也就是说,有了Termux,我们就可以做到不用root并且不用折腾就体验纯正的Linux. 在手机性能过剩的当下,配合Termux将我们的手机打造成一个全能的服务器再也不是梦.就拿笔者的手机来说,6G的RAM和128G内置存储跑任何服务都绰绰有余. 比起用树莓派搭建服务器,我们可以不用任何额外的开销(直接用现有的安卓机)就打造出性能更加强大的服务器(比起树莓派拙计的CPU和IO性能,我们的手机的配置堪称豪华). 在这里我们简单概括一下Termux的优势: 稳定:Termux就是一个普通的app,因此稳定性有来自安卓系统的背书. 安全:无需root.还是那句话:Termux就是一个普通的app...阅读全文

博文 2018-07-29 20:34:54 碳结构

树莓派又立功了!这个开源项目助你告别电销骚扰

面对越来越多的骚扰电话,已经有很多手机厂商推出了应对的应用,自动拦截或智能接听打来的骚扰电话。今天这位 Gitee 上的开发者发挥了自己的智慧,使用万能的树莓派自己制作了一个智能反骚扰的开源项目。 项目名称:QiarAI 项目作者:iQiar 使用语言:Go + Vue 项目简介 这是一个软硬件结合的开源项目,如果是普通使用者,需要有初级的硬件动手能力(比如接电源网线,插个板子总得会)。 初版主要针对手机自带的呼叫转移功能,您可以将手机设置白名单策略,将所有陌生电话呼叫转移到AI接听。 可全程使用您自己可控的云服务和硬件,无需担心隐私泄露。 已实现功能 智能接听: 识别对方的语音,配合您的话术设置判断是否骚扰行为(比如设置拒接"贷款、中介、炒股等"骚扰来电) 多种挂断策略: 发现骚扰行为并挂...阅读全文

博文 2020-04-07 11:32:43 Gitee

Golang实现红黑树

盼望已久的五一终于到来了!我一直在考虑要不要利用这几天时间好好睡上一觉,习惯成自然,宅也是如此。睡觉都觉得无聊的时候,就有了写点什么的念头。也借此机会提高一下写作能力,看看什么时候能写一部长篇小说。 用Golang实现红黑树算是一次尝试,毕竟工作环境没用到,不知道以后会不会用。自己也是看着玩,开阔一下思路。从我开始看Golang的doc到写这篇文章利用的是大概2周中的业余时间,所以Golang的语法掌握的还有欠缺;很多特性,例如高并发等都还没有测试,如文中出现错误或不合理的地方,请指正。 本文应用的基本逻辑参考自wiki的红黑树,依据golang的语言特性部分结构可能稍有改动。同时这篇文章里也加入了我在实现过程中的想法和实现时可能会遇到的问题。wiki上的红黑树中文版本,不过建议直接看英文版...阅读全文

博文 2016-05-03 14:00:03 happywjh666

Golang: 详解container/heap

golang的container包中提供了heap容器,这个容器可以用来做什么,又是怎么做到的呢?本文从golang 1.9.3的源码出发,说明了堆、heap包、heap包的用途、heap包的实现。 1 heap是什么 首先先来解释一下堆(Heap)是什么。 据维基百科 堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。 逻辑定义:n个元素序列{k1, k2… ki…kn},当且仅当满足下列关系时称之为堆: (ki <= k2i, ki <= k2i+...阅读全文

博文 2018-06-12 14:14:26 伊布

golang 二进制转十进制实现方式

golang 二进制转十进制实现方式 直接上代码 package main import ( "fmt" "math" ) func StringToIntArray(input string) []int { output := []int{} for _, v := range input { output = append(output, int(v)) } for i, j := 0, len(output)-1; i < j; i, j = i+1, j-1 { output[i], output[j] = output[j], output[i] } return output } func getInput(input string) <-chan int { out := m...阅读全文

博文 2015-07-14 03:00:00 jerrychen

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码,双字节编码...阅读全文

Golang与树莓派

Golang与树莓派 2016-10-24 最近买了个树莓派3b,本来是做下载机用的,但是发现在上面写Go代码,编译,其实和在一般机器上的体验是一样的。 不过树莓派本身有其他电脑没有的玩法,那就是GPIO的支持,配合Go-gpio库,就可以控制这些接口 下面是一个简单的跑马灯+CPU温度探测程序 因为没加散热片……所以温度有点高┐( ̄ヮ ̄)┌ 代码如下,根据/sys下的温度文件读数值,另一个是根据负载改变闪烁的频率。 很简单,所以我就不加注释了:)至于为啥叫jurassic,因为侏罗纪公园的电网就是蓝橙指示灯,然后写代码的胖子就被吃掉了 package main import ( "fmt" "io/ioutil" "strconv" "time" "runtime" "github.com...阅读全文

博文 2017-02-11 16:37:55 蒙卓

飞常准ADSB非官方解密(未完)

啥是飞常准 飞常准是家公司(废话...) 他们做飞机相关的东西, 航班动态,各种预测,轨迹记录,订机票酒店,都干 坐过飞机的,通常见过它, 分旅客版和业内版, 看名字就知道区别了吧 旅客版, 面向普通消费者, 通常叫做"飞友", 对应飞常准的英文名 feeyo 旅客版关注航班 业内版,面向专业用户,通常是机场/飞机相关的单位,功能更专业 业内版自定义航显 官网地址: http://www.variflight.com/ 啥是ADSB 广播式自动相关监视(英语:Automatic dependent surveillance – broadcast,缩写ADS–B)是一种飞机监视技术,飞机通过卫星导航系统确定其位置,并进行定期广播,使其可被追踪。空中交通管制地面站可以接收这些信息并作为二次雷达...阅读全文

博文 2020-04-09 00:32:49 Wendal兽

Trie树

Trie树,又称字典树,前缀树,是一种很常用的树结构,它被广泛用于各个方面,比如字符串检索、中文分词、求字符串最长公共前缀和字典排序等等。 字典树设计的核心思想是空间换时间,所以数据结构本身比较消耗空间。但它利用了字符串的共同前缀(Common Prefix)作为存储依据,以此来节省存储空间,并加速搜索时间。Trie 的字符串搜索时间复杂度为 O(m),m 为最长的字符串的长度,其查询性能与集合中的字符串的数量无关。其在搜索字符串时表现出的高效,使得特别适用于构建文本搜索和词频统计等应用 字典树的性质 根节点(Root)不包含字符,除根节点外的每一个节点都仅包含一个字符; 从根节点到某一节点路径上所经过的字符连接起来,即为该节点对应的字符串; 任意节点的所有子节点所包含的字符都不相同; 下图...阅读全文

博文 2019-05-22 17:34:48 helloGlobal

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` 类型的底...阅读全文

go语言序列化对象为二进制

package main import ( "bytes" "encoding/binary" "fmt" ) type Register struct { ACTION int32 SID int32 } func ExampleWrite() []byte { buf := new(bytes.Buffer) var info Register info.ACTION = 20004 info.SID = 6 err := binary.Write(buf, binary.LittleEndian, info) if err != nil { fmt.Println("binary.Write failed:", err) } fmt.Printf("% x\n", buf.Bytes(...阅读全文

博文 2015-06-17 23:07:25 body100123

最全BAT算法面试100题:阿里、百度、腾讯、京东、美团、今日头条

第一:复杂度估算和排序算法(上) 1) 时间复杂度和空间复杂度 2)认识对数器 3)冒泡排序 4)选择排序 5)插入排序 6)如何分析递归过程的时间复杂度 7)归并排序 8)小和问题 第二:复杂度估算和排序算法(下) 1)荷兰国旗问题 2)随机快速排序 3)堆结构与堆排序 4)认识排序算法的稳定性 5)认识比较器 6)桶排序 7)计数排序 8)基数排序 9)数组排序后的最大差值问题 10)排序算法在工程中的应用 第三:章栈、队列、链表、数组和矩阵结构 1)栈结构 2)队列结构 3)链表结构 4)数组结构 5)矩阵结构 6)二分搜索的扩展 第四:二叉树结构 1)二叉树结构 2)二叉树的递归与非递归遍历 3)打印二叉树 4)判断搜索二叉树 5)判断完全二叉树 6)判断平衡二叉树 7)折纸问题 8...阅读全文

博文 2019-04-26 19:55:29 javaYZ

在树莓派上构建Golang及Redis环境

今天翻了翻旧资料,发现点东西。之前公司服务器还没就位(初创公司没办法)时. 正讨论服务器的事,有同事拿出了他的Raspberry Pi。 我一想,也行.Go本来就支持多平台。Redis更是C语言写的,应当不成问题。 最后,虽然中间走了点弯路,不过还好,能跑起来. Golang: 1. 从官网去下载 1.4.2的源码包。 不要直接从github下载或用1.5版本的源码.这两个在Pi上都会有问题. 2. 执行下面命令即可. pi@raspberrypi ~/go1.4.2/src $ sudo ./all.bash # Building C bootstrap tool. cmd/dist 然后会出现 "# Building packages and commands for linux/arm...阅读全文

博文 2015-06-21 22:00:09 xcltapestry

二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" Golang解决: package main import ( "fmt" ) func addBinary(a string, b string) string { length := len(b) if len(a) > len(b) { length = len(a) } r := make([]byte, length) var extra byte for i := 0; i < length; i++ { var dib...阅读全文

博文 2020-02-27 07:32:43 CancerTiN

欢迎来到AI的世界:从树莓派,Arduino 到 HEXA | 了解机器人开发必看

嗨,大家好!我是Neo。最近几年人工智能(AI)可以说是个如火如荼的新锐概念。但不同于大疆的无人机或者各种VR设备,AI设备本身由于兼具了软硬件的要求,门槛其实还是挺高的。 比如对于之前刷屏的波士顿动力的后空翻机器人Atlas,无论是机械结构,还是运动平衡算法,都是普通玩家没法企及的。别的不说,数百甚至数千万美元的研发投入,就让大家只能看看而已了。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10122645_plM7.gif "在这里输入图片标题") 同时对于极客和硬件玩家来说,面对茫茫多的新概念,比如Raspberry Pi啦,Arduino啦,似乎都是非常火的产品二次开发社区。那么到底该如何选择呢,...阅读全文

golang包sql查询结果树形化反射扫描器

### 主要功能 > 可以搭配gorm的sql结果扫描函数Scan、Find等,将结果直接传入本包提供的树形化函数(ScanToTreeData),快速实现树形化 > 支持无限级树形化(自己嵌套自己)、有限级个性化树形化 > github 仓库地址,欢迎使用,反馈使用意见,顺便点点 star https://github.com/qifengzhang007/sql_res_to_tree ### 核心代码段 ```code // 接受树形结果的结构体要求如下: // 1.主键必须使用 primaryKey:"yes" 标签定义,类型必须是 int int64 in32 等int系列,不能使用 string 等其他类型...阅读全文

开源项目 2021-02-22 00:04:16 张三丰

Google算法工程师尹成带你深度学习数据结构与算法导论(信息学竞赛,ACM竞赛常备)视频分享

​标题程序 = 数据结构 + 算法 程序是为了解决实际问题而存在的。然而为了解决问题,必定会使用到某些数据结构以及设计一个解决这种数据结构的算法。如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功。编程实战算法,不是念PPT,我们讲的就是实战与代码实现与企业应用。程序 = 数据结构 + 算法 ——图灵奖得主,计算机科学家N.Wirth(沃斯)作为程序员,我们做机器学习也好,做python开发也好,java开发也好。有一种对所有程序员无一例外的刚需 —— 算法与数据结构日常增删改查 + 粘贴复制 + 搜索引擎可以实现很多东西。同样,这样也是没有任何竞争力的。我们只可以粘贴复制相似度极高的功能,稍复杂的逻辑没有任何办法。语言有很多,开发框架更是日新月异3个月不学就落后我们可...阅读全文

博文 2019-11-23 19:49:13 yanling1994

go实现排序的链表

链表的数据结构比较线性数组,优点是 可以方便的对任意的位置进行插入和删除。 这一特性使得它很适合于应用在排序等场景下,由于golang目前类库还不是很完善,在java中可以很简单的使用api提供的支持完成对list或者map的排序,在使用go时就没有那么幸运了,可能需要自己去实现。 下面的例子就是使用go package 中的LinkedList实现的排序的链表。 有几个功能特性: 1.支持固定的长度 2.可自定义排序的规则 3.组合LinkedList功能 package codeforfun import ( "container/list" ) type SortedLinkedList struct { *list.List Limit int compareFunc func (o...阅读全文

博文 2014-10-04 19:26:24 mahang

zabbix上添加机房温度监控以及报警

配件及准备 树莓派(装好centos7系统和zabbix agent) 1 ds18b20 1 公司自建机房,然后空调故障,扣了我们背锅侠每人500块钱,表示很郁闷。够吃多少顿大排档了!!本背锅侠表示不服!由于正在做公司的ZABBIX监控,手上正好有块树莓派(本背锅侠自己的,已被公司征用),于是想着把温度整合到zabbix里面。从某宝买了一个DS18B20板子,已经焊好电阻等器件,如图: DS18B20 0x01 经过若干天的等待,某宝的DS18B20到了之后,接上树莓派,接线如下图所示: 接线图 0x02 修改树莓派的boot配置,添加对ds18b20的驱动支持,不然读取不到温度信息 echo "dtoverlay=w1-gpio" >> /boot/config.txt 蓝后,重启树莓派...阅读全文

博文 2017-04-28 12:23:05 mkingiii

golang实现树遍历

package main import ( "container/list" "fmt" "strings" ) type MyStack struct { List *list.List } type MyQueue struct { List *list.List } type BinaryTree struct { Value interface{} Left *BinaryTree Right *BinaryTree } type Tree struct { Value interface{} Children []*Tree } func (stack *MyStack) pop() interface{} { if elem := stack.List.Back(); elem ...阅读全文

博文 2017-12-13 02:00:00 show668

drools -Rete算法

Rete算法是Charles Forgy在1979年的论文中首次提出的,针对基于规则知识表现的模式匹配算法。目前来说,大部分规则引擎还是基于rete算法作为核心,但都有所改进,比如drool,jess等等,下面介绍rete算法的概念 1.rete 算法 Rete算法是一种高效的模式匹配算法用来实现产生式规则系统 (空间换时间,用内存换取匹配速度) 它是高效的算法,它通过缓存避免了相同条件多次评估的情况,但是带来了大量的内存使用 Rete 在拉丁语中是 ”net” ,有网络的意思;Rete算法通过规则条件生成了一个网络,每个规则条件是网络中的一个节点 rete可以被分为两部分:规则编译和运行时执行。规则编译是指根据规则集生成推理网络的过程,运行时执行指将数据送入推理网络进行筛选的过程。 2.规...阅读全文

博文 2017-11-29 01:45:52 u012373815

Merkle Tree学习

/*最近在看Ethereum,其中一个重要的概念是Merkle Tree,以前从来没有听说过,所以查了些资料,学习了Merkle Tree的知识,因为接触时间不长,对Merkle Tree的理解也不是很深入,如果有不对的地方,希望各位大神指正*/ Merkle Tree概念 Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值。非叶节点是其对应子节点串联字符串的hash。[1] 1. Hash Hash是一个把任意长度的数据映射成固定长度数据的函数[2]。例如,对于数据完整性校验,最简单的方法是对整个数据做Hash运算得到固定长度的Hash值,然后把得到的Hash值公布在网上,这样用...阅读全文

博文 2017-11-24 06:00:05 fengzhiwu

2018 程序の人生:学习总结

首先感谢老板,老板很淡定,从来不赶项目进度。于是双休+不打卡的放养(佛系的工作态度),造成自己这一年基本没有加过多少班,不过周六自己主动去加班次数也不少,十多次是有的。毕竟有时候确实工作略微有些忙不开需要赶一下进度,比如把数量百万体积的上T的图片资源上传到阿里云对象存储,真的需要手动来清理控制。 当然也就有了较为空闲的时间来自我学习。2017年咬咬牙把golang过一遍,然而后续似乎并没有什么卵用就忘得差不多了,今年思考过后侧重学习编程思想和算法。 一想起算法和数据结构,就想起来多年前大一的《计算机导论》中的那个问题,我至今觉得很直白的: 什么是树?什么是二叉树? 自然完全二叉树.png 稀里糊涂的这算是毕业第2年,开始回头接着刷LEETCODE。比不过那些码神级别的,看大神都是在校都刷了很...阅读全文

博文 2018-12-23 23:34:41 silencefun

使用Go 机器学习库来进行数据分析 2 (决策树)

目录 [−] 决策树和随机森林代码评估结果 这篇文章, 继续使用golearn库分析鸢尾花的数据集。 这一次,我们会使用决策树和随机森林来分析。 决策树和随机森林 决策树是机器学习中最接近人类思考问题的过程的一种算法,通过若干个节点,对特征进行提问并分类(可以是二分类也可以使多分类),直至最后生成叶节点(也就是只剩下一种属性)。 每个决策树都表述了一种树型结构,它由它的分支来对该类型的对象依靠属性进行分类。每个决策树可以依靠对源数据库的分割进行数据测试。这个过程可以递归式的对树进行修剪。 当不能再进行分割或一个单独的类可以被应用于某一分支时,递归过程就完成了。另外,随机森林分类器将许多决策树结合起来以提升分类的正确率。 golearn支持两种决策树算法。ID3和RandomTree。 ID3...阅读全文

博文 2017-12-09 03:54:38 smallnest

电竞行业 招聘Golang工程师 Dota2相关

Golang开发工程师 10-30K 上海浦东 析乐数据 简历请投至 yangx@ceelo.cn 工作职责: 1、使用golang语言编写游戏录像解析器(二次开发) 2、Beego web服务器开发与维护 职位要求: 1、对dota2、LOL等moba类游戏有较为深入的了解 2、熟悉Go语言,对Golang系统库有研究者优先 3、有 Linux 的使用经验,具备一定的脚本和系统维护能力 4、具备C++、Node.js开发经验者优先 5、主动积极,善于学习和总结,乐于分享,有较强的团队精神。 6、对新领域有好奇心,勇于尝试 公司福利 1、我们颠覆以往你对创业公司的印象,10点上班18点下班,双休,法定假日只多...阅读全文

堆排序算法及go语言实现

堆分最大堆、最小堆。 以最大堆为例。 最大堆是一个完全二叉树。 并且要求每个结点的值必须大于他的两个子节点。 所以他的根结点一定是最大值。 但是左右结点大小不一定。 用数组表示的二叉树,可以这样表达: i的子节点下标为 2*i + 1 和 2 * i + 2. i的父节点下标为 (i-1)/2。 对于数组长度length,大于length/2的下标一定没有子节点. 排序思想是构建最大堆,之后根节点就是最大的一个了,把根结点拿出来,再把剩下的堆整理成最大堆,再把根拿出来。循环直到最后一个元素。 func HeapSort(values []int) { buildHeap(values) for i := len(values); i > 1; i-- { values[0], values[...阅读全文

博文 2016-04-15 16:00:02 zhaoguoguang

[golang]自己动手实现ini文件读取

最近迷恋go语言,但我是个编程菜鸟,这个读取参考了beego的config,只是半成品,不过能够正常运行。 接口的设计 type Parser interface { Parse() error } type Config interface { GetString(string)string Parser } 目前只支持最小操作,解析和获取。在读取之前,要让config实例化一个对象: var config Config func RegisterConfig(mode,path string){ switch mode{ case "ini": config=ini.NewIniConfig(path) case "json": case "xml": default: panic("D...阅读全文

博文 2015-06-19 23:00:29 cb741044015

基于树莓派搭建minio私有云存储(1)

在2007年,GlusterFS演变为大型分布式存储方案后,任何配备合适硬件的公司,单位都可以利用个做分布式的流媒体,数据分析。在2011年,Red Hat收购了GlusterFS.Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。Minio兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持Java,Python,Javacript, Golang语言。Minio可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。 开源中国 看起来不错,适用于大文件存储、支持S3接...阅读全文

博文 2017-06-14 06:07:31 forrestsun

go中接口与继承的选择

Go语言中没有继承,但是可以用结构体嵌入实现继承,还有接口这个东西。现在问题来了:什么场景下应该用继承,什么场景下应该用接口。 问题描述 这里从一个实际的案例出发。网游服务器中的一个例子。假设每个实体都有一个ObjectID,packet中都有使用到这个ObjectID,客户端与服务端之间通过这个ObjectID知道是一个什么实体。用面向对象的观点,就是有一个Object对象,里面有getObjectID()方法,所有对象都是继承自Object对象。 Creature继承Object,表示游戏中的生物。然后像Monster,NPC,都继承自Creature的。玩家分为三个种族,Slayer/Vampire/Ouster三个不同的类实现,继承自Creature。 Item也继承自Object,...阅读全文

博文 2017-06-01 02:03:26 徐学良

关于golang在树莓派下获取ip和mac地址

前言 最近工作需要,需求为获取树莓派以太网ip地址和mac地址,看了下golang的文档,发现net.InterfaceByName可以完成这个目标。 实现 //以太网网卡名称为eth0 inter, err := net.InterfaceByName("eth0") if err != nil { log.Fatalln(err) } //mac地址 fmt.Println(inter.HardwareAddr.String()) addrs, err := inter.Addrs() if err != nil { log.Fatalln(err) } //ip地址一个ip4一个ip6 for _, addr := range addrs { fmt.Println(addr.Stri...阅读全文

博文 2017-04-28 03:00:36 pinecone

golang 最小堆排序实现

项目中有个模块要大量任务需要控制超时,内部实现了个定时器组件,底层就是基于最小堆算法和时间轮。最小堆算法挺简单的,一个完全二叉树,每个非叶子节点比其两个子节点都小,这就是个最小堆。 该文章后续仍在不断的更新修改中, 请移步到原文地址http://dmwan.cc 实现代码如下: package main import ( "fmt" ) func heapSort(input []int){ inputLen := len(input) if inputLen == 0 { return } for i:=0; i<inputLen; i++{ minAjust(input[i:]) } } func minAjust(input []int){ inputLen := len(input)...阅读全文

博文 2018-05-31 15:33:07 鼎铭

树莓派编译安装最新Golang

树莓派通过 apt-get 安装的golang不是最新的版本,只能通过源码编译安装 官方参考: https://golang.google.cn/doc/install/source 编译安装go编译器,通过go1.4源码 编译安装go1.11 所以,两次编译用一份源码,但是不同分支,go1.4 和 go1.11 首先go1.4 $ git clone https://github.com/golang/go.git $ cp go go1.4 # 复制一份 $ cd go1.4 # 进入1.4 $ git branch -a # 查看所有分支 $ git checkout -b 1.4 origin/release-branch.go1.4 # 创建远程go1.4的本地分支并切换 $ cd...阅读全文

博文 2018-10-03 00:34:39 别写无用的