
golang
Ale_li
知人力有穷尽时,临大难而从容,方是圣人之勇
展开
-
消息队列之nsq
nsq简介 特点 消息默认不做持久化,但是可以配置 每条消息最少传递一次 消息不能保证有序 nsq组件 nsqd:负责消息接收、保存以及发送消息给消费者的进程 nsqlookupd :负责维护所有nsqd的状态,提供服务发现的进程 nsqadmin:web管理平台,实时监控集群以及执行各种管理任务 nsq相关概念 Topic:对应一个具体的队列 Channel:一个消费者对应一个Cha...原创 2020-04-30 21:05:44 · 243 阅读 · 0 评论 -
数据格式之protobuf
简介 二进制数据交换格式 基于idl语言自动生成对应的数据结构代码 protobuf开发流程 搭建环境 编写IDL文件(.proto文件) 根据IDL文件生成对应语言的数据结构代码 使用相应的工具包完成序列化和反序列化 环境搭建 安装protoc 下载protoc-3.6.1-osx-x86_64.zip文件并解压 cd protoc-3.6.1-osx-x86_64 cp -r i...原创 2020-04-30 18:04:37 · 488 阅读 · 0 评论 -
Go深入--基本数据结构的实现
string 字符串在Go语言内存模型中用一个2字长的数据结构表示,它包含一个指向字符串存储数据的指针和一个长度数据 string类型是不可变的,对于多字符串共享同一个存储数据是安全的。 字符串切分可以在不涉及内存分配或复制操作完成,这使得字符串切分的效率等同于传递下标。 silce 一个slice是一个数组某个部分的引用。 它是一个包含3个域的结构体:指向slice中第一个元素的指针...原创 2020-03-16 00:47:56 · 190 阅读 · 0 评论 -
Go踩坑总结
在函数外面定义变量时 要用var 不能用:= byte8位 rune32位(字符类型) complex64(复数,实部32位,虚部32位) go中没有隐式类型转换 类型转换都是强制的 float 类型四舍五入为int: int((a*10+5)/10) //正确 const a = 3 var b float64 = 2 c := a+b //错误 var a = 3 var b flo...原创 2020-03-15 22:03:16 · 332 阅读 · 0 评论 -
排序 中 归并排序 (golang实现)
归并排序 核心算法为:已知两个有序的序列,将其调成一个有序的序列(O(n)) 通过分治,将序列划分成两个小序列,一次划分下去,将小序列调成有序,然后调用上述算法调成一个有序的序列。 核心算法 /** * 归并排序的核心算法 * 将两个有序的子序列合并成一个有序序列 */ func Merge(arr1,arr2 []int) []int { res := make([]int,le...原创 2020-02-22 21:11:45 · 672 阅读 · 0 评论 -
排序 上 (golang实现)
冒泡排序 技巧:如果在一次冒泡中,没有元素交换, 则说明该数组已经是有序的,即可结束冒泡 func BubbleSort(arr []int) { for p := len(arr)-1;p>0;p--{ flag := true for i:=0;i<p;i++ { if arr[i] > arr[i+1] { arr[i],arr[i+1] = a...原创 2020-02-22 19:04:59 · 474 阅读 · 0 评论 -
基于最小堆实现Huffman树(golang实现)
概念 完全二叉树: 有n个节点的二叉树,对树中的节点按从上到下,从左到右顺序进行编号,编号为i(1<=i<=n)节点与满二叉树中编号为i节点在二叉树中的位置相同 最小堆: 结构性:完全二叉树 有序性:任一节点是其子树所有节点的最小值 思路 最小堆是完全二叉树,所以可以使用顺序存储方式(数值) 从而可得按从上到下,从左到右存储,n个节点的完全二叉树节点间的父子关系为: 非根...原创 2020-02-18 16:08:40 · 1026 阅读 · 0 评论