golang
文章平均质量分 81
水番丘山
最美的架构不是设计好的,而是不断演变进化而来。
展开
-
用golang实现traceroute
traceroute工具原理不难,但要实现这个过程需要涉及到一些基本知识,如ip的报文组成、udp、icmp协议的一些基本知识,另外就是需要知道路由跳数的基本原理,通过实现这个过程也可以加深这些基础知识,同时是对这些知识的运用。完整代码已经上传到github,地址为:https://github.com/Kseleven/traceroute-go,欢迎大家star,当然如有纰漏或者讲解不正确的地方,欢迎指正。原创 2023-04-20 00:09:13 · 574 阅读 · 0 评论 -
Golang1.18新特性
golang1.18新特性原创 2023-01-30 19:28:32 · 1534 阅读 · 0 评论 -
golang切片slice容量capacity增长原理
golang切片slice容量capacity增长原理引子:我们都知道golang的slice,会根据增加的元素个数不同而自动扩容,但是这个自动扩容机制是如何的呢?可能我们都知道当slice的容量小于1024时时2倍增长,但是1024以后增长规则就比较模糊了,今天就一起来揭开这个面纱。例子如下:func main() { var s []int for i := 0; i < 1283; i++ { fmt.Println(i, len(s), cap(s)) s = append原创 2021-03-13 19:10:23 · 1297 阅读 · 2 评论 -
算法基础(golang版本)——冒泡排序
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。一。算法演绎步骤1.两个循环,外循环以及内循环。2.外循环每偏移一个元素就将此元素与内循环的每一个元素进行对比,如果比其大,那就交换位置,直到没有比此元素更大的为止。然后进入下一个循环,直到遍历完所有的元素。我们按.原创 2020-08-08 22:15:10 · 207 阅读 · 0 评论 -
算法基础(golang版本)——插入排序
插入排序,顾名思义就是利用插入的方式进行排序,他的演绎过程就好比斗地主的时候摸牌的过程。假设我们手上有2,3,5,10这4张牌,这时候从牌桌里摸上一张7,这时候为了插入到合适的位置一般会从右边开始进行对比,例如10大于7那么,7应该往左偏移进行比较,然后再看5小于7,那么7就应该放在5的右边,这时候7就插入到下标为3的位置,同时10往右挪一个位置。这就是插入排序的演绎过程。一。基于以上演绎过程,我们用golang来进行实现:func insertion(data []int) { for j :=.原创 2020-08-05 23:36:33 · 612 阅读 · 0 评论 -
Golang用20行代码实现斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(LeonardodaFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1,F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963年起出版.原创 2020-07-31 22:13:27 · 739 阅读 · 0 评论 -
golang解决约瑟夫问题,单向循环链表实现
据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最.原创 2020-07-31 22:02:15 · 349 阅读 · 0 评论 -
67行代码实现:模拟手机九宫格输入法
go日常练习,不定期提供golang小项目作为练手。望客官笑纳的同时也提出宝贵意见,纯手工码字不易,您的支持就是我创作的最大动力。对于每天手机不离手的我们来说,输入法太熟悉了,今天我们就用golang写一个简单的九宫格输入法,这里没有界面,只用了简单的控制台命令行输入。一.题设1.模拟手机九宫格输入,默认输入为数字,当输入#表示切换输入法,即数字与英文之间切换。2.连续输入数字输出不变:例...原创 2020-03-19 23:54:10 · 2641 阅读 · 0 评论 -
sync.WaitGroup的错误用法与纠正
sync.WaitGroup的错误用法与纠正本文主要是记录在学习golang语言过程中错误使用sync.WaitGroup以及指针引起的报错,并且纠正过程。1.错误使用场景main包的实现内容:package mainimport ( "fmt" "pressure/game" "sync")var waitGroup sync.WaitGroup //定义一个同步等待的组原创 2017-04-07 18:07:19 · 17325 阅读 · 2 评论