-
[golang] 数据结构-简单选择排序
所属栏目:[大数据] 日期:2020-12-16 热度:158
原理 简单选择排序应该是最直观最容易理解的排序方法了。 直接从头开始一个一个去比,找出最小的放到最左边。再依次完成其他位的排序。 时间复杂度 比较次数固定为O(n^2),数据交换次数是0~n-1次 因为会交换不同位置相同数值的数据,所以选择排序并不稳定 代[详细]
-
搭建go开发环境
所属栏目:[大数据] 日期:2020-12-16 热度:153
一、go下载安装 进入该网站?https://golang.google.cn/dl/? 选择相应的操作系统下载安装包 Linux/Mac OS X 安装 1、下载? go1.10.3.linux-amd64.tar.gz (Mac 可直接下载pkg一键安装) 2、将下载的源码包解压至 /usr/local目录。(mac默认下载到了/user/local[详细]
-
【golang-GUI开发】Qt5的安装
所属栏目:[大数据] 日期:2020-12-16 热度:153
golang一直被认为没有好的GUI库,事实并非如此。 目前有基于gtk+3.0的gotk3:https://github.com/gotk3/gotk3 以及接下来我们要说的qt:https://github.com/therecipe/qt ,这是基于最新的Qt5(5.11)的非官方的binding。 选用qt的理由 选择 therecipe/qt 的[详细]
-
golang基础--strcut结构体
所属栏目:[大数据] 日期:2020-12-16 热度:135
结构体struct类似python语言中的类class,结构体类的元素可以是一个变量,或者函数或者其它的类型,好比python的属性和方法。 // struct结构体,类似python语言中的class类package mainimport "fmt"type person struct { //定义一个strcut Name string Age in[详细]
-
[golang] 数据结构-树形选择排序(锦标赛排序)
所属栏目:[大数据] 日期:2020-12-16 热度:83
接上文 简单选择排序 简单选择排序很容易理解,代码也很容易实现。但毕竟比较次数太多。树形选择排序则对这个问题进行了改进。 原理 简单来说,树形选择排序(Tree selection sort)就是在选择完一轮找出最小值后,直接在与最小值比较中稍大的元素里筛选出最[详细]
-
golang 统计uint64 数字二进制存储中1的数量
所属栏目:[大数据] 日期:2020-12-16 热度:187
package mainimport (?? ?"fmt")// pc[i] is the population count of i.var pc [256]bytefunc init() {?? ?for i := range pc {?? ??? ?pc[i] = pc[i/2] + byte(i1)?? ?}}func PopCount(x uint64) int {?? ?return int(pc[byte(x(0*8))] +?? ??? ?pc[byte(x[详细]
-
golang基础--Interface接口
所属栏目:[大数据] 日期:2020-12-16 热度:196
接口是一个或多个方法签名名的集合,定义方式如下 type Interface_Name interface { method_a() string method_b() int .... } 只要某个类型拥有该接口的所有方法签名,就算实现该接口,无需显示声明实现了那个接口,这称为structural Typing package mainim[详细]
-
GOLANG编写google authenticator双因子用户认证体系
所属栏目:[大数据] 日期:2020-12-16 热度:182
通过google authenticator完成对用户登录后台如:redmine zabbix 等的双因子改造 github地址: https://github.com/liyinda/google-authenticator README编写的很详细啦,欢迎大家使用~ if enjoy it ,please star it[详细]
-
golang基础--reflect反射
所属栏目:[大数据] 日期:2020-12-16 热度:122
反射的知识点比较晦涩,后期会对此知识点展开深入的分析及示例代码展示 反射可达大提高程序的灵活性,使得inferface{}有更大的发挥余地 反射使用TypeOf和ValueOf函数从接口中获取目标对象信息:字段属性,方法信息 package mainimport ( "fmt" "reflect")type[详细]
-
Golang 中的 面向对象: 方法, 类, 方法继承, 接口, 多态的简单描
所属栏目:[大数据] 日期:2020-12-16 热度:104
前言: Golang 相似与C语言,基础语法与C基本一致,除了广受争议的 左花括号 必须与代码同行的问题,别的基本差不多; 学会了C,基本上万变不离其宗,现在的高级语言身上都能看到C的影子; Golang 中的 面向对象 什么是面向对象? 面向对象是一种编程思想,并不是某一[详细]
-
golang基础--Gocurrency并发
所属栏目:[大数据] 日期:2020-12-16 热度:68
goroutine只是由官方实现的超级"线程池"而已,每个实例4-5kb的栈内存占用和用于实现机制而大幅减少的创建和销毁开销。 并发不是并行(多CPU): Concurrency Is Not Parallelism 并发主要由切换时间片来实现"同时"运行,并行则是直接利用多核实现多线程的运行[详细]
-
golang break语句可以break掉select,switch,for
所属栏目:[大数据] 日期:2020-12-16 热度:194
坑,以下例子中,原本以为close掉done channel后,循环会退出。但事实上会进入死循环 for { select { case packet := -s.avPacketChan: s.sendPacket(packet) case -s.done: //终止channel break } } 原因: [A "break" statement terminates execution of th[详细]
-
[golang] 数据结构-堆排序
所属栏目:[大数据] 日期:2020-12-16 热度:104
接上文 树形选择排序 上篇也说了,树形选择排序相较简单选择排序,虽然减少了时间复杂度,但是使用了较多空间去储存每轮比较的结果,并且每次还要再和胜出节点比较。而堆排序就是为了优化这个问题而在1964年被两位大佬发明。 原理 首先有几个关于树的定义:[详细]
-
基于Golang打造一款开源的WAF网关
所属栏目:[大数据] 日期:2020-12-16 热度:117
本文首发于作者的微信公众号:网络安全生命周期 原文链接:?打造一款开源的WAF网关? 【背景】 ? 在互联网行业,Google将安全做到基础设施里面,素来是各大公司学习的榜样,在Web方面,通过GFE (Google Front-End) 统一对外发布,业务只需要在GFE登记,GFE就[详细]
-
[golang] 数据结构-直接插入排序
所属栏目:[大数据] 日期:2020-12-16 热度:132
原理 直接插入排序,也是一种非常简单的排序算法。 第一轮先从第二个元素开始,和第一个比较,如果较小就交换位置,本轮结束。第二轮从第三个元素开始,先与第二个比较,如果较小就与第二个交换,交换后再于第一个比较。如此循环直至最后一个元素完成比较逻[详细]
-
基于Golang打造的开源WAF网关
所属栏目:[大数据] 日期:2020-12-16 热度:193
基于Golang打造的开源WAF网关 Github地址 https://github.com/Janusec/janusec 产品介绍 https://mp.weixin.qq.com/s/OOA9LwPE0ulBqkIFkXax-Q 构建可扩展的应用安全基础设施 Janusec应用网关(Janusec Application Gateway),提供WAF (Web Application Firewa[详细]
-
golang string转换数组
所属栏目:[大数据] 日期:2020-12-16 热度:131
在golang中,有数组和切片两种类型. 切片是引用类型,而数组是值类型.? 如果想在函数中传入数组的指针参数,则必须指定数组的数量,如 func stringToRuneArr(s string,arr *[5]rune)? ?? 如果去掉 arr *[5]rune 中的5,则指参数变成了切片类型,数组的指针就传不进[详细]
-
[golang] 数据结构-二分插入排序
所属栏目:[大数据] 日期:2020-12-16 热度:197
接上文 直接插入排序 直接插入排序每轮比较中,都需要把待处理的元素与前面每一位元素进行比较。那么有没有一种方法可以优化下,减少比较次数呢?答案当然是有的,下面介绍的二分插入就是直接插入排序的优化算法之一。 原理 直接插入排序是挨个的去比较,而[详细]
-
[golang] 数据结构-希尔排序
所属栏目:[大数据] 日期:2020-12-16 热度:154
除了上篇介绍的 二分插入排序,还有这次介绍的希尔排序(Shell‘s Sort),也是对直接插入排序算法的优化。 原理 希尔排序,就是按某个增量值对数据进行分组,每组单独排序好后,再缩小这个增量,然后按新增量对数据分组后每个分组再各自排序。最终增加缩小到1[详细]
-
Golang html encoding解析
所属栏目:[大数据] 日期:2020-12-16 热度:102
自动解析html页面的编码格式: 需要依赖 golang.org/x/text 和 golang.org/x/net 这两个外部库 package mainimport ( " net/http " " io/ioutil " " fmt " " golang.org/x/text/transform " " io " " golang.org/x/text/encoding " " bufio " " golang.org/x[详细]
-
golang 开发环境 配置
所属栏目:[大数据] 日期:2020-12-16 热度:174
Mac: * 下载go安装包 ? ?go语言中文网?? ** 通过源码编译安装需要先安装go1.4 wget https://studygolang.com/dl/golang/go1.10.3.src.tar.gztar xvzf go1.10.3.src.tar.gz -C .cd ./go/src/./make.bash Building Go cmd/dist using /Users/Mch/go1.4. ERROR:[详细]
-
如何用golang写游戏加经验函数不出错
所属栏目:[大数据] 日期:2020-12-16 热度:164
游戏中加经验的地方很多,很多人写的很乱,我把这个功能用 比较简单且清晰的方法写了下来。代码如下: package mainimport ("fmt""log""github.com/emirpasic/gods/maps/treemap")func main() {exp := []int{20,30,40,50,70,300,350,560,650,1000,}expMap :=[详细]
-
golang 使用pprof和go-torch做性能分析
所属栏目:[大数据] 日期:2020-12-16 热度:142
? ? 软件开发过程中,项目上线并不是终点。上线后,还要对程序的取样分析运行情况,并重构现有的功能,让程序执行更高效更稳写。 golang的工具包内自带pprof功能,使找出程序中占内存和CPU较多的部分功能方便了不少。加上uber的火焰图,可视化显示,让我们在[详细]
-
[golang] 数据结构-冒泡排序
所属栏目:[大数据] 日期:2020-12-16 热度:60
碎碎念 不能再经典的排序算法,说到排序算法大部分可能第一印象就是它了吧。记得大学时老师还花了一节课的时间进行详细解释。 原理 冒泡算法(bubble sort) 是一种很简单的交换排序。每轮都从第一个元素开始,依次将较大值向后交换一位,直至整个队列有序。[详细]
-
[golang] 数据结构-地精排序
所属栏目:[大数据] 日期:2020-12-16 热度:165
碎碎念 这是一个名字起得很随便的排序算法,是我我就叫他史莱姆排序ㄟ(▔,▔)ㄏ 原理 地精排序是也是一种交换排序。它只进行一轮比较,在这轮比较中,遇到比较前面元素大就向后移动一位继续比较,遇到比前面值小就和前面的值交换,并向前移动一位。 复杂度[详细]
