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

GO 在window 64bit的下的常见问题(一)

安装 1. GO 无法识别 D:\install\GO112\test>D:\install\GO112\bin\go.exe run helloworld.go package runtime: cannot find package "runtime" in any of: c:\go\src\pkg\runtime (from $GOROOT) ($GOPATH not set) 解决方法: 安装window版的GO,会运行不起来GO,请配置 GOPATH = $GOROOT/bin - go run $GOROOT/test/helloword.go 2. 中文在CMD中显示乱码: 解决方法: 在CMD窗口无法正常显示中文: - chcp 65001 - 属性->字体->选择Luci...阅读全文

博文 2015-08-10 01:00:00 u010567180

Hdu 5193 Go to movies Ⅱ(带删除数插入数的逆序数对,块状链表)

传送门:Hdu 5193 Go to movies Ⅱ 题意: 有n个人站成一排,每个人的身高为Hi。每次有人加入或者有人离开,就要判断有多少人站反了(i < j&&Hi>Hj) 第一行n,m,接下来n个整数(n,m<=2e4) 接下来m行, 0 x y 表示有一个身高为y的人插在x后面,x=0表示插在最前面。(1≤y≤n) 1 x 表示第x个人(从左到右)离开。 思路:摘自题解http://bestcoder.hdu.edu.cn/solutions.php?page=12 添加或者删除一个元素时,维护逆序对时,需要知道在它之前有多少个数比它大,在它之后有多少个数比他小。有下标和权值两个维度,可以使用两个数据结构嵌套。题目中n=20000,范围不大,外层可以使用分块维护下标,这样添加和删除...阅读全文

博文 2016-09-14 15:00:00 acm_fighting

Google公布实现Go 1.5自举的计划

本文转自InfoQ的公众号,分享给大家。 ​ Google最近公布了实现Go 1.5自举(Bootstrap)的计划。相关文档的作者是Go核心开发者Russ Cox,他在Go语言上已经耕耘了接近6年。据Russ介绍,Google就“如何从Go源码树中去除所有的C程序”已经酝酿了一年。 自举(Bootstrapping) 是这样的过程,“用要编译的目标编程语言编写其编译器(或汇编器)”。一般而言,自举有几个优势,比如: 用于测试被自举的语言; 支持使用通常更为高级、提供更多高级抽象的语言来编写编译器; 编译器也可以得益于语言层面的任何改进。 如前所述,Google在一年前就开始了从Go源码树中去除C代码的努力,转换计划分为5个步骤: 第1阶段——开发一个从C语言到Go语言的翻译器,将现有的C编...阅读全文

博文 2015-03-24 01:00:01 codemanship

数据结构和算法(Golang实现)(23)排序算法-归并排序

归并排序 归并排序是一种分治策略的排序算法。它是一种比较特殊的排序算法,通过递归地先使每个子序列有序,再将两个有序的序列进行合并成一个有序的序列。 归并排序首先由著名的现代计算机之父John_von_Neumann在1945年发明,被用在了EDVAC(一台美国早期电子计算机),足足用墨水写了 23 页的排序程序。注:冯·诺依曼(John von Neumann,1903年12月28日-1957年2月8日),美籍匈牙利数学家、计算机科学家、物理学家,是20世纪最重要的数学家之一。 一、算法介绍 我们先介绍两个有序的数组合并成一个有序数组的操作。 先申请一个辅助数组,长度等于两个有序数组长度的和。 从两个有序数组的第一位开始,比较两个元素,哪个数组的元素更小,那么该元素添加进辅助数组,然后该数组...阅读全文

博文 2020-04-07 16:32:38 陈星星

深入内核架构--内存屏障

简介 之前在看golang gc、java gc及volatile 可见性的时候,经常会看到内存屏障,但是对于其基本原理似懂非懂,也对于内存屏障是如何保障多个CPU之间的数据可见性保持好奇,网上的博客基本上只是停留于表面,导致我产生了几个误区: 1. CPU之间内存数据可见性问题是由于cpu cache没及时同步数据导致的。 2. 内存屏障为啥能通过防止指令重排序,就能让cpu cache及时同步数据? 不过最近发现这只是表面现象!所以今天写一下这篇文章来彻底介绍一下内存屏障 CPU cache 虽然内存可见性问题不是直接由cpu cache导致的,还是与cpu cache是有密切联系的,所以我们先来简单介绍一下cpu cache。 在我之前的文章中有提到内核对于小块内存是通过slab来管理...阅读全文

Go 内存模型和Happens Before关系

Happens Before 是内存模型中一个通用的概念,Go 中也定义了Happens Before以及各种发生Happens Before关系的操作,因为有了这些Happens Before操作的保证,我们写的多goroutine的程序才会按照我们期望的方式来工作。什么是Happens Before关系Happens Before定义了两个操作间的偏序关系,具有传递性。对于两个操作E1和E2:如果E1 Happens Before E2, 则E2 Happens After E1;如果E1 Happens E2, E2 Happens Before E3,则E1 Happens E3;如果 E1 和 E2没有任何Happens Before关系,则说E1和E2 Happen Concur...阅读全文

博文 2018-08-11 22:31:20 hsiafan

帮忙看一下代码的执行乱序

输入内容,并将输入的内容传输至网络服务端。但是目前的代码,cmd.go中的Execmd函数,从打印的日志来看,dealConn函数输入内容后会执行2次。 main.go ```go package main import ( "fmt" "github.com/client/cmd" "net" "os" "github.com/spf13/cobra" ) const version = "1.0.0" var address string var versionFlag bool var conn net.Conn var RootCmd = &cobra.Command{ Use: "client", RunE: exec...阅读全文

win命令行程序在使用more参数后,输出变化了是什么原理?

请教各位高手1个问题。 我用go写了个简单的ls命令,用kernel32.dll中的SetConsoleTextAttribute设置可以有颜色,但是如果使用了more命令后,输出的颜色没有了,而且输出中文也会乱码,请问这是什么原理? 谢谢了。 ![alt 文本](http://a2.qpic.cn/psb?/3d512566-ae8e-48cc-b028-f71e76c716a1/11Q1aag6plv4iRNkGLUDr6K320JtwaSVI7wxKEMYLz4!/b/dOIAAAAAAAAA&bo=TwTUAAAAAAABB78!&rf=viewer_4...阅读全文

go map操作需要注意的地方

map 数据直接赋值,或者作为函数参数传递时是 指针传递, 修改其中一个则会修改全部变量数据 func main() { var s_map = make(map[int]int) for i := 0; i <= 5; i++ { s_map[i] = i } fmt.Println(s_map) s_map2 := s_map s_map2[10] = 100 fmt.Println(s_map) fmt.Println(s_map2) test_map(s_map) fmt.Println(s_map) fmt.Println(s_map2) } 输出: map[0:0 1:1 2:2 3:3 4:4 5:5] map[0:0 1:1 2:2 3:3 4:4 5:5 10:100] m...阅读全文

博文 2014-10-04 19:26:44 984195889

go 学习笔记之解读什么是defer延迟函数

`Go` 语言中有个 `defer` 关键字,常用于实现**延迟函数**来保证关键代码的最终执行,常言道: "未雨绸缪方可有备无患". **延迟函数**就是这么一种机制,无论程序是正常返回还是异常报错,只要存在延迟函数都能保证这部分关键逻辑最终执行,所以用来做些**资源清理**等操作再合适不过了. ![go-error-about-defer.jpg](https://upload-images.jianshu.io/upload_images/16648241-fd49fdabb48f390e.jpeg) ## 出入成双有始有终 日常开发编程中,有些操作总是**成双成对**出现的,有开始就有结束,有打开就要关闭,还有一些**连续依赖**关系等等. 一般来说,我们需要控制结束语句,在**合适...阅读全文

博文 2019-10-18 19:21:25 snowdreams1006

【Go语言】基本类型排序和 slice 排序

Go 是通过 sort 包提供排序和搜索,因为 Go 暂时不支持泛型(将来也不好说支不支持),所以,Go 的 sort 和 search 使用起来跟类型是有关的,或是需要像 c 一样写比较函数等,稍微显得也不是很方便。 引言 Go 的排序思路和 C 和 C++ 有些差别。 C 默认是对数组进行排序, C++ 是对一个序列进行排序, Go 则更宽泛一些,待排序的可以是任何对象, 虽然很多情况下是一个 slice (分片, 类似于数组),或是包含 slice 的一个对象。 排序(接口)的三个要素: 待排序元素个数 n ; 第 i 和第 j 个元素的比较函数 cmp ; 第 i 和 第 j 个元素的交换 swap ; 乍一看条件 3 是多余的, c 和 c++ 都不提供 swap 。 c 的 qs...阅读全文

博文 2016-09-22 05:00:02 u010983881

go语言的排序和搜索(转载)

http://studygolang.com/articles/1598 go语言的排序和搜索 晚上准备动手写点 go 的程序的时候,想起 go 如何排序的问题。排序 sort 是个基本的操作,当然搜索 search 也是。c 提供一个 qsort 和 bsearch,一个快排一个二分查找,不过是使用起来都不方便; c++ 中的 sort 貌似很不错,因为 c++ 支持泛型(或是说模板),所以很多东西使用起来很方便。go 是通过 sort 包提供排序和搜索,因为 go 暂时不支持泛型(将来也不好说支不支持),所以,go 的 sort 和 search 使用起来跟类型是有关的,或是需要像 c 一样写比较函数等,稍微显得也不是很方便。 补注: 近来又看 go 的排序, 发现以前对 go 的排序理...阅读全文

博文 2016-01-11 03:00:00 basque

golang实现字符串逆序,不允许临时变量的原地逆序

package main import ( "fmt" ) var ( s1 string ) func main() { fmt.Println(s1) fmt.Println(converString(s1)) } func init() { s1 = "我爱你waylau.com" } func reverseString(s string) string { str := []rune(s) for i, j := 0, len(str)-1; i < j; i, j = i+1, j-1 { str[i], str[j] = str[j], str[i] } return string(str) } 后台输入为 我爱你waylau.com moc.ualyaw你爱...阅读全文

博文 2017-02-10 13:50:49 墨云天

golang channel string 信号乱码

因golang代码编写是允许在同一个for select代码结构中使用相同的变量名,这样会造成运行时chan发送的内容出现乱码现象,乱码率大概在98%左右,所以这是一个坑,希望大家别重复踩坑。以下是代码说明:var DelHubs chan string = make(chan string)var DelHub chan string = make(chan string)go func() { Deller.DelHub <- key}() //会出现乱码的代码,我在两个不同的chan中定义并使用了两个相同命名的变量,这就是造成乱码问题所在func delChan() { for { select { case ukey, ok := <-Deller.DelHubs: if ok { ...阅读全文

博文 2016-07-24 12:00:00 jacle169

go语言的排序和搜索

晚上准备动手写点 go 的程序的时候,想起 go 如何排序的问题。排序 sort 是个基本的操作,当然搜索 search 也是。c 提供一个 qsort 和 bsearch,一个快排一个二分查找,不过是使用起来都不方便; c++ 中的 sort 貌似很不错,因为 c++ 支持泛型(或是说模板),所以很多东西使用起来很方便。go 是通过 sort 包提供排序和搜索,因为 go 暂时不支持泛型(将来也不好说支不支持),所以,go 的 sort 和 search 使用起来跟类型是有关的,或是需要像 c 一样写比较函数等,稍微显得也不是很方便。 补注: 近来又看 go 的排序, 发现以前对 go 的排序理解的有点浅了。 go 的排序思路和 c 和 c++ 有些差别。 c 默认是对数组进行排序, c+...阅读全文

博文 2015-07-27 13:00:01 nop4ss

go 处理zip解压时乱码问题

问题 go语言自带的zip包可以解压zip文件 然而,如果你用winrar压缩成zip后。再用go去解压会发现文件名称是乱码。 而当你使用一众国产压缩软件压缩后再解压却不是乱码。 原因 winrar压缩时,默认采用本地编码方式来进行压缩。 在中国,本地编码方式一般是GBK。 而我们知道go语言字符串都是utf-8格式的,所以有可能出现乱码的情况。 image.png 解决方案 判定文件名编码方式,如果为GBK则转换GBK=》utf-8 由上面图片我们知道如果flags字段11bit为为1则是utf-8编码。0位本地编码 代码 代码中要用到如下两个包 "golang.org/x/text/encoding/simplifiedchinese" "golang.org/x/text/transf...阅读全文

博文 2019-06-21 21:32:41 丶赤水断

Golang学习笔记之延迟函数(defer)

关键字 defer ⽤于注册延迟调⽤。这些调⽤直到 ret 前才被执⾏,通常⽤于释放资源或错误处理。 一、当defer被声明时,其参数就会被实时解析 func a() { i := 0 defer fmt.Println(i) //输出0,因为i此时就是0 i++ defer fmt.Println(i) //输出1,因为i此时就是1 return } 二、当一个函数内多次调用 defer 时,Go 会把 defer 调用放入到一个栈中,随后按照先进后出的顺序执行。 func main() { defer fmt.Println("1") defer fmt.Println("2") defer fmt.Println("3") defer fmt.Println("4") } 输出顺序为4...阅读全文

博文 2018-12-11 21:34:44 学生黄哲

hdu 5193 Go to movies Ⅱ 块状链表 + 树状数组

数组的定位o(1),插入o(n). 链表的定位o(n),插入o(1). 所以把二者结合,是复杂度均摊为 sqrt(n) 设每块的大小为S,那么删除或者添加元素时,维护逆序对数的复杂度是O(S+\frac{P}{S}* \log n)o(S+(p/s)*logn),S是块内直接暴力更新逆序对的代价,(n/s)∗logn在前面块找比它大和在后面块中找比它小的代价,P表示当前元素的个数。为了使这两部分复杂度尽量均摊让S=\frac{P}{S}* \log nS=(p/s)*logn,S取sqrt(p*logn)。直接通过分块暴力添加和删除时,块的大小会退化,。。。。。(注:原官方题解说重构,不太清楚怎么叫重构。这里为了防止退化,在每个块元素过多时采取分裂操作)。因此整个问题的复杂度为O(m\sqr...阅读全文

博文 2016-07-07 16:00:05 Techmonster

go语言浅析二叉树

Hello,各位小伙伴大家好,我是小栈君,今天给大家带来的分享是关于关于二叉树相关的知识点,并用go语言实现一个二叉树和对二叉树进行遍历。 我们主要针对二叉树的概念,go实战实现二叉树的前序遍历、中序遍历、后序遍历。 二叉树概念 在计算机科学领域内,二叉树代表的是具有两个节点的树形结构,通常子树被称作为“左子树”,右边的被称作为“右子树”。二叉树通常的应用于实现二叉查找树和二叉堆。 例如上述图片中,我们就制定了一个二叉树,其中d、e、f称作a树的叶子节点。 [叶子结点是离散数学中的概念。一棵树当中没有子结点(即度为0)的结点称为叶子结点,简称“叶子”。 叶子是指出度为0的结点,又称为终端结点] b和c 作为树a的孩子结点,b和a因为作为一个根a的孩子,所以他们的称呼为兄弟结点。其实总结一点就...阅读全文

博文 2019-12-22 17:37:28 IT干货栈

并发与锁

并发与锁 JUC AQS AQS整体结构 锁的获取过程 CAS rote 回转数的问题 获取失败挂起的过程 释放锁唤醒等待的过程 如何防止丢失唤醒 入队时不能“贪睡”,找可靠等待者并让他叫醒自己,不在进而就获取锁,其他所有情况都告诉标记前驱别忘了叫醒自己 这就够了吗,显然还不行;满足自己去“睡”的条件的check和“睡”显然不是一个原子操作。在check后和“睡着”前如果条件变了就没人叫醒 unpark和park早就预防相关问题,猜想内部是有变量记忆了上次的操作后状态,同时基于操作系统提供的锁保证了原子性 如何防止惊群问题 锁的唤醒通常是有唤醒一个等待线程和唤醒全部等待线程的;通常在编程条件下如果想减少全部唤醒的引发不必要的竞争时,还要注意虚假 唤醒问题,被唤醒的线程如果条件不满足条件释放锁...阅读全文

博文 2018-08-05 22:34:50 七赤九紫星

[golang] 数据结构-堆排序

接上文 树形选择排序上篇也说了,树形选择排序相较简单选择排序,虽然减少了时间复杂度,但是使用了较多空间去储存每轮比较的结果,并且每次还要再和胜出节点比较。而堆排序就是为了优化这个问题而在1964年被两位大佬发明。 原理首先有几个关于树的定义: 如果一棵树每个节点的值都大于(小于)或等于其字节点的话,那么这棵树就是大(小)根树如果一棵大(小)根树正好又是完全二叉树,则被称为大根堆(小根堆) 堆排序就是利用大根堆(小根堆)的特性进行排序的。从小到大排序一般用大根堆,从大到小一般用小根堆。 流程 先把待排序的数组8、4、12、7、35、9、22、41、2用完全二叉树表示 按大根堆的特性把这个完全二叉树从最后一个非叶子节点开始比较,把较大值交换到当前位置。遇到上层节点顺序影响下层节点不满足大根堆特性...阅读全文

博文 2018-07-19 23:35:47 NicoChen

Golang二分查找

注意: 二分查找只适用于有序序列 package main import ( "bufio" "fmt" "os" "strconv" "strings" ) func main() { arr := []int{3, 4, 7, 9, 13, 45, 67, 89, 100, 180} // 排序前的数值 fmt.Println("数组中的数据: ") fmt.Println(arr) fmt.Print("输入查找的值: ") reader := bufio.NewReader(os.Stdin) str, _ := reader.ReadString('\n') str = strings.Replace(str, " ", "", -1) str = strings.Replace(...阅读全文

博文 2020-03-15 09:32:44 时光少年春

BFS广度优先算法-图

BFS主要解决两个问题 1.从A点出发,查看有没有到达B点的路径? 2.从A点出发,查找到达B的最短路径 有向图BFS用.png DFS深度优先搜索是一条道走到黑其他的道路才能继续走 上图0-1-4,0-2-4,0-3-4的查找方式 BFS广度优先搜索是类似于雷达扫描一样的去查找 上图是0-(1,2,3)-4这种查找方式 BFS的算法原理: 假设我们的查找的起点是0,终点是4 1.首先会创建一个queue把0的邻居点全部入队列 2.用一个循环遍历出队这个队列 3.去检测出队的每个元素的值是不是终点4,如果不是就把出队的这个元素的邻接点再次入队,进入第4步。反之进入第5步 4.重复2、3步骤如果 5.找到终点4就结束了 上面只是原理 通过上面的原理我们可以看到上图的一个流程 1.首先0的邻居 ...阅读全文

博文 2020-01-17 01:32:41 世界之树weight

go语言接收c语言消息中文乱码问题

`import:”github.com/axgle/mahonia” enc := mahonia.NewDecoder(“gb18030”) goStr:= enc.ConvertString(cStr) fmt.Println(goStr)` 强大的VS!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

    ').addClass('pre-numbering').hide(); $(this).addClass('has...阅读全文

博文 2016-10-31 03:00:02 MR1269427885

Go语言之rune

自公众号:“灰子学技术”,原文链接:https://mp.weixin.qq.com/s/Q5RPN0NUmAQzs3o2Tw7HXg本章算是Go语言中的一个小知识点,很简单,了解就好。1. rune类型rune类型是Go语言中的一个基本类型,其实就是一个uint32的别名,主要用于表示一个字符类型大于一个字节小于等于4个字节的情况下,特别是中文字符,定义如下所示:rune is an alias for int32 and is equivalent to int32 in all ways. It is used, by convention, to distinguish character values from integer values.type rune = int32备注:...阅读全文

博文 2020-01-08 10:02:08 ZhDavis

Go Select的实现

select语法总结 select对应的每个case如果有已经准备好的case 则进行chan读写操作;若没有则执行defualt语句;若都没有则阻塞当前goroutine,直到某个chan准备好可读或可写,完成对应的case后退出。 Select的内存布局了解chanel的实现后对select的语法有个疑问,select如何实现多路复用的,为什么没有在第一个channel操作时阻塞 从而导致后面的case都执行不了。为了解决疑问,对应代码看一下汇编调用了哪些runtime层的函数,发现select语法块被编译器翻译成了以下过程。 创建select–>注册case–>执行select–>释放select 12345select { case c1 <-1: // non-blocking c...阅读全文

博文 2017-12-26 03:25:43 nino's blog

LeetCode105. 从前序与中序遍历序列构造二叉树

描述 根据一棵树的前序遍历与中序遍历构造二叉树 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 思路 前序遍历中,第一个节点即根节点 在中序遍历中,找出第一个节点的位置,根节点前面的 L 个数据,即根节点左子树的中序遍历数据,前序遍历中根节点后面的 L 个数据即左子树的前序遍历 右子树同上 简而言之,确定了根节点,确定了左子树和右子树的数据,递归对左子树和右子树进行重建 代码实现 // 根据一棵树的前序遍历与中序遍历构造二叉树 // TreeNode Definition for a binary tree no...阅读全文

博文 2018-12-15 12:34:50 tomorrowwu

Go字符集编码转换

title: Go字符集编码转换 tags: Go 背景 从文本中读取内容的时候发现中文乱码 问题:在 Golang 的调试过程中出现中文乱码 原因:Golang 默认不支持 UTF-8 以外的字符集 解决:将字符串的编码转换成UTF-8 前提 首先我们需要使用mahonia 这个包,可以使用命令安装。 go get github.com/axgle/mahonia 使用方法 导入mahonia import "github.com/axgle/mahonia" 编写以下函数 func ConvertToString(src string, srcCode string, tagCode string) string { srcCoder := mahonia.NewDecoder(srcC...阅读全文

博文 2019-03-28 20:34:43 Clown95

golang学习笔记之-采集gbk乱码的问题?

package main import ( "bufio" "fmt" "golang.org/x/net/html/charset" "golang.org/x/text/transform" "io" "io/ioutil" "net/http" ) func DetermineEncoding(r io.Reader) []byte { OldReader := bufio.NewReader(r) bytes, err := OldReader.Peek(1024) if err != nil { panic(err) } e, _, _ := charset.DetermineEncoding(bytes, "") reader := transform.NewReader(Old...阅读全文

博文 2019-02-18 19:34:44 Maggie_up

二叉树层序遍历BFS

leetcode 刷题记录 层序遍历模板,语言为 golang func bfs(p *TreeNode) []int { res := make([]int, 0) if p == nil { return res } queue := []*TreeNode{p} for len(queue) > 0 { length := len(queue) for length > 0 { length-- if queue[0].Left != nil { queue = append(queue, queue[0].Left) } if queue[0].Right != nil { queue = append(queue, queue[0].Right) } res = append(re...阅读全文

博文 2020-05-15 14:35:40 一位路过的假面骑士丶

Golang中defer、return、返回值之间执行顺序

写go有一段时间了,虽然也能完成一些api的和一些功能的开发。但是离成为一名真正的Go 开发者还很远。 今天就总结下Go语言中的错误处理吧。对于初学者来说很重要。Go语言中延迟函数defer充当着 try…catch 的重任,使用起来也非常简便,然而在实际应用中,很多gopher并没有真正搞明白defer、return和返回值之间的执行顺序,从而掉进坑中 。 匿名返回值的情况: package main import ( "fmt" ) func main() { fmt.Println("a return:", a()) // 打印结果为 a return: 0 } func a() int { var i int defer func() { i++ fmt.Println("a def...阅读全文

博文 2017-02-10 12:24:01 谢权

golang导出csv乱码解决方法

golang导出csv乱码解决方法: 在csv文件的开头写入 UTF-8 BOM // 创建文件 dstf, err := os.Create(``"./data/" + fileName) defer dstf.Close() if err != nil { beego.Error(``"create file error: " + err.Error()) return ""``, err } `dstf.WriteString(``"\xEF\xBB\xBF"``)` `// 写入UTF-8 BOM,防止中文乱码` `// 写数据到文件` `w := csv.NewWriter(dstf)` `w.Write([]string{``"开始时间:"``, model.StartTime}...阅读全文

博文 2019-12-25 21:33:44 流浪猫吗

求助,关于rune问题

在实际项目中用到了加密的算法,在迁移php到go的过程中发现一个问题,查了半天没搞定。 如果用php的chr函数,来获取证书211的字符,获取到的乱码和使用go的rune获取到的乱码不一样。 php的代码如下: `var_dump(chr(211))` go的代码如下: ·`fmt.Printf("%c",211)·` php的输出结果是 ·�· go的输出结果是: `Ó...阅读全文

MaxCompute复杂数据分布的查询优化实践

**摘要**: 2017年中国大数据技术大会于12月7-9日在北京新云南皇冠假日酒店隆重举行, 大会就大数据时代社会各行业的智能化进程和行业实践展开深入讨论。 在12月8日的“大数据分析与生态系统”分论坛上,来自阿里巴巴计算平台事业部的高级技术专家少杰,以“MaxCompute 复杂数据分布的查询优化实践”为题,为现场来宾分享了阿里云MaxCompute最新技术与实践的洞察与经验。 2017年中国大数据技术大会于12月7-9日在北京新云南皇冠假日酒店隆重举行, 大会就大数据时代社会各行业的智能化进程和行业实践展开深入讨论。 在12月8日的“大数据分析与生态系统”分论坛上,来自阿里巴巴计算平台事业部的高级技术专家少杰,以“MaxCompute 复杂数据分布的查询优化实践”为题,为现...阅读全文

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

供应链

docuwiki我用着还行。但是很多地方还是有些问题。如果谁也用过。可以交流一下。1.比如怎样批量删除未使用的图片。一个一个删太麻烦了。2.还比如他的目录名能不能修改,不然一旦要改框架,就要到服务器里去做操作,有没有插件可以做这个?3.还有就是有没有办法让每一个页面都自带一个返回上一级的链接(自己写内部链接太麻烦,而且容易在修改文件位置后,导致链接不可用)4.表格内内容是否有办法垂直居中,表格本身能否水平居中5.有好用的编辑插件么?不要推荐FCK,我用了之后都变成乱码了,表示不敢用了。6.有没有好用的本地wiki编辑器?有问题也可以问我。我手里这个wiki吧,看上去也有点模样了。相互交流。 作者:知乎用户 链接:https://www.zhihu.com/question/19677718/...阅读全文

博文 2020-04-24 21:30:12 asialiugf

golang按顺序打印数字

/*按顺序打印数字/import ("fmt""sync""time") var Number struct {num intlock sync.RWMutex} var ch = make(chan int) func main() {// fun 1for i := 0; i < 10; i++ {go PirntNum()}time.Sleep(2 * time.Second)fmt.Println("------------------------")// fun2for i := 0; i < 10; i++ {go print2(i)ch <- i}} func PirntNum() {Number.lock.Lock()fmt.Println(Number.num)Number...阅读全文

博文 2020-03-09 17:34:05 abc965432

2019-08-22【LeekCode题库problem-2】

GitHub 地址:coffeeTu-code LeekCode 地址:题库 Language:Golang /* @题目 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 @示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 @题目大意 2 个逆序的链表,要求从低位开始相加,得出结果也逆序输出,返回值是逆序结果链表的头结点。 @解题思路 需要注意的是各种进位问题。 极端情况,例如 Input...阅读全文

博文 2019-08-23 04:32:48 CoffeeRabbit

go 学习笔记之解读什么是defer延迟函数

Go 语言中有个 defer 关键字,常用于实现延迟函数来保证关键代码的最终执行,常言道: "未雨绸缪方可有备无患". 延迟函数就是这么一种机制,无论程序是正常返回还是异常报错,只要存在延迟函数都能保证这部分关键逻辑最终执行,所以用来做些资源清理等操作再合适不过了. 出入成双有始有终 日常开发编程中,有些操作总是成双成对出现的,有开始就有结束,有打开就要关闭,还有一些连续依赖关系等等. 一般来说,我们需要控制结束语句,在合适的位置和时机控制结束语句,手动保证整个程序有始有终,不遗漏清理收尾操作. 最常见的拷贝文件操作大致流程如下: 打开源文件 srcFile, err := os.Open("fib.txt") if err != nil { t.Error(err) return } 创建...阅读全文

博文 2019-10-18 18:02:40 雪之梦技术驿站

有限状态机FSM的原理与GO的实现

有限状态机(Finite-state machine, 简写FSM)又可以称作有限状态自动机。它必须是可以附着在某种事物上的,且该事物的状态是有限的,通过某些触发事件,会让其状态发生转换。为此,有限状态机就是描述这些有限的状态和触发事件及转换行为的数学模型。 有限状态机组成 有限状态机有两个必要的特点,一是离散的,二是有限的。基于这两点,现实世界上绝大多数事物因为复杂的状态而无法用有限状态机表示。 而描述事物的有限状态机模型的元素由以下组成: 状态(State):事物的状态,包括初始状态和所有事件触发后的状态 事件(Event):触发状态变化或者保持原状态的事件 行为或转换(Action/Transition):执行状态转换的过程 检测器(Guard):检测某种状态要转换成另一种状态的条件是...阅读全文

博文 2017-07-24 02:13:43 陈康stozen

Golang算法和数据结构

排序 2.选择排序 package main import "fmt" //从未排序数组中找到最小元素,将它和数组第1个元素交换,在剩下数组中找到最小元素,与第2个数组交换... func SelectSort(arr *[5]int) { n := len(arr) for i := 0; i < n-1; i++ { min_idx := i for j := i + 1; j < n; j++ { if arr[j] < arr[min_idx] { min_idx = j } } if min_idx != i { arr[i], arr[min_idx] = arr[min_idx], arr[i] } fmt.Printf("第%d次排序 %v\n", i+1, *arr) } ...阅读全文

博文 2020-04-30 03:32:44 DoneIsBetter

golang排序算法(sort)简单好用

golang排序,是我们锻炼逻辑必不可少的,不会可以QQ联系 2817228206。相互学习。本人是小白。写的比较简单,推荐用官网的包。package mainimport "fmt"func numsum(arr []int) []int { sum := []int{} ksum := 0 vsum := 0 for _, v := range arr { for ka, va := range arr { if va > v || len(arr) == 1 { ksum = ka vsum = va } } } sum = append(sum, ksum, vsum) return sum}func main() { var arr = []int{} arr = append(a...阅读全文

博文 2020-03-18 17:32:54 bert_7eb4

Linux系统下TASSEL5.0的安装及使用

之前做SSR标记和简化测序都是用的桌面化的TASSEL进行运算,对于做关联分析的初学者非常简单,十分好入门。但是关于命令行的操作就要麻烦一些,但是运算起来不像GAPIT那样消耗大量的内存,下面做一些简单的示例。 1.安装 1.1 Java JDK 8.0的安装 java下载 下载地址 #下载 wget http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-linux-x64.rpm #安装 rpm -ivhc jdk-8u112-linux-x64.rpm #测试安装 java -vsrsion #查看java版本 [root@lilibei java]# java -version java version "1.8...阅读全文

博文 2019-12-10 17:32:47 种地的pele

byte数组转str

// string转[]byte a := "hello world" arr := []byte(a) // []byte转string str := fmt.Sprintf("%x", arr) // str := string(arr)//这种转string的方式会出现乱码 顺便给出golang中的sha1算法调用 h := sha1.New() h.Write([]byte(timeStamp + nonce + token)) res := fmt.Sprintf("%x", h.Sum(nil)...阅读全文

博文 2019-01-24 18:34:43 杜子龙

[求助]golang中 哈希加密:mac.Sum(nil) 后的结果如何转为普通字符串?

``` // Original key 均为普通字符串 key := []byte(Original) mac := hmac.New(sha1.New, key) mac.Write([]byte(SecretKey)) SignTmp := mac.Sum(nil) fmt.Printf("%x", mac.Sum(nil)) // 正常打印 cb679a19c10ea9153da5281e88fb34fa145b3174 ``` 如上,然后我尝试将其转换为字符串 ``` tmp := []byte(SignTmp[:]) result := string([]byte(tmp[:])) //result变为乱码 ``` 发现resul...阅读全文

go语言,一些零碎没时间整理

os.Stdout.Write(row[0].([]byte)) //往标准输出时写入必须是二进制 fmt.Println(row[0].([]byte)) //输出结果 一个显示正常值 一个显示二进制值 astaxie6 [54] php json 时总会出现乱码 头六个字符 但是在linux上用文本编辑器打开后就没有了 这个有可能跟utf8的bom头有关 没有进一步确...阅读全文