GO语言实现 一 基本排序及应用

基本排序包括简单选择排序和插入排序,本文将就这两种排序进行 golang语言实现,并引出希尔排序 一.简单选择排序 简单排序将数组分为两个部分,从左到当前索引的前一个元素为已排序部分,从当前索引到数组的末尾为未排序部分 简单选择排序算法思路如下: 从未排序部分中选取最小的一个元素 A 将 A元素与当前索引所在元素交换 重复 1,2步骤直到未排序部分为空 select_sort_1.png golang代码如下: func selection_sort(nums []node) []node { ...阅读全文

简书 2020-09-06 22:00:44 YXCoder

【golang】panic详解

作为一个 gophper,我相信你对于 panic 和 recover 肯定不陌生,但是你有没有想过。当我们执行了这两条语句之后。底层到底发生了什么事呢?前几天和同事刚好聊到相关的话题,发现其实大家对这块理解还是比较模糊的。希望这篇文章能够从更深入的角度告诉你为什么,它到底做了什么事?思考一、为什么会中止运行func main() { panic("EDDYCJY.") } 输出结果:$ go run main.go panic: EDDYCJY. goroutine 1 [running]: ...阅读全文

Segmentfault 2020-09-12 00:32:33 去去1002

Golang红黑树

红黑树 红黑树是每个节点都带有颜色属性(红色或黑色)的二叉查找树。红黑树也属于自平衡二叉查找树。 红黑树具有如下性质: 1. 每个节点要么是红色要么是黑色。 2. 树的根结点为黑色节点。 3. 所有叶子节点都是黑色节点(叶子是NIL节点)。 4. 每个红色节点必须有两个黑色的子节点(从每个叶子到根的所有路径上不能有两个连续的红色节点)。 5. 从任意节点到其每个叶子节点的所有简单路径都包含相同数目的黑色节点。 一个红黑树的例子: 红黑树与平衡二叉树(AVL)的区别 二者虽然都是自平衡二叉树,但是...阅读全文

简书 2020-09-06 17:34:46 心中的日月_pyihe

学习 Go 语言 1 — 基础语法

一、第一个 Go 程序 最近在闲来无事之际开始学习点 Go 语言,Go 语言在近几年很火,有 Docker 和 Kubernetes 这两大杀器做支撑,它已经是云计算领域主流的编程语言了,并且有蚕食部分 C、C++、Java 等领域的趋势,怀着一些对新技术的兴趣,我开始学习了 Go 语言,在对其有了简单的了解之后,我渐渐开始喜欢上这门语言了。 目前我在工作中所使用的主要的编程语言是 Java,Java 虽说优秀,但是我对其并没有太大的好感,主要是它啰嗦复杂,当初学习它也主要是为了找工作。嗯。。。...阅读全文

简书 2020-09-06 17:34:43 roseduan

Golang学习笔记-map

之前在面试今日头条时被问到了map的实现原理,当时答的不是很好。现在从网上找了些资料记录下map的实现原理。 什么是map map 是一种通过key来获取value的数据结构,其底层存储方式为数组,在存储时 key不能重复,当key重复的时候,value进行覆盖,我们通过key进行hash计算,然后对数组的长度取余,得到key存储在数组的哪个下标位置,最后将key和value转化为一个结构体,放到数组的下标中。 hash冲突 在key进行hash的时候,会出现hash冲突的问题,主要有下面几个解...阅读全文

简书 2020-09-06 17:34:41 LegendGo

【golang】defer详解

特性我们简单的过一下 defer 关键字的基础使用,让大家先有一个基础的认知一、延迟调用func main() { defer log.Println("EDDYCJY.") log.Println("end.") } 输出结果:$ go run main.go 2019/05/19 21:15:02 end. 2019/05/19 21:15:02 EDDYCJY. 二、后进先出func main() { for i := 0; i < 6; i++ { defer log.Println("...阅读全文

Segmentfault 2020-09-11 19:32:32 去去1002

Go经典入门(二)

配置文本编辑器通过使用go插件,提高工作效率命名约定以大写字母命名的标识符将被导出,以小写字母命名的标识符不会被导出使用驼峰法使用简短变量类型名,如 i,s,b接口动词加上er表示操作,如Reader使用golintgo get - u github.com/golang/lint/golint使用godocgo get golang.org/x/tools/godoc ./example03godoc -http=”:6060”工作流程自动化makefile测试和性能测试:软件开发最重要的方面...阅读全文

Segmentfault 2020-09-11 10:32:32 忘却°

详解linux多线程——互斥锁、条件变量、读写锁、自旋锁、信号量

一、互斥锁(同步)  在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。这个过程有点类似于,公司部门里,我在使用着打印机打印东西的同时(还没有打印完),别人刚好也在此刻使用打印机打印东西,如果不做任何处理的话,打印出来的东西肯定是错乱的。  在线程里也有这么一把锁——互斥锁(mutex),互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即上锁( lock )和解锁( unlock )。【互斥锁的特点】:1. 原子性:把一个互斥量锁定为一个原子操作,这意味着操...阅读全文

简书 2020-09-06 13:50:04 linux大本营

go语言入门经典

Go 谷歌新语言 不损失应用程序性能的情况下降低代码复杂性 具有部署简单 并发性好 语言设计良好 执行性能好的优势对类C语言的重大改进 能够访问底层操作系统,还提供了强大的网络编程和并发编程支持。常用于网络编程系统编程并发编程分布式编程go语言是一门现代编程语言 可用来创建性能卓越的web服务器和系统程序。go是编译型语言go version go version go1.15.1 darwin/amd64go环境配置mac@macdeMacBook-Pro ~ % mkdir $HOME/go...阅读全文

Segmentfault 2020-09-10 16:32:32 忘却°

并发 concurrency golang

func main() { fmt.Println(runtime.NumCPU()) //这里可以看到我的cpu核数,利用多核运行程序 runtime.GOMAXPROCS(runtime.NumCPU()) //利用多核进行运行程序,当使用go时非阻塞时,执行顺序是随机的 //不均匀,为了防止某些步骤未执行完毕main函数就退出需要配合另外一个包sync或者通过缓存通道 //例如程序需要执行十次,那么每次存入一个值,外部用取到十次值才退出 s := sync.WaitGroup{} s.Ad...阅读全文

简书 2020-09-06 09:33:24 与子笑

Go语言变量定义方式

变量变量是编程语言中一种基本的组成单位变量对应的是内存中连续存储的一种地址,利用变量可以便捷的表示和使用变量相当于内存中一个数据存储空间的表示变量定义的规则变量名有字母丶数字丶下划线组成,但不能以数字开头,Golang中保留字和关键字都不能做变量名(if break defer ....)Golang中变量名必须先申明才可以使用,且在同一作用域不可重复声明,声明后必须使用方式1:未初始化var 变量名 变量类型方式2:初始化var 变量名 变量类型 = 变量值方式3:类型推导变量名 := 变量值...阅读全文

51CTO博客 2020-09-04 16:00:16 石世林

学习 Go 语言 1 — 基础语法

一、第一个 Go 程序最近在闲来无事之际开始学习点 Go 语言,Go 语言在近几年很火,有 Docker 和 Kubernetes 这两大杀器做支撑,它已经是云计算领域主流的编程语言了,并且有蚕食部分 C、C++、Java 等领域的趋势,怀着一些对新技术的兴趣,我开始学习了 Go 语言,在对其有了简单的了解之后,我渐渐开始喜欢上这门语言了。目前我在工作中所使用的主要的编程语言是 Java,Java 虽说优秀,但是我对其并没有太大的好感,主要是它啰嗦复杂,当初学习它也主要是为了找工作。嗯。。。有一...阅读全文

Segmentfault 2020-09-10 15:32:33 roseduan

go语言中这个for-range的问题可一定要知道呀

前言读者A:不会吧,阿Sir,这周这么高产~~~asong:当然啦,为了你们,一切都值得~~~读者B:净放臭屁屁,就你戏多~~~asong:你凶人家,坏坏~~~哈哈哈,戏太足了奥。自导自演可还行。今日分享之前,先放松放松嘛,毕竟接下来的知识,还是需要我们思考的。今天给大家分享的是go中的range,这个我们在实际开发中,是经常使用,但是他有一个坑,使用不好,是要被开除的。但是,今天你恰好看了我这一篇文章,就避免了这个坑,开心嘛~~~。直接笑,别克制,我知道你嘴角已经上扬了。废话结束,我们直接开始...阅读全文

Segmentfault 2020-09-10 14:32:32 asong

golang微服务框架go-zero系列-4:go-zero文件服务

golang微服务框架go-zero系列-4:go-zero文件服务 go-zero本身支持文件服务,但是我们需要写相关的handler文件,本文目的在于 不写任何一个和文件相关的handler 如果有新的文件,直接把文件模板到某个特定目录就好,不要动任何go代码 需求在这里,开撸吧 在代码开始前,你可能需要阅读 golang微服务框架go-zero系列-1:在go-zero中使用XormV2 golang微服务框架go-zero系列-2:在go-zero中使用jwt-token鉴权实践 gol...阅读全文

简书 2020-09-05 22:16:46 非正式解决方案

golang微服务框架go-zero系列-4:go-zero文件服务

# golang微服务框架go-zero系列-4:go-zero文件服务 go-zero本身支持文件服务,但是我们需要写相关的handler文件,本文目的在于 + 不写任何一个和文件相关的handler + 如果有新的文件,直接把文件模板到某个特定目录就好,不要动任何go代码 需求在这里,开撸吧 # 在代码开始前,你可能需要阅读 [golang微服务框架go-zero系列-1:在go-zero中使用XormV2](https://mp.weixin.qq.com...阅读全文

Go语言中文网 2020-09-05 20:54:40 winlion

Go:学会wire依赖注入、cron定时任务其实就这么简单!

前言嗨,我小asong又回来了。托了两周没有更新,最近比较忙,再加上自己懒,所以嘛,嗯嗯,你们懂的。不过我今天的带来的分享,绝对干货,在实际项目中开发也是需要用到的,所以为了能够讲明白,我特意写了一个样例,仅供参考。本文会围绕样例进行展开学习,已上传github,可自行下载。好了,不说废话了,知道你们迫不及待了,我们直接开始吧!!!wire依赖注入在介绍wire之前,我们先来了解一下什么是依赖注入。使用过Spring的同学对这个应该不会陌生。其中控制反转(IOC)最常见的方式就叫做依赖注入。将依...阅读全文

Segmentfault 2020-09-10 11:32:32 asong

分享一些为PHPer准备的Go入门知识

最近,我开始为我的工作团队开发内部命令行界面应用程序。我选择的主要编程语言是PHP,但是我想用可以在任何平台上运行的语言创建该程序,而不必安装解释器。我还希望该应用程序可以独立包含在一个二进制文件中,以便于分发和安装。我下载了Go,对它的易学性和在短时间内获得的生产力感到惊讶。 Go的程序化编程模型真的很适合我们PHP开发者的思维习惯,我得以快速启动并运行该应用程序。尽管与PHP有一些明显的区别,所以我想与想要学习Go的其他PHP开发人员分享这些区别。MacOS我使用的是 Mac ,所以通过 H...阅读全文

简书 2020-09-05 15:00:51 MO_ON_e503