Golang container包下heap(数据结构中的堆)的使用

mport container/heapheap包提供了对任意类型(实现了heap.Interface接口)的堆操作。(最小)堆是具有“每个节点都是以其为根的子树中最小值”属性的树。一、堆的基本概念堆是一种经过排序的树形数据结构,每个节点都有一个值,通常我们所说的堆的数据结构是指二叉树。所以堆在数据结构中通常可以被看做是一棵树的数组对象。而且堆需要满足一下两个性质:(1)堆中某个..._golang container heap
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

Golang container包下list(数据结构中的链表)的使用

import container/listlist包实现了双向链表。要遍历一个链表:for e := l.Front(); e != nil; e = e.Next() { // do something with e.Value}链表的基础知识以及原始操作详见:https://blog.csdn.net/weixin_42117918/article/details/818..._gods包链表
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

Golang container包下ring(数据结构中的循环链表)的使用

import container/ringring实现了环形链表的操作。本文只讨论golang中container包下ring的使用,循环链表的概念及原始操作参考其他。示例代码:package mainimport ( container/ring fmt)func main() { r := ring.New(5) n:=r.Len() //赋..._golang 循环链表
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

Go语言(Golang)sort包的使用

import sortsort包提供了排序切片和用户自定义数据集的函数。通过使用golang提供的包sort,可以快速实现复杂结构的数据排序。如果要使用sort,需要实现sort下 Interface对应的方法:Len()、Less()、Swap()3个方法。package sort// A type, typically a collection, that satis..._go语言排序函数包
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

有限状态机(FSM)golang的实现

有限状态机,也称为FSM(Finite State Machine),其在任意时刻都处于有限状态集合中的某一状态。当其获得一个输入字符时,将从当前状态转换到另一个状态,或者仍然保持在当前状态。任何一个FSM都可以用状态转换图来描述,图中的节点表示FSM中的一个状态,有向加权边表示输入字符时状态的变化。如果图中不存在与当前状态与输入字符对应的有向边,则FSM将进入“消亡状态(Doom State)”..._golang 状态机
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

Go语言规范1 - 统一规范篇

目录序言 目录 统一规范篇 1.1 合理规划目录 1.2 GOPATH设置 1.3 import 规范 1.4 代码风格 1.5 大小约定 参考链接序言看过很多方面的编码规范,可能每一家公司都有不同的规范,这份编码规范是写给我自己的,同时希望我们公司内部同事也能遵循这个规范来写Go代码。如果你的代码没有办法找到下面的规范,那么就遵循标准库的规范,多阅读标准..._go1地址正确写法
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

Go语言规范2 - 命名篇

目录命名篇 2.1 基本命令规范 2.2 项目目录名 2.3 包名 2.4 文件名 2.5 常量 2.6 变量 变量申明 变量命名惯例 全局变量名 局部变量名 循环变量 2.7 结构体(struct) 2.8 接口名 2.9 函数和方法名 函数 方法 2.10 参数名 2.11 返回值 命名篇...
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

Go语言规范3 - 开发篇

目录开发篇 3.1 包 第三方包管理 3.2 魔鬼数字 3.3 常量 & 枚举 3.4 结构体 3.5 运算符 3.6 函数 3.7 参数 3.8 返回值 3.9 注释 通用注释要求 包注释要求 函数与方法注释要求 变量和常量的注释要求 编码注释 Bug的注释 带mutex的struct必须是指针r..._beego开发规范
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

Go语言规范4 - 优化篇

目录优化篇 4.1 质量保证 4.1.1 代码质量保证优先原则 4.1.2 对外接口原则 4.1.3 值与指针(T/*T)的使用原则 4.1.4 init的使用原则 4.1.5 defer的使用原则 4.1.6 Goroutine使用原则 4.1.7 Channel使用原则 4.1.8 其它 4.2 性能效率 4.2.1 Memory优化 4.2.2..._除了用于无法通过声明来表示的初始化以外
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

Go语言规范0 - 汇总

目录统一规范篇 合理规划目录 GOPATH设置 import 规范 代码风格 大小约定 命名篇 基本命令规范 项目目录名 包名 文件名 常量 变量 变量申明 变量命名惯例 全局变量名 局部变量名 循环变量 结构体(struct) 接口名 函数和方法名 参数名 返回值 开发篇 包 魔..._本篇主要描述了公司内部同事都必须遵守的一些开发规矩如统一开发空间既使用统一
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

Golang(Go语言)包机制的理解

一、概述  想学习Golang,包肯定是绕不过去的,就像C语言的标准库,这篇文章里,我将为大家介绍关于Go语言包机制的使用、注意事项和原理二、packagepackage遵循以下原则:package是最基本的分发单位和工程管理中依赖关系的体现 每个Go语言源代码文件开头都必须要有一个package声明,表示源代码文件所属包 要生成Go语言可执行程序,必须要有名为main的pac..._了解go语言应该理解哪些包
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

golang(Go语言)中的数组(Array)与切片(Slice)

先抛出几个问题声明一个 slice 并赋值为 nil, 如 var slice []int = nil,此时 len(slice) 的运行结果是什么?func(arr []int) 和 func(arr [10]int) 两个函数内部都对 arr 进行修改, 对外面的值(作为参数的数据)是否造成影响?创建一个 slice := make([]int, 5, 10), 然后 slice[8..._go 数组需要销毁吗
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

golang(Go语言)内存管理(一):系统内存管理

介绍要搞明白 Go 语言的内存管理,就必须先理解操作系统以及机器硬件是如何管理内存的。因为 Go 语言的内部机制是建立在这个基础之上的,它的设计,本质上就是尽可能的会发挥操作系统层面的优势,而避开导致低效情况。操作系统内存管理其实现在计算机内存管理的方式都是一步步演变来的,最开始是非常简单的,后来为了满足各种需求而增加了各种各样的机制,越来越复杂。这里我们只介绍和开发者息息相关的几个机..._golang语言的内存管理
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

golang(Go语言)内存管理(二):Go 内存管理

介绍了解操作系统对内存的管理机制后,现在可以去看下 Go 语言是如何利用底层的这些特性来优化内存的。Go 的内存管理基本上参考 tcmalloc 来实现的,只是细节上根据自身的需要做了一些小的优化调整。Go 的内存是自动管理的,我们可以随意定义变量直接使用,不需要考虑变量背后的内存申请和释放的问题。本文意在搞清楚 Go 在方面帮我们做了什么,使我们不用关心那些复杂内存的问题,还依旧能写出较..._pausetotalns
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

golang(Go语言)内存管理(三):逃逸分析

结合前期文章一起参阅:https://blog.csdn.net/weixin_42117918/article/details/90409744介绍Go 语言较之 C 语言一个很大的优势就是自带 GC 功能,可 GC 并不是没有代价的。写 C 语言的时候,在一个函数内声明的变量,在函数退出后会自动释放掉,因为这些变量分配在栈上。如果你想要变量的数据能在函数退出后还能访问,就需要调用 ma..._golang fmt.sprintf 导致逃逸
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

golang(Go语言)内存管理(四):垃圾回收

结合前期文章一起查阅:https://blog.csdn.net/weixin_42117918/article/details/83186639介绍编写 Go 代码不需要像写 C/C++ 那样手动的 malloc和 free内存,因为 malloc 操作由 Go 编译器的逃逸分析机制帮我们加上了,而 free 动作则是有 GC 机制来完成。虽说 GC 是一个很好的特性,大大降低了编程..._go语言 内存回收
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

golang(Go语言)调度(一): 系统调度

调度相关的一系列文章主要参考Scheduling In Go : Part I - OS Scheduler翻译来的。因为在学习的过程中偶然发现,感觉总结得蛮好的,就不造轮子了,干脆直接翻译过来作为自己的学习笔记了,英文好的建议直接阅读原文。介绍Go 调度器使你编写的 Go 程序并发性更好,性能更高。这主要是因为 Go 调度器很好的运用了系统调度器的机制原理。但是,如果你不了解调度器..._golang 调度系统
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

golang(Go语言)调度(二):goroutine 调度器

参阅前期文章:https://blog.csdn.net/weixin_42117918/article/details/83186673 https://blog.csdn.net/weixin_42117918/article/details/83186736介绍上一篇文章我对操作系统级别的调度进行了讲解,这对理解 Go 语言的调度...
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

golang(Go语言)调度(三):并发

介绍当我解决问题时,尤其是新问题,我不会一上来就想着能不能使用并发来处理。我会首先想出一个顺序执行的解决方案。然后在可读性和技术评审后,我会开始考虑并发处理能不能让问题得到更快的解决。有时很显然并发是很合适的,但有时候并不那么明显。第一篇文章,我讲解了系统调度器的机制和原理,我相信这对写一个多线程代码是重要的。第二篇文章我讲解了 Go 语言调度器的机制,对如何 Go 语言写出并发代码是重要...
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0

golang(Go语言)内存优化

原文地址: Allocation Efficiency in High-Performance Go Services, 没有原模原样的翻译, 但不影响理解。关于工具我们的第一个建议就是: 不要过早优化。Go 提供了很棒的性能调优工具可以直接指出代码上哪里消耗了大量内存。没必要重复造轮子,建议读者阅读下 Go 官方博客上的这篇很赞的文章;里面会一步步教你使用 pprof 对 CPU 和..._go语言内存优化
分类: 其他 发布时间: 06-29 21:47 阅读次数: 0