学习笔记——代码中错误处理的最佳实践

最近在极客时间上学习左耳朵耗子大佬的左耳听风栏目,收益颇多,决定对从课程中学习到的东西进行总结记录以加深印象。今天学习的课程主要是对代码中错误处理的方式从各个语言的实现角度做了介绍并提出了一些自己对于错误处理的最佳实践,这里对????大佬提出的一些最佳实践进行自己的理解和总结(说到错误处理就想到自从我入职之后从Java转到Golang开发,确实明显感觉到了两种语言对于异常错误处理的不一致,还经常还无法习惯golang中的error处理形式)1.统一分类的错误字典这个在进行http接口开发的时候体...阅读全文

简书 2020-07-02 00:33:32 谁没有做过白日梦呢

Golang学习—if语句支持复合语法

Golang的if语句支持一种复合语法: if 语句一;条件表达式{ xxxxxx } 语句一所定义的变量,在条件表达式中进行test,条件表达式的结果即为if的判定标准。语句最多只能一条,并且语句一中新定义的变量作用域仅在if内。例如: if num := 9; num < 0 { fmt.Println(num, "is negative") } else if num < 10 { fmt.Println(num, "has 1 digit") //num作用域在if语句内 } else ...阅读全文

简书 2020-07-02 00:33:32 coutinho

Dockerfile命令详解及最佳实践

1. Dockerfile 命令详解: FROM 指定基础镜像(必选) 所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指定的。而FROM就是指定基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令。 在Docker hub上有非常多的高质量的官方镜像,有可以直接拿来使用的服务类的镜像,如 nginx、redis、mongo、mysql、httpd、php、tomcat 等...阅读全文

简书 2020-07-02 00:33:31 左舷的风

Kubernetes入门实践--部署运行Go项目

介绍 前面的几篇文章从概念层面介绍了Kubernetes是什么,它的内部架构是怎样的。并且也在电脑上安装了Minikube--拥有一个单节点的Kubernetes集群,让我们能够在自己的电脑上开始体验Kubernetes。今天的文章我准备和大家一起一步步地尝试做一个Go应用程序的Docker镜像,把它部署到Minikuebe上运行。今天的文章不需要什么基础,Kubernetes的新手朋友们先一起上车学起来。 应用程序代码 我们用Go写一个简单的HTTP Server,Server侦听3000端口...阅读全文

Go 语言操作 MySQL 之 CURD 操作

友情提示:此篇文章大约需要阅读 10分钟 50秒,不足之处请多指教,感谢你的阅读。 订阅本站 MySQL 是目前开发中最常见的关系型数据库,使用 Go 语言进行操控数据库需要使用 Go 自带database/sql和驱动go-sql-driver/mysql来实现, 创建好 Go 项目,需要引用驱动依赖: go get -u github.com/go-sql-driver/mysql 使用 MySQL 驱动: func Open(driverName, dataSourceName strin...阅读全文

Segmentfault 2020-07-04 17:32:36 Meng小羽

GO面试--【长期更新】

Golang基础- 1.select是随机的还是顺序的? 答:select会随机选择一个可用通道做收发操作 2.Go语言局部变量分配在栈还是堆? 答:Go语言**编译器**会自动决定把一个变量放在栈还是放在堆,编译器会做逃逸分析,当发现变量的作用域没有跑出函数范围,就可以在栈上,反之则必须分配在堆。 3、struct可以比较吗? 答:可以比较也有不可以比较的(map func slice) 4.简述一下golang的协程调度原理? 答:M(machine): 代表着真正的执行计算资源,可以认为它...阅读全文

Segmentfault 2020-07-04 15:32:39 特伦姝

如何共建Simplechain技术社区

Hello! 欢迎来到SimpleChain技术社区,感谢你们一直以来对SimpleChain的支持!随着参与到SimpleChain的开发者越来越多,我们技术社区给开发者提供了两个方向参与到SimpleChain的建设。一个方向是SimpleChain开源共建,另一个是加入到我们的社区技术官。技术社区活动以及激励计划会每季度更新,请持续关注。 SimpleChain开源共建 欢迎参与 SimpleChain 开源社区共建,您可以通过以下的方式参与共建: 参与代码或文档贡献 ...阅读全文

Go语言中文网 2020-07-01 14:34:08 SimpleChain

内网穿透工具frp的源码解读之概念流程篇

最近学习go语言,看完基础和高级篇后,果断拿起一个开源项目看看,于是就找到内网穿透工具——frp,它具体干嘛的,我就不多说,可以自己上官网看看,动手试试。 概念 连接,本文用的连接,可以成为socket连接,connection,tcp连接, udp连接等工作连接和通信连接要分开的理解工作连接是实际用户操作的连接,如ssh通信的流量就走这连接。通信连接是客户端与服务端的协议通信建立内网穿透的逻辑,里面逻辑就包含工作连接的创建用户连接是用户发起与服务端的连接实际业务的连接就是目标程序的连接,如ss...阅读全文

Segmentfault 2020-07-04 10:32:33 黄小数

go设置代理

1、查看go 的环境变量 在cmd中 输入 go env 设置GOPROXY代理: go env -w GOPROXY=https://goproxy.cn,direct 设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔: go env -w GOPRIVATE=*.gitlab.com,*.gitee.com 如果在运行go mod vendor时,提示Get https://sum.golang.org/lookup/xxxxxx: dial tcp ...阅读全文

简书 2020-07-01 13:32:50 Mr菜头

mac下 go 项目使用用module 配置国内代理镜像

一直使用go开发一些简单的东西,但是包管理太麻烦了,虽然有自建的科学上网,但遇到golang.org模块,还是烦上加烦。1.本地环境 Macbook pro 系统:macOS Mojave IDE: vs code 终端: iTerm2 + zshGo: homebrew安装 go版本1.14.3 其他数据库一类的支持软件使用Docker镜像2.开启模块,配置国内代理因为本机使用zsh, 所以在用户目录下,修改.zshrc,在末尾加两行。export GO111MODULE=onexport G...阅读全文

使用gorm不当出现too Many Connections的问题

业务中使用 golang+gin+gorm 开发,最近新上线了一个版本,发现在日活用户数只有几百的时候数据库频繁出现too many connections 的错误,执行show processlist;查看数据库进程都在干嘛,发现了大量连接处于 sleep 的状态。 show variables like '%max_connections%';查看数据库最大连接数为 2000 多,不是数据库设置的问题 使用 gorm设置空闲连接数,并发数和连接超时 mysql.DB.DB().SetMaxI...阅读全文

简书 2020-07-01 13:32:49 顶尖少爷

从零学习 Go 语言(22):Go 语言中如何开源自己写的包给别人用?

![](http://image.iswbm.com/20200607145423.png) 在线博客:http://golang.iswbm.com/ Github:https://github.com/iswbm/GolangCodingTime --- 通常之前的学习,我们知道了在 Go 的项目中,可以 import 一个托管在远程仓库的模块,这个模块在我们使用 go get 的时候,会下载到本地。 既然是放在远程仓库上,意味着所有人都可以发布,并且所以人...阅读全文

Go语言中文网 2020-07-01 08:36:35 hello_wbm

golang

用变量 GO111MODULE 开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是 auto。 GO111MODULE=off 无模块支持,go 会从 GOPATH 和 vendor 文件夹寻找包。 GO111MODULE=on 模块支持,go 会忽略 GOPATH 和 vendor 文件夹,只根据 go.mod 下载依赖。 GO111MODULE=auto 在 GOPATH/src/mod 中,也会把 go install 的结果放在 $GOPATH/bin 中。 golan...阅读全文

简书 2020-06-30 23:32:57 我真是刚的不像话

no copy

no copy 机制 转载 Go 语言源码阅读有感:no copy 机制 Golang技术分享 专注于Go语言的知识分享 小菜刀读Go源码时,发现一个高频注释语句“XXX must not be copied after first use“。例如sync包下的Pool、Cond、WaitGroup、Mutex、Map和atomoic.Vaule、strings.Builder等,都有该句注释。 为什么注释文档中要强调no copy? 安全! 如果结构体对象包含指针字段,当该对象被拷贝时,会使得...阅读全文

简书 2020-06-30 23:32:56 雪上霜

0.快乐导言

image.png 我们的专业 软件工程 类比土木工程施工:工程施工就是软件开发 工程计划指标书: 需求说明文档,开发文档 工程图纸 : 流程图、E-R图、UML类图 工程队类比公司 总项目经理 ——CTO(首席技术执行官) 项目经理 ——项目经理 建筑设计—— 产品经理 施工员—— 前端组长/后端组长 农民工—— 初级码农 互联网公司有哪些技术部门 产品组 产品经理 (本职技能,包括原型图、流程图、文档、交互设计,文档包括MRD、BRD、PRD等。设计类,UI设计所用的工具包括PS、AI、sk...阅读全文

简书 2020-06-30 23:32:54 Kari开源

Go 并发模型

今天我们来了解一下 Go 语言的协程并发机制,这也可能是 Go 语言最为吸引人的特性了,了解它的原理和底层机制对于掌握 Go 语言大有裨益,话不多说开始吧! 并发和并行 并发和并行都是为了充分利用 CPU 多核计算资源所提出来的概念,相信我们或多或少都对二者的概念有所了解: 并发指的是在同一时间段内,多条指令在 CPU 上同时执行; 并行指的是在同一时刻内,多条指令在 CPU 上同时执行。 并发程序并不要求 CPU 具备多核计算的能力。在同一时间段内,多个线程会被分配一定的执行时间片,在 CPU...阅读全文

简书 2020-06-30 23:32:54 雪上霜

在golang项目中进行单元测试

在浏览了很多大佬的文章以及接受过数次线上事故的洗礼之后,我深刻意识到了将代码放到线上跑之前进行详尽地测试的重要性,之前一直对单元测试没有上心,主要精力都放在了设计和开发上,后来leader跟我说在进行开发工作的时候大部分情况只有百分之40的时间用来开发,而测试调试可能会用百分之六十的时间和精力,然后阅读了一些资料后,学习了一下在做golang开发的时候怎么对自己的代码进行单元测试。在平时写一些demo的时候测试很简单,只需要写一个main方法调用下写的函数就可以验证功能了。在golang的项目开...阅读全文

简书 2020-06-30 23:32:51 谁没有做过白日梦呢

Golang 限流器的使用和实现

限流器是服务中非常重要的一个组件,在网关设计、微服务、以及普通的后台应用中都比较常见。它可以限制访问服务的频次和速率,防止服务过载,被刷爆。 限流器的算法比较多,常见的比如令牌桶算法、漏斗算法、信号量等。本文主要介绍基于漏斗算法的一个限流器的实现。文本也提供了其他几种开源的实现方法。 基于令牌桶的限流器实现 在golang 的官方扩展包 time 中(github/go/time),提供了一个基于令牌桶算法的限流器的实现。 原理 令牌桶限流器,有两个概念: 令牌:每次都需要拿到令牌后,才可以访问...阅读全文

简书 2020-06-30 23:32:49 雪上霜

『故障注入』Http Web Server

背景 最近要测试 Apache Http Client 的 超时特性 但是我的接口请求要发往哪里呢?哪个接口可以阻塞一下? 找个 Java 工程的Controller 反复的修改 sleep 的参数? 这么做,目的是可以达到,就是感觉好麻烦啊 想着golang + gin 实现起来应该不难,还快,所以写了一个通用的项目,已经上传到 github 和 docker hub了 地址: github docker hub 使用 这里介绍一下使用 获取文件 win10 直接到 github 的 rele...阅读全文

简书 2020-06-30 23:32:48 Yellowtail