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

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

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

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

在树莓派上构建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

Golang实现红黑树

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

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

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

[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

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

关于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: 详解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 伊布

要啥自行车之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 碳结构

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 蒙卓

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

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

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

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

avl树 golang实现

#Tree 术语: - 树 - 根 - 节点 - 叶子 - 层次, 根节点 - 深度 - 树的高度, 空树的深度为`-1`, 根的深度为`0`, 一个节点的高度为`0`, 所有的树叶的高度都为`0`。 --- ##二叉树 每个节点最多有两个孩子,空树也是一棵二叉树,链表是一种特殊的二叉树。 ## 二叉排序树(二叉搜索树,B树) ## 满二叉树 ## 完全二叉树 ## AVL树 AVL树本质上还是一棵二叉搜索树(因此读者可以看到我后面的代码是继承自二叉搜索树的),它的特点是: 1. 本身首先是一棵二叉搜索树。 2. 带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1。 例如: ``` 5 5 / \ / \ 2 6 2 6 / \ \ / \ 1 4 7 1 4 / / 3...阅读全文

堆排序算法及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

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

go语言十大排序算法总结(下篇)

希尔排序 希尔排序基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2《d1重复上述的分组和排序,直至所取的增量dt=1(dt《dt-l《…《d2《d1),即所有记录放在同一组中进行直接插入排序为止。 该方法实质上是一种分组插入方法。 个人总结: public class ShellSorter { public void Sort(int[] arr) { int inc; for (inc = 1; inc <= arr.Length / 9; inc = 3 * inc + 1) ; for (; inc > 0; inc /= 3) { for (int i = ...阅读全文

博文 2016-07-17 19:00:04 guoer9973

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

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 徐学良

基于树莓派搭建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

关于官网二叉树的实现的困惑。

关于官方的二叉树的经典实现的。如下: ![1.png](http://studygolang.qiniudn.com/160804/3ea70c159dc41eeab7204d51b96505a5.png) ![2.png](http://studygolang.qiniudn.com/160804/0504f939c17106cb7ae36e42f92098c7.png) 如果有二叉树a,b,b和a的差别就是b的节点 比a多,那a使用的管道能正常关闭,b的使用管道何时关闭?b所在的goroutine何时释放? 个人认为如果出现不匹配,则始终会有管道和goroutine没有释放。 如果要释放资源,目前能想到的办法是给Walker中多传入一个flag管道判断是否需要释...阅读全文

初识go语言,写了个递归题目作为helloworld

上周D总在公司TTT上普及了go,当时只是概念上知道这门语言,D总出的小题目我用Java写了类似于DP的算法,被宣布太耗内存^^。这两天在公交上看了会reference(http://golang.org),最喜欢的特性是goroutines、多返回值和并列赋值/声明。觉得光看没用,还是写个helloworld吧,想到之前看到过一个这样的题目: 一颗二叉树,其节点上不均匀的分布了若干石头,石头数跟二叉树总节点数相同,石头只能在边上(即父子节点之间)进行搬运,每次只能搬运一颗石头。求使每个节点石头皆为一的最少搬运次数。 题目思路不多说了,甚至可能我的解法不是最优,这里主要是作为golang练手,在代码里详述。由于连机器上都还没装go环境,直接在http://play.golang.org上写的...阅读全文

博文 2014-10-04 19:26:23 leoyonn

golang 写二叉查找树练习

package main import ( "fmt" ) type item struct { key int } type tree struct { lchild, rchild *tree item item count int } func compare(x, y item) int { var ret int switch { case x.key > y.key: ret = 1 case x.key == y.key: ret = 0 case x.key < y.key: ret = -1 } return ret } func create(T *tree, x item) *tree { if T == nil { T = new(tree) T.item = x T...阅读全文

博文 2015-06-21 00:01:19 u014798316

后端工程师入手了树莓派 pi 3B和SIM 900

po 主是苦逼码农一枚,软件工程师,做服务端方向,主要写 nodejs & golang 偶尔写点 python,所以这是一篇刚刚拥有第一个开发板的小白写的小白文,以上是背景 前段时间为了改善生活买了一块树莓派3,装了 debian 8 jessie。 1. 换清华的源: sudo vi /etc/apt/sources.list 注释掉其他的源插入这两个: deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main non-free contrib deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main non-fr...阅读全文

博文 2017-06-15 19:06:38 HughFace

树莓派上小型 Linux 系统Gokrazy

Gokrazy 是用于树莓派上的一个小型 Linux 系统。长期以来我们因为在不同的树莓派上的 Linux 分发版维护带来的安全问题备受困扰。然后我们有了一个疯狂的想法,是否可以抛弃所有我们并不怎么需要的内存不安全的语言和软件。实际证明这个想法是可行的,于是就有了 Gokrazy。 Gokrazy 使用如下分区表...阅读全文

golang的sort研究

年前没钱,等发工资。就这么在公司耗着不敢回家,无聊看了下golang的sort源码 type Interface interface { // Len is the number of elements in the collection. Len() int // Less reports whether the element with // index i should sort before the element with index j. Less(i, j int) bool // Swap swaps the elements with indexes i and j. Swap(i, j int) } 只有实现这个接口才可以调用sort.Sort()进行排序哒 贴上源码实现...阅读全文

博文 2016-02-05 03:00:00 guhao123

Go语言用堆排序的方法进行一千万个int随机数排序.

上篇文章用的是quicksort方法排序,但是如果用快速排序法对重复率很高的slice排序的时候,时间复杂度会激增,速度相当慢 所以尝试了一下堆排序,实验结果,感觉挺好的.下面是代码,大家可以参考一下,这个是建立的大顶堆. 二叉树的特性: 最后一个非叶子节点 : root = length/2(当length为奇数的时候root向下取整) 在GO语言中的索引位置:root - 1, 左右孩子节点:child_l = 2*root,索引位置:child_l-1,右孩子的节点: 2*root+1 索引位置. package main import ( "fmt" "math/rand" ) func main() { Num := 10000000 var list []int for i :=...阅读全文

博文 2016-03-12 09:00:00 fyxichen

树莓派开发Go语言之初尝

最近翻起了自己之前购买的树莓派,决定拿起树莓派结合自己正在学习的Go 语言搞搞事情。这里第一先搭建环境配合运行Go 程序。 一、树莓派的安装 环境介绍: 树莓派3B、WIN10、16G CLASS10 TF卡、读卡器、Advanced IP Scanner、MobaXterm、go1.8.3.linux-armv6l.tar.gz 树莓派是直接启动SD卡上的系统,这里有一个16GB的TF卡,一个读卡器,连接到电脑。在电脑上下载一个软件 win32DiskImager 。并且到树莓派官网下载一个最新的镜像文件,RASPBIAN STRETCH LITE。这里因为我没有多余的显示器,就直接用最新的镜像文件了。 上面都准备好了过后就可以使用 win32DiskImager 烧录上面的 IMG文件 ...阅读全文

博文 2017-08-20 15:05:01 爪爪熊大坏蛋

Go 中 BST 的实现方式

本篇文章为A Binary Search Tree的核心内容翻译,仅做个人学习之用。原文在文章开头花了不少篇幅介绍查找、二叉树相关内容,本译文假定你具备一定的计算机基础,就不做过多介绍了。Import and globals在构建BST的结构时候,需要导入以下包,作用都很简单分别是提示Error,打印以及Log相关内容:package main import ( "errors" "fmt" "log" ) A Tree Node按照之前的定义,一个树节点需要包含节点数值、左孩子节点、右孩子节点。树就是一种递归的数据结构,孩子节点也同样具备上述特性。在这个小实例中,每个树节点还包含一个简单的string值域。所以Node节点的定义如下所示:type Node struct { Value s...阅读全文

博文 2017-09-27 03:06:43 allenwu.itscoder.com

自己搭建ngrok服务把树莓派放到公网上去

概述 为什么自己搭建ngrok服务呢?原因很简单,官方如果绑定域名要收费啊,自己有服务器,所以就自己搭建一个好了,要求的服务器配置又不高,说实在的树莓派IO真的惨不忍睹,我的系统装在u盘里还是卡卡卡 不管怎么说,先把树莓派扔到公网上再说 搭建ngork服务 首先当然要安装go,因为ngrok使用go写的,但是go的官方网站被墙了,所以你得学会科学上网,因为我的服务器是国外的,所以就没有存在这样的网络问题了。 首先下载go wget https://storage.googleapis.com/golang/go1.9.1.linux-amd64.tar.gz 解压 tar -zxvf go1.9.1.linux-amd64.tar.gz 之后移动解压出来的文件夹到你喜欢的位置,一般源码安装的...阅读全文

博文 2017-10-10 06:04:54 bboysoul

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

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

golang二叉树前序,中序,后序非递归遍历算法

package main import ( "container/list" "fmt" ) // Binary Tree type BinaryTree struct { Data interface{} Left *BinaryTree Right *BinaryTree } // Constructor func NewBinaryTree(data interface{}) *BinaryTree { return &BinaryTree{Data: data} } // 先序遍历-非递归 func (bt *BinaryTree) PreOrderNoRecursion() []interface{} { t := bt stack := list.New() res := mak...阅读全文

博文 2018-07-02 21:35:46 暮色伊人

Go 实现的树形结构打印文件目录GoTree

GoTree,用于在终端打印树形结构的简单的 Go 模块 GoTree 的目标是一个简单的工具,提供一个易于使用和快速的方式打印递归结构。 特点: 非常简单和快速的代码 直观的名称 易于扩展 仅使用本地库 非常[容易使用](https://github.com/DiSiqueira/GoTree#usage) 目前处于 Beta 版本 ![image](https://static.oschina.net/uploads/space/2017/0122/170649_M7nT_2720166.png...阅读全文

开源项目 2017-02-07 04:00:07 DiSiqueira

【原创】树莓派3B开发Go语言(四)-自写库实现pwm输出

在前一小节中介绍了点亮第一个LED灯,这里我们准备进阶尝试下,输出第一段PWM波形。(PWM也就是脉宽调制,一种可调占空比的技术,得到的效果就是:如果用示波器测量引脚会发现有方波输出,而且高电平、低电平的时间是可调的。) 这里爪爪熊准备写成一个golang的库,并开源到github上,后续更新将直接更新到github中,如果你有兴趣可以简书和我联系。 github.com/dpawsbear/bear_rpi_go 一、树莓派的PWM 我在很多的教程中都看到说树莓派的PWM(硬件)只有一个GPIO能够输出,就是 GPIO1。这可是不小的打击,因为我想使用至少四个 PWM ,还是不死心,想通过硬件手册上找寻蛛丝马迹,看看究竟怎么回事。 手册上找寻东西稍等下讲述,这里先提供一种方法测试 树莓派3...阅读全文

博文 2017-08-31 14:05:03 爪爪熊大坏蛋

最全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

Go语言的堆排序实现

关于堆排序的算法,可以参考我去年的文章《堆排序(HEAP SORT)》。那篇文章讲的是建立小顶堆进行的排序,这里说的是建立大顶堆建立的排序,差不多。 在Golang源码的sort包里,自带了排序函数。该函数可以对各种类型进行排序,只不过该类型需要实现三个函数,使得该类能够实现Interface接口。 type Interface interface { // Len is the number of elements in the collection. Len() int // Less reports whether the element with // index i should sort before the element with index j. Less(i, j int...阅读全文

B 树

一、B树 ![image.png](https://static.studygolang.com/180904/4849a5dfee3fced22abf700577e70016.png) 二、B+树 ![image.png](https://static.studygolang.com/180904/f9494a984657c7e30cc5d80f1874a63a.png...阅读全文

博文 2018-09-04 14:35:11 lobo

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 鼎铭

树莓派上编译 Go and 安装 Cow

PS:老Blog文章转移, 年代久远, 连接可能已失效. Cow 是不错的软件,相当好用,我在公司是直接把它挂到了服务器上,然后办公室的人都在用它。但是回到了家里我就无法用移动设备或者 PSP 之类的连接它了,我的电脑也不能一天 24 小时的在家中开机,碰巧这两天买了连个树莓派,上面运行的是专门定制过的 Debian Linux,我就想着是否能够使用它来运行 Cow。十分不幸的是,似乎作者的网站上并没有提供 ARM 设备的 Cow 版本,我尝试的下载了 Linux 32 位的版本,但是无法在树莓派上运行。所幸 Cow 是用 Go 语言写的,而 Go 支持 ARM,大不了自己编译 Cow。 我不知道是因为我的的问题还是因为什么奇怪的问题,树莓派的官方源里有 Golang,但是我安装之后却无法使...阅读全文

博文 2017-02-09 13:31:05 venmos

树莓派编译安装最新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 别写无用的

Golang学习笔记:体验Go的并发编程

当初之所以学习Go语言,就是因为一句话:Golang天生支持并发。Java中的并发是一个比较复杂的系统,前段时间面试的时候,对于我这种CRUD Boy来说,理解并能应付并发方面的问题着实有些难度。各种概念背了一遍又一遍,current包下的东西来回练习,理解各种并发系统的设计理念,才能勉强应付一些比较水的面试。 经过几天的学习,终于跟着Go指南,学到了并发一节。在这一节中,遇到的第一个练习是判断等价二叉树。 初始代码如下 package main import "golang.org/x/tour/tree" // Walk 步进 tree t 将所有的值从 tree 发送到 channel ch。 func Walk(t *tree.Tree, ch chan int) // Same 检...阅读全文

博文 2018-01-07 17:33:04 Coderztf

Golang 数据结构:二叉搜索树

Golang 中二叉搜索树的实现及常用操作,数据结构系列原文:flaviocopes.com,翻译已获作者授权。 概念树(tree):一种分层的数据结构,类比家谱 二叉树(binary tree):每个节点最多只有 2 个子节点的树 二叉搜索树(binary search tree):左节点的值均小于右节点值的二叉树 深度(depth):从 root 根结点到当前节点唯一路径的长度 高度(height):从当前节点到一片树叶最长的路径的长度 根(Root):深度为 0 的树节点 内部节点(Internal node):至少有一个子节点的节点 树叶(Leaf):无子节点的节点 兄弟节点(sibling):拥有相同父节点的子节点 二叉搜索树常用操作与节点定义123456789Insert(v) ...阅读全文

博文 2018-03-15 10:59:42 wuYinBlog

Golang-基于TimeingWheel定时器

设计思路 在linux下实现定时器主要有如下方式 基于链表实现定时器 基于排序链表实现定时器 基于最小堆实现定时器 基于时间轮实现定时器 在这当中基于时间轮方式实现的定时器时间复杂度最小,效率最高,然而我们可以通过优先队列实现时间轮定时器。 优先队列的实现可以使用最大堆和最小堆,因此在队列中所有的数据都可以定义排序规则自动排序。我们直接通过队列中pop函数获取数据,就是我们按照自定义排序规则想要的数据。 在Golang中实现一个优先队列异常简单,在container/head包中已经帮我们封装了,实现的细节,我们只需要实现特定的接口就可以。 下面是官方提供的例子 // This example demonstrates a priority queue built using the hea...阅读全文

博文 2017-09-02 12:05:38 wiseAaron

Trie树

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

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

树莓派3B开发Go语言案例-3.PCF8591模数模块使用

title: 树莓派3B开发Go语言案例-3.PCF8591模数模块使用 tags: 树莓派,go,golang,3B,3B+,PCF8591 该案例主要实现模拟信号和数字信号的转换,通过调节PCF8591模块上的可调电阻,控制LED灯的亮度,该节涉及几个知识点:I2C、PCF8591,这里不做讲解,可以自行百度 PCF8591 接线操作,将PCF8591的SDA接到树莓派的第3个针脚,SCL接到树莓派的第5个针脚,AOUT接LED灯正极,可调电阻和AIN0针脚关联 代码如下,第一个文件是参考python的PCF8591驱动写的go版驱动 package pcf8591 import ( "periph.io/x/periph/conn" "periph.io/x/periph/conn/i...阅读全文

博文 2019-04-13 01:34:38 Gold_Z

2018 程序の人生:学习总结

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

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