Go
草帽boy7
/ynmianyan/10927062
展开
-
使用Go语言每分钟处理1百万请求
在Go中要实现高并发,可以使用 go routine 每个请求 都开启 一个 go routine 去处理,但这样的方式 当 流量大了 就不太可行了,另一种方法 是开启 一个 channel 缓存请求队列 然后 再 for select 循环去 取 任务 ,但是当 请求速度 达到最大 的channel 的时候 请求 就会阻塞, 所以 另一种 方法是结合 上面的2中有点 开启多个channel 每个channel 有一个 携程 去消化 ,这样 又可以利用多核的优势,用能控制携程 的数量。package po原创 2020-12-18 15:01:40 · 563 阅读 · 2 评论 -
Go Json 序列化笔记
在开发过程中 对 Json 的序列化 是经常要使用到的功能,而Golang 自带的 反序列化 在开发中经常 使用。type Order struct { Id uint32`json:"json"` Productname string `json:"productname"` Price float64 `json:"price"` Cratedate time.Time `json:"cratedate"` }对于 实体数据 或数据库表 我们经常需要声明 结构体来实现建模。原创 2020-10-01 12:24:35 · 359 阅读 · 0 评论 -
从零用Go打造一个 JVM 虚拟机 路径解析读取字节码(一)
Java 虚拟机 基础模块1.类的搜索不通虚拟机对类的搜索有不同的规范,Oracle的Java虚拟机实现根 据类路径(class path)来搜索类。存放类的路径有3中类型:启动类路径(bootstrap classpath):jre\lib jar标准库 都位于此扩展类路径(extension classpath):jre\lib\ext 使用Java扩展机 制的类位于这个路径用户类路径(user classpath) 自己实现的类,以及第三方类库则位于 用户类路径 (-Xbootcl原创 2020-06-05 16:49:05 · 416 阅读 · 0 评论 -
数据结构之树从入门到如土(四)----如何看待本文教你会十分钟学会手写一个红黑树
红黑树的历史红黑树(英语:Red–black tree)是一种不平衡二叉查找树,无需保证左右子树高度差小于等于1。是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它在1972年由鲁道夫·贝尔发明,被称为"对称二叉B树",它现代的名字源于Leo J.Guibas和RobertSedgewick于1978年写的一篇论文。红黑树的结构复杂,但它的操作有着良好的最坏情况运行时间,...原创 2020-04-07 20:37:59 · 532 阅读 · 0 评论 -
数据结构之树从入门到如土(二)----带你从头碾压 一颗AVL树(多图)
AVL树 解决了二叉树的什么问题?AVL 和 二叉树的 最大区别是能自平衡,简单的说就是多了一步插入的时候会按照插入的值做 自平衡 防止 插入 向 1 ,3 ,4, 6, 8, 9 这样 左边的值 比右边小 就会变成 链表了。AVL树的定义:AVL树是二叉树,其各个节点的左右子树的高度相差不超过1。AVL树是最早提出的自平衡二叉树,在AVL树中任何节点的两个子树的高度最大差别为一,所...原创 2020-03-26 13:11:25 · 322 阅读 · 0 评论 -
Trie树魔改 实现千万数据 秒级排序
Trie 树的优点 是 查找 摘要O(len)的 复杂度 ,本质上也是一颗树的结构。花了 一天时间,在自己上一篇文章的原基础上实现了一个Trie 能排序的算法,发现性能还不错,读取一个 大概一个1个亿的数据,耗时 23秒左右完成排序。内存占用情况:因为 是从 500多KB复制黏贴出来的所以,重复的比较多...原创 2020-03-21 20:06:07 · 272 阅读 · 0 评论 -
数据结构之树从入门到如土(三)----字典树 前缀树(TrieTree) Go 实现
字典树的简介又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应...原创 2020-03-17 21:07:38 · 365 阅读 · 0 评论 -
数据结构之树从入门到如土(一)----大话二叉树 及GO实现
什么是树 相信大家没见过虽然可能没见过就散机里的树,但是一定见过现实世界的????吧. 如果问你几个树的主要特征,你能答上来几个?我猜吃货首先会想到的能吃不能吃,这样的属性,其实树有很多特点 (好吧我也答不上来了),但其中比较明显的一点是,????从根开始会不断分叉,1根树枝可能会有1个分叉但更多的是2个分叉或者以上. 抽象出来 当一个节点产生多个子节点(n &...原创 2020-03-03 20:44:39 · 191 阅读 · 0 评论 -
布隆过滤器 原理 应用场景推导及Go实现
优点:不需要存储key,节省空间缺点:算法判断key在集合中时,有一定的概率key其实不在集合中无法删除典型的应用场景:某些存储系统的设计中,会存在空查询缺陷:当查询一个不存在的key时,需要访问慢设备,导致效率低下。比如一个前端页面的缓存系统,可能这样设计:先查询某个页面在本地是否存在,如果存在就直接返回,如果不存在,就从后端获取。但是当频繁从缓存系统查询一个页面时,缓存系统将会...原创 2020-02-25 16:03:08 · 681 阅读 · 0 评论 -
排序算法之 BitMap算法 原理及Go实现
1.BitMapBitMap是一种排序算法,他的特点是速度快,节省容量。可以对整数型型数据进行排序,同时也可以应用于文本去重,排序前先要对文本进行MD5操作。优点节省空间,对于一个字节进行排序,只要一个字节的空间。运行效率高缺点:重复数据只能记录一次。假设要对30 亿个 数据 进行排序,每个整数如果占 4 个字节 那么 30亿的数据就要占用 11 个G,对于一些配置...原创 2020-02-24 23:11:53 · 426 阅读 · 1 评论 -
Go性能分析 工具pprof 入门
需要 使用到的库import “github.com/pkg/profile”如果 get 不到设置 因为 有些组件会访问谷歌官网 所以设置一下这个 就可以了go env -w GOPROXY=https://goproxy.cn ##设置完后 重新执行即可go get在main函数第一行 添加一行CPU分析:defer profile.Start().Stop()内存...原创 2020-02-22 11:05:13 · 370 阅读 · 0 评论 -
Gabbage collect(GC) 垃圾回收算法Go实现
GC最早 出现 是在 lisp 语言设计开始1年后,的1959年夏天,实现GC的是一个叫D.Edwards的人。自从Gc被提出来的 70多年里这方面有了大量的研究,不过GC之所以能被很多现代高级语言作为 标配,还是以Java的兴起带了个头。有了GC程序员就不需要自己去管理麻烦的内存分配回收也避免了一些可能的回收内存所带来的的安全性问题。GC需要做的有两件事找到内存空间里的垃圾回收垃圾,让程...原创 2020-02-19 15:15:19 · 386 阅读 · 0 评论 -
Go 采坑指南(一) for range 遍历 值引用
func Test_aaas(t *testing.T){ tesr1 := make(chan *xxa,10) xx :=make(map[int]xxa,0) b :=xxa{caomao:"XXb"} c :=xxa{caomao:"XXc"} d :=xxa{caomao:"XXd"} e :=xxa{caomao:"XXe"} xx[1] =b xx[2] =c x...原创 2020-01-22 14:39:23 · 2462 阅读 · 2 评论 -
Hadoop Mapreduce组建 核心环形缓冲区 RingBuff 原理及Go实现
环形缓冲区1.为什么要环形缓冲区?答:使用环形缓冲区,便于写入缓冲区和写出缓冲区同时进行。2.为什么不等缓冲区满了再spill?答:会出现阻塞。3.数据的分区和排序是在哪完成的?答:分区是根据元数据meta中的分区号partition来分区的,排序是在spill的时候排序。package mrimport ( "bytes" "encoding/binary" "error...原创 2020-01-16 19:36:54 · 1172 阅读 · 0 评论 -
从零 开始写一个kv存储数据库(一)
NoSql 数据库那么火 那么就让我们来写一个吧单机存储模块 就是有一个以 map 映射键值对 存储 key value 关系的一个 map 在 redis中 没map数据类型 所以是自己定义的 在go中 是由hashmap这个数据结构的所以 就很简单了。//存储value 包含 内容 和超时 时间type Item struct { Object interface{} //核心 用来存...原创 2020-01-10 17:05:51 · 1590 阅读 · 1 评论 -
Gin 框架 核心 httprouter tree树结构解析
gin web 是一个 go 的开源框架 他在保持简洁小巧的设计 的同时又保持了不错的性能 着其中也得益于 他在解析路由的时候用到了 httprouter 这个开源的路由解析框架 gin框架将get set 请求分配到不同的rpouter 数上进行解析。type methodTree struct { //GET SET method string //GET SET 方法 root...原创 2020-01-09 18:09:03 · 1410 阅读 · 0 评论 -
Gin Web框架 核心源码分析
看到在Gin Web框架中 路由tree 中 的priority字段 并不是很了解作用 就单独拿出来了解了下 实际上就是对数组里面子节点 进行排序 使它索引变小 这样在 下移插入路由时 能更快找到。type node struct { children []node path string priority uint32 indices string}以上是 简化的数据结构...原创 2020-01-09 15:39:53 · 516 阅读 · 0 评论 -
GO 实现 广度优先 迷宫算法
假设有一个迷宫 由 1 0 组成 1代表墙 0代表可以走通用文本记录6 60 1 0 0 0 00 0 0 1 0 00 1 0 1 0 11 1 1 0 0 10 1 0 0 1 00 1 0 0 0 1前一行记录了 行数6 和 列数 6用GO语言读取 上述格式的文件//打开文件file,err := os.Open(finlename)//Go语言万能错误处理语句...原创 2019-12-15 16:57:35 · 618 阅读 · 0 评论 -
(算法)对数组进行旋转操作
在写lua 虚拟机时 碰到旋转 操作 研究了下package maintype lists struct { top int slots []interface{}}func main(){ ls := lists{14,nil} for i := 0;i<ls.top;i++ { ls.slots = append(ls.slots, i); } ls.Rota...原创 2019-12-11 17:07:32 · 279 阅读 · 0 评论 -
图论入门(一)
图的表示线性结构:每一个节点指向下一个节点。树结构:每个节点有 左孩子 和 右孩子。线段树 堆 可以用数组表示图结构:顶点(Vertex) 顶点代表 物理或抽象的对象边(Edge) 各顶点之间的互相连接无向图(Undirected Graph) 表示连接之间 只是单独的联系。有权值:关系之间的属性比重。有向图(Directed Graph) :节点之间有上下级 所属的关系等抽象...原创 2019-11-21 21:28:19 · 163 阅读 · 0 评论 -
Go语言入门(三)---常量与枚举
常量类型const (filename ="abc.txt" a,b = 3,4 )const数值可作为各种类型使用(var c int = int(math.Sqrt(aa + bb)))由于常亮没指定类型 它可以自己转换类型。枚举类型普通枚举类型func enums(){ const( cpp =0 java=1 python=2 golang =3 ...原创 2019-11-14 19:34:33 · 175 阅读 · 0 评论 -
Go语言入门(二)---内建变量类型
Go语言类型bool,string(布尔,字符串)(u)int,(u)int8,(u)int16,(u)int32,(u)int64,uintptr 加u有符号整数 不加u无符号整数 如果不规定长度 int 还是 int8 还是int32 默认按照操作系统位数 来决定 64位系统就是int64 = 2642^{64}264 以此类推。 uintptr是指针 长度根据操作系统来定。byte...原创 2019-11-14 19:16:26 · 127 阅读 · 0 评论 -
Go语言入门(一)---变量的定义
第一个heelo worldpackage main//main包包含启动函数 import "fmt"func variableZeroValue(){ var a int //区别于java 定义是将变量名放在前面 var s string fmt.Printf("%d %q\n",a,s)}func main(){ fmt.Println("Hello world") v...原创 2019-11-14 18:21:07 · 419 阅读 · 0 评论