Golang 选择排序

package main import "fmt" func SelectSort(arr *[5]int) { //1.先将最大值和arr[j]交换 for j := 0; j < len(arr)-1; j++ { max := arr[j] //假设最大值为 arr[j] maxIndex := j //2.遍历比较 for i := j + 1; i < len(arr); i++ { if max < arr[i] { //找到真正的最大值 max = arr[i] maxIndex ...阅读全文

简书 2020-04-26 13:33:12 Didier811

defer ,panic,recover

defer的执行顺序 多个defer出现的时候,它是一个“栈”的关系,也就是先进后出。一个函数中,写在前面的defer会比写在后面的defer调用的晚。 package main import "fmt" func main() { defer func1() defer func2() defer func3() } func func1() { fmt.Println("A") } func func2() { fmt.Println("B") } func func3() { fmt.Pr...阅读全文

简书 2020-04-26 13:33:11 普朗tong

golang使用MultipartForm分析http request内容

golang使用MultipartForm分析http request内容 在使用curl给http server发请求的时候,可以使用-F参数指定这是一个multipart的请求;这种请求可以同时包含文本的form数据,也可以包含二进制文件数据。 下面这段代码是server端分析http请求解析multipart的例子: func httpHandle(w http.ResponseWriter, r *http.Request) { // http.Request has a member ...阅读全文

简书 2020-04-26 13:33:11 CodingCode

Golang html/template模板渲染解析

创建模板文件 1、创建layouts文件夹 2、在layouts文件夹中创建以下三个模板文件 header.html sidebar.html footer.html 3、创建template_admin.html模板文件 4、使用{{define "template_name"}}定义模板 5、使用{{template "template_name" .}}引入模板文件,注意标签后面的点"."一定要带上,在引入的模板中解析变量 6、变量输出{{.name}} header.html模板文件中添...阅读全文

简书 2020-04-26 13:33:10 是个懒人

学习Go-第一天-安装

下载Go语言开发包 大家可以在Go语言官网(https://golang.google.cn/dl/)下载 Windows 系统下的Go语言开发包,如下图所示。 Go语言安装包下载页面 这里我们下载的是 64 位的开发包,如果读者的电脑是 32 位系统的话,则需要下载 32 位的开发包,在上图所示页面中向下滚动即可找到 32 位开发包的下载地址,如下图所示。 其他版本的Go语言安装包 注意:下载 Windows 版本的Go语言开发包时尽量选择 MSI 格式,因为它可以直接安装到系统,不需要额外的...阅读全文

简书 2020-04-26 13:33:09 小刺挠儿

4. Go 语言数据类型:byte、rune与字符串

Hi,大家好。 我是明哥,在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. byte 与 rune byte,占用1个节字,就 8 个比特位,所以它和 ...阅读全文

Segmentfault 2020-04-28 13:32:34 Python编程时光

踩坑记:go服务内存暴涨

这周换换口味,记录一下去年踩的一个大坑。 起 大概是去年8月份,那会儿我们还在用着64GB的“小内存”机器。 由于升级一次版本需要较长的时间(1~2小时),因此我们每天只发一次车,由值班的同学负责,发布所有已merge的commit。 当天负责值班的我正开着车,突然收到 Bytedance-System 的夺命连环call,打开Lark一看: [ 规则 ]:机器资源报警[ 报警上下文 ]: host: 10.x.x.x内存使用率: 0.944[ 报警方式 ]:电话&Lark 打开ganglia一...阅读全文

Segmentfault 2020-04-28 09:32:35 felix021

进程管理工具 Supervisor

要想在终端后台常驻进程,首先想到的是在命令后加 & 符号,来达到隐藏程序在后台的目的,尽管看起来进程已经在后台运行了,实际上终端会话关闭时进程还是会被 kill 掉,这种问题一般是采用搭配 nohup 命令来解决的,nohup 作用是忽略 SIGHUP 信号,而会话关闭时正好发送了该信号给会话内所有运行程序,简而言之,nohup 命令搭配 & 不仅可以在后台运行,还不受会话关闭的影响。 $ nohup /bin/cat & 那么问题来了,虽然做到了后台运行,也避免了挂断操作带来的影响,但是它避免...阅读全文

Segmentfault 2020-04-28 07:32:35 平也

如何用Github钩子做自动部署

最近机缘巧合的购置了域名和服务器,不用实在是浪费,再加上一直没有属于自己的个人网站,所以打算用hexo在服务器上玩一下,这样也就不用再纠结用Github pages还是Gitee pages了。当然,今天的主题并不是博客搭建,而是如何利用Github的钩子,将博客代码部署到服务器上。 毕竟Github的钩子已经历史悠久了,网上有很多开源项目可以拿来用,所以我并没有造轮子,而是去找了5K star的开源Go项目webhook,这个工具的作用是接收Github仓库的变动通知,然后调用你配置好的she...阅读全文

Segmentfault 2020-04-27 23:32:34 平也

Go 语言 2019 调查报告发布(内含 Go 语言图谱下载)

<关注公众号,回复 Go 即可下载清晰知识图谱> 对 Go 语言感兴趣但又不知从何学起的同学,可以参考一下 Go 语言系列文章: 为什么你要选择 Go? Go 面向失败编程 带着服务器编程金刚经走进 2020 年 敢问路在何方? Go 官方博客近日公布了 2019 年 Go 语言调查报告。本次调查收到的回复达到 10,975 份,约为去年的两倍。这些受访者的反馈意见将被选取用于改进 Go 语言的发展。 以下是 2019 年度的调查报告摘要: 此调查中,受访者的受众特征与 Stack Overfl...阅读全文

Segmentfault 2020-04-27 22:32:35 阿里巴巴云原生

官方博文:2019 年 Go 开发者调查结果

点击上方蓝色“Go语言中文网”关注我们,领全套Go资料,每天学习 Go 语言Todd Kulesza 2020-04-20概览、感谢 首先,我要非常感谢参与本次调查的数千名 Go 开发人员。在 2019 年,我们收到了 10,975 份回复,几乎是去年的两倍![1]我要代表团队的其他成员,充分强调您花时间和精力向我们介绍您在 Go 方面的经验,我们对此深表感谢。谢谢!关于前几年调查说明 敏锐的读者可能会注意到,我们每年的比较与我们过去分享的数字不太吻合。原因是从 2016 年至 2018 年,我...阅读全文

微信公众平台 2020-04-26 10:36:01 Go语言中文网

Go 语言 2019 调查报告发布(内含 Go 语言图谱下载)

<关注公众号,回复 Go 即可下载清晰知识图谱> 对 Go 语言感兴趣但又不知从何学起的同学,可以参考一下 Go 语言系列文章: 为什么你要选择 Go? Go 面向失败编程 带着服务器编程金刚经走进 2020 年 敢问路在何方? Go 官方博客近日公布了 2019 年 Go 语言调查报告。本次调查收到的回复达到 10,975 份,约为去年的两倍。这些受访者的反馈意见将被选取用于改进 Go 语言的发展。 以下是 2019 年度的调查报告摘要: 此调查中,受访者的受众特征与 Stack Overfl...阅读全文

掘金 2020年04月26日 阿里巴巴云原生

让我们一起啃算法----回文数

回文数(Palindrome-Number) 这是一个比较简单的题目,题干如下: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1: 输入: 121 输出: true示例 2: 输入: -121 输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3: 输入: 10 输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。来源:力扣 解题思路 按照题目的定义: 负数一...阅读全文

Segmentfault 2020-04-27 17:32:39 三斤和他的朋友们

Golang Map实现(一)

本文学习 Golang 的 Map 数据结构,以及map buckets 的数据组织结构。 hash 表是什么 从大学的课本里面,我们学到:hash 表其实就是将key 通过hash算法映射到数组的某个位置,然后把对应的val存放起来。如果出现了hash冲突(也就是说,不同的key被映射到了相同的位置上时),就需要解决hash冲突。解决hash冲突的方法还是比较多的,比如说开放定址法,再哈希法,链地址法,公共溢出区等(复习下大学的基本知识)。 其中链地址法比较常见,下面是一个链地址法的常见模式:...阅读全文

Segmentfault 2020-04-27 14:32:34 搬砖程序员带你飞

Go gRPC进阶-proto数据验证(九)

前言 上篇介绍了go-grpc-middleware的grpc_zap、grpc_auth和grpc_recovery使用,本篇将介绍grpc_validator,它可以对gRPC数据的输入和输出进行验证。 创建proto文件,添加验证规则 这里使用第三方插件go-proto-validators自动生成验证规则。 go get github.com/mwitkow/go-proto-validators 1.新建simple.proto文件 syntax = "proto3"; package...阅读全文

博客园 2020-04-23 15:23 FireworksEasyCo 等

Go gRPC进阶-go-grpc-middleware使用(八)

前言 上篇介绍了gRPC中TLS认证和自定义方法认证,最后还简单介绍了gRPC拦截器的使用。gRPC自身只能设置一个拦截器,所有逻辑都写一起会比较乱。本篇简单介绍go-grpc-middleware的使用,包括grpc_zap、grpc_auth和grpc_recovery。 go-grpc-middleware简介 go-grpc-middleware封装了认证(auth), 日志( logging), 消息(message), 验证(validation), 重试(retries) 和监控(...阅读全文

博客园 2020-04-22 10:29 FireworksEasyCo 等

Go gRPC进阶-TLS认证+自定义方法认证(七)

前言 前面篇章的gRPC都是明文传输的,容易被篡改数据。本章将介绍如何为gRPC添加安全机制,包括TLS证书认证和Token认证。 TLS证书认证 什么是TLS TLS(Transport Layer Security,安全传输层),TLS是建立在传输层TCP协议之上的协议,服务于应用层,它的前身是SSL(Secure Socket Layer,安全套接字层),它实现了将应用层的报文进行加密后再交由TCP进行传输的功能。 TLS的作用 TLS协议主要解决如下三个网络安全问题。 保密(messag...阅读全文

博客园 2020-04-16 08:52 FireworksEasyCo 等

Go gRPC进阶-超时设置(六)

前言 gRPC默认的请求的超时时间是很长的,当你没有设置请求超时时间时,所有在运行的请求都占用大量资源且可能运行很长的时间,导致服务资源损耗过高,使得后来的请求响应过慢,甚至会引起整个进程崩溃。 为了避免这种情况,我们的服务应该设置超时时间。前面的入门教程提到,当客户端发起请求时候,需要传入上下文context.Context,用于结束超时或取消的请求。 本篇以简单RPC为例,介绍如何设置gRPC请求的超时时间。 客户端请求设置超时时间 修改调用服务端方法 1.把超时时间设置为当前时间+3秒 c...阅读全文

博客园 2020-04-15 08:45 FireworksEasyCo 等

Go gRPC教程-双向流式RPC(五)

前言 上一篇介绍了客户端流式RPC,客户端发送请求到服务器,拿到一个流去读取返回的消息序列。 客户端读取返回的流的数据。本篇将介绍双向流式RPC。 双向流式RPC:客户端和服务端双方使用读写流去发送一个消息序列,两个流独立操作,双方可以同时发送和同时接收。 情景模拟:双方对话(可以一问一答、一问多答、多问一答,形式灵活)。 新建proto文件 新建both_stream.proto文件 1.定义发送信息 // 定义流式请求信息 message StreamRequest{ //流请求参数 str...阅读全文

博客园 2020-04-14 15:13 FireworksEasyCo 等