手撸golang 基本数据结构与算法 堆

手撸golang 基本数据结构与算法 堆缘起最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一)本系列笔记拟采用golang练习之堆堆是一种图的树形结构, 被用于实现“优先队列”(priority queues)。 优先队列是一种数据结构, 可以自由添加数据, 但取出数据时要从最小值开始按顺序取出。 在堆中存储数据时必须遵守这样一条规则:子结点必定大于父结点。 摘自 <<我的第一本算法书>> 【日】石田保辉;宫崎修一补充知识堆又名二叉堆, 是一种无序完全二叉树所谓完全, 是指节点从上至下...阅读全文

Segmentfault 2021-02-21 09:32:33 ioly

从 Go 的二进制文件中获取其依赖的模块信息

大家好,我是张晋涛。我们用 Go 构建的二进制文件中默认包含了很多有用的信息。例如,可以获取构建用的 Go 版本:(这里我使用我一直参与的一个开源项目 KIND 为例)➜ kind git:(master) ✗ go version ./bin/kind ./bin/kind: go1.16或者也可以获取该二进制所依赖的模块信息:➜ kind git:(master) ✗ go version -m ./bin/kind ./bin/kind: go1.16 path sigs.k8s.io/k...阅读全文

Segmentfault 2021-02-21 09:32:33 张晋涛

golang语言学习之什么是golang

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 一、Go 语言特色 1、简洁、快速、安全2、并行、有趣、开源3、内存管理、数组安全、编译迅速 二、Go 语言用途 Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。 三、运行第一个go程序 以hello为例,运行一个简单go程序,如...阅读全文

51CTO博客 2021-02-18 11:47:50 清白之年

5分钟学Go 基础01:初识 Go 的第一印象是薪水可观

最近几年,随着云计算、区块链等技术的发展,有一门语言逐渐成为大家热衷讨论的对象,成为了继 Python 之后的另一块香饽饽,那就是 Go 语言。其实如果要追溯历史的话,Go 语言诞生于 Google,从 2007 年便开始设计,并于 2009 年 11 月 10 日正式发布第一版,此后便开始在 Google 内部使用。正如 Python 借助 AI 的东风大火一样,Go 语言大范围的使用和普及也是借助了云计算、区块链等技术的东风,特别是云计算,以 Google 开源的 Kubernetes 为代...阅读全文

Segmentfault 2021-02-20 07:32:33 伍工

手撸golang 基本数据结构与算法 哈希表

手撸golang 基本数据结构与算法 哈希表缘起最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一)本系列笔记拟采用golang练习之哈希表哈希表存储的是由键(key)和值(value)组成的数据。 在哈希表中,我们可以利用哈希函数快速访问到数组中的目标数据。 如果发生哈希冲突(哈希函数对不同的键, 返回了相同的哈希值), 就使用链表进行存储(因此, 哈希表一般至少是数组+链表的二维结构)。 如果数组的空间太小, 使用哈希表的时候就容易发生冲突, 线性查找的使用频率也会更高; 反过来,如...阅读全文

Segmentfault 2021-02-20 15:32:35 ioly

go 获取 html 标签中的文本_关于HTML中progress标签的定义及用法汇总!

参考链接: HTML meter标签Progress标签可以帮助我们轻松创建一个进度条,对于Web前端开发人员来说是非常有用处的,所以掌握好Progress标签的用法对于前端开发人员很重要。下面,小编就为大家分享在HTML中Progress标签的详细用法。 “Progress”作为英文单词有“进程、前进”的意思,那它作为HTML中的标签又充当什么样的角色呢?我们一起来跟着我来看看HTML中Progress标签的定义及用法! 一、Progress标签定义及用法 在HTML中,Progress标签是...阅读全文

51CTO博客 2021-02-17 17:02:10 wx592a7561e9493

Kubernetes学习笔记之CSI External Provisioner源码解析

Overview最近在部署K8s持久化存储插件时,需要按照CSI官网说明部署一个Deployment pod,由于我们的自研存储类型是文件存储不是块存储,所以部署pod不需要包含容器 external-attacher ,只需要包含 external-provisioner sidecar container和我们自研的csi-plugin容器就行,部署yaml类似如下: apiVersion: apps/v1 kind: Deployment metadata: annotations: de...阅读全文

Segmentfault 2021-02-20 14:32:34 lx1036

Kubernetes学习笔记之CSI Plugin注册机制源码解析

Overview最近在维护组内K8s CSI plugin代码时,一直对其内部原理好奇,故趁机深入学习熟悉K8s CSI相关原理。部署K8s持久化存储插件时,需要按照CSI官网说明,部署一个daemonset pod实现插件注册,该pod内容器包含 node-driver-registrar ,部署yaml类似如下: apiVersion: apps/v1 kind: DaemonSet metadata: annotations: deprecated.daemonset.template.g...阅读全文

Segmentfault 2021-02-20 11:32:31 lx1036

使用 gomobile 为 iOS/Android 构建 SDK

一、安装 # 安装 gomobile $ go get golang.org/x/mobile/cmd/gomobile # 安装 gobind $ go get golang.org/x/mobile/cmd/gobind 注意: 安装过程受 $GOPATH 影响,主要有两点: 1、$GOPATH 不是单一路径,可以指定多个路径,对于要编译的工程,也需要把工程目录加入 $GOPATH 2、编译器在编译时,会根据 $GOPATH 中的目录逐个搜索 3、如果需要,可以把安装的可执行工具目录加入 $...阅读全文

简书 2021-02-17 13:32:35 舌尖上的大胖

手撸golang 基本数据结构与算法 队列

手撸golang 基本数据结构与算法 队列 缘起 最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一) 本系列笔记拟采用golang练习之 队列 队列中的数据也呈线性排列。 队列中添加和删除数据的操作分别是在两端进行的。 就和“队列”这个名字一样, 把它想象成排成一队的人更容易理解。 在队列中, 处理总是从第一名开始往后进行, 而新来的人只能排在队尾。 像队列这种最先进去的数据最先被取来, 即“先进先出”的结构, 我们称为First In First Out,简称FIFO。 摘自 <<我...阅读全文

简书 2021-02-17 09:32:36 老罗话编程

手撸golang 基本数据结构与算法 队列

手撸golang 基本数据结构与算法 队列缘起最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一)本系列笔记拟采用golang练习之队列队列中的数据也呈线性排列。 队列中添加和删除数据的操作分别是在两端进行的。 就和“队列”这个名字一样, 把它想象成排成一队的人更容易理解。 在队列中, 处理总是从第一名开始往后进行, 而新来的人只能排在队尾。 像队列这种最先进去的数据最先被取来, 即“先进先出”的结构, 我们称为First In First Out,简称FIFO。 摘自 <<我的第一本算...阅读全文

Segmentfault 2021-02-20 10:32:33 ioly

golang发送邮件(qq邮箱)

golang发送邮件(qq邮箱)前期准备golang发送邮件的功能,我们今天介绍golang发送qq邮件,相信大家都有qq邮箱吧,操作起来比较便捷,使用golang发送邮件更是简单,相信大家看完都能上手操作并学会。通过编码的方式发送邮件,即实际是调用qq邮箱提供的接口来进行邮件的发送,我们在编写该功能前,需要拿到qq邮箱的POP3/SMTP服务的授权码进入自己的qq邮箱->设置->账户->往下滑开启自己qq邮箱的POP3/SMTP服务,并拿到自己qq邮箱的授权码(支持临时生成),授权码长期有效建...阅读全文

Segmentfault 2021-02-19 22:52:55 小魔童哪吒

2021-02-16:n皇后问题。给定一个整数n,返回n皇后的摆法有多少种?

福哥答案2021-02-16: 自然智慧即可。 1.普通递归。有代码。 需要判断同列和斜线。 2.位运算递归。有代码。 3.我的递归。有代码。 只需要判断斜线。 代码用golang编写,代码如下: package main import ( "fmt" "time" ) func main() { n := 12 fmt.Println(n, "皇后问题") fmt.Println("------") now := time.Now() fmt.Println("1.普通递归:", num1(n...阅读全文

简书 2021-02-17 01:32:38 福大大架构师每日一题

Go使用JWT构建用户认证系统

【译文】原文地址 大家好,我将尝试把使用Go结合JWT构建用户认证系统的整个过程记录下来,作为一个参考希望对你有所帮助。 什么是JWT 对于不是很熟悉JWT的人来说,JWT是JSON Web Token的缩写。JWT是在服务器端对用户身份进行认证的一种方法。 在传统方法中,我们有用于验证用户身份的会话,在成功登录时,我们将使用该用户的详细信息创建一个新会话,并将其存储在服务器存储中。然后将创建的session ID发送回客户机。随后客户端发送后续请求都会携带这个session ID,因此服务端可...阅读全文

简书 2021-02-17 01:32:37 汪明军_3145

Go 语言标准库中 atomic.Value 的前世今生

在 Go 语言标准库中,sync/atomic包将底层硬件提供的原子操作封装成了 Go 的函数。但这些操作只支持几种基本数据类型,因此为了扩大原子操作的适用范围,Go 语言在 1.4 版本的时候向sync/atomic包中添加了一个新的类型Value。此类型的值相当于一个容器,可以被用来“原子地"存储(Store)和加载(Load)任意类型的值。 历史起源 我在golang-dev邮件列表中翻到了14年的这段讨论,有用户报告了encoding/gob包在多核机器上(80-core)上的性能问题,...阅读全文

喵叔没话说 2019-03-15 00:00 喵叔没话说

rune数据类型

//int32的别名,几乎在所有方面等同于int32 //它用来区分字符值和整数值 type rune = int32 byte 等同于int8,常用来处理ascii字符 rune 等同于int32,常用来处理unicode或utf-8字符 package main import "fmt" func main() { var str = "hello 你好" fmt.Println("len(str):", len(str)) } golang中string底层是通过byte数组实现的。中文字...阅读全文

简书 2021-02-16 13:32:35 小幸运Q