首页 » 标签 » Golang

Docker 实践 —— 部署golang项目

Docker 是一个开源的轻量级容器技术,让开发者可以打包他们的应用以及应用运行的上下文环境到一个可移植的镜像中,然后发布到任何支持Docker的系统上运行。 通过容器技术,在几乎没有性能开销的情况下,Docker 为应用提供了一个隔离运行环境.Docker优点简化配置…

- 阅读全文 -

Golang 实现常见设计模式

今天我想聊聊Golang语言下的设计模式问题,我觉得这个话题还是比较有意思的。用Go把设计模式实现一遍。构建一个知识库。 虽然网上有《Go Patterns》,不过是英文版的,并且不全,我就想把它翻译成中文的,并且补全。单利设计模式(Singleton)单例对象的类必须…

- 阅读全文 -

Golang 实现常见算法 —— BinarySearch

二分查找:给定数组是有序的,给定一个key值。每次查找最中间的值,如果相等,就返回对应下标,如果key大于最中间的值,则在数组的右半边继续查找,如果小于,则在数组左半边查找。这种搜索算法每一次比较都使搜索范围缩小一半。最终有两种结果,一种是找到并返回下标,第二种是没找到…

- 阅读全文 -

Golang 数据结构 —— BinarySearchTree

在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。一棵深度为k,且有2^k-1个节点的二叉树,称为满二叉树。这种树的特点是每一层上…

- 阅读全文 -

Golang 数据结构 —— Linked List

链表是数据元素的线性集合,其顺序不是由它们在内存中的物理位置给出的。相反,每个元素指向下一个元素。它是一个由节点集合组成的数据结构,这些节点一起表示一个序列。在其最基本的形式中,每个节点包含:数据和引用(换句话说,链接)到序列中的下一个节点。该结构允许在迭代期间从序列中…

- 阅读全文 -

Golang 数据结构 —— Stack

栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下…

- 阅读全文 -

Golang 数据结构 —— Queue

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的数据元素又称为队列元素…

- 阅读全文 -

Golang gin框架源码解析

Gin框架是golang的一个常用的web框架,因在项目中使用了它,所以对它进行了学习。gin包非常短小精悍,不过主要包含的路由,中间件,日志都有了。自身的net/http足够简单,性能也非常不错。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用…

- 阅读全文 -

Golang 实现常用排序算法

今天整理几个常用的排序算法。查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和二分法查找等基本…

- 阅读全文 -

Golang 的 goroutine 是如何实现的?

Go runtime的调度器:在了解Go的运行时的scheduler之前,需要先了解为什么需要它,因为我们可能会想,OS内核不是已经有一个线程scheduler了嘛?熟悉POSIX API的人都知道,POSIX的方案在很大程度上是对Unix process进场模型的一个…

- 阅读全文 -